diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
index b45e4b6..83cd314 100644
--- a/.github/workflows/release.yml
+++ b/.github/workflows/release.yml
@@ -42,7 +42,6 @@ jobs:
name: windows-builds
path: |
dist/*.exe
- dist/*.zip
retention-days: 30
build-macos:
@@ -75,7 +74,6 @@ jobs:
name: macos-builds
path: |
dist/*.dmg
- dist/*.zip
retention-days: 30
build-linux:
@@ -108,7 +106,6 @@ jobs:
name: linux-builds
path: |
dist/*.AppImage
- dist/*.deb
retention-days: 30
release:
@@ -145,11 +142,31 @@ jobs:
draft: false
prerelease: ${{ contains(github.ref_name, 'beta') || contains(github.ref_name, 'alpha') }}
generate_release_notes: true
+ body: |
+ ## 📦 下载指南
+
+ | 操作系统 | 架构 | 文件 | 说明 |
+ |---------|------|------|------|
+ | 🪟 Windows | x64 | `ToonFlow-*-win-x64-setup.exe` | **推荐**,适用于大多数 Windows 电脑 |
+ | 🪟 Windows | ARM64 | `ToonFlow-*-win-arm64-setup.exe` | 适用于 ARM 架构 Windows 设备 |
+ | 🍎 macOS | Apple Silicon | `ToonFlow-*-mac-arm64.dmg` | 适用于 M1/M2/M3/M4 芯片的 Mac |
+ | 🍎 macOS | Intel | `ToonFlow-*-mac-x64.dmg` | 适用于 Intel 芯片的 Mac |
+ | 🐧 Linux | x64 | `ToonFlow-*-linux-x64.AppImage` | 适用于大多数 Linux 发行版 |
+ | 🐧 Linux | ARM64 | `ToonFlow-*-linux-arm64.AppImage` | 适用于 ARM 架构 Linux 设备 |
+
+ > 💡 **不确定选哪个?** Windows 用户通常选 **x64-setup.exe**;Mac 用户查看「关于本机」:M 系列芯片选 **arm64.dmg**,Intel 选 **x64.dmg**。
+
+ ## 🚀 安装说明
+
+ - **Windows**:下载 `.exe` 文件,双击运行安装向导即可。如果运行时出现 DLL 缺失或闪退,请先安装 [Microsoft Visual C++ Redistributable (x64)](https://aka.ms/vs/17/release/vc_redist.x64.exe)。
+ - **macOS**:下载 `.dmg` 文件,打开后将 ToonFlow 拖入「应用程序」文件夹。首次打开如遇安全提示,请前往「系统设置 → 隐私与安全性」中允许运行。
+ - **Linux**:下载 `.AppImage` 文件,执行 `chmod +x ToonFlow-*.AppImage` 后双击运行。
+
+ ---
+
files: |
dist/*.exe
- dist/*.zip
dist/*.dmg
dist/*.AppImage
- dist/*.deb
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
diff --git a/.gitignore b/.gitignore
index 538210a..614a7d8 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,7 +1,7 @@
.devtools
# dependencies (bun install)
node_modules
-
+.vscode
# output
out
dist
@@ -36,6 +36,8 @@ report.[0-9]_.[0-9]_.[0-9]_.[0-9]_.json
build/*
+data/serve/
+
upload/*
uploads/*
@@ -45,4 +47,12 @@ db.sqlite-wal
web/*
-.devtools
\ No newline at end of file
+*.sqlite
+
+router.ts
+
+database.d.ts
+
+.devtools
+data/oss/*
+data/test.sqlite
diff --git a/Dockerfile b/Dockerfile
new file mode 100644
index 0000000..5ae2fc9
--- /dev/null
+++ b/Dockerfile
@@ -0,0 +1,22 @@
+FROM node:24-bookworm-slim
+
+WORKDIR /app
+
+RUN npm config set registry https://registry.npmmirror.com/ && \
+ yarn config set registry https://registry.npmmirror.com/
+
+# Copy the repository contents into the image and install all dependencies
+COPY . .
+
+# The container only runs the backend dev server, so strip Electron-only
+# packages before installing to avoid downloading desktop binaries.
+RUN node -e "const fs=require('fs');const pkg=JSON.parse(fs.readFileSync('package.json','utf8'));for(const section of ['dependencies','devDependencies']){if(!pkg[section]) continue;for(const name of ['custom-electron-titlebar','electron','electron-builder','electron-rebuild','electronmon']) delete pkg[section][name];}fs.writeFileSync('package.json', JSON.stringify(pkg, null, 2)+'\n');" && \
+ yarn install --frozen-lockfile && \
+ yarn cache clean
+
+ENV NODE_ENV=dev
+ENV PORT=10588
+
+EXPOSE 10588
+
+CMD ["yarn", "dev"]
\ No newline at end of file
diff --git a/LICENSE b/LICENSE
index be3f7b2..ab2dc60 100644
--- a/LICENSE
+++ b/LICENSE
@@ -1,661 +1,259 @@
- GNU AFFERO GENERAL PUBLIC LICENSE
- Version 3, 19 November 2007
-
- Copyright (C) 2007 Free Software Foundation, Inc.
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
- Preamble
-
- The GNU Affero General Public License is a free, copyleft license for
-software and other kinds of works, specifically designed to ensure
-cooperation with the community in the case of network server software.
-
- The licenses for most software and other practical works are designed
-to take away your freedom to share and change the works. By contrast,
-our General Public Licenses are intended to guarantee your freedom to
-share and change all versions of a program--to make sure it remains free
-software for all its users.
-
- When we speak of free software, we are referring to freedom, not
-price. Our General Public Licenses are designed to make sure that you
-have the freedom to distribute copies of free software (and charge for
-them if you wish), that you receive source code or can get it if you
-want it, that you can change the software or use pieces of it in new
-free programs, and that you know you can do these things.
-
- Developers that use our General Public Licenses protect your rights
-with two steps: (1) assert copyright on the software, and (2) offer
-you this License which gives you legal permission to copy, distribute
-and/or modify the software.
-
- A secondary benefit of defending all users' freedom is that
-improvements made in alternate versions of the program, if they
-receive widespread use, become available for other developers to
-incorporate. Many developers of free software are heartened and
-encouraged by the resulting cooperation. However, in the case of
-software used on network servers, this result may fail to come about.
-The GNU General Public License permits making a modified version and
-letting the public access it on a server without ever releasing its
-source code to the public.
-
- The GNU Affero General Public License is designed specifically to
-ensure that, in such cases, the modified source code becomes available
-to the community. It requires the operator of a network server to
-provide the source code of the modified version running there to the
-users of that server. Therefore, public use of a modified version, on
-a publicly accessible server, gives the public access to the source
-code of the modified version.
-
- An older license, called the Affero General Public License and
-published by Affero, was designed to accomplish similar goals. This is
-a different license, not a version of the Affero GPL, but Affero has
-released a new version of the Affero GPL which permits relicensing under
-this license.
-
- The precise terms and conditions for copying, distribution and
-modification follow.
-
- TERMS AND CONDITIONS
-
- 0. Definitions.
-
- "This License" refers to version 3 of the GNU Affero General Public License.
-
- "Copyright" also means copyright-like laws that apply to other kinds of
-works, such as semiconductor masks.
-
- "The Program" refers to any copyrightable work licensed under this
-License. Each licensee is addressed as "you". "Licensees" and
-"recipients" may be individuals or organizations.
-
- To "modify" a work means to copy from or adapt all or part of the work
-in a fashion requiring copyright permission, other than the making of an
-exact copy. The resulting work is called a "modified version" of the
-earlier work or a work "based on" the earlier work.
-
- A "covered work" means either the unmodified Program or a work based
-on the Program.
-
- To "propagate" a work means to do anything with it that, without
-permission, would make you directly or secondarily liable for
-infringement under applicable copyright law, except executing it on a
-computer or modifying a private copy. Propagation includes copying,
-distribution (with or without modification), making available to the
-public, and in some countries other activities as well.
-
- To "convey" a work means any kind of propagation that enables other
-parties to make or receive copies. Mere interaction with a user through
-a computer network, with no transfer of a copy, is not conveying.
-
- An interactive user interface displays "Appropriate Legal Notices"
-to the extent that it includes a convenient and prominently visible
-feature that (1) displays an appropriate copyright notice, and (2)
-tells the user that there is no warranty for the work (except to the
-extent that warranties are provided), that licensees may convey the
-work under this License, and how to view a copy of this License. If
-the interface presents a list of user commands or options, such as a
-menu, a prominent item in the list meets this criterion.
-
- 1. Source Code.
-
- The "source code" for a work means the preferred form of the work
-for making modifications to it. "Object code" means any non-source
-form of a work.
-
- A "Standard Interface" means an interface that either is an official
-standard defined by a recognized standards body, or, in the case of
-interfaces specified for a particular programming language, one that
-is widely used among developers working in that language.
-
- The "System Libraries" of an executable work include anything, other
-than the work as a whole, that (a) is included in the normal form of
-packaging a Major Component, but which is not part of that Major
-Component, and (b) serves only to enable use of the work with that
-Major Component, or to implement a Standard Interface for which an
-implementation is available to the public in source code form. A
-"Major Component", in this context, means a major essential component
-(kernel, window system, and so on) of the specific operating system
-(if any) on which the executable work runs, or a compiler used to
-produce the work, or an object code interpreter used to run it.
-
- The "Corresponding Source" for a work in object code form means all
-the source code needed to generate, install, and (for an executable
-work) run the object code and to modify the work, including scripts to
-control those activities. However, it does not include the work's
-System Libraries, or general-purpose tools or generally available free
-programs which are used unmodified in performing those activities but
-which are not part of the work. For example, Corresponding Source
-includes interface definition files associated with source files for
-the work, and the source code for shared libraries and dynamically
-linked subprograms that the work is specifically designed to require,
-such as by intimate data communication or control flow between those
-subprograms and other parts of the work.
-
- The Corresponding Source need not include anything that users
-can regenerate automatically from other parts of the Corresponding
-Source.
-
- The Corresponding Source for a work in source code form is that
-same work.
-
- 2. Basic Permissions.
-
- All rights granted under this License are granted for the term of
-copyright on the Program, and are irrevocable provided the stated
-conditions are met. This License explicitly affirms your unlimited
-permission to run the unmodified Program. The output from running a
-covered work is covered by this License only if the output, given its
-content, constitutes a covered work. This License acknowledges your
-rights of fair use or other equivalent, as provided by copyright law.
-
- You may make, run and propagate covered works that you do not
-convey, without conditions so long as your license otherwise remains
-in force. You may convey covered works to others for the sole purpose
-of having them make modifications exclusively for you, or provide you
-with facilities for running those works, provided that you comply with
-the terms of this License in conveying all material for which you do
-not control copyright. Those thus making or running the covered works
-for you must do so exclusively on your behalf, under your direction
-and control, on terms that prohibit them from making any copies of
-your copyrighted material outside their relationship with you.
-
- Conveying under any other circumstances is permitted solely under
-the conditions stated below. Sublicensing is not allowed; section 10
-makes it unnecessary.
-
- 3. Protecting Users' Legal Rights From Anti-Circumvention Law.
-
- No covered work shall be deemed part of an effective technological
-measure under any applicable law fulfilling obligations under article
-11 of the WIPO copyright treaty adopted on 20 December 1996, or
-similar laws prohibiting or restricting circumvention of such
-measures.
-
- When you convey a covered work, you waive any legal power to forbid
-circumvention of technological measures to the extent such circumvention
-is effected by exercising rights under this License with respect to
-the covered work, and you disclaim any intention to limit operation or
-modification of the work as a means of enforcing, against the work's
-users, your or third parties' legal rights to forbid circumvention of
-technological measures.
-
- 4. Conveying Verbatim Copies.
-
- You may convey verbatim copies of the Program's source code as you
-receive it, in any medium, provided that you conspicuously and
-appropriately publish on each copy an appropriate copyright notice;
-keep intact all notices stating that this License and any
-non-permissive terms added in accord with section 7 apply to the code;
-keep intact all notices of the absence of any warranty; and give all
-recipients a copy of this License along with the Program.
-
- You may charge any price or no price for each copy that you convey,
-and you may offer support or warranty protection for a fee.
-
- 5. Conveying Modified Source Versions.
-
- You may convey a work based on the Program, or the modifications to
-produce it from the Program, in the form of source code under the
-terms of section 4, provided that you also meet all of these conditions:
-
- a) The work must carry prominent notices stating that you modified
- it, and giving a relevant date.
-
- b) The work must carry prominent notices stating that it is
- released under this License and any conditions added under section
- 7. This requirement modifies the requirement in section 4 to
- "keep intact all notices".
-
- c) You must license the entire work, as a whole, under this
- License to anyone who comes into possession of a copy. This
- License will therefore apply, along with any applicable section 7
- additional terms, to the whole of the work, and all its parts,
- regardless of how they are packaged. This License gives no
- permission to license the work in any other way, but it does not
- invalidate such permission if you have separately received it.
-
- d) If the work has interactive user interfaces, each must display
- Appropriate Legal Notices; however, if the Program has interactive
- interfaces that do not display Appropriate Legal Notices, your
- work need not make them do so.
-
- A compilation of a covered work with other separate and independent
-works, which are not by their nature extensions of the covered work,
-and which are not combined with it such as to form a larger program,
-in or on a volume of a storage or distribution medium, is called an
-"aggregate" if the compilation and its resulting copyright are not
-used to limit the access or legal rights of the compilation's users
-beyond what the individual works permit. Inclusion of a covered work
-in an aggregate does not cause this License to apply to the other
-parts of the aggregate.
-
- 6. Conveying Non-Source Forms.
-
- You may convey a covered work in object code form under the terms
-of sections 4 and 5, provided that you also convey the
-machine-readable Corresponding Source under the terms of this License,
-in one of these ways:
-
- a) Convey the object code in, or embodied in, a physical product
- (including a physical distribution medium), accompanied by the
- Corresponding Source fixed on a durable physical medium
- customarily used for software interchange.
-
- b) Convey the object code in, or embodied in, a physical product
- (including a physical distribution medium), accompanied by a
- written offer, valid for at least three years and valid for as
- long as you offer spare parts or customer support for that product
- model, to give anyone who possesses the object code either (1) a
- copy of the Corresponding Source for all the software in the
- product that is covered by this License, on a durable physical
- medium customarily used for software interchange, for a price no
- more than your reasonable cost of physically performing this
- conveying of source, or (2) access to copy the
- Corresponding Source from a network server at no charge.
-
- c) Convey individual copies of the object code with a copy of the
- written offer to provide the Corresponding Source. This
- alternative is allowed only occasionally and noncommercially, and
- only if you received the object code with such an offer, in accord
- with subsection 6b.
-
- d) Convey the object code by offering access from a designated
- place (gratis or for a charge), and offer equivalent access to the
- Corresponding Source in the same way through the same place at no
- further charge. You need not require recipients to copy the
- Corresponding Source along with the object code. If the place to
- copy the object code is a network server, the Corresponding Source
- may be on a different server (operated by you or a third party)
- that supports equivalent copying facilities, provided you maintain
- clear directions next to the object code saying where to find the
- Corresponding Source. Regardless of what server hosts the
- Corresponding Source, you remain obligated to ensure that it is
- available for as long as needed to satisfy these requirements.
-
- e) Convey the object code using peer-to-peer transmission, provided
- you inform other peers where the object code and Corresponding
- Source of the work are being offered to the general public at no
- charge under subsection 6d.
-
- A separable portion of the object code, whose source code is excluded
-from the Corresponding Source as a System Library, need not be
-included in conveying the object code work.
-
- A "User Product" is either (1) a "consumer product", which means any
-tangible personal property which is normally used for personal, family,
-or household purposes, or (2) anything designed or sold for incorporation
-into a dwelling. In determining whether a product is a consumer product,
-doubtful cases shall be resolved in favor of coverage. For a particular
-product received by a particular user, "normally used" refers to a
-typical or common use of that class of product, regardless of the status
-of the particular user or of the way in which the particular user
-actually uses, or expects or is expected to use, the product. A product
-is a consumer product regardless of whether the product has substantial
-commercial, industrial or non-consumer uses, unless such uses represent
-the only significant mode of use of the product.
-
- "Installation Information" for a User Product means any methods,
-procedures, authorization keys, or other information required to install
-and execute modified versions of a covered work in that User Product from
-a modified version of its Corresponding Source. The information must
-suffice to ensure that the continued functioning of the modified object
-code is in no case prevented or interfered with solely because
-modification has been made.
-
- If you convey an object code work under this section in, or with, or
-specifically for use in, a User Product, and the conveying occurs as
-part of a transaction in which the right of possession and use of the
-User Product is transferred to the recipient in perpetuity or for a
-fixed term (regardless of how the transaction is characterized), the
-Corresponding Source conveyed under this section must be accompanied
-by the Installation Information. But this requirement does not apply
-if neither you nor any third party retains the ability to install
-modified object code on the User Product (for example, the work has
-been installed in ROM).
-
- The requirement to provide Installation Information does not include a
-requirement to continue to provide support service, warranty, or updates
-for a work that has been modified or installed by the recipient, or for
-the User Product in which it has been modified or installed. Access to a
-network may be denied when the modification itself materially and
-adversely affects the operation of the network or violates the rules and
-protocols for communication across the network.
-
- Corresponding Source conveyed, and Installation Information provided,
-in accord with this section must be in a format that is publicly
-documented (and with an implementation available to the public in
-source code form), and must require no special password or key for
-unpacking, reading or copying.
-
- 7. Additional Terms.
-
- "Additional permissions" are terms that supplement the terms of this
-License by making exceptions from one or more of its conditions.
-Additional permissions that are applicable to the entire Program shall
-be treated as though they were included in this License, to the extent
-that they are valid under applicable law. If additional permissions
-apply only to part of the Program, that part may be used separately
-under those permissions, but the entire Program remains governed by
-this License without regard to the additional permissions.
-
- When you convey a copy of a covered work, you may at your option
-remove any additional permissions from that copy, or from any part of
-it. (Additional permissions may be written to require their own
-removal in certain cases when you modify the work.) You may place
-additional permissions on material, added by you to a covered work,
-for which you have or can give appropriate copyright permission.
-
- Notwithstanding any other provision of this License, for material you
-add to a covered work, you may (if authorized by the copyright holders of
-that material) supplement the terms of this License with terms:
-
- a) Disclaiming warranty or limiting liability differently from the
- terms of sections 15 and 16 of this License; or
-
- b) Requiring preservation of specified reasonable legal notices or
- author attributions in that material or in the Appropriate Legal
- Notices displayed by works containing it; or
-
- c) Prohibiting misrepresentation of the origin of that material, or
- requiring that modified versions of such material be marked in
- reasonable ways as different from the original version; or
-
- d) Limiting the use for publicity purposes of names of licensors or
- authors of the material; or
-
- e) Declining to grant rights under trademark law for use of some
- trade names, trademarks, or service marks; or
-
- f) Requiring indemnification of licensors and authors of that
- material by anyone who conveys the material (or modified versions of
- it) with contractual assumptions of liability to the recipient, for
- any liability that these contractual assumptions directly impose on
- those licensors and authors.
-
- All other non-permissive additional terms are considered "further
-restrictions" within the meaning of section 10. If the Program as you
-received it, or any part of it, contains a notice stating that it is
-governed by this License along with a term that is a further
-restriction, you may remove that term. If a license document contains
-a further restriction but permits relicensing or conveying under this
-License, you may add to a covered work material governed by the terms
-of that license document, provided that the further restriction does
-not survive such relicensing or conveying.
-
- If you add terms to a covered work in accord with this section, you
-must place, in the relevant source files, a statement of the
-additional terms that apply to those files, or a notice indicating
-where to find the applicable terms.
-
- Additional terms, permissive or non-permissive, may be stated in the
-form of a separately written license, or stated as exceptions;
-the above requirements apply either way.
-
- 8. Termination.
-
- You may not propagate or modify a covered work except as expressly
-provided under this License. Any attempt otherwise to propagate or
-modify it is void, and will automatically terminate your rights under
-this License (including any patent licenses granted under the third
-paragraph of section 11).
-
- However, if you cease all violation of this License, then your
-license from a particular copyright holder is reinstated (a)
-provisionally, unless and until the copyright holder explicitly and
-finally terminates your license, and (b) permanently, if the copyright
-holder fails to notify you of the violation by some reasonable means
-prior to 60 days after the cessation.
-
- Moreover, your license from a particular copyright holder is
-reinstated permanently if the copyright holder notifies you of the
-violation by some reasonable means, this is the first time you have
-received notice of violation of this License (for any work) from that
-copyright holder, and you cure the violation prior to 30 days after
-your receipt of the notice.
-
- Termination of your rights under this section does not terminate the
-licenses of parties who have received copies or rights from you under
-this License. If your rights have been terminated and not permanently
-reinstated, you do not qualify to receive new licenses for the same
-material under section 10.
-
- 9. Acceptance Not Required for Having Copies.
-
- You are not required to accept this License in order to receive or
-run a copy of the Program. Ancillary propagation of a covered work
-occurring solely as a consequence of using peer-to-peer transmission
-to receive a copy likewise does not require acceptance. However,
-nothing other than this License grants you permission to propagate or
-modify any covered work. These actions infringe copyright if you do
-not accept this License. Therefore, by modifying or propagating a
-covered work, you indicate your acceptance of this License to do so.
-
- 10. Automatic Licensing of Downstream Recipients.
-
- Each time you convey a covered work, the recipient automatically
-receives a license from the original licensors, to run, modify and
-propagate that work, subject to this License. You are not responsible
-for enforcing compliance by third parties with this License.
-
- An "entity transaction" is a transaction transferring control of an
-organization, or substantially all assets of one, or subdividing an
-organization, or merging organizations. If propagation of a covered
-work results from an entity transaction, each party to that
-transaction who receives a copy of the work also receives whatever
-licenses to the work the party's predecessor in interest had or could
-give under the previous paragraph, plus a right to possession of the
-Corresponding Source of the work from the predecessor in interest, if
-the predecessor has it or can get it with reasonable efforts.
-
- You may not impose any further restrictions on the exercise of the
-rights granted or affirmed under this License. For example, you may
-not impose a license fee, royalty, or other charge for exercise of
-rights granted under this License, and you may not initiate litigation
-(including a cross-claim or counterclaim in a lawsuit) alleging that
-any patent claim is infringed by making, using, selling, offering for
-sale, or importing the Program or any portion of it.
-
- 11. Patents.
-
- A "contributor" is a copyright holder who authorizes use under this
-License of the Program or a work on which the Program is based. The
-work thus licensed is called the contributor's "contributor version".
-
- A contributor's "essential patent claims" are all patent claims
-owned or controlled by the contributor, whether already acquired or
-hereafter acquired, that would be infringed by some manner, permitted
-by this License, of making, using, or selling its contributor version,
-but do not include claims that would be infringed only as a
-consequence of further modification of the contributor version. For
-purposes of this definition, "control" includes the right to grant
-patent sublicenses in a manner consistent with the requirements of
-this License.
-
- Each contributor grants you a non-exclusive, worldwide, royalty-free
-patent license under the contributor's essential patent claims, to
-make, use, sell, offer for sale, import and otherwise run, modify and
-propagate the contents of its contributor version.
-
- In the following three paragraphs, a "patent license" is any express
-agreement or commitment, however denominated, not to enforce a patent
-(such as an express permission to practice a patent or covenant not to
-sue for patent infringement). To "grant" such a patent license to a
-party means to make such an agreement or commitment not to enforce a
-patent against the party.
-
- If you convey a covered work, knowingly relying on a patent license,
-and the Corresponding Source of the work is not available for anyone
-to copy, free of charge and under the terms of this License, through a
-publicly available network server or other readily accessible means,
-then you must either (1) cause the Corresponding Source to be so
-available, or (2) arrange to deprive yourself of the benefit of the
-patent license for this particular work, or (3) arrange, in a manner
-consistent with the requirements of this License, to extend the patent
-license to downstream recipients. "Knowingly relying" means you have
-actual knowledge that, but for the patent license, your conveying the
-covered work in a country, or your recipient's use of the covered work
-in a country, would infringe one or more identifiable patents in that
-country that you have reason to believe are valid.
-
- If, pursuant to or in connection with a single transaction or
-arrangement, you convey, or propagate by procuring conveyance of, a
-covered work, and grant a patent license to some of the parties
-receiving the covered work authorizing them to use, propagate, modify
-or convey a specific copy of the covered work, then the patent license
-you grant is automatically extended to all recipients of the covered
-work and works based on it.
-
- A patent license is "discriminatory" if it does not include within
-the scope of its coverage, prohibits the exercise of, or is
-conditioned on the non-exercise of one or more of the rights that are
-specifically granted under this License. You may not convey a covered
-work if you are a party to an arrangement with a third party that is
-in the business of distributing software, under which you make payment
-to the third party based on the extent of your activity of conveying
-the work, and under which the third party grants, to any of the
-parties who would receive the covered work from you, a discriminatory
-patent license (a) in connection with copies of the covered work
-conveyed by you (or copies made from those copies), or (b) primarily
-for and in connection with specific products or compilations that
-contain the covered work, unless you entered into that arrangement,
-or that patent license was granted, prior to 28 March 2007.
-
- Nothing in this License shall be construed as excluding or limiting
-any implied license or other defenses to infringement that may
-otherwise be available to you under applicable patent law.
-
- 12. No Surrender of Others' Freedom.
-
- If conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License. If you cannot convey a
-covered work so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you may
-not convey it at all. For example, if you agree to terms that obligate you
-to collect a royalty for further conveying from those to whom you convey
-the Program, the only way you could satisfy both those terms and this
-License would be to refrain entirely from conveying the Program.
-
- 13. Remote Network Interaction; Use with the GNU General Public License.
-
- Notwithstanding any other provision of this License, if you modify the
-Program, your modified version must prominently offer all users
-interacting with it remotely through a computer network (if your version
-supports such interaction) an opportunity to receive the Corresponding
-Source of your version by providing access to the Corresponding Source
-from a network server at no charge, through some standard or customary
-means of facilitating copying of software. This Corresponding Source
-shall include the Corresponding Source for any work covered by version 3
-of the GNU General Public License that is incorporated pursuant to the
-following paragraph.
-
- Notwithstanding any other provision of this License, you have
-permission to link or combine any covered work with a work licensed
-under version 3 of the GNU General Public License into a single
-combined work, and to convey the resulting work. The terms of this
-License will continue to apply to the part which is the covered work,
-but the work with which it is combined will remain governed by version
-3 of the GNU General Public License.
-
- 14. Revised Versions of this License.
-
- The Free Software Foundation may publish revised and/or new versions of
-the GNU Affero General Public License from time to time. Such new versions
-will be similar in spirit to the present version, but may differ in detail to
-address new problems or concerns.
-
- Each version is given a distinguishing version number. If the
-Program specifies that a certain numbered version of the GNU Affero General
-Public License "or any later version" applies to it, you have the
-option of following the terms and conditions either of that numbered
-version or of any later version published by the Free Software
-Foundation. If the Program does not specify a version number of the
-GNU Affero General Public License, you may choose any version ever published
-by the Free Software Foundation.
-
- If the Program specifies that a proxy can decide which future
-versions of the GNU Affero General Public License can be used, that proxy's
-public statement of acceptance of a version permanently authorizes you
-to choose that version for the Program.
-
- Later license versions may give you additional or different
-permissions. However, no additional obligations are imposed on any
-author or copyright holder as a result of your choosing to follow a
-later version.
-
- 15. Disclaimer of Warranty.
-
- THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
-APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
-HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
-OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
-THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
-PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
-IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
-ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
-
- 16. Limitation of Liability.
-
- IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
-WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
-THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
-GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
-USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
-DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
-PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
-EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
-SUCH DAMAGES.
-
- 17. Interpretation of Sections 15 and 16.
-
- If the disclaimer of warranty and limitation of liability provided
-above cannot be given local legal effect according to their terms,
-reviewing courts shall apply local law that most closely approximates
-an absolute waiver of all civil liability in connection with the
-Program, unless a warranty or assumption of liability accompanies a
-copy of the Program in return for a fee.
-
- END OF TERMS AND CONDITIONS
-
- How to Apply These Terms to Your New Programs
-
- If you develop a new program, and you want it to be of the greatest
-possible use to the public, the best way to achieve this is to make it
-free software which everyone can redistribute and change under these terms.
-
- To do so, attach the following notices to the program. It is safest
-to attach them to the start of each source file to most effectively
-state the exclusion of warranty; and each file should have at least
-the "copyright" line and a pointer to where the full notice is found.
-
-
- Copyright (C)
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU Affero General Public License as published by
- the Free Software Foundation, either version 3 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU Affero General Public License for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with this program. If not, see .
-
-Also add information on how to contact you by electronic and paper mail.
-
- If your software can interact with users remotely through a computer
-network, you should also make sure that it provides a way for users to
-get its source. For example, if your program is a web application, its
-interface could display a "Source" link that leads users to an archive
-of the code. There are many ways you could offer source, and different
-solutions will be better for different programs; see section 13 for the
-specific requirements.
-
- You should also get your employer (if you work as a programmer) or school,
-if any, to sign a "copyright disclaimer" for the program, if necessary.
-For more information on this, and how to apply and follow the GNU AGPL, see
- .
+
+ 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.
+
+---
+
+## 补充协议 | Supplementary Agreement
+
+> **补充协议 | Supplementary Agreement**
+>
+> 若您将本软件或其衍生版本以产品形式分发、销售或提供给**两个及以上独立的第三方主体**使用(无论采用买断、订阅、授权或任何其他商业模式),均须事先取得 HBAI-Ltd 的**书面商业授权**。
+>
+> If you distribute, sell, or provide this software (or any derivative) as a product to **two or more independent third parties** (regardless of business model: one-time purchase, subscription, licensing, etc.), you must obtain **written commercial authorization** from HBAI-Ltd prior to such use.
+>
+> **五个以内(含五个)**的法人主体作为联合运营方共同使用本软件,且不向联合体以外的第三方分发或提供服务的,视为**内部使用,无需商业授权**。
+>
+> **Five (5) or fewer** legal entities jointly operating and using this software internally, without distributing or providing services to parties outside the joint operation, are considered **internal use** and do not require commercial authorization.
+>
+> 在使用 Toonflow 的过程中,您不得删除或修改 Toonflow 控制台或应用程序中的标识或版权信息。
+>
+> You may not remove or modify any trademarks, logos, or copyright notices in the Toonflow console or application.
+
+---
+
+## 永久免费场景 | Always Free — No Authorization Required
+
+以下使用场景**永久免费**,无需任何授权:
+
+The following uses are **always free** and require no authorization:
+
+- ✅ 用 Toonflow 制作内容,在平台发布并获得分账 / Using Toonflow to produce content and earn platform revenue shares
+- ✅ 二次开发,供自己团队内部使用 / Secondary development and modification for internal team use
+- ✅ ≤ 5 个法人联合运营内部使用,不对外提供服务 / ≤5 legal entities operating jointly, internally only
+- ✅ 个人学习、研究、非商业用途 / Personal learning, research, and non-commercial purposes
+
+---
+
+## 授权定价 | Licensing Pricing
+
+商业授权费用与被授权方业务规模挂钩:
+
+Commercial licensing fees scale with the licensee's business scale:
+
+| 阶段 | 年销售额 | 年费 |
+|------|---------|------|
+| 🌱 扶持期 / Nurture | < ¥10 万 / $10k | **免费 / Free** |
+| 🚀 初创期 / Startup | ¥10–50 万 / $10k–$50k | ¥5,000 / 年 / year |
+| 📈 成长期 / Growth | ¥50–150 万 / $50k–$150k | ¥20,000 / 年 / year |
+| 🏢 规模期 / Scale | ¥150–500 万 / $150k–$500k | ¥80,000 / 年 / year |
+| 🌐 企业级 / Enterprise | > ¥500 万 / $500k | 面议 / Negotiable |
+
+---
+
+## AGPL 用户保护条款 | AGPL User Protection
+
+> **不追溯条款 | Non-Retroactivity Clause**
+>
+> 本协议变更生效日期(v1.0.8 正式发布日)前,基于 AGPL-3.0 条款使用 Toonflow 的用户,其现有使用行为不受本协议变更的约束,继续按 AGPL-3.0 条款执行。
+>
+> Users who used Toonflow under AGPL-3.0 prior to the effective date of this change (v1.0.8 official release date) are not affected by this license change. Their existing usage continues under AGPL-3.0.
\ No newline at end of file
diff --git a/NOTICES.txt b/NOTICES.txt
index 4e21b5c..00b6afe 100644
--- a/NOTICES.txt
+++ b/NOTICES.txt
@@ -40,6 +40,12 @@ Repository: https://github.com/vercel/ai
-----------------------------
+Name: @huggingface/transformers
+License: Apache-2.0
+Repository: https://github.com/huggingface/transformers.js
+
+-----------------------------
+
Name: @rmp135/sql-ts
License: MIT
Repository: https://github.com/rmp135/sql-ts
@@ -76,6 +82,12 @@ Repository: https://github.com/DefinitelyTyped/DefinitelyTyped
-----------------------------
+Name: @types/lodash
+License: MIT
+Repository: https://github.com/DefinitelyTyped/DefinitelyTyped
+
+-----------------------------
+
Name: @types/morgan
License: MIT
Repository: https://github.com/DefinitelyTyped/DefinitelyTyped
@@ -100,18 +112,18 @@ Repository: https://github.com/axios/axios
-----------------------------
-Name: best-effort-json-parser
-License: BSD-2-Clause
-Repository: https://github.com/beenotung/best-effort-json-parser
-
------------------------------
-
Name: better-sqlite3
License: MIT
Repository: https://github.com/WiseLibs/better-sqlite3
-----------------------------
+Name: compressing
+License: MIT
+Repository: https://github.com/node-modules/compressing
+
+-----------------------------
+
Name: cors
License: MIT
Repository: https://github.com/expressjs/cors
@@ -178,6 +190,12 @@ Repository: https://github.com/form-data/form-data
-----------------------------
+Name: graphlib
+License: MIT
+Repository: https://github.com/dagrejs/graphlib
+
+-----------------------------
+
Name: is-path-inside
License: MIT
Repository: https://github.com/sindresorhus/is-path-inside
@@ -208,6 +226,12 @@ Repository: https://github.com/davglass/license-checker
-----------------------------
+Name: lodash
+License: MIT
+Repository: https://github.com/lodash/lodash
+
+-----------------------------
+
Name: morgan
License: MIT
Repository: https://github.com/expressjs/morgan
@@ -220,9 +244,9 @@ Repository: https://github.com/remy/nodemon
-----------------------------
-Name: qwen-ai-provider
+Name: qwen-ai-provider-v5
License: Apache-2.0
-Repository: https://github.com/Younis-Ahmed/qwen-ai-provider
+Repository: https://github.com/bolechen/qwen-ai-provider-v5
-----------------------------
@@ -244,12 +268,24 @@ Repository: https://github.com/lovell/sharp
-----------------------------
+Name: socket.io
+License: MIT
+Repository: https://github.com/socketio/socket.io
+
+-----------------------------
+
Name: sqlite3
License: BSD-3-Clause
Repository: https://github.com/TryGhost/node-sqlite3
-----------------------------
+Name: sucrase
+License: MIT
+Repository: https://github.com/alangpierce/sucrase
+
+-----------------------------
+
Name: tsx
License: MIT
Repository: https://github.com/privatenumber/tsx
@@ -268,6 +304,12 @@ Repository: https://github.com/uuidjs/uuid
-----------------------------
+Name: vm2
+License: MIT
+Repository: https://github.com/patriksimek/vm2
+
+-----------------------------
+
Name: zhipu-ai-provider
License: Apache-2.0
Repository: https://github.com/Xiang-CH/zhipu-ai-provider
diff --git a/README.md b/README.md
index bbeaefe..6946b63 100644
--- a/README.md
+++ b/README.md
@@ -6,11 +6,20 @@
+ |
+
+
+
- 中文 |
- English
+ 简体中文 |
+ 繁體中文 |
+ English |
+ ไทย |
+ Tiếng Việt |
+ 日本語 |
+ Русский
+
+---
+
+# 🌐 多语言支持
+
+Toonflow 支持以下语言界面:
+
+| 语言 | Language |
+|------|----------|
+| 简体中文 | Chinese (Simplified) |
+| 繁體中文 | Chinese (Traditional) |
+| English | English |
+| ไทย | Thai |
+| Tiếng Việt | Vietnamese |
+| 日本語 | Japanese |
+| Русский | Russian |
+
+> 💡 更多语言适配中,欢迎贡献翻译!
+
---
# 🌟 主要功能
-Toonflow 是一款 AI 工具,能够利用 AI 技术将小说自动转化为剧本,并结合 AI 生成的图片和视频,实现高效的短剧创作。借助 Toonflow,可以轻松完成从文字到影像的全流程,让短剧制作变得更加智能与便捷。
+Toonflow v1.0.8 是面向短剧生产的 AI 工作台,围绕“策划 → 编剧 → 分镜 → 出片”构建完整闭环,并支持本地化、可编程、可持续迭代的生产流程。
-- ✅ **角色生成**
- 自动分析原始小说文本,智能识别并生成角色设定,包括外貌、性格、身份等详细信息,为后续剧本与画面创作提供可靠基础。
-- ✅ **剧本生成**
- 基于选定事件和章节,系统自动生成结构化剧本,涵盖对白、场景描述、剧情走向,实现从文学文本到影视剧本的高效转换。
-- ✅ **分镜制作**
- 根据剧本内容,智能生成分镜提示词与画面设计,细化前中后景、角色动态、道具设定和场景布局,自动根据剧本生成分镜,为视频制作提供完整路线蓝图。
-- ✅ **视频合成**
- 集成 AI 图像与视频技术,可使用 AI 生成视频片段。整合在线编辑,支持个性化调整输出,让影视创作高效协同、快捷落地。
+- ✅ **无限画布生产工作台**
+ 以类无限画布形式组织剧本、角色、分镜、素材与视频节点,支持自由编排、回溯与并行生产,不受线性步骤限制。
+- ✅ **三层 Agent 协作体系**
+ 决策层、执行层、监督层协同工作,覆盖任务拆解、内容生成、质量审阅与修订反馈,提升稳定性与成片一致性。
+- ✅ **持久化 Agent 记忆**
+ 基于本地 ONNX 向量检索的跨会话记忆系统,支持短期消息、长期摘要和语义召回,确保多轮创作连续性。
+- ✅ **可编程供应商系统**
+ 支持在设置中心直接编写供应商 TypeScript 逻辑并即时生效,无需改源码或重启,便于私有化和多模型接入。
+- ✅ **章节事件图谱驱动改编**
+ 自动提取原著章节事件并结构化存储,剧本改编按事件图谱精准调用上下文,减少长文本信息丢失。
+- ✅ **Skill 文件化配置**
+ ScriptAgent 与 ProductionAgent 的核心提示词外化为 Markdown Skill 文件,支持在线编辑与快速调优。
---
# 📦 应用场景
-- 短视频内容创作
-- 小说影视化实验
-- AI 文学改编工具
-- 剧本开发与快速原型
-- 视频素材生成
+- 网文/小说快速影视化改编
+- 短剧团队流水线协作生产
+- 多项目并行的 AI 内容工厂
+- 私有化部署的企业级内容平台
+- 低成本验证剧情与镜头方案
+- 教学与研究场景下的 AIGC 创作实验
---
# 🔰 使用指南
-## 📺 视频教程
+## 🚀 v1.0.8 快速上手
+
+1. 启动应用并登录(默认账号:`admin` / `admin123`)。
+2. 在设置中心完成模型供应商配置(文本/图像/视频模型)。
+3. 新建项目并导入原著,执行章节事件提取。
+4. 进入 ScriptAgent 生成故事骨架、改编策略与结构化剧本。
+5. 切换到 ProductionAgent,在无限画布中组织分镜、素材与视频节点。
+6. 对分镜图进行节点化精调后回流工作台,完成视频拼接与导出。
+
+
+## 📺 视频教程(待更新,老版本教程已无参考价值)
https://www.bilibili.com/video/BV1na6wB6Ea2
[](https://www.bilibili.com/video/BV1na6wB6Ea2)
@@ -86,6 +129,8 @@ https://www.bilibili.com/video/BV1na6wB6Ea2
---
+
+
# 🚀 安装
## 前置条件
@@ -100,13 +145,16 @@ https://www.bilibili.com/video/BV1na6wB6Ea2
### 1. 下载与安装
-| 操作系统 | GitHub 下载 | 夸克网盘下载 | 说明 |
-| :------: | :----------------------------------------------------------- | :---------------------------------------------- | :------------- |
-| Windows | [Release](https://github.com/HBAI-Ltd/Toonflow-app/releases) | [夸克网盘](https://pan.quark.cn/s/94ef07509df0) | 官方发布安装包 |
-| Linux | [Release](https://github.com/HBAI-Ltd/Toonflow-app/releases) | [夸克网盘](https://pan.quark.cn/s/94ef07509df0) | 官方发布安装包 |
-| macOS | [Release](https://github.com/HBAI-Ltd/Toonflow-app/releases) | [夸克网盘](https://pan.quark.cn/s/94ef07509df0) | 官方发布安装包 |
+| 操作系统 | GitHub | Atomgit | 夸克网盘下载 | 说明 |
+| :------: | :----------------------------------------------------------- | :------------------------------------------------------------ | :---------------------------------------------- | :------------- |
+| Windows | [Release](https://github.com/HBAI-Ltd/Toonflow-app/releases) | [Release](https://gitcode.com/HBAI-Ltd/Toonflow-app/releases) | [夸克网盘](https://pan.quark.cn/s/94ef07509df0) | 官方发布安装包 |
+| Linux | [Release](https://github.com/HBAI-Ltd/Toonflow-app/releases) | [Release](https://gitcode.com/HBAI-Ltd/Toonflow-app/releases) | [夸克网盘](https://pan.quark.cn/s/94ef07509df0) | 官方发布安装包 |
+| macOS | [Release](https://github.com/HBAI-Ltd/Toonflow-app/releases) | [Release](https://gitcode.com/HBAI-Ltd/Toonflow-app/releases) | [夸克网盘](https://pan.quark.cn/s/94ef07509df0) | 官方发布安装包 |
-> 目前仅支持 Windows 版本,其他系统将陆续开放。
+> [!CAUTION]
+> MacOS 系统请到 设置-隐私与安全性 配置安全性否则可能因证书问题无法正常打开
+>
+> 参考知乎文档:[https://www.zhihu.com/question/433389276](https://www.zhihu.com/question/433389276)
> 因 Gitee OS 环境限制及 Release 文件上传大小限制,暂不提供 Gitee Release 下载地址。
@@ -123,92 +171,46 @@ https://www.bilibili.com/video/BV1na6wB6Ea2
### 前置条件
- 已安装 [Docker](https://docs.docker.com/get-docker/)(版本 20.10+)
-- 已安装 [Docker Compose](https://docs.docker.com/compose/install/)(版本 2.0+)
-### 方式一:在线部署(推荐)
+### 方式一:在线部署
-从 GitHub / Gitee 自动拉取源码并构建镜像:
-
-```shell
-docker-compose -f docker/docker-compose.yml up -d --build
-```
-
-**支持的构建参数:**
-
-| 参数 | 说明 | 默认值 | 示例 |
-| -------- | ------------ | -------- | ------------------ |
-| `GIT` | 代码仓库源 | `github` | `github` / `gitee` |
-| `TAG` | 指定版本标签 | 最新 tag | `v1.0.6` |
-| `BRANCH` | 指定分支 | 默认分支 | `main` / `dev` |
-
-**版本选择优先级**:指定 TAG > 指定 BRANCH > 自动获取最新 tag > 默认分支
-
-**指定参数示例:**
-
-```shell
-# 使用 Gitee 源(国内推荐,速度更快)
-GIT=gitee docker-compose -f docker/docker-compose.yml up -d --build
-
-# 指定版本标签
-TAG=v1.0.6 docker-compose -f docker/docker-compose.yml up -d --build
-
-# 指定分支 + Gitee 源
-GIT=gitee BRANCH=dev docker-compose -f docker/docker-compose.yml up -d --build
-```
+待完善,暂时使用本地构建。
### 方式二:本地构建
-使用本地已有的源码直接构建,适合开发者或已克隆仓库的用户:
+使用本地已有的源码直接构建,适合开发者或已克隆仓库的用户,这需要你在本地安装 git:
```shell
# 先克隆项目(如已有则跳过)
git clone https://github.com/HBAI-Ltd/Toonflow-app.git
cd Toonflow-app
-# 使用本地源码构建
-docker-compose -f docker/docker-compose.local.yml up -d --build
+# 使用 docker-compose 本地构建并启动
+yarn docker:local
+
+# 或者手动构建
+docker build -t toonflow .
+docker run -d -p <本地端口>:10588 -v <本地数据路径>:/app/data toonflow
+
+# 此时在相应端口的 /web/index.html 路径即可访问页面
+# 例如 http://localhost:10588/web/index.html
```
### 服务端口说明
-| 端口 | 用途 | 在线部署映射 | 本地构建映射 |
-| ------- | -------------- | ------------- | ------------- |
-| `80` | Nginx 前端页面 | 随机端口 | `8080:80` |
-| `60000` | 后端 API 服务 | `60000:60000` | `60000:60000` |
+| 端口 | 用途 | 部署映射 |
+| ------- | -------- | ------------- |
+| `10588` | 软件界面 | `10588:10588` |
-### 数据持久化
+**环境变量说明:**
-默认日志目录会挂载到宿主机 `./logs` 目录。如需持久化上传文件或数据库,可在 `docker-compose.yml` 中添加 volumes:
+| 变量 | 说明 |
+| ---------- | ---------------------------------- |
+| `NODE_ENV` | 运行环境,`prod` 表示生产环境 |
+| `PORT` | 服务监听端口(默认 10588) |
+| `OSSURL` | 文件存储访问地址,用于静态资源访问 |
-```yaml
-volumes:
- - ./logs:/var/log
- - ./uploads:/app/uploads # 持久化上传文件
- - ./data:/app/data # 持久化数据库(如有)
-```
-
-### 常用操作命令
-
-```shell
-# 查看容器状态
-docker-compose -f docker/docker-compose.yml ps
-
-# 查看实时日志
-docker-compose -f docker/docker-compose.yml logs -f
-
-# 停止服务
-docker-compose -f docker/docker-compose.yml down
-
-# 重新构建并启动(更新版本时使用)
-docker-compose -f docker/docker-compose.yml up -d --build
-
-# 进入容器调试
-docker exec -it toonflow sh
-```
-
-> ⚠️ **首次登录**
-> 账号:`admin`
-> 密码:`admin123`
+---
## 云端部署
@@ -260,13 +262,13 @@ yarn build
```json
{
"name": "toonflow-app",
- "script": "build/app.js",
+ "script": "data/serve/app.js",
"instances": "max",
"exec_mode": "cluster",
"env": {
"NODE_ENV": "prod",
- "PORT": 60000,
- "OSSURL": "http://127.0.0.1:60000/"
+ "PORT": 10588,
+ "OSSURL": "http://127.0.0.1:10588/"
}
}
```
@@ -317,8 +319,25 @@ pm2 monit # 监控面板
> [!CAUTION]
> 🚧 **PR 提交规范** 🚧
->
+>
> ⛔ `master` 分支不接受任何 PR | ✅ 请将 PR 提交到 `develop` 分支
+>
+> 欢迎开发者们共同参与 Toonflow 的共创。如有兴趣加入,请在交流群内联系主理人 ACT
+
+## 🛠️ 技术栈
+
+| 类别 | 技术 |
+| ---------- | ----------------------------------------------------------------------------------------- |
+| 运行时 | Node.js 23.11.1+ |
+| 语言 | TypeScript 5.x |
+| 后端框架 | Express 5 |
+| 数据库 | SQLite(better-sqlite3 / knex) |
+| AI 集成 | Vercel AI SDK(OpenAI / Anthropic / Google / DeepSeek / 智谱 / MiniMax / 通义千问 / xAI) |
+| 本地推理 | @huggingface/transformers(ONNX) |
+| 实时通信 | Socket.IO |
+| 桌面客户端 | Electron 40 |
+| 图像处理 | Sharp |
+| 容器化 | Docker |
## 开发环境准备
@@ -355,15 +374,15 @@ pm2 monit # 监控面板
本项目包含 **后端 API 服务** 和 **前端页面** 两部分,请根据需要选择启动方式:
- - **方式一:仅启动后端服务(开发调试用)**
+ - **方式一:仅启动后端服务**
```bash
yarn dev
```
- > ⚠️ 此命令仅启动后端 API 服务(端口 60000),**不包含前端页面**。直接访问 `http://localhost:60000` 只能调用 API 接口,无法看到完整的网页界面。如需同时使用前端页面,请配合前端项目单独启动,或使用下方的 GUI 模式。
+ > ⚠️ 此命令仅启动后端 API 服务(端口 10588),**不包含前端页面**。直接访问 `http://localhost:10588` 只能调用 API 接口,无法看到完整的网页界面。如需同时使用前端页面,请配合前端项目单独启动,或使用下方的 GUI 模式。
- - **方式二:启动 Electron 桌面客户端(推荐完整体验)**
+ - **方式二:启动 Electron 桌面客户端**
```bash
yarn dev:gui
@@ -371,12 +390,13 @@ pm2 monit # 监控面板
> 此命令会同时启动后端服务和 Electron 桌面窗口,自带内置前端页面,开箱即用,无需额外配置。适合想要完整体验所有功能的开发者。
- **两种模式对比:**
+ - **方式三:生产模式启动**
- | 命令 | 启动内容 | 前端页面 | 适用场景 |
- | -------------- | ------------------------ | -------- | -------------------------------- |
- | `yarn dev` | 仅后端 API(端口 60000) | ❌ 无 | 后端开发调试、配合前端项目联调 |
- | `yarn dev:gui` | 后端 + Electron 桌面端 | ✅ 内置 | 完整功能体验、桌面客户端开发调试 |
+ ```bash
+ yarn start
+ ```
+
+ > 以生产模式直接运行编译后的服务(需先执行 `yarn build`)。
4. **项目打包**
@@ -427,47 +447,63 @@ pm2 monit # 监控面板
- **GitHub**:[Toonflow-web](https://github.com/HBAI-Ltd/Toonflow-web)
- **Gitee**:[Toonflow-web](https://gitee.com/HBAI-Ltd/Toonflow-web)
-前端构建后,将 `dist` 目录内容复制到本项目的 `scripts/web` 目录即可集成。
+前端构建后,将 `dist` 目录内容复制到本项目的 `data/web` 目录即可集成。
## 项目结构
```
-📂 docker/ # Docker 配置文件
-📂 docs/ # 文档资源
-📂 scripts/ # 构建脚本与静态资源
-│ └─ 📂 web/ # 前端编译产物(内置)
+📂 build/ # 编译产物
+📂 data/ # 运行时数据
+│ ├─ 📂 models/ # 本地推理模型(ONNX)
+│ ├─ 📂 oss/ # 对象存储(素材/角色/场景)
+│ ├─ 📂 serve/ # 生产环境入口
+│ ├─ 📂 skills/ # Agent 技能提示词
+│ └─ 📂 web/ # 前端编译产物(内置)
+📂 docs/ # 文档资源
+📂 env/ # 环境配置
+📂 scripts/ # 构建与辅助脚本
📂 src/
-├─ 📂 agents/ # AI Agent 模块
-├─ 📂 lib/ # 公共库(数据库初始化、响应格式)
-├─ 📂 middleware/ # 中间件
-├─ 📂 routes/ # 路由模块
-│ ├─ 📂 assets/ # 素材管理
-│ ├─ 📂 index/ # 首页
-│ ├─ 📂 novel/ # 小说管理
-│ ├─ 📂 other/ # 其他功能
-│ ├─ 📂 outline/ # 大纲管理
-│ ├─ 📂 project/ # 项目管理
-│ ├─ 📂 prompt/ # 提示词管理
-│ ├─ 📂 script/ # 剧本生成
-│ ├─ 📂 setting/ # 系统设置
-│ ├─ 📂 storyboard/ # 分镜管理
-│ ├─ 📂 task/ # 任务管理
-│ ├─ 📂 user/ # 用户管理
-│ └─ 📂 video/ # 视频生成
-├─ 📂 types/ # TypeScript 类型声明
-├─ 📂 utils/ # 工具函数
-├─ 📄 app.ts # 应用入口
-├─ 📄 core.ts # 路由核心
-├─ 📄 env.ts # 环境变量处理
-├─ 📄 err.ts # 错误处理
-├─ 📄 router.ts # 路由注册
-└─ 📄 utils.ts # 通用工具
-📂 uploads/ # 上传文件目录
-📄 LICENSE # 许可证
-📄 NOTICES.txt # 第三方依赖声明
-📄 package.json # 项目配置
-📄 README.md # 项目说明
-📄 tsconfig.json # TypeScript 配置
+├─ 📂 agents/ # AI Agent 模块
+│ ├─ 📂 productionAgent/ # 生产 Agent
+│ └─ 📂 scriptAgent/ # 剧本 Agent
+├─ 📂 lib/ # 公共库(数据库初始化、响应格式)
+├─ 📂 middleware/ # 中间件
+├─ 📂 routes/ # 路由模块
+│ ├─ 📂 agents/ # Agent 记忆管理
+│ ├─ 📂 artStyle/ # 画风管理
+│ ├─ 📂 assets/ # 素材管理
+│ ├─ 📂 assetsGenerate/ # 素材生成
+│ ├─ 📂 cornerScape/ # 分镜管理
+│ ├─ 📂 general/ # 通用接口
+│ ├─ 📂 login/ # 登录认证
+│ ├─ 📂 migrate/ # 数据迁移
+│ ├─ 📂 modelSelect/ # 模型选择
+│ ├─ 📂 novel/ # 小说管理
+│ ├─ 📂 other/ # 其他功能
+│ ├─ 📂 production/ # 制作管理
+│ ├─ 📂 project/ # 项目管理
+│ ├─ 📂 script/ # 剧本生成
+│ ├─ 📂 scriptAgent/ # 剧本 Agent 接口
+│ ├─ 📂 setting/ # 系统设置
+│ ├─ 📂 task/ # 任务管理
+│ └─ 📂 test/ # 测试接口
+├─ 📂 socket/ # WebSocket 实时通信
+├─ 📂 types/ # TypeScript 类型声明
+├─ 📂 utils/ # 工具函数
+├─ 📄 app.ts # 应用入口
+├─ 📄 core.ts # 核心初始化
+├─ 📄 env.ts # 环境变量处理
+├─ 📄 err.ts # 错误处理
+├─ 📄 logger.ts # 日志模块
+├─ 📄 router.ts # 路由注册
+└─ 📄 utils.ts # 通用工具
+📄 Dockerfile # Docker 构建文件
+📄 electron-builder.yml # Electron 打包配置
+📄 skillList.json # 技能清单
+📄 LICENSE # 许可证(Apache-2.0)
+📄 NOTICES.txt # 第三方依赖声明
+📄 package.json # 项目配置
+📄 tsconfig.json # TypeScript 配置
```
---
@@ -483,58 +519,11 @@ pm2 monit # 监控面板
---
-# 📝 开发计划
-
-我们正持续优化产品,以下为近期开发重点:
-
-1. 核心功能升级
-
-- `🧩 提示词润色生成 Agent` 基于 AI 智能润色视频提示词,自动拆解生成分镜脚本,支持多镜头智能融合与平滑过渡
-- `📄 多格式文本支持` 扩展小说以外的剧本、漫画脚本、游戏对话文本等多种格式的智能解析
-
-2. 生产流程优化
-
-- `👗 角色服化道管理` 强化长篇内容中角色的服装、化妆、道具一致性,支持多剧集关联记忆和着装自动生成
-- `📦 批量处理/任务队列` 支持多章节同时处理,后台任务管理,进度实时监控和中断恢复
-
-3. 视觉生成增强
-
-- `🎭 多风格模板库` 内置多种视觉风格包,支持一键风格转换和用户自定义风格保存
-- `⏱️ 智能节奏分析/优化` 分析剧情情绪曲线,自动建议高潮点和节奏变化,优化分镜安排生产流程优化
-
----
-
# 👨👩👧👦 微信交流群
-~~交流群 1~~
-
-~~交流群 2~~
-
-~~交流群 3~~
-
-~~交流群 4~~
-
-~~交流群 5~~
-
-~~交流群 6~~
-
-~~交流群 7~~
-
-~~交流群 8~~
-
-~~交流群 9~~
-
-~~交流群 10~~
-
-~~交流群 11~~
-
-~~交流群 12~~
-
-~~交流群 13~~
-
拉群小助手:
-
+
---
@@ -546,11 +535,36 @@ pm2 monit # 监控面板
# 📜 许可证
-Toonflow 基于 AGPL-3.0 协议开源发布,许可证详情:https://www.gnu.org/licenses/agpl-3.0.html
+Toonflow 基于 Apache-2.0 协议开源发布,并附有补充商业协议。
-您可以在遵循 AGPL-3.0 相关条款与条件的情况下,将 Toonflow 用于包括商业目的在内的各类用途。
+许可证详情:https://www.apache.org/licenses/LICENSE-2.0
-如需获得免于 AGPL-3.0 限制的专有商业许可,请通过邮箱与我们联系。
+## 补充协议
+
+- 若将本软件以产品形式分发给 **2 个及以上独立第三方**使用,须取得 HBAI-Ltd **书面商业授权**。
+- **≤ 5 个法人**联合运营内部使用,不对外提供服务的,视为内部使用,**无需授权**。
+- 不得删除或修改 Toonflow 中的标识或版权信息。
+
+## 永久免费场景
+
+- ✅ 用 Toonflow 制作内容并获得平台分账
+- ✅ 二次开发供自己团队内部使用
+- ✅ ≤ 5 个法人联合运营内部使用
+- ✅ 个人学习、研究、非商业用途
+
+## 商业授权定价
+
+| 阶段 | 年销售额 | 年费 |
+|------|---------|------|
+| 🌱 扶持期 | < ¥10 万 | **申请即可免费授权** |
+| 🚀 初创期 | ¥10–50 万 | ¥5,000/年 |
+| 📈 成长期 | ¥50–150 万 | ¥20,000/年 |
+| 🏢 规模期 | ¥150–500 万 | ¥80,000/年 |
+| 🌐 企业级 | > ¥500 万 | 面议 |
+
+> **不追溯条款**:v1.0.8 发布前基于 AGPL-3.0 使用的用户,继续按 AGPL-3.0 执行,不受本协议变更约束。
+
+完整协议详见 [LICENSE](./LICENSE) 文件。
---
@@ -565,13 +579,14 @@ Toonflow 基于 AGPL-3.0 协议开源发布,许可证详情:https://www.gnu.
感谢以下开源项目为 Toonflow 提供强大支持:
- [Express](https://expressjs.com/) - 快速、开放、极简的 Node.js Web 框架
-- [AI](https://ai-sdk.dev/) - 面向 TypeScript 的 AI 工具包
+- [AI SDK](https://ai-sdk.dev/) - 面向 TypeScript 的 AI 工具包
- [Better-SQLite3](https://github.com/WiseLibs/better-sqlite3) - 高性能 SQLite3 绑定库
- [Sharp](https://sharp.pixelplumbing.com/) - 高性能 Node.js 图像处理库
- [Axios](https://axios-http.com/) - 基于 Promise 的 HTTP 客户端
- [Zod](https://zod.dev/) - TypeScript 优先的模式验证库
-- [Aigne](https://github.com/aigne-com/aigne) - LLM API 统一管理与接入中间件
+- [Socket.IO](https://socket.io/) - 实时双向事件通信引擎
- [Electron](https://www.electronjs.org/) - 跨平台桌面应用开发框架
+- [Hugging Face Transformers](https://huggingface.co/docs/transformers.js) - 本地 ML 推理库
感谢以下组织/单位/个人为 Toonflow 提供支持:
@@ -589,4 +604,8 @@ Toonflow 基于 AGPL-3.0 协议开源发布,许可证详情:https://www.gnu.
完整的第三方依赖清单请查阅 `NOTICES.txt`
+<<<<<<< HEAD
##### copyright © 淮北艾阿网络科技有限公司
+=======
+##### copyright © 淮北艾阿网络科技有限公司
+>>>>>>> 108
diff --git a/backup/agents/models.ts b/backup/agents/models.ts
deleted file mode 100644
index 16c7193..0000000
--- a/backup/agents/models.ts
+++ /dev/null
@@ -1,36 +0,0 @@
-import { ChatOpenAI, ChatOpenAIFields } from "@langchain/openai";
-
-export const openAI = (config: ChatOpenAIFields = {}) => {
- return new ChatOpenAI({
- modelName: "gpt-4.1",
- temperature: 1,
- configuration: {
- apiKey: process.env.AI_OPENAI_KEY,
- baseURL: process.env.AI_OPENAI_URL,
- },
- ...config,
- });
-};
-
-export const doubao = (config: ChatOpenAIFields = {}) => {
- return new ChatOpenAI({
- model: "doubao-seed-1-6-flash-250828",
- temperature: 1,
- configuration: {
- apiKey: process.env.AI_TIKTOK_KEY,
- baseURL: process.env.AI_TIKTOK_URL,
- },
- ...config,
- });
-};
-
-export const deepseek = (config: ChatOpenAIFields = {}) =>
- new ChatOpenAI({
- model: "DeepSeek-V3.2",
- temperature: 1,
- configuration: {
- apiKey: process.env.AI_DEEPSEEK_KEY,
- baseURL: process.env.AI_DEEPSEEK_URL,
- },
- ...config,
- });
diff --git a/backup/agents/outlineScript/index.ts b/backup/agents/outlineScript/index.ts
deleted file mode 100644
index 304c7c0..0000000
--- a/backup/agents/outlineScript/index.ts
+++ /dev/null
@@ -1,769 +0,0 @@
-// @/agents/outlineScript.ts
-import u from "@/utils";
-import { createAgent } from "langchain";
-import { EventEmitter } from "events";
-import { openAI } from "@/agents/models";
-import { z } from "zod";
-import { tool } from "@langchain/core/tools";
-import type { DB } from "@/types/database";
-// ==================== 类型定义 ====================
-
-type AgentType = "AI1" | "AI2" | "director";
-type AssetType = "角色" | "道具" | "场景";
-type RefreshEvent = "storyline" | "outline" | "assets";
-
-interface AssetItem {
- name: string;
- description: string;
-}
-
-interface EpisodeData {
- episodeIndex: number;
- title: string;
- chapterRange: number[];
- scenes: AssetItem[]; // 按 outline 出场顺序排列
- characters: AssetItem[]; // 按 outline 出场顺序排列
- props: AssetItem[]; // 按 outline 出场顺序排列
- coreConflict: string;
- outline: string; // 最高优先级,剧本生成的唯一权威
- openingHook: string; // outline 第一句话的视觉化,开篇第一个镜头
- keyEvents: string[]; // 4个元素:[起, 承, 转, 合],严格按 outline 顺序
- emotionalCurve: string; // 对应 keyEvents 各阶段
- visualHighlights: string[]; // 按 outline 顺序排列的标志性镜头
- endingHook: string; // outline 之后的悬念延伸
- classicQuotes: string[];
-}
-
-// ==================== Schema 定义 ====================
-
-const sceneItemSchema = z.object({
- name: z.string().describe("场景名称,如'五星酒店宴会厅'、'老旧出租屋'"),
- description: z.string().describe("环境描写:空间结构、光线氛围、装饰陈设、环境细节"),
-});
-
-const characterItemSchema = z.object({
- name: z.string().describe("角色姓名(必须是具体人名,禁止'众人'、'群众'等集合描述)"),
- description: z.string().describe("人设样貌:年龄体态、五官特征、发型妆容、服装配饰、气质神态"),
-});
-
-const propItemSchema = z.object({
- name: z.string().describe("道具名称"),
- description: z.string().describe("样式描写:材质质感、颜色图案、形状尺寸、磨损痕迹、特殊标记"),
-});
-
-const episodeSchema = z.object({
- episodeIndex: z.number().describe("集数索引,从1开始递增"),
- title: z.string().describe("8字内标题,疑问/感叹句,含情绪爆点"),
- chapterRange: z.array(z.number()).describe("关联章节号数组"),
- scenes: z.array(sceneItemSchema).describe("场景列表,按 outline 出场顺序排列"),
- characters: z.array(characterItemSchema).describe("角色列表,按 outline 出场顺序排列,必须是独立个体"),
- props: z.array(propItemSchema).describe("道具列表,按 outline 出场顺序排列,至少3个"),
- coreConflict: z.string().describe("核心矛盾:A想要X vs B阻碍X"),
- outline: z.string().describe("100-300字剧情主干,最高优先级,剧本生成的唯一权威,按时间顺序完整叙述"),
- openingHook: z.string().describe("开场镜头:outline 第一句话的视觉化,必须作为剧本第一个镜头"),
- keyEvents: z.array(z.string()).length(4).describe("4个元素的数组:[起, 承, 转, 合],严格按 outline 顺序从中提取"),
- emotionalCurve: z.string().describe("情绪曲线,如:2(压抑)→5(反抗)→9(爆发)→3(余波),对应 keyEvents 各阶段"),
- visualHighlights: z.array(z.string()).describe("3-5个标志性镜头,按 outline 叙事顺序排列"),
- endingHook: z.string().describe("结尾悬念:outline 之后的延伸,勾引下集"),
- classicQuotes: z.array(z.string()).describe("1-2句金句,每句≤15字,必须从原文提取"),
-});
-
-// ==================== 常量配置 ====================
-
-// ==================== 主类 ====================
-
-export default class OutlineScript {
- private readonly projectId: number;
- readonly emitter = new EventEmitter();
- history: Array<[string, string]> = [];
- novelChapters: DB["t_novel"][] = [];
-
- modelName = "gpt-4.1";
- apiKey = "";
- baseURL = "";
-
- constructor(projectId: number) {
- this.projectId = projectId;
- }
-
- // ==================== 公共方法 ====================
-
- get events() {
- return this.emitter;
- }
-
- setNovel(chapters: DB["t_novel"][]) {
- this.novelChapters = chapters;
- }
-
- // ==================== 私有工具方法 ====================
-
- private emit(event: string, data?: any) {
- this.emitter.emit(event, data);
- }
-
- private refresh(type: RefreshEvent) {
- this.emit("refresh", type);
- }
-
- private log(action: string, detail?: string) {
- const msg = detail ? `${action}: ${detail}` : action;
- console.log(`\n[${new Date().toLocaleTimeString()}] ${msg}\n`);
- }
-
- private safeParseJson(str: string, fallback: T): T {
- try {
- return JSON.parse(str);
- } catch {
- return fallback;
- }
- }
-
- private uniqueByName(items: T[]): T[] {
- return Array.from(new Map(items.map((item) => [item.name, item])).values());
- }
-
- // ==================== 数据库操作 ====================
-
- private async getProjectInfo(): Promise {
- return u.db("t_project").where({ id: this.projectId }).first();
- }
-
- private async getNovelInfo(asString = false): Promise {
- const info = await this.getProjectInfo();
- if (!info) return asString ? "未查询到项目信息" : null;
-
- if (asString) {
- const fields = [
- `小说名称: ${info.name}`,
- `小说简介: ${info.intro}`,
- `小说类型: ${info.type}`,
- `目标短剧类型: ${info.artStyle}`,
- `短剧画幅: ${info.videoRatio}`,
- ];
- return fields.join("\n");
- }
- return info;
- }
-
- // ==================== 故事线操作 ====================
-
- private async findStoryline() {
- return u.db("t_storyline").where({ projectId: this.projectId }).first();
- }
-
- private async upsertStorylineContent(content: string) {
- const existing = await this.findStoryline();
- if (existing) {
- await u.db("t_storyline").where({ projectId: this.projectId }).update({ content });
- } else {
- await u.db("t_storyline").insert({ projectId: this.projectId, content });
- }
- this.refresh("storyline");
- }
-
- private async deleteStorylineContent() {
- const deleted = await u.db("t_storyline").where({ projectId: this.projectId }).del();
- this.refresh("storyline");
- return deleted;
- }
-
- // ==================== 大纲操作 ====================
-
- private async findOutlines() {
- return u.db("t_outline").where({ projectId: this.projectId }).orderBy("episode", "asc");
- }
-
- private async findOutlineById(id: number) {
- return u.db("t_outline").where({ id, projectId: this.projectId }).first();
- }
-
- private async getMaxEpisode(): Promise {
- const result: any = await u.db("t_outline").where({ projectId: this.projectId }).max("episode as max").first();
- return result?.max ?? 0;
- }
-
- private async clearOutlinesAndScripts() {
- const outlines = await u.db("t_outline").select("id").where({ projectId: this.projectId });
- if (outlines.length === 0) return 0;
-
- const outlineIds = outlines.map((o) => o.id);
- await u.db("t_script").whereIn("outlineId", outlineIds).del();
- await u.db("t_outline").where({ projectId: this.projectId }).del();
-
- return outlines.length;
- }
-
- private async insertOutlines(episodes: EpisodeData[], startEpisode: number) {
- const insertList = episodes.map((ep, idx) => ({
- projectId: this.projectId,
- data: JSON.stringify({ ...ep, episodeIndex: startEpisode + idx }),
- episode: startEpisode + idx,
- }));
-
- await u.db("t_outline").insert(insertList);
- return insertList.length;
- }
-
- private async createEmptyScripts(outlineIds: Array<{ id: number; data: string }>) {
- const scripts = outlineIds.map((item) => {
- const data = this.safeParseJson>(item.data, {});
- return {
- name: `第${data.episodeIndex ?? ""}集`,
- content: "",
- projectId: this.projectId,
- outlineId: item.id,
- };
- });
-
- if (scripts.length > 0) {
- await u.db("t_script").insert(scripts);
- }
- return scripts.length;
- }
-
- private async saveOutlineData(episodes: EpisodeData[], overwrite: boolean, startEpisode?: number) {
- if (overwrite) {
- const cleared = await this.clearOutlinesAndScripts();
- if (cleared > 0) {
- this.log("清理旧数据", `删除了 ${cleared} 条大纲及关联剧本`);
- }
- }
-
- const actualStart = overwrite ? 1 : startEpisode ?? (await this.getMaxEpisode()) + 1;
- const insertedCount = await this.insertOutlines(episodes, actualStart);
-
- const newOutlines = await u
- .db("t_outline")
- .select("id", "data")
- .where({ projectId: this.projectId })
- .orderBy("episode", "desc")
- .limit(insertedCount);
-
- const scriptCount = await this.createEmptyScripts(newOutlines as Array<{ id: number; data: string }>);
-
- this.refresh("outline");
- return { insertedCount, scriptCount };
- }
-
- private async updateOutlineData(id: number, data: EpisodeData) {
- const existing = await this.findOutlineById(id);
- if (!existing) return false;
-
- await u
- .db("t_outline")
- .where({ id })
- .update({ data: JSON.stringify(data) });
- this.refresh("outline");
- return true;
- }
-
- private async deleteOutlineData(ids: number[]) {
- const results = await Promise.allSettled(ids.map((id) => u.deleteOutline(id, this.projectId)));
- this.refresh("outline");
- return results;
- }
-
- private formatOutlineDetail(ep: any): string {
- const formatList = (items: any[], formatter: (item: any) => string) =>
- items?.map((item, i) => ` ${i + 1}. ${formatter(item)}`).join("\n") || " 无";
-
- // keyEvents 按顺序显示:起、承、转、合
- const keyEventsLabels = ["起", "承", "转", "合"];
- const formatKeyEvents = (events: string[]) => events?.map((e, i) => ` 【${keyEventsLabels[i] || i + 1}】${e}`).join("\n") || " 无";
-
- return `
-大纲ID: ${ep.id}
-第 ${ep.episodeIndex} 集: ${ep.title || ""}
-${"=".repeat(50)}
-章节范围: ${ep.chapterRange?.join(", ") || ""}
-核心矛盾: ${ep.coreConflict || ""}
-
-【剧情主干】(最高优先级,剧本生成的唯一权威):
-${ep.outline || "无"}
-
-【开场镜头】(必须作为剧本第一个镜头):
-${ep.openingHook || "无"}
-
-【剧情节点】(严格按顺序:起→承→转→合):
-${formatKeyEvents(ep.keyEvents)}
-
-情绪曲线: ${ep.emotionalCurve || ""}
-
-【视觉重点】(按剧情主干顺序排列):
-${formatList(ep.visualHighlights, (v) => v)}
-
-【结尾悬念】:
-${ep.endingHook || "无"}
-
-【经典台词】:
-${formatList(ep.classicQuotes, (q) => q)}
-
-角色(按出场顺序): ${ep.characters?.map((c: AssetItem) => `${c.name}(${c.description})`).join("; ") || "无"}
-场景(按出场顺序): ${ep.scenes?.map((s: AssetItem) => `${s.name}(${s.description})`).join("; ") || "无"}
-道具(按出场顺序): ${ep.props?.map((p: AssetItem) => `${p.name}(${p.description})`).join("; ") || "无"}`;
- }
-
- private async getOutlineText(simplified: boolean): Promise {
- const records = await this.findOutlines();
-
- if (!records.length) return "当前项目暂无大纲";
-
- const episodes = records.map((r) => ({
- id: r.id,
- episode: r.episode,
- ...this.safeParseJson>(r.data ?? "{}", {}),
- }));
-
- if (simplified) {
- const list = episodes.map((ep) => `第 ${ep.episodeIndex ?? ep.episode} 集 (id=${ep.id})`).join("\n");
- return `项目大纲 (共 ${episodes.length} 集):\n${list}`;
- }
-
- const details = episodes.map((ep) => this.formatOutlineDetail(ep)).join("\n");
- return `项目大纲 (共 ${episodes.length} 集)\n\n${details}`;
- }
-
- // ==================== 资产操作 ====================
-
- private async findAssetByTypeAndName(type: AssetType, name: string) {
- return u.db("t_assets").where({ projectId: this.projectId, type, name }).first();
- }
-
- private async upsertAsset(type: AssetType, item: AssetItem): Promise<"inserted" | "updated" | "skipped"> {
- const existing = await this.findAssetByTypeAndName(type, item.name);
-
- if (!existing) {
- await u.db("t_assets").insert({
- projectId: this.projectId,
- type,
- name: item.name,
- intro: item.description,
- prompt: item.description,
- });
- return "inserted";
- }
-
- if (existing.intro !== item.description) {
- await u.db("t_assets").where({ id: existing.id }).update({
- intro: item.description,
- prompt: item.description,
- });
- return "updated";
- }
-
- return "skipped";
- }
-
- private extractAssetsFromOutlines(outlines: Array<{ data?: string | null | undefined }>): {
- characters: AssetItem[];
- props: AssetItem[];
- scenes: AssetItem[];
- } {
- const result = { characters: [] as AssetItem[], props: [] as AssetItem[], scenes: [] as AssetItem[] };
-
- for (const outline of outlines) {
- const data = this.safeParseJson>(outline.data ?? "{}", {});
- if (data.characters) result.characters.push(...data.characters);
- if (data.props) result.props.push(...data.props);
- if (data.scenes) result.scenes.push(...data.scenes);
- }
-
- return {
- characters: this.uniqueByName(result.characters),
- props: this.uniqueByName(result.props),
- scenes: this.uniqueByName(result.scenes),
- };
- }
-
- private async generateAssetsFromOutlines() {
- const outlines = await u.db("t_outline").select("data").where({ projectId: this.projectId });
-
- if (!outlines.length) return { inserted: 0, updated: 0, skipped: 0 };
-
- const { characters, props, scenes } = this.extractAssetsFromOutlines(outlines);
-
- // 只做新增和更新,不做删除
- const stats = { inserted: 0, updated: 0, skipped: 0 };
-
- const processItems = async (items: AssetItem[], type: AssetType) => {
- for (const item of items) {
- const result = await this.upsertAsset(type, item);
- stats[result]++;
- }
- };
-
- await processItems(characters, "角色");
- await processItems(props, "道具");
- await processItems(scenes, "场景");
-
- this.refresh("assets");
- return { ...stats };
- }
-
- // ==================== Tool 定义:故事线 ====================
-
- getStoryline = tool(
- async () => {
- this.log("获取故事线");
- const storyline = await this.findStoryline();
- return storyline?.content ?? "当前项目暂无故事线";
- },
- {
- name: "getStoryline",
- description: "获取当前项目的故事线内容",
- schema: z.object({}),
- verboseParsingErrors: true,
- },
- );
-
- saveStoryline = tool(
- async ({ content }) => {
- this.log("保存故事线");
- await this.upsertStorylineContent(content);
- return "故事线保存成功";
- },
- {
- name: "saveStoryline",
- description: "保存或更新当前项目的故事线,会覆盖已有内容",
- schema: z.object({
- content: z.string().describe("故事线完整内容"),
- }),
- verboseParsingErrors: true,
- },
- );
-
- deleteStoryline = tool(
- async () => {
- this.log("删除故事线");
- const deleted = await this.deleteStorylineContent();
- return deleted > 0 ? "故事线删除成功" : "当前项目没有故事线";
- },
- {
- name: "deleteStoryline",
- description: "删除当前项目的故事线",
- schema: z.object({}),
- verboseParsingErrors: true,
- },
- );
-
- // ==================== Tool 定义:大纲 ====================
-
- getOutline = tool(
- async ({ simplified = false }) => {
- this.log("获取大纲", `简化模式: ${simplified}`);
- return this.getOutlineText(simplified);
- },
- {
- name: "getOutline",
- description: "获取项目大纲。simplified=true返回简化列表,false返回完整内容",
- schema: z.object({
- simplified: z.boolean().default(false).describe("是否返回简化版本"),
- }),
- verboseParsingErrors: true,
- },
- );
-
- saveOutline = tool(
- async ({ episodes, overwrite = true, startEpisode }) => {
- this.log("保存大纲", `覆盖模式: ${overwrite}, 集数: ${episodes.length}`);
- const { insertedCount, scriptCount } = await this.saveOutlineData(episodes as EpisodeData[], overwrite, startEpisode);
- return `大纲保存成功:插入 ${insertedCount} 集大纲,创建 ${scriptCount} 个剧本记录`;
- },
- {
- name: "saveOutline",
- description: "保存大纲数据。overwrite=true会清空现有大纲后写入,false则追加到末尾",
- schema: z.object({
- episodes: z.array(episodeSchema).min(1).describe("大纲数据数组"),
- overwrite: z.boolean().default(true).describe("是否覆盖现有大纲"),
- startEpisode: z.number().optional().describe("追加模式下的起始集数(不填则自动递增)"),
- }),
- verboseParsingErrors: true,
- },
- );
-
- updateOutline = tool(
- async ({ id, data }) => {
- this.log("更新大纲", `ID: ${id}`);
- const success = await this.updateOutlineData(id, data as EpisodeData);
- return success ? `大纲ID ${id} 更新成功` : `未找到大纲ID: ${id}`;
- },
- {
- name: "updateOutline",
- description: "更新指定ID的单集大纲内容",
- schema: z.object({
- id: z.number().describe("大纲ID"),
- data: episodeSchema.describe("更新后的大纲数据"),
- }),
- verboseParsingErrors: true,
- },
- );
-
- deleteOutline = tool(
- async ({ ids }) => {
- this.log("删除大纲", `IDs: ${ids.join(", ")}`);
- const results = await this.deleteOutlineData(ids);
- const summary = results.map((r, i) => `ID ${ids[i]}: ${r.status === "fulfilled" ? "成功" : "失败"}`).join(", ");
- return `删除结果: ${summary}`;
- },
- {
- name: "deleteOutline",
- description: "根据大纲ID删除指定大纲及关联数据",
- schema: z.object({
- ids: z.array(z.number()).min(1).describe("要删除的大纲ID数组"),
- }),
- verboseParsingErrors: true,
- },
- );
-
- // ==================== Tool 定义:章节 ====================
-
- getChapter = tool(
- async ({ chapterNumbers }) => {
- this.log("获取章节", `章节号: ${chapterNumbers.join(", ")}`);
-
- const results = await Promise.all(
- chapterNumbers.map(async (num) => {
- const chapter = await u
- .db("t_novel")
- .where({ projectId: this.projectId, chapterIndex: num })
- .select("chapterData", "chapterIndex", "chapter")
- .first();
-
- if (chapter) {
- return `\n【第${chapter.chapterIndex}章 ${chapter.chapter || ""}】\n${chapter.chapterData}`;
- }
- return `\n【第${num}章】未找到`;
- }),
- );
-
- return results.join("\n\n---\n");
- },
- {
- name: "getChapter",
- description: "根据章节编号获取小说章节的完整原文内容,支持批量获取",
- schema: z.object({
- chapterNumbers: z.array(z.number()).min(1).describe("章节编号数组"),
- }),
- verboseParsingErrors: true,
- },
- );
-
- // ==================== Tool 定义:资产 ====================
-
- generateAssets = tool(
- async () => {
- this.log("生成资产");
- const stats = await this.generateAssetsFromOutlines();
-
- if (stats.inserted === 0 && stats.updated === 0 && stats.skipped === 0) {
- return "当前项目没有大纲数据,无法生成资产";
- }
-
- return `资产生成完成:新增 ${stats.inserted},更新 ${stats.updated},保持 ${stats.skipped}`;
- },
- {
- name: "generateAssets",
- description: "从当前项目的所有大纲中提取并生成角色、道具、场景资产,自动去重并清理冗余",
- schema: z.object({}),
- verboseParsingErrors: true,
- },
- );
-
- // ==================== 上下文构建 ====================
-
- private getChapterContext(): string {
- if (!this.novelChapters.length) return "无章节数据";
- return this.novelChapters.map((c) => `章节号:${c.chapterIndex},分卷:${c.reel},章节名:${c.chapter}`).join("\n");
- }
-
- private async buildEnvironmentContext(): Promise {
- const [novelInfo, storyline, outlineCount] = await Promise.all([
- this.getNovelInfo(true),
- this.findStoryline(),
- u.db("t_outline").where({ projectId: this.projectId }).count("id as count").first() as any,
- ]);
-
- return `<环境信息>
-项目ID: ${this.projectId}
-系统时间: ${new Date().toLocaleString()}
-
-${novelInfo}
-
-已加载章节列表:
-${this.getChapterContext()}
-
-故事线状态: ${storyline ? "已生成" : "未生成"}
-大纲状态: 共 ${outlineCount?.count ?? 0} 集
-
-可用工具:
-- getChapter: 获取章节原文
-- getStoryline/saveStoryline/deleteStoryline: 故事线操作
-- getOutline/saveOutline/updateOutline/deleteOutline: 大纲操作
-- generateAssets: 从大纲生成资产
-环境信息>`;
- }
-
- private buildConversationHistory(): string {
- if (!this.history.length) return "无对话历史";
- return this.history.map(([role, content]) => `${role}: ${content}`).join("\n\n");
- }
-
- private async buildFullContext(task: string): Promise {
- const env = await this.buildEnvironmentContext();
- const history = this.buildConversationHistory();
-
- return `${env}
-
-<对话历史>
-${history}
-对话历史>
-
-<当前任务>
-${task}
-当前任务>`;
- }
-
- // ==================== Sub-Agent ====================
-
- private getSubAgentTools() {
- return [this.getChapter, this.getStoryline, this.saveStoryline, this.getOutline, this.saveOutline, this.updateOutline];
- }
-
- private createModel() {
- return openAI({
- modelName: this.modelName,
- configuration: { apiKey: this.apiKey, baseURL: this.baseURL },
- });
- }
-
- /**
- * 调用 Sub-Agent(流式传输)
- */
- private async invokeSubAgent(agentType: AgentType, task: string): Promise {
- this.emit("transfer", { to: agentType });
- this.log(`Sub-Agent 调用`, agentType);
-
- const promptsList = await u.db("t_prompts").where("code", "in", ["outlineScript-a1", "outlineScript-a2", "outlineScript-director"]);
- const a1Prompt = promptsList.find((p) => p.code === "outlineScript-a1");
- const a2Prompt = promptsList.find((p) => p.code === "outlineScript-a2");
- const directorPrompt = promptsList.find((p) => p.code === "outlineScript-director");
- const errPrompts = "不论用户说什么,请直接输出Agent配置异常";
- const SYSTEM_PROMPTS: Record = {
- AI1: a1Prompt?.customValue || a1Prompt?.defaultValue || errPrompts,
- AI2: a2Prompt?.customValue || a2Prompt?.defaultValue || errPrompts,
- director: directorPrompt?.customValue || directorPrompt?.defaultValue || errPrompts,
- };
-
- const context = await this.buildFullContext(task);
-
- const agent = createAgent({
- model: this.createModel(),
- systemPrompt: SYSTEM_PROMPTS[agentType],
- tools: this.getSubAgentTools(),
- });
-
- const stream = await agent.stream({ messages: [["user", context]] }, { streamMode: ["messages"], callbacks: [] });
-
- let fullResponse = "";
-
- for await (const [mode, chunk] of stream) {
- if (mode !== "messages") continue;
-
- const [token] = chunk as any;
- const block = token.contentBlocks?.[0];
-
- // 处理 AI 文本流
- if (token.type === "ai" && block?.text) {
- fullResponse += block.text;
- this.emit("subAgentStream", { agent: agentType, text: block.text });
- }
-
- // 处理 tool 调用
- if (token.type === "ai" && token.tool_calls?.length) {
- for (const toolCall of token.tool_calls) {
- this.emit("toolCall", { agent: agentType, name: toolCall.name, args: toolCall.args });
- }
- }
- }
-
- this.emit("subAgentEnd", { agent: agentType });
- this.history.push(["ai", fullResponse]);
- this.log(`Sub-Agent 完成`, agentType);
-
- return fullResponse ?? `${agentType}已完成任务`;
- }
-
- private createSubAgentTool(agentType: AgentType, description: string) {
- return tool(async ({ taskDescription }) => this.invokeSubAgent(agentType, taskDescription), {
- name: agentType,
- description,
- schema: z.object({
- taskDescription: z.string().describe("具体的任务描述,包含章节范围、修改要求等详细信息"),
- }),
- });
- }
-
- // ==================== 主入口 ====================
-
- private getAllTools() {
- return [
- this.createSubAgentTool("AI1", "调用故事师。负责分析小说原文并生成故事线,会自行调用 saveStoryline 保存结果。"),
- this.createSubAgentTool("AI2", "调用大纲师。负责根据故事线生成剧集大纲,会自行调用 saveOutline 保存结果。"),
- this.createSubAgentTool("director", "调用导演。负责审核故事线和大纲,会自行调用 updateOutline 或 saveStoryline 进行修改。"),
- this.getChapter,
- this.getStoryline,
- this.saveStoryline,
- this.deleteStoryline,
- this.getOutline,
- this.saveOutline,
- this.updateOutline,
- this.deleteOutline,
- this.generateAssets,
- ];
- }
-
- async call(msg: string): Promise {
- this.history.push(["user", msg]);
-
- const envContext = await this.buildEnvironmentContext();
-
- const prompts = await u.db("t_prompts").where("code", "outlineScript-main").first();
-
- const mainPrompts = prompts?.customValue || prompts?.defaultValue || "不论用户说什么,请直接输出Agent配置异常";
-
- const mainAgent = createAgent({
- model: this.createModel(),
- tools: this.getAllTools(),
- systemPrompt: `${envContext}\n${mainPrompts}`,
- });
- const stream = await mainAgent.stream({ messages: this.history }, { streamMode: ["messages"], callbacks: [] });
-
- let fullResponse = "";
-
- for await (const [mode, chunk] of stream) {
- if (mode !== "messages") continue;
-
- const [token] = chunk as any;
- const block = token.contentBlocks?.[0];
-
- // 处理 AI 文本流
- if (token.type === "ai" && block?.text) {
- fullResponse += block.text;
- this.emit("data", block.text);
- }
-
- // 处理 tool 调用
- if (token.type === "ai" && token.tool_calls?.length) {
- for (const toolCall of token.tool_calls) {
- this.emit("toolCall", { agent: "main", name: toolCall.name, args: toolCall.args });
- }
- }
- }
-
- this.history.push(["assistant", fullResponse]);
- this.emit("response", fullResponse);
-
- return fullResponse;
- }
-}
diff --git a/backup/agents/storyboard/generateImagePromptsTool.ts b/backup/agents/storyboard/generateImagePromptsTool.ts
deleted file mode 100644
index 7c99dfa..0000000
--- a/backup/agents/storyboard/generateImagePromptsTool.ts
+++ /dev/null
@@ -1,128 +0,0 @@
-import u from "@/utils";
-
-type AspectRatio = "16:9" | "9:16" | "21:9" | "1:1" | "4:3" | "3:4" | "3:2" | "2:3";
-
-interface GridLayoutResult {
- cols: number;
- rows: number;
- totalCells: number;
- placeholderCount: number;
-}
-
-interface GridPromptOptions {
- prompts: string[];
- style: string;
- aspectRatio: AspectRatio;
- assetsName: { name: string; intro: string }[];
-}
-
-interface GridPromptResult {
- prompt: string;
- gridLayout: GridLayoutResult;
-}
-
-/**
- * 根据prompts数量计算宫格布局
- */
-function calculateGridLayout(count: number): GridLayoutResult {
- let cols: number;
- let rows: number;
- if (count <= 0) {
- cols = 1;
- rows = 1;
- } else if (count === 1) {
- cols = 1;
- rows = 1;
- } else if (count === 2) {
- cols = 2;
- rows = 1;
- } else if (count === 3) {
- cols = 3;
- rows = 1;
- } else if (count === 4) {
- cols = 2;
- rows = 2;
- } else if (count <= 9) {
- cols = 3;
- rows = 3;
- } else {
- cols = 3;
- rows = Math.ceil(count / 3);
- }
- const totalCells = cols * rows;
- const placeholderCount = totalCells - count;
- return { cols, rows, totalCells, placeholderCount };
-}
-
-/**
- * 获取宽高比描述
- */
-function getAspectRatioDescription(aspectRatio: AspectRatio): string {
- const descriptions: Record = {
- "16:9": "电影宽银幕",
- "9:16": "竖屏短剧",
- "21:9": "超宽银幕史诗感",
- "1:1": "方形构图",
- "4:3": "经典银幕",
- "3:4": "竖版经典",
- "3:2": "摄影标准",
- "2:3": "竖版摄影",
- };
- return descriptions[aspectRatio] || "标准比例";
-}
-
-/**
- * 生成电影级宫格分镜提示词
- */
-async function generateGridPrompt(options: GridPromptOptions): Promise {
- const { prompts, style, aspectRatio, assetsName } = options;
- const layout = calculateGridLayout(prompts.length);
- const aspectRatioDesc = getAspectRatioDescription(aspectRatio);
-
- // 构建宫格位置描述
- const gridPositions: string[] = [];
- for (let i = 0; i < layout.totalCells; i++) {
- const row = Math.floor(i / layout.cols) + 1;
- const col = (i % layout.cols) + 1;
- if (i < prompts.length) {
- gridPositions.push(`[第${row}行第${col}列]: ${prompts[i]}`);
- } else {
- gridPositions.push(`[第${row}行第${col}列]: 纯黑图`);
- }
- }
-
- // 构建资产说明
- const assetsSection =
- assetsName.length > 0
- ? `\n【可用资产】\n${assetsName.map((a) => `- ${a.name}:${a.intro}`).join("\n")}\n\n⚠️ 必须使用完整资产名称,禁止简称或代词。`
- : "";
-
- const promptsData = await u.db("t_prompts").where("code", "generateImagePrompts").first();
-
- const mainPrompts = promptsData?.customValue || promptsData?.defaultValue;
- const errData = `请输出${options.prompts.length}张图片\n提示词如下:\n${options.prompts.map((p, i) => `第${i + 1}格: ${p}`).join("\n")}`;
-
- if (!mainPrompts) return { prompt: errData, gridLayout: layout };
-
- const result = await u.ai.text.invoke({
- messages: [
- {
- role: "system",
- content: mainPrompts,
- },
- {
- role: "user",
- content: `请优化以下分镜提示词:\n\n【布局】${layout.cols}列×${layout.rows}行=${
- layout.totalCells
- }格\n【比例】${aspectRatio}(${aspectRatioDesc})\n【风格】${style}\n${assetsSection}\n\n【原始内容】\n${gridPositions.join("\n")}`,
- },
- ],
- });
-
- return {
- prompt: result?.text ?? errData,
- gridLayout: layout,
- };
-}
-
-export default generateGridPrompt;
diff --git a/backup/agents/storyboard/generateImageTool.ts b/backup/agents/storyboard/generateImageTool.ts
deleted file mode 100644
index cb8b519..0000000
--- a/backup/agents/storyboard/generateImageTool.ts
+++ /dev/null
@@ -1,334 +0,0 @@
-import generateImagePromptsTool from "@/agents/storyboard/generateImagePromptsTool";
-import u from "@/utils";
-import sharp from "sharp";
-import { z } from "zod";
-
-interface AssetItem {
- name: string;
- description: string;
-}
-
-interface EpisodeData {
- episodeIndex: number;
- title: string;
- chapterRange: number[];
- scenes: AssetItem[];
- characters: AssetItem[];
- props: AssetItem[];
- coreConflict: string;
- openingHook: string;
- outline: string;
- keyEvents: string[];
- emotionalCurve: string;
- visualHighlights: string[];
- endingHook: string;
- classicQuotes: string[];
-}
-
-interface ImageInfo {
- name: string;
- type: string;
- filePath: string;
-}
-
-interface ResourceItem {
- name: string;
- intro: string;
-}
-
-// 资产过滤响应的 schema
-const filteredAssetsSchema = z.object({
- relevantAssets: z
- .array(
- z.object({
- name: z.string().describe("资产名称"),
- reason: z.string().describe("选择该资产的原因"),
- }),
- )
- .describe("与分镜内容相关的资产列表"),
-});
-
-// 压缩图片直到不超过指定大小
-async function compressImage(buffer: Buffer, maxSizeBytes: number = 3 * 1024 * 1024): Promise {
- if (buffer.length <= maxSizeBytes) {
- return buffer;
- }
- let quality = 90;
- let compressedBuffer = await sharp(buffer).jpeg({ quality }).toBuffer();
- while (compressedBuffer.length > maxSizeBytes && quality > 10) {
- quality -= 10;
- compressedBuffer = await sharp(buffer).jpeg({ quality }).toBuffer();
- }
- if (compressedBuffer.length > maxSizeBytes) {
- const metadata = await sharp(buffer).metadata();
- let scale = 0.9;
- while (compressedBuffer.length > maxSizeBytes && scale > 0.1) {
- const newWidth = Math.round((metadata.width || 1000) * scale);
- const newHeight = Math.round((metadata.height || 1000) * scale);
- compressedBuffer = await sharp(buffer)
- .resize(newWidth, newHeight, { fit: "inside" })
- .jpeg({ quality: Math.max(quality, 30) })
- .toBuffer();
- scale -= 0.1;
- }
- }
- return compressedBuffer;
-}
-
-// 拼接多张图片为一张
-async function mergeImages(imagePaths: string[]): Promise {
- const imageBuffers = await Promise.all(imagePaths.map((path) => u.oss.getFile(path)));
- const imageMetadatas = await Promise.all(imageBuffers.map((buffer) => sharp(buffer).metadata()));
- const maxHeight = Math.max(...imageMetadatas.map((m) => m.height || 0));
- const resizedImages = await Promise.all(
- imageBuffers.map(async (buffer, index) => {
- const metadata = imageMetadatas[index];
- const aspectRatio = (metadata.width || 1) / (metadata.height || 1);
- const newWidth = Math.round(maxHeight * aspectRatio);
- return {
- buffer: await sharp(buffer).resize(newWidth, maxHeight, { fit: "cover" }).toBuffer(),
- width: newWidth,
- };
- }),
- );
- let currentX = 0;
- const compositeInputs = resizedImages.map(({ buffer, width }) => {
- const input = {
- input: buffer,
- left: currentX,
- top: 0,
- };
- currentX += width;
- return input;
- });
- const mergedImage = await sharp({
- create: {
- width: currentX,
- height: maxHeight,
- channels: 4,
- background: { r: 255, g: 255, b: 255, alpha: 1 },
- },
- })
- .composite(compositeInputs)
- .jpeg({ quality: 90 })
- .toBuffer();
- return compressImage(mergedImage);
-}
-
-// 进一步压缩单张图片到指定大小
-async function compressToSize(buffer: Buffer, targetSize: number): Promise {
- if (buffer.length <= targetSize) {
- return buffer;
- }
-
- const metadata = await sharp(buffer).metadata();
- let quality = 80;
- let scale = 1.0;
- let compressedBuffer = buffer;
-
- // 先尝试降低质量
- while (compressedBuffer.length > targetSize && quality > 10) {
- compressedBuffer = await sharp(buffer).jpeg({ quality }).toBuffer();
- quality -= 10;
- }
-
- // 如果还是太大,缩小尺寸
- while (compressedBuffer.length > targetSize && scale > 0.2) {
- scale -= 0.1;
- const newWidth = Math.round((metadata.width || 1000) * scale);
- const newHeight = Math.round((metadata.height || 1000) * scale);
- compressedBuffer = await sharp(buffer)
- .resize(newWidth, newHeight, { fit: "inside" })
- .jpeg({ quality: Math.max(quality, 20) })
- .toBuffer();
- }
-
- return compressedBuffer;
-}
-
-// 确保图片列表总大小不超过指定限制
-async function ensureTotalSizeLimit(buffers: Buffer[], maxTotalBytes: number = 10 * 1024 * 1024): Promise {
- let totalSize = buffers.reduce((sum, buf) => sum + buf.length, 0);
-
- if (totalSize <= maxTotalBytes) {
- return buffers;
- }
-
- // 计算每张图片的平均目标大小
- const avgTargetSize = Math.floor(maxTotalBytes / buffers.length);
-
- // 按大小降序排列,优先压缩大图片
- const indexedBuffers = buffers.map((buf, idx) => ({ buf, idx, size: buf.length }));
- indexedBuffers.sort((a, b) => b.size - a.size);
-
- const result = [...buffers];
-
- for (const item of indexedBuffers) {
- totalSize = result.reduce((sum, buf) => sum + buf.length, 0);
- if (totalSize <= maxTotalBytes) {
- break;
- }
-
- // 计算这张图片需要压缩到的目标大小
- const excessSize = totalSize - maxTotalBytes;
- const targetSize = Math.max(item.buf.length - excessSize, avgTargetSize, 100 * 1024); // 最小100KB
-
- if (item.buf.length > targetSize) {
- result[item.idx] = await compressToSize(item.buf, targetSize);
- }
- }
-
- return result;
-}
-
-// 处理图片列表,确保不超过10张且每张不超过3MB,总大小不超过10MB
-async function processImages(images: ImageInfo[]): Promise {
- const maxImages = 10;
- let processedBuffers: Buffer[];
-
- if (images.length <= maxImages) {
- const buffers = await Promise.all(images.map((img) => u.oss.getFile(img.filePath)));
- processedBuffers = await Promise.all(buffers.map((buffer) => compressImage(buffer)));
- } else {
- const mergeStartIndex = maxImages - 1;
- const firstBuffers = await Promise.all(images.slice(0, mergeStartIndex).map((img) => u.oss.getFile(img.filePath)));
- const compressedFirstImages = await Promise.all(firstBuffers.map((buffer) => compressImage(buffer)));
- const imagesToMergeList = images.slice(mergeStartIndex).map((img) => img.filePath);
- const mergedImage = await mergeImages(imagesToMergeList);
- processedBuffers = [...compressedFirstImages, mergedImage];
- }
-
- // 确保总大小不超过10MB
- return ensureTotalSizeLimit(processedBuffers);
-}
-
-// 使用 AI 过滤与分镜相关的资产
-async function filterRelevantAssets(prompts: string[], allResources: ResourceItem[], availableImages: ImageInfo[]): Promise {
- if (allResources.length === 0 || availableImages.length === 0) {
- return availableImages;
- }
-
- const availableNames = new Set(availableImages.map((img) => img.name));
- const availableResources = allResources.filter((r) => availableNames.has(r.name));
-
- if (availableResources.length === 0) {
- return availableImages;
- }
-
- const result = await u.ai.text.invoke({
- messages: [
- {
- role: "user",
- content: `请分析以下分镜描述,从可用资产中筛选出与分镜内容直接相关的资产。
-
-分镜描述:
-${prompts.map((p, i) => `${i + 1}. ${p}`).join("\n")}
-
-可用资产列表:
-${availableResources.map((r) => `- ${r.name}:${r.intro}`).join("\n")}
-
-请仅选择在分镜中明确出现或被提及的角色、场景、道具。不要选择与分镜内容无关的资产。`,
- },
- ],
- output: {
- relevantAssets: z
- .array(
- z.object({
- name: z.string().describe("资产名称"),
- reason: z.string().describe("选择该资产的原因"),
- }),
- )
- .describe("与分镜内容相关的资产列表"),
- },
- });
-
-
- if (!result?.relevantAssets || result.relevantAssets.length === 0) {
- return availableImages;
- }
-
- const relevantNames = new Set(result.relevantAssets.map((a) => a.name));
- const filteredImages = availableImages.filter((img) => relevantNames.has(img.name));
-
- return filteredImages.length > 0 ? filteredImages : availableImages;
-}
-
-// 构建资产映射提示词
-function buildResourcesMapPrompts(images: ImageInfo[]): string {
- if (images.length === 0) return "";
-
- const mapping = images.map((item, index) => {
- if (index < 9) {
- return `${item.name}=图片${index + 1}`;
- } else {
- return `${item.name}=图10-${index - 8}`;
- }
- });
-
- return `其中人物、场景、道具参考对照关系如下:${mapping.join(", ")}。`;
-}
-
-export default async (cells: { prompt: string }[], scriptId: number, projectId: number) => {
- const scriptData = await u.db("t_script").where({ id: scriptId, projectId }).first();
- const projectInfo = await u.db("t_project").where({ id: projectId }).first();
-
- const row = await u.db("t_outline").where({ id: scriptData?.outlineId!, projectId }).first();
- const outline: EpisodeData | null = row?.data ? JSON.parse(row.data) : null;
-
- const resources: ResourceItem[] = outline
- ? (["characters", "props", "scenes"] as const).flatMap((k) => outline[k]?.map((i) => ({ name: i.name, intro: i.description })) ?? [])
- : [];
-
- const resourceNames = resources.map((r) => r.name);
- const imagesRaw = await u.db("t_assets").whereIn("name", resourceNames).andWhere({ projectId }).select("name", "type", "filePath");
-
- const allImages = imagesRaw
- .sort((a, b) => {
- const order = ["角色", "场景", "道具"];
- return order.indexOf(a.type!) - order.indexOf(b.type!);
- })
- .filter((img) => img.filePath) as ImageInfo[];
-
- if (allImages.length === 0) {
- throw new Error("未找到可用的图片资源");
- }
-
- const cellPrompts = cells.map((c) => c.prompt);
-
- // 使用 AI 过滤相关资产
- const filteredImages = await filterRelevantAssets(cellPrompts, resources, allImages);
-
- const resourcesMapPrompts = buildResourcesMapPrompts(filteredImages);
- console.log("====润色前:", cellPrompts);
- const promptsData = await generateImagePromptsTool({
- prompts: cellPrompts,
- style: `类型:${projectInfo?.type!},风格:${projectInfo?.artStyle!}`,
- aspectRatio: projectInfo?.videoRatio! as any,
- assetsName: resources,
- });
-
- // const prompts = `请生成${promptsData.gridLayout.totalCells}格,${promptsData.gridLayout.cols}列×${promptsData.gridLayout.rows}行宫格图。
-
- // ${promptsData.prompt}
-
- // 注意:请严格按照提示词内容生成图片,确保人物样貌、艺术风格、色调光影一致。
- // `;
- const prompts = promptsData.prompt;
- console.log("====润色后:", prompts);
-
- const processedImages = await processImages(filteredImages);
-
- const contentStr = await u.ai.image({
- systemPrompt: resourcesMapPrompts,
- prompt: prompts,
- size: "4K",
- aspectRatio: projectInfo?.videoRatio ? (projectInfo.videoRatio as any) : "16:9",
- imageBase64: processedImages.map((buf) => buf.toString("base64")),
- });
-
- const match = contentStr.match(/base64,([A-Za-z0-9+/=]+)/);
- const base64Str = match?.[1] ?? contentStr;
- const buffer = Buffer.from(base64Str, "base64");
-
- return buffer;
-};
diff --git a/backup/agents/storyboard/imageSplitting.ts b/backup/agents/storyboard/imageSplitting.ts
deleted file mode 100644
index 5488194..0000000
--- a/backup/agents/storyboard/imageSplitting.ts
+++ /dev/null
@@ -1,94 +0,0 @@
-import sharp from "sharp";
-
-interface GridLayoutResult {
- cols: number;
- rows: number;
- totalCells: number;
- placeholderCount: number;
-}
-
-/**
- * 计算宫格布局
- * 1张: 1x1
- * 2张: 2x1
- * 3张: 3x1
- * 4张: 2x2
- * 5-9张: 3x3
- * 10-12张: 3x4
- * 13-15张: 3x5
- * ...以此类推(3列,行数递增)
- */
-function calculateGridLayout(count: number): GridLayoutResult {
- let cols: number;
- let rows: number;
- if (count <= 0) {
- cols = 1;
- rows = 1;
- } else if (count === 1) {
- cols = 1;
- rows = 1;
- } else if (count === 2) {
- cols = 2;
- rows = 1;
- } else if (count === 3) {
- cols = 3;
- rows = 1;
- } else if (count === 4) {
- cols = 2;
- rows = 2;
- } else if (count <= 9) {
- // 5-9格统一用3x3
- cols = 3;
- rows = 3;
- } else {
- cols = 3;
- rows = Math.ceil(count / 3);
- }
- const totalCells = cols * rows;
- const placeholderCount = totalCells - count;
- return { cols, rows, totalCells, placeholderCount };
-}
-
-/**
- * 分割宫格图片
- * @param image - 输入的宫格图片 Buffer
- * @param length - 实际需要的图片数量(不包含占位图)
- * @returns 分割后的单张图片 Buffer 数组
- */
-export default async (image: Buffer, length: number): Promise => {
- const metadata = await sharp(image).metadata();
- const { width: totalWidth, height: totalHeight } = metadata;
-
- if (!totalWidth || !totalHeight) {
- throw new Error("无法获取图片尺寸");
- }
-
- const { cols, rows } = calculateGridLayout(length);
-
- const cellWidth = Math.floor(totalWidth / cols);
- const cellHeight = Math.floor(totalHeight / rows);
-
- const buffers: Buffer[] = [];
-
- for (let i = 0; i < length; i++) {
- const row = Math.floor(i / cols);
- const col = i % cols;
-
- const left = col * cellWidth;
- const top = row * cellHeight;
-
- const cellBuffer = await sharp(image)
- .extract({
- left,
- top,
- width: cellWidth,
- height: cellHeight,
- })
- .png()
- .toBuffer();
-
- buffers.push(cellBuffer);
- }
-
- return buffers;
-};
diff --git a/backup/agents/storyboard/index.ts b/backup/agents/storyboard/index.ts
deleted file mode 100644
index f215888..0000000
--- a/backup/agents/storyboard/index.ts
+++ /dev/null
@@ -1,737 +0,0 @@
-// @/agents/Storyboard.ts
-import u from "@/utils";
-import { createAgent } from "langchain";
-import { EventEmitter } from "events";
-import { openAI } from "@/agents/models";
-import { z } from "zod";
-import { tool } from "@langchain/core/tools";
-import type { DB } from "@/types/database";
-import generateImageTool from "./generateImageTool";
-import imageSplitting from "./imageSplitting";
-
-// ==================== 类型定义 ====================
-
-type AgentType = "segmentAgent" | "shotAgent";
-type RefreshEvent = "storyline" | "outline" | "assets";
-
-// ==================== 常量配置 ====================
-
-// const SYSTEM_PROMPTS: Record = {
-// segmentAgent: segmentPrompts,
-// shotAgent: shotPrompts,
-// director: directorPrompts,
-// };
-
-// ==================== 类型定义:片段和画面 ====================
-
-interface Segment {
- index: number;
- description: string;
- emotion?: string;
- action?: string;
-}
-
-interface Shot {
- id: number; // 分镜独立ID
- segmentId: number; // 所属片段ID
- title: string;
- x: number;
- y: number;
- cells: Array<{ src?: string; prompt?: string; id?: string }>; // 镜头数组,每个cell是一个镜头
-}
-
-// ==================== 主类 ====================
-
-export default class Storyboard {
- private readonly projectId: number;
- private readonly scriptId: number;
- readonly emitter = new EventEmitter();
- history: Array<[string, string]> = [];
- novelChapters: DB["t_novel"][] = [];
-
- // 存储 segmentAgent 生成的片段结果
- private segments: Segment[] = [];
- // 存储 shotAgent 生成的分镜结果
- private shots: Shot[] = [];
- // 分镜ID计数器
- private shotIdCounter: number = 0;
- // 存储正在生成分镜图的分镜ID
- private generatingShots: Set = new Set();
-
- modelName = "gpt-4.1";
- apiKey = "";
- baseURL = "";
-
- constructor(projectId: number, scriptId: number) {
- this.projectId = projectId;
- this.scriptId = scriptId;
- }
-
- // 更新shopts
- public updatePreShots(segmentId: number, cellId: number, cell: { src?: string; prompt?: string; id?: string }) {
- console.log("%c Line:76 🍤 segmentId", "background:#465975", segmentId);
- console.log("%c Line:76 🍷 cellId", "background:#ffdd4d", cellId);
- console.log("%c Line:76 🍢 cell", "background:#ffdd4d", cell);
- const shotIndex = this.shots.findIndex((item) => item.segmentId === segmentId);
- if (shotIndex === -1) {
- return `分镜 ${segmentId} 不存在,请检查分镜ID是否正确`;
- }
- const cellIndex = this.shots[shotIndex].cells.findIndex((item) => item.id === cellId.toString());
- if (cellIndex === -1) {
- return `镜头 ${cellId} 不存在,请检查镜头ID是否正确`;
- }
- this.shots[shotIndex].cells[cellIndex] = { ...this.shots[shotIndex].cells[cellIndex], ...cell };
- }
-
- // ==================== 公共方法 ====================
-
- get events() {
- return this.emitter;
- }
- // ==================== 私有工具方法 ====================
-
- private emit(event: string, data?: any) {
- this.emitter.emit(event, data);
- }
-
- private refresh(type: RefreshEvent) {
- this.emit("refresh", type);
- }
-
- private log(action: string, detail?: string) {
- const msg = detail ? `${action}: ${detail}` : action;
- console.log(`\n[${new Date().toLocaleTimeString()}] ${msg}\n`);
- }
-
- // ==================== 剧本相关操作 ====================
-
- getScript = tool(
- async () => {
- this.log("获取剧本", `scriptId: ${this.scriptId}`);
- const script = await u.db("t_script").where({ id: this.scriptId, projectId: this.projectId }).first();
- if (!script) throw new Error("剧本不存在");
- return `剧本集:${script.name}\n\n内容:\n\`\`\`${script.content}\`\`\``;
- },
- {
- name: "getScript",
- description: "获取剧本内容",
- schema: z.object({}),
- verboseParsingErrors: true,
- },
- );
-
- // ==================== 资产相关操作 ====================
-
- /**
- * 获取资产列表(供 segmentAgent 和 shotAgent 调用)
- */
- getAssets = tool(
- async () => {
- this.log("获取资产列表", `scriptId: ${this.scriptId}`);
- const scriptData = await u.db("t_script").where({ id: this.scriptId, projectId: this.projectId }).first();
- const row = await u.db("t_outline").where({ id: scriptData?.outlineId!, projectId: this.projectId }).first();
- const outline: any | null = row?.data ? JSON.parse(row.data) : null;
-
- if (!outline) {
- return "暂无资产数据";
- }
-
- // 提取资源名称和描述(与generateImageTool保持一致的字段名)
- const resources = outline
- ? (["characters", "props", "scenes"] as const).flatMap(
- (k) => outline[k]?.map((i: any) => ({ name: i.name, description: i.description })) ?? [],
- )
- : [];
-
- if (resources.length === 0) {
- return "暂无资产数据";
- }
-
- // 分类提取资源并格式化
- const characters = outline?.characters?.map((item: any) => `- ${item.name}${item.description ? `:${item.description}` : ""}`) ?? [];
- const props = outline?.props?.map((item: any) => `- ${item.name}${item.description ? `:${item.description}` : ""}`) ?? [];
- const scenes = outline?.scenes?.map((item: any) => `- ${item.name}${item.description ? `:${item.description}` : ""}`) ?? [];
-
- const sections = [
- characters.length ? `【角色】\n${characters.join("\n")}` : "",
- props.length ? `【道具】\n${props.join("\n")}` : "",
- scenes.length ? `【场景】\n${scenes.join("\n")}` : "",
- ].filter(Boolean);
-
- if (sections.length === 0) {
- return "暂无资产数据";
- }
-
- return `<资产列表>
-${sections.join("\n\n")}
-资产列表>
-
-⚠️ 重要规则:
-1. 必须原封不动地使用上述资产名称,禁止使用近义词、缩写或任何变体
-2. 禁止在资产名称前后添加修饰词
-3. 禁止捏造资产列表中不存在的角色、场景、道具`;
- },
- {
- name: "getAssets",
- description: "获取资产列表(角色、道具、场景),包含名称和详细介绍。生成片段和分镜时必须先调用此工具获取资产信息,确保名称一致性",
- schema: z.object({}),
- verboseParsingErrors: true,
- },
- );
-
- // ==================== 片段和分镜工具 ====================
-
- /**
- * 获取当前存储的片段数据(供 shotAgent 调用)
- */
- getSegments = tool(
- async () => {
- this.log("获取片段数据", `共 ${this.segments.length} 个片段`);
- if (this.segments.length === 0) {
- return "暂无片段数据,请先调用 segmentAgent 生成片段";
- }
- return JSON.stringify(this.segments, null, 2);
- },
- {
- name: "getSegments",
- description: "获取当前已生成的片段数据,用于生成分镜",
- schema: z.object({}),
- verboseParsingErrors: true,
- },
- );
-
- /**
- * 更新/存储片段数据(供 segmentAgent 调用)
- */
- updateSegments = tool(
- async ({ segments }: { segments: Segment[] }) => {
- this.log("更新片段数据", `共 ${segments.length} 个片段`);
- this.segments = segments;
- this.emit("segmentsUpdated", this.segments);
- return `成功存储 ${segments.length} 个片段`;
- },
- {
- name: "updateSegments",
- description: "存储生成的片段数据,segmentAgent 在生成片段后必须调用此工具保存结果",
- schema: z.object({
- segments: z
- .array(
- z.object({
- index: z.number().describe("片段序号"),
- description: z.string().describe("片段描述"),
- emotion: z.string().optional().describe("情绪氛围"),
- action: z.string().optional().describe("主要动作"),
- }),
- )
- .describe("片段数组"),
- }),
- verboseParsingErrors: true,
- },
- );
-
- /**
- * 添加分镜(供 shotAgent 调用)
- */
- addShots = tool(
- async ({ shots }: { shots: Array<{ segmentIndex: number; prompts: string[] }> }) => {
- const added: { id: number; segmentIndex: number }[] = [];
- const skipped: number[] = [];
-
- for (const item of shots) {
- const exists = this.shots.some((f) => f.segmentId === item.segmentIndex);
- if (exists) {
- skipped.push(item.segmentIndex);
- continue;
- }
- // 分配独立的分镜ID
- this.shotIdCounter++;
- const shotId = this.shotIdCounter;
- this.shots.push({
- id: shotId,
- segmentId: item.segmentIndex,
- title: `分镜 ${shotId}`,
- x: 0,
- y: 0,
- cells: item.prompts.map((prompt) => ({ id: u.uuid(), prompt })),
- });
- added.push({ id: shotId, segmentIndex: item.segmentIndex });
- }
-
- const addedInfo = added.map((a) => `分镜${a.id}(片段${a.segmentIndex})`).join(", ");
- this.log("添加分镜", `新增: [${addedInfo}], 跳过片段: [${skipped.join(", ")}]`);
- this.emit("shotsUpdated", this.shots);
-
- if (skipped.length) {
- return `已添加${addedInfo};片段 ${skipped.join(", ")} 已存在分镜被跳过。当前共 ${this.shots.length} 个分镜`;
- }
- return `已添加${addedInfo}。当前共 ${this.shots.length} 个分镜`;
- },
- {
- name: "addShots",
- description: "添加新的分镜。每个分镜有独立ID,包含多个镜头(每个镜头对应一个提示词)。如果片段已存在分镜会跳过",
- schema: z.object({
- shots: z
- .array(
- z.object({
- segmentIndex: z.number().describe("对应的片段序号"),
- prompts: z.array(z.string()).describe("镜头提示词数组,每个提示词对应一个镜头(中文)"),
- }),
- )
- .describe("要添加的分镜数组"),
- }),
- verboseParsingErrors: true,
- },
- );
-
- /**
- * 更新指定分镜(供 shotAgent 调用)
- * 保留原有 cells 的 id 和 src 字段,只更新 prompt
- */
- updateShots = tool(
- async ({ shotId, prompts }: { shotId: number; prompts: string[] }) => {
- const existingIndex = this.shots.findIndex((item) => item.id === shotId);
-
- if (existingIndex === -1) {
- return `分镜 ${shotId} 不存在,请检查分镜ID是否正确`;
- }
-
- const existingCells = this.shots[existingIndex].cells;
-
- // 更新 cells,保留原有的 id 和 src 字段
- this.shots[existingIndex].cells = prompts.map((prompt, i) => {
- const existingCell = existingCells[i];
- if (existingCell) {
- // 保留原有 cell 的 id 和 src,只更新 prompt
- return { ...existingCell, prompt };
- } else {
- // 新增的 cell
- return { id: u.uuid(), prompt };
- }
- });
-
- this.log("更新分镜", `分镜 ${shotId}`);
- this.emit("shotsUpdated", this.shots);
-
- return `已更新分镜 ${shotId}`;
- },
- {
- name: "updateShots",
- description: "更新指定分镜的镜头提示词。通过分镜ID指定要修改的分镜",
- schema: z.object({
- shotId: z.number().describe("要更新的分镜ID"),
- prompts: z.array(z.string()).describe("新的镜头提示词数组,每个提示词对应一个镜头"),
- }),
- verboseParsingErrors: true,
- },
- );
-
- /**
- * 删除指定分镜(供 shotAgent 调用)
- */
- deleteShots = tool(
- async ({ shotIds }: { shotIds: number[] }) => {
- const deleted: number[] = [];
- const notFound: number[] = [];
-
- for (const shotId of shotIds) {
- const idx = this.shots.findIndex((item) => item.id === shotId);
- if (idx === -1) {
- notFound.push(shotId);
- } else {
- this.shots.splice(idx, 1);
- deleted.push(shotId);
- }
- }
-
- this.log("删除分镜", `删除: [分镜${deleted.join(", 分镜")}], 未找到: [分镜${notFound.join(", 分镜")}]`);
- this.emit("shotsUpdated", this.shots);
-
- if (notFound.length) {
- return `已删除分镜 ${deleted.join(", ")};分镜 ${notFound.join(", ")} 不存在。当前共 ${this.shots.length} 个分镜`;
- }
- return `已删除分镜 ${deleted.join(", ")}。当前共 ${this.shots.length} 个分镜`;
- },
- {
- name: "deleteShots",
- description: "删除指定的分镜。通过分镜ID指定要删除的分镜",
- schema: z.object({
- shotIds: z.array(z.number()).describe("要删除的分镜ID数组"),
- }),
- verboseParsingErrors: true,
- },
- );
-
- /**
- * 生成分镜图(异步执行,使用 nanoBanana)
- */
- generateShotImage = tool(
- async ({ shotIds }: { shotIds: number[] }) => {
- const toGenerate: number[] = [];
- const alreadyGenerating: number[] = [];
- const notFound: number[] = [];
-
- for (const shotId of shotIds) {
- const shot = this.shots.find((f) => f.id === shotId);
- if (!shot) {
- notFound.push(shotId);
- continue;
- }
- if (this.generatingShots.has(shotId)) {
- alreadyGenerating.push(shotId);
- continue;
- }
- toGenerate.push(shotId);
- }
-
- if (toGenerate.length === 0) {
- if (notFound.length) {
- return `分镜 ${notFound.join(", ")} 不存在,请检查分镜ID是否正确`;
- }
- if (alreadyGenerating.length) {
- return `分镜 ${alreadyGenerating.join(", ")} 正在生成中,请稍候`;
- }
- return "没有需要生成的分镜";
- }
-
- // 标记为正在生成
- for (const id of toGenerate) {
- this.generatingShots.add(id);
- }
-
- // 通知前端开始生成
- this.emit("shotImageGenerateStart", { shotIds: toGenerate });
- this.log("开始生成分镜图", `分镜: [${toGenerate.join(", ")}]`);
-
- // 异步执行图片生成(不阻塞 Agent 流程)
- this.executeShotImageGeneration(toGenerate).catch((err) => {
- this.log("分镜图生成错误", err.message);
- this.emit("shotImageGenerateError", { shotIds: toGenerate, error: err.message });
- });
-
- let result = `已开始为分镜 ${toGenerate.join(", ")} 生成分镜图,生成过程在后台进行`;
- if (alreadyGenerating.length) {
- result += `;分镜 ${alreadyGenerating.join(", ")} 正在生成中`;
- }
- if (notFound.length) {
- result += `;分镜 ${notFound.join(", ")} 不存在`;
- }
- return result;
- },
- {
- name: "generateShotImage",
- description:
- "为指定分镜生成分镜图。每个分镜会根据其所有提示词生成一张完整宫格图,然后自动分割为单格图片。通过分镜ID指定,不需要指定具体格子,整个分镜是一个完整的生成单元",
- schema: z.object({
- shotIds: z.array(z.number()).describe("要生成分镜图的分镜ID数组"),
- }),
- verboseParsingErrors: true,
- },
- );
-
- /**
- * 执行分镜图生成的具体逻辑(异步并发)
- * 每个分镜包含多个镜头,所有镜头的提示词合并生成一张宫格图,再分割为单张镜头图片
- */
- async executeShotImageGeneration(shotIds: number[]): Promise {
- await Promise.all(shotIds.map((shotId) => this.generateSingleShotImage(shotId)));
- }
-
- /**
- * 生成单个分镜的图片
- */
- private async generateSingleShotImage(shotId: number): Promise {
- try {
- const shot = this.shots.find((f) => f.id === shotId);
- if (!shot) return;
-
- // 提取所有镜头的有效提示词
- const prompts: string[] = shot.cells.map((c) => c.prompt).filter((p): p is string => Boolean(p));
-
- if (prompts.length === 0) {
- this.log("跳过分镜图生成", `分镜 ${shotId} 没有有效的镜头提示词`);
- this.generatingShots.delete(shotId);
- return;
- }
-
- // 通知前端正在生成该分镜
- this.emit("shotImageGenerateProgress", { shotId, status: "generating", message: "正在调用 AI 生成宫格图片" });
-
- // 根据所有镜头提示词生成宫格图片
- const gridImage = await generateImageTool(
- prompts.map((p) => ({ prompt: p })),
- this.scriptId,
- this.projectId,
- );
-
- // 通知前端正在分割图片
- this.emit("shotImageGenerateProgress", { shotId, status: "splitting", message: "正在分割宫格图片为单张镜头图" });
-
- // 分割宫格图片为单张镜头图片
- const imageBuffers = await imageSplitting(gridImage, prompts.length);
-
- // 通知前端正在保存图片
- this.emit("shotImageGenerateProgress", { shotId, status: "saving", message: `正在保存 ${imageBuffers.length} 张镜头图片` });
-
- // 保存分割后的镜头图片到 OSS,并获取文件路径
- const timestamp = Date.now();
- const imagePaths: string[] = [];
-
- for (let i = 0; i < imageBuffers.length; i++) {
- const fileName = `${this.projectId}/chat/${this.scriptId}/storyboard/shot_${shotId}_take_${i}_${timestamp}.png`;
- await u.oss.writeFile(fileName, imageBuffers[i]);
- const imageUrl = await u.oss.getFileUrl(fileName);
- imagePaths.push(imageUrl);
-
- // 每保存一张镜头图片通知进度
- this.emit("shotImageGenerateProgress", {
- shotId,
- status: "saving",
- message: `已保存 ${i + 1}/${imageBuffers.length} 张镜头图片`,
- progress: Math.round(((i + 1) / imageBuffers.length) * 100),
- });
- }
-
- // 更新每个镜头的 src 字段
- shot.cells = shot.cells.map((cell, i) => ({
- id: u.uuid(),
- ...cell,
- src: imagePaths[i] || cell.src,
- }));
-
- // 生成完成后更新状态
- this.generatingShots.delete(shotId);
- this.emit("shotImageGenerateComplete", { shotId, shot, imagePaths });
- this.emit("shotsUpdated", this.shots);
- this.log("分镜图生成完成", `分镜 ${shotId},共 ${imagePaths.length} 张镜头图片`);
- } catch (err: any) {
- this.generatingShots.delete(shotId);
- this.emit("shotImageGenerateError", { shotId, error: err.message });
- this.log("分镜图生成失败", `分镜 ${shotId}: ${err.message}`);
- }
- }
-
- // ==================== 公共访问器 ====================
-
- /**
- * 获取当前片段数据
- */
- getSegmentsData(): Segment[] {
- return this.segments;
- }
-
- /**
- * 获取当前分镜数据
- */
- getShotsData(): Shot[] {
- return this.shots;
- }
-
- // ==================== 上下文构建 ====================
-
- private async buildEnvironmentContext(): Promise {
- const projectInfo = await u.db("t_project").where({ id: this.projectId }).first();
-
- const row = await u.db("t_outline").where({ id: this.scriptId, projectId: this.projectId }).first();
- const outline: any | null = row?.data ? JSON.parse(row.data) : null;
-
- // 分类提取资源名称
- const characters = outline?.characters?.map((i: any) => i.name) ?? [];
- const props = outline?.props?.map((i: any) => i.name) ?? [];
- const scenes = outline?.scenes?.map((i: any) => i.name) ?? [];
-
- const assetList =
- [
- characters.length ? `【角色】${characters.join("、")}` : "",
- props.length ? `【道具】${props.join("、")}` : "",
- scenes.length ? `【场景】${scenes.join("、")}` : "",
- ]
- .filter(Boolean)
- .join("\n") || "无";
-
- return `<环境信息>
-项目ID: ${this.projectId}
-系统时间: ${new Date().toLocaleString()}
-
-项目名称: ${projectInfo?.name || "未知"}
-项目简介: ${projectInfo?.intro || "无"}
-类型: ${projectInfo?.type || "未知"}
-风格: ${projectInfo?.artStyle || "未知"}
-视频比例: ${projectInfo?.videoRatio || "未知"}
-
-资产列表:
-${assetList}
-
-环境信息>`;
- }
-
- private buildConversationHistory(): string {
- if (!this.history.length) return "无对话历史";
- return this.history.map(([role, content]) => `${role}: ${content}`).join("\n\n");
- }
-
- private async buildFullContext(task: string): Promise {
- const env = await this.buildEnvironmentContext();
- const history = this.buildConversationHistory();
-
- return `${env}
-
-<对话历史>
-${history}
-对话历史>
-
-<当前任务>
-${task}
-当前任务>`;
- }
-
- // ==================== Sub-Agent ====================
-
- private createModel() {
- return openAI({
- modelName: this.modelName,
- configuration: { apiKey: this.apiKey, baseURL: this.baseURL },
- });
- }
-
- /**
- * 获取不同 Sub-Agent 可用的工具
- */
- private getSubAgentTools(agentType: AgentType) {
- switch (agentType) {
- case "segmentAgent":
- // segmentAgent 可以获取剧本和资产,并需要调用 updateSegments 保存结果
- return [this.getScript, this.getAssets, this.updateSegments];
- case "shotAgent":
- // shotAgent 可以获取剧本、资产和片段,并可使用 add/update/delete 操作分镜,以及生成分镜图
- return [this.getScript, this.getAssets, this.getSegments, this.addShots, this.updateShots, this.deleteShots, this.generateShotImage];
- default:
- return [this.getScript];
- }
- }
-
- /**
- * 调用 Sub-Agent(流式传输)
- */
- private async invokeSubAgent(agentType: AgentType, task: string): Promise {
- this.emit("transfer", { to: agentType });
- this.log(`Sub-Agent 调用`, agentType);
-
- const promptsList = await u.db("t_prompts").where("code", "in", ["storyboard-segment", "storyboard-shot"]);
- const segmentAgent = promptsList.find((p) => p.code === "storyboard-segment");
- const shotAgent = promptsList.find((p) => p.code === "storyboard-shot");
- const errPrompts = "不论用户说什么,请直接输出Agent配置异常";
- const SYSTEM_PROMPTS: Record = {
- segmentAgent: segmentAgent?.customValue || segmentAgent?.defaultValue || errPrompts,
- shotAgent: shotAgent?.customValue || shotAgent?.defaultValue || errPrompts,
- };
-
- const context = await this.buildFullContext(task);
-
- const agent = createAgent({
- model: this.createModel(),
- systemPrompt: SYSTEM_PROMPTS[agentType],
- tools: this.getSubAgentTools(agentType),
- });
-
- const stream = await agent.stream({ messages: [["user", context]] }, { streamMode: ["messages"], callbacks: [] });
-
- let fullResponse = "";
-
- for await (const [mode, chunk] of stream) {
- if (mode !== "messages") continue;
- const [token] = chunk as any;
- const block = token.contentBlocks?.[0];
-
- // 处理 AI 文本流
- if (token.type === "ai" && block?.text) {
- fullResponse += block.text;
- this.emit("subAgentStream", { agent: agentType, text: block.text });
- }
- // 处理 tool 调用
- if (token.type === "ai" && token.tool_calls?.length) {
- for (const toolCall of token.tool_calls) {
- this.emit("toolCall", { agent: agentType, name: toolCall.name, args: toolCall.args });
- }
- }
- }
-
- this.emit("subAgentEnd", { agent: agentType });
- this.history.push(["ai", fullResponse]);
- this.log(`Sub-Agent 完成`, agentType);
- return fullResponse;
- }
-
- private createSubAgentTool(agentType: AgentType, description: string) {
- return tool(async ({ taskDescription }) => this.invokeSubAgent(agentType, taskDescription), {
- name: agentType,
- description,
- schema: z.object({
- taskDescription: z.string().describe("具体的任务描述,包含章节范围、修改要求等详细信息"),
- }),
- });
- }
-
- // ==================== 主入口 ====================
-
- private getAllTools() {
- return [
- this.createSubAgentTool(
- "segmentAgent",
- "调用片段师。负责根据剧本生成片段,会自行调用 getScript 获取剧本内容,并调用 updateSegments 保存片段结果。",
- ),
- this.createSubAgentTool(
- "shotAgent",
- "调用分镜师。负责根据片段生成分镜提示词,会自行调用 getSegments 获取片段数据,并调用 addShots/updateShots 保存分镜结果。",
- ),
- // this.createSubAgentTool("director", "调用导演。负责审核故事线和大纲,会自行调用 updateOutline 或 saveStoryline 进行修改。"),
- this.getScript,
- this.getSegments,
- this.generateShotImage,
- ...this.getSubAgentTools("segmentAgent"),
- ...this.getSubAgentTools("shotAgent"),
- ];
- }
-
- async call(msg: string): Promise {
- console.log("模型名称:", this.modelName);
- this.history.push(["user", msg]);
-
- const envContext = await this.buildEnvironmentContext();
-
- const prompts = await u.db("t_prompts").where("code", "storyboard-main").first();
-
- const mainPrompts = prompts?.customValue || prompts?.defaultValue || "不论用户说什么,请直接输出Agent配置异常";
-
- const mainAgent = createAgent({
- model: this.createModel(),
- tools: this.getAllTools(),
- systemPrompt: `${envContext}\n${mainPrompts}`,
- });
- const stream = await mainAgent.stream({ messages: this.history }, { streamMode: ["messages"], callbacks: [] });
-
- let fullResponse = "";
-
- for await (const [mode, chunk] of stream) {
- if (mode !== "messages") continue;
- const [token] = chunk as any;
- const block = token.contentBlocks?.[0];
- // 处理 AI 文本流
- if (token.type === "ai" && block?.text) {
- fullResponse += block.text;
- this.emit("data", block.text);
- }
-
- // 处理 tool 调用
- if (token.type === "ai" && token.tool_calls?.length) {
- for (const toolCall of token.tool_calls) {
- this.emit("toolCall", { agent: "main", name: toolCall.name, args: toolCall.args });
- }
- }
- }
-
- this.history.push(["assistant", fullResponse]);
- this.emit("response", fullResponse);
-
- return fullResponse;
- }
-}
diff --git a/data/assets/ending.mp4 b/data/assets/ending.mp4
new file mode 100644
index 0000000..bd7f838
Binary files /dev/null and b/data/assets/ending.mp4 differ
diff --git a/data/models/all-MiniLM-L6-v2/config.json b/data/models/all-MiniLM-L6-v2/config.json
new file mode 100644
index 0000000..363167c
--- /dev/null
+++ b/data/models/all-MiniLM-L6-v2/config.json
@@ -0,0 +1,25 @@
+{
+ "_name_or_path": "sentence-transformers/all-MiniLM-L6-v2",
+ "architectures": [
+ "BertModel"
+ ],
+ "attention_probs_dropout_prob": 0.1,
+ "classifier_dropout": null,
+ "gradient_checkpointing": false,
+ "hidden_act": "gelu",
+ "hidden_dropout_prob": 0.1,
+ "hidden_size": 384,
+ "initializer_range": 0.02,
+ "intermediate_size": 1536,
+ "layer_norm_eps": 1e-12,
+ "max_position_embeddings": 512,
+ "model_type": "bert",
+ "num_attention_heads": 12,
+ "num_hidden_layers": 6,
+ "pad_token_id": 0,
+ "position_embedding_type": "absolute",
+ "transformers_version": "4.29.2",
+ "type_vocab_size": 2,
+ "use_cache": true,
+ "vocab_size": 30522
+}
\ No newline at end of file
diff --git a/data/models/all-MiniLM-L6-v2/onnx/model_fp16.onnx b/data/models/all-MiniLM-L6-v2/onnx/model_fp16.onnx
new file mode 100644
index 0000000..cba784f
Binary files /dev/null and b/data/models/all-MiniLM-L6-v2/onnx/model_fp16.onnx differ
diff --git a/data/models/all-MiniLM-L6-v2/special_tokens_map.json b/data/models/all-MiniLM-L6-v2/special_tokens_map.json
new file mode 100644
index 0000000..a8b3208
--- /dev/null
+++ b/data/models/all-MiniLM-L6-v2/special_tokens_map.json
@@ -0,0 +1,7 @@
+{
+ "cls_token": "[CLS]",
+ "mask_token": "[MASK]",
+ "pad_token": "[PAD]",
+ "sep_token": "[SEP]",
+ "unk_token": "[UNK]"
+}
diff --git a/data/models/all-MiniLM-L6-v2/tokenizer.json b/data/models/all-MiniLM-L6-v2/tokenizer.json
new file mode 100644
index 0000000..c17ed52
--- /dev/null
+++ b/data/models/all-MiniLM-L6-v2/tokenizer.json
@@ -0,0 +1,30686 @@
+{
+ "version": "1.0",
+ "truncation": {
+ "direction": "Right",
+ "max_length": 128,
+ "strategy": "LongestFirst",
+ "stride": 0
+ },
+ "padding": {
+ "strategy": {
+ "Fixed": 128
+ },
+ "direction": "Right",
+ "pad_to_multiple_of": null,
+ "pad_id": 0,
+ "pad_type_id": 0,
+ "pad_token": "[PAD]"
+ },
+ "added_tokens": [
+ {
+ "id": 0,
+ "content": "[PAD]",
+ "single_word": false,
+ "lstrip": false,
+ "rstrip": false,
+ "normalized": false,
+ "special": true
+ },
+ {
+ "id": 100,
+ "content": "[UNK]",
+ "single_word": false,
+ "lstrip": false,
+ "rstrip": false,
+ "normalized": false,
+ "special": true
+ },
+ {
+ "id": 101,
+ "content": "[CLS]",
+ "single_word": false,
+ "lstrip": false,
+ "rstrip": false,
+ "normalized": false,
+ "special": true
+ },
+ {
+ "id": 102,
+ "content": "[SEP]",
+ "single_word": false,
+ "lstrip": false,
+ "rstrip": false,
+ "normalized": false,
+ "special": true
+ },
+ {
+ "id": 103,
+ "content": "[MASK]",
+ "single_word": false,
+ "lstrip": false,
+ "rstrip": false,
+ "normalized": false,
+ "special": true
+ }
+ ],
+ "normalizer": {
+ "type": "BertNormalizer",
+ "clean_text": true,
+ "handle_chinese_chars": true,
+ "strip_accents": null,
+ "lowercase": true
+ },
+ "pre_tokenizer": {
+ "type": "BertPreTokenizer"
+ },
+ "post_processor": {
+ "type": "TemplateProcessing",
+ "single": [
+ {
+ "SpecialToken": {
+ "id": "[CLS]",
+ "type_id": 0
+ }
+ },
+ {
+ "Sequence": {
+ "id": "A",
+ "type_id": 0
+ }
+ },
+ {
+ "SpecialToken": {
+ "id": "[SEP]",
+ "type_id": 0
+ }
+ }
+ ],
+ "pair": [
+ {
+ "SpecialToken": {
+ "id": "[CLS]",
+ "type_id": 0
+ }
+ },
+ {
+ "Sequence": {
+ "id": "A",
+ "type_id": 0
+ }
+ },
+ {
+ "SpecialToken": {
+ "id": "[SEP]",
+ "type_id": 0
+ }
+ },
+ {
+ "Sequence": {
+ "id": "B",
+ "type_id": 1
+ }
+ },
+ {
+ "SpecialToken": {
+ "id": "[SEP]",
+ "type_id": 1
+ }
+ }
+ ],
+ "special_tokens": {
+ "[CLS]": {
+ "id": "[CLS]",
+ "ids": [
+ 101
+ ],
+ "tokens": [
+ "[CLS]"
+ ]
+ },
+ "[SEP]": {
+ "id": "[SEP]",
+ "ids": [
+ 102
+ ],
+ "tokens": [
+ "[SEP]"
+ ]
+ }
+ }
+ },
+ "decoder": {
+ "type": "WordPiece",
+ "prefix": "##",
+ "cleanup": true
+ },
+ "model": {
+ "type": "WordPiece",
+ "unk_token": "[UNK]",
+ "continuing_subword_prefix": "##",
+ "max_input_chars_per_word": 100,
+ "vocab": {
+ "[PAD]": 0,
+ "[unused0]": 1,
+ "[unused1]": 2,
+ "[unused2]": 3,
+ "[unused3]": 4,
+ "[unused4]": 5,
+ "[unused5]": 6,
+ "[unused6]": 7,
+ "[unused7]": 8,
+ "[unused8]": 9,
+ "[unused9]": 10,
+ "[unused10]": 11,
+ "[unused11]": 12,
+ "[unused12]": 13,
+ "[unused13]": 14,
+ "[unused14]": 15,
+ "[unused15]": 16,
+ "[unused16]": 17,
+ "[unused17]": 18,
+ "[unused18]": 19,
+ "[unused19]": 20,
+ "[unused20]": 21,
+ "[unused21]": 22,
+ "[unused22]": 23,
+ "[unused23]": 24,
+ "[unused24]": 25,
+ "[unused25]": 26,
+ "[unused26]": 27,
+ "[unused27]": 28,
+ "[unused28]": 29,
+ "[unused29]": 30,
+ "[unused30]": 31,
+ "[unused31]": 32,
+ "[unused32]": 33,
+ "[unused33]": 34,
+ "[unused34]": 35,
+ "[unused35]": 36,
+ "[unused36]": 37,
+ "[unused37]": 38,
+ "[unused38]": 39,
+ "[unused39]": 40,
+ "[unused40]": 41,
+ "[unused41]": 42,
+ "[unused42]": 43,
+ "[unused43]": 44,
+ "[unused44]": 45,
+ "[unused45]": 46,
+ "[unused46]": 47,
+ "[unused47]": 48,
+ "[unused48]": 49,
+ "[unused49]": 50,
+ "[unused50]": 51,
+ "[unused51]": 52,
+ "[unused52]": 53,
+ "[unused53]": 54,
+ "[unused54]": 55,
+ "[unused55]": 56,
+ "[unused56]": 57,
+ "[unused57]": 58,
+ "[unused58]": 59,
+ "[unused59]": 60,
+ "[unused60]": 61,
+ "[unused61]": 62,
+ "[unused62]": 63,
+ "[unused63]": 64,
+ "[unused64]": 65,
+ "[unused65]": 66,
+ "[unused66]": 67,
+ "[unused67]": 68,
+ "[unused68]": 69,
+ "[unused69]": 70,
+ "[unused70]": 71,
+ "[unused71]": 72,
+ "[unused72]": 73,
+ "[unused73]": 74,
+ "[unused74]": 75,
+ "[unused75]": 76,
+ "[unused76]": 77,
+ "[unused77]": 78,
+ "[unused78]": 79,
+ "[unused79]": 80,
+ "[unused80]": 81,
+ "[unused81]": 82,
+ "[unused82]": 83,
+ "[unused83]": 84,
+ "[unused84]": 85,
+ "[unused85]": 86,
+ "[unused86]": 87,
+ "[unused87]": 88,
+ "[unused88]": 89,
+ "[unused89]": 90,
+ "[unused90]": 91,
+ "[unused91]": 92,
+ "[unused92]": 93,
+ "[unused93]": 94,
+ "[unused94]": 95,
+ "[unused95]": 96,
+ "[unused96]": 97,
+ "[unused97]": 98,
+ "[unused98]": 99,
+ "[UNK]": 100,
+ "[CLS]": 101,
+ "[SEP]": 102,
+ "[MASK]": 103,
+ "[unused99]": 104,
+ "[unused100]": 105,
+ "[unused101]": 106,
+ "[unused102]": 107,
+ "[unused103]": 108,
+ "[unused104]": 109,
+ "[unused105]": 110,
+ "[unused106]": 111,
+ "[unused107]": 112,
+ "[unused108]": 113,
+ "[unused109]": 114,
+ "[unused110]": 115,
+ "[unused111]": 116,
+ "[unused112]": 117,
+ "[unused113]": 118,
+ "[unused114]": 119,
+ "[unused115]": 120,
+ "[unused116]": 121,
+ "[unused117]": 122,
+ "[unused118]": 123,
+ "[unused119]": 124,
+ "[unused120]": 125,
+ "[unused121]": 126,
+ "[unused122]": 127,
+ "[unused123]": 128,
+ "[unused124]": 129,
+ "[unused125]": 130,
+ "[unused126]": 131,
+ "[unused127]": 132,
+ "[unused128]": 133,
+ "[unused129]": 134,
+ "[unused130]": 135,
+ "[unused131]": 136,
+ "[unused132]": 137,
+ "[unused133]": 138,
+ "[unused134]": 139,
+ "[unused135]": 140,
+ "[unused136]": 141,
+ "[unused137]": 142,
+ "[unused138]": 143,
+ "[unused139]": 144,
+ "[unused140]": 145,
+ "[unused141]": 146,
+ "[unused142]": 147,
+ "[unused143]": 148,
+ "[unused144]": 149,
+ "[unused145]": 150,
+ "[unused146]": 151,
+ "[unused147]": 152,
+ "[unused148]": 153,
+ "[unused149]": 154,
+ "[unused150]": 155,
+ "[unused151]": 156,
+ "[unused152]": 157,
+ "[unused153]": 158,
+ "[unused154]": 159,
+ "[unused155]": 160,
+ "[unused156]": 161,
+ "[unused157]": 162,
+ "[unused158]": 163,
+ "[unused159]": 164,
+ "[unused160]": 165,
+ "[unused161]": 166,
+ "[unused162]": 167,
+ "[unused163]": 168,
+ "[unused164]": 169,
+ "[unused165]": 170,
+ "[unused166]": 171,
+ "[unused167]": 172,
+ "[unused168]": 173,
+ "[unused169]": 174,
+ "[unused170]": 175,
+ "[unused171]": 176,
+ "[unused172]": 177,
+ "[unused173]": 178,
+ "[unused174]": 179,
+ "[unused175]": 180,
+ "[unused176]": 181,
+ "[unused177]": 182,
+ "[unused178]": 183,
+ "[unused179]": 184,
+ "[unused180]": 185,
+ "[unused181]": 186,
+ "[unused182]": 187,
+ "[unused183]": 188,
+ "[unused184]": 189,
+ "[unused185]": 190,
+ "[unused186]": 191,
+ "[unused187]": 192,
+ "[unused188]": 193,
+ "[unused189]": 194,
+ "[unused190]": 195,
+ "[unused191]": 196,
+ "[unused192]": 197,
+ "[unused193]": 198,
+ "[unused194]": 199,
+ "[unused195]": 200,
+ "[unused196]": 201,
+ "[unused197]": 202,
+ "[unused198]": 203,
+ "[unused199]": 204,
+ "[unused200]": 205,
+ "[unused201]": 206,
+ "[unused202]": 207,
+ "[unused203]": 208,
+ "[unused204]": 209,
+ "[unused205]": 210,
+ "[unused206]": 211,
+ "[unused207]": 212,
+ "[unused208]": 213,
+ "[unused209]": 214,
+ "[unused210]": 215,
+ "[unused211]": 216,
+ "[unused212]": 217,
+ "[unused213]": 218,
+ "[unused214]": 219,
+ "[unused215]": 220,
+ "[unused216]": 221,
+ "[unused217]": 222,
+ "[unused218]": 223,
+ "[unused219]": 224,
+ "[unused220]": 225,
+ "[unused221]": 226,
+ "[unused222]": 227,
+ "[unused223]": 228,
+ "[unused224]": 229,
+ "[unused225]": 230,
+ "[unused226]": 231,
+ "[unused227]": 232,
+ "[unused228]": 233,
+ "[unused229]": 234,
+ "[unused230]": 235,
+ "[unused231]": 236,
+ "[unused232]": 237,
+ "[unused233]": 238,
+ "[unused234]": 239,
+ "[unused235]": 240,
+ "[unused236]": 241,
+ "[unused237]": 242,
+ "[unused238]": 243,
+ "[unused239]": 244,
+ "[unused240]": 245,
+ "[unused241]": 246,
+ "[unused242]": 247,
+ "[unused243]": 248,
+ "[unused244]": 249,
+ "[unused245]": 250,
+ "[unused246]": 251,
+ "[unused247]": 252,
+ "[unused248]": 253,
+ "[unused249]": 254,
+ "[unused250]": 255,
+ "[unused251]": 256,
+ "[unused252]": 257,
+ "[unused253]": 258,
+ "[unused254]": 259,
+ "[unused255]": 260,
+ "[unused256]": 261,
+ "[unused257]": 262,
+ "[unused258]": 263,
+ "[unused259]": 264,
+ "[unused260]": 265,
+ "[unused261]": 266,
+ "[unused262]": 267,
+ "[unused263]": 268,
+ "[unused264]": 269,
+ "[unused265]": 270,
+ "[unused266]": 271,
+ "[unused267]": 272,
+ "[unused268]": 273,
+ "[unused269]": 274,
+ "[unused270]": 275,
+ "[unused271]": 276,
+ "[unused272]": 277,
+ "[unused273]": 278,
+ "[unused274]": 279,
+ "[unused275]": 280,
+ "[unused276]": 281,
+ "[unused277]": 282,
+ "[unused278]": 283,
+ "[unused279]": 284,
+ "[unused280]": 285,
+ "[unused281]": 286,
+ "[unused282]": 287,
+ "[unused283]": 288,
+ "[unused284]": 289,
+ "[unused285]": 290,
+ "[unused286]": 291,
+ "[unused287]": 292,
+ "[unused288]": 293,
+ "[unused289]": 294,
+ "[unused290]": 295,
+ "[unused291]": 296,
+ "[unused292]": 297,
+ "[unused293]": 298,
+ "[unused294]": 299,
+ "[unused295]": 300,
+ "[unused296]": 301,
+ "[unused297]": 302,
+ "[unused298]": 303,
+ "[unused299]": 304,
+ "[unused300]": 305,
+ "[unused301]": 306,
+ "[unused302]": 307,
+ "[unused303]": 308,
+ "[unused304]": 309,
+ "[unused305]": 310,
+ "[unused306]": 311,
+ "[unused307]": 312,
+ "[unused308]": 313,
+ "[unused309]": 314,
+ "[unused310]": 315,
+ "[unused311]": 316,
+ "[unused312]": 317,
+ "[unused313]": 318,
+ "[unused314]": 319,
+ "[unused315]": 320,
+ "[unused316]": 321,
+ "[unused317]": 322,
+ "[unused318]": 323,
+ "[unused319]": 324,
+ "[unused320]": 325,
+ "[unused321]": 326,
+ "[unused322]": 327,
+ "[unused323]": 328,
+ "[unused324]": 329,
+ "[unused325]": 330,
+ "[unused326]": 331,
+ "[unused327]": 332,
+ "[unused328]": 333,
+ "[unused329]": 334,
+ "[unused330]": 335,
+ "[unused331]": 336,
+ "[unused332]": 337,
+ "[unused333]": 338,
+ "[unused334]": 339,
+ "[unused335]": 340,
+ "[unused336]": 341,
+ "[unused337]": 342,
+ "[unused338]": 343,
+ "[unused339]": 344,
+ "[unused340]": 345,
+ "[unused341]": 346,
+ "[unused342]": 347,
+ "[unused343]": 348,
+ "[unused344]": 349,
+ "[unused345]": 350,
+ "[unused346]": 351,
+ "[unused347]": 352,
+ "[unused348]": 353,
+ "[unused349]": 354,
+ "[unused350]": 355,
+ "[unused351]": 356,
+ "[unused352]": 357,
+ "[unused353]": 358,
+ "[unused354]": 359,
+ "[unused355]": 360,
+ "[unused356]": 361,
+ "[unused357]": 362,
+ "[unused358]": 363,
+ "[unused359]": 364,
+ "[unused360]": 365,
+ "[unused361]": 366,
+ "[unused362]": 367,
+ "[unused363]": 368,
+ "[unused364]": 369,
+ "[unused365]": 370,
+ "[unused366]": 371,
+ "[unused367]": 372,
+ "[unused368]": 373,
+ "[unused369]": 374,
+ "[unused370]": 375,
+ "[unused371]": 376,
+ "[unused372]": 377,
+ "[unused373]": 378,
+ "[unused374]": 379,
+ "[unused375]": 380,
+ "[unused376]": 381,
+ "[unused377]": 382,
+ "[unused378]": 383,
+ "[unused379]": 384,
+ "[unused380]": 385,
+ "[unused381]": 386,
+ "[unused382]": 387,
+ "[unused383]": 388,
+ "[unused384]": 389,
+ "[unused385]": 390,
+ "[unused386]": 391,
+ "[unused387]": 392,
+ "[unused388]": 393,
+ "[unused389]": 394,
+ "[unused390]": 395,
+ "[unused391]": 396,
+ "[unused392]": 397,
+ "[unused393]": 398,
+ "[unused394]": 399,
+ "[unused395]": 400,
+ "[unused396]": 401,
+ "[unused397]": 402,
+ "[unused398]": 403,
+ "[unused399]": 404,
+ "[unused400]": 405,
+ "[unused401]": 406,
+ "[unused402]": 407,
+ "[unused403]": 408,
+ "[unused404]": 409,
+ "[unused405]": 410,
+ "[unused406]": 411,
+ "[unused407]": 412,
+ "[unused408]": 413,
+ "[unused409]": 414,
+ "[unused410]": 415,
+ "[unused411]": 416,
+ "[unused412]": 417,
+ "[unused413]": 418,
+ "[unused414]": 419,
+ "[unused415]": 420,
+ "[unused416]": 421,
+ "[unused417]": 422,
+ "[unused418]": 423,
+ "[unused419]": 424,
+ "[unused420]": 425,
+ "[unused421]": 426,
+ "[unused422]": 427,
+ "[unused423]": 428,
+ "[unused424]": 429,
+ "[unused425]": 430,
+ "[unused426]": 431,
+ "[unused427]": 432,
+ "[unused428]": 433,
+ "[unused429]": 434,
+ "[unused430]": 435,
+ "[unused431]": 436,
+ "[unused432]": 437,
+ "[unused433]": 438,
+ "[unused434]": 439,
+ "[unused435]": 440,
+ "[unused436]": 441,
+ "[unused437]": 442,
+ "[unused438]": 443,
+ "[unused439]": 444,
+ "[unused440]": 445,
+ "[unused441]": 446,
+ "[unused442]": 447,
+ "[unused443]": 448,
+ "[unused444]": 449,
+ "[unused445]": 450,
+ "[unused446]": 451,
+ "[unused447]": 452,
+ "[unused448]": 453,
+ "[unused449]": 454,
+ "[unused450]": 455,
+ "[unused451]": 456,
+ "[unused452]": 457,
+ "[unused453]": 458,
+ "[unused454]": 459,
+ "[unused455]": 460,
+ "[unused456]": 461,
+ "[unused457]": 462,
+ "[unused458]": 463,
+ "[unused459]": 464,
+ "[unused460]": 465,
+ "[unused461]": 466,
+ "[unused462]": 467,
+ "[unused463]": 468,
+ "[unused464]": 469,
+ "[unused465]": 470,
+ "[unused466]": 471,
+ "[unused467]": 472,
+ "[unused468]": 473,
+ "[unused469]": 474,
+ "[unused470]": 475,
+ "[unused471]": 476,
+ "[unused472]": 477,
+ "[unused473]": 478,
+ "[unused474]": 479,
+ "[unused475]": 480,
+ "[unused476]": 481,
+ "[unused477]": 482,
+ "[unused478]": 483,
+ "[unused479]": 484,
+ "[unused480]": 485,
+ "[unused481]": 486,
+ "[unused482]": 487,
+ "[unused483]": 488,
+ "[unused484]": 489,
+ "[unused485]": 490,
+ "[unused486]": 491,
+ "[unused487]": 492,
+ "[unused488]": 493,
+ "[unused489]": 494,
+ "[unused490]": 495,
+ "[unused491]": 496,
+ "[unused492]": 497,
+ "[unused493]": 498,
+ "[unused494]": 499,
+ "[unused495]": 500,
+ "[unused496]": 501,
+ "[unused497]": 502,
+ "[unused498]": 503,
+ "[unused499]": 504,
+ "[unused500]": 505,
+ "[unused501]": 506,
+ "[unused502]": 507,
+ "[unused503]": 508,
+ "[unused504]": 509,
+ "[unused505]": 510,
+ "[unused506]": 511,
+ "[unused507]": 512,
+ "[unused508]": 513,
+ "[unused509]": 514,
+ "[unused510]": 515,
+ "[unused511]": 516,
+ "[unused512]": 517,
+ "[unused513]": 518,
+ "[unused514]": 519,
+ "[unused515]": 520,
+ "[unused516]": 521,
+ "[unused517]": 522,
+ "[unused518]": 523,
+ "[unused519]": 524,
+ "[unused520]": 525,
+ "[unused521]": 526,
+ "[unused522]": 527,
+ "[unused523]": 528,
+ "[unused524]": 529,
+ "[unused525]": 530,
+ "[unused526]": 531,
+ "[unused527]": 532,
+ "[unused528]": 533,
+ "[unused529]": 534,
+ "[unused530]": 535,
+ "[unused531]": 536,
+ "[unused532]": 537,
+ "[unused533]": 538,
+ "[unused534]": 539,
+ "[unused535]": 540,
+ "[unused536]": 541,
+ "[unused537]": 542,
+ "[unused538]": 543,
+ "[unused539]": 544,
+ "[unused540]": 545,
+ "[unused541]": 546,
+ "[unused542]": 547,
+ "[unused543]": 548,
+ "[unused544]": 549,
+ "[unused545]": 550,
+ "[unused546]": 551,
+ "[unused547]": 552,
+ "[unused548]": 553,
+ "[unused549]": 554,
+ "[unused550]": 555,
+ "[unused551]": 556,
+ "[unused552]": 557,
+ "[unused553]": 558,
+ "[unused554]": 559,
+ "[unused555]": 560,
+ "[unused556]": 561,
+ "[unused557]": 562,
+ "[unused558]": 563,
+ "[unused559]": 564,
+ "[unused560]": 565,
+ "[unused561]": 566,
+ "[unused562]": 567,
+ "[unused563]": 568,
+ "[unused564]": 569,
+ "[unused565]": 570,
+ "[unused566]": 571,
+ "[unused567]": 572,
+ "[unused568]": 573,
+ "[unused569]": 574,
+ "[unused570]": 575,
+ "[unused571]": 576,
+ "[unused572]": 577,
+ "[unused573]": 578,
+ "[unused574]": 579,
+ "[unused575]": 580,
+ "[unused576]": 581,
+ "[unused577]": 582,
+ "[unused578]": 583,
+ "[unused579]": 584,
+ "[unused580]": 585,
+ "[unused581]": 586,
+ "[unused582]": 587,
+ "[unused583]": 588,
+ "[unused584]": 589,
+ "[unused585]": 590,
+ "[unused586]": 591,
+ "[unused587]": 592,
+ "[unused588]": 593,
+ "[unused589]": 594,
+ "[unused590]": 595,
+ "[unused591]": 596,
+ "[unused592]": 597,
+ "[unused593]": 598,
+ "[unused594]": 599,
+ "[unused595]": 600,
+ "[unused596]": 601,
+ "[unused597]": 602,
+ "[unused598]": 603,
+ "[unused599]": 604,
+ "[unused600]": 605,
+ "[unused601]": 606,
+ "[unused602]": 607,
+ "[unused603]": 608,
+ "[unused604]": 609,
+ "[unused605]": 610,
+ "[unused606]": 611,
+ "[unused607]": 612,
+ "[unused608]": 613,
+ "[unused609]": 614,
+ "[unused610]": 615,
+ "[unused611]": 616,
+ "[unused612]": 617,
+ "[unused613]": 618,
+ "[unused614]": 619,
+ "[unused615]": 620,
+ "[unused616]": 621,
+ "[unused617]": 622,
+ "[unused618]": 623,
+ "[unused619]": 624,
+ "[unused620]": 625,
+ "[unused621]": 626,
+ "[unused622]": 627,
+ "[unused623]": 628,
+ "[unused624]": 629,
+ "[unused625]": 630,
+ "[unused626]": 631,
+ "[unused627]": 632,
+ "[unused628]": 633,
+ "[unused629]": 634,
+ "[unused630]": 635,
+ "[unused631]": 636,
+ "[unused632]": 637,
+ "[unused633]": 638,
+ "[unused634]": 639,
+ "[unused635]": 640,
+ "[unused636]": 641,
+ "[unused637]": 642,
+ "[unused638]": 643,
+ "[unused639]": 644,
+ "[unused640]": 645,
+ "[unused641]": 646,
+ "[unused642]": 647,
+ "[unused643]": 648,
+ "[unused644]": 649,
+ "[unused645]": 650,
+ "[unused646]": 651,
+ "[unused647]": 652,
+ "[unused648]": 653,
+ "[unused649]": 654,
+ "[unused650]": 655,
+ "[unused651]": 656,
+ "[unused652]": 657,
+ "[unused653]": 658,
+ "[unused654]": 659,
+ "[unused655]": 660,
+ "[unused656]": 661,
+ "[unused657]": 662,
+ "[unused658]": 663,
+ "[unused659]": 664,
+ "[unused660]": 665,
+ "[unused661]": 666,
+ "[unused662]": 667,
+ "[unused663]": 668,
+ "[unused664]": 669,
+ "[unused665]": 670,
+ "[unused666]": 671,
+ "[unused667]": 672,
+ "[unused668]": 673,
+ "[unused669]": 674,
+ "[unused670]": 675,
+ "[unused671]": 676,
+ "[unused672]": 677,
+ "[unused673]": 678,
+ "[unused674]": 679,
+ "[unused675]": 680,
+ "[unused676]": 681,
+ "[unused677]": 682,
+ "[unused678]": 683,
+ "[unused679]": 684,
+ "[unused680]": 685,
+ "[unused681]": 686,
+ "[unused682]": 687,
+ "[unused683]": 688,
+ "[unused684]": 689,
+ "[unused685]": 690,
+ "[unused686]": 691,
+ "[unused687]": 692,
+ "[unused688]": 693,
+ "[unused689]": 694,
+ "[unused690]": 695,
+ "[unused691]": 696,
+ "[unused692]": 697,
+ "[unused693]": 698,
+ "[unused694]": 699,
+ "[unused695]": 700,
+ "[unused696]": 701,
+ "[unused697]": 702,
+ "[unused698]": 703,
+ "[unused699]": 704,
+ "[unused700]": 705,
+ "[unused701]": 706,
+ "[unused702]": 707,
+ "[unused703]": 708,
+ "[unused704]": 709,
+ "[unused705]": 710,
+ "[unused706]": 711,
+ "[unused707]": 712,
+ "[unused708]": 713,
+ "[unused709]": 714,
+ "[unused710]": 715,
+ "[unused711]": 716,
+ "[unused712]": 717,
+ "[unused713]": 718,
+ "[unused714]": 719,
+ "[unused715]": 720,
+ "[unused716]": 721,
+ "[unused717]": 722,
+ "[unused718]": 723,
+ "[unused719]": 724,
+ "[unused720]": 725,
+ "[unused721]": 726,
+ "[unused722]": 727,
+ "[unused723]": 728,
+ "[unused724]": 729,
+ "[unused725]": 730,
+ "[unused726]": 731,
+ "[unused727]": 732,
+ "[unused728]": 733,
+ "[unused729]": 734,
+ "[unused730]": 735,
+ "[unused731]": 736,
+ "[unused732]": 737,
+ "[unused733]": 738,
+ "[unused734]": 739,
+ "[unused735]": 740,
+ "[unused736]": 741,
+ "[unused737]": 742,
+ "[unused738]": 743,
+ "[unused739]": 744,
+ "[unused740]": 745,
+ "[unused741]": 746,
+ "[unused742]": 747,
+ "[unused743]": 748,
+ "[unused744]": 749,
+ "[unused745]": 750,
+ "[unused746]": 751,
+ "[unused747]": 752,
+ "[unused748]": 753,
+ "[unused749]": 754,
+ "[unused750]": 755,
+ "[unused751]": 756,
+ "[unused752]": 757,
+ "[unused753]": 758,
+ "[unused754]": 759,
+ "[unused755]": 760,
+ "[unused756]": 761,
+ "[unused757]": 762,
+ "[unused758]": 763,
+ "[unused759]": 764,
+ "[unused760]": 765,
+ "[unused761]": 766,
+ "[unused762]": 767,
+ "[unused763]": 768,
+ "[unused764]": 769,
+ "[unused765]": 770,
+ "[unused766]": 771,
+ "[unused767]": 772,
+ "[unused768]": 773,
+ "[unused769]": 774,
+ "[unused770]": 775,
+ "[unused771]": 776,
+ "[unused772]": 777,
+ "[unused773]": 778,
+ "[unused774]": 779,
+ "[unused775]": 780,
+ "[unused776]": 781,
+ "[unused777]": 782,
+ "[unused778]": 783,
+ "[unused779]": 784,
+ "[unused780]": 785,
+ "[unused781]": 786,
+ "[unused782]": 787,
+ "[unused783]": 788,
+ "[unused784]": 789,
+ "[unused785]": 790,
+ "[unused786]": 791,
+ "[unused787]": 792,
+ "[unused788]": 793,
+ "[unused789]": 794,
+ "[unused790]": 795,
+ "[unused791]": 796,
+ "[unused792]": 797,
+ "[unused793]": 798,
+ "[unused794]": 799,
+ "[unused795]": 800,
+ "[unused796]": 801,
+ "[unused797]": 802,
+ "[unused798]": 803,
+ "[unused799]": 804,
+ "[unused800]": 805,
+ "[unused801]": 806,
+ "[unused802]": 807,
+ "[unused803]": 808,
+ "[unused804]": 809,
+ "[unused805]": 810,
+ "[unused806]": 811,
+ "[unused807]": 812,
+ "[unused808]": 813,
+ "[unused809]": 814,
+ "[unused810]": 815,
+ "[unused811]": 816,
+ "[unused812]": 817,
+ "[unused813]": 818,
+ "[unused814]": 819,
+ "[unused815]": 820,
+ "[unused816]": 821,
+ "[unused817]": 822,
+ "[unused818]": 823,
+ "[unused819]": 824,
+ "[unused820]": 825,
+ "[unused821]": 826,
+ "[unused822]": 827,
+ "[unused823]": 828,
+ "[unused824]": 829,
+ "[unused825]": 830,
+ "[unused826]": 831,
+ "[unused827]": 832,
+ "[unused828]": 833,
+ "[unused829]": 834,
+ "[unused830]": 835,
+ "[unused831]": 836,
+ "[unused832]": 837,
+ "[unused833]": 838,
+ "[unused834]": 839,
+ "[unused835]": 840,
+ "[unused836]": 841,
+ "[unused837]": 842,
+ "[unused838]": 843,
+ "[unused839]": 844,
+ "[unused840]": 845,
+ "[unused841]": 846,
+ "[unused842]": 847,
+ "[unused843]": 848,
+ "[unused844]": 849,
+ "[unused845]": 850,
+ "[unused846]": 851,
+ "[unused847]": 852,
+ "[unused848]": 853,
+ "[unused849]": 854,
+ "[unused850]": 855,
+ "[unused851]": 856,
+ "[unused852]": 857,
+ "[unused853]": 858,
+ "[unused854]": 859,
+ "[unused855]": 860,
+ "[unused856]": 861,
+ "[unused857]": 862,
+ "[unused858]": 863,
+ "[unused859]": 864,
+ "[unused860]": 865,
+ "[unused861]": 866,
+ "[unused862]": 867,
+ "[unused863]": 868,
+ "[unused864]": 869,
+ "[unused865]": 870,
+ "[unused866]": 871,
+ "[unused867]": 872,
+ "[unused868]": 873,
+ "[unused869]": 874,
+ "[unused870]": 875,
+ "[unused871]": 876,
+ "[unused872]": 877,
+ "[unused873]": 878,
+ "[unused874]": 879,
+ "[unused875]": 880,
+ "[unused876]": 881,
+ "[unused877]": 882,
+ "[unused878]": 883,
+ "[unused879]": 884,
+ "[unused880]": 885,
+ "[unused881]": 886,
+ "[unused882]": 887,
+ "[unused883]": 888,
+ "[unused884]": 889,
+ "[unused885]": 890,
+ "[unused886]": 891,
+ "[unused887]": 892,
+ "[unused888]": 893,
+ "[unused889]": 894,
+ "[unused890]": 895,
+ "[unused891]": 896,
+ "[unused892]": 897,
+ "[unused893]": 898,
+ "[unused894]": 899,
+ "[unused895]": 900,
+ "[unused896]": 901,
+ "[unused897]": 902,
+ "[unused898]": 903,
+ "[unused899]": 904,
+ "[unused900]": 905,
+ "[unused901]": 906,
+ "[unused902]": 907,
+ "[unused903]": 908,
+ "[unused904]": 909,
+ "[unused905]": 910,
+ "[unused906]": 911,
+ "[unused907]": 912,
+ "[unused908]": 913,
+ "[unused909]": 914,
+ "[unused910]": 915,
+ "[unused911]": 916,
+ "[unused912]": 917,
+ "[unused913]": 918,
+ "[unused914]": 919,
+ "[unused915]": 920,
+ "[unused916]": 921,
+ "[unused917]": 922,
+ "[unused918]": 923,
+ "[unused919]": 924,
+ "[unused920]": 925,
+ "[unused921]": 926,
+ "[unused922]": 927,
+ "[unused923]": 928,
+ "[unused924]": 929,
+ "[unused925]": 930,
+ "[unused926]": 931,
+ "[unused927]": 932,
+ "[unused928]": 933,
+ "[unused929]": 934,
+ "[unused930]": 935,
+ "[unused931]": 936,
+ "[unused932]": 937,
+ "[unused933]": 938,
+ "[unused934]": 939,
+ "[unused935]": 940,
+ "[unused936]": 941,
+ "[unused937]": 942,
+ "[unused938]": 943,
+ "[unused939]": 944,
+ "[unused940]": 945,
+ "[unused941]": 946,
+ "[unused942]": 947,
+ "[unused943]": 948,
+ "[unused944]": 949,
+ "[unused945]": 950,
+ "[unused946]": 951,
+ "[unused947]": 952,
+ "[unused948]": 953,
+ "[unused949]": 954,
+ "[unused950]": 955,
+ "[unused951]": 956,
+ "[unused952]": 957,
+ "[unused953]": 958,
+ "[unused954]": 959,
+ "[unused955]": 960,
+ "[unused956]": 961,
+ "[unused957]": 962,
+ "[unused958]": 963,
+ "[unused959]": 964,
+ "[unused960]": 965,
+ "[unused961]": 966,
+ "[unused962]": 967,
+ "[unused963]": 968,
+ "[unused964]": 969,
+ "[unused965]": 970,
+ "[unused966]": 971,
+ "[unused967]": 972,
+ "[unused968]": 973,
+ "[unused969]": 974,
+ "[unused970]": 975,
+ "[unused971]": 976,
+ "[unused972]": 977,
+ "[unused973]": 978,
+ "[unused974]": 979,
+ "[unused975]": 980,
+ "[unused976]": 981,
+ "[unused977]": 982,
+ "[unused978]": 983,
+ "[unused979]": 984,
+ "[unused980]": 985,
+ "[unused981]": 986,
+ "[unused982]": 987,
+ "[unused983]": 988,
+ "[unused984]": 989,
+ "[unused985]": 990,
+ "[unused986]": 991,
+ "[unused987]": 992,
+ "[unused988]": 993,
+ "[unused989]": 994,
+ "[unused990]": 995,
+ "[unused991]": 996,
+ "[unused992]": 997,
+ "[unused993]": 998,
+ "!": 999,
+ "\"": 1000,
+ "#": 1001,
+ "$": 1002,
+ "%": 1003,
+ "&": 1004,
+ "'": 1005,
+ "(": 1006,
+ ")": 1007,
+ "*": 1008,
+ "+": 1009,
+ ",": 1010,
+ "-": 1011,
+ ".": 1012,
+ "/": 1013,
+ "0": 1014,
+ "1": 1015,
+ "2": 1016,
+ "3": 1017,
+ "4": 1018,
+ "5": 1019,
+ "6": 1020,
+ "7": 1021,
+ "8": 1022,
+ "9": 1023,
+ ":": 1024,
+ ";": 1025,
+ "<": 1026,
+ "=": 1027,
+ ">": 1028,
+ "?": 1029,
+ "@": 1030,
+ "[": 1031,
+ "\\": 1032,
+ "]": 1033,
+ "^": 1034,
+ "_": 1035,
+ "`": 1036,
+ "a": 1037,
+ "b": 1038,
+ "c": 1039,
+ "d": 1040,
+ "e": 1041,
+ "f": 1042,
+ "g": 1043,
+ "h": 1044,
+ "i": 1045,
+ "j": 1046,
+ "k": 1047,
+ "l": 1048,
+ "m": 1049,
+ "n": 1050,
+ "o": 1051,
+ "p": 1052,
+ "q": 1053,
+ "r": 1054,
+ "s": 1055,
+ "t": 1056,
+ "u": 1057,
+ "v": 1058,
+ "w": 1059,
+ "x": 1060,
+ "y": 1061,
+ "z": 1062,
+ "{": 1063,
+ "|": 1064,
+ "}": 1065,
+ "~": 1066,
+ "¡": 1067,
+ "¢": 1068,
+ "£": 1069,
+ "¤": 1070,
+ "¥": 1071,
+ "¦": 1072,
+ "§": 1073,
+ "¨": 1074,
+ "©": 1075,
+ "ª": 1076,
+ "«": 1077,
+ "¬": 1078,
+ "®": 1079,
+ "°": 1080,
+ "±": 1081,
+ "²": 1082,
+ "³": 1083,
+ "´": 1084,
+ "µ": 1085,
+ "¶": 1086,
+ "·": 1087,
+ "¹": 1088,
+ "º": 1089,
+ "»": 1090,
+ "¼": 1091,
+ "½": 1092,
+ "¾": 1093,
+ "¿": 1094,
+ "×": 1095,
+ "ß": 1096,
+ "æ": 1097,
+ "ð": 1098,
+ "÷": 1099,
+ "ø": 1100,
+ "þ": 1101,
+ "đ": 1102,
+ "ħ": 1103,
+ "ı": 1104,
+ "ł": 1105,
+ "ŋ": 1106,
+ "œ": 1107,
+ "ƒ": 1108,
+ "ɐ": 1109,
+ "ɑ": 1110,
+ "ɒ": 1111,
+ "ɔ": 1112,
+ "ɕ": 1113,
+ "ə": 1114,
+ "ɛ": 1115,
+ "ɡ": 1116,
+ "ɣ": 1117,
+ "ɨ": 1118,
+ "ɪ": 1119,
+ "ɫ": 1120,
+ "ɬ": 1121,
+ "ɯ": 1122,
+ "ɲ": 1123,
+ "ɴ": 1124,
+ "ɹ": 1125,
+ "ɾ": 1126,
+ "ʀ": 1127,
+ "ʁ": 1128,
+ "ʂ": 1129,
+ "ʃ": 1130,
+ "ʉ": 1131,
+ "ʊ": 1132,
+ "ʋ": 1133,
+ "ʌ": 1134,
+ "ʎ": 1135,
+ "ʐ": 1136,
+ "ʑ": 1137,
+ "ʒ": 1138,
+ "ʔ": 1139,
+ "ʰ": 1140,
+ "ʲ": 1141,
+ "ʳ": 1142,
+ "ʷ": 1143,
+ "ʸ": 1144,
+ "ʻ": 1145,
+ "ʼ": 1146,
+ "ʾ": 1147,
+ "ʿ": 1148,
+ "ˈ": 1149,
+ "ː": 1150,
+ "ˡ": 1151,
+ "ˢ": 1152,
+ "ˣ": 1153,
+ "ˤ": 1154,
+ "α": 1155,
+ "β": 1156,
+ "γ": 1157,
+ "δ": 1158,
+ "ε": 1159,
+ "ζ": 1160,
+ "η": 1161,
+ "θ": 1162,
+ "ι": 1163,
+ "κ": 1164,
+ "λ": 1165,
+ "μ": 1166,
+ "ν": 1167,
+ "ξ": 1168,
+ "ο": 1169,
+ "π": 1170,
+ "ρ": 1171,
+ "ς": 1172,
+ "σ": 1173,
+ "τ": 1174,
+ "υ": 1175,
+ "φ": 1176,
+ "χ": 1177,
+ "ψ": 1178,
+ "ω": 1179,
+ "а": 1180,
+ "б": 1181,
+ "в": 1182,
+ "г": 1183,
+ "д": 1184,
+ "е": 1185,
+ "ж": 1186,
+ "з": 1187,
+ "и": 1188,
+ "к": 1189,
+ "л": 1190,
+ "м": 1191,
+ "н": 1192,
+ "о": 1193,
+ "п": 1194,
+ "р": 1195,
+ "с": 1196,
+ "т": 1197,
+ "у": 1198,
+ "ф": 1199,
+ "х": 1200,
+ "ц": 1201,
+ "ч": 1202,
+ "ш": 1203,
+ "щ": 1204,
+ "ъ": 1205,
+ "ы": 1206,
+ "ь": 1207,
+ "э": 1208,
+ "ю": 1209,
+ "я": 1210,
+ "ђ": 1211,
+ "є": 1212,
+ "і": 1213,
+ "ј": 1214,
+ "љ": 1215,
+ "њ": 1216,
+ "ћ": 1217,
+ "ӏ": 1218,
+ "ա": 1219,
+ "բ": 1220,
+ "գ": 1221,
+ "դ": 1222,
+ "ե": 1223,
+ "թ": 1224,
+ "ի": 1225,
+ "լ": 1226,
+ "կ": 1227,
+ "հ": 1228,
+ "մ": 1229,
+ "յ": 1230,
+ "ն": 1231,
+ "ո": 1232,
+ "պ": 1233,
+ "ս": 1234,
+ "վ": 1235,
+ "տ": 1236,
+ "ր": 1237,
+ "ւ": 1238,
+ "ք": 1239,
+ "־": 1240,
+ "א": 1241,
+ "ב": 1242,
+ "ג": 1243,
+ "ד": 1244,
+ "ה": 1245,
+ "ו": 1246,
+ "ז": 1247,
+ "ח": 1248,
+ "ט": 1249,
+ "י": 1250,
+ "ך": 1251,
+ "כ": 1252,
+ "ל": 1253,
+ "ם": 1254,
+ "מ": 1255,
+ "ן": 1256,
+ "נ": 1257,
+ "ס": 1258,
+ "ע": 1259,
+ "ף": 1260,
+ "פ": 1261,
+ "ץ": 1262,
+ "צ": 1263,
+ "ק": 1264,
+ "ר": 1265,
+ "ש": 1266,
+ "ת": 1267,
+ "،": 1268,
+ "ء": 1269,
+ "ا": 1270,
+ "ب": 1271,
+ "ة": 1272,
+ "ت": 1273,
+ "ث": 1274,
+ "ج": 1275,
+ "ح": 1276,
+ "خ": 1277,
+ "د": 1278,
+ "ذ": 1279,
+ "ر": 1280,
+ "ز": 1281,
+ "س": 1282,
+ "ش": 1283,
+ "ص": 1284,
+ "ض": 1285,
+ "ط": 1286,
+ "ظ": 1287,
+ "ع": 1288,
+ "غ": 1289,
+ "ـ": 1290,
+ "ف": 1291,
+ "ق": 1292,
+ "ك": 1293,
+ "ل": 1294,
+ "م": 1295,
+ "ن": 1296,
+ "ه": 1297,
+ "و": 1298,
+ "ى": 1299,
+ "ي": 1300,
+ "ٹ": 1301,
+ "پ": 1302,
+ "چ": 1303,
+ "ک": 1304,
+ "گ": 1305,
+ "ں": 1306,
+ "ھ": 1307,
+ "ہ": 1308,
+ "ی": 1309,
+ "ے": 1310,
+ "अ": 1311,
+ "आ": 1312,
+ "उ": 1313,
+ "ए": 1314,
+ "क": 1315,
+ "ख": 1316,
+ "ग": 1317,
+ "च": 1318,
+ "ज": 1319,
+ "ट": 1320,
+ "ड": 1321,
+ "ण": 1322,
+ "त": 1323,
+ "थ": 1324,
+ "द": 1325,
+ "ध": 1326,
+ "न": 1327,
+ "प": 1328,
+ "ब": 1329,
+ "भ": 1330,
+ "म": 1331,
+ "य": 1332,
+ "र": 1333,
+ "ल": 1334,
+ "व": 1335,
+ "श": 1336,
+ "ष": 1337,
+ "स": 1338,
+ "ह": 1339,
+ "ा": 1340,
+ "ि": 1341,
+ "ी": 1342,
+ "ो": 1343,
+ "।": 1344,
+ "॥": 1345,
+ "ং": 1346,
+ "অ": 1347,
+ "আ": 1348,
+ "ই": 1349,
+ "উ": 1350,
+ "এ": 1351,
+ "ও": 1352,
+ "ক": 1353,
+ "খ": 1354,
+ "গ": 1355,
+ "চ": 1356,
+ "ছ": 1357,
+ "জ": 1358,
+ "ট": 1359,
+ "ড": 1360,
+ "ণ": 1361,
+ "ত": 1362,
+ "থ": 1363,
+ "দ": 1364,
+ "ধ": 1365,
+ "ন": 1366,
+ "প": 1367,
+ "ব": 1368,
+ "ভ": 1369,
+ "ম": 1370,
+ "য": 1371,
+ "র": 1372,
+ "ল": 1373,
+ "শ": 1374,
+ "ষ": 1375,
+ "স": 1376,
+ "হ": 1377,
+ "া": 1378,
+ "ি": 1379,
+ "ী": 1380,
+ "ে": 1381,
+ "க": 1382,
+ "ச": 1383,
+ "ட": 1384,
+ "த": 1385,
+ "ந": 1386,
+ "ன": 1387,
+ "ப": 1388,
+ "ம": 1389,
+ "ய": 1390,
+ "ர": 1391,
+ "ல": 1392,
+ "ள": 1393,
+ "வ": 1394,
+ "ா": 1395,
+ "ி": 1396,
+ "ு": 1397,
+ "ே": 1398,
+ "ை": 1399,
+ "ನ": 1400,
+ "ರ": 1401,
+ "ಾ": 1402,
+ "ක": 1403,
+ "ය": 1404,
+ "ර": 1405,
+ "ල": 1406,
+ "ව": 1407,
+ "ා": 1408,
+ "ก": 1409,
+ "ง": 1410,
+ "ต": 1411,
+ "ท": 1412,
+ "น": 1413,
+ "พ": 1414,
+ "ม": 1415,
+ "ย": 1416,
+ "ร": 1417,
+ "ล": 1418,
+ "ว": 1419,
+ "ส": 1420,
+ "อ": 1421,
+ "า": 1422,
+ "เ": 1423,
+ "་": 1424,
+ "།": 1425,
+ "ག": 1426,
+ "ང": 1427,
+ "ད": 1428,
+ "ན": 1429,
+ "པ": 1430,
+ "བ": 1431,
+ "མ": 1432,
+ "འ": 1433,
+ "ར": 1434,
+ "ལ": 1435,
+ "ས": 1436,
+ "မ": 1437,
+ "ა": 1438,
+ "ბ": 1439,
+ "გ": 1440,
+ "დ": 1441,
+ "ე": 1442,
+ "ვ": 1443,
+ "თ": 1444,
+ "ი": 1445,
+ "კ": 1446,
+ "ლ": 1447,
+ "მ": 1448,
+ "ნ": 1449,
+ "ო": 1450,
+ "რ": 1451,
+ "ს": 1452,
+ "ტ": 1453,
+ "უ": 1454,
+ "ᄀ": 1455,
+ "ᄂ": 1456,
+ "ᄃ": 1457,
+ "ᄅ": 1458,
+ "ᄆ": 1459,
+ "ᄇ": 1460,
+ "ᄉ": 1461,
+ "ᄊ": 1462,
+ "ᄋ": 1463,
+ "ᄌ": 1464,
+ "ᄎ": 1465,
+ "ᄏ": 1466,
+ "ᄐ": 1467,
+ "ᄑ": 1468,
+ "ᄒ": 1469,
+ "ᅡ": 1470,
+ "ᅢ": 1471,
+ "ᅥ": 1472,
+ "ᅦ": 1473,
+ "ᅧ": 1474,
+ "ᅩ": 1475,
+ "ᅪ": 1476,
+ "ᅭ": 1477,
+ "ᅮ": 1478,
+ "ᅯ": 1479,
+ "ᅲ": 1480,
+ "ᅳ": 1481,
+ "ᅴ": 1482,
+ "ᅵ": 1483,
+ "ᆨ": 1484,
+ "ᆫ": 1485,
+ "ᆯ": 1486,
+ "ᆷ": 1487,
+ "ᆸ": 1488,
+ "ᆼ": 1489,
+ "ᴬ": 1490,
+ "ᴮ": 1491,
+ "ᴰ": 1492,
+ "ᴵ": 1493,
+ "ᴺ": 1494,
+ "ᵀ": 1495,
+ "ᵃ": 1496,
+ "ᵇ": 1497,
+ "ᵈ": 1498,
+ "ᵉ": 1499,
+ "ᵍ": 1500,
+ "ᵏ": 1501,
+ "ᵐ": 1502,
+ "ᵒ": 1503,
+ "ᵖ": 1504,
+ "ᵗ": 1505,
+ "ᵘ": 1506,
+ "ᵢ": 1507,
+ "ᵣ": 1508,
+ "ᵤ": 1509,
+ "ᵥ": 1510,
+ "ᶜ": 1511,
+ "ᶠ": 1512,
+ "‐": 1513,
+ "‑": 1514,
+ "‒": 1515,
+ "–": 1516,
+ "—": 1517,
+ "―": 1518,
+ "‖": 1519,
+ "‘": 1520,
+ "’": 1521,
+ "‚": 1522,
+ "“": 1523,
+ "”": 1524,
+ "„": 1525,
+ "†": 1526,
+ "‡": 1527,
+ "•": 1528,
+ "…": 1529,
+ "‰": 1530,
+ "′": 1531,
+ "″": 1532,
+ "›": 1533,
+ "‿": 1534,
+ "⁄": 1535,
+ "⁰": 1536,
+ "ⁱ": 1537,
+ "⁴": 1538,
+ "⁵": 1539,
+ "⁶": 1540,
+ "⁷": 1541,
+ "⁸": 1542,
+ "⁹": 1543,
+ "⁺": 1544,
+ "⁻": 1545,
+ "ⁿ": 1546,
+ "₀": 1547,
+ "₁": 1548,
+ "₂": 1549,
+ "₃": 1550,
+ "₄": 1551,
+ "₅": 1552,
+ "₆": 1553,
+ "₇": 1554,
+ "₈": 1555,
+ "₉": 1556,
+ "₊": 1557,
+ "₍": 1558,
+ "₎": 1559,
+ "ₐ": 1560,
+ "ₑ": 1561,
+ "ₒ": 1562,
+ "ₓ": 1563,
+ "ₕ": 1564,
+ "ₖ": 1565,
+ "ₗ": 1566,
+ "ₘ": 1567,
+ "ₙ": 1568,
+ "ₚ": 1569,
+ "ₛ": 1570,
+ "ₜ": 1571,
+ "₤": 1572,
+ "₩": 1573,
+ "€": 1574,
+ "₱": 1575,
+ "₹": 1576,
+ "ℓ": 1577,
+ "№": 1578,
+ "ℝ": 1579,
+ "™": 1580,
+ "⅓": 1581,
+ "⅔": 1582,
+ "←": 1583,
+ "↑": 1584,
+ "→": 1585,
+ "↓": 1586,
+ "↔": 1587,
+ "↦": 1588,
+ "⇄": 1589,
+ "⇌": 1590,
+ "⇒": 1591,
+ "∂": 1592,
+ "∅": 1593,
+ "∆": 1594,
+ "∇": 1595,
+ "∈": 1596,
+ "−": 1597,
+ "∗": 1598,
+ "∘": 1599,
+ "√": 1600,
+ "∞": 1601,
+ "∧": 1602,
+ "∨": 1603,
+ "∩": 1604,
+ "∪": 1605,
+ "≈": 1606,
+ "≡": 1607,
+ "≤": 1608,
+ "≥": 1609,
+ "⊂": 1610,
+ "⊆": 1611,
+ "⊕": 1612,
+ "⊗": 1613,
+ "⋅": 1614,
+ "─": 1615,
+ "│": 1616,
+ "■": 1617,
+ "▪": 1618,
+ "●": 1619,
+ "★": 1620,
+ "☆": 1621,
+ "☉": 1622,
+ "♠": 1623,
+ "♣": 1624,
+ "♥": 1625,
+ "♦": 1626,
+ "♭": 1627,
+ "♯": 1628,
+ "⟨": 1629,
+ "⟩": 1630,
+ "ⱼ": 1631,
+ "⺩": 1632,
+ "⺼": 1633,
+ "⽥": 1634,
+ "、": 1635,
+ "。": 1636,
+ "〈": 1637,
+ "〉": 1638,
+ "《": 1639,
+ "》": 1640,
+ "「": 1641,
+ "」": 1642,
+ "『": 1643,
+ "』": 1644,
+ "〜": 1645,
+ "あ": 1646,
+ "い": 1647,
+ "う": 1648,
+ "え": 1649,
+ "お": 1650,
+ "か": 1651,
+ "き": 1652,
+ "く": 1653,
+ "け": 1654,
+ "こ": 1655,
+ "さ": 1656,
+ "し": 1657,
+ "す": 1658,
+ "せ": 1659,
+ "そ": 1660,
+ "た": 1661,
+ "ち": 1662,
+ "っ": 1663,
+ "つ": 1664,
+ "て": 1665,
+ "と": 1666,
+ "な": 1667,
+ "に": 1668,
+ "ぬ": 1669,
+ "ね": 1670,
+ "の": 1671,
+ "は": 1672,
+ "ひ": 1673,
+ "ふ": 1674,
+ "へ": 1675,
+ "ほ": 1676,
+ "ま": 1677,
+ "み": 1678,
+ "む": 1679,
+ "め": 1680,
+ "も": 1681,
+ "や": 1682,
+ "ゆ": 1683,
+ "よ": 1684,
+ "ら": 1685,
+ "り": 1686,
+ "る": 1687,
+ "れ": 1688,
+ "ろ": 1689,
+ "を": 1690,
+ "ん": 1691,
+ "ァ": 1692,
+ "ア": 1693,
+ "ィ": 1694,
+ "イ": 1695,
+ "ウ": 1696,
+ "ェ": 1697,
+ "エ": 1698,
+ "オ": 1699,
+ "カ": 1700,
+ "キ": 1701,
+ "ク": 1702,
+ "ケ": 1703,
+ "コ": 1704,
+ "サ": 1705,
+ "シ": 1706,
+ "ス": 1707,
+ "セ": 1708,
+ "タ": 1709,
+ "チ": 1710,
+ "ッ": 1711,
+ "ツ": 1712,
+ "テ": 1713,
+ "ト": 1714,
+ "ナ": 1715,
+ "ニ": 1716,
+ "ノ": 1717,
+ "ハ": 1718,
+ "ヒ": 1719,
+ "フ": 1720,
+ "ヘ": 1721,
+ "ホ": 1722,
+ "マ": 1723,
+ "ミ": 1724,
+ "ム": 1725,
+ "メ": 1726,
+ "モ": 1727,
+ "ャ": 1728,
+ "ュ": 1729,
+ "ョ": 1730,
+ "ラ": 1731,
+ "リ": 1732,
+ "ル": 1733,
+ "レ": 1734,
+ "ロ": 1735,
+ "ワ": 1736,
+ "ン": 1737,
+ "・": 1738,
+ "ー": 1739,
+ "一": 1740,
+ "三": 1741,
+ "上": 1742,
+ "下": 1743,
+ "不": 1744,
+ "世": 1745,
+ "中": 1746,
+ "主": 1747,
+ "久": 1748,
+ "之": 1749,
+ "也": 1750,
+ "事": 1751,
+ "二": 1752,
+ "五": 1753,
+ "井": 1754,
+ "京": 1755,
+ "人": 1756,
+ "亻": 1757,
+ "仁": 1758,
+ "介": 1759,
+ "代": 1760,
+ "仮": 1761,
+ "伊": 1762,
+ "会": 1763,
+ "佐": 1764,
+ "侍": 1765,
+ "保": 1766,
+ "信": 1767,
+ "健": 1768,
+ "元": 1769,
+ "光": 1770,
+ "八": 1771,
+ "公": 1772,
+ "内": 1773,
+ "出": 1774,
+ "分": 1775,
+ "前": 1776,
+ "劉": 1777,
+ "力": 1778,
+ "加": 1779,
+ "勝": 1780,
+ "北": 1781,
+ "区": 1782,
+ "十": 1783,
+ "千": 1784,
+ "南": 1785,
+ "博": 1786,
+ "原": 1787,
+ "口": 1788,
+ "古": 1789,
+ "史": 1790,
+ "司": 1791,
+ "合": 1792,
+ "吉": 1793,
+ "同": 1794,
+ "名": 1795,
+ "和": 1796,
+ "囗": 1797,
+ "四": 1798,
+ "国": 1799,
+ "國": 1800,
+ "土": 1801,
+ "地": 1802,
+ "坂": 1803,
+ "城": 1804,
+ "堂": 1805,
+ "場": 1806,
+ "士": 1807,
+ "夏": 1808,
+ "外": 1809,
+ "大": 1810,
+ "天": 1811,
+ "太": 1812,
+ "夫": 1813,
+ "奈": 1814,
+ "女": 1815,
+ "子": 1816,
+ "学": 1817,
+ "宀": 1818,
+ "宇": 1819,
+ "安": 1820,
+ "宗": 1821,
+ "定": 1822,
+ "宣": 1823,
+ "宮": 1824,
+ "家": 1825,
+ "宿": 1826,
+ "寺": 1827,
+ "將": 1828,
+ "小": 1829,
+ "尚": 1830,
+ "山": 1831,
+ "岡": 1832,
+ "島": 1833,
+ "崎": 1834,
+ "川": 1835,
+ "州": 1836,
+ "巿": 1837,
+ "帝": 1838,
+ "平": 1839,
+ "年": 1840,
+ "幸": 1841,
+ "广": 1842,
+ "弘": 1843,
+ "張": 1844,
+ "彳": 1845,
+ "後": 1846,
+ "御": 1847,
+ "德": 1848,
+ "心": 1849,
+ "忄": 1850,
+ "志": 1851,
+ "忠": 1852,
+ "愛": 1853,
+ "成": 1854,
+ "我": 1855,
+ "戦": 1856,
+ "戸": 1857,
+ "手": 1858,
+ "扌": 1859,
+ "政": 1860,
+ "文": 1861,
+ "新": 1862,
+ "方": 1863,
+ "日": 1864,
+ "明": 1865,
+ "星": 1866,
+ "春": 1867,
+ "昭": 1868,
+ "智": 1869,
+ "曲": 1870,
+ "書": 1871,
+ "月": 1872,
+ "有": 1873,
+ "朝": 1874,
+ "木": 1875,
+ "本": 1876,
+ "李": 1877,
+ "村": 1878,
+ "東": 1879,
+ "松": 1880,
+ "林": 1881,
+ "森": 1882,
+ "楊": 1883,
+ "樹": 1884,
+ "橋": 1885,
+ "歌": 1886,
+ "止": 1887,
+ "正": 1888,
+ "武": 1889,
+ "比": 1890,
+ "氏": 1891,
+ "民": 1892,
+ "水": 1893,
+ "氵": 1894,
+ "氷": 1895,
+ "永": 1896,
+ "江": 1897,
+ "沢": 1898,
+ "河": 1899,
+ "治": 1900,
+ "法": 1901,
+ "海": 1902,
+ "清": 1903,
+ "漢": 1904,
+ "瀬": 1905,
+ "火": 1906,
+ "版": 1907,
+ "犬": 1908,
+ "王": 1909,
+ "生": 1910,
+ "田": 1911,
+ "男": 1912,
+ "疒": 1913,
+ "発": 1914,
+ "白": 1915,
+ "的": 1916,
+ "皇": 1917,
+ "目": 1918,
+ "相": 1919,
+ "省": 1920,
+ "真": 1921,
+ "石": 1922,
+ "示": 1923,
+ "社": 1924,
+ "神": 1925,
+ "福": 1926,
+ "禾": 1927,
+ "秀": 1928,
+ "秋": 1929,
+ "空": 1930,
+ "立": 1931,
+ "章": 1932,
+ "竹": 1933,
+ "糹": 1934,
+ "美": 1935,
+ "義": 1936,
+ "耳": 1937,
+ "良": 1938,
+ "艹": 1939,
+ "花": 1940,
+ "英": 1941,
+ "華": 1942,
+ "葉": 1943,
+ "藤": 1944,
+ "行": 1945,
+ "街": 1946,
+ "西": 1947,
+ "見": 1948,
+ "訁": 1949,
+ "語": 1950,
+ "谷": 1951,
+ "貝": 1952,
+ "貴": 1953,
+ "車": 1954,
+ "軍": 1955,
+ "辶": 1956,
+ "道": 1957,
+ "郎": 1958,
+ "郡": 1959,
+ "部": 1960,
+ "都": 1961,
+ "里": 1962,
+ "野": 1963,
+ "金": 1964,
+ "鈴": 1965,
+ "镇": 1966,
+ "長": 1967,
+ "門": 1968,
+ "間": 1969,
+ "阝": 1970,
+ "阿": 1971,
+ "陳": 1972,
+ "陽": 1973,
+ "雄": 1974,
+ "青": 1975,
+ "面": 1976,
+ "風": 1977,
+ "食": 1978,
+ "香": 1979,
+ "馬": 1980,
+ "高": 1981,
+ "龍": 1982,
+ "龸": 1983,
+ "fi": 1984,
+ "fl": 1985,
+ "!": 1986,
+ "(": 1987,
+ ")": 1988,
+ ",": 1989,
+ "-": 1990,
+ ".": 1991,
+ "/": 1992,
+ ":": 1993,
+ "?": 1994,
+ "~": 1995,
+ "the": 1996,
+ "of": 1997,
+ "and": 1998,
+ "in": 1999,
+ "to": 2000,
+ "was": 2001,
+ "he": 2002,
+ "is": 2003,
+ "as": 2004,
+ "for": 2005,
+ "on": 2006,
+ "with": 2007,
+ "that": 2008,
+ "it": 2009,
+ "his": 2010,
+ "by": 2011,
+ "at": 2012,
+ "from": 2013,
+ "her": 2014,
+ "##s": 2015,
+ "she": 2016,
+ "you": 2017,
+ "had": 2018,
+ "an": 2019,
+ "were": 2020,
+ "but": 2021,
+ "be": 2022,
+ "this": 2023,
+ "are": 2024,
+ "not": 2025,
+ "my": 2026,
+ "they": 2027,
+ "one": 2028,
+ "which": 2029,
+ "or": 2030,
+ "have": 2031,
+ "him": 2032,
+ "me": 2033,
+ "first": 2034,
+ "all": 2035,
+ "also": 2036,
+ "their": 2037,
+ "has": 2038,
+ "up": 2039,
+ "who": 2040,
+ "out": 2041,
+ "been": 2042,
+ "when": 2043,
+ "after": 2044,
+ "there": 2045,
+ "into": 2046,
+ "new": 2047,
+ "two": 2048,
+ "its": 2049,
+ "##a": 2050,
+ "time": 2051,
+ "would": 2052,
+ "no": 2053,
+ "what": 2054,
+ "about": 2055,
+ "said": 2056,
+ "we": 2057,
+ "over": 2058,
+ "then": 2059,
+ "other": 2060,
+ "so": 2061,
+ "more": 2062,
+ "##e": 2063,
+ "can": 2064,
+ "if": 2065,
+ "like": 2066,
+ "back": 2067,
+ "them": 2068,
+ "only": 2069,
+ "some": 2070,
+ "could": 2071,
+ "##i": 2072,
+ "where": 2073,
+ "just": 2074,
+ "##ing": 2075,
+ "during": 2076,
+ "before": 2077,
+ "##n": 2078,
+ "do": 2079,
+ "##o": 2080,
+ "made": 2081,
+ "school": 2082,
+ "through": 2083,
+ "than": 2084,
+ "now": 2085,
+ "years": 2086,
+ "most": 2087,
+ "world": 2088,
+ "may": 2089,
+ "between": 2090,
+ "down": 2091,
+ "well": 2092,
+ "three": 2093,
+ "##d": 2094,
+ "year": 2095,
+ "while": 2096,
+ "will": 2097,
+ "##ed": 2098,
+ "##r": 2099,
+ "##y": 2100,
+ "later": 2101,
+ "##t": 2102,
+ "city": 2103,
+ "under": 2104,
+ "around": 2105,
+ "did": 2106,
+ "such": 2107,
+ "being": 2108,
+ "used": 2109,
+ "state": 2110,
+ "people": 2111,
+ "part": 2112,
+ "know": 2113,
+ "against": 2114,
+ "your": 2115,
+ "many": 2116,
+ "second": 2117,
+ "university": 2118,
+ "both": 2119,
+ "national": 2120,
+ "##er": 2121,
+ "these": 2122,
+ "don": 2123,
+ "known": 2124,
+ "off": 2125,
+ "way": 2126,
+ "until": 2127,
+ "re": 2128,
+ "how": 2129,
+ "even": 2130,
+ "get": 2131,
+ "head": 2132,
+ "...": 2133,
+ "didn": 2134,
+ "##ly": 2135,
+ "team": 2136,
+ "american": 2137,
+ "because": 2138,
+ "de": 2139,
+ "##l": 2140,
+ "born": 2141,
+ "united": 2142,
+ "film": 2143,
+ "since": 2144,
+ "still": 2145,
+ "long": 2146,
+ "work": 2147,
+ "south": 2148,
+ "us": 2149,
+ "became": 2150,
+ "any": 2151,
+ "high": 2152,
+ "again": 2153,
+ "day": 2154,
+ "family": 2155,
+ "see": 2156,
+ "right": 2157,
+ "man": 2158,
+ "eyes": 2159,
+ "house": 2160,
+ "season": 2161,
+ "war": 2162,
+ "states": 2163,
+ "including": 2164,
+ "took": 2165,
+ "life": 2166,
+ "north": 2167,
+ "same": 2168,
+ "each": 2169,
+ "called": 2170,
+ "name": 2171,
+ "much": 2172,
+ "place": 2173,
+ "however": 2174,
+ "go": 2175,
+ "four": 2176,
+ "group": 2177,
+ "another": 2178,
+ "found": 2179,
+ "won": 2180,
+ "area": 2181,
+ "here": 2182,
+ "going": 2183,
+ "10": 2184,
+ "away": 2185,
+ "series": 2186,
+ "left": 2187,
+ "home": 2188,
+ "music": 2189,
+ "best": 2190,
+ "make": 2191,
+ "hand": 2192,
+ "number": 2193,
+ "company": 2194,
+ "several": 2195,
+ "never": 2196,
+ "last": 2197,
+ "john": 2198,
+ "000": 2199,
+ "very": 2200,
+ "album": 2201,
+ "take": 2202,
+ "end": 2203,
+ "good": 2204,
+ "too": 2205,
+ "following": 2206,
+ "released": 2207,
+ "game": 2208,
+ "played": 2209,
+ "little": 2210,
+ "began": 2211,
+ "district": 2212,
+ "##m": 2213,
+ "old": 2214,
+ "want": 2215,
+ "those": 2216,
+ "side": 2217,
+ "held": 2218,
+ "own": 2219,
+ "early": 2220,
+ "county": 2221,
+ "ll": 2222,
+ "league": 2223,
+ "use": 2224,
+ "west": 2225,
+ "##u": 2226,
+ "face": 2227,
+ "think": 2228,
+ "##es": 2229,
+ "2010": 2230,
+ "government": 2231,
+ "##h": 2232,
+ "march": 2233,
+ "came": 2234,
+ "small": 2235,
+ "general": 2236,
+ "town": 2237,
+ "june": 2238,
+ "##on": 2239,
+ "line": 2240,
+ "based": 2241,
+ "something": 2242,
+ "##k": 2243,
+ "september": 2244,
+ "thought": 2245,
+ "looked": 2246,
+ "along": 2247,
+ "international": 2248,
+ "2011": 2249,
+ "air": 2250,
+ "july": 2251,
+ "club": 2252,
+ "went": 2253,
+ "january": 2254,
+ "october": 2255,
+ "our": 2256,
+ "august": 2257,
+ "april": 2258,
+ "york": 2259,
+ "12": 2260,
+ "few": 2261,
+ "2012": 2262,
+ "2008": 2263,
+ "east": 2264,
+ "show": 2265,
+ "member": 2266,
+ "college": 2267,
+ "2009": 2268,
+ "father": 2269,
+ "public": 2270,
+ "##us": 2271,
+ "come": 2272,
+ "men": 2273,
+ "five": 2274,
+ "set": 2275,
+ "station": 2276,
+ "church": 2277,
+ "##c": 2278,
+ "next": 2279,
+ "former": 2280,
+ "november": 2281,
+ "room": 2282,
+ "party": 2283,
+ "located": 2284,
+ "december": 2285,
+ "2013": 2286,
+ "age": 2287,
+ "got": 2288,
+ "2007": 2289,
+ "##g": 2290,
+ "system": 2291,
+ "let": 2292,
+ "love": 2293,
+ "2006": 2294,
+ "though": 2295,
+ "every": 2296,
+ "2014": 2297,
+ "look": 2298,
+ "song": 2299,
+ "water": 2300,
+ "century": 2301,
+ "without": 2302,
+ "body": 2303,
+ "black": 2304,
+ "night": 2305,
+ "within": 2306,
+ "great": 2307,
+ "women": 2308,
+ "single": 2309,
+ "ve": 2310,
+ "building": 2311,
+ "large": 2312,
+ "population": 2313,
+ "river": 2314,
+ "named": 2315,
+ "band": 2316,
+ "white": 2317,
+ "started": 2318,
+ "##an": 2319,
+ "once": 2320,
+ "15": 2321,
+ "20": 2322,
+ "should": 2323,
+ "18": 2324,
+ "2015": 2325,
+ "service": 2326,
+ "top": 2327,
+ "built": 2328,
+ "british": 2329,
+ "open": 2330,
+ "death": 2331,
+ "king": 2332,
+ "moved": 2333,
+ "local": 2334,
+ "times": 2335,
+ "children": 2336,
+ "february": 2337,
+ "book": 2338,
+ "why": 2339,
+ "11": 2340,
+ "door": 2341,
+ "need": 2342,
+ "president": 2343,
+ "order": 2344,
+ "final": 2345,
+ "road": 2346,
+ "wasn": 2347,
+ "although": 2348,
+ "due": 2349,
+ "major": 2350,
+ "died": 2351,
+ "village": 2352,
+ "third": 2353,
+ "knew": 2354,
+ "2016": 2355,
+ "asked": 2356,
+ "turned": 2357,
+ "st": 2358,
+ "wanted": 2359,
+ "say": 2360,
+ "##p": 2361,
+ "together": 2362,
+ "received": 2363,
+ "main": 2364,
+ "son": 2365,
+ "served": 2366,
+ "different": 2367,
+ "##en": 2368,
+ "behind": 2369,
+ "himself": 2370,
+ "felt": 2371,
+ "members": 2372,
+ "power": 2373,
+ "football": 2374,
+ "law": 2375,
+ "voice": 2376,
+ "play": 2377,
+ "##in": 2378,
+ "near": 2379,
+ "park": 2380,
+ "history": 2381,
+ "30": 2382,
+ "having": 2383,
+ "2005": 2384,
+ "16": 2385,
+ "##man": 2386,
+ "saw": 2387,
+ "mother": 2388,
+ "##al": 2389,
+ "army": 2390,
+ "point": 2391,
+ "front": 2392,
+ "help": 2393,
+ "english": 2394,
+ "street": 2395,
+ "art": 2396,
+ "late": 2397,
+ "hands": 2398,
+ "games": 2399,
+ "award": 2400,
+ "##ia": 2401,
+ "young": 2402,
+ "14": 2403,
+ "put": 2404,
+ "published": 2405,
+ "country": 2406,
+ "division": 2407,
+ "across": 2408,
+ "told": 2409,
+ "13": 2410,
+ "often": 2411,
+ "ever": 2412,
+ "french": 2413,
+ "london": 2414,
+ "center": 2415,
+ "six": 2416,
+ "red": 2417,
+ "2017": 2418,
+ "led": 2419,
+ "days": 2420,
+ "include": 2421,
+ "light": 2422,
+ "25": 2423,
+ "find": 2424,
+ "tell": 2425,
+ "among": 2426,
+ "species": 2427,
+ "really": 2428,
+ "according": 2429,
+ "central": 2430,
+ "half": 2431,
+ "2004": 2432,
+ "form": 2433,
+ "original": 2434,
+ "gave": 2435,
+ "office": 2436,
+ "making": 2437,
+ "enough": 2438,
+ "lost": 2439,
+ "full": 2440,
+ "opened": 2441,
+ "must": 2442,
+ "included": 2443,
+ "live": 2444,
+ "given": 2445,
+ "german": 2446,
+ "player": 2447,
+ "run": 2448,
+ "business": 2449,
+ "woman": 2450,
+ "community": 2451,
+ "cup": 2452,
+ "might": 2453,
+ "million": 2454,
+ "land": 2455,
+ "2000": 2456,
+ "court": 2457,
+ "development": 2458,
+ "17": 2459,
+ "short": 2460,
+ "round": 2461,
+ "ii": 2462,
+ "km": 2463,
+ "seen": 2464,
+ "class": 2465,
+ "story": 2466,
+ "always": 2467,
+ "become": 2468,
+ "sure": 2469,
+ "research": 2470,
+ "almost": 2471,
+ "director": 2472,
+ "council": 2473,
+ "la": 2474,
+ "##2": 2475,
+ "career": 2476,
+ "things": 2477,
+ "using": 2478,
+ "island": 2479,
+ "##z": 2480,
+ "couldn": 2481,
+ "car": 2482,
+ "##is": 2483,
+ "24": 2484,
+ "close": 2485,
+ "force": 2486,
+ "##1": 2487,
+ "better": 2488,
+ "free": 2489,
+ "support": 2490,
+ "control": 2491,
+ "field": 2492,
+ "students": 2493,
+ "2003": 2494,
+ "education": 2495,
+ "married": 2496,
+ "##b": 2497,
+ "nothing": 2498,
+ "worked": 2499,
+ "others": 2500,
+ "record": 2501,
+ "big": 2502,
+ "inside": 2503,
+ "level": 2504,
+ "anything": 2505,
+ "continued": 2506,
+ "give": 2507,
+ "james": 2508,
+ "##3": 2509,
+ "military": 2510,
+ "established": 2511,
+ "non": 2512,
+ "returned": 2513,
+ "feel": 2514,
+ "does": 2515,
+ "title": 2516,
+ "written": 2517,
+ "thing": 2518,
+ "feet": 2519,
+ "william": 2520,
+ "far": 2521,
+ "co": 2522,
+ "association": 2523,
+ "hard": 2524,
+ "already": 2525,
+ "2002": 2526,
+ "##ra": 2527,
+ "championship": 2528,
+ "human": 2529,
+ "western": 2530,
+ "100": 2531,
+ "##na": 2532,
+ "department": 2533,
+ "hall": 2534,
+ "role": 2535,
+ "various": 2536,
+ "production": 2537,
+ "21": 2538,
+ "19": 2539,
+ "heart": 2540,
+ "2001": 2541,
+ "living": 2542,
+ "fire": 2543,
+ "version": 2544,
+ "##ers": 2545,
+ "##f": 2546,
+ "television": 2547,
+ "royal": 2548,
+ "##4": 2549,
+ "produced": 2550,
+ "working": 2551,
+ "act": 2552,
+ "case": 2553,
+ "society": 2554,
+ "region": 2555,
+ "present": 2556,
+ "radio": 2557,
+ "period": 2558,
+ "looking": 2559,
+ "least": 2560,
+ "total": 2561,
+ "keep": 2562,
+ "england": 2563,
+ "wife": 2564,
+ "program": 2565,
+ "per": 2566,
+ "brother": 2567,
+ "mind": 2568,
+ "special": 2569,
+ "22": 2570,
+ "##le": 2571,
+ "am": 2572,
+ "works": 2573,
+ "soon": 2574,
+ "##6": 2575,
+ "political": 2576,
+ "george": 2577,
+ "services": 2578,
+ "taken": 2579,
+ "created": 2580,
+ "##7": 2581,
+ "further": 2582,
+ "able": 2583,
+ "reached": 2584,
+ "david": 2585,
+ "union": 2586,
+ "joined": 2587,
+ "upon": 2588,
+ "done": 2589,
+ "important": 2590,
+ "social": 2591,
+ "information": 2592,
+ "either": 2593,
+ "##ic": 2594,
+ "##x": 2595,
+ "appeared": 2596,
+ "position": 2597,
+ "ground": 2598,
+ "lead": 2599,
+ "rock": 2600,
+ "dark": 2601,
+ "election": 2602,
+ "23": 2603,
+ "board": 2604,
+ "france": 2605,
+ "hair": 2606,
+ "course": 2607,
+ "arms": 2608,
+ "site": 2609,
+ "police": 2610,
+ "girl": 2611,
+ "instead": 2612,
+ "real": 2613,
+ "sound": 2614,
+ "##v": 2615,
+ "words": 2616,
+ "moment": 2617,
+ "##te": 2618,
+ "someone": 2619,
+ "##8": 2620,
+ "summer": 2621,
+ "project": 2622,
+ "announced": 2623,
+ "san": 2624,
+ "less": 2625,
+ "wrote": 2626,
+ "past": 2627,
+ "followed": 2628,
+ "##5": 2629,
+ "blue": 2630,
+ "founded": 2631,
+ "al": 2632,
+ "finally": 2633,
+ "india": 2634,
+ "taking": 2635,
+ "records": 2636,
+ "america": 2637,
+ "##ne": 2638,
+ "1999": 2639,
+ "design": 2640,
+ "considered": 2641,
+ "northern": 2642,
+ "god": 2643,
+ "stop": 2644,
+ "battle": 2645,
+ "toward": 2646,
+ "european": 2647,
+ "outside": 2648,
+ "described": 2649,
+ "track": 2650,
+ "today": 2651,
+ "playing": 2652,
+ "language": 2653,
+ "28": 2654,
+ "call": 2655,
+ "26": 2656,
+ "heard": 2657,
+ "professional": 2658,
+ "low": 2659,
+ "australia": 2660,
+ "miles": 2661,
+ "california": 2662,
+ "win": 2663,
+ "yet": 2664,
+ "green": 2665,
+ "##ie": 2666,
+ "trying": 2667,
+ "blood": 2668,
+ "##ton": 2669,
+ "southern": 2670,
+ "science": 2671,
+ "maybe": 2672,
+ "everything": 2673,
+ "match": 2674,
+ "square": 2675,
+ "27": 2676,
+ "mouth": 2677,
+ "video": 2678,
+ "race": 2679,
+ "recorded": 2680,
+ "leave": 2681,
+ "above": 2682,
+ "##9": 2683,
+ "daughter": 2684,
+ "points": 2685,
+ "space": 2686,
+ "1998": 2687,
+ "museum": 2688,
+ "change": 2689,
+ "middle": 2690,
+ "common": 2691,
+ "##0": 2692,
+ "move": 2693,
+ "tv": 2694,
+ "post": 2695,
+ "##ta": 2696,
+ "lake": 2697,
+ "seven": 2698,
+ "tried": 2699,
+ "elected": 2700,
+ "closed": 2701,
+ "ten": 2702,
+ "paul": 2703,
+ "minister": 2704,
+ "##th": 2705,
+ "months": 2706,
+ "start": 2707,
+ "chief": 2708,
+ "return": 2709,
+ "canada": 2710,
+ "person": 2711,
+ "sea": 2712,
+ "release": 2713,
+ "similar": 2714,
+ "modern": 2715,
+ "brought": 2716,
+ "rest": 2717,
+ "hit": 2718,
+ "formed": 2719,
+ "mr": 2720,
+ "##la": 2721,
+ "1997": 2722,
+ "floor": 2723,
+ "event": 2724,
+ "doing": 2725,
+ "thomas": 2726,
+ "1996": 2727,
+ "robert": 2728,
+ "care": 2729,
+ "killed": 2730,
+ "training": 2731,
+ "star": 2732,
+ "week": 2733,
+ "needed": 2734,
+ "turn": 2735,
+ "finished": 2736,
+ "railway": 2737,
+ "rather": 2738,
+ "news": 2739,
+ "health": 2740,
+ "sent": 2741,
+ "example": 2742,
+ "ran": 2743,
+ "term": 2744,
+ "michael": 2745,
+ "coming": 2746,
+ "currently": 2747,
+ "yes": 2748,
+ "forces": 2749,
+ "despite": 2750,
+ "gold": 2751,
+ "areas": 2752,
+ "50": 2753,
+ "stage": 2754,
+ "fact": 2755,
+ "29": 2756,
+ "dead": 2757,
+ "says": 2758,
+ "popular": 2759,
+ "2018": 2760,
+ "originally": 2761,
+ "germany": 2762,
+ "probably": 2763,
+ "developed": 2764,
+ "result": 2765,
+ "pulled": 2766,
+ "friend": 2767,
+ "stood": 2768,
+ "money": 2769,
+ "running": 2770,
+ "mi": 2771,
+ "signed": 2772,
+ "word": 2773,
+ "songs": 2774,
+ "child": 2775,
+ "eventually": 2776,
+ "met": 2777,
+ "tour": 2778,
+ "average": 2779,
+ "teams": 2780,
+ "minutes": 2781,
+ "festival": 2782,
+ "current": 2783,
+ "deep": 2784,
+ "kind": 2785,
+ "1995": 2786,
+ "decided": 2787,
+ "usually": 2788,
+ "eastern": 2789,
+ "seemed": 2790,
+ "##ness": 2791,
+ "episode": 2792,
+ "bed": 2793,
+ "added": 2794,
+ "table": 2795,
+ "indian": 2796,
+ "private": 2797,
+ "charles": 2798,
+ "route": 2799,
+ "available": 2800,
+ "idea": 2801,
+ "throughout": 2802,
+ "centre": 2803,
+ "addition": 2804,
+ "appointed": 2805,
+ "style": 2806,
+ "1994": 2807,
+ "books": 2808,
+ "eight": 2809,
+ "construction": 2810,
+ "press": 2811,
+ "mean": 2812,
+ "wall": 2813,
+ "friends": 2814,
+ "remained": 2815,
+ "schools": 2816,
+ "study": 2817,
+ "##ch": 2818,
+ "##um": 2819,
+ "institute": 2820,
+ "oh": 2821,
+ "chinese": 2822,
+ "sometimes": 2823,
+ "events": 2824,
+ "possible": 2825,
+ "1992": 2826,
+ "australian": 2827,
+ "type": 2828,
+ "brown": 2829,
+ "forward": 2830,
+ "talk": 2831,
+ "process": 2832,
+ "food": 2833,
+ "debut": 2834,
+ "seat": 2835,
+ "performance": 2836,
+ "committee": 2837,
+ "features": 2838,
+ "character": 2839,
+ "arts": 2840,
+ "herself": 2841,
+ "else": 2842,
+ "lot": 2843,
+ "strong": 2844,
+ "russian": 2845,
+ "range": 2846,
+ "hours": 2847,
+ "peter": 2848,
+ "arm": 2849,
+ "##da": 2850,
+ "morning": 2851,
+ "dr": 2852,
+ "sold": 2853,
+ "##ry": 2854,
+ "quickly": 2855,
+ "directed": 2856,
+ "1993": 2857,
+ "guitar": 2858,
+ "china": 2859,
+ "##w": 2860,
+ "31": 2861,
+ "list": 2862,
+ "##ma": 2863,
+ "performed": 2864,
+ "media": 2865,
+ "uk": 2866,
+ "players": 2867,
+ "smile": 2868,
+ "##rs": 2869,
+ "myself": 2870,
+ "40": 2871,
+ "placed": 2872,
+ "coach": 2873,
+ "province": 2874,
+ "towards": 2875,
+ "wouldn": 2876,
+ "leading": 2877,
+ "whole": 2878,
+ "boy": 2879,
+ "official": 2880,
+ "designed": 2881,
+ "grand": 2882,
+ "census": 2883,
+ "##el": 2884,
+ "europe": 2885,
+ "attack": 2886,
+ "japanese": 2887,
+ "henry": 2888,
+ "1991": 2889,
+ "##re": 2890,
+ "##os": 2891,
+ "cross": 2892,
+ "getting": 2893,
+ "alone": 2894,
+ "action": 2895,
+ "lower": 2896,
+ "network": 2897,
+ "wide": 2898,
+ "washington": 2899,
+ "japan": 2900,
+ "1990": 2901,
+ "hospital": 2902,
+ "believe": 2903,
+ "changed": 2904,
+ "sister": 2905,
+ "##ar": 2906,
+ "hold": 2907,
+ "gone": 2908,
+ "sir": 2909,
+ "hadn": 2910,
+ "ship": 2911,
+ "##ka": 2912,
+ "studies": 2913,
+ "academy": 2914,
+ "shot": 2915,
+ "rights": 2916,
+ "below": 2917,
+ "base": 2918,
+ "bad": 2919,
+ "involved": 2920,
+ "kept": 2921,
+ "largest": 2922,
+ "##ist": 2923,
+ "bank": 2924,
+ "future": 2925,
+ "especially": 2926,
+ "beginning": 2927,
+ "mark": 2928,
+ "movement": 2929,
+ "section": 2930,
+ "female": 2931,
+ "magazine": 2932,
+ "plan": 2933,
+ "professor": 2934,
+ "lord": 2935,
+ "longer": 2936,
+ "##ian": 2937,
+ "sat": 2938,
+ "walked": 2939,
+ "hill": 2940,
+ "actually": 2941,
+ "civil": 2942,
+ "energy": 2943,
+ "model": 2944,
+ "families": 2945,
+ "size": 2946,
+ "thus": 2947,
+ "aircraft": 2948,
+ "completed": 2949,
+ "includes": 2950,
+ "data": 2951,
+ "captain": 2952,
+ "##or": 2953,
+ "fight": 2954,
+ "vocals": 2955,
+ "featured": 2956,
+ "richard": 2957,
+ "bridge": 2958,
+ "fourth": 2959,
+ "1989": 2960,
+ "officer": 2961,
+ "stone": 2962,
+ "hear": 2963,
+ "##ism": 2964,
+ "means": 2965,
+ "medical": 2966,
+ "groups": 2967,
+ "management": 2968,
+ "self": 2969,
+ "lips": 2970,
+ "competition": 2971,
+ "entire": 2972,
+ "lived": 2973,
+ "technology": 2974,
+ "leaving": 2975,
+ "federal": 2976,
+ "tournament": 2977,
+ "bit": 2978,
+ "passed": 2979,
+ "hot": 2980,
+ "independent": 2981,
+ "awards": 2982,
+ "kingdom": 2983,
+ "mary": 2984,
+ "spent": 2985,
+ "fine": 2986,
+ "doesn": 2987,
+ "reported": 2988,
+ "##ling": 2989,
+ "jack": 2990,
+ "fall": 2991,
+ "raised": 2992,
+ "itself": 2993,
+ "stay": 2994,
+ "true": 2995,
+ "studio": 2996,
+ "1988": 2997,
+ "sports": 2998,
+ "replaced": 2999,
+ "paris": 3000,
+ "systems": 3001,
+ "saint": 3002,
+ "leader": 3003,
+ "theatre": 3004,
+ "whose": 3005,
+ "market": 3006,
+ "capital": 3007,
+ "parents": 3008,
+ "spanish": 3009,
+ "canadian": 3010,
+ "earth": 3011,
+ "##ity": 3012,
+ "cut": 3013,
+ "degree": 3014,
+ "writing": 3015,
+ "bay": 3016,
+ "christian": 3017,
+ "awarded": 3018,
+ "natural": 3019,
+ "higher": 3020,
+ "bill": 3021,
+ "##as": 3022,
+ "coast": 3023,
+ "provided": 3024,
+ "previous": 3025,
+ "senior": 3026,
+ "ft": 3027,
+ "valley": 3028,
+ "organization": 3029,
+ "stopped": 3030,
+ "onto": 3031,
+ "countries": 3032,
+ "parts": 3033,
+ "conference": 3034,
+ "queen": 3035,
+ "security": 3036,
+ "interest": 3037,
+ "saying": 3038,
+ "allowed": 3039,
+ "master": 3040,
+ "earlier": 3041,
+ "phone": 3042,
+ "matter": 3043,
+ "smith": 3044,
+ "winning": 3045,
+ "try": 3046,
+ "happened": 3047,
+ "moving": 3048,
+ "campaign": 3049,
+ "los": 3050,
+ "##ley": 3051,
+ "breath": 3052,
+ "nearly": 3053,
+ "mid": 3054,
+ "1987": 3055,
+ "certain": 3056,
+ "girls": 3057,
+ "date": 3058,
+ "italian": 3059,
+ "african": 3060,
+ "standing": 3061,
+ "fell": 3062,
+ "artist": 3063,
+ "##ted": 3064,
+ "shows": 3065,
+ "deal": 3066,
+ "mine": 3067,
+ "industry": 3068,
+ "1986": 3069,
+ "##ng": 3070,
+ "everyone": 3071,
+ "republic": 3072,
+ "provide": 3073,
+ "collection": 3074,
+ "library": 3075,
+ "student": 3076,
+ "##ville": 3077,
+ "primary": 3078,
+ "owned": 3079,
+ "older": 3080,
+ "via": 3081,
+ "heavy": 3082,
+ "1st": 3083,
+ "makes": 3084,
+ "##able": 3085,
+ "attention": 3086,
+ "anyone": 3087,
+ "africa": 3088,
+ "##ri": 3089,
+ "stated": 3090,
+ "length": 3091,
+ "ended": 3092,
+ "fingers": 3093,
+ "command": 3094,
+ "staff": 3095,
+ "skin": 3096,
+ "foreign": 3097,
+ "opening": 3098,
+ "governor": 3099,
+ "okay": 3100,
+ "medal": 3101,
+ "kill": 3102,
+ "sun": 3103,
+ "cover": 3104,
+ "job": 3105,
+ "1985": 3106,
+ "introduced": 3107,
+ "chest": 3108,
+ "hell": 3109,
+ "feeling": 3110,
+ "##ies": 3111,
+ "success": 3112,
+ "meet": 3113,
+ "reason": 3114,
+ "standard": 3115,
+ "meeting": 3116,
+ "novel": 3117,
+ "1984": 3118,
+ "trade": 3119,
+ "source": 3120,
+ "buildings": 3121,
+ "##land": 3122,
+ "rose": 3123,
+ "guy": 3124,
+ "goal": 3125,
+ "##ur": 3126,
+ "chapter": 3127,
+ "native": 3128,
+ "husband": 3129,
+ "previously": 3130,
+ "unit": 3131,
+ "limited": 3132,
+ "entered": 3133,
+ "weeks": 3134,
+ "producer": 3135,
+ "operations": 3136,
+ "mountain": 3137,
+ "takes": 3138,
+ "covered": 3139,
+ "forced": 3140,
+ "related": 3141,
+ "roman": 3142,
+ "complete": 3143,
+ "successful": 3144,
+ "key": 3145,
+ "texas": 3146,
+ "cold": 3147,
+ "##ya": 3148,
+ "channel": 3149,
+ "1980": 3150,
+ "traditional": 3151,
+ "films": 3152,
+ "dance": 3153,
+ "clear": 3154,
+ "approximately": 3155,
+ "500": 3156,
+ "nine": 3157,
+ "van": 3158,
+ "prince": 3159,
+ "question": 3160,
+ "active": 3161,
+ "tracks": 3162,
+ "ireland": 3163,
+ "regional": 3164,
+ "silver": 3165,
+ "author": 3166,
+ "personal": 3167,
+ "sense": 3168,
+ "operation": 3169,
+ "##ine": 3170,
+ "economic": 3171,
+ "1983": 3172,
+ "holding": 3173,
+ "twenty": 3174,
+ "isbn": 3175,
+ "additional": 3176,
+ "speed": 3177,
+ "hour": 3178,
+ "edition": 3179,
+ "regular": 3180,
+ "historic": 3181,
+ "places": 3182,
+ "whom": 3183,
+ "shook": 3184,
+ "movie": 3185,
+ "km²": 3186,
+ "secretary": 3187,
+ "prior": 3188,
+ "report": 3189,
+ "chicago": 3190,
+ "read": 3191,
+ "foundation": 3192,
+ "view": 3193,
+ "engine": 3194,
+ "scored": 3195,
+ "1982": 3196,
+ "units": 3197,
+ "ask": 3198,
+ "airport": 3199,
+ "property": 3200,
+ "ready": 3201,
+ "immediately": 3202,
+ "lady": 3203,
+ "month": 3204,
+ "listed": 3205,
+ "contract": 3206,
+ "##de": 3207,
+ "manager": 3208,
+ "themselves": 3209,
+ "lines": 3210,
+ "##ki": 3211,
+ "navy": 3212,
+ "writer": 3213,
+ "meant": 3214,
+ "##ts": 3215,
+ "runs": 3216,
+ "##ro": 3217,
+ "practice": 3218,
+ "championships": 3219,
+ "singer": 3220,
+ "glass": 3221,
+ "commission": 3222,
+ "required": 3223,
+ "forest": 3224,
+ "starting": 3225,
+ "culture": 3226,
+ "generally": 3227,
+ "giving": 3228,
+ "access": 3229,
+ "attended": 3230,
+ "test": 3231,
+ "couple": 3232,
+ "stand": 3233,
+ "catholic": 3234,
+ "martin": 3235,
+ "caught": 3236,
+ "executive": 3237,
+ "##less": 3238,
+ "eye": 3239,
+ "##ey": 3240,
+ "thinking": 3241,
+ "chair": 3242,
+ "quite": 3243,
+ "shoulder": 3244,
+ "1979": 3245,
+ "hope": 3246,
+ "decision": 3247,
+ "plays": 3248,
+ "defeated": 3249,
+ "municipality": 3250,
+ "whether": 3251,
+ "structure": 3252,
+ "offered": 3253,
+ "slowly": 3254,
+ "pain": 3255,
+ "ice": 3256,
+ "direction": 3257,
+ "##ion": 3258,
+ "paper": 3259,
+ "mission": 3260,
+ "1981": 3261,
+ "mostly": 3262,
+ "200": 3263,
+ "noted": 3264,
+ "individual": 3265,
+ "managed": 3266,
+ "nature": 3267,
+ "lives": 3268,
+ "plant": 3269,
+ "##ha": 3270,
+ "helped": 3271,
+ "except": 3272,
+ "studied": 3273,
+ "computer": 3274,
+ "figure": 3275,
+ "relationship": 3276,
+ "issue": 3277,
+ "significant": 3278,
+ "loss": 3279,
+ "die": 3280,
+ "smiled": 3281,
+ "gun": 3282,
+ "ago": 3283,
+ "highest": 3284,
+ "1972": 3285,
+ "##am": 3286,
+ "male": 3287,
+ "bring": 3288,
+ "goals": 3289,
+ "mexico": 3290,
+ "problem": 3291,
+ "distance": 3292,
+ "commercial": 3293,
+ "completely": 3294,
+ "location": 3295,
+ "annual": 3296,
+ "famous": 3297,
+ "drive": 3298,
+ "1976": 3299,
+ "neck": 3300,
+ "1978": 3301,
+ "surface": 3302,
+ "caused": 3303,
+ "italy": 3304,
+ "understand": 3305,
+ "greek": 3306,
+ "highway": 3307,
+ "wrong": 3308,
+ "hotel": 3309,
+ "comes": 3310,
+ "appearance": 3311,
+ "joseph": 3312,
+ "double": 3313,
+ "issues": 3314,
+ "musical": 3315,
+ "companies": 3316,
+ "castle": 3317,
+ "income": 3318,
+ "review": 3319,
+ "assembly": 3320,
+ "bass": 3321,
+ "initially": 3322,
+ "parliament": 3323,
+ "artists": 3324,
+ "experience": 3325,
+ "1974": 3326,
+ "particular": 3327,
+ "walk": 3328,
+ "foot": 3329,
+ "engineering": 3330,
+ "talking": 3331,
+ "window": 3332,
+ "dropped": 3333,
+ "##ter": 3334,
+ "miss": 3335,
+ "baby": 3336,
+ "boys": 3337,
+ "break": 3338,
+ "1975": 3339,
+ "stars": 3340,
+ "edge": 3341,
+ "remember": 3342,
+ "policy": 3343,
+ "carried": 3344,
+ "train": 3345,
+ "stadium": 3346,
+ "bar": 3347,
+ "sex": 3348,
+ "angeles": 3349,
+ "evidence": 3350,
+ "##ge": 3351,
+ "becoming": 3352,
+ "assistant": 3353,
+ "soviet": 3354,
+ "1977": 3355,
+ "upper": 3356,
+ "step": 3357,
+ "wing": 3358,
+ "1970": 3359,
+ "youth": 3360,
+ "financial": 3361,
+ "reach": 3362,
+ "##ll": 3363,
+ "actor": 3364,
+ "numerous": 3365,
+ "##se": 3366,
+ "##st": 3367,
+ "nodded": 3368,
+ "arrived": 3369,
+ "##ation": 3370,
+ "minute": 3371,
+ "##nt": 3372,
+ "believed": 3373,
+ "sorry": 3374,
+ "complex": 3375,
+ "beautiful": 3376,
+ "victory": 3377,
+ "associated": 3378,
+ "temple": 3379,
+ "1968": 3380,
+ "1973": 3381,
+ "chance": 3382,
+ "perhaps": 3383,
+ "metal": 3384,
+ "##son": 3385,
+ "1945": 3386,
+ "bishop": 3387,
+ "##et": 3388,
+ "lee": 3389,
+ "launched": 3390,
+ "particularly": 3391,
+ "tree": 3392,
+ "le": 3393,
+ "retired": 3394,
+ "subject": 3395,
+ "prize": 3396,
+ "contains": 3397,
+ "yeah": 3398,
+ "theory": 3399,
+ "empire": 3400,
+ "##ce": 3401,
+ "suddenly": 3402,
+ "waiting": 3403,
+ "trust": 3404,
+ "recording": 3405,
+ "##to": 3406,
+ "happy": 3407,
+ "terms": 3408,
+ "camp": 3409,
+ "champion": 3410,
+ "1971": 3411,
+ "religious": 3412,
+ "pass": 3413,
+ "zealand": 3414,
+ "names": 3415,
+ "2nd": 3416,
+ "port": 3417,
+ "ancient": 3418,
+ "tom": 3419,
+ "corner": 3420,
+ "represented": 3421,
+ "watch": 3422,
+ "legal": 3423,
+ "anti": 3424,
+ "justice": 3425,
+ "cause": 3426,
+ "watched": 3427,
+ "brothers": 3428,
+ "45": 3429,
+ "material": 3430,
+ "changes": 3431,
+ "simply": 3432,
+ "response": 3433,
+ "louis": 3434,
+ "fast": 3435,
+ "##ting": 3436,
+ "answer": 3437,
+ "60": 3438,
+ "historical": 3439,
+ "1969": 3440,
+ "stories": 3441,
+ "straight": 3442,
+ "create": 3443,
+ "feature": 3444,
+ "increased": 3445,
+ "rate": 3446,
+ "administration": 3447,
+ "virginia": 3448,
+ "el": 3449,
+ "activities": 3450,
+ "cultural": 3451,
+ "overall": 3452,
+ "winner": 3453,
+ "programs": 3454,
+ "basketball": 3455,
+ "legs": 3456,
+ "guard": 3457,
+ "beyond": 3458,
+ "cast": 3459,
+ "doctor": 3460,
+ "mm": 3461,
+ "flight": 3462,
+ "results": 3463,
+ "remains": 3464,
+ "cost": 3465,
+ "effect": 3466,
+ "winter": 3467,
+ "##ble": 3468,
+ "larger": 3469,
+ "islands": 3470,
+ "problems": 3471,
+ "chairman": 3472,
+ "grew": 3473,
+ "commander": 3474,
+ "isn": 3475,
+ "1967": 3476,
+ "pay": 3477,
+ "failed": 3478,
+ "selected": 3479,
+ "hurt": 3480,
+ "fort": 3481,
+ "box": 3482,
+ "regiment": 3483,
+ "majority": 3484,
+ "journal": 3485,
+ "35": 3486,
+ "edward": 3487,
+ "plans": 3488,
+ "##ke": 3489,
+ "##ni": 3490,
+ "shown": 3491,
+ "pretty": 3492,
+ "irish": 3493,
+ "characters": 3494,
+ "directly": 3495,
+ "scene": 3496,
+ "likely": 3497,
+ "operated": 3498,
+ "allow": 3499,
+ "spring": 3500,
+ "##j": 3501,
+ "junior": 3502,
+ "matches": 3503,
+ "looks": 3504,
+ "mike": 3505,
+ "houses": 3506,
+ "fellow": 3507,
+ "##tion": 3508,
+ "beach": 3509,
+ "marriage": 3510,
+ "##ham": 3511,
+ "##ive": 3512,
+ "rules": 3513,
+ "oil": 3514,
+ "65": 3515,
+ "florida": 3516,
+ "expected": 3517,
+ "nearby": 3518,
+ "congress": 3519,
+ "sam": 3520,
+ "peace": 3521,
+ "recent": 3522,
+ "iii": 3523,
+ "wait": 3524,
+ "subsequently": 3525,
+ "cell": 3526,
+ "##do": 3527,
+ "variety": 3528,
+ "serving": 3529,
+ "agreed": 3530,
+ "please": 3531,
+ "poor": 3532,
+ "joe": 3533,
+ "pacific": 3534,
+ "attempt": 3535,
+ "wood": 3536,
+ "democratic": 3537,
+ "piece": 3538,
+ "prime": 3539,
+ "##ca": 3540,
+ "rural": 3541,
+ "mile": 3542,
+ "touch": 3543,
+ "appears": 3544,
+ "township": 3545,
+ "1964": 3546,
+ "1966": 3547,
+ "soldiers": 3548,
+ "##men": 3549,
+ "##ized": 3550,
+ "1965": 3551,
+ "pennsylvania": 3552,
+ "closer": 3553,
+ "fighting": 3554,
+ "claimed": 3555,
+ "score": 3556,
+ "jones": 3557,
+ "physical": 3558,
+ "editor": 3559,
+ "##ous": 3560,
+ "filled": 3561,
+ "genus": 3562,
+ "specific": 3563,
+ "sitting": 3564,
+ "super": 3565,
+ "mom": 3566,
+ "##va": 3567,
+ "therefore": 3568,
+ "supported": 3569,
+ "status": 3570,
+ "fear": 3571,
+ "cases": 3572,
+ "store": 3573,
+ "meaning": 3574,
+ "wales": 3575,
+ "minor": 3576,
+ "spain": 3577,
+ "tower": 3578,
+ "focus": 3579,
+ "vice": 3580,
+ "frank": 3581,
+ "follow": 3582,
+ "parish": 3583,
+ "separate": 3584,
+ "golden": 3585,
+ "horse": 3586,
+ "fifth": 3587,
+ "remaining": 3588,
+ "branch": 3589,
+ "32": 3590,
+ "presented": 3591,
+ "stared": 3592,
+ "##id": 3593,
+ "uses": 3594,
+ "secret": 3595,
+ "forms": 3596,
+ "##co": 3597,
+ "baseball": 3598,
+ "exactly": 3599,
+ "##ck": 3600,
+ "choice": 3601,
+ "note": 3602,
+ "discovered": 3603,
+ "travel": 3604,
+ "composed": 3605,
+ "truth": 3606,
+ "russia": 3607,
+ "ball": 3608,
+ "color": 3609,
+ "kiss": 3610,
+ "dad": 3611,
+ "wind": 3612,
+ "continue": 3613,
+ "ring": 3614,
+ "referred": 3615,
+ "numbers": 3616,
+ "digital": 3617,
+ "greater": 3618,
+ "##ns": 3619,
+ "metres": 3620,
+ "slightly": 3621,
+ "direct": 3622,
+ "increase": 3623,
+ "1960": 3624,
+ "responsible": 3625,
+ "crew": 3626,
+ "rule": 3627,
+ "trees": 3628,
+ "troops": 3629,
+ "##no": 3630,
+ "broke": 3631,
+ "goes": 3632,
+ "individuals": 3633,
+ "hundred": 3634,
+ "weight": 3635,
+ "creek": 3636,
+ "sleep": 3637,
+ "memory": 3638,
+ "defense": 3639,
+ "provides": 3640,
+ "ordered": 3641,
+ "code": 3642,
+ "value": 3643,
+ "jewish": 3644,
+ "windows": 3645,
+ "1944": 3646,
+ "safe": 3647,
+ "judge": 3648,
+ "whatever": 3649,
+ "corps": 3650,
+ "realized": 3651,
+ "growing": 3652,
+ "pre": 3653,
+ "##ga": 3654,
+ "cities": 3655,
+ "alexander": 3656,
+ "gaze": 3657,
+ "lies": 3658,
+ "spread": 3659,
+ "scott": 3660,
+ "letter": 3661,
+ "showed": 3662,
+ "situation": 3663,
+ "mayor": 3664,
+ "transport": 3665,
+ "watching": 3666,
+ "workers": 3667,
+ "extended": 3668,
+ "##li": 3669,
+ "expression": 3670,
+ "normal": 3671,
+ "##ment": 3672,
+ "chart": 3673,
+ "multiple": 3674,
+ "border": 3675,
+ "##ba": 3676,
+ "host": 3677,
+ "##ner": 3678,
+ "daily": 3679,
+ "mrs": 3680,
+ "walls": 3681,
+ "piano": 3682,
+ "##ko": 3683,
+ "heat": 3684,
+ "cannot": 3685,
+ "##ate": 3686,
+ "earned": 3687,
+ "products": 3688,
+ "drama": 3689,
+ "era": 3690,
+ "authority": 3691,
+ "seasons": 3692,
+ "join": 3693,
+ "grade": 3694,
+ "##io": 3695,
+ "sign": 3696,
+ "difficult": 3697,
+ "machine": 3698,
+ "1963": 3699,
+ "territory": 3700,
+ "mainly": 3701,
+ "##wood": 3702,
+ "stations": 3703,
+ "squadron": 3704,
+ "1962": 3705,
+ "stepped": 3706,
+ "iron": 3707,
+ "19th": 3708,
+ "##led": 3709,
+ "serve": 3710,
+ "appear": 3711,
+ "sky": 3712,
+ "speak": 3713,
+ "broken": 3714,
+ "charge": 3715,
+ "knowledge": 3716,
+ "kilometres": 3717,
+ "removed": 3718,
+ "ships": 3719,
+ "article": 3720,
+ "campus": 3721,
+ "simple": 3722,
+ "##ty": 3723,
+ "pushed": 3724,
+ "britain": 3725,
+ "##ve": 3726,
+ "leaves": 3727,
+ "recently": 3728,
+ "cd": 3729,
+ "soft": 3730,
+ "boston": 3731,
+ "latter": 3732,
+ "easy": 3733,
+ "acquired": 3734,
+ "poland": 3735,
+ "##sa": 3736,
+ "quality": 3737,
+ "officers": 3738,
+ "presence": 3739,
+ "planned": 3740,
+ "nations": 3741,
+ "mass": 3742,
+ "broadcast": 3743,
+ "jean": 3744,
+ "share": 3745,
+ "image": 3746,
+ "influence": 3747,
+ "wild": 3748,
+ "offer": 3749,
+ "emperor": 3750,
+ "electric": 3751,
+ "reading": 3752,
+ "headed": 3753,
+ "ability": 3754,
+ "promoted": 3755,
+ "yellow": 3756,
+ "ministry": 3757,
+ "1942": 3758,
+ "throat": 3759,
+ "smaller": 3760,
+ "politician": 3761,
+ "##by": 3762,
+ "latin": 3763,
+ "spoke": 3764,
+ "cars": 3765,
+ "williams": 3766,
+ "males": 3767,
+ "lack": 3768,
+ "pop": 3769,
+ "80": 3770,
+ "##ier": 3771,
+ "acting": 3772,
+ "seeing": 3773,
+ "consists": 3774,
+ "##ti": 3775,
+ "estate": 3776,
+ "1961": 3777,
+ "pressure": 3778,
+ "johnson": 3779,
+ "newspaper": 3780,
+ "jr": 3781,
+ "chris": 3782,
+ "olympics": 3783,
+ "online": 3784,
+ "conditions": 3785,
+ "beat": 3786,
+ "elements": 3787,
+ "walking": 3788,
+ "vote": 3789,
+ "##field": 3790,
+ "needs": 3791,
+ "carolina": 3792,
+ "text": 3793,
+ "featuring": 3794,
+ "global": 3795,
+ "block": 3796,
+ "shirt": 3797,
+ "levels": 3798,
+ "francisco": 3799,
+ "purpose": 3800,
+ "females": 3801,
+ "et": 3802,
+ "dutch": 3803,
+ "duke": 3804,
+ "ahead": 3805,
+ "gas": 3806,
+ "twice": 3807,
+ "safety": 3808,
+ "serious": 3809,
+ "turning": 3810,
+ "highly": 3811,
+ "lieutenant": 3812,
+ "firm": 3813,
+ "maria": 3814,
+ "amount": 3815,
+ "mixed": 3816,
+ "daniel": 3817,
+ "proposed": 3818,
+ "perfect": 3819,
+ "agreement": 3820,
+ "affairs": 3821,
+ "3rd": 3822,
+ "seconds": 3823,
+ "contemporary": 3824,
+ "paid": 3825,
+ "1943": 3826,
+ "prison": 3827,
+ "save": 3828,
+ "kitchen": 3829,
+ "label": 3830,
+ "administrative": 3831,
+ "intended": 3832,
+ "constructed": 3833,
+ "academic": 3834,
+ "nice": 3835,
+ "teacher": 3836,
+ "races": 3837,
+ "1956": 3838,
+ "formerly": 3839,
+ "corporation": 3840,
+ "ben": 3841,
+ "nation": 3842,
+ "issued": 3843,
+ "shut": 3844,
+ "1958": 3845,
+ "drums": 3846,
+ "housing": 3847,
+ "victoria": 3848,
+ "seems": 3849,
+ "opera": 3850,
+ "1959": 3851,
+ "graduated": 3852,
+ "function": 3853,
+ "von": 3854,
+ "mentioned": 3855,
+ "picked": 3856,
+ "build": 3857,
+ "recognized": 3858,
+ "shortly": 3859,
+ "protection": 3860,
+ "picture": 3861,
+ "notable": 3862,
+ "exchange": 3863,
+ "elections": 3864,
+ "1980s": 3865,
+ "loved": 3866,
+ "percent": 3867,
+ "racing": 3868,
+ "fish": 3869,
+ "elizabeth": 3870,
+ "garden": 3871,
+ "volume": 3872,
+ "hockey": 3873,
+ "1941": 3874,
+ "beside": 3875,
+ "settled": 3876,
+ "##ford": 3877,
+ "1940": 3878,
+ "competed": 3879,
+ "replied": 3880,
+ "drew": 3881,
+ "1948": 3882,
+ "actress": 3883,
+ "marine": 3884,
+ "scotland": 3885,
+ "steel": 3886,
+ "glanced": 3887,
+ "farm": 3888,
+ "steve": 3889,
+ "1957": 3890,
+ "risk": 3891,
+ "tonight": 3892,
+ "positive": 3893,
+ "magic": 3894,
+ "singles": 3895,
+ "effects": 3896,
+ "gray": 3897,
+ "screen": 3898,
+ "dog": 3899,
+ "##ja": 3900,
+ "residents": 3901,
+ "bus": 3902,
+ "sides": 3903,
+ "none": 3904,
+ "secondary": 3905,
+ "literature": 3906,
+ "polish": 3907,
+ "destroyed": 3908,
+ "flying": 3909,
+ "founder": 3910,
+ "households": 3911,
+ "1939": 3912,
+ "lay": 3913,
+ "reserve": 3914,
+ "usa": 3915,
+ "gallery": 3916,
+ "##ler": 3917,
+ "1946": 3918,
+ "industrial": 3919,
+ "younger": 3920,
+ "approach": 3921,
+ "appearances": 3922,
+ "urban": 3923,
+ "ones": 3924,
+ "1950": 3925,
+ "finish": 3926,
+ "avenue": 3927,
+ "powerful": 3928,
+ "fully": 3929,
+ "growth": 3930,
+ "page": 3931,
+ "honor": 3932,
+ "jersey": 3933,
+ "projects": 3934,
+ "advanced": 3935,
+ "revealed": 3936,
+ "basic": 3937,
+ "90": 3938,
+ "infantry": 3939,
+ "pair": 3940,
+ "equipment": 3941,
+ "visit": 3942,
+ "33": 3943,
+ "evening": 3944,
+ "search": 3945,
+ "grant": 3946,
+ "effort": 3947,
+ "solo": 3948,
+ "treatment": 3949,
+ "buried": 3950,
+ "republican": 3951,
+ "primarily": 3952,
+ "bottom": 3953,
+ "owner": 3954,
+ "1970s": 3955,
+ "israel": 3956,
+ "gives": 3957,
+ "jim": 3958,
+ "dream": 3959,
+ "bob": 3960,
+ "remain": 3961,
+ "spot": 3962,
+ "70": 3963,
+ "notes": 3964,
+ "produce": 3965,
+ "champions": 3966,
+ "contact": 3967,
+ "ed": 3968,
+ "soul": 3969,
+ "accepted": 3970,
+ "ways": 3971,
+ "del": 3972,
+ "##ally": 3973,
+ "losing": 3974,
+ "split": 3975,
+ "price": 3976,
+ "capacity": 3977,
+ "basis": 3978,
+ "trial": 3979,
+ "questions": 3980,
+ "##ina": 3981,
+ "1955": 3982,
+ "20th": 3983,
+ "guess": 3984,
+ "officially": 3985,
+ "memorial": 3986,
+ "naval": 3987,
+ "initial": 3988,
+ "##ization": 3989,
+ "whispered": 3990,
+ "median": 3991,
+ "engineer": 3992,
+ "##ful": 3993,
+ "sydney": 3994,
+ "##go": 3995,
+ "columbia": 3996,
+ "strength": 3997,
+ "300": 3998,
+ "1952": 3999,
+ "tears": 4000,
+ "senate": 4001,
+ "00": 4002,
+ "card": 4003,
+ "asian": 4004,
+ "agent": 4005,
+ "1947": 4006,
+ "software": 4007,
+ "44": 4008,
+ "draw": 4009,
+ "warm": 4010,
+ "supposed": 4011,
+ "com": 4012,
+ "pro": 4013,
+ "##il": 4014,
+ "transferred": 4015,
+ "leaned": 4016,
+ "##at": 4017,
+ "candidate": 4018,
+ "escape": 4019,
+ "mountains": 4020,
+ "asia": 4021,
+ "potential": 4022,
+ "activity": 4023,
+ "entertainment": 4024,
+ "seem": 4025,
+ "traffic": 4026,
+ "jackson": 4027,
+ "murder": 4028,
+ "36": 4029,
+ "slow": 4030,
+ "product": 4031,
+ "orchestra": 4032,
+ "haven": 4033,
+ "agency": 4034,
+ "bbc": 4035,
+ "taught": 4036,
+ "website": 4037,
+ "comedy": 4038,
+ "unable": 4039,
+ "storm": 4040,
+ "planning": 4041,
+ "albums": 4042,
+ "rugby": 4043,
+ "environment": 4044,
+ "scientific": 4045,
+ "grabbed": 4046,
+ "protect": 4047,
+ "##hi": 4048,
+ "boat": 4049,
+ "typically": 4050,
+ "1954": 4051,
+ "1953": 4052,
+ "damage": 4053,
+ "principal": 4054,
+ "divided": 4055,
+ "dedicated": 4056,
+ "mount": 4057,
+ "ohio": 4058,
+ "##berg": 4059,
+ "pick": 4060,
+ "fought": 4061,
+ "driver": 4062,
+ "##der": 4063,
+ "empty": 4064,
+ "shoulders": 4065,
+ "sort": 4066,
+ "thank": 4067,
+ "berlin": 4068,
+ "prominent": 4069,
+ "account": 4070,
+ "freedom": 4071,
+ "necessary": 4072,
+ "efforts": 4073,
+ "alex": 4074,
+ "headquarters": 4075,
+ "follows": 4076,
+ "alongside": 4077,
+ "des": 4078,
+ "simon": 4079,
+ "andrew": 4080,
+ "suggested": 4081,
+ "operating": 4082,
+ "learning": 4083,
+ "steps": 4084,
+ "1949": 4085,
+ "sweet": 4086,
+ "technical": 4087,
+ "begin": 4088,
+ "easily": 4089,
+ "34": 4090,
+ "teeth": 4091,
+ "speaking": 4092,
+ "settlement": 4093,
+ "scale": 4094,
+ "##sh": 4095,
+ "renamed": 4096,
+ "ray": 4097,
+ "max": 4098,
+ "enemy": 4099,
+ "semi": 4100,
+ "joint": 4101,
+ "compared": 4102,
+ "##rd": 4103,
+ "scottish": 4104,
+ "leadership": 4105,
+ "analysis": 4106,
+ "offers": 4107,
+ "georgia": 4108,
+ "pieces": 4109,
+ "captured": 4110,
+ "animal": 4111,
+ "deputy": 4112,
+ "guest": 4113,
+ "organized": 4114,
+ "##lin": 4115,
+ "tony": 4116,
+ "combined": 4117,
+ "method": 4118,
+ "challenge": 4119,
+ "1960s": 4120,
+ "huge": 4121,
+ "wants": 4122,
+ "battalion": 4123,
+ "sons": 4124,
+ "rise": 4125,
+ "crime": 4126,
+ "types": 4127,
+ "facilities": 4128,
+ "telling": 4129,
+ "path": 4130,
+ "1951": 4131,
+ "platform": 4132,
+ "sit": 4133,
+ "1990s": 4134,
+ "##lo": 4135,
+ "tells": 4136,
+ "assigned": 4137,
+ "rich": 4138,
+ "pull": 4139,
+ "##ot": 4140,
+ "commonly": 4141,
+ "alive": 4142,
+ "##za": 4143,
+ "letters": 4144,
+ "concept": 4145,
+ "conducted": 4146,
+ "wearing": 4147,
+ "happen": 4148,
+ "bought": 4149,
+ "becomes": 4150,
+ "holy": 4151,
+ "gets": 4152,
+ "ocean": 4153,
+ "defeat": 4154,
+ "languages": 4155,
+ "purchased": 4156,
+ "coffee": 4157,
+ "occurred": 4158,
+ "titled": 4159,
+ "##q": 4160,
+ "declared": 4161,
+ "applied": 4162,
+ "sciences": 4163,
+ "concert": 4164,
+ "sounds": 4165,
+ "jazz": 4166,
+ "brain": 4167,
+ "##me": 4168,
+ "painting": 4169,
+ "fleet": 4170,
+ "tax": 4171,
+ "nick": 4172,
+ "##ius": 4173,
+ "michigan": 4174,
+ "count": 4175,
+ "animals": 4176,
+ "leaders": 4177,
+ "episodes": 4178,
+ "##line": 4179,
+ "content": 4180,
+ "##den": 4181,
+ "birth": 4182,
+ "##it": 4183,
+ "clubs": 4184,
+ "64": 4185,
+ "palace": 4186,
+ "critical": 4187,
+ "refused": 4188,
+ "fair": 4189,
+ "leg": 4190,
+ "laughed": 4191,
+ "returning": 4192,
+ "surrounding": 4193,
+ "participated": 4194,
+ "formation": 4195,
+ "lifted": 4196,
+ "pointed": 4197,
+ "connected": 4198,
+ "rome": 4199,
+ "medicine": 4200,
+ "laid": 4201,
+ "taylor": 4202,
+ "santa": 4203,
+ "powers": 4204,
+ "adam": 4205,
+ "tall": 4206,
+ "shared": 4207,
+ "focused": 4208,
+ "knowing": 4209,
+ "yards": 4210,
+ "entrance": 4211,
+ "falls": 4212,
+ "##wa": 4213,
+ "calling": 4214,
+ "##ad": 4215,
+ "sources": 4216,
+ "chosen": 4217,
+ "beneath": 4218,
+ "resources": 4219,
+ "yard": 4220,
+ "##ite": 4221,
+ "nominated": 4222,
+ "silence": 4223,
+ "zone": 4224,
+ "defined": 4225,
+ "##que": 4226,
+ "gained": 4227,
+ "thirty": 4228,
+ "38": 4229,
+ "bodies": 4230,
+ "moon": 4231,
+ "##ard": 4232,
+ "adopted": 4233,
+ "christmas": 4234,
+ "widely": 4235,
+ "register": 4236,
+ "apart": 4237,
+ "iran": 4238,
+ "premier": 4239,
+ "serves": 4240,
+ "du": 4241,
+ "unknown": 4242,
+ "parties": 4243,
+ "##les": 4244,
+ "generation": 4245,
+ "##ff": 4246,
+ "continues": 4247,
+ "quick": 4248,
+ "fields": 4249,
+ "brigade": 4250,
+ "quiet": 4251,
+ "teaching": 4252,
+ "clothes": 4253,
+ "impact": 4254,
+ "weapons": 4255,
+ "partner": 4256,
+ "flat": 4257,
+ "theater": 4258,
+ "supreme": 4259,
+ "1938": 4260,
+ "37": 4261,
+ "relations": 4262,
+ "##tor": 4263,
+ "plants": 4264,
+ "suffered": 4265,
+ "1936": 4266,
+ "wilson": 4267,
+ "kids": 4268,
+ "begins": 4269,
+ "##age": 4270,
+ "1918": 4271,
+ "seats": 4272,
+ "armed": 4273,
+ "internet": 4274,
+ "models": 4275,
+ "worth": 4276,
+ "laws": 4277,
+ "400": 4278,
+ "communities": 4279,
+ "classes": 4280,
+ "background": 4281,
+ "knows": 4282,
+ "thanks": 4283,
+ "quarter": 4284,
+ "reaching": 4285,
+ "humans": 4286,
+ "carry": 4287,
+ "killing": 4288,
+ "format": 4289,
+ "kong": 4290,
+ "hong": 4291,
+ "setting": 4292,
+ "75": 4293,
+ "architecture": 4294,
+ "disease": 4295,
+ "railroad": 4296,
+ "inc": 4297,
+ "possibly": 4298,
+ "wish": 4299,
+ "arthur": 4300,
+ "thoughts": 4301,
+ "harry": 4302,
+ "doors": 4303,
+ "density": 4304,
+ "##di": 4305,
+ "crowd": 4306,
+ "illinois": 4307,
+ "stomach": 4308,
+ "tone": 4309,
+ "unique": 4310,
+ "reports": 4311,
+ "anyway": 4312,
+ "##ir": 4313,
+ "liberal": 4314,
+ "der": 4315,
+ "vehicle": 4316,
+ "thick": 4317,
+ "dry": 4318,
+ "drug": 4319,
+ "faced": 4320,
+ "largely": 4321,
+ "facility": 4322,
+ "theme": 4323,
+ "holds": 4324,
+ "creation": 4325,
+ "strange": 4326,
+ "colonel": 4327,
+ "##mi": 4328,
+ "revolution": 4329,
+ "bell": 4330,
+ "politics": 4331,
+ "turns": 4332,
+ "silent": 4333,
+ "rail": 4334,
+ "relief": 4335,
+ "independence": 4336,
+ "combat": 4337,
+ "shape": 4338,
+ "write": 4339,
+ "determined": 4340,
+ "sales": 4341,
+ "learned": 4342,
+ "4th": 4343,
+ "finger": 4344,
+ "oxford": 4345,
+ "providing": 4346,
+ "1937": 4347,
+ "heritage": 4348,
+ "fiction": 4349,
+ "situated": 4350,
+ "designated": 4351,
+ "allowing": 4352,
+ "distribution": 4353,
+ "hosted": 4354,
+ "##est": 4355,
+ "sight": 4356,
+ "interview": 4357,
+ "estimated": 4358,
+ "reduced": 4359,
+ "##ria": 4360,
+ "toronto": 4361,
+ "footballer": 4362,
+ "keeping": 4363,
+ "guys": 4364,
+ "damn": 4365,
+ "claim": 4366,
+ "motion": 4367,
+ "sport": 4368,
+ "sixth": 4369,
+ "stayed": 4370,
+ "##ze": 4371,
+ "en": 4372,
+ "rear": 4373,
+ "receive": 4374,
+ "handed": 4375,
+ "twelve": 4376,
+ "dress": 4377,
+ "audience": 4378,
+ "granted": 4379,
+ "brazil": 4380,
+ "##well": 4381,
+ "spirit": 4382,
+ "##ated": 4383,
+ "noticed": 4384,
+ "etc": 4385,
+ "olympic": 4386,
+ "representative": 4387,
+ "eric": 4388,
+ "tight": 4389,
+ "trouble": 4390,
+ "reviews": 4391,
+ "drink": 4392,
+ "vampire": 4393,
+ "missing": 4394,
+ "roles": 4395,
+ "ranked": 4396,
+ "newly": 4397,
+ "household": 4398,
+ "finals": 4399,
+ "wave": 4400,
+ "critics": 4401,
+ "##ee": 4402,
+ "phase": 4403,
+ "massachusetts": 4404,
+ "pilot": 4405,
+ "unlike": 4406,
+ "philadelphia": 4407,
+ "bright": 4408,
+ "guns": 4409,
+ "crown": 4410,
+ "organizations": 4411,
+ "roof": 4412,
+ "42": 4413,
+ "respectively": 4414,
+ "clearly": 4415,
+ "tongue": 4416,
+ "marked": 4417,
+ "circle": 4418,
+ "fox": 4419,
+ "korea": 4420,
+ "bronze": 4421,
+ "brian": 4422,
+ "expanded": 4423,
+ "sexual": 4424,
+ "supply": 4425,
+ "yourself": 4426,
+ "inspired": 4427,
+ "labour": 4428,
+ "fc": 4429,
+ "##ah": 4430,
+ "reference": 4431,
+ "vision": 4432,
+ "draft": 4433,
+ "connection": 4434,
+ "brand": 4435,
+ "reasons": 4436,
+ "1935": 4437,
+ "classic": 4438,
+ "driving": 4439,
+ "trip": 4440,
+ "jesus": 4441,
+ "cells": 4442,
+ "entry": 4443,
+ "1920": 4444,
+ "neither": 4445,
+ "trail": 4446,
+ "claims": 4447,
+ "atlantic": 4448,
+ "orders": 4449,
+ "labor": 4450,
+ "nose": 4451,
+ "afraid": 4452,
+ "identified": 4453,
+ "intelligence": 4454,
+ "calls": 4455,
+ "cancer": 4456,
+ "attacked": 4457,
+ "passing": 4458,
+ "stephen": 4459,
+ "positions": 4460,
+ "imperial": 4461,
+ "grey": 4462,
+ "jason": 4463,
+ "39": 4464,
+ "sunday": 4465,
+ "48": 4466,
+ "swedish": 4467,
+ "avoid": 4468,
+ "extra": 4469,
+ "uncle": 4470,
+ "message": 4471,
+ "covers": 4472,
+ "allows": 4473,
+ "surprise": 4474,
+ "materials": 4475,
+ "fame": 4476,
+ "hunter": 4477,
+ "##ji": 4478,
+ "1930": 4479,
+ "citizens": 4480,
+ "figures": 4481,
+ "davis": 4482,
+ "environmental": 4483,
+ "confirmed": 4484,
+ "shit": 4485,
+ "titles": 4486,
+ "di": 4487,
+ "performing": 4488,
+ "difference": 4489,
+ "acts": 4490,
+ "attacks": 4491,
+ "##ov": 4492,
+ "existing": 4493,
+ "votes": 4494,
+ "opportunity": 4495,
+ "nor": 4496,
+ "shop": 4497,
+ "entirely": 4498,
+ "trains": 4499,
+ "opposite": 4500,
+ "pakistan": 4501,
+ "##pa": 4502,
+ "develop": 4503,
+ "resulted": 4504,
+ "representatives": 4505,
+ "actions": 4506,
+ "reality": 4507,
+ "pressed": 4508,
+ "##ish": 4509,
+ "barely": 4510,
+ "wine": 4511,
+ "conversation": 4512,
+ "faculty": 4513,
+ "northwest": 4514,
+ "ends": 4515,
+ "documentary": 4516,
+ "nuclear": 4517,
+ "stock": 4518,
+ "grace": 4519,
+ "sets": 4520,
+ "eat": 4521,
+ "alternative": 4522,
+ "##ps": 4523,
+ "bag": 4524,
+ "resulting": 4525,
+ "creating": 4526,
+ "surprised": 4527,
+ "cemetery": 4528,
+ "1919": 4529,
+ "drop": 4530,
+ "finding": 4531,
+ "sarah": 4532,
+ "cricket": 4533,
+ "streets": 4534,
+ "tradition": 4535,
+ "ride": 4536,
+ "1933": 4537,
+ "exhibition": 4538,
+ "target": 4539,
+ "ear": 4540,
+ "explained": 4541,
+ "rain": 4542,
+ "composer": 4543,
+ "injury": 4544,
+ "apartment": 4545,
+ "municipal": 4546,
+ "educational": 4547,
+ "occupied": 4548,
+ "netherlands": 4549,
+ "clean": 4550,
+ "billion": 4551,
+ "constitution": 4552,
+ "learn": 4553,
+ "1914": 4554,
+ "maximum": 4555,
+ "classical": 4556,
+ "francis": 4557,
+ "lose": 4558,
+ "opposition": 4559,
+ "jose": 4560,
+ "ontario": 4561,
+ "bear": 4562,
+ "core": 4563,
+ "hills": 4564,
+ "rolled": 4565,
+ "ending": 4566,
+ "drawn": 4567,
+ "permanent": 4568,
+ "fun": 4569,
+ "##tes": 4570,
+ "##lla": 4571,
+ "lewis": 4572,
+ "sites": 4573,
+ "chamber": 4574,
+ "ryan": 4575,
+ "##way": 4576,
+ "scoring": 4577,
+ "height": 4578,
+ "1934": 4579,
+ "##house": 4580,
+ "lyrics": 4581,
+ "staring": 4582,
+ "55": 4583,
+ "officials": 4584,
+ "1917": 4585,
+ "snow": 4586,
+ "oldest": 4587,
+ "##tic": 4588,
+ "orange": 4589,
+ "##ger": 4590,
+ "qualified": 4591,
+ "interior": 4592,
+ "apparently": 4593,
+ "succeeded": 4594,
+ "thousand": 4595,
+ "dinner": 4596,
+ "lights": 4597,
+ "existence": 4598,
+ "fans": 4599,
+ "heavily": 4600,
+ "41": 4601,
+ "greatest": 4602,
+ "conservative": 4603,
+ "send": 4604,
+ "bowl": 4605,
+ "plus": 4606,
+ "enter": 4607,
+ "catch": 4608,
+ "##un": 4609,
+ "economy": 4610,
+ "duty": 4611,
+ "1929": 4612,
+ "speech": 4613,
+ "authorities": 4614,
+ "princess": 4615,
+ "performances": 4616,
+ "versions": 4617,
+ "shall": 4618,
+ "graduate": 4619,
+ "pictures": 4620,
+ "effective": 4621,
+ "remembered": 4622,
+ "poetry": 4623,
+ "desk": 4624,
+ "crossed": 4625,
+ "starring": 4626,
+ "starts": 4627,
+ "passenger": 4628,
+ "sharp": 4629,
+ "##ant": 4630,
+ "acres": 4631,
+ "ass": 4632,
+ "weather": 4633,
+ "falling": 4634,
+ "rank": 4635,
+ "fund": 4636,
+ "supporting": 4637,
+ "check": 4638,
+ "adult": 4639,
+ "publishing": 4640,
+ "heads": 4641,
+ "cm": 4642,
+ "southeast": 4643,
+ "lane": 4644,
+ "##burg": 4645,
+ "application": 4646,
+ "bc": 4647,
+ "##ura": 4648,
+ "les": 4649,
+ "condition": 4650,
+ "transfer": 4651,
+ "prevent": 4652,
+ "display": 4653,
+ "ex": 4654,
+ "regions": 4655,
+ "earl": 4656,
+ "federation": 4657,
+ "cool": 4658,
+ "relatively": 4659,
+ "answered": 4660,
+ "besides": 4661,
+ "1928": 4662,
+ "obtained": 4663,
+ "portion": 4664,
+ "##town": 4665,
+ "mix": 4666,
+ "##ding": 4667,
+ "reaction": 4668,
+ "liked": 4669,
+ "dean": 4670,
+ "express": 4671,
+ "peak": 4672,
+ "1932": 4673,
+ "##tte": 4674,
+ "counter": 4675,
+ "religion": 4676,
+ "chain": 4677,
+ "rare": 4678,
+ "miller": 4679,
+ "convention": 4680,
+ "aid": 4681,
+ "lie": 4682,
+ "vehicles": 4683,
+ "mobile": 4684,
+ "perform": 4685,
+ "squad": 4686,
+ "wonder": 4687,
+ "lying": 4688,
+ "crazy": 4689,
+ "sword": 4690,
+ "##ping": 4691,
+ "attempted": 4692,
+ "centuries": 4693,
+ "weren": 4694,
+ "philosophy": 4695,
+ "category": 4696,
+ "##ize": 4697,
+ "anna": 4698,
+ "interested": 4699,
+ "47": 4700,
+ "sweden": 4701,
+ "wolf": 4702,
+ "frequently": 4703,
+ "abandoned": 4704,
+ "kg": 4705,
+ "literary": 4706,
+ "alliance": 4707,
+ "task": 4708,
+ "entitled": 4709,
+ "##ay": 4710,
+ "threw": 4711,
+ "promotion": 4712,
+ "factory": 4713,
+ "tiny": 4714,
+ "soccer": 4715,
+ "visited": 4716,
+ "matt": 4717,
+ "fm": 4718,
+ "achieved": 4719,
+ "52": 4720,
+ "defence": 4721,
+ "internal": 4722,
+ "persian": 4723,
+ "43": 4724,
+ "methods": 4725,
+ "##ging": 4726,
+ "arrested": 4727,
+ "otherwise": 4728,
+ "cambridge": 4729,
+ "programming": 4730,
+ "villages": 4731,
+ "elementary": 4732,
+ "districts": 4733,
+ "rooms": 4734,
+ "criminal": 4735,
+ "conflict": 4736,
+ "worry": 4737,
+ "trained": 4738,
+ "1931": 4739,
+ "attempts": 4740,
+ "waited": 4741,
+ "signal": 4742,
+ "bird": 4743,
+ "truck": 4744,
+ "subsequent": 4745,
+ "programme": 4746,
+ "##ol": 4747,
+ "ad": 4748,
+ "49": 4749,
+ "communist": 4750,
+ "details": 4751,
+ "faith": 4752,
+ "sector": 4753,
+ "patrick": 4754,
+ "carrying": 4755,
+ "laugh": 4756,
+ "##ss": 4757,
+ "controlled": 4758,
+ "korean": 4759,
+ "showing": 4760,
+ "origin": 4761,
+ "fuel": 4762,
+ "evil": 4763,
+ "1927": 4764,
+ "##ent": 4765,
+ "brief": 4766,
+ "identity": 4767,
+ "darkness": 4768,
+ "address": 4769,
+ "pool": 4770,
+ "missed": 4771,
+ "publication": 4772,
+ "web": 4773,
+ "planet": 4774,
+ "ian": 4775,
+ "anne": 4776,
+ "wings": 4777,
+ "invited": 4778,
+ "##tt": 4779,
+ "briefly": 4780,
+ "standards": 4781,
+ "kissed": 4782,
+ "##be": 4783,
+ "ideas": 4784,
+ "climate": 4785,
+ "causing": 4786,
+ "walter": 4787,
+ "worse": 4788,
+ "albert": 4789,
+ "articles": 4790,
+ "winners": 4791,
+ "desire": 4792,
+ "aged": 4793,
+ "northeast": 4794,
+ "dangerous": 4795,
+ "gate": 4796,
+ "doubt": 4797,
+ "1922": 4798,
+ "wooden": 4799,
+ "multi": 4800,
+ "##ky": 4801,
+ "poet": 4802,
+ "rising": 4803,
+ "funding": 4804,
+ "46": 4805,
+ "communications": 4806,
+ "communication": 4807,
+ "violence": 4808,
+ "copies": 4809,
+ "prepared": 4810,
+ "ford": 4811,
+ "investigation": 4812,
+ "skills": 4813,
+ "1924": 4814,
+ "pulling": 4815,
+ "electronic": 4816,
+ "##ak": 4817,
+ "##ial": 4818,
+ "##han": 4819,
+ "containing": 4820,
+ "ultimately": 4821,
+ "offices": 4822,
+ "singing": 4823,
+ "understanding": 4824,
+ "restaurant": 4825,
+ "tomorrow": 4826,
+ "fashion": 4827,
+ "christ": 4828,
+ "ward": 4829,
+ "da": 4830,
+ "pope": 4831,
+ "stands": 4832,
+ "5th": 4833,
+ "flow": 4834,
+ "studios": 4835,
+ "aired": 4836,
+ "commissioned": 4837,
+ "contained": 4838,
+ "exist": 4839,
+ "fresh": 4840,
+ "americans": 4841,
+ "##per": 4842,
+ "wrestling": 4843,
+ "approved": 4844,
+ "kid": 4845,
+ "employed": 4846,
+ "respect": 4847,
+ "suit": 4848,
+ "1925": 4849,
+ "angel": 4850,
+ "asking": 4851,
+ "increasing": 4852,
+ "frame": 4853,
+ "angry": 4854,
+ "selling": 4855,
+ "1950s": 4856,
+ "thin": 4857,
+ "finds": 4858,
+ "##nd": 4859,
+ "temperature": 4860,
+ "statement": 4861,
+ "ali": 4862,
+ "explain": 4863,
+ "inhabitants": 4864,
+ "towns": 4865,
+ "extensive": 4866,
+ "narrow": 4867,
+ "51": 4868,
+ "jane": 4869,
+ "flowers": 4870,
+ "images": 4871,
+ "promise": 4872,
+ "somewhere": 4873,
+ "object": 4874,
+ "fly": 4875,
+ "closely": 4876,
+ "##ls": 4877,
+ "1912": 4878,
+ "bureau": 4879,
+ "cape": 4880,
+ "1926": 4881,
+ "weekly": 4882,
+ "presidential": 4883,
+ "legislative": 4884,
+ "1921": 4885,
+ "##ai": 4886,
+ "##au": 4887,
+ "launch": 4888,
+ "founding": 4889,
+ "##ny": 4890,
+ "978": 4891,
+ "##ring": 4892,
+ "artillery": 4893,
+ "strike": 4894,
+ "un": 4895,
+ "institutions": 4896,
+ "roll": 4897,
+ "writers": 4898,
+ "landing": 4899,
+ "chose": 4900,
+ "kevin": 4901,
+ "anymore": 4902,
+ "pp": 4903,
+ "##ut": 4904,
+ "attorney": 4905,
+ "fit": 4906,
+ "dan": 4907,
+ "billboard": 4908,
+ "receiving": 4909,
+ "agricultural": 4910,
+ "breaking": 4911,
+ "sought": 4912,
+ "dave": 4913,
+ "admitted": 4914,
+ "lands": 4915,
+ "mexican": 4916,
+ "##bury": 4917,
+ "charlie": 4918,
+ "specifically": 4919,
+ "hole": 4920,
+ "iv": 4921,
+ "howard": 4922,
+ "credit": 4923,
+ "moscow": 4924,
+ "roads": 4925,
+ "accident": 4926,
+ "1923": 4927,
+ "proved": 4928,
+ "wear": 4929,
+ "struck": 4930,
+ "hey": 4931,
+ "guards": 4932,
+ "stuff": 4933,
+ "slid": 4934,
+ "expansion": 4935,
+ "1915": 4936,
+ "cat": 4937,
+ "anthony": 4938,
+ "##kin": 4939,
+ "melbourne": 4940,
+ "opposed": 4941,
+ "sub": 4942,
+ "southwest": 4943,
+ "architect": 4944,
+ "failure": 4945,
+ "plane": 4946,
+ "1916": 4947,
+ "##ron": 4948,
+ "map": 4949,
+ "camera": 4950,
+ "tank": 4951,
+ "listen": 4952,
+ "regarding": 4953,
+ "wet": 4954,
+ "introduction": 4955,
+ "metropolitan": 4956,
+ "link": 4957,
+ "ep": 4958,
+ "fighter": 4959,
+ "inch": 4960,
+ "grown": 4961,
+ "gene": 4962,
+ "anger": 4963,
+ "fixed": 4964,
+ "buy": 4965,
+ "dvd": 4966,
+ "khan": 4967,
+ "domestic": 4968,
+ "worldwide": 4969,
+ "chapel": 4970,
+ "mill": 4971,
+ "functions": 4972,
+ "examples": 4973,
+ "##head": 4974,
+ "developing": 4975,
+ "1910": 4976,
+ "turkey": 4977,
+ "hits": 4978,
+ "pocket": 4979,
+ "antonio": 4980,
+ "papers": 4981,
+ "grow": 4982,
+ "unless": 4983,
+ "circuit": 4984,
+ "18th": 4985,
+ "concerned": 4986,
+ "attached": 4987,
+ "journalist": 4988,
+ "selection": 4989,
+ "journey": 4990,
+ "converted": 4991,
+ "provincial": 4992,
+ "painted": 4993,
+ "hearing": 4994,
+ "aren": 4995,
+ "bands": 4996,
+ "negative": 4997,
+ "aside": 4998,
+ "wondered": 4999,
+ "knight": 5000,
+ "lap": 5001,
+ "survey": 5002,
+ "ma": 5003,
+ "##ow": 5004,
+ "noise": 5005,
+ "billy": 5006,
+ "##ium": 5007,
+ "shooting": 5008,
+ "guide": 5009,
+ "bedroom": 5010,
+ "priest": 5011,
+ "resistance": 5012,
+ "motor": 5013,
+ "homes": 5014,
+ "sounded": 5015,
+ "giant": 5016,
+ "##mer": 5017,
+ "150": 5018,
+ "scenes": 5019,
+ "equal": 5020,
+ "comic": 5021,
+ "patients": 5022,
+ "hidden": 5023,
+ "solid": 5024,
+ "actual": 5025,
+ "bringing": 5026,
+ "afternoon": 5027,
+ "touched": 5028,
+ "funds": 5029,
+ "wedding": 5030,
+ "consisted": 5031,
+ "marie": 5032,
+ "canal": 5033,
+ "sr": 5034,
+ "kim": 5035,
+ "treaty": 5036,
+ "turkish": 5037,
+ "recognition": 5038,
+ "residence": 5039,
+ "cathedral": 5040,
+ "broad": 5041,
+ "knees": 5042,
+ "incident": 5043,
+ "shaped": 5044,
+ "fired": 5045,
+ "norwegian": 5046,
+ "handle": 5047,
+ "cheek": 5048,
+ "contest": 5049,
+ "represent": 5050,
+ "##pe": 5051,
+ "representing": 5052,
+ "beauty": 5053,
+ "##sen": 5054,
+ "birds": 5055,
+ "advantage": 5056,
+ "emergency": 5057,
+ "wrapped": 5058,
+ "drawing": 5059,
+ "notice": 5060,
+ "pink": 5061,
+ "broadcasting": 5062,
+ "##ong": 5063,
+ "somehow": 5064,
+ "bachelor": 5065,
+ "seventh": 5066,
+ "collected": 5067,
+ "registered": 5068,
+ "establishment": 5069,
+ "alan": 5070,
+ "assumed": 5071,
+ "chemical": 5072,
+ "personnel": 5073,
+ "roger": 5074,
+ "retirement": 5075,
+ "jeff": 5076,
+ "portuguese": 5077,
+ "wore": 5078,
+ "tied": 5079,
+ "device": 5080,
+ "threat": 5081,
+ "progress": 5082,
+ "advance": 5083,
+ "##ised": 5084,
+ "banks": 5085,
+ "hired": 5086,
+ "manchester": 5087,
+ "nfl": 5088,
+ "teachers": 5089,
+ "structures": 5090,
+ "forever": 5091,
+ "##bo": 5092,
+ "tennis": 5093,
+ "helping": 5094,
+ "saturday": 5095,
+ "sale": 5096,
+ "applications": 5097,
+ "junction": 5098,
+ "hip": 5099,
+ "incorporated": 5100,
+ "neighborhood": 5101,
+ "dressed": 5102,
+ "ceremony": 5103,
+ "##ds": 5104,
+ "influenced": 5105,
+ "hers": 5106,
+ "visual": 5107,
+ "stairs": 5108,
+ "decades": 5109,
+ "inner": 5110,
+ "kansas": 5111,
+ "hung": 5112,
+ "hoped": 5113,
+ "gain": 5114,
+ "scheduled": 5115,
+ "downtown": 5116,
+ "engaged": 5117,
+ "austria": 5118,
+ "clock": 5119,
+ "norway": 5120,
+ "certainly": 5121,
+ "pale": 5122,
+ "protected": 5123,
+ "1913": 5124,
+ "victor": 5125,
+ "employees": 5126,
+ "plate": 5127,
+ "putting": 5128,
+ "surrounded": 5129,
+ "##ists": 5130,
+ "finishing": 5131,
+ "blues": 5132,
+ "tropical": 5133,
+ "##ries": 5134,
+ "minnesota": 5135,
+ "consider": 5136,
+ "philippines": 5137,
+ "accept": 5138,
+ "54": 5139,
+ "retrieved": 5140,
+ "1900": 5141,
+ "concern": 5142,
+ "anderson": 5143,
+ "properties": 5144,
+ "institution": 5145,
+ "gordon": 5146,
+ "successfully": 5147,
+ "vietnam": 5148,
+ "##dy": 5149,
+ "backing": 5150,
+ "outstanding": 5151,
+ "muslim": 5152,
+ "crossing": 5153,
+ "folk": 5154,
+ "producing": 5155,
+ "usual": 5156,
+ "demand": 5157,
+ "occurs": 5158,
+ "observed": 5159,
+ "lawyer": 5160,
+ "educated": 5161,
+ "##ana": 5162,
+ "kelly": 5163,
+ "string": 5164,
+ "pleasure": 5165,
+ "budget": 5166,
+ "items": 5167,
+ "quietly": 5168,
+ "colorado": 5169,
+ "philip": 5170,
+ "typical": 5171,
+ "##worth": 5172,
+ "derived": 5173,
+ "600": 5174,
+ "survived": 5175,
+ "asks": 5176,
+ "mental": 5177,
+ "##ide": 5178,
+ "56": 5179,
+ "jake": 5180,
+ "jews": 5181,
+ "distinguished": 5182,
+ "ltd": 5183,
+ "1911": 5184,
+ "sri": 5185,
+ "extremely": 5186,
+ "53": 5187,
+ "athletic": 5188,
+ "loud": 5189,
+ "thousands": 5190,
+ "worried": 5191,
+ "shadow": 5192,
+ "transportation": 5193,
+ "horses": 5194,
+ "weapon": 5195,
+ "arena": 5196,
+ "importance": 5197,
+ "users": 5198,
+ "tim": 5199,
+ "objects": 5200,
+ "contributed": 5201,
+ "dragon": 5202,
+ "douglas": 5203,
+ "aware": 5204,
+ "senator": 5205,
+ "johnny": 5206,
+ "jordan": 5207,
+ "sisters": 5208,
+ "engines": 5209,
+ "flag": 5210,
+ "investment": 5211,
+ "samuel": 5212,
+ "shock": 5213,
+ "capable": 5214,
+ "clark": 5215,
+ "row": 5216,
+ "wheel": 5217,
+ "refers": 5218,
+ "session": 5219,
+ "familiar": 5220,
+ "biggest": 5221,
+ "wins": 5222,
+ "hate": 5223,
+ "maintained": 5224,
+ "drove": 5225,
+ "hamilton": 5226,
+ "request": 5227,
+ "expressed": 5228,
+ "injured": 5229,
+ "underground": 5230,
+ "churches": 5231,
+ "walker": 5232,
+ "wars": 5233,
+ "tunnel": 5234,
+ "passes": 5235,
+ "stupid": 5236,
+ "agriculture": 5237,
+ "softly": 5238,
+ "cabinet": 5239,
+ "regarded": 5240,
+ "joining": 5241,
+ "indiana": 5242,
+ "##ea": 5243,
+ "##ms": 5244,
+ "push": 5245,
+ "dates": 5246,
+ "spend": 5247,
+ "behavior": 5248,
+ "woods": 5249,
+ "protein": 5250,
+ "gently": 5251,
+ "chase": 5252,
+ "morgan": 5253,
+ "mention": 5254,
+ "burning": 5255,
+ "wake": 5256,
+ "combination": 5257,
+ "occur": 5258,
+ "mirror": 5259,
+ "leads": 5260,
+ "jimmy": 5261,
+ "indeed": 5262,
+ "impossible": 5263,
+ "singapore": 5264,
+ "paintings": 5265,
+ "covering": 5266,
+ "##nes": 5267,
+ "soldier": 5268,
+ "locations": 5269,
+ "attendance": 5270,
+ "sell": 5271,
+ "historian": 5272,
+ "wisconsin": 5273,
+ "invasion": 5274,
+ "argued": 5275,
+ "painter": 5276,
+ "diego": 5277,
+ "changing": 5278,
+ "egypt": 5279,
+ "##don": 5280,
+ "experienced": 5281,
+ "inches": 5282,
+ "##ku": 5283,
+ "missouri": 5284,
+ "vol": 5285,
+ "grounds": 5286,
+ "spoken": 5287,
+ "switzerland": 5288,
+ "##gan": 5289,
+ "reform": 5290,
+ "rolling": 5291,
+ "ha": 5292,
+ "forget": 5293,
+ "massive": 5294,
+ "resigned": 5295,
+ "burned": 5296,
+ "allen": 5297,
+ "tennessee": 5298,
+ "locked": 5299,
+ "values": 5300,
+ "improved": 5301,
+ "##mo": 5302,
+ "wounded": 5303,
+ "universe": 5304,
+ "sick": 5305,
+ "dating": 5306,
+ "facing": 5307,
+ "pack": 5308,
+ "purchase": 5309,
+ "user": 5310,
+ "##pur": 5311,
+ "moments": 5312,
+ "##ul": 5313,
+ "merged": 5314,
+ "anniversary": 5315,
+ "1908": 5316,
+ "coal": 5317,
+ "brick": 5318,
+ "understood": 5319,
+ "causes": 5320,
+ "dynasty": 5321,
+ "queensland": 5322,
+ "establish": 5323,
+ "stores": 5324,
+ "crisis": 5325,
+ "promote": 5326,
+ "hoping": 5327,
+ "views": 5328,
+ "cards": 5329,
+ "referee": 5330,
+ "extension": 5331,
+ "##si": 5332,
+ "raise": 5333,
+ "arizona": 5334,
+ "improve": 5335,
+ "colonial": 5336,
+ "formal": 5337,
+ "charged": 5338,
+ "##rt": 5339,
+ "palm": 5340,
+ "lucky": 5341,
+ "hide": 5342,
+ "rescue": 5343,
+ "faces": 5344,
+ "95": 5345,
+ "feelings": 5346,
+ "candidates": 5347,
+ "juan": 5348,
+ "##ell": 5349,
+ "goods": 5350,
+ "6th": 5351,
+ "courses": 5352,
+ "weekend": 5353,
+ "59": 5354,
+ "luke": 5355,
+ "cash": 5356,
+ "fallen": 5357,
+ "##om": 5358,
+ "delivered": 5359,
+ "affected": 5360,
+ "installed": 5361,
+ "carefully": 5362,
+ "tries": 5363,
+ "swiss": 5364,
+ "hollywood": 5365,
+ "costs": 5366,
+ "lincoln": 5367,
+ "responsibility": 5368,
+ "##he": 5369,
+ "shore": 5370,
+ "file": 5371,
+ "proper": 5372,
+ "normally": 5373,
+ "maryland": 5374,
+ "assistance": 5375,
+ "jump": 5376,
+ "constant": 5377,
+ "offering": 5378,
+ "friendly": 5379,
+ "waters": 5380,
+ "persons": 5381,
+ "realize": 5382,
+ "contain": 5383,
+ "trophy": 5384,
+ "800": 5385,
+ "partnership": 5386,
+ "factor": 5387,
+ "58": 5388,
+ "musicians": 5389,
+ "cry": 5390,
+ "bound": 5391,
+ "oregon": 5392,
+ "indicated": 5393,
+ "hero": 5394,
+ "houston": 5395,
+ "medium": 5396,
+ "##ure": 5397,
+ "consisting": 5398,
+ "somewhat": 5399,
+ "##ara": 5400,
+ "57": 5401,
+ "cycle": 5402,
+ "##che": 5403,
+ "beer": 5404,
+ "moore": 5405,
+ "frederick": 5406,
+ "gotten": 5407,
+ "eleven": 5408,
+ "worst": 5409,
+ "weak": 5410,
+ "approached": 5411,
+ "arranged": 5412,
+ "chin": 5413,
+ "loan": 5414,
+ "universal": 5415,
+ "bond": 5416,
+ "fifteen": 5417,
+ "pattern": 5418,
+ "disappeared": 5419,
+ "##ney": 5420,
+ "translated": 5421,
+ "##zed": 5422,
+ "lip": 5423,
+ "arab": 5424,
+ "capture": 5425,
+ "interests": 5426,
+ "insurance": 5427,
+ "##chi": 5428,
+ "shifted": 5429,
+ "cave": 5430,
+ "prix": 5431,
+ "warning": 5432,
+ "sections": 5433,
+ "courts": 5434,
+ "coat": 5435,
+ "plot": 5436,
+ "smell": 5437,
+ "feed": 5438,
+ "golf": 5439,
+ "favorite": 5440,
+ "maintain": 5441,
+ "knife": 5442,
+ "vs": 5443,
+ "voted": 5444,
+ "degrees": 5445,
+ "finance": 5446,
+ "quebec": 5447,
+ "opinion": 5448,
+ "translation": 5449,
+ "manner": 5450,
+ "ruled": 5451,
+ "operate": 5452,
+ "productions": 5453,
+ "choose": 5454,
+ "musician": 5455,
+ "discovery": 5456,
+ "confused": 5457,
+ "tired": 5458,
+ "separated": 5459,
+ "stream": 5460,
+ "techniques": 5461,
+ "committed": 5462,
+ "attend": 5463,
+ "ranking": 5464,
+ "kings": 5465,
+ "throw": 5466,
+ "passengers": 5467,
+ "measure": 5468,
+ "horror": 5469,
+ "fan": 5470,
+ "mining": 5471,
+ "sand": 5472,
+ "danger": 5473,
+ "salt": 5474,
+ "calm": 5475,
+ "decade": 5476,
+ "dam": 5477,
+ "require": 5478,
+ "runner": 5479,
+ "##ik": 5480,
+ "rush": 5481,
+ "associate": 5482,
+ "greece": 5483,
+ "##ker": 5484,
+ "rivers": 5485,
+ "consecutive": 5486,
+ "matthew": 5487,
+ "##ski": 5488,
+ "sighed": 5489,
+ "sq": 5490,
+ "documents": 5491,
+ "steam": 5492,
+ "edited": 5493,
+ "closing": 5494,
+ "tie": 5495,
+ "accused": 5496,
+ "1905": 5497,
+ "##ini": 5498,
+ "islamic": 5499,
+ "distributed": 5500,
+ "directors": 5501,
+ "organisation": 5502,
+ "bruce": 5503,
+ "7th": 5504,
+ "breathing": 5505,
+ "mad": 5506,
+ "lit": 5507,
+ "arrival": 5508,
+ "concrete": 5509,
+ "taste": 5510,
+ "08": 5511,
+ "composition": 5512,
+ "shaking": 5513,
+ "faster": 5514,
+ "amateur": 5515,
+ "adjacent": 5516,
+ "stating": 5517,
+ "1906": 5518,
+ "twin": 5519,
+ "flew": 5520,
+ "##ran": 5521,
+ "tokyo": 5522,
+ "publications": 5523,
+ "##tone": 5524,
+ "obviously": 5525,
+ "ridge": 5526,
+ "storage": 5527,
+ "1907": 5528,
+ "carl": 5529,
+ "pages": 5530,
+ "concluded": 5531,
+ "desert": 5532,
+ "driven": 5533,
+ "universities": 5534,
+ "ages": 5535,
+ "terminal": 5536,
+ "sequence": 5537,
+ "borough": 5538,
+ "250": 5539,
+ "constituency": 5540,
+ "creative": 5541,
+ "cousin": 5542,
+ "economics": 5543,
+ "dreams": 5544,
+ "margaret": 5545,
+ "notably": 5546,
+ "reduce": 5547,
+ "montreal": 5548,
+ "mode": 5549,
+ "17th": 5550,
+ "ears": 5551,
+ "saved": 5552,
+ "jan": 5553,
+ "vocal": 5554,
+ "##ica": 5555,
+ "1909": 5556,
+ "andy": 5557,
+ "##jo": 5558,
+ "riding": 5559,
+ "roughly": 5560,
+ "threatened": 5561,
+ "##ise": 5562,
+ "meters": 5563,
+ "meanwhile": 5564,
+ "landed": 5565,
+ "compete": 5566,
+ "repeated": 5567,
+ "grass": 5568,
+ "czech": 5569,
+ "regularly": 5570,
+ "charges": 5571,
+ "tea": 5572,
+ "sudden": 5573,
+ "appeal": 5574,
+ "##ung": 5575,
+ "solution": 5576,
+ "describes": 5577,
+ "pierre": 5578,
+ "classification": 5579,
+ "glad": 5580,
+ "parking": 5581,
+ "##ning": 5582,
+ "belt": 5583,
+ "physics": 5584,
+ "99": 5585,
+ "rachel": 5586,
+ "add": 5587,
+ "hungarian": 5588,
+ "participate": 5589,
+ "expedition": 5590,
+ "damaged": 5591,
+ "gift": 5592,
+ "childhood": 5593,
+ "85": 5594,
+ "fifty": 5595,
+ "##red": 5596,
+ "mathematics": 5597,
+ "jumped": 5598,
+ "letting": 5599,
+ "defensive": 5600,
+ "mph": 5601,
+ "##ux": 5602,
+ "##gh": 5603,
+ "testing": 5604,
+ "##hip": 5605,
+ "hundreds": 5606,
+ "shoot": 5607,
+ "owners": 5608,
+ "matters": 5609,
+ "smoke": 5610,
+ "israeli": 5611,
+ "kentucky": 5612,
+ "dancing": 5613,
+ "mounted": 5614,
+ "grandfather": 5615,
+ "emma": 5616,
+ "designs": 5617,
+ "profit": 5618,
+ "argentina": 5619,
+ "##gs": 5620,
+ "truly": 5621,
+ "li": 5622,
+ "lawrence": 5623,
+ "cole": 5624,
+ "begun": 5625,
+ "detroit": 5626,
+ "willing": 5627,
+ "branches": 5628,
+ "smiling": 5629,
+ "decide": 5630,
+ "miami": 5631,
+ "enjoyed": 5632,
+ "recordings": 5633,
+ "##dale": 5634,
+ "poverty": 5635,
+ "ethnic": 5636,
+ "gay": 5637,
+ "##bi": 5638,
+ "gary": 5639,
+ "arabic": 5640,
+ "09": 5641,
+ "accompanied": 5642,
+ "##one": 5643,
+ "##ons": 5644,
+ "fishing": 5645,
+ "determine": 5646,
+ "residential": 5647,
+ "acid": 5648,
+ "##ary": 5649,
+ "alice": 5650,
+ "returns": 5651,
+ "starred": 5652,
+ "mail": 5653,
+ "##ang": 5654,
+ "jonathan": 5655,
+ "strategy": 5656,
+ "##ue": 5657,
+ "net": 5658,
+ "forty": 5659,
+ "cook": 5660,
+ "businesses": 5661,
+ "equivalent": 5662,
+ "commonwealth": 5663,
+ "distinct": 5664,
+ "ill": 5665,
+ "##cy": 5666,
+ "seriously": 5667,
+ "##ors": 5668,
+ "##ped": 5669,
+ "shift": 5670,
+ "harris": 5671,
+ "replace": 5672,
+ "rio": 5673,
+ "imagine": 5674,
+ "formula": 5675,
+ "ensure": 5676,
+ "##ber": 5677,
+ "additionally": 5678,
+ "scheme": 5679,
+ "conservation": 5680,
+ "occasionally": 5681,
+ "purposes": 5682,
+ "feels": 5683,
+ "favor": 5684,
+ "##and": 5685,
+ "##ore": 5686,
+ "1930s": 5687,
+ "contrast": 5688,
+ "hanging": 5689,
+ "hunt": 5690,
+ "movies": 5691,
+ "1904": 5692,
+ "instruments": 5693,
+ "victims": 5694,
+ "danish": 5695,
+ "christopher": 5696,
+ "busy": 5697,
+ "demon": 5698,
+ "sugar": 5699,
+ "earliest": 5700,
+ "colony": 5701,
+ "studying": 5702,
+ "balance": 5703,
+ "duties": 5704,
+ "##ks": 5705,
+ "belgium": 5706,
+ "slipped": 5707,
+ "carter": 5708,
+ "05": 5709,
+ "visible": 5710,
+ "stages": 5711,
+ "iraq": 5712,
+ "fifa": 5713,
+ "##im": 5714,
+ "commune": 5715,
+ "forming": 5716,
+ "zero": 5717,
+ "07": 5718,
+ "continuing": 5719,
+ "talked": 5720,
+ "counties": 5721,
+ "legend": 5722,
+ "bathroom": 5723,
+ "option": 5724,
+ "tail": 5725,
+ "clay": 5726,
+ "daughters": 5727,
+ "afterwards": 5728,
+ "severe": 5729,
+ "jaw": 5730,
+ "visitors": 5731,
+ "##ded": 5732,
+ "devices": 5733,
+ "aviation": 5734,
+ "russell": 5735,
+ "kate": 5736,
+ "##vi": 5737,
+ "entering": 5738,
+ "subjects": 5739,
+ "##ino": 5740,
+ "temporary": 5741,
+ "swimming": 5742,
+ "forth": 5743,
+ "smooth": 5744,
+ "ghost": 5745,
+ "audio": 5746,
+ "bush": 5747,
+ "operates": 5748,
+ "rocks": 5749,
+ "movements": 5750,
+ "signs": 5751,
+ "eddie": 5752,
+ "##tz": 5753,
+ "ann": 5754,
+ "voices": 5755,
+ "honorary": 5756,
+ "06": 5757,
+ "memories": 5758,
+ "dallas": 5759,
+ "pure": 5760,
+ "measures": 5761,
+ "racial": 5762,
+ "promised": 5763,
+ "66": 5764,
+ "harvard": 5765,
+ "ceo": 5766,
+ "16th": 5767,
+ "parliamentary": 5768,
+ "indicate": 5769,
+ "benefit": 5770,
+ "flesh": 5771,
+ "dublin": 5772,
+ "louisiana": 5773,
+ "1902": 5774,
+ "1901": 5775,
+ "patient": 5776,
+ "sleeping": 5777,
+ "1903": 5778,
+ "membership": 5779,
+ "coastal": 5780,
+ "medieval": 5781,
+ "wanting": 5782,
+ "element": 5783,
+ "scholars": 5784,
+ "rice": 5785,
+ "62": 5786,
+ "limit": 5787,
+ "survive": 5788,
+ "makeup": 5789,
+ "rating": 5790,
+ "definitely": 5791,
+ "collaboration": 5792,
+ "obvious": 5793,
+ "##tan": 5794,
+ "boss": 5795,
+ "ms": 5796,
+ "baron": 5797,
+ "birthday": 5798,
+ "linked": 5799,
+ "soil": 5800,
+ "diocese": 5801,
+ "##lan": 5802,
+ "ncaa": 5803,
+ "##mann": 5804,
+ "offensive": 5805,
+ "shell": 5806,
+ "shouldn": 5807,
+ "waist": 5808,
+ "##tus": 5809,
+ "plain": 5810,
+ "ross": 5811,
+ "organ": 5812,
+ "resolution": 5813,
+ "manufacturing": 5814,
+ "adding": 5815,
+ "relative": 5816,
+ "kennedy": 5817,
+ "98": 5818,
+ "whilst": 5819,
+ "moth": 5820,
+ "marketing": 5821,
+ "gardens": 5822,
+ "crash": 5823,
+ "72": 5824,
+ "heading": 5825,
+ "partners": 5826,
+ "credited": 5827,
+ "carlos": 5828,
+ "moves": 5829,
+ "cable": 5830,
+ "##zi": 5831,
+ "marshall": 5832,
+ "##out": 5833,
+ "depending": 5834,
+ "bottle": 5835,
+ "represents": 5836,
+ "rejected": 5837,
+ "responded": 5838,
+ "existed": 5839,
+ "04": 5840,
+ "jobs": 5841,
+ "denmark": 5842,
+ "lock": 5843,
+ "##ating": 5844,
+ "treated": 5845,
+ "graham": 5846,
+ "routes": 5847,
+ "talent": 5848,
+ "commissioner": 5849,
+ "drugs": 5850,
+ "secure": 5851,
+ "tests": 5852,
+ "reign": 5853,
+ "restored": 5854,
+ "photography": 5855,
+ "##gi": 5856,
+ "contributions": 5857,
+ "oklahoma": 5858,
+ "designer": 5859,
+ "disc": 5860,
+ "grin": 5861,
+ "seattle": 5862,
+ "robin": 5863,
+ "paused": 5864,
+ "atlanta": 5865,
+ "unusual": 5866,
+ "##gate": 5867,
+ "praised": 5868,
+ "las": 5869,
+ "laughing": 5870,
+ "satellite": 5871,
+ "hungary": 5872,
+ "visiting": 5873,
+ "##sky": 5874,
+ "interesting": 5875,
+ "factors": 5876,
+ "deck": 5877,
+ "poems": 5878,
+ "norman": 5879,
+ "##water": 5880,
+ "stuck": 5881,
+ "speaker": 5882,
+ "rifle": 5883,
+ "domain": 5884,
+ "premiered": 5885,
+ "##her": 5886,
+ "dc": 5887,
+ "comics": 5888,
+ "actors": 5889,
+ "01": 5890,
+ "reputation": 5891,
+ "eliminated": 5892,
+ "8th": 5893,
+ "ceiling": 5894,
+ "prisoners": 5895,
+ "script": 5896,
+ "##nce": 5897,
+ "leather": 5898,
+ "austin": 5899,
+ "mississippi": 5900,
+ "rapidly": 5901,
+ "admiral": 5902,
+ "parallel": 5903,
+ "charlotte": 5904,
+ "guilty": 5905,
+ "tools": 5906,
+ "gender": 5907,
+ "divisions": 5908,
+ "fruit": 5909,
+ "##bs": 5910,
+ "laboratory": 5911,
+ "nelson": 5912,
+ "fantasy": 5913,
+ "marry": 5914,
+ "rapid": 5915,
+ "aunt": 5916,
+ "tribe": 5917,
+ "requirements": 5918,
+ "aspects": 5919,
+ "suicide": 5920,
+ "amongst": 5921,
+ "adams": 5922,
+ "bone": 5923,
+ "ukraine": 5924,
+ "abc": 5925,
+ "kick": 5926,
+ "sees": 5927,
+ "edinburgh": 5928,
+ "clothing": 5929,
+ "column": 5930,
+ "rough": 5931,
+ "gods": 5932,
+ "hunting": 5933,
+ "broadway": 5934,
+ "gathered": 5935,
+ "concerns": 5936,
+ "##ek": 5937,
+ "spending": 5938,
+ "ty": 5939,
+ "12th": 5940,
+ "snapped": 5941,
+ "requires": 5942,
+ "solar": 5943,
+ "bones": 5944,
+ "cavalry": 5945,
+ "##tta": 5946,
+ "iowa": 5947,
+ "drinking": 5948,
+ "waste": 5949,
+ "index": 5950,
+ "franklin": 5951,
+ "charity": 5952,
+ "thompson": 5953,
+ "stewart": 5954,
+ "tip": 5955,
+ "flash": 5956,
+ "landscape": 5957,
+ "friday": 5958,
+ "enjoy": 5959,
+ "singh": 5960,
+ "poem": 5961,
+ "listening": 5962,
+ "##back": 5963,
+ "eighth": 5964,
+ "fred": 5965,
+ "differences": 5966,
+ "adapted": 5967,
+ "bomb": 5968,
+ "ukrainian": 5969,
+ "surgery": 5970,
+ "corporate": 5971,
+ "masters": 5972,
+ "anywhere": 5973,
+ "##more": 5974,
+ "waves": 5975,
+ "odd": 5976,
+ "sean": 5977,
+ "portugal": 5978,
+ "orleans": 5979,
+ "dick": 5980,
+ "debate": 5981,
+ "kent": 5982,
+ "eating": 5983,
+ "puerto": 5984,
+ "cleared": 5985,
+ "96": 5986,
+ "expect": 5987,
+ "cinema": 5988,
+ "97": 5989,
+ "guitarist": 5990,
+ "blocks": 5991,
+ "electrical": 5992,
+ "agree": 5993,
+ "involving": 5994,
+ "depth": 5995,
+ "dying": 5996,
+ "panel": 5997,
+ "struggle": 5998,
+ "##ged": 5999,
+ "peninsula": 6000,
+ "adults": 6001,
+ "novels": 6002,
+ "emerged": 6003,
+ "vienna": 6004,
+ "metro": 6005,
+ "debuted": 6006,
+ "shoes": 6007,
+ "tamil": 6008,
+ "songwriter": 6009,
+ "meets": 6010,
+ "prove": 6011,
+ "beating": 6012,
+ "instance": 6013,
+ "heaven": 6014,
+ "scared": 6015,
+ "sending": 6016,
+ "marks": 6017,
+ "artistic": 6018,
+ "passage": 6019,
+ "superior": 6020,
+ "03": 6021,
+ "significantly": 6022,
+ "shopping": 6023,
+ "##tive": 6024,
+ "retained": 6025,
+ "##izing": 6026,
+ "malaysia": 6027,
+ "technique": 6028,
+ "cheeks": 6029,
+ "##ola": 6030,
+ "warren": 6031,
+ "maintenance": 6032,
+ "destroy": 6033,
+ "extreme": 6034,
+ "allied": 6035,
+ "120": 6036,
+ "appearing": 6037,
+ "##yn": 6038,
+ "fill": 6039,
+ "advice": 6040,
+ "alabama": 6041,
+ "qualifying": 6042,
+ "policies": 6043,
+ "cleveland": 6044,
+ "hat": 6045,
+ "battery": 6046,
+ "smart": 6047,
+ "authors": 6048,
+ "10th": 6049,
+ "soundtrack": 6050,
+ "acted": 6051,
+ "dated": 6052,
+ "lb": 6053,
+ "glance": 6054,
+ "equipped": 6055,
+ "coalition": 6056,
+ "funny": 6057,
+ "outer": 6058,
+ "ambassador": 6059,
+ "roy": 6060,
+ "possibility": 6061,
+ "couples": 6062,
+ "campbell": 6063,
+ "dna": 6064,
+ "loose": 6065,
+ "ethan": 6066,
+ "supplies": 6067,
+ "1898": 6068,
+ "gonna": 6069,
+ "88": 6070,
+ "monster": 6071,
+ "##res": 6072,
+ "shake": 6073,
+ "agents": 6074,
+ "frequency": 6075,
+ "springs": 6076,
+ "dogs": 6077,
+ "practices": 6078,
+ "61": 6079,
+ "gang": 6080,
+ "plastic": 6081,
+ "easier": 6082,
+ "suggests": 6083,
+ "gulf": 6084,
+ "blade": 6085,
+ "exposed": 6086,
+ "colors": 6087,
+ "industries": 6088,
+ "markets": 6089,
+ "pan": 6090,
+ "nervous": 6091,
+ "electoral": 6092,
+ "charts": 6093,
+ "legislation": 6094,
+ "ownership": 6095,
+ "##idae": 6096,
+ "mac": 6097,
+ "appointment": 6098,
+ "shield": 6099,
+ "copy": 6100,
+ "assault": 6101,
+ "socialist": 6102,
+ "abbey": 6103,
+ "monument": 6104,
+ "license": 6105,
+ "throne": 6106,
+ "employment": 6107,
+ "jay": 6108,
+ "93": 6109,
+ "replacement": 6110,
+ "charter": 6111,
+ "cloud": 6112,
+ "powered": 6113,
+ "suffering": 6114,
+ "accounts": 6115,
+ "oak": 6116,
+ "connecticut": 6117,
+ "strongly": 6118,
+ "wright": 6119,
+ "colour": 6120,
+ "crystal": 6121,
+ "13th": 6122,
+ "context": 6123,
+ "welsh": 6124,
+ "networks": 6125,
+ "voiced": 6126,
+ "gabriel": 6127,
+ "jerry": 6128,
+ "##cing": 6129,
+ "forehead": 6130,
+ "mp": 6131,
+ "##ens": 6132,
+ "manage": 6133,
+ "schedule": 6134,
+ "totally": 6135,
+ "remix": 6136,
+ "##ii": 6137,
+ "forests": 6138,
+ "occupation": 6139,
+ "print": 6140,
+ "nicholas": 6141,
+ "brazilian": 6142,
+ "strategic": 6143,
+ "vampires": 6144,
+ "engineers": 6145,
+ "76": 6146,
+ "roots": 6147,
+ "seek": 6148,
+ "correct": 6149,
+ "instrumental": 6150,
+ "und": 6151,
+ "alfred": 6152,
+ "backed": 6153,
+ "hop": 6154,
+ "##des": 6155,
+ "stanley": 6156,
+ "robinson": 6157,
+ "traveled": 6158,
+ "wayne": 6159,
+ "welcome": 6160,
+ "austrian": 6161,
+ "achieve": 6162,
+ "67": 6163,
+ "exit": 6164,
+ "rates": 6165,
+ "1899": 6166,
+ "strip": 6167,
+ "whereas": 6168,
+ "##cs": 6169,
+ "sing": 6170,
+ "deeply": 6171,
+ "adventure": 6172,
+ "bobby": 6173,
+ "rick": 6174,
+ "jamie": 6175,
+ "careful": 6176,
+ "components": 6177,
+ "cap": 6178,
+ "useful": 6179,
+ "personality": 6180,
+ "knee": 6181,
+ "##shi": 6182,
+ "pushing": 6183,
+ "hosts": 6184,
+ "02": 6185,
+ "protest": 6186,
+ "ca": 6187,
+ "ottoman": 6188,
+ "symphony": 6189,
+ "##sis": 6190,
+ "63": 6191,
+ "boundary": 6192,
+ "1890": 6193,
+ "processes": 6194,
+ "considering": 6195,
+ "considerable": 6196,
+ "tons": 6197,
+ "##work": 6198,
+ "##ft": 6199,
+ "##nia": 6200,
+ "cooper": 6201,
+ "trading": 6202,
+ "dear": 6203,
+ "conduct": 6204,
+ "91": 6205,
+ "illegal": 6206,
+ "apple": 6207,
+ "revolutionary": 6208,
+ "holiday": 6209,
+ "definition": 6210,
+ "harder": 6211,
+ "##van": 6212,
+ "jacob": 6213,
+ "circumstances": 6214,
+ "destruction": 6215,
+ "##lle": 6216,
+ "popularity": 6217,
+ "grip": 6218,
+ "classified": 6219,
+ "liverpool": 6220,
+ "donald": 6221,
+ "baltimore": 6222,
+ "flows": 6223,
+ "seeking": 6224,
+ "honour": 6225,
+ "approval": 6226,
+ "92": 6227,
+ "mechanical": 6228,
+ "till": 6229,
+ "happening": 6230,
+ "statue": 6231,
+ "critic": 6232,
+ "increasingly": 6233,
+ "immediate": 6234,
+ "describe": 6235,
+ "commerce": 6236,
+ "stare": 6237,
+ "##ster": 6238,
+ "indonesia": 6239,
+ "meat": 6240,
+ "rounds": 6241,
+ "boats": 6242,
+ "baker": 6243,
+ "orthodox": 6244,
+ "depression": 6245,
+ "formally": 6246,
+ "worn": 6247,
+ "naked": 6248,
+ "claire": 6249,
+ "muttered": 6250,
+ "sentence": 6251,
+ "11th": 6252,
+ "emily": 6253,
+ "document": 6254,
+ "77": 6255,
+ "criticism": 6256,
+ "wished": 6257,
+ "vessel": 6258,
+ "spiritual": 6259,
+ "bent": 6260,
+ "virgin": 6261,
+ "parker": 6262,
+ "minimum": 6263,
+ "murray": 6264,
+ "lunch": 6265,
+ "danny": 6266,
+ "printed": 6267,
+ "compilation": 6268,
+ "keyboards": 6269,
+ "false": 6270,
+ "blow": 6271,
+ "belonged": 6272,
+ "68": 6273,
+ "raising": 6274,
+ "78": 6275,
+ "cutting": 6276,
+ "##board": 6277,
+ "pittsburgh": 6278,
+ "##up": 6279,
+ "9th": 6280,
+ "shadows": 6281,
+ "81": 6282,
+ "hated": 6283,
+ "indigenous": 6284,
+ "jon": 6285,
+ "15th": 6286,
+ "barry": 6287,
+ "scholar": 6288,
+ "ah": 6289,
+ "##zer": 6290,
+ "oliver": 6291,
+ "##gy": 6292,
+ "stick": 6293,
+ "susan": 6294,
+ "meetings": 6295,
+ "attracted": 6296,
+ "spell": 6297,
+ "romantic": 6298,
+ "##ver": 6299,
+ "ye": 6300,
+ "1895": 6301,
+ "photo": 6302,
+ "demanded": 6303,
+ "customers": 6304,
+ "##ac": 6305,
+ "1896": 6306,
+ "logan": 6307,
+ "revival": 6308,
+ "keys": 6309,
+ "modified": 6310,
+ "commanded": 6311,
+ "jeans": 6312,
+ "##ious": 6313,
+ "upset": 6314,
+ "raw": 6315,
+ "phil": 6316,
+ "detective": 6317,
+ "hiding": 6318,
+ "resident": 6319,
+ "vincent": 6320,
+ "##bly": 6321,
+ "experiences": 6322,
+ "diamond": 6323,
+ "defeating": 6324,
+ "coverage": 6325,
+ "lucas": 6326,
+ "external": 6327,
+ "parks": 6328,
+ "franchise": 6329,
+ "helen": 6330,
+ "bible": 6331,
+ "successor": 6332,
+ "percussion": 6333,
+ "celebrated": 6334,
+ "il": 6335,
+ "lift": 6336,
+ "profile": 6337,
+ "clan": 6338,
+ "romania": 6339,
+ "##ied": 6340,
+ "mills": 6341,
+ "##su": 6342,
+ "nobody": 6343,
+ "achievement": 6344,
+ "shrugged": 6345,
+ "fault": 6346,
+ "1897": 6347,
+ "rhythm": 6348,
+ "initiative": 6349,
+ "breakfast": 6350,
+ "carbon": 6351,
+ "700": 6352,
+ "69": 6353,
+ "lasted": 6354,
+ "violent": 6355,
+ "74": 6356,
+ "wound": 6357,
+ "ken": 6358,
+ "killer": 6359,
+ "gradually": 6360,
+ "filmed": 6361,
+ "°c": 6362,
+ "dollars": 6363,
+ "processing": 6364,
+ "94": 6365,
+ "remove": 6366,
+ "criticized": 6367,
+ "guests": 6368,
+ "sang": 6369,
+ "chemistry": 6370,
+ "##vin": 6371,
+ "legislature": 6372,
+ "disney": 6373,
+ "##bridge": 6374,
+ "uniform": 6375,
+ "escaped": 6376,
+ "integrated": 6377,
+ "proposal": 6378,
+ "purple": 6379,
+ "denied": 6380,
+ "liquid": 6381,
+ "karl": 6382,
+ "influential": 6383,
+ "morris": 6384,
+ "nights": 6385,
+ "stones": 6386,
+ "intense": 6387,
+ "experimental": 6388,
+ "twisted": 6389,
+ "71": 6390,
+ "84": 6391,
+ "##ld": 6392,
+ "pace": 6393,
+ "nazi": 6394,
+ "mitchell": 6395,
+ "ny": 6396,
+ "blind": 6397,
+ "reporter": 6398,
+ "newspapers": 6399,
+ "14th": 6400,
+ "centers": 6401,
+ "burn": 6402,
+ "basin": 6403,
+ "forgotten": 6404,
+ "surviving": 6405,
+ "filed": 6406,
+ "collections": 6407,
+ "monastery": 6408,
+ "losses": 6409,
+ "manual": 6410,
+ "couch": 6411,
+ "description": 6412,
+ "appropriate": 6413,
+ "merely": 6414,
+ "tag": 6415,
+ "missions": 6416,
+ "sebastian": 6417,
+ "restoration": 6418,
+ "replacing": 6419,
+ "triple": 6420,
+ "73": 6421,
+ "elder": 6422,
+ "julia": 6423,
+ "warriors": 6424,
+ "benjamin": 6425,
+ "julian": 6426,
+ "convinced": 6427,
+ "stronger": 6428,
+ "amazing": 6429,
+ "declined": 6430,
+ "versus": 6431,
+ "merchant": 6432,
+ "happens": 6433,
+ "output": 6434,
+ "finland": 6435,
+ "bare": 6436,
+ "barbara": 6437,
+ "absence": 6438,
+ "ignored": 6439,
+ "dawn": 6440,
+ "injuries": 6441,
+ "##port": 6442,
+ "producers": 6443,
+ "##ram": 6444,
+ "82": 6445,
+ "luis": 6446,
+ "##ities": 6447,
+ "kw": 6448,
+ "admit": 6449,
+ "expensive": 6450,
+ "electricity": 6451,
+ "nba": 6452,
+ "exception": 6453,
+ "symbol": 6454,
+ "##ving": 6455,
+ "ladies": 6456,
+ "shower": 6457,
+ "sheriff": 6458,
+ "characteristics": 6459,
+ "##je": 6460,
+ "aimed": 6461,
+ "button": 6462,
+ "ratio": 6463,
+ "effectively": 6464,
+ "summit": 6465,
+ "angle": 6466,
+ "jury": 6467,
+ "bears": 6468,
+ "foster": 6469,
+ "vessels": 6470,
+ "pants": 6471,
+ "executed": 6472,
+ "evans": 6473,
+ "dozen": 6474,
+ "advertising": 6475,
+ "kicked": 6476,
+ "patrol": 6477,
+ "1889": 6478,
+ "competitions": 6479,
+ "lifetime": 6480,
+ "principles": 6481,
+ "athletics": 6482,
+ "##logy": 6483,
+ "birmingham": 6484,
+ "sponsored": 6485,
+ "89": 6486,
+ "rob": 6487,
+ "nomination": 6488,
+ "1893": 6489,
+ "acoustic": 6490,
+ "##sm": 6491,
+ "creature": 6492,
+ "longest": 6493,
+ "##tra": 6494,
+ "credits": 6495,
+ "harbor": 6496,
+ "dust": 6497,
+ "josh": 6498,
+ "##so": 6499,
+ "territories": 6500,
+ "milk": 6501,
+ "infrastructure": 6502,
+ "completion": 6503,
+ "thailand": 6504,
+ "indians": 6505,
+ "leon": 6506,
+ "archbishop": 6507,
+ "##sy": 6508,
+ "assist": 6509,
+ "pitch": 6510,
+ "blake": 6511,
+ "arrangement": 6512,
+ "girlfriend": 6513,
+ "serbian": 6514,
+ "operational": 6515,
+ "hence": 6516,
+ "sad": 6517,
+ "scent": 6518,
+ "fur": 6519,
+ "dj": 6520,
+ "sessions": 6521,
+ "hp": 6522,
+ "refer": 6523,
+ "rarely": 6524,
+ "##ora": 6525,
+ "exists": 6526,
+ "1892": 6527,
+ "##ten": 6528,
+ "scientists": 6529,
+ "dirty": 6530,
+ "penalty": 6531,
+ "burst": 6532,
+ "portrait": 6533,
+ "seed": 6534,
+ "79": 6535,
+ "pole": 6536,
+ "limits": 6537,
+ "rival": 6538,
+ "1894": 6539,
+ "stable": 6540,
+ "alpha": 6541,
+ "grave": 6542,
+ "constitutional": 6543,
+ "alcohol": 6544,
+ "arrest": 6545,
+ "flower": 6546,
+ "mystery": 6547,
+ "devil": 6548,
+ "architectural": 6549,
+ "relationships": 6550,
+ "greatly": 6551,
+ "habitat": 6552,
+ "##istic": 6553,
+ "larry": 6554,
+ "progressive": 6555,
+ "remote": 6556,
+ "cotton": 6557,
+ "##ics": 6558,
+ "##ok": 6559,
+ "preserved": 6560,
+ "reaches": 6561,
+ "##ming": 6562,
+ "cited": 6563,
+ "86": 6564,
+ "vast": 6565,
+ "scholarship": 6566,
+ "decisions": 6567,
+ "cbs": 6568,
+ "joy": 6569,
+ "teach": 6570,
+ "1885": 6571,
+ "editions": 6572,
+ "knocked": 6573,
+ "eve": 6574,
+ "searching": 6575,
+ "partly": 6576,
+ "participation": 6577,
+ "gap": 6578,
+ "animated": 6579,
+ "fate": 6580,
+ "excellent": 6581,
+ "##ett": 6582,
+ "na": 6583,
+ "87": 6584,
+ "alternate": 6585,
+ "saints": 6586,
+ "youngest": 6587,
+ "##ily": 6588,
+ "climbed": 6589,
+ "##ita": 6590,
+ "##tors": 6591,
+ "suggest": 6592,
+ "##ct": 6593,
+ "discussion": 6594,
+ "staying": 6595,
+ "choir": 6596,
+ "lakes": 6597,
+ "jacket": 6598,
+ "revenue": 6599,
+ "nevertheless": 6600,
+ "peaked": 6601,
+ "instrument": 6602,
+ "wondering": 6603,
+ "annually": 6604,
+ "managing": 6605,
+ "neil": 6606,
+ "1891": 6607,
+ "signing": 6608,
+ "terry": 6609,
+ "##ice": 6610,
+ "apply": 6611,
+ "clinical": 6612,
+ "brooklyn": 6613,
+ "aim": 6614,
+ "catherine": 6615,
+ "fuck": 6616,
+ "farmers": 6617,
+ "figured": 6618,
+ "ninth": 6619,
+ "pride": 6620,
+ "hugh": 6621,
+ "evolution": 6622,
+ "ordinary": 6623,
+ "involvement": 6624,
+ "comfortable": 6625,
+ "shouted": 6626,
+ "tech": 6627,
+ "encouraged": 6628,
+ "taiwan": 6629,
+ "representation": 6630,
+ "sharing": 6631,
+ "##lia": 6632,
+ "##em": 6633,
+ "panic": 6634,
+ "exact": 6635,
+ "cargo": 6636,
+ "competing": 6637,
+ "fat": 6638,
+ "cried": 6639,
+ "83": 6640,
+ "1920s": 6641,
+ "occasions": 6642,
+ "pa": 6643,
+ "cabin": 6644,
+ "borders": 6645,
+ "utah": 6646,
+ "marcus": 6647,
+ "##isation": 6648,
+ "badly": 6649,
+ "muscles": 6650,
+ "##ance": 6651,
+ "victorian": 6652,
+ "transition": 6653,
+ "warner": 6654,
+ "bet": 6655,
+ "permission": 6656,
+ "##rin": 6657,
+ "slave": 6658,
+ "terrible": 6659,
+ "similarly": 6660,
+ "shares": 6661,
+ "seth": 6662,
+ "uefa": 6663,
+ "possession": 6664,
+ "medals": 6665,
+ "benefits": 6666,
+ "colleges": 6667,
+ "lowered": 6668,
+ "perfectly": 6669,
+ "mall": 6670,
+ "transit": 6671,
+ "##ye": 6672,
+ "##kar": 6673,
+ "publisher": 6674,
+ "##ened": 6675,
+ "harrison": 6676,
+ "deaths": 6677,
+ "elevation": 6678,
+ "##ae": 6679,
+ "asleep": 6680,
+ "machines": 6681,
+ "sigh": 6682,
+ "ash": 6683,
+ "hardly": 6684,
+ "argument": 6685,
+ "occasion": 6686,
+ "parent": 6687,
+ "leo": 6688,
+ "decline": 6689,
+ "1888": 6690,
+ "contribution": 6691,
+ "##ua": 6692,
+ "concentration": 6693,
+ "1000": 6694,
+ "opportunities": 6695,
+ "hispanic": 6696,
+ "guardian": 6697,
+ "extent": 6698,
+ "emotions": 6699,
+ "hips": 6700,
+ "mason": 6701,
+ "volumes": 6702,
+ "bloody": 6703,
+ "controversy": 6704,
+ "diameter": 6705,
+ "steady": 6706,
+ "mistake": 6707,
+ "phoenix": 6708,
+ "identify": 6709,
+ "violin": 6710,
+ "##sk": 6711,
+ "departure": 6712,
+ "richmond": 6713,
+ "spin": 6714,
+ "funeral": 6715,
+ "enemies": 6716,
+ "1864": 6717,
+ "gear": 6718,
+ "literally": 6719,
+ "connor": 6720,
+ "random": 6721,
+ "sergeant": 6722,
+ "grab": 6723,
+ "confusion": 6724,
+ "1865": 6725,
+ "transmission": 6726,
+ "informed": 6727,
+ "op": 6728,
+ "leaning": 6729,
+ "sacred": 6730,
+ "suspended": 6731,
+ "thinks": 6732,
+ "gates": 6733,
+ "portland": 6734,
+ "luck": 6735,
+ "agencies": 6736,
+ "yours": 6737,
+ "hull": 6738,
+ "expert": 6739,
+ "muscle": 6740,
+ "layer": 6741,
+ "practical": 6742,
+ "sculpture": 6743,
+ "jerusalem": 6744,
+ "latest": 6745,
+ "lloyd": 6746,
+ "statistics": 6747,
+ "deeper": 6748,
+ "recommended": 6749,
+ "warrior": 6750,
+ "arkansas": 6751,
+ "mess": 6752,
+ "supports": 6753,
+ "greg": 6754,
+ "eagle": 6755,
+ "1880": 6756,
+ "recovered": 6757,
+ "rated": 6758,
+ "concerts": 6759,
+ "rushed": 6760,
+ "##ano": 6761,
+ "stops": 6762,
+ "eggs": 6763,
+ "files": 6764,
+ "premiere": 6765,
+ "keith": 6766,
+ "##vo": 6767,
+ "delhi": 6768,
+ "turner": 6769,
+ "pit": 6770,
+ "affair": 6771,
+ "belief": 6772,
+ "paint": 6773,
+ "##zing": 6774,
+ "mate": 6775,
+ "##ach": 6776,
+ "##ev": 6777,
+ "victim": 6778,
+ "##ology": 6779,
+ "withdrew": 6780,
+ "bonus": 6781,
+ "styles": 6782,
+ "fled": 6783,
+ "##ud": 6784,
+ "glasgow": 6785,
+ "technologies": 6786,
+ "funded": 6787,
+ "nbc": 6788,
+ "adaptation": 6789,
+ "##ata": 6790,
+ "portrayed": 6791,
+ "cooperation": 6792,
+ "supporters": 6793,
+ "judges": 6794,
+ "bernard": 6795,
+ "justin": 6796,
+ "hallway": 6797,
+ "ralph": 6798,
+ "##ick": 6799,
+ "graduating": 6800,
+ "controversial": 6801,
+ "distant": 6802,
+ "continental": 6803,
+ "spider": 6804,
+ "bite": 6805,
+ "##ho": 6806,
+ "recognize": 6807,
+ "intention": 6808,
+ "mixing": 6809,
+ "##ese": 6810,
+ "egyptian": 6811,
+ "bow": 6812,
+ "tourism": 6813,
+ "suppose": 6814,
+ "claiming": 6815,
+ "tiger": 6816,
+ "dominated": 6817,
+ "participants": 6818,
+ "vi": 6819,
+ "##ru": 6820,
+ "nurse": 6821,
+ "partially": 6822,
+ "tape": 6823,
+ "##rum": 6824,
+ "psychology": 6825,
+ "##rn": 6826,
+ "essential": 6827,
+ "touring": 6828,
+ "duo": 6829,
+ "voting": 6830,
+ "civilian": 6831,
+ "emotional": 6832,
+ "channels": 6833,
+ "##king": 6834,
+ "apparent": 6835,
+ "hebrew": 6836,
+ "1887": 6837,
+ "tommy": 6838,
+ "carrier": 6839,
+ "intersection": 6840,
+ "beast": 6841,
+ "hudson": 6842,
+ "##gar": 6843,
+ "##zo": 6844,
+ "lab": 6845,
+ "nova": 6846,
+ "bench": 6847,
+ "discuss": 6848,
+ "costa": 6849,
+ "##ered": 6850,
+ "detailed": 6851,
+ "behalf": 6852,
+ "drivers": 6853,
+ "unfortunately": 6854,
+ "obtain": 6855,
+ "##lis": 6856,
+ "rocky": 6857,
+ "##dae": 6858,
+ "siege": 6859,
+ "friendship": 6860,
+ "honey": 6861,
+ "##rian": 6862,
+ "1861": 6863,
+ "amy": 6864,
+ "hang": 6865,
+ "posted": 6866,
+ "governments": 6867,
+ "collins": 6868,
+ "respond": 6869,
+ "wildlife": 6870,
+ "preferred": 6871,
+ "operator": 6872,
+ "##po": 6873,
+ "laura": 6874,
+ "pregnant": 6875,
+ "videos": 6876,
+ "dennis": 6877,
+ "suspected": 6878,
+ "boots": 6879,
+ "instantly": 6880,
+ "weird": 6881,
+ "automatic": 6882,
+ "businessman": 6883,
+ "alleged": 6884,
+ "placing": 6885,
+ "throwing": 6886,
+ "ph": 6887,
+ "mood": 6888,
+ "1862": 6889,
+ "perry": 6890,
+ "venue": 6891,
+ "jet": 6892,
+ "remainder": 6893,
+ "##lli": 6894,
+ "##ci": 6895,
+ "passion": 6896,
+ "biological": 6897,
+ "boyfriend": 6898,
+ "1863": 6899,
+ "dirt": 6900,
+ "buffalo": 6901,
+ "ron": 6902,
+ "segment": 6903,
+ "fa": 6904,
+ "abuse": 6905,
+ "##era": 6906,
+ "genre": 6907,
+ "thrown": 6908,
+ "stroke": 6909,
+ "colored": 6910,
+ "stress": 6911,
+ "exercise": 6912,
+ "displayed": 6913,
+ "##gen": 6914,
+ "struggled": 6915,
+ "##tti": 6916,
+ "abroad": 6917,
+ "dramatic": 6918,
+ "wonderful": 6919,
+ "thereafter": 6920,
+ "madrid": 6921,
+ "component": 6922,
+ "widespread": 6923,
+ "##sed": 6924,
+ "tale": 6925,
+ "citizen": 6926,
+ "todd": 6927,
+ "monday": 6928,
+ "1886": 6929,
+ "vancouver": 6930,
+ "overseas": 6931,
+ "forcing": 6932,
+ "crying": 6933,
+ "descent": 6934,
+ "##ris": 6935,
+ "discussed": 6936,
+ "substantial": 6937,
+ "ranks": 6938,
+ "regime": 6939,
+ "1870": 6940,
+ "provinces": 6941,
+ "switch": 6942,
+ "drum": 6943,
+ "zane": 6944,
+ "ted": 6945,
+ "tribes": 6946,
+ "proof": 6947,
+ "lp": 6948,
+ "cream": 6949,
+ "researchers": 6950,
+ "volunteer": 6951,
+ "manor": 6952,
+ "silk": 6953,
+ "milan": 6954,
+ "donated": 6955,
+ "allies": 6956,
+ "venture": 6957,
+ "principle": 6958,
+ "delivery": 6959,
+ "enterprise": 6960,
+ "##ves": 6961,
+ "##ans": 6962,
+ "bars": 6963,
+ "traditionally": 6964,
+ "witch": 6965,
+ "reminded": 6966,
+ "copper": 6967,
+ "##uk": 6968,
+ "pete": 6969,
+ "inter": 6970,
+ "links": 6971,
+ "colin": 6972,
+ "grinned": 6973,
+ "elsewhere": 6974,
+ "competitive": 6975,
+ "frequent": 6976,
+ "##oy": 6977,
+ "scream": 6978,
+ "##hu": 6979,
+ "tension": 6980,
+ "texts": 6981,
+ "submarine": 6982,
+ "finnish": 6983,
+ "defending": 6984,
+ "defend": 6985,
+ "pat": 6986,
+ "detail": 6987,
+ "1884": 6988,
+ "affiliated": 6989,
+ "stuart": 6990,
+ "themes": 6991,
+ "villa": 6992,
+ "periods": 6993,
+ "tool": 6994,
+ "belgian": 6995,
+ "ruling": 6996,
+ "crimes": 6997,
+ "answers": 6998,
+ "folded": 6999,
+ "licensed": 7000,
+ "resort": 7001,
+ "demolished": 7002,
+ "hans": 7003,
+ "lucy": 7004,
+ "1881": 7005,
+ "lion": 7006,
+ "traded": 7007,
+ "photographs": 7008,
+ "writes": 7009,
+ "craig": 7010,
+ "##fa": 7011,
+ "trials": 7012,
+ "generated": 7013,
+ "beth": 7014,
+ "noble": 7015,
+ "debt": 7016,
+ "percentage": 7017,
+ "yorkshire": 7018,
+ "erected": 7019,
+ "ss": 7020,
+ "viewed": 7021,
+ "grades": 7022,
+ "confidence": 7023,
+ "ceased": 7024,
+ "islam": 7025,
+ "telephone": 7026,
+ "retail": 7027,
+ "##ible": 7028,
+ "chile": 7029,
+ "m²": 7030,
+ "roberts": 7031,
+ "sixteen": 7032,
+ "##ich": 7033,
+ "commented": 7034,
+ "hampshire": 7035,
+ "innocent": 7036,
+ "dual": 7037,
+ "pounds": 7038,
+ "checked": 7039,
+ "regulations": 7040,
+ "afghanistan": 7041,
+ "sung": 7042,
+ "rico": 7043,
+ "liberty": 7044,
+ "assets": 7045,
+ "bigger": 7046,
+ "options": 7047,
+ "angels": 7048,
+ "relegated": 7049,
+ "tribute": 7050,
+ "wells": 7051,
+ "attending": 7052,
+ "leaf": 7053,
+ "##yan": 7054,
+ "butler": 7055,
+ "romanian": 7056,
+ "forum": 7057,
+ "monthly": 7058,
+ "lisa": 7059,
+ "patterns": 7060,
+ "gmina": 7061,
+ "##tory": 7062,
+ "madison": 7063,
+ "hurricane": 7064,
+ "rev": 7065,
+ "##ians": 7066,
+ "bristol": 7067,
+ "##ula": 7068,
+ "elite": 7069,
+ "valuable": 7070,
+ "disaster": 7071,
+ "democracy": 7072,
+ "awareness": 7073,
+ "germans": 7074,
+ "freyja": 7075,
+ "##ins": 7076,
+ "loop": 7077,
+ "absolutely": 7078,
+ "paying": 7079,
+ "populations": 7080,
+ "maine": 7081,
+ "sole": 7082,
+ "prayer": 7083,
+ "spencer": 7084,
+ "releases": 7085,
+ "doorway": 7086,
+ "bull": 7087,
+ "##ani": 7088,
+ "lover": 7089,
+ "midnight": 7090,
+ "conclusion": 7091,
+ "##sson": 7092,
+ "thirteen": 7093,
+ "lily": 7094,
+ "mediterranean": 7095,
+ "##lt": 7096,
+ "nhl": 7097,
+ "proud": 7098,
+ "sample": 7099,
+ "##hill": 7100,
+ "drummer": 7101,
+ "guinea": 7102,
+ "##ova": 7103,
+ "murphy": 7104,
+ "climb": 7105,
+ "##ston": 7106,
+ "instant": 7107,
+ "attributed": 7108,
+ "horn": 7109,
+ "ain": 7110,
+ "railways": 7111,
+ "steven": 7112,
+ "##ao": 7113,
+ "autumn": 7114,
+ "ferry": 7115,
+ "opponent": 7116,
+ "root": 7117,
+ "traveling": 7118,
+ "secured": 7119,
+ "corridor": 7120,
+ "stretched": 7121,
+ "tales": 7122,
+ "sheet": 7123,
+ "trinity": 7124,
+ "cattle": 7125,
+ "helps": 7126,
+ "indicates": 7127,
+ "manhattan": 7128,
+ "murdered": 7129,
+ "fitted": 7130,
+ "1882": 7131,
+ "gentle": 7132,
+ "grandmother": 7133,
+ "mines": 7134,
+ "shocked": 7135,
+ "vegas": 7136,
+ "produces": 7137,
+ "##light": 7138,
+ "caribbean": 7139,
+ "##ou": 7140,
+ "belong": 7141,
+ "continuous": 7142,
+ "desperate": 7143,
+ "drunk": 7144,
+ "historically": 7145,
+ "trio": 7146,
+ "waved": 7147,
+ "raf": 7148,
+ "dealing": 7149,
+ "nathan": 7150,
+ "bat": 7151,
+ "murmured": 7152,
+ "interrupted": 7153,
+ "residing": 7154,
+ "scientist": 7155,
+ "pioneer": 7156,
+ "harold": 7157,
+ "aaron": 7158,
+ "##net": 7159,
+ "delta": 7160,
+ "attempting": 7161,
+ "minority": 7162,
+ "mini": 7163,
+ "believes": 7164,
+ "chorus": 7165,
+ "tend": 7166,
+ "lots": 7167,
+ "eyed": 7168,
+ "indoor": 7169,
+ "load": 7170,
+ "shots": 7171,
+ "updated": 7172,
+ "jail": 7173,
+ "##llo": 7174,
+ "concerning": 7175,
+ "connecting": 7176,
+ "wealth": 7177,
+ "##ved": 7178,
+ "slaves": 7179,
+ "arrive": 7180,
+ "rangers": 7181,
+ "sufficient": 7182,
+ "rebuilt": 7183,
+ "##wick": 7184,
+ "cardinal": 7185,
+ "flood": 7186,
+ "muhammad": 7187,
+ "whenever": 7188,
+ "relation": 7189,
+ "runners": 7190,
+ "moral": 7191,
+ "repair": 7192,
+ "viewers": 7193,
+ "arriving": 7194,
+ "revenge": 7195,
+ "punk": 7196,
+ "assisted": 7197,
+ "bath": 7198,
+ "fairly": 7199,
+ "breathe": 7200,
+ "lists": 7201,
+ "innings": 7202,
+ "illustrated": 7203,
+ "whisper": 7204,
+ "nearest": 7205,
+ "voters": 7206,
+ "clinton": 7207,
+ "ties": 7208,
+ "ultimate": 7209,
+ "screamed": 7210,
+ "beijing": 7211,
+ "lions": 7212,
+ "andre": 7213,
+ "fictional": 7214,
+ "gathering": 7215,
+ "comfort": 7216,
+ "radar": 7217,
+ "suitable": 7218,
+ "dismissed": 7219,
+ "hms": 7220,
+ "ban": 7221,
+ "pine": 7222,
+ "wrist": 7223,
+ "atmosphere": 7224,
+ "voivodeship": 7225,
+ "bid": 7226,
+ "timber": 7227,
+ "##ned": 7228,
+ "##nan": 7229,
+ "giants": 7230,
+ "##ane": 7231,
+ "cameron": 7232,
+ "recovery": 7233,
+ "uss": 7234,
+ "identical": 7235,
+ "categories": 7236,
+ "switched": 7237,
+ "serbia": 7238,
+ "laughter": 7239,
+ "noah": 7240,
+ "ensemble": 7241,
+ "therapy": 7242,
+ "peoples": 7243,
+ "touching": 7244,
+ "##off": 7245,
+ "locally": 7246,
+ "pearl": 7247,
+ "platforms": 7248,
+ "everywhere": 7249,
+ "ballet": 7250,
+ "tables": 7251,
+ "lanka": 7252,
+ "herbert": 7253,
+ "outdoor": 7254,
+ "toured": 7255,
+ "derek": 7256,
+ "1883": 7257,
+ "spaces": 7258,
+ "contested": 7259,
+ "swept": 7260,
+ "1878": 7261,
+ "exclusive": 7262,
+ "slight": 7263,
+ "connections": 7264,
+ "##dra": 7265,
+ "winds": 7266,
+ "prisoner": 7267,
+ "collective": 7268,
+ "bangladesh": 7269,
+ "tube": 7270,
+ "publicly": 7271,
+ "wealthy": 7272,
+ "thai": 7273,
+ "##ys": 7274,
+ "isolated": 7275,
+ "select": 7276,
+ "##ric": 7277,
+ "insisted": 7278,
+ "pen": 7279,
+ "fortune": 7280,
+ "ticket": 7281,
+ "spotted": 7282,
+ "reportedly": 7283,
+ "animation": 7284,
+ "enforcement": 7285,
+ "tanks": 7286,
+ "110": 7287,
+ "decides": 7288,
+ "wider": 7289,
+ "lowest": 7290,
+ "owen": 7291,
+ "##time": 7292,
+ "nod": 7293,
+ "hitting": 7294,
+ "##hn": 7295,
+ "gregory": 7296,
+ "furthermore": 7297,
+ "magazines": 7298,
+ "fighters": 7299,
+ "solutions": 7300,
+ "##ery": 7301,
+ "pointing": 7302,
+ "requested": 7303,
+ "peru": 7304,
+ "reed": 7305,
+ "chancellor": 7306,
+ "knights": 7307,
+ "mask": 7308,
+ "worker": 7309,
+ "eldest": 7310,
+ "flames": 7311,
+ "reduction": 7312,
+ "1860": 7313,
+ "volunteers": 7314,
+ "##tis": 7315,
+ "reporting": 7316,
+ "##hl": 7317,
+ "wire": 7318,
+ "advisory": 7319,
+ "endemic": 7320,
+ "origins": 7321,
+ "settlers": 7322,
+ "pursue": 7323,
+ "knock": 7324,
+ "consumer": 7325,
+ "1876": 7326,
+ "eu": 7327,
+ "compound": 7328,
+ "creatures": 7329,
+ "mansion": 7330,
+ "sentenced": 7331,
+ "ivan": 7332,
+ "deployed": 7333,
+ "guitars": 7334,
+ "frowned": 7335,
+ "involves": 7336,
+ "mechanism": 7337,
+ "kilometers": 7338,
+ "perspective": 7339,
+ "shops": 7340,
+ "maps": 7341,
+ "terminus": 7342,
+ "duncan": 7343,
+ "alien": 7344,
+ "fist": 7345,
+ "bridges": 7346,
+ "##pers": 7347,
+ "heroes": 7348,
+ "fed": 7349,
+ "derby": 7350,
+ "swallowed": 7351,
+ "##ros": 7352,
+ "patent": 7353,
+ "sara": 7354,
+ "illness": 7355,
+ "characterized": 7356,
+ "adventures": 7357,
+ "slide": 7358,
+ "hawaii": 7359,
+ "jurisdiction": 7360,
+ "##op": 7361,
+ "organised": 7362,
+ "##side": 7363,
+ "adelaide": 7364,
+ "walks": 7365,
+ "biology": 7366,
+ "se": 7367,
+ "##ties": 7368,
+ "rogers": 7369,
+ "swing": 7370,
+ "tightly": 7371,
+ "boundaries": 7372,
+ "##rie": 7373,
+ "prepare": 7374,
+ "implementation": 7375,
+ "stolen": 7376,
+ "##sha": 7377,
+ "certified": 7378,
+ "colombia": 7379,
+ "edwards": 7380,
+ "garage": 7381,
+ "##mm": 7382,
+ "recalled": 7383,
+ "##ball": 7384,
+ "rage": 7385,
+ "harm": 7386,
+ "nigeria": 7387,
+ "breast": 7388,
+ "##ren": 7389,
+ "furniture": 7390,
+ "pupils": 7391,
+ "settle": 7392,
+ "##lus": 7393,
+ "cuba": 7394,
+ "balls": 7395,
+ "client": 7396,
+ "alaska": 7397,
+ "21st": 7398,
+ "linear": 7399,
+ "thrust": 7400,
+ "celebration": 7401,
+ "latino": 7402,
+ "genetic": 7403,
+ "terror": 7404,
+ "##cia": 7405,
+ "##ening": 7406,
+ "lightning": 7407,
+ "fee": 7408,
+ "witness": 7409,
+ "lodge": 7410,
+ "establishing": 7411,
+ "skull": 7412,
+ "##ique": 7413,
+ "earning": 7414,
+ "hood": 7415,
+ "##ei": 7416,
+ "rebellion": 7417,
+ "wang": 7418,
+ "sporting": 7419,
+ "warned": 7420,
+ "missile": 7421,
+ "devoted": 7422,
+ "activist": 7423,
+ "porch": 7424,
+ "worship": 7425,
+ "fourteen": 7426,
+ "package": 7427,
+ "1871": 7428,
+ "decorated": 7429,
+ "##shire": 7430,
+ "housed": 7431,
+ "##ock": 7432,
+ "chess": 7433,
+ "sailed": 7434,
+ "doctors": 7435,
+ "oscar": 7436,
+ "joan": 7437,
+ "treat": 7438,
+ "garcia": 7439,
+ "harbour": 7440,
+ "jeremy": 7441,
+ "##ire": 7442,
+ "traditions": 7443,
+ "dominant": 7444,
+ "jacques": 7445,
+ "##gon": 7446,
+ "##wan": 7447,
+ "relocated": 7448,
+ "1879": 7449,
+ "amendment": 7450,
+ "sized": 7451,
+ "companion": 7452,
+ "simultaneously": 7453,
+ "volleyball": 7454,
+ "spun": 7455,
+ "acre": 7456,
+ "increases": 7457,
+ "stopping": 7458,
+ "loves": 7459,
+ "belongs": 7460,
+ "affect": 7461,
+ "drafted": 7462,
+ "tossed": 7463,
+ "scout": 7464,
+ "battles": 7465,
+ "1875": 7466,
+ "filming": 7467,
+ "shoved": 7468,
+ "munich": 7469,
+ "tenure": 7470,
+ "vertical": 7471,
+ "romance": 7472,
+ "pc": 7473,
+ "##cher": 7474,
+ "argue": 7475,
+ "##ical": 7476,
+ "craft": 7477,
+ "ranging": 7478,
+ "www": 7479,
+ "opens": 7480,
+ "honest": 7481,
+ "tyler": 7482,
+ "yesterday": 7483,
+ "virtual": 7484,
+ "##let": 7485,
+ "muslims": 7486,
+ "reveal": 7487,
+ "snake": 7488,
+ "immigrants": 7489,
+ "radical": 7490,
+ "screaming": 7491,
+ "speakers": 7492,
+ "firing": 7493,
+ "saving": 7494,
+ "belonging": 7495,
+ "ease": 7496,
+ "lighting": 7497,
+ "prefecture": 7498,
+ "blame": 7499,
+ "farmer": 7500,
+ "hungry": 7501,
+ "grows": 7502,
+ "rubbed": 7503,
+ "beam": 7504,
+ "sur": 7505,
+ "subsidiary": 7506,
+ "##cha": 7507,
+ "armenian": 7508,
+ "sao": 7509,
+ "dropping": 7510,
+ "conventional": 7511,
+ "##fer": 7512,
+ "microsoft": 7513,
+ "reply": 7514,
+ "qualify": 7515,
+ "spots": 7516,
+ "1867": 7517,
+ "sweat": 7518,
+ "festivals": 7519,
+ "##ken": 7520,
+ "immigration": 7521,
+ "physician": 7522,
+ "discover": 7523,
+ "exposure": 7524,
+ "sandy": 7525,
+ "explanation": 7526,
+ "isaac": 7527,
+ "implemented": 7528,
+ "##fish": 7529,
+ "hart": 7530,
+ "initiated": 7531,
+ "connect": 7532,
+ "stakes": 7533,
+ "presents": 7534,
+ "heights": 7535,
+ "householder": 7536,
+ "pleased": 7537,
+ "tourist": 7538,
+ "regardless": 7539,
+ "slip": 7540,
+ "closest": 7541,
+ "##ction": 7542,
+ "surely": 7543,
+ "sultan": 7544,
+ "brings": 7545,
+ "riley": 7546,
+ "preparation": 7547,
+ "aboard": 7548,
+ "slammed": 7549,
+ "baptist": 7550,
+ "experiment": 7551,
+ "ongoing": 7552,
+ "interstate": 7553,
+ "organic": 7554,
+ "playoffs": 7555,
+ "##ika": 7556,
+ "1877": 7557,
+ "130": 7558,
+ "##tar": 7559,
+ "hindu": 7560,
+ "error": 7561,
+ "tours": 7562,
+ "tier": 7563,
+ "plenty": 7564,
+ "arrangements": 7565,
+ "talks": 7566,
+ "trapped": 7567,
+ "excited": 7568,
+ "sank": 7569,
+ "ho": 7570,
+ "athens": 7571,
+ "1872": 7572,
+ "denver": 7573,
+ "welfare": 7574,
+ "suburb": 7575,
+ "athletes": 7576,
+ "trick": 7577,
+ "diverse": 7578,
+ "belly": 7579,
+ "exclusively": 7580,
+ "yelled": 7581,
+ "1868": 7582,
+ "##med": 7583,
+ "conversion": 7584,
+ "##ette": 7585,
+ "1874": 7586,
+ "internationally": 7587,
+ "computers": 7588,
+ "conductor": 7589,
+ "abilities": 7590,
+ "sensitive": 7591,
+ "hello": 7592,
+ "dispute": 7593,
+ "measured": 7594,
+ "globe": 7595,
+ "rocket": 7596,
+ "prices": 7597,
+ "amsterdam": 7598,
+ "flights": 7599,
+ "tigers": 7600,
+ "inn": 7601,
+ "municipalities": 7602,
+ "emotion": 7603,
+ "references": 7604,
+ "3d": 7605,
+ "##mus": 7606,
+ "explains": 7607,
+ "airlines": 7608,
+ "manufactured": 7609,
+ "pm": 7610,
+ "archaeological": 7611,
+ "1873": 7612,
+ "interpretation": 7613,
+ "devon": 7614,
+ "comment": 7615,
+ "##ites": 7616,
+ "settlements": 7617,
+ "kissing": 7618,
+ "absolute": 7619,
+ "improvement": 7620,
+ "suite": 7621,
+ "impressed": 7622,
+ "barcelona": 7623,
+ "sullivan": 7624,
+ "jefferson": 7625,
+ "towers": 7626,
+ "jesse": 7627,
+ "julie": 7628,
+ "##tin": 7629,
+ "##lu": 7630,
+ "grandson": 7631,
+ "hi": 7632,
+ "gauge": 7633,
+ "regard": 7634,
+ "rings": 7635,
+ "interviews": 7636,
+ "trace": 7637,
+ "raymond": 7638,
+ "thumb": 7639,
+ "departments": 7640,
+ "burns": 7641,
+ "serial": 7642,
+ "bulgarian": 7643,
+ "scores": 7644,
+ "demonstrated": 7645,
+ "##ix": 7646,
+ "1866": 7647,
+ "kyle": 7648,
+ "alberta": 7649,
+ "underneath": 7650,
+ "romanized": 7651,
+ "##ward": 7652,
+ "relieved": 7653,
+ "acquisition": 7654,
+ "phrase": 7655,
+ "cliff": 7656,
+ "reveals": 7657,
+ "han": 7658,
+ "cuts": 7659,
+ "merger": 7660,
+ "custom": 7661,
+ "##dar": 7662,
+ "nee": 7663,
+ "gilbert": 7664,
+ "graduation": 7665,
+ "##nts": 7666,
+ "assessment": 7667,
+ "cafe": 7668,
+ "difficulty": 7669,
+ "demands": 7670,
+ "swung": 7671,
+ "democrat": 7672,
+ "jennifer": 7673,
+ "commons": 7674,
+ "1940s": 7675,
+ "grove": 7676,
+ "##yo": 7677,
+ "completing": 7678,
+ "focuses": 7679,
+ "sum": 7680,
+ "substitute": 7681,
+ "bearing": 7682,
+ "stretch": 7683,
+ "reception": 7684,
+ "##py": 7685,
+ "reflected": 7686,
+ "essentially": 7687,
+ "destination": 7688,
+ "pairs": 7689,
+ "##ched": 7690,
+ "survival": 7691,
+ "resource": 7692,
+ "##bach": 7693,
+ "promoting": 7694,
+ "doubles": 7695,
+ "messages": 7696,
+ "tear": 7697,
+ "##down": 7698,
+ "##fully": 7699,
+ "parade": 7700,
+ "florence": 7701,
+ "harvey": 7702,
+ "incumbent": 7703,
+ "partial": 7704,
+ "framework": 7705,
+ "900": 7706,
+ "pedro": 7707,
+ "frozen": 7708,
+ "procedure": 7709,
+ "olivia": 7710,
+ "controls": 7711,
+ "##mic": 7712,
+ "shelter": 7713,
+ "personally": 7714,
+ "temperatures": 7715,
+ "##od": 7716,
+ "brisbane": 7717,
+ "tested": 7718,
+ "sits": 7719,
+ "marble": 7720,
+ "comprehensive": 7721,
+ "oxygen": 7722,
+ "leonard": 7723,
+ "##kov": 7724,
+ "inaugural": 7725,
+ "iranian": 7726,
+ "referring": 7727,
+ "quarters": 7728,
+ "attitude": 7729,
+ "##ivity": 7730,
+ "mainstream": 7731,
+ "lined": 7732,
+ "mars": 7733,
+ "dakota": 7734,
+ "norfolk": 7735,
+ "unsuccessful": 7736,
+ "##°": 7737,
+ "explosion": 7738,
+ "helicopter": 7739,
+ "congressional": 7740,
+ "##sing": 7741,
+ "inspector": 7742,
+ "bitch": 7743,
+ "seal": 7744,
+ "departed": 7745,
+ "divine": 7746,
+ "##ters": 7747,
+ "coaching": 7748,
+ "examination": 7749,
+ "punishment": 7750,
+ "manufacturer": 7751,
+ "sink": 7752,
+ "columns": 7753,
+ "unincorporated": 7754,
+ "signals": 7755,
+ "nevada": 7756,
+ "squeezed": 7757,
+ "dylan": 7758,
+ "dining": 7759,
+ "photos": 7760,
+ "martial": 7761,
+ "manuel": 7762,
+ "eighteen": 7763,
+ "elevator": 7764,
+ "brushed": 7765,
+ "plates": 7766,
+ "ministers": 7767,
+ "ivy": 7768,
+ "congregation": 7769,
+ "##len": 7770,
+ "slept": 7771,
+ "specialized": 7772,
+ "taxes": 7773,
+ "curve": 7774,
+ "restricted": 7775,
+ "negotiations": 7776,
+ "likes": 7777,
+ "statistical": 7778,
+ "arnold": 7779,
+ "inspiration": 7780,
+ "execution": 7781,
+ "bold": 7782,
+ "intermediate": 7783,
+ "significance": 7784,
+ "margin": 7785,
+ "ruler": 7786,
+ "wheels": 7787,
+ "gothic": 7788,
+ "intellectual": 7789,
+ "dependent": 7790,
+ "listened": 7791,
+ "eligible": 7792,
+ "buses": 7793,
+ "widow": 7794,
+ "syria": 7795,
+ "earn": 7796,
+ "cincinnati": 7797,
+ "collapsed": 7798,
+ "recipient": 7799,
+ "secrets": 7800,
+ "accessible": 7801,
+ "philippine": 7802,
+ "maritime": 7803,
+ "goddess": 7804,
+ "clerk": 7805,
+ "surrender": 7806,
+ "breaks": 7807,
+ "playoff": 7808,
+ "database": 7809,
+ "##ified": 7810,
+ "##lon": 7811,
+ "ideal": 7812,
+ "beetle": 7813,
+ "aspect": 7814,
+ "soap": 7815,
+ "regulation": 7816,
+ "strings": 7817,
+ "expand": 7818,
+ "anglo": 7819,
+ "shorter": 7820,
+ "crosses": 7821,
+ "retreat": 7822,
+ "tough": 7823,
+ "coins": 7824,
+ "wallace": 7825,
+ "directions": 7826,
+ "pressing": 7827,
+ "##oon": 7828,
+ "shipping": 7829,
+ "locomotives": 7830,
+ "comparison": 7831,
+ "topics": 7832,
+ "nephew": 7833,
+ "##mes": 7834,
+ "distinction": 7835,
+ "honors": 7836,
+ "travelled": 7837,
+ "sierra": 7838,
+ "ibn": 7839,
+ "##over": 7840,
+ "fortress": 7841,
+ "sa": 7842,
+ "recognised": 7843,
+ "carved": 7844,
+ "1869": 7845,
+ "clients": 7846,
+ "##dan": 7847,
+ "intent": 7848,
+ "##mar": 7849,
+ "coaches": 7850,
+ "describing": 7851,
+ "bread": 7852,
+ "##ington": 7853,
+ "beaten": 7854,
+ "northwestern": 7855,
+ "##ona": 7856,
+ "merit": 7857,
+ "youtube": 7858,
+ "collapse": 7859,
+ "challenges": 7860,
+ "em": 7861,
+ "historians": 7862,
+ "objective": 7863,
+ "submitted": 7864,
+ "virus": 7865,
+ "attacking": 7866,
+ "drake": 7867,
+ "assume": 7868,
+ "##ere": 7869,
+ "diseases": 7870,
+ "marc": 7871,
+ "stem": 7872,
+ "leeds": 7873,
+ "##cus": 7874,
+ "##ab": 7875,
+ "farming": 7876,
+ "glasses": 7877,
+ "##lock": 7878,
+ "visits": 7879,
+ "nowhere": 7880,
+ "fellowship": 7881,
+ "relevant": 7882,
+ "carries": 7883,
+ "restaurants": 7884,
+ "experiments": 7885,
+ "101": 7886,
+ "constantly": 7887,
+ "bases": 7888,
+ "targets": 7889,
+ "shah": 7890,
+ "tenth": 7891,
+ "opponents": 7892,
+ "verse": 7893,
+ "territorial": 7894,
+ "##ira": 7895,
+ "writings": 7896,
+ "corruption": 7897,
+ "##hs": 7898,
+ "instruction": 7899,
+ "inherited": 7900,
+ "reverse": 7901,
+ "emphasis": 7902,
+ "##vic": 7903,
+ "employee": 7904,
+ "arch": 7905,
+ "keeps": 7906,
+ "rabbi": 7907,
+ "watson": 7908,
+ "payment": 7909,
+ "uh": 7910,
+ "##ala": 7911,
+ "nancy": 7912,
+ "##tre": 7913,
+ "venice": 7914,
+ "fastest": 7915,
+ "sexy": 7916,
+ "banned": 7917,
+ "adrian": 7918,
+ "properly": 7919,
+ "ruth": 7920,
+ "touchdown": 7921,
+ "dollar": 7922,
+ "boards": 7923,
+ "metre": 7924,
+ "circles": 7925,
+ "edges": 7926,
+ "favour": 7927,
+ "comments": 7928,
+ "ok": 7929,
+ "travels": 7930,
+ "liberation": 7931,
+ "scattered": 7932,
+ "firmly": 7933,
+ "##ular": 7934,
+ "holland": 7935,
+ "permitted": 7936,
+ "diesel": 7937,
+ "kenya": 7938,
+ "den": 7939,
+ "originated": 7940,
+ "##ral": 7941,
+ "demons": 7942,
+ "resumed": 7943,
+ "dragged": 7944,
+ "rider": 7945,
+ "##rus": 7946,
+ "servant": 7947,
+ "blinked": 7948,
+ "extend": 7949,
+ "torn": 7950,
+ "##ias": 7951,
+ "##sey": 7952,
+ "input": 7953,
+ "meal": 7954,
+ "everybody": 7955,
+ "cylinder": 7956,
+ "kinds": 7957,
+ "camps": 7958,
+ "##fe": 7959,
+ "bullet": 7960,
+ "logic": 7961,
+ "##wn": 7962,
+ "croatian": 7963,
+ "evolved": 7964,
+ "healthy": 7965,
+ "fool": 7966,
+ "chocolate": 7967,
+ "wise": 7968,
+ "preserve": 7969,
+ "pradesh": 7970,
+ "##ess": 7971,
+ "respective": 7972,
+ "1850": 7973,
+ "##ew": 7974,
+ "chicken": 7975,
+ "artificial": 7976,
+ "gross": 7977,
+ "corresponding": 7978,
+ "convicted": 7979,
+ "cage": 7980,
+ "caroline": 7981,
+ "dialogue": 7982,
+ "##dor": 7983,
+ "narrative": 7984,
+ "stranger": 7985,
+ "mario": 7986,
+ "br": 7987,
+ "christianity": 7988,
+ "failing": 7989,
+ "trent": 7990,
+ "commanding": 7991,
+ "buddhist": 7992,
+ "1848": 7993,
+ "maurice": 7994,
+ "focusing": 7995,
+ "yale": 7996,
+ "bike": 7997,
+ "altitude": 7998,
+ "##ering": 7999,
+ "mouse": 8000,
+ "revised": 8001,
+ "##sley": 8002,
+ "veteran": 8003,
+ "##ig": 8004,
+ "pulls": 8005,
+ "theology": 8006,
+ "crashed": 8007,
+ "campaigns": 8008,
+ "legion": 8009,
+ "##ability": 8010,
+ "drag": 8011,
+ "excellence": 8012,
+ "customer": 8013,
+ "cancelled": 8014,
+ "intensity": 8015,
+ "excuse": 8016,
+ "##lar": 8017,
+ "liga": 8018,
+ "participating": 8019,
+ "contributing": 8020,
+ "printing": 8021,
+ "##burn": 8022,
+ "variable": 8023,
+ "##rk": 8024,
+ "curious": 8025,
+ "bin": 8026,
+ "legacy": 8027,
+ "renaissance": 8028,
+ "##my": 8029,
+ "symptoms": 8030,
+ "binding": 8031,
+ "vocalist": 8032,
+ "dancer": 8033,
+ "##nie": 8034,
+ "grammar": 8035,
+ "gospel": 8036,
+ "democrats": 8037,
+ "ya": 8038,
+ "enters": 8039,
+ "sc": 8040,
+ "diplomatic": 8041,
+ "hitler": 8042,
+ "##ser": 8043,
+ "clouds": 8044,
+ "mathematical": 8045,
+ "quit": 8046,
+ "defended": 8047,
+ "oriented": 8048,
+ "##heim": 8049,
+ "fundamental": 8050,
+ "hardware": 8051,
+ "impressive": 8052,
+ "equally": 8053,
+ "convince": 8054,
+ "confederate": 8055,
+ "guilt": 8056,
+ "chuck": 8057,
+ "sliding": 8058,
+ "##ware": 8059,
+ "magnetic": 8060,
+ "narrowed": 8061,
+ "petersburg": 8062,
+ "bulgaria": 8063,
+ "otto": 8064,
+ "phd": 8065,
+ "skill": 8066,
+ "##ama": 8067,
+ "reader": 8068,
+ "hopes": 8069,
+ "pitcher": 8070,
+ "reservoir": 8071,
+ "hearts": 8072,
+ "automatically": 8073,
+ "expecting": 8074,
+ "mysterious": 8075,
+ "bennett": 8076,
+ "extensively": 8077,
+ "imagined": 8078,
+ "seeds": 8079,
+ "monitor": 8080,
+ "fix": 8081,
+ "##ative": 8082,
+ "journalism": 8083,
+ "struggling": 8084,
+ "signature": 8085,
+ "ranch": 8086,
+ "encounter": 8087,
+ "photographer": 8088,
+ "observation": 8089,
+ "protests": 8090,
+ "##pin": 8091,
+ "influences": 8092,
+ "##hr": 8093,
+ "calendar": 8094,
+ "##all": 8095,
+ "cruz": 8096,
+ "croatia": 8097,
+ "locomotive": 8098,
+ "hughes": 8099,
+ "naturally": 8100,
+ "shakespeare": 8101,
+ "basement": 8102,
+ "hook": 8103,
+ "uncredited": 8104,
+ "faded": 8105,
+ "theories": 8106,
+ "approaches": 8107,
+ "dare": 8108,
+ "phillips": 8109,
+ "filling": 8110,
+ "fury": 8111,
+ "obama": 8112,
+ "##ain": 8113,
+ "efficient": 8114,
+ "arc": 8115,
+ "deliver": 8116,
+ "min": 8117,
+ "raid": 8118,
+ "breeding": 8119,
+ "inducted": 8120,
+ "leagues": 8121,
+ "efficiency": 8122,
+ "axis": 8123,
+ "montana": 8124,
+ "eagles": 8125,
+ "##ked": 8126,
+ "supplied": 8127,
+ "instructions": 8128,
+ "karen": 8129,
+ "picking": 8130,
+ "indicating": 8131,
+ "trap": 8132,
+ "anchor": 8133,
+ "practically": 8134,
+ "christians": 8135,
+ "tomb": 8136,
+ "vary": 8137,
+ "occasional": 8138,
+ "electronics": 8139,
+ "lords": 8140,
+ "readers": 8141,
+ "newcastle": 8142,
+ "faint": 8143,
+ "innovation": 8144,
+ "collect": 8145,
+ "situations": 8146,
+ "engagement": 8147,
+ "160": 8148,
+ "claude": 8149,
+ "mixture": 8150,
+ "##feld": 8151,
+ "peer": 8152,
+ "tissue": 8153,
+ "logo": 8154,
+ "lean": 8155,
+ "##ration": 8156,
+ "°f": 8157,
+ "floors": 8158,
+ "##ven": 8159,
+ "architects": 8160,
+ "reducing": 8161,
+ "##our": 8162,
+ "##ments": 8163,
+ "rope": 8164,
+ "1859": 8165,
+ "ottawa": 8166,
+ "##har": 8167,
+ "samples": 8168,
+ "banking": 8169,
+ "declaration": 8170,
+ "proteins": 8171,
+ "resignation": 8172,
+ "francois": 8173,
+ "saudi": 8174,
+ "advocate": 8175,
+ "exhibited": 8176,
+ "armor": 8177,
+ "twins": 8178,
+ "divorce": 8179,
+ "##ras": 8180,
+ "abraham": 8181,
+ "reviewed": 8182,
+ "jo": 8183,
+ "temporarily": 8184,
+ "matrix": 8185,
+ "physically": 8186,
+ "pulse": 8187,
+ "curled": 8188,
+ "##ena": 8189,
+ "difficulties": 8190,
+ "bengal": 8191,
+ "usage": 8192,
+ "##ban": 8193,
+ "annie": 8194,
+ "riders": 8195,
+ "certificate": 8196,
+ "##pi": 8197,
+ "holes": 8198,
+ "warsaw": 8199,
+ "distinctive": 8200,
+ "jessica": 8201,
+ "##mon": 8202,
+ "mutual": 8203,
+ "1857": 8204,
+ "customs": 8205,
+ "circular": 8206,
+ "eugene": 8207,
+ "removal": 8208,
+ "loaded": 8209,
+ "mere": 8210,
+ "vulnerable": 8211,
+ "depicted": 8212,
+ "generations": 8213,
+ "dame": 8214,
+ "heir": 8215,
+ "enormous": 8216,
+ "lightly": 8217,
+ "climbing": 8218,
+ "pitched": 8219,
+ "lessons": 8220,
+ "pilots": 8221,
+ "nepal": 8222,
+ "ram": 8223,
+ "google": 8224,
+ "preparing": 8225,
+ "brad": 8226,
+ "louise": 8227,
+ "renowned": 8228,
+ "##₂": 8229,
+ "liam": 8230,
+ "##ably": 8231,
+ "plaza": 8232,
+ "shaw": 8233,
+ "sophie": 8234,
+ "brilliant": 8235,
+ "bills": 8236,
+ "##bar": 8237,
+ "##nik": 8238,
+ "fucking": 8239,
+ "mainland": 8240,
+ "server": 8241,
+ "pleasant": 8242,
+ "seized": 8243,
+ "veterans": 8244,
+ "jerked": 8245,
+ "fail": 8246,
+ "beta": 8247,
+ "brush": 8248,
+ "radiation": 8249,
+ "stored": 8250,
+ "warmth": 8251,
+ "southeastern": 8252,
+ "nate": 8253,
+ "sin": 8254,
+ "raced": 8255,
+ "berkeley": 8256,
+ "joke": 8257,
+ "athlete": 8258,
+ "designation": 8259,
+ "trunk": 8260,
+ "##low": 8261,
+ "roland": 8262,
+ "qualification": 8263,
+ "archives": 8264,
+ "heels": 8265,
+ "artwork": 8266,
+ "receives": 8267,
+ "judicial": 8268,
+ "reserves": 8269,
+ "##bed": 8270,
+ "woke": 8271,
+ "installation": 8272,
+ "abu": 8273,
+ "floating": 8274,
+ "fake": 8275,
+ "lesser": 8276,
+ "excitement": 8277,
+ "interface": 8278,
+ "concentrated": 8279,
+ "addressed": 8280,
+ "characteristic": 8281,
+ "amanda": 8282,
+ "saxophone": 8283,
+ "monk": 8284,
+ "auto": 8285,
+ "##bus": 8286,
+ "releasing": 8287,
+ "egg": 8288,
+ "dies": 8289,
+ "interaction": 8290,
+ "defender": 8291,
+ "ce": 8292,
+ "outbreak": 8293,
+ "glory": 8294,
+ "loving": 8295,
+ "##bert": 8296,
+ "sequel": 8297,
+ "consciousness": 8298,
+ "http": 8299,
+ "awake": 8300,
+ "ski": 8301,
+ "enrolled": 8302,
+ "##ress": 8303,
+ "handling": 8304,
+ "rookie": 8305,
+ "brow": 8306,
+ "somebody": 8307,
+ "biography": 8308,
+ "warfare": 8309,
+ "amounts": 8310,
+ "contracts": 8311,
+ "presentation": 8312,
+ "fabric": 8313,
+ "dissolved": 8314,
+ "challenged": 8315,
+ "meter": 8316,
+ "psychological": 8317,
+ "lt": 8318,
+ "elevated": 8319,
+ "rally": 8320,
+ "accurate": 8321,
+ "##tha": 8322,
+ "hospitals": 8323,
+ "undergraduate": 8324,
+ "specialist": 8325,
+ "venezuela": 8326,
+ "exhibit": 8327,
+ "shed": 8328,
+ "nursing": 8329,
+ "protestant": 8330,
+ "fluid": 8331,
+ "structural": 8332,
+ "footage": 8333,
+ "jared": 8334,
+ "consistent": 8335,
+ "prey": 8336,
+ "##ska": 8337,
+ "succession": 8338,
+ "reflect": 8339,
+ "exile": 8340,
+ "lebanon": 8341,
+ "wiped": 8342,
+ "suspect": 8343,
+ "shanghai": 8344,
+ "resting": 8345,
+ "integration": 8346,
+ "preservation": 8347,
+ "marvel": 8348,
+ "variant": 8349,
+ "pirates": 8350,
+ "sheep": 8351,
+ "rounded": 8352,
+ "capita": 8353,
+ "sailing": 8354,
+ "colonies": 8355,
+ "manuscript": 8356,
+ "deemed": 8357,
+ "variations": 8358,
+ "clarke": 8359,
+ "functional": 8360,
+ "emerging": 8361,
+ "boxing": 8362,
+ "relaxed": 8363,
+ "curse": 8364,
+ "azerbaijan": 8365,
+ "heavyweight": 8366,
+ "nickname": 8367,
+ "editorial": 8368,
+ "rang": 8369,
+ "grid": 8370,
+ "tightened": 8371,
+ "earthquake": 8372,
+ "flashed": 8373,
+ "miguel": 8374,
+ "rushing": 8375,
+ "##ches": 8376,
+ "improvements": 8377,
+ "boxes": 8378,
+ "brooks": 8379,
+ "180": 8380,
+ "consumption": 8381,
+ "molecular": 8382,
+ "felix": 8383,
+ "societies": 8384,
+ "repeatedly": 8385,
+ "variation": 8386,
+ "aids": 8387,
+ "civic": 8388,
+ "graphics": 8389,
+ "professionals": 8390,
+ "realm": 8391,
+ "autonomous": 8392,
+ "receiver": 8393,
+ "delayed": 8394,
+ "workshop": 8395,
+ "militia": 8396,
+ "chairs": 8397,
+ "trump": 8398,
+ "canyon": 8399,
+ "##point": 8400,
+ "harsh": 8401,
+ "extending": 8402,
+ "lovely": 8403,
+ "happiness": 8404,
+ "##jan": 8405,
+ "stake": 8406,
+ "eyebrows": 8407,
+ "embassy": 8408,
+ "wellington": 8409,
+ "hannah": 8410,
+ "##ella": 8411,
+ "sony": 8412,
+ "corners": 8413,
+ "bishops": 8414,
+ "swear": 8415,
+ "cloth": 8416,
+ "contents": 8417,
+ "xi": 8418,
+ "namely": 8419,
+ "commenced": 8420,
+ "1854": 8421,
+ "stanford": 8422,
+ "nashville": 8423,
+ "courage": 8424,
+ "graphic": 8425,
+ "commitment": 8426,
+ "garrison": 8427,
+ "##bin": 8428,
+ "hamlet": 8429,
+ "clearing": 8430,
+ "rebels": 8431,
+ "attraction": 8432,
+ "literacy": 8433,
+ "cooking": 8434,
+ "ruins": 8435,
+ "temples": 8436,
+ "jenny": 8437,
+ "humanity": 8438,
+ "celebrate": 8439,
+ "hasn": 8440,
+ "freight": 8441,
+ "sixty": 8442,
+ "rebel": 8443,
+ "bastard": 8444,
+ "##art": 8445,
+ "newton": 8446,
+ "##ada": 8447,
+ "deer": 8448,
+ "##ges": 8449,
+ "##ching": 8450,
+ "smiles": 8451,
+ "delaware": 8452,
+ "singers": 8453,
+ "##ets": 8454,
+ "approaching": 8455,
+ "assists": 8456,
+ "flame": 8457,
+ "##ph": 8458,
+ "boulevard": 8459,
+ "barrel": 8460,
+ "planted": 8461,
+ "##ome": 8462,
+ "pursuit": 8463,
+ "##sia": 8464,
+ "consequences": 8465,
+ "posts": 8466,
+ "shallow": 8467,
+ "invitation": 8468,
+ "rode": 8469,
+ "depot": 8470,
+ "ernest": 8471,
+ "kane": 8472,
+ "rod": 8473,
+ "concepts": 8474,
+ "preston": 8475,
+ "topic": 8476,
+ "chambers": 8477,
+ "striking": 8478,
+ "blast": 8479,
+ "arrives": 8480,
+ "descendants": 8481,
+ "montgomery": 8482,
+ "ranges": 8483,
+ "worlds": 8484,
+ "##lay": 8485,
+ "##ari": 8486,
+ "span": 8487,
+ "chaos": 8488,
+ "praise": 8489,
+ "##ag": 8490,
+ "fewer": 8491,
+ "1855": 8492,
+ "sanctuary": 8493,
+ "mud": 8494,
+ "fbi": 8495,
+ "##ions": 8496,
+ "programmes": 8497,
+ "maintaining": 8498,
+ "unity": 8499,
+ "harper": 8500,
+ "bore": 8501,
+ "handsome": 8502,
+ "closure": 8503,
+ "tournaments": 8504,
+ "thunder": 8505,
+ "nebraska": 8506,
+ "linda": 8507,
+ "facade": 8508,
+ "puts": 8509,
+ "satisfied": 8510,
+ "argentine": 8511,
+ "dale": 8512,
+ "cork": 8513,
+ "dome": 8514,
+ "panama": 8515,
+ "##yl": 8516,
+ "1858": 8517,
+ "tasks": 8518,
+ "experts": 8519,
+ "##ates": 8520,
+ "feeding": 8521,
+ "equation": 8522,
+ "##las": 8523,
+ "##ida": 8524,
+ "##tu": 8525,
+ "engage": 8526,
+ "bryan": 8527,
+ "##ax": 8528,
+ "um": 8529,
+ "quartet": 8530,
+ "melody": 8531,
+ "disbanded": 8532,
+ "sheffield": 8533,
+ "blocked": 8534,
+ "gasped": 8535,
+ "delay": 8536,
+ "kisses": 8537,
+ "maggie": 8538,
+ "connects": 8539,
+ "##non": 8540,
+ "sts": 8541,
+ "poured": 8542,
+ "creator": 8543,
+ "publishers": 8544,
+ "##we": 8545,
+ "guided": 8546,
+ "ellis": 8547,
+ "extinct": 8548,
+ "hug": 8549,
+ "gaining": 8550,
+ "##ord": 8551,
+ "complicated": 8552,
+ "##bility": 8553,
+ "poll": 8554,
+ "clenched": 8555,
+ "investigate": 8556,
+ "##use": 8557,
+ "thereby": 8558,
+ "quantum": 8559,
+ "spine": 8560,
+ "cdp": 8561,
+ "humor": 8562,
+ "kills": 8563,
+ "administered": 8564,
+ "semifinals": 8565,
+ "##du": 8566,
+ "encountered": 8567,
+ "ignore": 8568,
+ "##bu": 8569,
+ "commentary": 8570,
+ "##maker": 8571,
+ "bother": 8572,
+ "roosevelt": 8573,
+ "140": 8574,
+ "plains": 8575,
+ "halfway": 8576,
+ "flowing": 8577,
+ "cultures": 8578,
+ "crack": 8579,
+ "imprisoned": 8580,
+ "neighboring": 8581,
+ "airline": 8582,
+ "##ses": 8583,
+ "##view": 8584,
+ "##mate": 8585,
+ "##ec": 8586,
+ "gather": 8587,
+ "wolves": 8588,
+ "marathon": 8589,
+ "transformed": 8590,
+ "##ill": 8591,
+ "cruise": 8592,
+ "organisations": 8593,
+ "carol": 8594,
+ "punch": 8595,
+ "exhibitions": 8596,
+ "numbered": 8597,
+ "alarm": 8598,
+ "ratings": 8599,
+ "daddy": 8600,
+ "silently": 8601,
+ "##stein": 8602,
+ "queens": 8603,
+ "colours": 8604,
+ "impression": 8605,
+ "guidance": 8606,
+ "liu": 8607,
+ "tactical": 8608,
+ "##rat": 8609,
+ "marshal": 8610,
+ "della": 8611,
+ "arrow": 8612,
+ "##ings": 8613,
+ "rested": 8614,
+ "feared": 8615,
+ "tender": 8616,
+ "owns": 8617,
+ "bitter": 8618,
+ "advisor": 8619,
+ "escort": 8620,
+ "##ides": 8621,
+ "spare": 8622,
+ "farms": 8623,
+ "grants": 8624,
+ "##ene": 8625,
+ "dragons": 8626,
+ "encourage": 8627,
+ "colleagues": 8628,
+ "cameras": 8629,
+ "##und": 8630,
+ "sucked": 8631,
+ "pile": 8632,
+ "spirits": 8633,
+ "prague": 8634,
+ "statements": 8635,
+ "suspension": 8636,
+ "landmark": 8637,
+ "fence": 8638,
+ "torture": 8639,
+ "recreation": 8640,
+ "bags": 8641,
+ "permanently": 8642,
+ "survivors": 8643,
+ "pond": 8644,
+ "spy": 8645,
+ "predecessor": 8646,
+ "bombing": 8647,
+ "coup": 8648,
+ "##og": 8649,
+ "protecting": 8650,
+ "transformation": 8651,
+ "glow": 8652,
+ "##lands": 8653,
+ "##book": 8654,
+ "dug": 8655,
+ "priests": 8656,
+ "andrea": 8657,
+ "feat": 8658,
+ "barn": 8659,
+ "jumping": 8660,
+ "##chen": 8661,
+ "##ologist": 8662,
+ "##con": 8663,
+ "casualties": 8664,
+ "stern": 8665,
+ "auckland": 8666,
+ "pipe": 8667,
+ "serie": 8668,
+ "revealing": 8669,
+ "ba": 8670,
+ "##bel": 8671,
+ "trevor": 8672,
+ "mercy": 8673,
+ "spectrum": 8674,
+ "yang": 8675,
+ "consist": 8676,
+ "governing": 8677,
+ "collaborated": 8678,
+ "possessed": 8679,
+ "epic": 8680,
+ "comprises": 8681,
+ "blew": 8682,
+ "shane": 8683,
+ "##ack": 8684,
+ "lopez": 8685,
+ "honored": 8686,
+ "magical": 8687,
+ "sacrifice": 8688,
+ "judgment": 8689,
+ "perceived": 8690,
+ "hammer": 8691,
+ "mtv": 8692,
+ "baronet": 8693,
+ "tune": 8694,
+ "das": 8695,
+ "missionary": 8696,
+ "sheets": 8697,
+ "350": 8698,
+ "neutral": 8699,
+ "oral": 8700,
+ "threatening": 8701,
+ "attractive": 8702,
+ "shade": 8703,
+ "aims": 8704,
+ "seminary": 8705,
+ "##master": 8706,
+ "estates": 8707,
+ "1856": 8708,
+ "michel": 8709,
+ "wounds": 8710,
+ "refugees": 8711,
+ "manufacturers": 8712,
+ "##nic": 8713,
+ "mercury": 8714,
+ "syndrome": 8715,
+ "porter": 8716,
+ "##iya": 8717,
+ "##din": 8718,
+ "hamburg": 8719,
+ "identification": 8720,
+ "upstairs": 8721,
+ "purse": 8722,
+ "widened": 8723,
+ "pause": 8724,
+ "cared": 8725,
+ "breathed": 8726,
+ "affiliate": 8727,
+ "santiago": 8728,
+ "prevented": 8729,
+ "celtic": 8730,
+ "fisher": 8731,
+ "125": 8732,
+ "recruited": 8733,
+ "byzantine": 8734,
+ "reconstruction": 8735,
+ "farther": 8736,
+ "##mp": 8737,
+ "diet": 8738,
+ "sake": 8739,
+ "au": 8740,
+ "spite": 8741,
+ "sensation": 8742,
+ "##ert": 8743,
+ "blank": 8744,
+ "separation": 8745,
+ "105": 8746,
+ "##hon": 8747,
+ "vladimir": 8748,
+ "armies": 8749,
+ "anime": 8750,
+ "##lie": 8751,
+ "accommodate": 8752,
+ "orbit": 8753,
+ "cult": 8754,
+ "sofia": 8755,
+ "archive": 8756,
+ "##ify": 8757,
+ "##box": 8758,
+ "founders": 8759,
+ "sustained": 8760,
+ "disorder": 8761,
+ "honours": 8762,
+ "northeastern": 8763,
+ "mia": 8764,
+ "crops": 8765,
+ "violet": 8766,
+ "threats": 8767,
+ "blanket": 8768,
+ "fires": 8769,
+ "canton": 8770,
+ "followers": 8771,
+ "southwestern": 8772,
+ "prototype": 8773,
+ "voyage": 8774,
+ "assignment": 8775,
+ "altered": 8776,
+ "moderate": 8777,
+ "protocol": 8778,
+ "pistol": 8779,
+ "##eo": 8780,
+ "questioned": 8781,
+ "brass": 8782,
+ "lifting": 8783,
+ "1852": 8784,
+ "math": 8785,
+ "authored": 8786,
+ "##ual": 8787,
+ "doug": 8788,
+ "dimensional": 8789,
+ "dynamic": 8790,
+ "##san": 8791,
+ "1851": 8792,
+ "pronounced": 8793,
+ "grateful": 8794,
+ "quest": 8795,
+ "uncomfortable": 8796,
+ "boom": 8797,
+ "presidency": 8798,
+ "stevens": 8799,
+ "relating": 8800,
+ "politicians": 8801,
+ "chen": 8802,
+ "barrier": 8803,
+ "quinn": 8804,
+ "diana": 8805,
+ "mosque": 8806,
+ "tribal": 8807,
+ "cheese": 8808,
+ "palmer": 8809,
+ "portions": 8810,
+ "sometime": 8811,
+ "chester": 8812,
+ "treasure": 8813,
+ "wu": 8814,
+ "bend": 8815,
+ "download": 8816,
+ "millions": 8817,
+ "reforms": 8818,
+ "registration": 8819,
+ "##osa": 8820,
+ "consequently": 8821,
+ "monitoring": 8822,
+ "ate": 8823,
+ "preliminary": 8824,
+ "brandon": 8825,
+ "invented": 8826,
+ "ps": 8827,
+ "eaten": 8828,
+ "exterior": 8829,
+ "intervention": 8830,
+ "ports": 8831,
+ "documented": 8832,
+ "log": 8833,
+ "displays": 8834,
+ "lecture": 8835,
+ "sally": 8836,
+ "favourite": 8837,
+ "##itz": 8838,
+ "vermont": 8839,
+ "lo": 8840,
+ "invisible": 8841,
+ "isle": 8842,
+ "breed": 8843,
+ "##ator": 8844,
+ "journalists": 8845,
+ "relay": 8846,
+ "speaks": 8847,
+ "backward": 8848,
+ "explore": 8849,
+ "midfielder": 8850,
+ "actively": 8851,
+ "stefan": 8852,
+ "procedures": 8853,
+ "cannon": 8854,
+ "blond": 8855,
+ "kenneth": 8856,
+ "centered": 8857,
+ "servants": 8858,
+ "chains": 8859,
+ "libraries": 8860,
+ "malcolm": 8861,
+ "essex": 8862,
+ "henri": 8863,
+ "slavery": 8864,
+ "##hal": 8865,
+ "facts": 8866,
+ "fairy": 8867,
+ "coached": 8868,
+ "cassie": 8869,
+ "cats": 8870,
+ "washed": 8871,
+ "cop": 8872,
+ "##fi": 8873,
+ "announcement": 8874,
+ "item": 8875,
+ "2000s": 8876,
+ "vinyl": 8877,
+ "activated": 8878,
+ "marco": 8879,
+ "frontier": 8880,
+ "growled": 8881,
+ "curriculum": 8882,
+ "##das": 8883,
+ "loyal": 8884,
+ "accomplished": 8885,
+ "leslie": 8886,
+ "ritual": 8887,
+ "kenny": 8888,
+ "##00": 8889,
+ "vii": 8890,
+ "napoleon": 8891,
+ "hollow": 8892,
+ "hybrid": 8893,
+ "jungle": 8894,
+ "stationed": 8895,
+ "friedrich": 8896,
+ "counted": 8897,
+ "##ulated": 8898,
+ "platinum": 8899,
+ "theatrical": 8900,
+ "seated": 8901,
+ "col": 8902,
+ "rubber": 8903,
+ "glen": 8904,
+ "1840": 8905,
+ "diversity": 8906,
+ "healing": 8907,
+ "extends": 8908,
+ "id": 8909,
+ "provisions": 8910,
+ "administrator": 8911,
+ "columbus": 8912,
+ "##oe": 8913,
+ "tributary": 8914,
+ "te": 8915,
+ "assured": 8916,
+ "org": 8917,
+ "##uous": 8918,
+ "prestigious": 8919,
+ "examined": 8920,
+ "lectures": 8921,
+ "grammy": 8922,
+ "ronald": 8923,
+ "associations": 8924,
+ "bailey": 8925,
+ "allan": 8926,
+ "essays": 8927,
+ "flute": 8928,
+ "believing": 8929,
+ "consultant": 8930,
+ "proceedings": 8931,
+ "travelling": 8932,
+ "1853": 8933,
+ "kit": 8934,
+ "kerala": 8935,
+ "yugoslavia": 8936,
+ "buddy": 8937,
+ "methodist": 8938,
+ "##ith": 8939,
+ "burial": 8940,
+ "centres": 8941,
+ "batman": 8942,
+ "##nda": 8943,
+ "discontinued": 8944,
+ "bo": 8945,
+ "dock": 8946,
+ "stockholm": 8947,
+ "lungs": 8948,
+ "severely": 8949,
+ "##nk": 8950,
+ "citing": 8951,
+ "manga": 8952,
+ "##ugh": 8953,
+ "steal": 8954,
+ "mumbai": 8955,
+ "iraqi": 8956,
+ "robot": 8957,
+ "celebrity": 8958,
+ "bride": 8959,
+ "broadcasts": 8960,
+ "abolished": 8961,
+ "pot": 8962,
+ "joel": 8963,
+ "overhead": 8964,
+ "franz": 8965,
+ "packed": 8966,
+ "reconnaissance": 8967,
+ "johann": 8968,
+ "acknowledged": 8969,
+ "introduce": 8970,
+ "handled": 8971,
+ "doctorate": 8972,
+ "developments": 8973,
+ "drinks": 8974,
+ "alley": 8975,
+ "palestine": 8976,
+ "##nis": 8977,
+ "##aki": 8978,
+ "proceeded": 8979,
+ "recover": 8980,
+ "bradley": 8981,
+ "grain": 8982,
+ "patch": 8983,
+ "afford": 8984,
+ "infection": 8985,
+ "nationalist": 8986,
+ "legendary": 8987,
+ "##ath": 8988,
+ "interchange": 8989,
+ "virtually": 8990,
+ "gen": 8991,
+ "gravity": 8992,
+ "exploration": 8993,
+ "amber": 8994,
+ "vital": 8995,
+ "wishes": 8996,
+ "powell": 8997,
+ "doctrine": 8998,
+ "elbow": 8999,
+ "screenplay": 9000,
+ "##bird": 9001,
+ "contribute": 9002,
+ "indonesian": 9003,
+ "pet": 9004,
+ "creates": 9005,
+ "##com": 9006,
+ "enzyme": 9007,
+ "kylie": 9008,
+ "discipline": 9009,
+ "drops": 9010,
+ "manila": 9011,
+ "hunger": 9012,
+ "##ien": 9013,
+ "layers": 9014,
+ "suffer": 9015,
+ "fever": 9016,
+ "bits": 9017,
+ "monica": 9018,
+ "keyboard": 9019,
+ "manages": 9020,
+ "##hood": 9021,
+ "searched": 9022,
+ "appeals": 9023,
+ "##bad": 9024,
+ "testament": 9025,
+ "grande": 9026,
+ "reid": 9027,
+ "##war": 9028,
+ "beliefs": 9029,
+ "congo": 9030,
+ "##ification": 9031,
+ "##dia": 9032,
+ "si": 9033,
+ "requiring": 9034,
+ "##via": 9035,
+ "casey": 9036,
+ "1849": 9037,
+ "regret": 9038,
+ "streak": 9039,
+ "rape": 9040,
+ "depends": 9041,
+ "syrian": 9042,
+ "sprint": 9043,
+ "pound": 9044,
+ "tourists": 9045,
+ "upcoming": 9046,
+ "pub": 9047,
+ "##xi": 9048,
+ "tense": 9049,
+ "##els": 9050,
+ "practiced": 9051,
+ "echo": 9052,
+ "nationwide": 9053,
+ "guild": 9054,
+ "motorcycle": 9055,
+ "liz": 9056,
+ "##zar": 9057,
+ "chiefs": 9058,
+ "desired": 9059,
+ "elena": 9060,
+ "bye": 9061,
+ "precious": 9062,
+ "absorbed": 9063,
+ "relatives": 9064,
+ "booth": 9065,
+ "pianist": 9066,
+ "##mal": 9067,
+ "citizenship": 9068,
+ "exhausted": 9069,
+ "wilhelm": 9070,
+ "##ceae": 9071,
+ "##hed": 9072,
+ "noting": 9073,
+ "quarterback": 9074,
+ "urge": 9075,
+ "hectares": 9076,
+ "##gue": 9077,
+ "ace": 9078,
+ "holly": 9079,
+ "##tal": 9080,
+ "blonde": 9081,
+ "davies": 9082,
+ "parked": 9083,
+ "sustainable": 9084,
+ "stepping": 9085,
+ "twentieth": 9086,
+ "airfield": 9087,
+ "galaxy": 9088,
+ "nest": 9089,
+ "chip": 9090,
+ "##nell": 9091,
+ "tan": 9092,
+ "shaft": 9093,
+ "paulo": 9094,
+ "requirement": 9095,
+ "##zy": 9096,
+ "paradise": 9097,
+ "tobacco": 9098,
+ "trans": 9099,
+ "renewed": 9100,
+ "vietnamese": 9101,
+ "##cker": 9102,
+ "##ju": 9103,
+ "suggesting": 9104,
+ "catching": 9105,
+ "holmes": 9106,
+ "enjoying": 9107,
+ "md": 9108,
+ "trips": 9109,
+ "colt": 9110,
+ "holder": 9111,
+ "butterfly": 9112,
+ "nerve": 9113,
+ "reformed": 9114,
+ "cherry": 9115,
+ "bowling": 9116,
+ "trailer": 9117,
+ "carriage": 9118,
+ "goodbye": 9119,
+ "appreciate": 9120,
+ "toy": 9121,
+ "joshua": 9122,
+ "interactive": 9123,
+ "enabled": 9124,
+ "involve": 9125,
+ "##kan": 9126,
+ "collar": 9127,
+ "determination": 9128,
+ "bunch": 9129,
+ "facebook": 9130,
+ "recall": 9131,
+ "shorts": 9132,
+ "superintendent": 9133,
+ "episcopal": 9134,
+ "frustration": 9135,
+ "giovanni": 9136,
+ "nineteenth": 9137,
+ "laser": 9138,
+ "privately": 9139,
+ "array": 9140,
+ "circulation": 9141,
+ "##ovic": 9142,
+ "armstrong": 9143,
+ "deals": 9144,
+ "painful": 9145,
+ "permit": 9146,
+ "discrimination": 9147,
+ "##wi": 9148,
+ "aires": 9149,
+ "retiring": 9150,
+ "cottage": 9151,
+ "ni": 9152,
+ "##sta": 9153,
+ "horizon": 9154,
+ "ellen": 9155,
+ "jamaica": 9156,
+ "ripped": 9157,
+ "fernando": 9158,
+ "chapters": 9159,
+ "playstation": 9160,
+ "patron": 9161,
+ "lecturer": 9162,
+ "navigation": 9163,
+ "behaviour": 9164,
+ "genes": 9165,
+ "georgian": 9166,
+ "export": 9167,
+ "solomon": 9168,
+ "rivals": 9169,
+ "swift": 9170,
+ "seventeen": 9171,
+ "rodriguez": 9172,
+ "princeton": 9173,
+ "independently": 9174,
+ "sox": 9175,
+ "1847": 9176,
+ "arguing": 9177,
+ "entity": 9178,
+ "casting": 9179,
+ "hank": 9180,
+ "criteria": 9181,
+ "oakland": 9182,
+ "geographic": 9183,
+ "milwaukee": 9184,
+ "reflection": 9185,
+ "expanding": 9186,
+ "conquest": 9187,
+ "dubbed": 9188,
+ "##tv": 9189,
+ "halt": 9190,
+ "brave": 9191,
+ "brunswick": 9192,
+ "doi": 9193,
+ "arched": 9194,
+ "curtis": 9195,
+ "divorced": 9196,
+ "predominantly": 9197,
+ "somerset": 9198,
+ "streams": 9199,
+ "ugly": 9200,
+ "zoo": 9201,
+ "horrible": 9202,
+ "curved": 9203,
+ "buenos": 9204,
+ "fierce": 9205,
+ "dictionary": 9206,
+ "vector": 9207,
+ "theological": 9208,
+ "unions": 9209,
+ "handful": 9210,
+ "stability": 9211,
+ "chan": 9212,
+ "punjab": 9213,
+ "segments": 9214,
+ "##lly": 9215,
+ "altar": 9216,
+ "ignoring": 9217,
+ "gesture": 9218,
+ "monsters": 9219,
+ "pastor": 9220,
+ "##stone": 9221,
+ "thighs": 9222,
+ "unexpected": 9223,
+ "operators": 9224,
+ "abruptly": 9225,
+ "coin": 9226,
+ "compiled": 9227,
+ "associates": 9228,
+ "improving": 9229,
+ "migration": 9230,
+ "pin": 9231,
+ "##ose": 9232,
+ "compact": 9233,
+ "collegiate": 9234,
+ "reserved": 9235,
+ "##urs": 9236,
+ "quarterfinals": 9237,
+ "roster": 9238,
+ "restore": 9239,
+ "assembled": 9240,
+ "hurry": 9241,
+ "oval": 9242,
+ "##cies": 9243,
+ "1846": 9244,
+ "flags": 9245,
+ "martha": 9246,
+ "##del": 9247,
+ "victories": 9248,
+ "sharply": 9249,
+ "##rated": 9250,
+ "argues": 9251,
+ "deadly": 9252,
+ "neo": 9253,
+ "drawings": 9254,
+ "symbols": 9255,
+ "performer": 9256,
+ "##iel": 9257,
+ "griffin": 9258,
+ "restrictions": 9259,
+ "editing": 9260,
+ "andrews": 9261,
+ "java": 9262,
+ "journals": 9263,
+ "arabia": 9264,
+ "compositions": 9265,
+ "dee": 9266,
+ "pierce": 9267,
+ "removing": 9268,
+ "hindi": 9269,
+ "casino": 9270,
+ "runway": 9271,
+ "civilians": 9272,
+ "minds": 9273,
+ "nasa": 9274,
+ "hotels": 9275,
+ "##zation": 9276,
+ "refuge": 9277,
+ "rent": 9278,
+ "retain": 9279,
+ "potentially": 9280,
+ "conferences": 9281,
+ "suburban": 9282,
+ "conducting": 9283,
+ "##tto": 9284,
+ "##tions": 9285,
+ "##tle": 9286,
+ "descended": 9287,
+ "massacre": 9288,
+ "##cal": 9289,
+ "ammunition": 9290,
+ "terrain": 9291,
+ "fork": 9292,
+ "souls": 9293,
+ "counts": 9294,
+ "chelsea": 9295,
+ "durham": 9296,
+ "drives": 9297,
+ "cab": 9298,
+ "##bank": 9299,
+ "perth": 9300,
+ "realizing": 9301,
+ "palestinian": 9302,
+ "finn": 9303,
+ "simpson": 9304,
+ "##dal": 9305,
+ "betty": 9306,
+ "##ule": 9307,
+ "moreover": 9308,
+ "particles": 9309,
+ "cardinals": 9310,
+ "tent": 9311,
+ "evaluation": 9312,
+ "extraordinary": 9313,
+ "##oid": 9314,
+ "inscription": 9315,
+ "##works": 9316,
+ "wednesday": 9317,
+ "chloe": 9318,
+ "maintains": 9319,
+ "panels": 9320,
+ "ashley": 9321,
+ "trucks": 9322,
+ "##nation": 9323,
+ "cluster": 9324,
+ "sunlight": 9325,
+ "strikes": 9326,
+ "zhang": 9327,
+ "##wing": 9328,
+ "dialect": 9329,
+ "canon": 9330,
+ "##ap": 9331,
+ "tucked": 9332,
+ "##ws": 9333,
+ "collecting": 9334,
+ "##mas": 9335,
+ "##can": 9336,
+ "##sville": 9337,
+ "maker": 9338,
+ "quoted": 9339,
+ "evan": 9340,
+ "franco": 9341,
+ "aria": 9342,
+ "buying": 9343,
+ "cleaning": 9344,
+ "eva": 9345,
+ "closet": 9346,
+ "provision": 9347,
+ "apollo": 9348,
+ "clinic": 9349,
+ "rat": 9350,
+ "##ez": 9351,
+ "necessarily": 9352,
+ "ac": 9353,
+ "##gle": 9354,
+ "##ising": 9355,
+ "venues": 9356,
+ "flipped": 9357,
+ "cent": 9358,
+ "spreading": 9359,
+ "trustees": 9360,
+ "checking": 9361,
+ "authorized": 9362,
+ "##sco": 9363,
+ "disappointed": 9364,
+ "##ado": 9365,
+ "notion": 9366,
+ "duration": 9367,
+ "trumpet": 9368,
+ "hesitated": 9369,
+ "topped": 9370,
+ "brussels": 9371,
+ "rolls": 9372,
+ "theoretical": 9373,
+ "hint": 9374,
+ "define": 9375,
+ "aggressive": 9376,
+ "repeat": 9377,
+ "wash": 9378,
+ "peaceful": 9379,
+ "optical": 9380,
+ "width": 9381,
+ "allegedly": 9382,
+ "mcdonald": 9383,
+ "strict": 9384,
+ "copyright": 9385,
+ "##illa": 9386,
+ "investors": 9387,
+ "mar": 9388,
+ "jam": 9389,
+ "witnesses": 9390,
+ "sounding": 9391,
+ "miranda": 9392,
+ "michelle": 9393,
+ "privacy": 9394,
+ "hugo": 9395,
+ "harmony": 9396,
+ "##pp": 9397,
+ "valid": 9398,
+ "lynn": 9399,
+ "glared": 9400,
+ "nina": 9401,
+ "102": 9402,
+ "headquartered": 9403,
+ "diving": 9404,
+ "boarding": 9405,
+ "gibson": 9406,
+ "##ncy": 9407,
+ "albanian": 9408,
+ "marsh": 9409,
+ "routine": 9410,
+ "dealt": 9411,
+ "enhanced": 9412,
+ "er": 9413,
+ "intelligent": 9414,
+ "substance": 9415,
+ "targeted": 9416,
+ "enlisted": 9417,
+ "discovers": 9418,
+ "spinning": 9419,
+ "observations": 9420,
+ "pissed": 9421,
+ "smoking": 9422,
+ "rebecca": 9423,
+ "capitol": 9424,
+ "visa": 9425,
+ "varied": 9426,
+ "costume": 9427,
+ "seemingly": 9428,
+ "indies": 9429,
+ "compensation": 9430,
+ "surgeon": 9431,
+ "thursday": 9432,
+ "arsenal": 9433,
+ "westminster": 9434,
+ "suburbs": 9435,
+ "rid": 9436,
+ "anglican": 9437,
+ "##ridge": 9438,
+ "knots": 9439,
+ "foods": 9440,
+ "alumni": 9441,
+ "lighter": 9442,
+ "fraser": 9443,
+ "whoever": 9444,
+ "portal": 9445,
+ "scandal": 9446,
+ "##ray": 9447,
+ "gavin": 9448,
+ "advised": 9449,
+ "instructor": 9450,
+ "flooding": 9451,
+ "terrorist": 9452,
+ "##ale": 9453,
+ "teenage": 9454,
+ "interim": 9455,
+ "senses": 9456,
+ "duck": 9457,
+ "teen": 9458,
+ "thesis": 9459,
+ "abby": 9460,
+ "eager": 9461,
+ "overcome": 9462,
+ "##ile": 9463,
+ "newport": 9464,
+ "glenn": 9465,
+ "rises": 9466,
+ "shame": 9467,
+ "##cc": 9468,
+ "prompted": 9469,
+ "priority": 9470,
+ "forgot": 9471,
+ "bomber": 9472,
+ "nicolas": 9473,
+ "protective": 9474,
+ "360": 9475,
+ "cartoon": 9476,
+ "katherine": 9477,
+ "breeze": 9478,
+ "lonely": 9479,
+ "trusted": 9480,
+ "henderson": 9481,
+ "richardson": 9482,
+ "relax": 9483,
+ "banner": 9484,
+ "candy": 9485,
+ "palms": 9486,
+ "remarkable": 9487,
+ "##rio": 9488,
+ "legends": 9489,
+ "cricketer": 9490,
+ "essay": 9491,
+ "ordained": 9492,
+ "edmund": 9493,
+ "rifles": 9494,
+ "trigger": 9495,
+ "##uri": 9496,
+ "##away": 9497,
+ "sail": 9498,
+ "alert": 9499,
+ "1830": 9500,
+ "audiences": 9501,
+ "penn": 9502,
+ "sussex": 9503,
+ "siblings": 9504,
+ "pursued": 9505,
+ "indianapolis": 9506,
+ "resist": 9507,
+ "rosa": 9508,
+ "consequence": 9509,
+ "succeed": 9510,
+ "avoided": 9511,
+ "1845": 9512,
+ "##ulation": 9513,
+ "inland": 9514,
+ "##tie": 9515,
+ "##nna": 9516,
+ "counsel": 9517,
+ "profession": 9518,
+ "chronicle": 9519,
+ "hurried": 9520,
+ "##una": 9521,
+ "eyebrow": 9522,
+ "eventual": 9523,
+ "bleeding": 9524,
+ "innovative": 9525,
+ "cure": 9526,
+ "##dom": 9527,
+ "committees": 9528,
+ "accounting": 9529,
+ "con": 9530,
+ "scope": 9531,
+ "hardy": 9532,
+ "heather": 9533,
+ "tenor": 9534,
+ "gut": 9535,
+ "herald": 9536,
+ "codes": 9537,
+ "tore": 9538,
+ "scales": 9539,
+ "wagon": 9540,
+ "##oo": 9541,
+ "luxury": 9542,
+ "tin": 9543,
+ "prefer": 9544,
+ "fountain": 9545,
+ "triangle": 9546,
+ "bonds": 9547,
+ "darling": 9548,
+ "convoy": 9549,
+ "dried": 9550,
+ "traced": 9551,
+ "beings": 9552,
+ "troy": 9553,
+ "accidentally": 9554,
+ "slam": 9555,
+ "findings": 9556,
+ "smelled": 9557,
+ "joey": 9558,
+ "lawyers": 9559,
+ "outcome": 9560,
+ "steep": 9561,
+ "bosnia": 9562,
+ "configuration": 9563,
+ "shifting": 9564,
+ "toll": 9565,
+ "brook": 9566,
+ "performers": 9567,
+ "lobby": 9568,
+ "philosophical": 9569,
+ "construct": 9570,
+ "shrine": 9571,
+ "aggregate": 9572,
+ "boot": 9573,
+ "cox": 9574,
+ "phenomenon": 9575,
+ "savage": 9576,
+ "insane": 9577,
+ "solely": 9578,
+ "reynolds": 9579,
+ "lifestyle": 9580,
+ "##ima": 9581,
+ "nationally": 9582,
+ "holdings": 9583,
+ "consideration": 9584,
+ "enable": 9585,
+ "edgar": 9586,
+ "mo": 9587,
+ "mama": 9588,
+ "##tein": 9589,
+ "fights": 9590,
+ "relegation": 9591,
+ "chances": 9592,
+ "atomic": 9593,
+ "hub": 9594,
+ "conjunction": 9595,
+ "awkward": 9596,
+ "reactions": 9597,
+ "currency": 9598,
+ "finale": 9599,
+ "kumar": 9600,
+ "underwent": 9601,
+ "steering": 9602,
+ "elaborate": 9603,
+ "gifts": 9604,
+ "comprising": 9605,
+ "melissa": 9606,
+ "veins": 9607,
+ "reasonable": 9608,
+ "sunshine": 9609,
+ "chi": 9610,
+ "solve": 9611,
+ "trails": 9612,
+ "inhabited": 9613,
+ "elimination": 9614,
+ "ethics": 9615,
+ "huh": 9616,
+ "ana": 9617,
+ "molly": 9618,
+ "consent": 9619,
+ "apartments": 9620,
+ "layout": 9621,
+ "marines": 9622,
+ "##ces": 9623,
+ "hunters": 9624,
+ "bulk": 9625,
+ "##oma": 9626,
+ "hometown": 9627,
+ "##wall": 9628,
+ "##mont": 9629,
+ "cracked": 9630,
+ "reads": 9631,
+ "neighbouring": 9632,
+ "withdrawn": 9633,
+ "admission": 9634,
+ "wingspan": 9635,
+ "damned": 9636,
+ "anthology": 9637,
+ "lancashire": 9638,
+ "brands": 9639,
+ "batting": 9640,
+ "forgive": 9641,
+ "cuban": 9642,
+ "awful": 9643,
+ "##lyn": 9644,
+ "104": 9645,
+ "dimensions": 9646,
+ "imagination": 9647,
+ "##ade": 9648,
+ "dante": 9649,
+ "##ship": 9650,
+ "tracking": 9651,
+ "desperately": 9652,
+ "goalkeeper": 9653,
+ "##yne": 9654,
+ "groaned": 9655,
+ "workshops": 9656,
+ "confident": 9657,
+ "burton": 9658,
+ "gerald": 9659,
+ "milton": 9660,
+ "circus": 9661,
+ "uncertain": 9662,
+ "slope": 9663,
+ "copenhagen": 9664,
+ "sophia": 9665,
+ "fog": 9666,
+ "philosopher": 9667,
+ "portraits": 9668,
+ "accent": 9669,
+ "cycling": 9670,
+ "varying": 9671,
+ "gripped": 9672,
+ "larvae": 9673,
+ "garrett": 9674,
+ "specified": 9675,
+ "scotia": 9676,
+ "mature": 9677,
+ "luther": 9678,
+ "kurt": 9679,
+ "rap": 9680,
+ "##kes": 9681,
+ "aerial": 9682,
+ "750": 9683,
+ "ferdinand": 9684,
+ "heated": 9685,
+ "es": 9686,
+ "transported": 9687,
+ "##shan": 9688,
+ "safely": 9689,
+ "nonetheless": 9690,
+ "##orn": 9691,
+ "##gal": 9692,
+ "motors": 9693,
+ "demanding": 9694,
+ "##sburg": 9695,
+ "startled": 9696,
+ "##brook": 9697,
+ "ally": 9698,
+ "generate": 9699,
+ "caps": 9700,
+ "ghana": 9701,
+ "stained": 9702,
+ "demo": 9703,
+ "mentions": 9704,
+ "beds": 9705,
+ "ap": 9706,
+ "afterward": 9707,
+ "diary": 9708,
+ "##bling": 9709,
+ "utility": 9710,
+ "##iro": 9711,
+ "richards": 9712,
+ "1837": 9713,
+ "conspiracy": 9714,
+ "conscious": 9715,
+ "shining": 9716,
+ "footsteps": 9717,
+ "observer": 9718,
+ "cyprus": 9719,
+ "urged": 9720,
+ "loyalty": 9721,
+ "developer": 9722,
+ "probability": 9723,
+ "olive": 9724,
+ "upgraded": 9725,
+ "gym": 9726,
+ "miracle": 9727,
+ "insects": 9728,
+ "graves": 9729,
+ "1844": 9730,
+ "ourselves": 9731,
+ "hydrogen": 9732,
+ "amazon": 9733,
+ "katie": 9734,
+ "tickets": 9735,
+ "poets": 9736,
+ "##pm": 9737,
+ "planes": 9738,
+ "##pan": 9739,
+ "prevention": 9740,
+ "witnessed": 9741,
+ "dense": 9742,
+ "jin": 9743,
+ "randy": 9744,
+ "tang": 9745,
+ "warehouse": 9746,
+ "monroe": 9747,
+ "bang": 9748,
+ "archived": 9749,
+ "elderly": 9750,
+ "investigations": 9751,
+ "alec": 9752,
+ "granite": 9753,
+ "mineral": 9754,
+ "conflicts": 9755,
+ "controlling": 9756,
+ "aboriginal": 9757,
+ "carlo": 9758,
+ "##zu": 9759,
+ "mechanics": 9760,
+ "stan": 9761,
+ "stark": 9762,
+ "rhode": 9763,
+ "skirt": 9764,
+ "est": 9765,
+ "##berry": 9766,
+ "bombs": 9767,
+ "respected": 9768,
+ "##horn": 9769,
+ "imposed": 9770,
+ "limestone": 9771,
+ "deny": 9772,
+ "nominee": 9773,
+ "memphis": 9774,
+ "grabbing": 9775,
+ "disabled": 9776,
+ "##als": 9777,
+ "amusement": 9778,
+ "aa": 9779,
+ "frankfurt": 9780,
+ "corn": 9781,
+ "referendum": 9782,
+ "varies": 9783,
+ "slowed": 9784,
+ "disk": 9785,
+ "firms": 9786,
+ "unconscious": 9787,
+ "incredible": 9788,
+ "clue": 9789,
+ "sue": 9790,
+ "##zhou": 9791,
+ "twist": 9792,
+ "##cio": 9793,
+ "joins": 9794,
+ "idaho": 9795,
+ "chad": 9796,
+ "developers": 9797,
+ "computing": 9798,
+ "destroyer": 9799,
+ "103": 9800,
+ "mortal": 9801,
+ "tucker": 9802,
+ "kingston": 9803,
+ "choices": 9804,
+ "yu": 9805,
+ "carson": 9806,
+ "1800": 9807,
+ "os": 9808,
+ "whitney": 9809,
+ "geneva": 9810,
+ "pretend": 9811,
+ "dimension": 9812,
+ "staged": 9813,
+ "plateau": 9814,
+ "maya": 9815,
+ "##une": 9816,
+ "freestyle": 9817,
+ "##bc": 9818,
+ "rovers": 9819,
+ "hiv": 9820,
+ "##ids": 9821,
+ "tristan": 9822,
+ "classroom": 9823,
+ "prospect": 9824,
+ "##hus": 9825,
+ "honestly": 9826,
+ "diploma": 9827,
+ "lied": 9828,
+ "thermal": 9829,
+ "auxiliary": 9830,
+ "feast": 9831,
+ "unlikely": 9832,
+ "iata": 9833,
+ "##tel": 9834,
+ "morocco": 9835,
+ "pounding": 9836,
+ "treasury": 9837,
+ "lithuania": 9838,
+ "considerably": 9839,
+ "1841": 9840,
+ "dish": 9841,
+ "1812": 9842,
+ "geological": 9843,
+ "matching": 9844,
+ "stumbled": 9845,
+ "destroying": 9846,
+ "marched": 9847,
+ "brien": 9848,
+ "advances": 9849,
+ "cake": 9850,
+ "nicole": 9851,
+ "belle": 9852,
+ "settling": 9853,
+ "measuring": 9854,
+ "directing": 9855,
+ "##mie": 9856,
+ "tuesday": 9857,
+ "bassist": 9858,
+ "capabilities": 9859,
+ "stunned": 9860,
+ "fraud": 9861,
+ "torpedo": 9862,
+ "##list": 9863,
+ "##phone": 9864,
+ "anton": 9865,
+ "wisdom": 9866,
+ "surveillance": 9867,
+ "ruined": 9868,
+ "##ulate": 9869,
+ "lawsuit": 9870,
+ "healthcare": 9871,
+ "theorem": 9872,
+ "halls": 9873,
+ "trend": 9874,
+ "aka": 9875,
+ "horizontal": 9876,
+ "dozens": 9877,
+ "acquire": 9878,
+ "lasting": 9879,
+ "swim": 9880,
+ "hawk": 9881,
+ "gorgeous": 9882,
+ "fees": 9883,
+ "vicinity": 9884,
+ "decrease": 9885,
+ "adoption": 9886,
+ "tactics": 9887,
+ "##ography": 9888,
+ "pakistani": 9889,
+ "##ole": 9890,
+ "draws": 9891,
+ "##hall": 9892,
+ "willie": 9893,
+ "burke": 9894,
+ "heath": 9895,
+ "algorithm": 9896,
+ "integral": 9897,
+ "powder": 9898,
+ "elliott": 9899,
+ "brigadier": 9900,
+ "jackie": 9901,
+ "tate": 9902,
+ "varieties": 9903,
+ "darker": 9904,
+ "##cho": 9905,
+ "lately": 9906,
+ "cigarette": 9907,
+ "specimens": 9908,
+ "adds": 9909,
+ "##ree": 9910,
+ "##ensis": 9911,
+ "##inger": 9912,
+ "exploded": 9913,
+ "finalist": 9914,
+ "cia": 9915,
+ "murders": 9916,
+ "wilderness": 9917,
+ "arguments": 9918,
+ "nicknamed": 9919,
+ "acceptance": 9920,
+ "onwards": 9921,
+ "manufacture": 9922,
+ "robertson": 9923,
+ "jets": 9924,
+ "tampa": 9925,
+ "enterprises": 9926,
+ "blog": 9927,
+ "loudly": 9928,
+ "composers": 9929,
+ "nominations": 9930,
+ "1838": 9931,
+ "ai": 9932,
+ "malta": 9933,
+ "inquiry": 9934,
+ "automobile": 9935,
+ "hosting": 9936,
+ "viii": 9937,
+ "rays": 9938,
+ "tilted": 9939,
+ "grief": 9940,
+ "museums": 9941,
+ "strategies": 9942,
+ "furious": 9943,
+ "euro": 9944,
+ "equality": 9945,
+ "cohen": 9946,
+ "poison": 9947,
+ "surrey": 9948,
+ "wireless": 9949,
+ "governed": 9950,
+ "ridiculous": 9951,
+ "moses": 9952,
+ "##esh": 9953,
+ "##room": 9954,
+ "vanished": 9955,
+ "##ito": 9956,
+ "barnes": 9957,
+ "attract": 9958,
+ "morrison": 9959,
+ "istanbul": 9960,
+ "##iness": 9961,
+ "absent": 9962,
+ "rotation": 9963,
+ "petition": 9964,
+ "janet": 9965,
+ "##logical": 9966,
+ "satisfaction": 9967,
+ "custody": 9968,
+ "deliberately": 9969,
+ "observatory": 9970,
+ "comedian": 9971,
+ "surfaces": 9972,
+ "pinyin": 9973,
+ "novelist": 9974,
+ "strictly": 9975,
+ "canterbury": 9976,
+ "oslo": 9977,
+ "monks": 9978,
+ "embrace": 9979,
+ "ibm": 9980,
+ "jealous": 9981,
+ "photograph": 9982,
+ "continent": 9983,
+ "dorothy": 9984,
+ "marina": 9985,
+ "doc": 9986,
+ "excess": 9987,
+ "holden": 9988,
+ "allegations": 9989,
+ "explaining": 9990,
+ "stack": 9991,
+ "avoiding": 9992,
+ "lance": 9993,
+ "storyline": 9994,
+ "majesty": 9995,
+ "poorly": 9996,
+ "spike": 9997,
+ "dos": 9998,
+ "bradford": 9999,
+ "raven": 10000,
+ "travis": 10001,
+ "classics": 10002,
+ "proven": 10003,
+ "voltage": 10004,
+ "pillow": 10005,
+ "fists": 10006,
+ "butt": 10007,
+ "1842": 10008,
+ "interpreted": 10009,
+ "##car": 10010,
+ "1839": 10011,
+ "gage": 10012,
+ "telegraph": 10013,
+ "lens": 10014,
+ "promising": 10015,
+ "expelled": 10016,
+ "casual": 10017,
+ "collector": 10018,
+ "zones": 10019,
+ "##min": 10020,
+ "silly": 10021,
+ "nintendo": 10022,
+ "##kh": 10023,
+ "##bra": 10024,
+ "downstairs": 10025,
+ "chef": 10026,
+ "suspicious": 10027,
+ "afl": 10028,
+ "flies": 10029,
+ "vacant": 10030,
+ "uganda": 10031,
+ "pregnancy": 10032,
+ "condemned": 10033,
+ "lutheran": 10034,
+ "estimates": 10035,
+ "cheap": 10036,
+ "decree": 10037,
+ "saxon": 10038,
+ "proximity": 10039,
+ "stripped": 10040,
+ "idiot": 10041,
+ "deposits": 10042,
+ "contrary": 10043,
+ "presenter": 10044,
+ "magnus": 10045,
+ "glacier": 10046,
+ "im": 10047,
+ "offense": 10048,
+ "edwin": 10049,
+ "##ori": 10050,
+ "upright": 10051,
+ "##long": 10052,
+ "bolt": 10053,
+ "##ois": 10054,
+ "toss": 10055,
+ "geographical": 10056,
+ "##izes": 10057,
+ "environments": 10058,
+ "delicate": 10059,
+ "marking": 10060,
+ "abstract": 10061,
+ "xavier": 10062,
+ "nails": 10063,
+ "windsor": 10064,
+ "plantation": 10065,
+ "occurring": 10066,
+ "equity": 10067,
+ "saskatchewan": 10068,
+ "fears": 10069,
+ "drifted": 10070,
+ "sequences": 10071,
+ "vegetation": 10072,
+ "revolt": 10073,
+ "##stic": 10074,
+ "1843": 10075,
+ "sooner": 10076,
+ "fusion": 10077,
+ "opposing": 10078,
+ "nato": 10079,
+ "skating": 10080,
+ "1836": 10081,
+ "secretly": 10082,
+ "ruin": 10083,
+ "lease": 10084,
+ "##oc": 10085,
+ "edit": 10086,
+ "##nne": 10087,
+ "flora": 10088,
+ "anxiety": 10089,
+ "ruby": 10090,
+ "##ological": 10091,
+ "##mia": 10092,
+ "tel": 10093,
+ "bout": 10094,
+ "taxi": 10095,
+ "emmy": 10096,
+ "frost": 10097,
+ "rainbow": 10098,
+ "compounds": 10099,
+ "foundations": 10100,
+ "rainfall": 10101,
+ "assassination": 10102,
+ "nightmare": 10103,
+ "dominican": 10104,
+ "##win": 10105,
+ "achievements": 10106,
+ "deserve": 10107,
+ "orlando": 10108,
+ "intact": 10109,
+ "armenia": 10110,
+ "##nte": 10111,
+ "calgary": 10112,
+ "valentine": 10113,
+ "106": 10114,
+ "marion": 10115,
+ "proclaimed": 10116,
+ "theodore": 10117,
+ "bells": 10118,
+ "courtyard": 10119,
+ "thigh": 10120,
+ "gonzalez": 10121,
+ "console": 10122,
+ "troop": 10123,
+ "minimal": 10124,
+ "monte": 10125,
+ "everyday": 10126,
+ "##ence": 10127,
+ "##if": 10128,
+ "supporter": 10129,
+ "terrorism": 10130,
+ "buck": 10131,
+ "openly": 10132,
+ "presbyterian": 10133,
+ "activists": 10134,
+ "carpet": 10135,
+ "##iers": 10136,
+ "rubbing": 10137,
+ "uprising": 10138,
+ "##yi": 10139,
+ "cute": 10140,
+ "conceived": 10141,
+ "legally": 10142,
+ "##cht": 10143,
+ "millennium": 10144,
+ "cello": 10145,
+ "velocity": 10146,
+ "ji": 10147,
+ "rescued": 10148,
+ "cardiff": 10149,
+ "1835": 10150,
+ "rex": 10151,
+ "concentrate": 10152,
+ "senators": 10153,
+ "beard": 10154,
+ "rendered": 10155,
+ "glowing": 10156,
+ "battalions": 10157,
+ "scouts": 10158,
+ "competitors": 10159,
+ "sculptor": 10160,
+ "catalogue": 10161,
+ "arctic": 10162,
+ "ion": 10163,
+ "raja": 10164,
+ "bicycle": 10165,
+ "wow": 10166,
+ "glancing": 10167,
+ "lawn": 10168,
+ "##woman": 10169,
+ "gentleman": 10170,
+ "lighthouse": 10171,
+ "publish": 10172,
+ "predicted": 10173,
+ "calculated": 10174,
+ "##val": 10175,
+ "variants": 10176,
+ "##gne": 10177,
+ "strain": 10178,
+ "##ui": 10179,
+ "winston": 10180,
+ "deceased": 10181,
+ "##nus": 10182,
+ "touchdowns": 10183,
+ "brady": 10184,
+ "caleb": 10185,
+ "sinking": 10186,
+ "echoed": 10187,
+ "crush": 10188,
+ "hon": 10189,
+ "blessed": 10190,
+ "protagonist": 10191,
+ "hayes": 10192,
+ "endangered": 10193,
+ "magnitude": 10194,
+ "editors": 10195,
+ "##tine": 10196,
+ "estimate": 10197,
+ "responsibilities": 10198,
+ "##mel": 10199,
+ "backup": 10200,
+ "laying": 10201,
+ "consumed": 10202,
+ "sealed": 10203,
+ "zurich": 10204,
+ "lovers": 10205,
+ "frustrated": 10206,
+ "##eau": 10207,
+ "ahmed": 10208,
+ "kicking": 10209,
+ "mit": 10210,
+ "treasurer": 10211,
+ "1832": 10212,
+ "biblical": 10213,
+ "refuse": 10214,
+ "terrified": 10215,
+ "pump": 10216,
+ "agrees": 10217,
+ "genuine": 10218,
+ "imprisonment": 10219,
+ "refuses": 10220,
+ "plymouth": 10221,
+ "##hen": 10222,
+ "lou": 10223,
+ "##nen": 10224,
+ "tara": 10225,
+ "trembling": 10226,
+ "antarctic": 10227,
+ "ton": 10228,
+ "learns": 10229,
+ "##tas": 10230,
+ "crap": 10231,
+ "crucial": 10232,
+ "faction": 10233,
+ "atop": 10234,
+ "##borough": 10235,
+ "wrap": 10236,
+ "lancaster": 10237,
+ "odds": 10238,
+ "hopkins": 10239,
+ "erik": 10240,
+ "lyon": 10241,
+ "##eon": 10242,
+ "bros": 10243,
+ "##ode": 10244,
+ "snap": 10245,
+ "locality": 10246,
+ "tips": 10247,
+ "empress": 10248,
+ "crowned": 10249,
+ "cal": 10250,
+ "acclaimed": 10251,
+ "chuckled": 10252,
+ "##ory": 10253,
+ "clara": 10254,
+ "sends": 10255,
+ "mild": 10256,
+ "towel": 10257,
+ "##fl": 10258,
+ "##day": 10259,
+ "##а": 10260,
+ "wishing": 10261,
+ "assuming": 10262,
+ "interviewed": 10263,
+ "##bal": 10264,
+ "##die": 10265,
+ "interactions": 10266,
+ "eden": 10267,
+ "cups": 10268,
+ "helena": 10269,
+ "##lf": 10270,
+ "indie": 10271,
+ "beck": 10272,
+ "##fire": 10273,
+ "batteries": 10274,
+ "filipino": 10275,
+ "wizard": 10276,
+ "parted": 10277,
+ "##lam": 10278,
+ "traces": 10279,
+ "##born": 10280,
+ "rows": 10281,
+ "idol": 10282,
+ "albany": 10283,
+ "delegates": 10284,
+ "##ees": 10285,
+ "##sar": 10286,
+ "discussions": 10287,
+ "##ex": 10288,
+ "notre": 10289,
+ "instructed": 10290,
+ "belgrade": 10291,
+ "highways": 10292,
+ "suggestion": 10293,
+ "lauren": 10294,
+ "possess": 10295,
+ "orientation": 10296,
+ "alexandria": 10297,
+ "abdul": 10298,
+ "beats": 10299,
+ "salary": 10300,
+ "reunion": 10301,
+ "ludwig": 10302,
+ "alright": 10303,
+ "wagner": 10304,
+ "intimate": 10305,
+ "pockets": 10306,
+ "slovenia": 10307,
+ "hugged": 10308,
+ "brighton": 10309,
+ "merchants": 10310,
+ "cruel": 10311,
+ "stole": 10312,
+ "trek": 10313,
+ "slopes": 10314,
+ "repairs": 10315,
+ "enrollment": 10316,
+ "politically": 10317,
+ "underlying": 10318,
+ "promotional": 10319,
+ "counting": 10320,
+ "boeing": 10321,
+ "##bb": 10322,
+ "isabella": 10323,
+ "naming": 10324,
+ "##и": 10325,
+ "keen": 10326,
+ "bacteria": 10327,
+ "listing": 10328,
+ "separately": 10329,
+ "belfast": 10330,
+ "ussr": 10331,
+ "450": 10332,
+ "lithuanian": 10333,
+ "anybody": 10334,
+ "ribs": 10335,
+ "sphere": 10336,
+ "martinez": 10337,
+ "cock": 10338,
+ "embarrassed": 10339,
+ "proposals": 10340,
+ "fragments": 10341,
+ "nationals": 10342,
+ "##fs": 10343,
+ "##wski": 10344,
+ "premises": 10345,
+ "fin": 10346,
+ "1500": 10347,
+ "alpine": 10348,
+ "matched": 10349,
+ "freely": 10350,
+ "bounded": 10351,
+ "jace": 10352,
+ "sleeve": 10353,
+ "##af": 10354,
+ "gaming": 10355,
+ "pier": 10356,
+ "populated": 10357,
+ "evident": 10358,
+ "##like": 10359,
+ "frances": 10360,
+ "flooded": 10361,
+ "##dle": 10362,
+ "frightened": 10363,
+ "pour": 10364,
+ "trainer": 10365,
+ "framed": 10366,
+ "visitor": 10367,
+ "challenging": 10368,
+ "pig": 10369,
+ "wickets": 10370,
+ "##fold": 10371,
+ "infected": 10372,
+ "email": 10373,
+ "##pes": 10374,
+ "arose": 10375,
+ "##aw": 10376,
+ "reward": 10377,
+ "ecuador": 10378,
+ "oblast": 10379,
+ "vale": 10380,
+ "ch": 10381,
+ "shuttle": 10382,
+ "##usa": 10383,
+ "bach": 10384,
+ "rankings": 10385,
+ "forbidden": 10386,
+ "cornwall": 10387,
+ "accordance": 10388,
+ "salem": 10389,
+ "consumers": 10390,
+ "bruno": 10391,
+ "fantastic": 10392,
+ "toes": 10393,
+ "machinery": 10394,
+ "resolved": 10395,
+ "julius": 10396,
+ "remembering": 10397,
+ "propaganda": 10398,
+ "iceland": 10399,
+ "bombardment": 10400,
+ "tide": 10401,
+ "contacts": 10402,
+ "wives": 10403,
+ "##rah": 10404,
+ "concerto": 10405,
+ "macdonald": 10406,
+ "albania": 10407,
+ "implement": 10408,
+ "daisy": 10409,
+ "tapped": 10410,
+ "sudan": 10411,
+ "helmet": 10412,
+ "angela": 10413,
+ "mistress": 10414,
+ "##lic": 10415,
+ "crop": 10416,
+ "sunk": 10417,
+ "finest": 10418,
+ "##craft": 10419,
+ "hostile": 10420,
+ "##ute": 10421,
+ "##tsu": 10422,
+ "boxer": 10423,
+ "fr": 10424,
+ "paths": 10425,
+ "adjusted": 10426,
+ "habit": 10427,
+ "ballot": 10428,
+ "supervision": 10429,
+ "soprano": 10430,
+ "##zen": 10431,
+ "bullets": 10432,
+ "wicked": 10433,
+ "sunset": 10434,
+ "regiments": 10435,
+ "disappear": 10436,
+ "lamp": 10437,
+ "performs": 10438,
+ "app": 10439,
+ "##gia": 10440,
+ "##oa": 10441,
+ "rabbit": 10442,
+ "digging": 10443,
+ "incidents": 10444,
+ "entries": 10445,
+ "##cion": 10446,
+ "dishes": 10447,
+ "##oi": 10448,
+ "introducing": 10449,
+ "##ati": 10450,
+ "##fied": 10451,
+ "freshman": 10452,
+ "slot": 10453,
+ "jill": 10454,
+ "tackles": 10455,
+ "baroque": 10456,
+ "backs": 10457,
+ "##iest": 10458,
+ "lone": 10459,
+ "sponsor": 10460,
+ "destiny": 10461,
+ "altogether": 10462,
+ "convert": 10463,
+ "##aro": 10464,
+ "consensus": 10465,
+ "shapes": 10466,
+ "demonstration": 10467,
+ "basically": 10468,
+ "feminist": 10469,
+ "auction": 10470,
+ "artifacts": 10471,
+ "##bing": 10472,
+ "strongest": 10473,
+ "twitter": 10474,
+ "halifax": 10475,
+ "2019": 10476,
+ "allmusic": 10477,
+ "mighty": 10478,
+ "smallest": 10479,
+ "precise": 10480,
+ "alexandra": 10481,
+ "viola": 10482,
+ "##los": 10483,
+ "##ille": 10484,
+ "manuscripts": 10485,
+ "##illo": 10486,
+ "dancers": 10487,
+ "ari": 10488,
+ "managers": 10489,
+ "monuments": 10490,
+ "blades": 10491,
+ "barracks": 10492,
+ "springfield": 10493,
+ "maiden": 10494,
+ "consolidated": 10495,
+ "electron": 10496,
+ "##end": 10497,
+ "berry": 10498,
+ "airing": 10499,
+ "wheat": 10500,
+ "nobel": 10501,
+ "inclusion": 10502,
+ "blair": 10503,
+ "payments": 10504,
+ "geography": 10505,
+ "bee": 10506,
+ "cc": 10507,
+ "eleanor": 10508,
+ "react": 10509,
+ "##hurst": 10510,
+ "afc": 10511,
+ "manitoba": 10512,
+ "##yu": 10513,
+ "su": 10514,
+ "lineup": 10515,
+ "fitness": 10516,
+ "recreational": 10517,
+ "investments": 10518,
+ "airborne": 10519,
+ "disappointment": 10520,
+ "##dis": 10521,
+ "edmonton": 10522,
+ "viewing": 10523,
+ "##row": 10524,
+ "renovation": 10525,
+ "##cast": 10526,
+ "infant": 10527,
+ "bankruptcy": 10528,
+ "roses": 10529,
+ "aftermath": 10530,
+ "pavilion": 10531,
+ "##yer": 10532,
+ "carpenter": 10533,
+ "withdrawal": 10534,
+ "ladder": 10535,
+ "##hy": 10536,
+ "discussing": 10537,
+ "popped": 10538,
+ "reliable": 10539,
+ "agreements": 10540,
+ "rochester": 10541,
+ "##abad": 10542,
+ "curves": 10543,
+ "bombers": 10544,
+ "220": 10545,
+ "rao": 10546,
+ "reverend": 10547,
+ "decreased": 10548,
+ "choosing": 10549,
+ "107": 10550,
+ "stiff": 10551,
+ "consulting": 10552,
+ "naples": 10553,
+ "crawford": 10554,
+ "tracy": 10555,
+ "ka": 10556,
+ "ribbon": 10557,
+ "cops": 10558,
+ "##lee": 10559,
+ "crushed": 10560,
+ "deciding": 10561,
+ "unified": 10562,
+ "teenager": 10563,
+ "accepting": 10564,
+ "flagship": 10565,
+ "explorer": 10566,
+ "poles": 10567,
+ "sanchez": 10568,
+ "inspection": 10569,
+ "revived": 10570,
+ "skilled": 10571,
+ "induced": 10572,
+ "exchanged": 10573,
+ "flee": 10574,
+ "locals": 10575,
+ "tragedy": 10576,
+ "swallow": 10577,
+ "loading": 10578,
+ "hanna": 10579,
+ "demonstrate": 10580,
+ "##ela": 10581,
+ "salvador": 10582,
+ "flown": 10583,
+ "contestants": 10584,
+ "civilization": 10585,
+ "##ines": 10586,
+ "wanna": 10587,
+ "rhodes": 10588,
+ "fletcher": 10589,
+ "hector": 10590,
+ "knocking": 10591,
+ "considers": 10592,
+ "##ough": 10593,
+ "nash": 10594,
+ "mechanisms": 10595,
+ "sensed": 10596,
+ "mentally": 10597,
+ "walt": 10598,
+ "unclear": 10599,
+ "##eus": 10600,
+ "renovated": 10601,
+ "madame": 10602,
+ "##cks": 10603,
+ "crews": 10604,
+ "governmental": 10605,
+ "##hin": 10606,
+ "undertaken": 10607,
+ "monkey": 10608,
+ "##ben": 10609,
+ "##ato": 10610,
+ "fatal": 10611,
+ "armored": 10612,
+ "copa": 10613,
+ "caves": 10614,
+ "governance": 10615,
+ "grasp": 10616,
+ "perception": 10617,
+ "certification": 10618,
+ "froze": 10619,
+ "damp": 10620,
+ "tugged": 10621,
+ "wyoming": 10622,
+ "##rg": 10623,
+ "##ero": 10624,
+ "newman": 10625,
+ "##lor": 10626,
+ "nerves": 10627,
+ "curiosity": 10628,
+ "graph": 10629,
+ "115": 10630,
+ "##ami": 10631,
+ "withdraw": 10632,
+ "tunnels": 10633,
+ "dull": 10634,
+ "meredith": 10635,
+ "moss": 10636,
+ "exhibits": 10637,
+ "neighbors": 10638,
+ "communicate": 10639,
+ "accuracy": 10640,
+ "explored": 10641,
+ "raiders": 10642,
+ "republicans": 10643,
+ "secular": 10644,
+ "kat": 10645,
+ "superman": 10646,
+ "penny": 10647,
+ "criticised": 10648,
+ "##tch": 10649,
+ "freed": 10650,
+ "update": 10651,
+ "conviction": 10652,
+ "wade": 10653,
+ "ham": 10654,
+ "likewise": 10655,
+ "delegation": 10656,
+ "gotta": 10657,
+ "doll": 10658,
+ "promises": 10659,
+ "technological": 10660,
+ "myth": 10661,
+ "nationality": 10662,
+ "resolve": 10663,
+ "convent": 10664,
+ "##mark": 10665,
+ "sharon": 10666,
+ "dig": 10667,
+ "sip": 10668,
+ "coordinator": 10669,
+ "entrepreneur": 10670,
+ "fold": 10671,
+ "##dine": 10672,
+ "capability": 10673,
+ "councillor": 10674,
+ "synonym": 10675,
+ "blown": 10676,
+ "swan": 10677,
+ "cursed": 10678,
+ "1815": 10679,
+ "jonas": 10680,
+ "haired": 10681,
+ "sofa": 10682,
+ "canvas": 10683,
+ "keeper": 10684,
+ "rivalry": 10685,
+ "##hart": 10686,
+ "rapper": 10687,
+ "speedway": 10688,
+ "swords": 10689,
+ "postal": 10690,
+ "maxwell": 10691,
+ "estonia": 10692,
+ "potter": 10693,
+ "recurring": 10694,
+ "##nn": 10695,
+ "##ave": 10696,
+ "errors": 10697,
+ "##oni": 10698,
+ "cognitive": 10699,
+ "1834": 10700,
+ "##²": 10701,
+ "claws": 10702,
+ "nadu": 10703,
+ "roberto": 10704,
+ "bce": 10705,
+ "wrestler": 10706,
+ "ellie": 10707,
+ "##ations": 10708,
+ "infinite": 10709,
+ "ink": 10710,
+ "##tia": 10711,
+ "presumably": 10712,
+ "finite": 10713,
+ "staircase": 10714,
+ "108": 10715,
+ "noel": 10716,
+ "patricia": 10717,
+ "nacional": 10718,
+ "##cation": 10719,
+ "chill": 10720,
+ "eternal": 10721,
+ "tu": 10722,
+ "preventing": 10723,
+ "prussia": 10724,
+ "fossil": 10725,
+ "limbs": 10726,
+ "##logist": 10727,
+ "ernst": 10728,
+ "frog": 10729,
+ "perez": 10730,
+ "rene": 10731,
+ "##ace": 10732,
+ "pizza": 10733,
+ "prussian": 10734,
+ "##ios": 10735,
+ "##vy": 10736,
+ "molecules": 10737,
+ "regulatory": 10738,
+ "answering": 10739,
+ "opinions": 10740,
+ "sworn": 10741,
+ "lengths": 10742,
+ "supposedly": 10743,
+ "hypothesis": 10744,
+ "upward": 10745,
+ "habitats": 10746,
+ "seating": 10747,
+ "ancestors": 10748,
+ "drank": 10749,
+ "yield": 10750,
+ "hd": 10751,
+ "synthesis": 10752,
+ "researcher": 10753,
+ "modest": 10754,
+ "##var": 10755,
+ "mothers": 10756,
+ "peered": 10757,
+ "voluntary": 10758,
+ "homeland": 10759,
+ "##the": 10760,
+ "acclaim": 10761,
+ "##igan": 10762,
+ "static": 10763,
+ "valve": 10764,
+ "luxembourg": 10765,
+ "alto": 10766,
+ "carroll": 10767,
+ "fe": 10768,
+ "receptor": 10769,
+ "norton": 10770,
+ "ambulance": 10771,
+ "##tian": 10772,
+ "johnston": 10773,
+ "catholics": 10774,
+ "depicting": 10775,
+ "jointly": 10776,
+ "elephant": 10777,
+ "gloria": 10778,
+ "mentor": 10779,
+ "badge": 10780,
+ "ahmad": 10781,
+ "distinguish": 10782,
+ "remarked": 10783,
+ "councils": 10784,
+ "precisely": 10785,
+ "allison": 10786,
+ "advancing": 10787,
+ "detection": 10788,
+ "crowded": 10789,
+ "##10": 10790,
+ "cooperative": 10791,
+ "ankle": 10792,
+ "mercedes": 10793,
+ "dagger": 10794,
+ "surrendered": 10795,
+ "pollution": 10796,
+ "commit": 10797,
+ "subway": 10798,
+ "jeffrey": 10799,
+ "lesson": 10800,
+ "sculptures": 10801,
+ "provider": 10802,
+ "##fication": 10803,
+ "membrane": 10804,
+ "timothy": 10805,
+ "rectangular": 10806,
+ "fiscal": 10807,
+ "heating": 10808,
+ "teammate": 10809,
+ "basket": 10810,
+ "particle": 10811,
+ "anonymous": 10812,
+ "deployment": 10813,
+ "##ple": 10814,
+ "missiles": 10815,
+ "courthouse": 10816,
+ "proportion": 10817,
+ "shoe": 10818,
+ "sec": 10819,
+ "##ller": 10820,
+ "complaints": 10821,
+ "forbes": 10822,
+ "blacks": 10823,
+ "abandon": 10824,
+ "remind": 10825,
+ "sizes": 10826,
+ "overwhelming": 10827,
+ "autobiography": 10828,
+ "natalie": 10829,
+ "##awa": 10830,
+ "risks": 10831,
+ "contestant": 10832,
+ "countryside": 10833,
+ "babies": 10834,
+ "scorer": 10835,
+ "invaded": 10836,
+ "enclosed": 10837,
+ "proceed": 10838,
+ "hurling": 10839,
+ "disorders": 10840,
+ "##cu": 10841,
+ "reflecting": 10842,
+ "continuously": 10843,
+ "cruiser": 10844,
+ "graduates": 10845,
+ "freeway": 10846,
+ "investigated": 10847,
+ "ore": 10848,
+ "deserved": 10849,
+ "maid": 10850,
+ "blocking": 10851,
+ "phillip": 10852,
+ "jorge": 10853,
+ "shakes": 10854,
+ "dove": 10855,
+ "mann": 10856,
+ "variables": 10857,
+ "lacked": 10858,
+ "burden": 10859,
+ "accompanying": 10860,
+ "que": 10861,
+ "consistently": 10862,
+ "organizing": 10863,
+ "provisional": 10864,
+ "complained": 10865,
+ "endless": 10866,
+ "##rm": 10867,
+ "tubes": 10868,
+ "juice": 10869,
+ "georges": 10870,
+ "krishna": 10871,
+ "mick": 10872,
+ "labels": 10873,
+ "thriller": 10874,
+ "##uch": 10875,
+ "laps": 10876,
+ "arcade": 10877,
+ "sage": 10878,
+ "snail": 10879,
+ "##table": 10880,
+ "shannon": 10881,
+ "fi": 10882,
+ "laurence": 10883,
+ "seoul": 10884,
+ "vacation": 10885,
+ "presenting": 10886,
+ "hire": 10887,
+ "churchill": 10888,
+ "surprisingly": 10889,
+ "prohibited": 10890,
+ "savannah": 10891,
+ "technically": 10892,
+ "##oli": 10893,
+ "170": 10894,
+ "##lessly": 10895,
+ "testimony": 10896,
+ "suited": 10897,
+ "speeds": 10898,
+ "toys": 10899,
+ "romans": 10900,
+ "mlb": 10901,
+ "flowering": 10902,
+ "measurement": 10903,
+ "talented": 10904,
+ "kay": 10905,
+ "settings": 10906,
+ "charleston": 10907,
+ "expectations": 10908,
+ "shattered": 10909,
+ "achieving": 10910,
+ "triumph": 10911,
+ "ceremonies": 10912,
+ "portsmouth": 10913,
+ "lanes": 10914,
+ "mandatory": 10915,
+ "loser": 10916,
+ "stretching": 10917,
+ "cologne": 10918,
+ "realizes": 10919,
+ "seventy": 10920,
+ "cornell": 10921,
+ "careers": 10922,
+ "webb": 10923,
+ "##ulating": 10924,
+ "americas": 10925,
+ "budapest": 10926,
+ "ava": 10927,
+ "suspicion": 10928,
+ "##ison": 10929,
+ "yo": 10930,
+ "conrad": 10931,
+ "##hai": 10932,
+ "sterling": 10933,
+ "jessie": 10934,
+ "rector": 10935,
+ "##az": 10936,
+ "1831": 10937,
+ "transform": 10938,
+ "organize": 10939,
+ "loans": 10940,
+ "christine": 10941,
+ "volcanic": 10942,
+ "warrant": 10943,
+ "slender": 10944,
+ "summers": 10945,
+ "subfamily": 10946,
+ "newer": 10947,
+ "danced": 10948,
+ "dynamics": 10949,
+ "rhine": 10950,
+ "proceeds": 10951,
+ "heinrich": 10952,
+ "gastropod": 10953,
+ "commands": 10954,
+ "sings": 10955,
+ "facilitate": 10956,
+ "easter": 10957,
+ "ra": 10958,
+ "positioned": 10959,
+ "responses": 10960,
+ "expense": 10961,
+ "fruits": 10962,
+ "yanked": 10963,
+ "imported": 10964,
+ "25th": 10965,
+ "velvet": 10966,
+ "vic": 10967,
+ "primitive": 10968,
+ "tribune": 10969,
+ "baldwin": 10970,
+ "neighbourhood": 10971,
+ "donna": 10972,
+ "rip": 10973,
+ "hay": 10974,
+ "pr": 10975,
+ "##uro": 10976,
+ "1814": 10977,
+ "espn": 10978,
+ "welcomed": 10979,
+ "##aria": 10980,
+ "qualifier": 10981,
+ "glare": 10982,
+ "highland": 10983,
+ "timing": 10984,
+ "##cted": 10985,
+ "shells": 10986,
+ "eased": 10987,
+ "geometry": 10988,
+ "louder": 10989,
+ "exciting": 10990,
+ "slovakia": 10991,
+ "##sion": 10992,
+ "##iz": 10993,
+ "##lot": 10994,
+ "savings": 10995,
+ "prairie": 10996,
+ "##ques": 10997,
+ "marching": 10998,
+ "rafael": 10999,
+ "tonnes": 11000,
+ "##lled": 11001,
+ "curtain": 11002,
+ "preceding": 11003,
+ "shy": 11004,
+ "heal": 11005,
+ "greene": 11006,
+ "worthy": 11007,
+ "##pot": 11008,
+ "detachment": 11009,
+ "bury": 11010,
+ "sherman": 11011,
+ "##eck": 11012,
+ "reinforced": 11013,
+ "seeks": 11014,
+ "bottles": 11015,
+ "contracted": 11016,
+ "duchess": 11017,
+ "outfit": 11018,
+ "walsh": 11019,
+ "##sc": 11020,
+ "mickey": 11021,
+ "##ase": 11022,
+ "geoffrey": 11023,
+ "archer": 11024,
+ "squeeze": 11025,
+ "dawson": 11026,
+ "eliminate": 11027,
+ "invention": 11028,
+ "##enberg": 11029,
+ "neal": 11030,
+ "##eth": 11031,
+ "stance": 11032,
+ "dealer": 11033,
+ "coral": 11034,
+ "maple": 11035,
+ "retire": 11036,
+ "polo": 11037,
+ "simplified": 11038,
+ "##ht": 11039,
+ "1833": 11040,
+ "hid": 11041,
+ "watts": 11042,
+ "backwards": 11043,
+ "jules": 11044,
+ "##oke": 11045,
+ "genesis": 11046,
+ "mt": 11047,
+ "frames": 11048,
+ "rebounds": 11049,
+ "burma": 11050,
+ "woodland": 11051,
+ "moist": 11052,
+ "santos": 11053,
+ "whispers": 11054,
+ "drained": 11055,
+ "subspecies": 11056,
+ "##aa": 11057,
+ "streaming": 11058,
+ "ulster": 11059,
+ "burnt": 11060,
+ "correspondence": 11061,
+ "maternal": 11062,
+ "gerard": 11063,
+ "denis": 11064,
+ "stealing": 11065,
+ "##load": 11066,
+ "genius": 11067,
+ "duchy": 11068,
+ "##oria": 11069,
+ "inaugurated": 11070,
+ "momentum": 11071,
+ "suits": 11072,
+ "placement": 11073,
+ "sovereign": 11074,
+ "clause": 11075,
+ "thames": 11076,
+ "##hara": 11077,
+ "confederation": 11078,
+ "reservation": 11079,
+ "sketch": 11080,
+ "yankees": 11081,
+ "lets": 11082,
+ "rotten": 11083,
+ "charm": 11084,
+ "hal": 11085,
+ "verses": 11086,
+ "ultra": 11087,
+ "commercially": 11088,
+ "dot": 11089,
+ "salon": 11090,
+ "citation": 11091,
+ "adopt": 11092,
+ "winnipeg": 11093,
+ "mist": 11094,
+ "allocated": 11095,
+ "cairo": 11096,
+ "##boy": 11097,
+ "jenkins": 11098,
+ "interference": 11099,
+ "objectives": 11100,
+ "##wind": 11101,
+ "1820": 11102,
+ "portfolio": 11103,
+ "armoured": 11104,
+ "sectors": 11105,
+ "##eh": 11106,
+ "initiatives": 11107,
+ "##world": 11108,
+ "integrity": 11109,
+ "exercises": 11110,
+ "robe": 11111,
+ "tap": 11112,
+ "ab": 11113,
+ "gazed": 11114,
+ "##tones": 11115,
+ "distracted": 11116,
+ "rulers": 11117,
+ "111": 11118,
+ "favorable": 11119,
+ "jerome": 11120,
+ "tended": 11121,
+ "cart": 11122,
+ "factories": 11123,
+ "##eri": 11124,
+ "diplomat": 11125,
+ "valued": 11126,
+ "gravel": 11127,
+ "charitable": 11128,
+ "##try": 11129,
+ "calvin": 11130,
+ "exploring": 11131,
+ "chang": 11132,
+ "shepherd": 11133,
+ "terrace": 11134,
+ "pdf": 11135,
+ "pupil": 11136,
+ "##ural": 11137,
+ "reflects": 11138,
+ "ups": 11139,
+ "##rch": 11140,
+ "governors": 11141,
+ "shelf": 11142,
+ "depths": 11143,
+ "##nberg": 11144,
+ "trailed": 11145,
+ "crest": 11146,
+ "tackle": 11147,
+ "##nian": 11148,
+ "##ats": 11149,
+ "hatred": 11150,
+ "##kai": 11151,
+ "clare": 11152,
+ "makers": 11153,
+ "ethiopia": 11154,
+ "longtime": 11155,
+ "detected": 11156,
+ "embedded": 11157,
+ "lacking": 11158,
+ "slapped": 11159,
+ "rely": 11160,
+ "thomson": 11161,
+ "anticipation": 11162,
+ "iso": 11163,
+ "morton": 11164,
+ "successive": 11165,
+ "agnes": 11166,
+ "screenwriter": 11167,
+ "straightened": 11168,
+ "philippe": 11169,
+ "playwright": 11170,
+ "haunted": 11171,
+ "licence": 11172,
+ "iris": 11173,
+ "intentions": 11174,
+ "sutton": 11175,
+ "112": 11176,
+ "logical": 11177,
+ "correctly": 11178,
+ "##weight": 11179,
+ "branded": 11180,
+ "licked": 11181,
+ "tipped": 11182,
+ "silva": 11183,
+ "ricky": 11184,
+ "narrator": 11185,
+ "requests": 11186,
+ "##ents": 11187,
+ "greeted": 11188,
+ "supernatural": 11189,
+ "cow": 11190,
+ "##wald": 11191,
+ "lung": 11192,
+ "refusing": 11193,
+ "employer": 11194,
+ "strait": 11195,
+ "gaelic": 11196,
+ "liner": 11197,
+ "##piece": 11198,
+ "zoe": 11199,
+ "sabha": 11200,
+ "##mba": 11201,
+ "driveway": 11202,
+ "harvest": 11203,
+ "prints": 11204,
+ "bates": 11205,
+ "reluctantly": 11206,
+ "threshold": 11207,
+ "algebra": 11208,
+ "ira": 11209,
+ "wherever": 11210,
+ "coupled": 11211,
+ "240": 11212,
+ "assumption": 11213,
+ "picks": 11214,
+ "##air": 11215,
+ "designers": 11216,
+ "raids": 11217,
+ "gentlemen": 11218,
+ "##ean": 11219,
+ "roller": 11220,
+ "blowing": 11221,
+ "leipzig": 11222,
+ "locks": 11223,
+ "screw": 11224,
+ "dressing": 11225,
+ "strand": 11226,
+ "##lings": 11227,
+ "scar": 11228,
+ "dwarf": 11229,
+ "depicts": 11230,
+ "##nu": 11231,
+ "nods": 11232,
+ "##mine": 11233,
+ "differ": 11234,
+ "boris": 11235,
+ "##eur": 11236,
+ "yuan": 11237,
+ "flip": 11238,
+ "##gie": 11239,
+ "mob": 11240,
+ "invested": 11241,
+ "questioning": 11242,
+ "applying": 11243,
+ "##ture": 11244,
+ "shout": 11245,
+ "##sel": 11246,
+ "gameplay": 11247,
+ "blamed": 11248,
+ "illustrations": 11249,
+ "bothered": 11250,
+ "weakness": 11251,
+ "rehabilitation": 11252,
+ "##of": 11253,
+ "##zes": 11254,
+ "envelope": 11255,
+ "rumors": 11256,
+ "miners": 11257,
+ "leicester": 11258,
+ "subtle": 11259,
+ "kerry": 11260,
+ "##ico": 11261,
+ "ferguson": 11262,
+ "##fu": 11263,
+ "premiership": 11264,
+ "ne": 11265,
+ "##cat": 11266,
+ "bengali": 11267,
+ "prof": 11268,
+ "catches": 11269,
+ "remnants": 11270,
+ "dana": 11271,
+ "##rily": 11272,
+ "shouting": 11273,
+ "presidents": 11274,
+ "baltic": 11275,
+ "ought": 11276,
+ "ghosts": 11277,
+ "dances": 11278,
+ "sailors": 11279,
+ "shirley": 11280,
+ "fancy": 11281,
+ "dominic": 11282,
+ "##bie": 11283,
+ "madonna": 11284,
+ "##rick": 11285,
+ "bark": 11286,
+ "buttons": 11287,
+ "gymnasium": 11288,
+ "ashes": 11289,
+ "liver": 11290,
+ "toby": 11291,
+ "oath": 11292,
+ "providence": 11293,
+ "doyle": 11294,
+ "evangelical": 11295,
+ "nixon": 11296,
+ "cement": 11297,
+ "carnegie": 11298,
+ "embarked": 11299,
+ "hatch": 11300,
+ "surroundings": 11301,
+ "guarantee": 11302,
+ "needing": 11303,
+ "pirate": 11304,
+ "essence": 11305,
+ "##bee": 11306,
+ "filter": 11307,
+ "crane": 11308,
+ "hammond": 11309,
+ "projected": 11310,
+ "immune": 11311,
+ "percy": 11312,
+ "twelfth": 11313,
+ "##ult": 11314,
+ "regent": 11315,
+ "doctoral": 11316,
+ "damon": 11317,
+ "mikhail": 11318,
+ "##ichi": 11319,
+ "lu": 11320,
+ "critically": 11321,
+ "elect": 11322,
+ "realised": 11323,
+ "abortion": 11324,
+ "acute": 11325,
+ "screening": 11326,
+ "mythology": 11327,
+ "steadily": 11328,
+ "##fc": 11329,
+ "frown": 11330,
+ "nottingham": 11331,
+ "kirk": 11332,
+ "wa": 11333,
+ "minneapolis": 11334,
+ "##rra": 11335,
+ "module": 11336,
+ "algeria": 11337,
+ "mc": 11338,
+ "nautical": 11339,
+ "encounters": 11340,
+ "surprising": 11341,
+ "statues": 11342,
+ "availability": 11343,
+ "shirts": 11344,
+ "pie": 11345,
+ "alma": 11346,
+ "brows": 11347,
+ "munster": 11348,
+ "mack": 11349,
+ "soup": 11350,
+ "crater": 11351,
+ "tornado": 11352,
+ "sanskrit": 11353,
+ "cedar": 11354,
+ "explosive": 11355,
+ "bordered": 11356,
+ "dixon": 11357,
+ "planets": 11358,
+ "stamp": 11359,
+ "exam": 11360,
+ "happily": 11361,
+ "##bble": 11362,
+ "carriers": 11363,
+ "kidnapped": 11364,
+ "##vis": 11365,
+ "accommodation": 11366,
+ "emigrated": 11367,
+ "##met": 11368,
+ "knockout": 11369,
+ "correspondent": 11370,
+ "violation": 11371,
+ "profits": 11372,
+ "peaks": 11373,
+ "lang": 11374,
+ "specimen": 11375,
+ "agenda": 11376,
+ "ancestry": 11377,
+ "pottery": 11378,
+ "spelling": 11379,
+ "equations": 11380,
+ "obtaining": 11381,
+ "ki": 11382,
+ "linking": 11383,
+ "1825": 11384,
+ "debris": 11385,
+ "asylum": 11386,
+ "##20": 11387,
+ "buddhism": 11388,
+ "teddy": 11389,
+ "##ants": 11390,
+ "gazette": 11391,
+ "##nger": 11392,
+ "##sse": 11393,
+ "dental": 11394,
+ "eligibility": 11395,
+ "utc": 11396,
+ "fathers": 11397,
+ "averaged": 11398,
+ "zimbabwe": 11399,
+ "francesco": 11400,
+ "coloured": 11401,
+ "hissed": 11402,
+ "translator": 11403,
+ "lynch": 11404,
+ "mandate": 11405,
+ "humanities": 11406,
+ "mackenzie": 11407,
+ "uniforms": 11408,
+ "lin": 11409,
+ "##iana": 11410,
+ "##gio": 11411,
+ "asset": 11412,
+ "mhz": 11413,
+ "fitting": 11414,
+ "samantha": 11415,
+ "genera": 11416,
+ "wei": 11417,
+ "rim": 11418,
+ "beloved": 11419,
+ "shark": 11420,
+ "riot": 11421,
+ "entities": 11422,
+ "expressions": 11423,
+ "indo": 11424,
+ "carmen": 11425,
+ "slipping": 11426,
+ "owing": 11427,
+ "abbot": 11428,
+ "neighbor": 11429,
+ "sidney": 11430,
+ "##av": 11431,
+ "rats": 11432,
+ "recommendations": 11433,
+ "encouraging": 11434,
+ "squadrons": 11435,
+ "anticipated": 11436,
+ "commanders": 11437,
+ "conquered": 11438,
+ "##oto": 11439,
+ "donations": 11440,
+ "diagnosed": 11441,
+ "##mond": 11442,
+ "divide": 11443,
+ "##iva": 11444,
+ "guessed": 11445,
+ "decoration": 11446,
+ "vernon": 11447,
+ "auditorium": 11448,
+ "revelation": 11449,
+ "conversations": 11450,
+ "##kers": 11451,
+ "##power": 11452,
+ "herzegovina": 11453,
+ "dash": 11454,
+ "alike": 11455,
+ "protested": 11456,
+ "lateral": 11457,
+ "herman": 11458,
+ "accredited": 11459,
+ "mg": 11460,
+ "##gent": 11461,
+ "freeman": 11462,
+ "mel": 11463,
+ "fiji": 11464,
+ "crow": 11465,
+ "crimson": 11466,
+ "##rine": 11467,
+ "livestock": 11468,
+ "##pped": 11469,
+ "humanitarian": 11470,
+ "bored": 11471,
+ "oz": 11472,
+ "whip": 11473,
+ "##lene": 11474,
+ "##ali": 11475,
+ "legitimate": 11476,
+ "alter": 11477,
+ "grinning": 11478,
+ "spelled": 11479,
+ "anxious": 11480,
+ "oriental": 11481,
+ "wesley": 11482,
+ "##nin": 11483,
+ "##hole": 11484,
+ "carnival": 11485,
+ "controller": 11486,
+ "detect": 11487,
+ "##ssa": 11488,
+ "bowed": 11489,
+ "educator": 11490,
+ "kosovo": 11491,
+ "macedonia": 11492,
+ "##sin": 11493,
+ "occupy": 11494,
+ "mastering": 11495,
+ "stephanie": 11496,
+ "janeiro": 11497,
+ "para": 11498,
+ "unaware": 11499,
+ "nurses": 11500,
+ "noon": 11501,
+ "135": 11502,
+ "cam": 11503,
+ "hopefully": 11504,
+ "ranger": 11505,
+ "combine": 11506,
+ "sociology": 11507,
+ "polar": 11508,
+ "rica": 11509,
+ "##eer": 11510,
+ "neill": 11511,
+ "##sman": 11512,
+ "holocaust": 11513,
+ "##ip": 11514,
+ "doubled": 11515,
+ "lust": 11516,
+ "1828": 11517,
+ "109": 11518,
+ "decent": 11519,
+ "cooling": 11520,
+ "unveiled": 11521,
+ "##card": 11522,
+ "1829": 11523,
+ "nsw": 11524,
+ "homer": 11525,
+ "chapman": 11526,
+ "meyer": 11527,
+ "##gin": 11528,
+ "dive": 11529,
+ "mae": 11530,
+ "reagan": 11531,
+ "expertise": 11532,
+ "##gled": 11533,
+ "darwin": 11534,
+ "brooke": 11535,
+ "sided": 11536,
+ "prosecution": 11537,
+ "investigating": 11538,
+ "comprised": 11539,
+ "petroleum": 11540,
+ "genres": 11541,
+ "reluctant": 11542,
+ "differently": 11543,
+ "trilogy": 11544,
+ "johns": 11545,
+ "vegetables": 11546,
+ "corpse": 11547,
+ "highlighted": 11548,
+ "lounge": 11549,
+ "pension": 11550,
+ "unsuccessfully": 11551,
+ "elegant": 11552,
+ "aided": 11553,
+ "ivory": 11554,
+ "beatles": 11555,
+ "amelia": 11556,
+ "cain": 11557,
+ "dubai": 11558,
+ "sunny": 11559,
+ "immigrant": 11560,
+ "babe": 11561,
+ "click": 11562,
+ "##nder": 11563,
+ "underwater": 11564,
+ "pepper": 11565,
+ "combining": 11566,
+ "mumbled": 11567,
+ "atlas": 11568,
+ "horns": 11569,
+ "accessed": 11570,
+ "ballad": 11571,
+ "physicians": 11572,
+ "homeless": 11573,
+ "gestured": 11574,
+ "rpm": 11575,
+ "freak": 11576,
+ "louisville": 11577,
+ "corporations": 11578,
+ "patriots": 11579,
+ "prizes": 11580,
+ "rational": 11581,
+ "warn": 11582,
+ "modes": 11583,
+ "decorative": 11584,
+ "overnight": 11585,
+ "din": 11586,
+ "troubled": 11587,
+ "phantom": 11588,
+ "##ort": 11589,
+ "monarch": 11590,
+ "sheer": 11591,
+ "##dorf": 11592,
+ "generals": 11593,
+ "guidelines": 11594,
+ "organs": 11595,
+ "addresses": 11596,
+ "##zon": 11597,
+ "enhance": 11598,
+ "curling": 11599,
+ "parishes": 11600,
+ "cord": 11601,
+ "##kie": 11602,
+ "linux": 11603,
+ "caesar": 11604,
+ "deutsche": 11605,
+ "bavaria": 11606,
+ "##bia": 11607,
+ "coleman": 11608,
+ "cyclone": 11609,
+ "##eria": 11610,
+ "bacon": 11611,
+ "petty": 11612,
+ "##yama": 11613,
+ "##old": 11614,
+ "hampton": 11615,
+ "diagnosis": 11616,
+ "1824": 11617,
+ "throws": 11618,
+ "complexity": 11619,
+ "rita": 11620,
+ "disputed": 11621,
+ "##₃": 11622,
+ "pablo": 11623,
+ "##sch": 11624,
+ "marketed": 11625,
+ "trafficking": 11626,
+ "##ulus": 11627,
+ "examine": 11628,
+ "plague": 11629,
+ "formats": 11630,
+ "##oh": 11631,
+ "vault": 11632,
+ "faithful": 11633,
+ "##bourne": 11634,
+ "webster": 11635,
+ "##ox": 11636,
+ "highlights": 11637,
+ "##ient": 11638,
+ "##ann": 11639,
+ "phones": 11640,
+ "vacuum": 11641,
+ "sandwich": 11642,
+ "modeling": 11643,
+ "##gated": 11644,
+ "bolivia": 11645,
+ "clergy": 11646,
+ "qualities": 11647,
+ "isabel": 11648,
+ "##nas": 11649,
+ "##ars": 11650,
+ "wears": 11651,
+ "screams": 11652,
+ "reunited": 11653,
+ "annoyed": 11654,
+ "bra": 11655,
+ "##ancy": 11656,
+ "##rate": 11657,
+ "differential": 11658,
+ "transmitter": 11659,
+ "tattoo": 11660,
+ "container": 11661,
+ "poker": 11662,
+ "##och": 11663,
+ "excessive": 11664,
+ "resides": 11665,
+ "cowboys": 11666,
+ "##tum": 11667,
+ "augustus": 11668,
+ "trash": 11669,
+ "providers": 11670,
+ "statute": 11671,
+ "retreated": 11672,
+ "balcony": 11673,
+ "reversed": 11674,
+ "void": 11675,
+ "storey": 11676,
+ "preceded": 11677,
+ "masses": 11678,
+ "leap": 11679,
+ "laughs": 11680,
+ "neighborhoods": 11681,
+ "wards": 11682,
+ "schemes": 11683,
+ "falcon": 11684,
+ "santo": 11685,
+ "battlefield": 11686,
+ "pad": 11687,
+ "ronnie": 11688,
+ "thread": 11689,
+ "lesbian": 11690,
+ "venus": 11691,
+ "##dian": 11692,
+ "beg": 11693,
+ "sandstone": 11694,
+ "daylight": 11695,
+ "punched": 11696,
+ "gwen": 11697,
+ "analog": 11698,
+ "stroked": 11699,
+ "wwe": 11700,
+ "acceptable": 11701,
+ "measurements": 11702,
+ "dec": 11703,
+ "toxic": 11704,
+ "##kel": 11705,
+ "adequate": 11706,
+ "surgical": 11707,
+ "economist": 11708,
+ "parameters": 11709,
+ "varsity": 11710,
+ "##sberg": 11711,
+ "quantity": 11712,
+ "ella": 11713,
+ "##chy": 11714,
+ "##rton": 11715,
+ "countess": 11716,
+ "generating": 11717,
+ "precision": 11718,
+ "diamonds": 11719,
+ "expressway": 11720,
+ "ga": 11721,
+ "##ı": 11722,
+ "1821": 11723,
+ "uruguay": 11724,
+ "talents": 11725,
+ "galleries": 11726,
+ "expenses": 11727,
+ "scanned": 11728,
+ "colleague": 11729,
+ "outlets": 11730,
+ "ryder": 11731,
+ "lucien": 11732,
+ "##ila": 11733,
+ "paramount": 11734,
+ "##bon": 11735,
+ "syracuse": 11736,
+ "dim": 11737,
+ "fangs": 11738,
+ "gown": 11739,
+ "sweep": 11740,
+ "##sie": 11741,
+ "toyota": 11742,
+ "missionaries": 11743,
+ "websites": 11744,
+ "##nsis": 11745,
+ "sentences": 11746,
+ "adviser": 11747,
+ "val": 11748,
+ "trademark": 11749,
+ "spells": 11750,
+ "##plane": 11751,
+ "patience": 11752,
+ "starter": 11753,
+ "slim": 11754,
+ "##borg": 11755,
+ "toe": 11756,
+ "incredibly": 11757,
+ "shoots": 11758,
+ "elliot": 11759,
+ "nobility": 11760,
+ "##wyn": 11761,
+ "cowboy": 11762,
+ "endorsed": 11763,
+ "gardner": 11764,
+ "tendency": 11765,
+ "persuaded": 11766,
+ "organisms": 11767,
+ "emissions": 11768,
+ "kazakhstan": 11769,
+ "amused": 11770,
+ "boring": 11771,
+ "chips": 11772,
+ "themed": 11773,
+ "##hand": 11774,
+ "llc": 11775,
+ "constantinople": 11776,
+ "chasing": 11777,
+ "systematic": 11778,
+ "guatemala": 11779,
+ "borrowed": 11780,
+ "erin": 11781,
+ "carey": 11782,
+ "##hard": 11783,
+ "highlands": 11784,
+ "struggles": 11785,
+ "1810": 11786,
+ "##ifying": 11787,
+ "##ced": 11788,
+ "wong": 11789,
+ "exceptions": 11790,
+ "develops": 11791,
+ "enlarged": 11792,
+ "kindergarten": 11793,
+ "castro": 11794,
+ "##ern": 11795,
+ "##rina": 11796,
+ "leigh": 11797,
+ "zombie": 11798,
+ "juvenile": 11799,
+ "##most": 11800,
+ "consul": 11801,
+ "##nar": 11802,
+ "sailor": 11803,
+ "hyde": 11804,
+ "clarence": 11805,
+ "intensive": 11806,
+ "pinned": 11807,
+ "nasty": 11808,
+ "useless": 11809,
+ "jung": 11810,
+ "clayton": 11811,
+ "stuffed": 11812,
+ "exceptional": 11813,
+ "ix": 11814,
+ "apostolic": 11815,
+ "230": 11816,
+ "transactions": 11817,
+ "##dge": 11818,
+ "exempt": 11819,
+ "swinging": 11820,
+ "cove": 11821,
+ "religions": 11822,
+ "##ash": 11823,
+ "shields": 11824,
+ "dairy": 11825,
+ "bypass": 11826,
+ "190": 11827,
+ "pursuing": 11828,
+ "bug": 11829,
+ "joyce": 11830,
+ "bombay": 11831,
+ "chassis": 11832,
+ "southampton": 11833,
+ "chat": 11834,
+ "interact": 11835,
+ "redesignated": 11836,
+ "##pen": 11837,
+ "nascar": 11838,
+ "pray": 11839,
+ "salmon": 11840,
+ "rigid": 11841,
+ "regained": 11842,
+ "malaysian": 11843,
+ "grim": 11844,
+ "publicity": 11845,
+ "constituted": 11846,
+ "capturing": 11847,
+ "toilet": 11848,
+ "delegate": 11849,
+ "purely": 11850,
+ "tray": 11851,
+ "drift": 11852,
+ "loosely": 11853,
+ "striker": 11854,
+ "weakened": 11855,
+ "trinidad": 11856,
+ "mitch": 11857,
+ "itv": 11858,
+ "defines": 11859,
+ "transmitted": 11860,
+ "ming": 11861,
+ "scarlet": 11862,
+ "nodding": 11863,
+ "fitzgerald": 11864,
+ "fu": 11865,
+ "narrowly": 11866,
+ "sp": 11867,
+ "tooth": 11868,
+ "standings": 11869,
+ "virtue": 11870,
+ "##₁": 11871,
+ "##wara": 11872,
+ "##cting": 11873,
+ "chateau": 11874,
+ "gloves": 11875,
+ "lid": 11876,
+ "##nel": 11877,
+ "hurting": 11878,
+ "conservatory": 11879,
+ "##pel": 11880,
+ "sinclair": 11881,
+ "reopened": 11882,
+ "sympathy": 11883,
+ "nigerian": 11884,
+ "strode": 11885,
+ "advocated": 11886,
+ "optional": 11887,
+ "chronic": 11888,
+ "discharge": 11889,
+ "##rc": 11890,
+ "suck": 11891,
+ "compatible": 11892,
+ "laurel": 11893,
+ "stella": 11894,
+ "shi": 11895,
+ "fails": 11896,
+ "wage": 11897,
+ "dodge": 11898,
+ "128": 11899,
+ "informal": 11900,
+ "sorts": 11901,
+ "levi": 11902,
+ "buddha": 11903,
+ "villagers": 11904,
+ "##aka": 11905,
+ "chronicles": 11906,
+ "heavier": 11907,
+ "summoned": 11908,
+ "gateway": 11909,
+ "3000": 11910,
+ "eleventh": 11911,
+ "jewelry": 11912,
+ "translations": 11913,
+ "accordingly": 11914,
+ "seas": 11915,
+ "##ency": 11916,
+ "fiber": 11917,
+ "pyramid": 11918,
+ "cubic": 11919,
+ "dragging": 11920,
+ "##ista": 11921,
+ "caring": 11922,
+ "##ops": 11923,
+ "android": 11924,
+ "contacted": 11925,
+ "lunar": 11926,
+ "##dt": 11927,
+ "kai": 11928,
+ "lisbon": 11929,
+ "patted": 11930,
+ "1826": 11931,
+ "sacramento": 11932,
+ "theft": 11933,
+ "madagascar": 11934,
+ "subtropical": 11935,
+ "disputes": 11936,
+ "ta": 11937,
+ "holidays": 11938,
+ "piper": 11939,
+ "willow": 11940,
+ "mare": 11941,
+ "cane": 11942,
+ "itunes": 11943,
+ "newfoundland": 11944,
+ "benny": 11945,
+ "companions": 11946,
+ "dong": 11947,
+ "raj": 11948,
+ "observe": 11949,
+ "roar": 11950,
+ "charming": 11951,
+ "plaque": 11952,
+ "tibetan": 11953,
+ "fossils": 11954,
+ "enacted": 11955,
+ "manning": 11956,
+ "bubble": 11957,
+ "tina": 11958,
+ "tanzania": 11959,
+ "##eda": 11960,
+ "##hir": 11961,
+ "funk": 11962,
+ "swamp": 11963,
+ "deputies": 11964,
+ "cloak": 11965,
+ "ufc": 11966,
+ "scenario": 11967,
+ "par": 11968,
+ "scratch": 11969,
+ "metals": 11970,
+ "anthem": 11971,
+ "guru": 11972,
+ "engaging": 11973,
+ "specially": 11974,
+ "##boat": 11975,
+ "dialects": 11976,
+ "nineteen": 11977,
+ "cecil": 11978,
+ "duet": 11979,
+ "disability": 11980,
+ "messenger": 11981,
+ "unofficial": 11982,
+ "##lies": 11983,
+ "defunct": 11984,
+ "eds": 11985,
+ "moonlight": 11986,
+ "drainage": 11987,
+ "surname": 11988,
+ "puzzle": 11989,
+ "honda": 11990,
+ "switching": 11991,
+ "conservatives": 11992,
+ "mammals": 11993,
+ "knox": 11994,
+ "broadcaster": 11995,
+ "sidewalk": 11996,
+ "cope": 11997,
+ "##ried": 11998,
+ "benson": 11999,
+ "princes": 12000,
+ "peterson": 12001,
+ "##sal": 12002,
+ "bedford": 12003,
+ "sharks": 12004,
+ "eli": 12005,
+ "wreck": 12006,
+ "alberto": 12007,
+ "gasp": 12008,
+ "archaeology": 12009,
+ "lgbt": 12010,
+ "teaches": 12011,
+ "securities": 12012,
+ "madness": 12013,
+ "compromise": 12014,
+ "waving": 12015,
+ "coordination": 12016,
+ "davidson": 12017,
+ "visions": 12018,
+ "leased": 12019,
+ "possibilities": 12020,
+ "eighty": 12021,
+ "jun": 12022,
+ "fernandez": 12023,
+ "enthusiasm": 12024,
+ "assassin": 12025,
+ "sponsorship": 12026,
+ "reviewer": 12027,
+ "kingdoms": 12028,
+ "estonian": 12029,
+ "laboratories": 12030,
+ "##fy": 12031,
+ "##nal": 12032,
+ "applies": 12033,
+ "verb": 12034,
+ "celebrations": 12035,
+ "##zzo": 12036,
+ "rowing": 12037,
+ "lightweight": 12038,
+ "sadness": 12039,
+ "submit": 12040,
+ "mvp": 12041,
+ "balanced": 12042,
+ "dude": 12043,
+ "##vas": 12044,
+ "explicitly": 12045,
+ "metric": 12046,
+ "magnificent": 12047,
+ "mound": 12048,
+ "brett": 12049,
+ "mohammad": 12050,
+ "mistakes": 12051,
+ "irregular": 12052,
+ "##hing": 12053,
+ "##ass": 12054,
+ "sanders": 12055,
+ "betrayed": 12056,
+ "shipped": 12057,
+ "surge": 12058,
+ "##enburg": 12059,
+ "reporters": 12060,
+ "termed": 12061,
+ "georg": 12062,
+ "pity": 12063,
+ "verbal": 12064,
+ "bulls": 12065,
+ "abbreviated": 12066,
+ "enabling": 12067,
+ "appealed": 12068,
+ "##are": 12069,
+ "##atic": 12070,
+ "sicily": 12071,
+ "sting": 12072,
+ "heel": 12073,
+ "sweetheart": 12074,
+ "bart": 12075,
+ "spacecraft": 12076,
+ "brutal": 12077,
+ "monarchy": 12078,
+ "##tter": 12079,
+ "aberdeen": 12080,
+ "cameo": 12081,
+ "diane": 12082,
+ "##ub": 12083,
+ "survivor": 12084,
+ "clyde": 12085,
+ "##aries": 12086,
+ "complaint": 12087,
+ "##makers": 12088,
+ "clarinet": 12089,
+ "delicious": 12090,
+ "chilean": 12091,
+ "karnataka": 12092,
+ "coordinates": 12093,
+ "1818": 12094,
+ "panties": 12095,
+ "##rst": 12096,
+ "pretending": 12097,
+ "ar": 12098,
+ "dramatically": 12099,
+ "kiev": 12100,
+ "bella": 12101,
+ "tends": 12102,
+ "distances": 12103,
+ "113": 12104,
+ "catalog": 12105,
+ "launching": 12106,
+ "instances": 12107,
+ "telecommunications": 12108,
+ "portable": 12109,
+ "lindsay": 12110,
+ "vatican": 12111,
+ "##eim": 12112,
+ "angles": 12113,
+ "aliens": 12114,
+ "marker": 12115,
+ "stint": 12116,
+ "screens": 12117,
+ "bolton": 12118,
+ "##rne": 12119,
+ "judy": 12120,
+ "wool": 12121,
+ "benedict": 12122,
+ "plasma": 12123,
+ "europa": 12124,
+ "spark": 12125,
+ "imaging": 12126,
+ "filmmaker": 12127,
+ "swiftly": 12128,
+ "##een": 12129,
+ "contributor": 12130,
+ "##nor": 12131,
+ "opted": 12132,
+ "stamps": 12133,
+ "apologize": 12134,
+ "financing": 12135,
+ "butter": 12136,
+ "gideon": 12137,
+ "sophisticated": 12138,
+ "alignment": 12139,
+ "avery": 12140,
+ "chemicals": 12141,
+ "yearly": 12142,
+ "speculation": 12143,
+ "prominence": 12144,
+ "professionally": 12145,
+ "##ils": 12146,
+ "immortal": 12147,
+ "institutional": 12148,
+ "inception": 12149,
+ "wrists": 12150,
+ "identifying": 12151,
+ "tribunal": 12152,
+ "derives": 12153,
+ "gains": 12154,
+ "##wo": 12155,
+ "papal": 12156,
+ "preference": 12157,
+ "linguistic": 12158,
+ "vince": 12159,
+ "operative": 12160,
+ "brewery": 12161,
+ "##ont": 12162,
+ "unemployment": 12163,
+ "boyd": 12164,
+ "##ured": 12165,
+ "##outs": 12166,
+ "albeit": 12167,
+ "prophet": 12168,
+ "1813": 12169,
+ "bi": 12170,
+ "##rr": 12171,
+ "##face": 12172,
+ "##rad": 12173,
+ "quarterly": 12174,
+ "asteroid": 12175,
+ "cleaned": 12176,
+ "radius": 12177,
+ "temper": 12178,
+ "##llen": 12179,
+ "telugu": 12180,
+ "jerk": 12181,
+ "viscount": 12182,
+ "menu": 12183,
+ "##ote": 12184,
+ "glimpse": 12185,
+ "##aya": 12186,
+ "yacht": 12187,
+ "hawaiian": 12188,
+ "baden": 12189,
+ "##rl": 12190,
+ "laptop": 12191,
+ "readily": 12192,
+ "##gu": 12193,
+ "monetary": 12194,
+ "offshore": 12195,
+ "scots": 12196,
+ "watches": 12197,
+ "##yang": 12198,
+ "##arian": 12199,
+ "upgrade": 12200,
+ "needle": 12201,
+ "xbox": 12202,
+ "lea": 12203,
+ "encyclopedia": 12204,
+ "flank": 12205,
+ "fingertips": 12206,
+ "##pus": 12207,
+ "delight": 12208,
+ "teachings": 12209,
+ "confirm": 12210,
+ "roth": 12211,
+ "beaches": 12212,
+ "midway": 12213,
+ "winters": 12214,
+ "##iah": 12215,
+ "teasing": 12216,
+ "daytime": 12217,
+ "beverly": 12218,
+ "gambling": 12219,
+ "bonnie": 12220,
+ "##backs": 12221,
+ "regulated": 12222,
+ "clement": 12223,
+ "hermann": 12224,
+ "tricks": 12225,
+ "knot": 12226,
+ "##shing": 12227,
+ "##uring": 12228,
+ "##vre": 12229,
+ "detached": 12230,
+ "ecological": 12231,
+ "owed": 12232,
+ "specialty": 12233,
+ "byron": 12234,
+ "inventor": 12235,
+ "bats": 12236,
+ "stays": 12237,
+ "screened": 12238,
+ "unesco": 12239,
+ "midland": 12240,
+ "trim": 12241,
+ "affection": 12242,
+ "##ander": 12243,
+ "##rry": 12244,
+ "jess": 12245,
+ "thoroughly": 12246,
+ "feedback": 12247,
+ "##uma": 12248,
+ "chennai": 12249,
+ "strained": 12250,
+ "heartbeat": 12251,
+ "wrapping": 12252,
+ "overtime": 12253,
+ "pleaded": 12254,
+ "##sworth": 12255,
+ "mon": 12256,
+ "leisure": 12257,
+ "oclc": 12258,
+ "##tate": 12259,
+ "##ele": 12260,
+ "feathers": 12261,
+ "angelo": 12262,
+ "thirds": 12263,
+ "nuts": 12264,
+ "surveys": 12265,
+ "clever": 12266,
+ "gill": 12267,
+ "commentator": 12268,
+ "##dos": 12269,
+ "darren": 12270,
+ "rides": 12271,
+ "gibraltar": 12272,
+ "##nc": 12273,
+ "##mu": 12274,
+ "dissolution": 12275,
+ "dedication": 12276,
+ "shin": 12277,
+ "meals": 12278,
+ "saddle": 12279,
+ "elvis": 12280,
+ "reds": 12281,
+ "chaired": 12282,
+ "taller": 12283,
+ "appreciation": 12284,
+ "functioning": 12285,
+ "niece": 12286,
+ "favored": 12287,
+ "advocacy": 12288,
+ "robbie": 12289,
+ "criminals": 12290,
+ "suffolk": 12291,
+ "yugoslav": 12292,
+ "passport": 12293,
+ "constable": 12294,
+ "congressman": 12295,
+ "hastings": 12296,
+ "vera": 12297,
+ "##rov": 12298,
+ "consecrated": 12299,
+ "sparks": 12300,
+ "ecclesiastical": 12301,
+ "confined": 12302,
+ "##ovich": 12303,
+ "muller": 12304,
+ "floyd": 12305,
+ "nora": 12306,
+ "1822": 12307,
+ "paved": 12308,
+ "1827": 12309,
+ "cumberland": 12310,
+ "ned": 12311,
+ "saga": 12312,
+ "spiral": 12313,
+ "##flow": 12314,
+ "appreciated": 12315,
+ "yi": 12316,
+ "collaborative": 12317,
+ "treating": 12318,
+ "similarities": 12319,
+ "feminine": 12320,
+ "finishes": 12321,
+ "##ib": 12322,
+ "jade": 12323,
+ "import": 12324,
+ "##nse": 12325,
+ "##hot": 12326,
+ "champagne": 12327,
+ "mice": 12328,
+ "securing": 12329,
+ "celebrities": 12330,
+ "helsinki": 12331,
+ "attributes": 12332,
+ "##gos": 12333,
+ "cousins": 12334,
+ "phases": 12335,
+ "ache": 12336,
+ "lucia": 12337,
+ "gandhi": 12338,
+ "submission": 12339,
+ "vicar": 12340,
+ "spear": 12341,
+ "shine": 12342,
+ "tasmania": 12343,
+ "biting": 12344,
+ "detention": 12345,
+ "constitute": 12346,
+ "tighter": 12347,
+ "seasonal": 12348,
+ "##gus": 12349,
+ "terrestrial": 12350,
+ "matthews": 12351,
+ "##oka": 12352,
+ "effectiveness": 12353,
+ "parody": 12354,
+ "philharmonic": 12355,
+ "##onic": 12356,
+ "1816": 12357,
+ "strangers": 12358,
+ "encoded": 12359,
+ "consortium": 12360,
+ "guaranteed": 12361,
+ "regards": 12362,
+ "shifts": 12363,
+ "tortured": 12364,
+ "collision": 12365,
+ "supervisor": 12366,
+ "inform": 12367,
+ "broader": 12368,
+ "insight": 12369,
+ "theaters": 12370,
+ "armour": 12371,
+ "emeritus": 12372,
+ "blink": 12373,
+ "incorporates": 12374,
+ "mapping": 12375,
+ "##50": 12376,
+ "##ein": 12377,
+ "handball": 12378,
+ "flexible": 12379,
+ "##nta": 12380,
+ "substantially": 12381,
+ "generous": 12382,
+ "thief": 12383,
+ "##own": 12384,
+ "carr": 12385,
+ "loses": 12386,
+ "1793": 12387,
+ "prose": 12388,
+ "ucla": 12389,
+ "romeo": 12390,
+ "generic": 12391,
+ "metallic": 12392,
+ "realization": 12393,
+ "damages": 12394,
+ "mk": 12395,
+ "commissioners": 12396,
+ "zach": 12397,
+ "default": 12398,
+ "##ther": 12399,
+ "helicopters": 12400,
+ "lengthy": 12401,
+ "stems": 12402,
+ "spa": 12403,
+ "partnered": 12404,
+ "spectators": 12405,
+ "rogue": 12406,
+ "indication": 12407,
+ "penalties": 12408,
+ "teresa": 12409,
+ "1801": 12410,
+ "sen": 12411,
+ "##tric": 12412,
+ "dalton": 12413,
+ "##wich": 12414,
+ "irving": 12415,
+ "photographic": 12416,
+ "##vey": 12417,
+ "dell": 12418,
+ "deaf": 12419,
+ "peters": 12420,
+ "excluded": 12421,
+ "unsure": 12422,
+ "##vable": 12423,
+ "patterson": 12424,
+ "crawled": 12425,
+ "##zio": 12426,
+ "resided": 12427,
+ "whipped": 12428,
+ "latvia": 12429,
+ "slower": 12430,
+ "ecole": 12431,
+ "pipes": 12432,
+ "employers": 12433,
+ "maharashtra": 12434,
+ "comparable": 12435,
+ "va": 12436,
+ "textile": 12437,
+ "pageant": 12438,
+ "##gel": 12439,
+ "alphabet": 12440,
+ "binary": 12441,
+ "irrigation": 12442,
+ "chartered": 12443,
+ "choked": 12444,
+ "antoine": 12445,
+ "offs": 12446,
+ "waking": 12447,
+ "supplement": 12448,
+ "##wen": 12449,
+ "quantities": 12450,
+ "demolition": 12451,
+ "regain": 12452,
+ "locate": 12453,
+ "urdu": 12454,
+ "folks": 12455,
+ "alt": 12456,
+ "114": 12457,
+ "##mc": 12458,
+ "scary": 12459,
+ "andreas": 12460,
+ "whites": 12461,
+ "##ava": 12462,
+ "classrooms": 12463,
+ "mw": 12464,
+ "aesthetic": 12465,
+ "publishes": 12466,
+ "valleys": 12467,
+ "guides": 12468,
+ "cubs": 12469,
+ "johannes": 12470,
+ "bryant": 12471,
+ "conventions": 12472,
+ "affecting": 12473,
+ "##itt": 12474,
+ "drain": 12475,
+ "awesome": 12476,
+ "isolation": 12477,
+ "prosecutor": 12478,
+ "ambitious": 12479,
+ "apology": 12480,
+ "captive": 12481,
+ "downs": 12482,
+ "atmospheric": 12483,
+ "lorenzo": 12484,
+ "aisle": 12485,
+ "beef": 12486,
+ "foul": 12487,
+ "##onia": 12488,
+ "kidding": 12489,
+ "composite": 12490,
+ "disturbed": 12491,
+ "illusion": 12492,
+ "natives": 12493,
+ "##ffer": 12494,
+ "emi": 12495,
+ "rockets": 12496,
+ "riverside": 12497,
+ "wartime": 12498,
+ "painters": 12499,
+ "adolf": 12500,
+ "melted": 12501,
+ "##ail": 12502,
+ "uncertainty": 12503,
+ "simulation": 12504,
+ "hawks": 12505,
+ "progressed": 12506,
+ "meantime": 12507,
+ "builder": 12508,
+ "spray": 12509,
+ "breach": 12510,
+ "unhappy": 12511,
+ "regina": 12512,
+ "russians": 12513,
+ "##urg": 12514,
+ "determining": 12515,
+ "##tation": 12516,
+ "tram": 12517,
+ "1806": 12518,
+ "##quin": 12519,
+ "aging": 12520,
+ "##12": 12521,
+ "1823": 12522,
+ "garion": 12523,
+ "rented": 12524,
+ "mister": 12525,
+ "diaz": 12526,
+ "terminated": 12527,
+ "clip": 12528,
+ "1817": 12529,
+ "depend": 12530,
+ "nervously": 12531,
+ "disco": 12532,
+ "owe": 12533,
+ "defenders": 12534,
+ "shiva": 12535,
+ "notorious": 12536,
+ "disbelief": 12537,
+ "shiny": 12538,
+ "worcester": 12539,
+ "##gation": 12540,
+ "##yr": 12541,
+ "trailing": 12542,
+ "undertook": 12543,
+ "islander": 12544,
+ "belarus": 12545,
+ "limitations": 12546,
+ "watershed": 12547,
+ "fuller": 12548,
+ "overlooking": 12549,
+ "utilized": 12550,
+ "raphael": 12551,
+ "1819": 12552,
+ "synthetic": 12553,
+ "breakdown": 12554,
+ "klein": 12555,
+ "##nate": 12556,
+ "moaned": 12557,
+ "memoir": 12558,
+ "lamb": 12559,
+ "practicing": 12560,
+ "##erly": 12561,
+ "cellular": 12562,
+ "arrows": 12563,
+ "exotic": 12564,
+ "##graphy": 12565,
+ "witches": 12566,
+ "117": 12567,
+ "charted": 12568,
+ "rey": 12569,
+ "hut": 12570,
+ "hierarchy": 12571,
+ "subdivision": 12572,
+ "freshwater": 12573,
+ "giuseppe": 12574,
+ "aloud": 12575,
+ "reyes": 12576,
+ "qatar": 12577,
+ "marty": 12578,
+ "sideways": 12579,
+ "utterly": 12580,
+ "sexually": 12581,
+ "jude": 12582,
+ "prayers": 12583,
+ "mccarthy": 12584,
+ "softball": 12585,
+ "blend": 12586,
+ "damien": 12587,
+ "##gging": 12588,
+ "##metric": 12589,
+ "wholly": 12590,
+ "erupted": 12591,
+ "lebanese": 12592,
+ "negro": 12593,
+ "revenues": 12594,
+ "tasted": 12595,
+ "comparative": 12596,
+ "teamed": 12597,
+ "transaction": 12598,
+ "labeled": 12599,
+ "maori": 12600,
+ "sovereignty": 12601,
+ "parkway": 12602,
+ "trauma": 12603,
+ "gran": 12604,
+ "malay": 12605,
+ "121": 12606,
+ "advancement": 12607,
+ "descendant": 12608,
+ "2020": 12609,
+ "buzz": 12610,
+ "salvation": 12611,
+ "inventory": 12612,
+ "symbolic": 12613,
+ "##making": 12614,
+ "antarctica": 12615,
+ "mps": 12616,
+ "##gas": 12617,
+ "##bro": 12618,
+ "mohammed": 12619,
+ "myanmar": 12620,
+ "holt": 12621,
+ "submarines": 12622,
+ "tones": 12623,
+ "##lman": 12624,
+ "locker": 12625,
+ "patriarch": 12626,
+ "bangkok": 12627,
+ "emerson": 12628,
+ "remarks": 12629,
+ "predators": 12630,
+ "kin": 12631,
+ "afghan": 12632,
+ "confession": 12633,
+ "norwich": 12634,
+ "rental": 12635,
+ "emerge": 12636,
+ "advantages": 12637,
+ "##zel": 12638,
+ "rca": 12639,
+ "##hold": 12640,
+ "shortened": 12641,
+ "storms": 12642,
+ "aidan": 12643,
+ "##matic": 12644,
+ "autonomy": 12645,
+ "compliance": 12646,
+ "##quet": 12647,
+ "dudley": 12648,
+ "atp": 12649,
+ "##osis": 12650,
+ "1803": 12651,
+ "motto": 12652,
+ "documentation": 12653,
+ "summary": 12654,
+ "professors": 12655,
+ "spectacular": 12656,
+ "christina": 12657,
+ "archdiocese": 12658,
+ "flashing": 12659,
+ "innocence": 12660,
+ "remake": 12661,
+ "##dell": 12662,
+ "psychic": 12663,
+ "reef": 12664,
+ "scare": 12665,
+ "employ": 12666,
+ "rs": 12667,
+ "sticks": 12668,
+ "meg": 12669,
+ "gus": 12670,
+ "leans": 12671,
+ "##ude": 12672,
+ "accompany": 12673,
+ "bergen": 12674,
+ "tomas": 12675,
+ "##iko": 12676,
+ "doom": 12677,
+ "wages": 12678,
+ "pools": 12679,
+ "##nch": 12680,
+ "##bes": 12681,
+ "breasts": 12682,
+ "scholarly": 12683,
+ "alison": 12684,
+ "outline": 12685,
+ "brittany": 12686,
+ "breakthrough": 12687,
+ "willis": 12688,
+ "realistic": 12689,
+ "##cut": 12690,
+ "##boro": 12691,
+ "competitor": 12692,
+ "##stan": 12693,
+ "pike": 12694,
+ "picnic": 12695,
+ "icon": 12696,
+ "designing": 12697,
+ "commercials": 12698,
+ "washing": 12699,
+ "villain": 12700,
+ "skiing": 12701,
+ "micro": 12702,
+ "costumes": 12703,
+ "auburn": 12704,
+ "halted": 12705,
+ "executives": 12706,
+ "##hat": 12707,
+ "logistics": 12708,
+ "cycles": 12709,
+ "vowel": 12710,
+ "applicable": 12711,
+ "barrett": 12712,
+ "exclaimed": 12713,
+ "eurovision": 12714,
+ "eternity": 12715,
+ "ramon": 12716,
+ "##umi": 12717,
+ "##lls": 12718,
+ "modifications": 12719,
+ "sweeping": 12720,
+ "disgust": 12721,
+ "##uck": 12722,
+ "torch": 12723,
+ "aviv": 12724,
+ "ensuring": 12725,
+ "rude": 12726,
+ "dusty": 12727,
+ "sonic": 12728,
+ "donovan": 12729,
+ "outskirts": 12730,
+ "cu": 12731,
+ "pathway": 12732,
+ "##band": 12733,
+ "##gun": 12734,
+ "##lines": 12735,
+ "disciplines": 12736,
+ "acids": 12737,
+ "cadet": 12738,
+ "paired": 12739,
+ "##40": 12740,
+ "sketches": 12741,
+ "##sive": 12742,
+ "marriages": 12743,
+ "##⁺": 12744,
+ "folding": 12745,
+ "peers": 12746,
+ "slovak": 12747,
+ "implies": 12748,
+ "admired": 12749,
+ "##beck": 12750,
+ "1880s": 12751,
+ "leopold": 12752,
+ "instinct": 12753,
+ "attained": 12754,
+ "weston": 12755,
+ "megan": 12756,
+ "horace": 12757,
+ "##ination": 12758,
+ "dorsal": 12759,
+ "ingredients": 12760,
+ "evolutionary": 12761,
+ "##its": 12762,
+ "complications": 12763,
+ "deity": 12764,
+ "lethal": 12765,
+ "brushing": 12766,
+ "levy": 12767,
+ "deserted": 12768,
+ "institutes": 12769,
+ "posthumously": 12770,
+ "delivering": 12771,
+ "telescope": 12772,
+ "coronation": 12773,
+ "motivated": 12774,
+ "rapids": 12775,
+ "luc": 12776,
+ "flicked": 12777,
+ "pays": 12778,
+ "volcano": 12779,
+ "tanner": 12780,
+ "weighed": 12781,
+ "##nica": 12782,
+ "crowds": 12783,
+ "frankie": 12784,
+ "gifted": 12785,
+ "addressing": 12786,
+ "granddaughter": 12787,
+ "winding": 12788,
+ "##rna": 12789,
+ "constantine": 12790,
+ "gomez": 12791,
+ "##front": 12792,
+ "landscapes": 12793,
+ "rudolf": 12794,
+ "anthropology": 12795,
+ "slate": 12796,
+ "werewolf": 12797,
+ "##lio": 12798,
+ "astronomy": 12799,
+ "circa": 12800,
+ "rouge": 12801,
+ "dreaming": 12802,
+ "sack": 12803,
+ "knelt": 12804,
+ "drowned": 12805,
+ "naomi": 12806,
+ "prolific": 12807,
+ "tracked": 12808,
+ "freezing": 12809,
+ "herb": 12810,
+ "##dium": 12811,
+ "agony": 12812,
+ "randall": 12813,
+ "twisting": 12814,
+ "wendy": 12815,
+ "deposit": 12816,
+ "touches": 12817,
+ "vein": 12818,
+ "wheeler": 12819,
+ "##bbled": 12820,
+ "##bor": 12821,
+ "batted": 12822,
+ "retaining": 12823,
+ "tire": 12824,
+ "presently": 12825,
+ "compare": 12826,
+ "specification": 12827,
+ "daemon": 12828,
+ "nigel": 12829,
+ "##grave": 12830,
+ "merry": 12831,
+ "recommendation": 12832,
+ "czechoslovakia": 12833,
+ "sandra": 12834,
+ "ng": 12835,
+ "roma": 12836,
+ "##sts": 12837,
+ "lambert": 12838,
+ "inheritance": 12839,
+ "sheikh": 12840,
+ "winchester": 12841,
+ "cries": 12842,
+ "examining": 12843,
+ "##yle": 12844,
+ "comeback": 12845,
+ "cuisine": 12846,
+ "nave": 12847,
+ "##iv": 12848,
+ "ko": 12849,
+ "retrieve": 12850,
+ "tomatoes": 12851,
+ "barker": 12852,
+ "polished": 12853,
+ "defining": 12854,
+ "irene": 12855,
+ "lantern": 12856,
+ "personalities": 12857,
+ "begging": 12858,
+ "tract": 12859,
+ "swore": 12860,
+ "1809": 12861,
+ "175": 12862,
+ "##gic": 12863,
+ "omaha": 12864,
+ "brotherhood": 12865,
+ "##rley": 12866,
+ "haiti": 12867,
+ "##ots": 12868,
+ "exeter": 12869,
+ "##ete": 12870,
+ "##zia": 12871,
+ "steele": 12872,
+ "dumb": 12873,
+ "pearson": 12874,
+ "210": 12875,
+ "surveyed": 12876,
+ "elisabeth": 12877,
+ "trends": 12878,
+ "##ef": 12879,
+ "fritz": 12880,
+ "##rf": 12881,
+ "premium": 12882,
+ "bugs": 12883,
+ "fraction": 12884,
+ "calmly": 12885,
+ "viking": 12886,
+ "##birds": 12887,
+ "tug": 12888,
+ "inserted": 12889,
+ "unusually": 12890,
+ "##ield": 12891,
+ "confronted": 12892,
+ "distress": 12893,
+ "crashing": 12894,
+ "brent": 12895,
+ "turks": 12896,
+ "resign": 12897,
+ "##olo": 12898,
+ "cambodia": 12899,
+ "gabe": 12900,
+ "sauce": 12901,
+ "##kal": 12902,
+ "evelyn": 12903,
+ "116": 12904,
+ "extant": 12905,
+ "clusters": 12906,
+ "quarry": 12907,
+ "teenagers": 12908,
+ "luna": 12909,
+ "##lers": 12910,
+ "##ister": 12911,
+ "affiliation": 12912,
+ "drill": 12913,
+ "##ashi": 12914,
+ "panthers": 12915,
+ "scenic": 12916,
+ "libya": 12917,
+ "anita": 12918,
+ "strengthen": 12919,
+ "inscriptions": 12920,
+ "##cated": 12921,
+ "lace": 12922,
+ "sued": 12923,
+ "judith": 12924,
+ "riots": 12925,
+ "##uted": 12926,
+ "mint": 12927,
+ "##eta": 12928,
+ "preparations": 12929,
+ "midst": 12930,
+ "dub": 12931,
+ "challenger": 12932,
+ "##vich": 12933,
+ "mock": 12934,
+ "cf": 12935,
+ "displaced": 12936,
+ "wicket": 12937,
+ "breaths": 12938,
+ "enables": 12939,
+ "schmidt": 12940,
+ "analyst": 12941,
+ "##lum": 12942,
+ "ag": 12943,
+ "highlight": 12944,
+ "automotive": 12945,
+ "axe": 12946,
+ "josef": 12947,
+ "newark": 12948,
+ "sufficiently": 12949,
+ "resembles": 12950,
+ "50th": 12951,
+ "##pal": 12952,
+ "flushed": 12953,
+ "mum": 12954,
+ "traits": 12955,
+ "##ante": 12956,
+ "commodore": 12957,
+ "incomplete": 12958,
+ "warming": 12959,
+ "titular": 12960,
+ "ceremonial": 12961,
+ "ethical": 12962,
+ "118": 12963,
+ "celebrating": 12964,
+ "eighteenth": 12965,
+ "cao": 12966,
+ "lima": 12967,
+ "medalist": 12968,
+ "mobility": 12969,
+ "strips": 12970,
+ "snakes": 12971,
+ "##city": 12972,
+ "miniature": 12973,
+ "zagreb": 12974,
+ "barton": 12975,
+ "escapes": 12976,
+ "umbrella": 12977,
+ "automated": 12978,
+ "doubted": 12979,
+ "differs": 12980,
+ "cooled": 12981,
+ "georgetown": 12982,
+ "dresden": 12983,
+ "cooked": 12984,
+ "fade": 12985,
+ "wyatt": 12986,
+ "rna": 12987,
+ "jacobs": 12988,
+ "carlton": 12989,
+ "abundant": 12990,
+ "stereo": 12991,
+ "boost": 12992,
+ "madras": 12993,
+ "inning": 12994,
+ "##hia": 12995,
+ "spur": 12996,
+ "ip": 12997,
+ "malayalam": 12998,
+ "begged": 12999,
+ "osaka": 13000,
+ "groan": 13001,
+ "escaping": 13002,
+ "charging": 13003,
+ "dose": 13004,
+ "vista": 13005,
+ "##aj": 13006,
+ "bud": 13007,
+ "papa": 13008,
+ "communists": 13009,
+ "advocates": 13010,
+ "edged": 13011,
+ "tri": 13012,
+ "##cent": 13013,
+ "resemble": 13014,
+ "peaking": 13015,
+ "necklace": 13016,
+ "fried": 13017,
+ "montenegro": 13018,
+ "saxony": 13019,
+ "goose": 13020,
+ "glances": 13021,
+ "stuttgart": 13022,
+ "curator": 13023,
+ "recruit": 13024,
+ "grocery": 13025,
+ "sympathetic": 13026,
+ "##tting": 13027,
+ "##fort": 13028,
+ "127": 13029,
+ "lotus": 13030,
+ "randolph": 13031,
+ "ancestor": 13032,
+ "##rand": 13033,
+ "succeeding": 13034,
+ "jupiter": 13035,
+ "1798": 13036,
+ "macedonian": 13037,
+ "##heads": 13038,
+ "hiking": 13039,
+ "1808": 13040,
+ "handing": 13041,
+ "fischer": 13042,
+ "##itive": 13043,
+ "garbage": 13044,
+ "node": 13045,
+ "##pies": 13046,
+ "prone": 13047,
+ "singular": 13048,
+ "papua": 13049,
+ "inclined": 13050,
+ "attractions": 13051,
+ "italia": 13052,
+ "pouring": 13053,
+ "motioned": 13054,
+ "grandma": 13055,
+ "garnered": 13056,
+ "jacksonville": 13057,
+ "corp": 13058,
+ "ego": 13059,
+ "ringing": 13060,
+ "aluminum": 13061,
+ "##hausen": 13062,
+ "ordering": 13063,
+ "##foot": 13064,
+ "drawer": 13065,
+ "traders": 13066,
+ "synagogue": 13067,
+ "##play": 13068,
+ "##kawa": 13069,
+ "resistant": 13070,
+ "wandering": 13071,
+ "fragile": 13072,
+ "fiona": 13073,
+ "teased": 13074,
+ "var": 13075,
+ "hardcore": 13076,
+ "soaked": 13077,
+ "jubilee": 13078,
+ "decisive": 13079,
+ "exposition": 13080,
+ "mercer": 13081,
+ "poster": 13082,
+ "valencia": 13083,
+ "hale": 13084,
+ "kuwait": 13085,
+ "1811": 13086,
+ "##ises": 13087,
+ "##wr": 13088,
+ "##eed": 13089,
+ "tavern": 13090,
+ "gamma": 13091,
+ "122": 13092,
+ "johan": 13093,
+ "##uer": 13094,
+ "airways": 13095,
+ "amino": 13096,
+ "gil": 13097,
+ "##ury": 13098,
+ "vocational": 13099,
+ "domains": 13100,
+ "torres": 13101,
+ "##sp": 13102,
+ "generator": 13103,
+ "folklore": 13104,
+ "outcomes": 13105,
+ "##keeper": 13106,
+ "canberra": 13107,
+ "shooter": 13108,
+ "fl": 13109,
+ "beams": 13110,
+ "confrontation": 13111,
+ "##lling": 13112,
+ "##gram": 13113,
+ "feb": 13114,
+ "aligned": 13115,
+ "forestry": 13116,
+ "pipeline": 13117,
+ "jax": 13118,
+ "motorway": 13119,
+ "conception": 13120,
+ "decay": 13121,
+ "##tos": 13122,
+ "coffin": 13123,
+ "##cott": 13124,
+ "stalin": 13125,
+ "1805": 13126,
+ "escorted": 13127,
+ "minded": 13128,
+ "##nam": 13129,
+ "sitcom": 13130,
+ "purchasing": 13131,
+ "twilight": 13132,
+ "veronica": 13133,
+ "additions": 13134,
+ "passive": 13135,
+ "tensions": 13136,
+ "straw": 13137,
+ "123": 13138,
+ "frequencies": 13139,
+ "1804": 13140,
+ "refugee": 13141,
+ "cultivation": 13142,
+ "##iate": 13143,
+ "christie": 13144,
+ "clary": 13145,
+ "bulletin": 13146,
+ "crept": 13147,
+ "disposal": 13148,
+ "##rich": 13149,
+ "##zong": 13150,
+ "processor": 13151,
+ "crescent": 13152,
+ "##rol": 13153,
+ "bmw": 13154,
+ "emphasized": 13155,
+ "whale": 13156,
+ "nazis": 13157,
+ "aurora": 13158,
+ "##eng": 13159,
+ "dwelling": 13160,
+ "hauled": 13161,
+ "sponsors": 13162,
+ "toledo": 13163,
+ "mega": 13164,
+ "ideology": 13165,
+ "theatres": 13166,
+ "tessa": 13167,
+ "cerambycidae": 13168,
+ "saves": 13169,
+ "turtle": 13170,
+ "cone": 13171,
+ "suspects": 13172,
+ "kara": 13173,
+ "rusty": 13174,
+ "yelling": 13175,
+ "greeks": 13176,
+ "mozart": 13177,
+ "shades": 13178,
+ "cocked": 13179,
+ "participant": 13180,
+ "##tro": 13181,
+ "shire": 13182,
+ "spit": 13183,
+ "freeze": 13184,
+ "necessity": 13185,
+ "##cos": 13186,
+ "inmates": 13187,
+ "nielsen": 13188,
+ "councillors": 13189,
+ "loaned": 13190,
+ "uncommon": 13191,
+ "omar": 13192,
+ "peasants": 13193,
+ "botanical": 13194,
+ "offspring": 13195,
+ "daniels": 13196,
+ "formations": 13197,
+ "jokes": 13198,
+ "1794": 13199,
+ "pioneers": 13200,
+ "sigma": 13201,
+ "licensing": 13202,
+ "##sus": 13203,
+ "wheelchair": 13204,
+ "polite": 13205,
+ "1807": 13206,
+ "liquor": 13207,
+ "pratt": 13208,
+ "trustee": 13209,
+ "##uta": 13210,
+ "forewings": 13211,
+ "balloon": 13212,
+ "##zz": 13213,
+ "kilometre": 13214,
+ "camping": 13215,
+ "explicit": 13216,
+ "casually": 13217,
+ "shawn": 13218,
+ "foolish": 13219,
+ "teammates": 13220,
+ "nm": 13221,
+ "hassan": 13222,
+ "carrie": 13223,
+ "judged": 13224,
+ "satisfy": 13225,
+ "vanessa": 13226,
+ "knives": 13227,
+ "selective": 13228,
+ "cnn": 13229,
+ "flowed": 13230,
+ "##lice": 13231,
+ "eclipse": 13232,
+ "stressed": 13233,
+ "eliza": 13234,
+ "mathematician": 13235,
+ "cease": 13236,
+ "cultivated": 13237,
+ "##roy": 13238,
+ "commissions": 13239,
+ "browns": 13240,
+ "##ania": 13241,
+ "destroyers": 13242,
+ "sheridan": 13243,
+ "meadow": 13244,
+ "##rius": 13245,
+ "minerals": 13246,
+ "##cial": 13247,
+ "downstream": 13248,
+ "clash": 13249,
+ "gram": 13250,
+ "memoirs": 13251,
+ "ventures": 13252,
+ "baha": 13253,
+ "seymour": 13254,
+ "archie": 13255,
+ "midlands": 13256,
+ "edith": 13257,
+ "fare": 13258,
+ "flynn": 13259,
+ "invite": 13260,
+ "canceled": 13261,
+ "tiles": 13262,
+ "stabbed": 13263,
+ "boulder": 13264,
+ "incorporate": 13265,
+ "amended": 13266,
+ "camden": 13267,
+ "facial": 13268,
+ "mollusk": 13269,
+ "unreleased": 13270,
+ "descriptions": 13271,
+ "yoga": 13272,
+ "grabs": 13273,
+ "550": 13274,
+ "raises": 13275,
+ "ramp": 13276,
+ "shiver": 13277,
+ "##rose": 13278,
+ "coined": 13279,
+ "pioneering": 13280,
+ "tunes": 13281,
+ "qing": 13282,
+ "warwick": 13283,
+ "tops": 13284,
+ "119": 13285,
+ "melanie": 13286,
+ "giles": 13287,
+ "##rous": 13288,
+ "wandered": 13289,
+ "##inal": 13290,
+ "annexed": 13291,
+ "nov": 13292,
+ "30th": 13293,
+ "unnamed": 13294,
+ "##ished": 13295,
+ "organizational": 13296,
+ "airplane": 13297,
+ "normandy": 13298,
+ "stoke": 13299,
+ "whistle": 13300,
+ "blessing": 13301,
+ "violations": 13302,
+ "chased": 13303,
+ "holders": 13304,
+ "shotgun": 13305,
+ "##ctic": 13306,
+ "outlet": 13307,
+ "reactor": 13308,
+ "##vik": 13309,
+ "tires": 13310,
+ "tearing": 13311,
+ "shores": 13312,
+ "fortified": 13313,
+ "mascot": 13314,
+ "constituencies": 13315,
+ "nc": 13316,
+ "columnist": 13317,
+ "productive": 13318,
+ "tibet": 13319,
+ "##rta": 13320,
+ "lineage": 13321,
+ "hooked": 13322,
+ "oct": 13323,
+ "tapes": 13324,
+ "judging": 13325,
+ "cody": 13326,
+ "##gger": 13327,
+ "hansen": 13328,
+ "kashmir": 13329,
+ "triggered": 13330,
+ "##eva": 13331,
+ "solved": 13332,
+ "cliffs": 13333,
+ "##tree": 13334,
+ "resisted": 13335,
+ "anatomy": 13336,
+ "protesters": 13337,
+ "transparent": 13338,
+ "implied": 13339,
+ "##iga": 13340,
+ "injection": 13341,
+ "mattress": 13342,
+ "excluding": 13343,
+ "##mbo": 13344,
+ "defenses": 13345,
+ "helpless": 13346,
+ "devotion": 13347,
+ "##elli": 13348,
+ "growl": 13349,
+ "liberals": 13350,
+ "weber": 13351,
+ "phenomena": 13352,
+ "atoms": 13353,
+ "plug": 13354,
+ "##iff": 13355,
+ "mortality": 13356,
+ "apprentice": 13357,
+ "howe": 13358,
+ "convincing": 13359,
+ "aaa": 13360,
+ "swimmer": 13361,
+ "barber": 13362,
+ "leone": 13363,
+ "promptly": 13364,
+ "sodium": 13365,
+ "def": 13366,
+ "nowadays": 13367,
+ "arise": 13368,
+ "##oning": 13369,
+ "gloucester": 13370,
+ "corrected": 13371,
+ "dignity": 13372,
+ "norm": 13373,
+ "erie": 13374,
+ "##ders": 13375,
+ "elders": 13376,
+ "evacuated": 13377,
+ "sylvia": 13378,
+ "compression": 13379,
+ "##yar": 13380,
+ "hartford": 13381,
+ "pose": 13382,
+ "backpack": 13383,
+ "reasoning": 13384,
+ "accepts": 13385,
+ "24th": 13386,
+ "wipe": 13387,
+ "millimetres": 13388,
+ "marcel": 13389,
+ "##oda": 13390,
+ "dodgers": 13391,
+ "albion": 13392,
+ "1790": 13393,
+ "overwhelmed": 13394,
+ "aerospace": 13395,
+ "oaks": 13396,
+ "1795": 13397,
+ "showcase": 13398,
+ "acknowledge": 13399,
+ "recovering": 13400,
+ "nolan": 13401,
+ "ashe": 13402,
+ "hurts": 13403,
+ "geology": 13404,
+ "fashioned": 13405,
+ "disappearance": 13406,
+ "farewell": 13407,
+ "swollen": 13408,
+ "shrug": 13409,
+ "marquis": 13410,
+ "wimbledon": 13411,
+ "124": 13412,
+ "rue": 13413,
+ "1792": 13414,
+ "commemorate": 13415,
+ "reduces": 13416,
+ "experiencing": 13417,
+ "inevitable": 13418,
+ "calcutta": 13419,
+ "intel": 13420,
+ "##court": 13421,
+ "murderer": 13422,
+ "sticking": 13423,
+ "fisheries": 13424,
+ "imagery": 13425,
+ "bloom": 13426,
+ "280": 13427,
+ "brake": 13428,
+ "##inus": 13429,
+ "gustav": 13430,
+ "hesitation": 13431,
+ "memorable": 13432,
+ "po": 13433,
+ "viral": 13434,
+ "beans": 13435,
+ "accidents": 13436,
+ "tunisia": 13437,
+ "antenna": 13438,
+ "spilled": 13439,
+ "consort": 13440,
+ "treatments": 13441,
+ "aye": 13442,
+ "perimeter": 13443,
+ "##gard": 13444,
+ "donation": 13445,
+ "hostage": 13446,
+ "migrated": 13447,
+ "banker": 13448,
+ "addiction": 13449,
+ "apex": 13450,
+ "lil": 13451,
+ "trout": 13452,
+ "##ously": 13453,
+ "conscience": 13454,
+ "##nova": 13455,
+ "rams": 13456,
+ "sands": 13457,
+ "genome": 13458,
+ "passionate": 13459,
+ "troubles": 13460,
+ "##lets": 13461,
+ "##set": 13462,
+ "amid": 13463,
+ "##ibility": 13464,
+ "##ret": 13465,
+ "higgins": 13466,
+ "exceed": 13467,
+ "vikings": 13468,
+ "##vie": 13469,
+ "payne": 13470,
+ "##zan": 13471,
+ "muscular": 13472,
+ "##ste": 13473,
+ "defendant": 13474,
+ "sucking": 13475,
+ "##wal": 13476,
+ "ibrahim": 13477,
+ "fuselage": 13478,
+ "claudia": 13479,
+ "vfl": 13480,
+ "europeans": 13481,
+ "snails": 13482,
+ "interval": 13483,
+ "##garh": 13484,
+ "preparatory": 13485,
+ "statewide": 13486,
+ "tasked": 13487,
+ "lacrosse": 13488,
+ "viktor": 13489,
+ "##lation": 13490,
+ "angola": 13491,
+ "##hra": 13492,
+ "flint": 13493,
+ "implications": 13494,
+ "employs": 13495,
+ "teens": 13496,
+ "patrons": 13497,
+ "stall": 13498,
+ "weekends": 13499,
+ "barriers": 13500,
+ "scrambled": 13501,
+ "nucleus": 13502,
+ "tehran": 13503,
+ "jenna": 13504,
+ "parsons": 13505,
+ "lifelong": 13506,
+ "robots": 13507,
+ "displacement": 13508,
+ "5000": 13509,
+ "##bles": 13510,
+ "precipitation": 13511,
+ "##gt": 13512,
+ "knuckles": 13513,
+ "clutched": 13514,
+ "1802": 13515,
+ "marrying": 13516,
+ "ecology": 13517,
+ "marx": 13518,
+ "accusations": 13519,
+ "declare": 13520,
+ "scars": 13521,
+ "kolkata": 13522,
+ "mat": 13523,
+ "meadows": 13524,
+ "bermuda": 13525,
+ "skeleton": 13526,
+ "finalists": 13527,
+ "vintage": 13528,
+ "crawl": 13529,
+ "coordinate": 13530,
+ "affects": 13531,
+ "subjected": 13532,
+ "orchestral": 13533,
+ "mistaken": 13534,
+ "##tc": 13535,
+ "mirrors": 13536,
+ "dipped": 13537,
+ "relied": 13538,
+ "260": 13539,
+ "arches": 13540,
+ "candle": 13541,
+ "##nick": 13542,
+ "incorporating": 13543,
+ "wildly": 13544,
+ "fond": 13545,
+ "basilica": 13546,
+ "owl": 13547,
+ "fringe": 13548,
+ "rituals": 13549,
+ "whispering": 13550,
+ "stirred": 13551,
+ "feud": 13552,
+ "tertiary": 13553,
+ "slick": 13554,
+ "goat": 13555,
+ "honorable": 13556,
+ "whereby": 13557,
+ "skip": 13558,
+ "ricardo": 13559,
+ "stripes": 13560,
+ "parachute": 13561,
+ "adjoining": 13562,
+ "submerged": 13563,
+ "synthesizer": 13564,
+ "##gren": 13565,
+ "intend": 13566,
+ "positively": 13567,
+ "ninety": 13568,
+ "phi": 13569,
+ "beaver": 13570,
+ "partition": 13571,
+ "fellows": 13572,
+ "alexis": 13573,
+ "prohibition": 13574,
+ "carlisle": 13575,
+ "bizarre": 13576,
+ "fraternity": 13577,
+ "##bre": 13578,
+ "doubts": 13579,
+ "icy": 13580,
+ "cbc": 13581,
+ "aquatic": 13582,
+ "sneak": 13583,
+ "sonny": 13584,
+ "combines": 13585,
+ "airports": 13586,
+ "crude": 13587,
+ "supervised": 13588,
+ "spatial": 13589,
+ "merge": 13590,
+ "alfonso": 13591,
+ "##bic": 13592,
+ "corrupt": 13593,
+ "scan": 13594,
+ "undergo": 13595,
+ "##ams": 13596,
+ "disabilities": 13597,
+ "colombian": 13598,
+ "comparing": 13599,
+ "dolphins": 13600,
+ "perkins": 13601,
+ "##lish": 13602,
+ "reprinted": 13603,
+ "unanimous": 13604,
+ "bounced": 13605,
+ "hairs": 13606,
+ "underworld": 13607,
+ "midwest": 13608,
+ "semester": 13609,
+ "bucket": 13610,
+ "paperback": 13611,
+ "miniseries": 13612,
+ "coventry": 13613,
+ "demise": 13614,
+ "##leigh": 13615,
+ "demonstrations": 13616,
+ "sensor": 13617,
+ "rotating": 13618,
+ "yan": 13619,
+ "##hler": 13620,
+ "arrange": 13621,
+ "soils": 13622,
+ "##idge": 13623,
+ "hyderabad": 13624,
+ "labs": 13625,
+ "##dr": 13626,
+ "brakes": 13627,
+ "grandchildren": 13628,
+ "##nde": 13629,
+ "negotiated": 13630,
+ "rover": 13631,
+ "ferrari": 13632,
+ "continuation": 13633,
+ "directorate": 13634,
+ "augusta": 13635,
+ "stevenson": 13636,
+ "counterpart": 13637,
+ "gore": 13638,
+ "##rda": 13639,
+ "nursery": 13640,
+ "rican": 13641,
+ "ave": 13642,
+ "collectively": 13643,
+ "broadly": 13644,
+ "pastoral": 13645,
+ "repertoire": 13646,
+ "asserted": 13647,
+ "discovering": 13648,
+ "nordic": 13649,
+ "styled": 13650,
+ "fiba": 13651,
+ "cunningham": 13652,
+ "harley": 13653,
+ "middlesex": 13654,
+ "survives": 13655,
+ "tumor": 13656,
+ "tempo": 13657,
+ "zack": 13658,
+ "aiming": 13659,
+ "lok": 13660,
+ "urgent": 13661,
+ "##rade": 13662,
+ "##nto": 13663,
+ "devils": 13664,
+ "##ement": 13665,
+ "contractor": 13666,
+ "turin": 13667,
+ "##wl": 13668,
+ "##ool": 13669,
+ "bliss": 13670,
+ "repaired": 13671,
+ "simmons": 13672,
+ "moan": 13673,
+ "astronomical": 13674,
+ "cr": 13675,
+ "negotiate": 13676,
+ "lyric": 13677,
+ "1890s": 13678,
+ "lara": 13679,
+ "bred": 13680,
+ "clad": 13681,
+ "angus": 13682,
+ "pbs": 13683,
+ "##ience": 13684,
+ "engineered": 13685,
+ "posed": 13686,
+ "##lk": 13687,
+ "hernandez": 13688,
+ "possessions": 13689,
+ "elbows": 13690,
+ "psychiatric": 13691,
+ "strokes": 13692,
+ "confluence": 13693,
+ "electorate": 13694,
+ "lifts": 13695,
+ "campuses": 13696,
+ "lava": 13697,
+ "alps": 13698,
+ "##ep": 13699,
+ "##ution": 13700,
+ "##date": 13701,
+ "physicist": 13702,
+ "woody": 13703,
+ "##page": 13704,
+ "##ographic": 13705,
+ "##itis": 13706,
+ "juliet": 13707,
+ "reformation": 13708,
+ "sparhawk": 13709,
+ "320": 13710,
+ "complement": 13711,
+ "suppressed": 13712,
+ "jewel": 13713,
+ "##½": 13714,
+ "floated": 13715,
+ "##kas": 13716,
+ "continuity": 13717,
+ "sadly": 13718,
+ "##ische": 13719,
+ "inability": 13720,
+ "melting": 13721,
+ "scanning": 13722,
+ "paula": 13723,
+ "flour": 13724,
+ "judaism": 13725,
+ "safer": 13726,
+ "vague": 13727,
+ "##lm": 13728,
+ "solving": 13729,
+ "curb": 13730,
+ "##stown": 13731,
+ "financially": 13732,
+ "gable": 13733,
+ "bees": 13734,
+ "expired": 13735,
+ "miserable": 13736,
+ "cassidy": 13737,
+ "dominion": 13738,
+ "1789": 13739,
+ "cupped": 13740,
+ "145": 13741,
+ "robbery": 13742,
+ "facto": 13743,
+ "amos": 13744,
+ "warden": 13745,
+ "resume": 13746,
+ "tallest": 13747,
+ "marvin": 13748,
+ "ing": 13749,
+ "pounded": 13750,
+ "usd": 13751,
+ "declaring": 13752,
+ "gasoline": 13753,
+ "##aux": 13754,
+ "darkened": 13755,
+ "270": 13756,
+ "650": 13757,
+ "sophomore": 13758,
+ "##mere": 13759,
+ "erection": 13760,
+ "gossip": 13761,
+ "televised": 13762,
+ "risen": 13763,
+ "dial": 13764,
+ "##eu": 13765,
+ "pillars": 13766,
+ "##link": 13767,
+ "passages": 13768,
+ "profound": 13769,
+ "##tina": 13770,
+ "arabian": 13771,
+ "ashton": 13772,
+ "silicon": 13773,
+ "nail": 13774,
+ "##ead": 13775,
+ "##lated": 13776,
+ "##wer": 13777,
+ "##hardt": 13778,
+ "fleming": 13779,
+ "firearms": 13780,
+ "ducked": 13781,
+ "circuits": 13782,
+ "blows": 13783,
+ "waterloo": 13784,
+ "titans": 13785,
+ "##lina": 13786,
+ "atom": 13787,
+ "fireplace": 13788,
+ "cheshire": 13789,
+ "financed": 13790,
+ "activation": 13791,
+ "algorithms": 13792,
+ "##zzi": 13793,
+ "constituent": 13794,
+ "catcher": 13795,
+ "cherokee": 13796,
+ "partnerships": 13797,
+ "sexuality": 13798,
+ "platoon": 13799,
+ "tragic": 13800,
+ "vivian": 13801,
+ "guarded": 13802,
+ "whiskey": 13803,
+ "meditation": 13804,
+ "poetic": 13805,
+ "##late": 13806,
+ "##nga": 13807,
+ "##ake": 13808,
+ "porto": 13809,
+ "listeners": 13810,
+ "dominance": 13811,
+ "kendra": 13812,
+ "mona": 13813,
+ "chandler": 13814,
+ "factions": 13815,
+ "22nd": 13816,
+ "salisbury": 13817,
+ "attitudes": 13818,
+ "derivative": 13819,
+ "##ido": 13820,
+ "##haus": 13821,
+ "intake": 13822,
+ "paced": 13823,
+ "javier": 13824,
+ "illustrator": 13825,
+ "barrels": 13826,
+ "bias": 13827,
+ "cockpit": 13828,
+ "burnett": 13829,
+ "dreamed": 13830,
+ "ensuing": 13831,
+ "##anda": 13832,
+ "receptors": 13833,
+ "someday": 13834,
+ "hawkins": 13835,
+ "mattered": 13836,
+ "##lal": 13837,
+ "slavic": 13838,
+ "1799": 13839,
+ "jesuit": 13840,
+ "cameroon": 13841,
+ "wasted": 13842,
+ "tai": 13843,
+ "wax": 13844,
+ "lowering": 13845,
+ "victorious": 13846,
+ "freaking": 13847,
+ "outright": 13848,
+ "hancock": 13849,
+ "librarian": 13850,
+ "sensing": 13851,
+ "bald": 13852,
+ "calcium": 13853,
+ "myers": 13854,
+ "tablet": 13855,
+ "announcing": 13856,
+ "barack": 13857,
+ "shipyard": 13858,
+ "pharmaceutical": 13859,
+ "##uan": 13860,
+ "greenwich": 13861,
+ "flush": 13862,
+ "medley": 13863,
+ "patches": 13864,
+ "wolfgang": 13865,
+ "pt": 13866,
+ "speeches": 13867,
+ "acquiring": 13868,
+ "exams": 13869,
+ "nikolai": 13870,
+ "##gg": 13871,
+ "hayden": 13872,
+ "kannada": 13873,
+ "##type": 13874,
+ "reilly": 13875,
+ "##pt": 13876,
+ "waitress": 13877,
+ "abdomen": 13878,
+ "devastated": 13879,
+ "capped": 13880,
+ "pseudonym": 13881,
+ "pharmacy": 13882,
+ "fulfill": 13883,
+ "paraguay": 13884,
+ "1796": 13885,
+ "clicked": 13886,
+ "##trom": 13887,
+ "archipelago": 13888,
+ "syndicated": 13889,
+ "##hman": 13890,
+ "lumber": 13891,
+ "orgasm": 13892,
+ "rejection": 13893,
+ "clifford": 13894,
+ "lorraine": 13895,
+ "advent": 13896,
+ "mafia": 13897,
+ "rodney": 13898,
+ "brock": 13899,
+ "##ght": 13900,
+ "##used": 13901,
+ "##elia": 13902,
+ "cassette": 13903,
+ "chamberlain": 13904,
+ "despair": 13905,
+ "mongolia": 13906,
+ "sensors": 13907,
+ "developmental": 13908,
+ "upstream": 13909,
+ "##eg": 13910,
+ "##alis": 13911,
+ "spanning": 13912,
+ "165": 13913,
+ "trombone": 13914,
+ "basque": 13915,
+ "seeded": 13916,
+ "interred": 13917,
+ "renewable": 13918,
+ "rhys": 13919,
+ "leapt": 13920,
+ "revision": 13921,
+ "molecule": 13922,
+ "##ages": 13923,
+ "chord": 13924,
+ "vicious": 13925,
+ "nord": 13926,
+ "shivered": 13927,
+ "23rd": 13928,
+ "arlington": 13929,
+ "debts": 13930,
+ "corpus": 13931,
+ "sunrise": 13932,
+ "bays": 13933,
+ "blackburn": 13934,
+ "centimetres": 13935,
+ "##uded": 13936,
+ "shuddered": 13937,
+ "gm": 13938,
+ "strangely": 13939,
+ "gripping": 13940,
+ "cartoons": 13941,
+ "isabelle": 13942,
+ "orbital": 13943,
+ "##ppa": 13944,
+ "seals": 13945,
+ "proving": 13946,
+ "##lton": 13947,
+ "refusal": 13948,
+ "strengthened": 13949,
+ "bust": 13950,
+ "assisting": 13951,
+ "baghdad": 13952,
+ "batsman": 13953,
+ "portrayal": 13954,
+ "mara": 13955,
+ "pushes": 13956,
+ "spears": 13957,
+ "og": 13958,
+ "##cock": 13959,
+ "reside": 13960,
+ "nathaniel": 13961,
+ "brennan": 13962,
+ "1776": 13963,
+ "confirmation": 13964,
+ "caucus": 13965,
+ "##worthy": 13966,
+ "markings": 13967,
+ "yemen": 13968,
+ "nobles": 13969,
+ "ku": 13970,
+ "lazy": 13971,
+ "viewer": 13972,
+ "catalan": 13973,
+ "encompasses": 13974,
+ "sawyer": 13975,
+ "##fall": 13976,
+ "sparked": 13977,
+ "substances": 13978,
+ "patents": 13979,
+ "braves": 13980,
+ "arranger": 13981,
+ "evacuation": 13982,
+ "sergio": 13983,
+ "persuade": 13984,
+ "dover": 13985,
+ "tolerance": 13986,
+ "penguin": 13987,
+ "cum": 13988,
+ "jockey": 13989,
+ "insufficient": 13990,
+ "townships": 13991,
+ "occupying": 13992,
+ "declining": 13993,
+ "plural": 13994,
+ "processed": 13995,
+ "projection": 13996,
+ "puppet": 13997,
+ "flanders": 13998,
+ "introduces": 13999,
+ "liability": 14000,
+ "##yon": 14001,
+ "gymnastics": 14002,
+ "antwerp": 14003,
+ "taipei": 14004,
+ "hobart": 14005,
+ "candles": 14006,
+ "jeep": 14007,
+ "wes": 14008,
+ "observers": 14009,
+ "126": 14010,
+ "chaplain": 14011,
+ "bundle": 14012,
+ "glorious": 14013,
+ "##hine": 14014,
+ "hazel": 14015,
+ "flung": 14016,
+ "sol": 14017,
+ "excavations": 14018,
+ "dumped": 14019,
+ "stares": 14020,
+ "sh": 14021,
+ "bangalore": 14022,
+ "triangular": 14023,
+ "icelandic": 14024,
+ "intervals": 14025,
+ "expressing": 14026,
+ "turbine": 14027,
+ "##vers": 14028,
+ "songwriting": 14029,
+ "crafts": 14030,
+ "##igo": 14031,
+ "jasmine": 14032,
+ "ditch": 14033,
+ "rite": 14034,
+ "##ways": 14035,
+ "entertaining": 14036,
+ "comply": 14037,
+ "sorrow": 14038,
+ "wrestlers": 14039,
+ "basel": 14040,
+ "emirates": 14041,
+ "marian": 14042,
+ "rivera": 14043,
+ "helpful": 14044,
+ "##some": 14045,
+ "caution": 14046,
+ "downward": 14047,
+ "networking": 14048,
+ "##atory": 14049,
+ "##tered": 14050,
+ "darted": 14051,
+ "genocide": 14052,
+ "emergence": 14053,
+ "replies": 14054,
+ "specializing": 14055,
+ "spokesman": 14056,
+ "convenient": 14057,
+ "unlocked": 14058,
+ "fading": 14059,
+ "augustine": 14060,
+ "concentrations": 14061,
+ "resemblance": 14062,
+ "elijah": 14063,
+ "investigator": 14064,
+ "andhra": 14065,
+ "##uda": 14066,
+ "promotes": 14067,
+ "bean": 14068,
+ "##rrell": 14069,
+ "fleeing": 14070,
+ "wan": 14071,
+ "simone": 14072,
+ "announcer": 14073,
+ "##ame": 14074,
+ "##bby": 14075,
+ "lydia": 14076,
+ "weaver": 14077,
+ "132": 14078,
+ "residency": 14079,
+ "modification": 14080,
+ "##fest": 14081,
+ "stretches": 14082,
+ "##ast": 14083,
+ "alternatively": 14084,
+ "nat": 14085,
+ "lowe": 14086,
+ "lacks": 14087,
+ "##ented": 14088,
+ "pam": 14089,
+ "tile": 14090,
+ "concealed": 14091,
+ "inferior": 14092,
+ "abdullah": 14093,
+ "residences": 14094,
+ "tissues": 14095,
+ "vengeance": 14096,
+ "##ided": 14097,
+ "moisture": 14098,
+ "peculiar": 14099,
+ "groove": 14100,
+ "zip": 14101,
+ "bologna": 14102,
+ "jennings": 14103,
+ "ninja": 14104,
+ "oversaw": 14105,
+ "zombies": 14106,
+ "pumping": 14107,
+ "batch": 14108,
+ "livingston": 14109,
+ "emerald": 14110,
+ "installations": 14111,
+ "1797": 14112,
+ "peel": 14113,
+ "nitrogen": 14114,
+ "rama": 14115,
+ "##fying": 14116,
+ "##star": 14117,
+ "schooling": 14118,
+ "strands": 14119,
+ "responding": 14120,
+ "werner": 14121,
+ "##ost": 14122,
+ "lime": 14123,
+ "casa": 14124,
+ "accurately": 14125,
+ "targeting": 14126,
+ "##rod": 14127,
+ "underway": 14128,
+ "##uru": 14129,
+ "hemisphere": 14130,
+ "lester": 14131,
+ "##yard": 14132,
+ "occupies": 14133,
+ "2d": 14134,
+ "griffith": 14135,
+ "angrily": 14136,
+ "reorganized": 14137,
+ "##owing": 14138,
+ "courtney": 14139,
+ "deposited": 14140,
+ "##dd": 14141,
+ "##30": 14142,
+ "estadio": 14143,
+ "##ifies": 14144,
+ "dunn": 14145,
+ "exiled": 14146,
+ "##ying": 14147,
+ "checks": 14148,
+ "##combe": 14149,
+ "##о": 14150,
+ "##fly": 14151,
+ "successes": 14152,
+ "unexpectedly": 14153,
+ "blu": 14154,
+ "assessed": 14155,
+ "##flower": 14156,
+ "##ه": 14157,
+ "observing": 14158,
+ "sacked": 14159,
+ "spiders": 14160,
+ "kn": 14161,
+ "##tail": 14162,
+ "mu": 14163,
+ "nodes": 14164,
+ "prosperity": 14165,
+ "audrey": 14166,
+ "divisional": 14167,
+ "155": 14168,
+ "broncos": 14169,
+ "tangled": 14170,
+ "adjust": 14171,
+ "feeds": 14172,
+ "erosion": 14173,
+ "paolo": 14174,
+ "surf": 14175,
+ "directory": 14176,
+ "snatched": 14177,
+ "humid": 14178,
+ "admiralty": 14179,
+ "screwed": 14180,
+ "gt": 14181,
+ "reddish": 14182,
+ "##nese": 14183,
+ "modules": 14184,
+ "trench": 14185,
+ "lamps": 14186,
+ "bind": 14187,
+ "leah": 14188,
+ "bucks": 14189,
+ "competes": 14190,
+ "##nz": 14191,
+ "##form": 14192,
+ "transcription": 14193,
+ "##uc": 14194,
+ "isles": 14195,
+ "violently": 14196,
+ "clutching": 14197,
+ "pga": 14198,
+ "cyclist": 14199,
+ "inflation": 14200,
+ "flats": 14201,
+ "ragged": 14202,
+ "unnecessary": 14203,
+ "##hian": 14204,
+ "stubborn": 14205,
+ "coordinated": 14206,
+ "harriet": 14207,
+ "baba": 14208,
+ "disqualified": 14209,
+ "330": 14210,
+ "insect": 14211,
+ "wolfe": 14212,
+ "##fies": 14213,
+ "reinforcements": 14214,
+ "rocked": 14215,
+ "duel": 14216,
+ "winked": 14217,
+ "embraced": 14218,
+ "bricks": 14219,
+ "##raj": 14220,
+ "hiatus": 14221,
+ "defeats": 14222,
+ "pending": 14223,
+ "brightly": 14224,
+ "jealousy": 14225,
+ "##xton": 14226,
+ "##hm": 14227,
+ "##uki": 14228,
+ "lena": 14229,
+ "gdp": 14230,
+ "colorful": 14231,
+ "##dley": 14232,
+ "stein": 14233,
+ "kidney": 14234,
+ "##shu": 14235,
+ "underwear": 14236,
+ "wanderers": 14237,
+ "##haw": 14238,
+ "##icus": 14239,
+ "guardians": 14240,
+ "m³": 14241,
+ "roared": 14242,
+ "habits": 14243,
+ "##wise": 14244,
+ "permits": 14245,
+ "gp": 14246,
+ "uranium": 14247,
+ "punished": 14248,
+ "disguise": 14249,
+ "bundesliga": 14250,
+ "elise": 14251,
+ "dundee": 14252,
+ "erotic": 14253,
+ "partisan": 14254,
+ "pi": 14255,
+ "collectors": 14256,
+ "float": 14257,
+ "individually": 14258,
+ "rendering": 14259,
+ "behavioral": 14260,
+ "bucharest": 14261,
+ "ser": 14262,
+ "hare": 14263,
+ "valerie": 14264,
+ "corporal": 14265,
+ "nutrition": 14266,
+ "proportional": 14267,
+ "##isa": 14268,
+ "immense": 14269,
+ "##kis": 14270,
+ "pavement": 14271,
+ "##zie": 14272,
+ "##eld": 14273,
+ "sutherland": 14274,
+ "crouched": 14275,
+ "1775": 14276,
+ "##lp": 14277,
+ "suzuki": 14278,
+ "trades": 14279,
+ "endurance": 14280,
+ "operas": 14281,
+ "crosby": 14282,
+ "prayed": 14283,
+ "priory": 14284,
+ "rory": 14285,
+ "socially": 14286,
+ "##urn": 14287,
+ "gujarat": 14288,
+ "##pu": 14289,
+ "walton": 14290,
+ "cube": 14291,
+ "pasha": 14292,
+ "privilege": 14293,
+ "lennon": 14294,
+ "floods": 14295,
+ "thorne": 14296,
+ "waterfall": 14297,
+ "nipple": 14298,
+ "scouting": 14299,
+ "approve": 14300,
+ "##lov": 14301,
+ "minorities": 14302,
+ "voter": 14303,
+ "dwight": 14304,
+ "extensions": 14305,
+ "assure": 14306,
+ "ballroom": 14307,
+ "slap": 14308,
+ "dripping": 14309,
+ "privileges": 14310,
+ "rejoined": 14311,
+ "confessed": 14312,
+ "demonstrating": 14313,
+ "patriotic": 14314,
+ "yell": 14315,
+ "investor": 14316,
+ "##uth": 14317,
+ "pagan": 14318,
+ "slumped": 14319,
+ "squares": 14320,
+ "##cle": 14321,
+ "##kins": 14322,
+ "confront": 14323,
+ "bert": 14324,
+ "embarrassment": 14325,
+ "##aid": 14326,
+ "aston": 14327,
+ "urging": 14328,
+ "sweater": 14329,
+ "starr": 14330,
+ "yuri": 14331,
+ "brains": 14332,
+ "williamson": 14333,
+ "commuter": 14334,
+ "mortar": 14335,
+ "structured": 14336,
+ "selfish": 14337,
+ "exports": 14338,
+ "##jon": 14339,
+ "cds": 14340,
+ "##him": 14341,
+ "unfinished": 14342,
+ "##rre": 14343,
+ "mortgage": 14344,
+ "destinations": 14345,
+ "##nagar": 14346,
+ "canoe": 14347,
+ "solitary": 14348,
+ "buchanan": 14349,
+ "delays": 14350,
+ "magistrate": 14351,
+ "fk": 14352,
+ "##pling": 14353,
+ "motivation": 14354,
+ "##lier": 14355,
+ "##vier": 14356,
+ "recruiting": 14357,
+ "assess": 14358,
+ "##mouth": 14359,
+ "malik": 14360,
+ "antique": 14361,
+ "1791": 14362,
+ "pius": 14363,
+ "rahman": 14364,
+ "reich": 14365,
+ "tub": 14366,
+ "zhou": 14367,
+ "smashed": 14368,
+ "airs": 14369,
+ "galway": 14370,
+ "xii": 14371,
+ "conditioning": 14372,
+ "honduras": 14373,
+ "discharged": 14374,
+ "dexter": 14375,
+ "##pf": 14376,
+ "lionel": 14377,
+ "129": 14378,
+ "debates": 14379,
+ "lemon": 14380,
+ "tiffany": 14381,
+ "volunteered": 14382,
+ "dom": 14383,
+ "dioxide": 14384,
+ "procession": 14385,
+ "devi": 14386,
+ "sic": 14387,
+ "tremendous": 14388,
+ "advertisements": 14389,
+ "colts": 14390,
+ "transferring": 14391,
+ "verdict": 14392,
+ "hanover": 14393,
+ "decommissioned": 14394,
+ "utter": 14395,
+ "relate": 14396,
+ "pac": 14397,
+ "racism": 14398,
+ "##top": 14399,
+ "beacon": 14400,
+ "limp": 14401,
+ "similarity": 14402,
+ "terra": 14403,
+ "occurrence": 14404,
+ "ant": 14405,
+ "##how": 14406,
+ "becky": 14407,
+ "capt": 14408,
+ "updates": 14409,
+ "armament": 14410,
+ "richie": 14411,
+ "pal": 14412,
+ "##graph": 14413,
+ "halloween": 14414,
+ "mayo": 14415,
+ "##ssen": 14416,
+ "##bone": 14417,
+ "cara": 14418,
+ "serena": 14419,
+ "fcc": 14420,
+ "dolls": 14421,
+ "obligations": 14422,
+ "##dling": 14423,
+ "violated": 14424,
+ "lafayette": 14425,
+ "jakarta": 14426,
+ "exploitation": 14427,
+ "##ime": 14428,
+ "infamous": 14429,
+ "iconic": 14430,
+ "##lah": 14431,
+ "##park": 14432,
+ "kitty": 14433,
+ "moody": 14434,
+ "reginald": 14435,
+ "dread": 14436,
+ "spill": 14437,
+ "crystals": 14438,
+ "olivier": 14439,
+ "modeled": 14440,
+ "bluff": 14441,
+ "equilibrium": 14442,
+ "separating": 14443,
+ "notices": 14444,
+ "ordnance": 14445,
+ "extinction": 14446,
+ "onset": 14447,
+ "cosmic": 14448,
+ "attachment": 14449,
+ "sammy": 14450,
+ "expose": 14451,
+ "privy": 14452,
+ "anchored": 14453,
+ "##bil": 14454,
+ "abbott": 14455,
+ "admits": 14456,
+ "bending": 14457,
+ "baritone": 14458,
+ "emmanuel": 14459,
+ "policeman": 14460,
+ "vaughan": 14461,
+ "winged": 14462,
+ "climax": 14463,
+ "dresses": 14464,
+ "denny": 14465,
+ "polytechnic": 14466,
+ "mohamed": 14467,
+ "burmese": 14468,
+ "authentic": 14469,
+ "nikki": 14470,
+ "genetics": 14471,
+ "grandparents": 14472,
+ "homestead": 14473,
+ "gaza": 14474,
+ "postponed": 14475,
+ "metacritic": 14476,
+ "una": 14477,
+ "##sby": 14478,
+ "##bat": 14479,
+ "unstable": 14480,
+ "dissertation": 14481,
+ "##rial": 14482,
+ "##cian": 14483,
+ "curls": 14484,
+ "obscure": 14485,
+ "uncovered": 14486,
+ "bronx": 14487,
+ "praying": 14488,
+ "disappearing": 14489,
+ "##hoe": 14490,
+ "prehistoric": 14491,
+ "coke": 14492,
+ "turret": 14493,
+ "mutations": 14494,
+ "nonprofit": 14495,
+ "pits": 14496,
+ "monaco": 14497,
+ "##ي": 14498,
+ "##usion": 14499,
+ "prominently": 14500,
+ "dispatched": 14501,
+ "podium": 14502,
+ "##mir": 14503,
+ "uci": 14504,
+ "##uation": 14505,
+ "133": 14506,
+ "fortifications": 14507,
+ "birthplace": 14508,
+ "kendall": 14509,
+ "##lby": 14510,
+ "##oll": 14511,
+ "preacher": 14512,
+ "rack": 14513,
+ "goodman": 14514,
+ "##rman": 14515,
+ "persistent": 14516,
+ "##ott": 14517,
+ "countless": 14518,
+ "jaime": 14519,
+ "recorder": 14520,
+ "lexington": 14521,
+ "persecution": 14522,
+ "jumps": 14523,
+ "renewal": 14524,
+ "wagons": 14525,
+ "##11": 14526,
+ "crushing": 14527,
+ "##holder": 14528,
+ "decorations": 14529,
+ "##lake": 14530,
+ "abundance": 14531,
+ "wrath": 14532,
+ "laundry": 14533,
+ "£1": 14534,
+ "garde": 14535,
+ "##rp": 14536,
+ "jeanne": 14537,
+ "beetles": 14538,
+ "peasant": 14539,
+ "##sl": 14540,
+ "splitting": 14541,
+ "caste": 14542,
+ "sergei": 14543,
+ "##rer": 14544,
+ "##ema": 14545,
+ "scripts": 14546,
+ "##ively": 14547,
+ "rub": 14548,
+ "satellites": 14549,
+ "##vor": 14550,
+ "inscribed": 14551,
+ "verlag": 14552,
+ "scrapped": 14553,
+ "gale": 14554,
+ "packages": 14555,
+ "chick": 14556,
+ "potato": 14557,
+ "slogan": 14558,
+ "kathleen": 14559,
+ "arabs": 14560,
+ "##culture": 14561,
+ "counterparts": 14562,
+ "reminiscent": 14563,
+ "choral": 14564,
+ "##tead": 14565,
+ "rand": 14566,
+ "retains": 14567,
+ "bushes": 14568,
+ "dane": 14569,
+ "accomplish": 14570,
+ "courtesy": 14571,
+ "closes": 14572,
+ "##oth": 14573,
+ "slaughter": 14574,
+ "hague": 14575,
+ "krakow": 14576,
+ "lawson": 14577,
+ "tailed": 14578,
+ "elias": 14579,
+ "ginger": 14580,
+ "##ttes": 14581,
+ "canopy": 14582,
+ "betrayal": 14583,
+ "rebuilding": 14584,
+ "turf": 14585,
+ "##hof": 14586,
+ "frowning": 14587,
+ "allegiance": 14588,
+ "brigades": 14589,
+ "kicks": 14590,
+ "rebuild": 14591,
+ "polls": 14592,
+ "alias": 14593,
+ "nationalism": 14594,
+ "td": 14595,
+ "rowan": 14596,
+ "audition": 14597,
+ "bowie": 14598,
+ "fortunately": 14599,
+ "recognizes": 14600,
+ "harp": 14601,
+ "dillon": 14602,
+ "horrified": 14603,
+ "##oro": 14604,
+ "renault": 14605,
+ "##tics": 14606,
+ "ropes": 14607,
+ "##α": 14608,
+ "presumed": 14609,
+ "rewarded": 14610,
+ "infrared": 14611,
+ "wiping": 14612,
+ "accelerated": 14613,
+ "illustration": 14614,
+ "##rid": 14615,
+ "presses": 14616,
+ "practitioners": 14617,
+ "badminton": 14618,
+ "##iard": 14619,
+ "detained": 14620,
+ "##tera": 14621,
+ "recognizing": 14622,
+ "relates": 14623,
+ "misery": 14624,
+ "##sies": 14625,
+ "##tly": 14626,
+ "reproduction": 14627,
+ "piercing": 14628,
+ "potatoes": 14629,
+ "thornton": 14630,
+ "esther": 14631,
+ "manners": 14632,
+ "hbo": 14633,
+ "##aan": 14634,
+ "ours": 14635,
+ "bullshit": 14636,
+ "ernie": 14637,
+ "perennial": 14638,
+ "sensitivity": 14639,
+ "illuminated": 14640,
+ "rupert": 14641,
+ "##jin": 14642,
+ "##iss": 14643,
+ "##ear": 14644,
+ "rfc": 14645,
+ "nassau": 14646,
+ "##dock": 14647,
+ "staggered": 14648,
+ "socialism": 14649,
+ "##haven": 14650,
+ "appointments": 14651,
+ "nonsense": 14652,
+ "prestige": 14653,
+ "sharma": 14654,
+ "haul": 14655,
+ "##tical": 14656,
+ "solidarity": 14657,
+ "gps": 14658,
+ "##ook": 14659,
+ "##rata": 14660,
+ "igor": 14661,
+ "pedestrian": 14662,
+ "##uit": 14663,
+ "baxter": 14664,
+ "tenants": 14665,
+ "wires": 14666,
+ "medication": 14667,
+ "unlimited": 14668,
+ "guiding": 14669,
+ "impacts": 14670,
+ "diabetes": 14671,
+ "##rama": 14672,
+ "sasha": 14673,
+ "pas": 14674,
+ "clive": 14675,
+ "extraction": 14676,
+ "131": 14677,
+ "continually": 14678,
+ "constraints": 14679,
+ "##bilities": 14680,
+ "sonata": 14681,
+ "hunted": 14682,
+ "sixteenth": 14683,
+ "chu": 14684,
+ "planting": 14685,
+ "quote": 14686,
+ "mayer": 14687,
+ "pretended": 14688,
+ "abs": 14689,
+ "spat": 14690,
+ "##hua": 14691,
+ "ceramic": 14692,
+ "##cci": 14693,
+ "curtains": 14694,
+ "pigs": 14695,
+ "pitching": 14696,
+ "##dad": 14697,
+ "latvian": 14698,
+ "sore": 14699,
+ "dayton": 14700,
+ "##sted": 14701,
+ "##qi": 14702,
+ "patrols": 14703,
+ "slice": 14704,
+ "playground": 14705,
+ "##nted": 14706,
+ "shone": 14707,
+ "stool": 14708,
+ "apparatus": 14709,
+ "inadequate": 14710,
+ "mates": 14711,
+ "treason": 14712,
+ "##ija": 14713,
+ "desires": 14714,
+ "##liga": 14715,
+ "##croft": 14716,
+ "somalia": 14717,
+ "laurent": 14718,
+ "mir": 14719,
+ "leonardo": 14720,
+ "oracle": 14721,
+ "grape": 14722,
+ "obliged": 14723,
+ "chevrolet": 14724,
+ "thirteenth": 14725,
+ "stunning": 14726,
+ "enthusiastic": 14727,
+ "##ede": 14728,
+ "accounted": 14729,
+ "concludes": 14730,
+ "currents": 14731,
+ "basil": 14732,
+ "##kovic": 14733,
+ "drought": 14734,
+ "##rica": 14735,
+ "mai": 14736,
+ "##aire": 14737,
+ "shove": 14738,
+ "posting": 14739,
+ "##shed": 14740,
+ "pilgrimage": 14741,
+ "humorous": 14742,
+ "packing": 14743,
+ "fry": 14744,
+ "pencil": 14745,
+ "wines": 14746,
+ "smells": 14747,
+ "144": 14748,
+ "marilyn": 14749,
+ "aching": 14750,
+ "newest": 14751,
+ "clung": 14752,
+ "bon": 14753,
+ "neighbours": 14754,
+ "sanctioned": 14755,
+ "##pie": 14756,
+ "mug": 14757,
+ "##stock": 14758,
+ "drowning": 14759,
+ "##mma": 14760,
+ "hydraulic": 14761,
+ "##vil": 14762,
+ "hiring": 14763,
+ "reminder": 14764,
+ "lilly": 14765,
+ "investigators": 14766,
+ "##ncies": 14767,
+ "sour": 14768,
+ "##eous": 14769,
+ "compulsory": 14770,
+ "packet": 14771,
+ "##rion": 14772,
+ "##graphic": 14773,
+ "##elle": 14774,
+ "cannes": 14775,
+ "##inate": 14776,
+ "depressed": 14777,
+ "##rit": 14778,
+ "heroic": 14779,
+ "importantly": 14780,
+ "theresa": 14781,
+ "##tled": 14782,
+ "conway": 14783,
+ "saturn": 14784,
+ "marginal": 14785,
+ "rae": 14786,
+ "##xia": 14787,
+ "corresponds": 14788,
+ "royce": 14789,
+ "pact": 14790,
+ "jasper": 14791,
+ "explosives": 14792,
+ "packaging": 14793,
+ "aluminium": 14794,
+ "##ttered": 14795,
+ "denotes": 14796,
+ "rhythmic": 14797,
+ "spans": 14798,
+ "assignments": 14799,
+ "hereditary": 14800,
+ "outlined": 14801,
+ "originating": 14802,
+ "sundays": 14803,
+ "lad": 14804,
+ "reissued": 14805,
+ "greeting": 14806,
+ "beatrice": 14807,
+ "##dic": 14808,
+ "pillar": 14809,
+ "marcos": 14810,
+ "plots": 14811,
+ "handbook": 14812,
+ "alcoholic": 14813,
+ "judiciary": 14814,
+ "avant": 14815,
+ "slides": 14816,
+ "extract": 14817,
+ "masculine": 14818,
+ "blur": 14819,
+ "##eum": 14820,
+ "##force": 14821,
+ "homage": 14822,
+ "trembled": 14823,
+ "owens": 14824,
+ "hymn": 14825,
+ "trey": 14826,
+ "omega": 14827,
+ "signaling": 14828,
+ "socks": 14829,
+ "accumulated": 14830,
+ "reacted": 14831,
+ "attic": 14832,
+ "theo": 14833,
+ "lining": 14834,
+ "angie": 14835,
+ "distraction": 14836,
+ "primera": 14837,
+ "talbot": 14838,
+ "##key": 14839,
+ "1200": 14840,
+ "ti": 14841,
+ "creativity": 14842,
+ "billed": 14843,
+ "##hey": 14844,
+ "deacon": 14845,
+ "eduardo": 14846,
+ "identifies": 14847,
+ "proposition": 14848,
+ "dizzy": 14849,
+ "gunner": 14850,
+ "hogan": 14851,
+ "##yam": 14852,
+ "##pping": 14853,
+ "##hol": 14854,
+ "ja": 14855,
+ "##chan": 14856,
+ "jensen": 14857,
+ "reconstructed": 14858,
+ "##berger": 14859,
+ "clearance": 14860,
+ "darius": 14861,
+ "##nier": 14862,
+ "abe": 14863,
+ "harlem": 14864,
+ "plea": 14865,
+ "dei": 14866,
+ "circled": 14867,
+ "emotionally": 14868,
+ "notation": 14869,
+ "fascist": 14870,
+ "neville": 14871,
+ "exceeded": 14872,
+ "upwards": 14873,
+ "viable": 14874,
+ "ducks": 14875,
+ "##fo": 14876,
+ "workforce": 14877,
+ "racer": 14878,
+ "limiting": 14879,
+ "shri": 14880,
+ "##lson": 14881,
+ "possesses": 14882,
+ "1600": 14883,
+ "kerr": 14884,
+ "moths": 14885,
+ "devastating": 14886,
+ "laden": 14887,
+ "disturbing": 14888,
+ "locking": 14889,
+ "##cture": 14890,
+ "gal": 14891,
+ "fearing": 14892,
+ "accreditation": 14893,
+ "flavor": 14894,
+ "aide": 14895,
+ "1870s": 14896,
+ "mountainous": 14897,
+ "##baum": 14898,
+ "melt": 14899,
+ "##ures": 14900,
+ "motel": 14901,
+ "texture": 14902,
+ "servers": 14903,
+ "soda": 14904,
+ "##mb": 14905,
+ "herd": 14906,
+ "##nium": 14907,
+ "erect": 14908,
+ "puzzled": 14909,
+ "hum": 14910,
+ "peggy": 14911,
+ "examinations": 14912,
+ "gould": 14913,
+ "testified": 14914,
+ "geoff": 14915,
+ "ren": 14916,
+ "devised": 14917,
+ "sacks": 14918,
+ "##law": 14919,
+ "denial": 14920,
+ "posters": 14921,
+ "grunted": 14922,
+ "cesar": 14923,
+ "tutor": 14924,
+ "ec": 14925,
+ "gerry": 14926,
+ "offerings": 14927,
+ "byrne": 14928,
+ "falcons": 14929,
+ "combinations": 14930,
+ "ct": 14931,
+ "incoming": 14932,
+ "pardon": 14933,
+ "rocking": 14934,
+ "26th": 14935,
+ "avengers": 14936,
+ "flared": 14937,
+ "mankind": 14938,
+ "seller": 14939,
+ "uttar": 14940,
+ "loch": 14941,
+ "nadia": 14942,
+ "stroking": 14943,
+ "exposing": 14944,
+ "##hd": 14945,
+ "fertile": 14946,
+ "ancestral": 14947,
+ "instituted": 14948,
+ "##has": 14949,
+ "noises": 14950,
+ "prophecy": 14951,
+ "taxation": 14952,
+ "eminent": 14953,
+ "vivid": 14954,
+ "pol": 14955,
+ "##bol": 14956,
+ "dart": 14957,
+ "indirect": 14958,
+ "multimedia": 14959,
+ "notebook": 14960,
+ "upside": 14961,
+ "displaying": 14962,
+ "adrenaline": 14963,
+ "referenced": 14964,
+ "geometric": 14965,
+ "##iving": 14966,
+ "progression": 14967,
+ "##ddy": 14968,
+ "blunt": 14969,
+ "announce": 14970,
+ "##far": 14971,
+ "implementing": 14972,
+ "##lav": 14973,
+ "aggression": 14974,
+ "liaison": 14975,
+ "cooler": 14976,
+ "cares": 14977,
+ "headache": 14978,
+ "plantations": 14979,
+ "gorge": 14980,
+ "dots": 14981,
+ "impulse": 14982,
+ "thickness": 14983,
+ "ashamed": 14984,
+ "averaging": 14985,
+ "kathy": 14986,
+ "obligation": 14987,
+ "precursor": 14988,
+ "137": 14989,
+ "fowler": 14990,
+ "symmetry": 14991,
+ "thee": 14992,
+ "225": 14993,
+ "hears": 14994,
+ "##rai": 14995,
+ "undergoing": 14996,
+ "ads": 14997,
+ "butcher": 14998,
+ "bowler": 14999,
+ "##lip": 15000,
+ "cigarettes": 15001,
+ "subscription": 15002,
+ "goodness": 15003,
+ "##ically": 15004,
+ "browne": 15005,
+ "##hos": 15006,
+ "##tech": 15007,
+ "kyoto": 15008,
+ "donor": 15009,
+ "##erty": 15010,
+ "damaging": 15011,
+ "friction": 15012,
+ "drifting": 15013,
+ "expeditions": 15014,
+ "hardened": 15015,
+ "prostitution": 15016,
+ "152": 15017,
+ "fauna": 15018,
+ "blankets": 15019,
+ "claw": 15020,
+ "tossing": 15021,
+ "snarled": 15022,
+ "butterflies": 15023,
+ "recruits": 15024,
+ "investigative": 15025,
+ "coated": 15026,
+ "healed": 15027,
+ "138": 15028,
+ "communal": 15029,
+ "hai": 15030,
+ "xiii": 15031,
+ "academics": 15032,
+ "boone": 15033,
+ "psychologist": 15034,
+ "restless": 15035,
+ "lahore": 15036,
+ "stephens": 15037,
+ "mba": 15038,
+ "brendan": 15039,
+ "foreigners": 15040,
+ "printer": 15041,
+ "##pc": 15042,
+ "ached": 15043,
+ "explode": 15044,
+ "27th": 15045,
+ "deed": 15046,
+ "scratched": 15047,
+ "dared": 15048,
+ "##pole": 15049,
+ "cardiac": 15050,
+ "1780": 15051,
+ "okinawa": 15052,
+ "proto": 15053,
+ "commando": 15054,
+ "compelled": 15055,
+ "oddly": 15056,
+ "electrons": 15057,
+ "##base": 15058,
+ "replica": 15059,
+ "thanksgiving": 15060,
+ "##rist": 15061,
+ "sheila": 15062,
+ "deliberate": 15063,
+ "stafford": 15064,
+ "tidal": 15065,
+ "representations": 15066,
+ "hercules": 15067,
+ "ou": 15068,
+ "##path": 15069,
+ "##iated": 15070,
+ "kidnapping": 15071,
+ "lenses": 15072,
+ "##tling": 15073,
+ "deficit": 15074,
+ "samoa": 15075,
+ "mouths": 15076,
+ "consuming": 15077,
+ "computational": 15078,
+ "maze": 15079,
+ "granting": 15080,
+ "smirk": 15081,
+ "razor": 15082,
+ "fixture": 15083,
+ "ideals": 15084,
+ "inviting": 15085,
+ "aiden": 15086,
+ "nominal": 15087,
+ "##vs": 15088,
+ "issuing": 15089,
+ "julio": 15090,
+ "pitt": 15091,
+ "ramsey": 15092,
+ "docks": 15093,
+ "##oss": 15094,
+ "exhaust": 15095,
+ "##owed": 15096,
+ "bavarian": 15097,
+ "draped": 15098,
+ "anterior": 15099,
+ "mating": 15100,
+ "ethiopian": 15101,
+ "explores": 15102,
+ "noticing": 15103,
+ "##nton": 15104,
+ "discarded": 15105,
+ "convenience": 15106,
+ "hoffman": 15107,
+ "endowment": 15108,
+ "beasts": 15109,
+ "cartridge": 15110,
+ "mormon": 15111,
+ "paternal": 15112,
+ "probe": 15113,
+ "sleeves": 15114,
+ "interfere": 15115,
+ "lump": 15116,
+ "deadline": 15117,
+ "##rail": 15118,
+ "jenks": 15119,
+ "bulldogs": 15120,
+ "scrap": 15121,
+ "alternating": 15122,
+ "justified": 15123,
+ "reproductive": 15124,
+ "nam": 15125,
+ "seize": 15126,
+ "descending": 15127,
+ "secretariat": 15128,
+ "kirby": 15129,
+ "coupe": 15130,
+ "grouped": 15131,
+ "smash": 15132,
+ "panther": 15133,
+ "sedan": 15134,
+ "tapping": 15135,
+ "##18": 15136,
+ "lola": 15137,
+ "cheer": 15138,
+ "germanic": 15139,
+ "unfortunate": 15140,
+ "##eter": 15141,
+ "unrelated": 15142,
+ "##fan": 15143,
+ "subordinate": 15144,
+ "##sdale": 15145,
+ "suzanne": 15146,
+ "advertisement": 15147,
+ "##ility": 15148,
+ "horsepower": 15149,
+ "##lda": 15150,
+ "cautiously": 15151,
+ "discourse": 15152,
+ "luigi": 15153,
+ "##mans": 15154,
+ "##fields": 15155,
+ "noun": 15156,
+ "prevalent": 15157,
+ "mao": 15158,
+ "schneider": 15159,
+ "everett": 15160,
+ "surround": 15161,
+ "governorate": 15162,
+ "kira": 15163,
+ "##avia": 15164,
+ "westward": 15165,
+ "##take": 15166,
+ "misty": 15167,
+ "rails": 15168,
+ "sustainability": 15169,
+ "134": 15170,
+ "unused": 15171,
+ "##rating": 15172,
+ "packs": 15173,
+ "toast": 15174,
+ "unwilling": 15175,
+ "regulate": 15176,
+ "thy": 15177,
+ "suffrage": 15178,
+ "nile": 15179,
+ "awe": 15180,
+ "assam": 15181,
+ "definitions": 15182,
+ "travelers": 15183,
+ "affordable": 15184,
+ "##rb": 15185,
+ "conferred": 15186,
+ "sells": 15187,
+ "undefeated": 15188,
+ "beneficial": 15189,
+ "torso": 15190,
+ "basal": 15191,
+ "repeating": 15192,
+ "remixes": 15193,
+ "##pass": 15194,
+ "bahrain": 15195,
+ "cables": 15196,
+ "fang": 15197,
+ "##itated": 15198,
+ "excavated": 15199,
+ "numbering": 15200,
+ "statutory": 15201,
+ "##rey": 15202,
+ "deluxe": 15203,
+ "##lian": 15204,
+ "forested": 15205,
+ "ramirez": 15206,
+ "derbyshire": 15207,
+ "zeus": 15208,
+ "slamming": 15209,
+ "transfers": 15210,
+ "astronomer": 15211,
+ "banana": 15212,
+ "lottery": 15213,
+ "berg": 15214,
+ "histories": 15215,
+ "bamboo": 15216,
+ "##uchi": 15217,
+ "resurrection": 15218,
+ "posterior": 15219,
+ "bowls": 15220,
+ "vaguely": 15221,
+ "##thi": 15222,
+ "thou": 15223,
+ "preserving": 15224,
+ "tensed": 15225,
+ "offence": 15226,
+ "##inas": 15227,
+ "meyrick": 15228,
+ "callum": 15229,
+ "ridden": 15230,
+ "watt": 15231,
+ "langdon": 15232,
+ "tying": 15233,
+ "lowland": 15234,
+ "snorted": 15235,
+ "daring": 15236,
+ "truman": 15237,
+ "##hale": 15238,
+ "##girl": 15239,
+ "aura": 15240,
+ "overly": 15241,
+ "filing": 15242,
+ "weighing": 15243,
+ "goa": 15244,
+ "infections": 15245,
+ "philanthropist": 15246,
+ "saunders": 15247,
+ "eponymous": 15248,
+ "##owski": 15249,
+ "latitude": 15250,
+ "perspectives": 15251,
+ "reviewing": 15252,
+ "mets": 15253,
+ "commandant": 15254,
+ "radial": 15255,
+ "##kha": 15256,
+ "flashlight": 15257,
+ "reliability": 15258,
+ "koch": 15259,
+ "vowels": 15260,
+ "amazed": 15261,
+ "ada": 15262,
+ "elaine": 15263,
+ "supper": 15264,
+ "##rth": 15265,
+ "##encies": 15266,
+ "predator": 15267,
+ "debated": 15268,
+ "soviets": 15269,
+ "cola": 15270,
+ "##boards": 15271,
+ "##nah": 15272,
+ "compartment": 15273,
+ "crooked": 15274,
+ "arbitrary": 15275,
+ "fourteenth": 15276,
+ "##ctive": 15277,
+ "havana": 15278,
+ "majors": 15279,
+ "steelers": 15280,
+ "clips": 15281,
+ "profitable": 15282,
+ "ambush": 15283,
+ "exited": 15284,
+ "packers": 15285,
+ "##tile": 15286,
+ "nude": 15287,
+ "cracks": 15288,
+ "fungi": 15289,
+ "##е": 15290,
+ "limb": 15291,
+ "trousers": 15292,
+ "josie": 15293,
+ "shelby": 15294,
+ "tens": 15295,
+ "frederic": 15296,
+ "##ος": 15297,
+ "definite": 15298,
+ "smoothly": 15299,
+ "constellation": 15300,
+ "insult": 15301,
+ "baton": 15302,
+ "discs": 15303,
+ "lingering": 15304,
+ "##nco": 15305,
+ "conclusions": 15306,
+ "lent": 15307,
+ "staging": 15308,
+ "becker": 15309,
+ "grandpa": 15310,
+ "shaky": 15311,
+ "##tron": 15312,
+ "einstein": 15313,
+ "obstacles": 15314,
+ "sk": 15315,
+ "adverse": 15316,
+ "elle": 15317,
+ "economically": 15318,
+ "##moto": 15319,
+ "mccartney": 15320,
+ "thor": 15321,
+ "dismissal": 15322,
+ "motions": 15323,
+ "readings": 15324,
+ "nostrils": 15325,
+ "treatise": 15326,
+ "##pace": 15327,
+ "squeezing": 15328,
+ "evidently": 15329,
+ "prolonged": 15330,
+ "1783": 15331,
+ "venezuelan": 15332,
+ "je": 15333,
+ "marguerite": 15334,
+ "beirut": 15335,
+ "takeover": 15336,
+ "shareholders": 15337,
+ "##vent": 15338,
+ "denise": 15339,
+ "digit": 15340,
+ "airplay": 15341,
+ "norse": 15342,
+ "##bbling": 15343,
+ "imaginary": 15344,
+ "pills": 15345,
+ "hubert": 15346,
+ "blaze": 15347,
+ "vacated": 15348,
+ "eliminating": 15349,
+ "##ello": 15350,
+ "vine": 15351,
+ "mansfield": 15352,
+ "##tty": 15353,
+ "retrospective": 15354,
+ "barrow": 15355,
+ "borne": 15356,
+ "clutch": 15357,
+ "bail": 15358,
+ "forensic": 15359,
+ "weaving": 15360,
+ "##nett": 15361,
+ "##witz": 15362,
+ "desktop": 15363,
+ "citadel": 15364,
+ "promotions": 15365,
+ "worrying": 15366,
+ "dorset": 15367,
+ "ieee": 15368,
+ "subdivided": 15369,
+ "##iating": 15370,
+ "manned": 15371,
+ "expeditionary": 15372,
+ "pickup": 15373,
+ "synod": 15374,
+ "chuckle": 15375,
+ "185": 15376,
+ "barney": 15377,
+ "##rz": 15378,
+ "##ffin": 15379,
+ "functionality": 15380,
+ "karachi": 15381,
+ "litigation": 15382,
+ "meanings": 15383,
+ "uc": 15384,
+ "lick": 15385,
+ "turbo": 15386,
+ "anders": 15387,
+ "##ffed": 15388,
+ "execute": 15389,
+ "curl": 15390,
+ "oppose": 15391,
+ "ankles": 15392,
+ "typhoon": 15393,
+ "##د": 15394,
+ "##ache": 15395,
+ "##asia": 15396,
+ "linguistics": 15397,
+ "compassion": 15398,
+ "pressures": 15399,
+ "grazing": 15400,
+ "perfection": 15401,
+ "##iting": 15402,
+ "immunity": 15403,
+ "monopoly": 15404,
+ "muddy": 15405,
+ "backgrounds": 15406,
+ "136": 15407,
+ "namibia": 15408,
+ "francesca": 15409,
+ "monitors": 15410,
+ "attracting": 15411,
+ "stunt": 15412,
+ "tuition": 15413,
+ "##ии": 15414,
+ "vegetable": 15415,
+ "##mates": 15416,
+ "##quent": 15417,
+ "mgm": 15418,
+ "jen": 15419,
+ "complexes": 15420,
+ "forts": 15421,
+ "##ond": 15422,
+ "cellar": 15423,
+ "bites": 15424,
+ "seventeenth": 15425,
+ "royals": 15426,
+ "flemish": 15427,
+ "failures": 15428,
+ "mast": 15429,
+ "charities": 15430,
+ "##cular": 15431,
+ "peruvian": 15432,
+ "capitals": 15433,
+ "macmillan": 15434,
+ "ipswich": 15435,
+ "outward": 15436,
+ "frigate": 15437,
+ "postgraduate": 15438,
+ "folds": 15439,
+ "employing": 15440,
+ "##ouse": 15441,
+ "concurrently": 15442,
+ "fiery": 15443,
+ "##tai": 15444,
+ "contingent": 15445,
+ "nightmares": 15446,
+ "monumental": 15447,
+ "nicaragua": 15448,
+ "##kowski": 15449,
+ "lizard": 15450,
+ "mal": 15451,
+ "fielding": 15452,
+ "gig": 15453,
+ "reject": 15454,
+ "##pad": 15455,
+ "harding": 15456,
+ "##ipe": 15457,
+ "coastline": 15458,
+ "##cin": 15459,
+ "##nos": 15460,
+ "beethoven": 15461,
+ "humphrey": 15462,
+ "innovations": 15463,
+ "##tam": 15464,
+ "##nge": 15465,
+ "norris": 15466,
+ "doris": 15467,
+ "solicitor": 15468,
+ "huang": 15469,
+ "obey": 15470,
+ "141": 15471,
+ "##lc": 15472,
+ "niagara": 15473,
+ "##tton": 15474,
+ "shelves": 15475,
+ "aug": 15476,
+ "bourbon": 15477,
+ "curry": 15478,
+ "nightclub": 15479,
+ "specifications": 15480,
+ "hilton": 15481,
+ "##ndo": 15482,
+ "centennial": 15483,
+ "dispersed": 15484,
+ "worm": 15485,
+ "neglected": 15486,
+ "briggs": 15487,
+ "sm": 15488,
+ "font": 15489,
+ "kuala": 15490,
+ "uneasy": 15491,
+ "plc": 15492,
+ "##nstein": 15493,
+ "##bound": 15494,
+ "##aking": 15495,
+ "##burgh": 15496,
+ "awaiting": 15497,
+ "pronunciation": 15498,
+ "##bbed": 15499,
+ "##quest": 15500,
+ "eh": 15501,
+ "optimal": 15502,
+ "zhu": 15503,
+ "raped": 15504,
+ "greens": 15505,
+ "presided": 15506,
+ "brenda": 15507,
+ "worries": 15508,
+ "##life": 15509,
+ "venetian": 15510,
+ "marxist": 15511,
+ "turnout": 15512,
+ "##lius": 15513,
+ "refined": 15514,
+ "braced": 15515,
+ "sins": 15516,
+ "grasped": 15517,
+ "sunderland": 15518,
+ "nickel": 15519,
+ "speculated": 15520,
+ "lowell": 15521,
+ "cyrillic": 15522,
+ "communism": 15523,
+ "fundraising": 15524,
+ "resembling": 15525,
+ "colonists": 15526,
+ "mutant": 15527,
+ "freddie": 15528,
+ "usc": 15529,
+ "##mos": 15530,
+ "gratitude": 15531,
+ "##run": 15532,
+ "mural": 15533,
+ "##lous": 15534,
+ "chemist": 15535,
+ "wi": 15536,
+ "reminds": 15537,
+ "28th": 15538,
+ "steals": 15539,
+ "tess": 15540,
+ "pietro": 15541,
+ "##ingen": 15542,
+ "promoter": 15543,
+ "ri": 15544,
+ "microphone": 15545,
+ "honoured": 15546,
+ "rai": 15547,
+ "sant": 15548,
+ "##qui": 15549,
+ "feather": 15550,
+ "##nson": 15551,
+ "burlington": 15552,
+ "kurdish": 15553,
+ "terrorists": 15554,
+ "deborah": 15555,
+ "sickness": 15556,
+ "##wed": 15557,
+ "##eet": 15558,
+ "hazard": 15559,
+ "irritated": 15560,
+ "desperation": 15561,
+ "veil": 15562,
+ "clarity": 15563,
+ "##rik": 15564,
+ "jewels": 15565,
+ "xv": 15566,
+ "##gged": 15567,
+ "##ows": 15568,
+ "##cup": 15569,
+ "berkshire": 15570,
+ "unfair": 15571,
+ "mysteries": 15572,
+ "orchid": 15573,
+ "winced": 15574,
+ "exhaustion": 15575,
+ "renovations": 15576,
+ "stranded": 15577,
+ "obe": 15578,
+ "infinity": 15579,
+ "##nies": 15580,
+ "adapt": 15581,
+ "redevelopment": 15582,
+ "thanked": 15583,
+ "registry": 15584,
+ "olga": 15585,
+ "domingo": 15586,
+ "noir": 15587,
+ "tudor": 15588,
+ "ole": 15589,
+ "##atus": 15590,
+ "commenting": 15591,
+ "behaviors": 15592,
+ "##ais": 15593,
+ "crisp": 15594,
+ "pauline": 15595,
+ "probable": 15596,
+ "stirling": 15597,
+ "wigan": 15598,
+ "##bian": 15599,
+ "paralympics": 15600,
+ "panting": 15601,
+ "surpassed": 15602,
+ "##rew": 15603,
+ "luca": 15604,
+ "barred": 15605,
+ "pony": 15606,
+ "famed": 15607,
+ "##sters": 15608,
+ "cassandra": 15609,
+ "waiter": 15610,
+ "carolyn": 15611,
+ "exported": 15612,
+ "##orted": 15613,
+ "andres": 15614,
+ "destructive": 15615,
+ "deeds": 15616,
+ "jonah": 15617,
+ "castles": 15618,
+ "vacancy": 15619,
+ "suv": 15620,
+ "##glass": 15621,
+ "1788": 15622,
+ "orchard": 15623,
+ "yep": 15624,
+ "famine": 15625,
+ "belarusian": 15626,
+ "sprang": 15627,
+ "##forth": 15628,
+ "skinny": 15629,
+ "##mis": 15630,
+ "administrators": 15631,
+ "rotterdam": 15632,
+ "zambia": 15633,
+ "zhao": 15634,
+ "boiler": 15635,
+ "discoveries": 15636,
+ "##ride": 15637,
+ "##physics": 15638,
+ "lucius": 15639,
+ "disappointing": 15640,
+ "outreach": 15641,
+ "spoon": 15642,
+ "##frame": 15643,
+ "qualifications": 15644,
+ "unanimously": 15645,
+ "enjoys": 15646,
+ "regency": 15647,
+ "##iidae": 15648,
+ "stade": 15649,
+ "realism": 15650,
+ "veterinary": 15651,
+ "rodgers": 15652,
+ "dump": 15653,
+ "alain": 15654,
+ "chestnut": 15655,
+ "castile": 15656,
+ "censorship": 15657,
+ "rumble": 15658,
+ "gibbs": 15659,
+ "##itor": 15660,
+ "communion": 15661,
+ "reggae": 15662,
+ "inactivated": 15663,
+ "logs": 15664,
+ "loads": 15665,
+ "##houses": 15666,
+ "homosexual": 15667,
+ "##iano": 15668,
+ "ale": 15669,
+ "informs": 15670,
+ "##cas": 15671,
+ "phrases": 15672,
+ "plaster": 15673,
+ "linebacker": 15674,
+ "ambrose": 15675,
+ "kaiser": 15676,
+ "fascinated": 15677,
+ "850": 15678,
+ "limerick": 15679,
+ "recruitment": 15680,
+ "forge": 15681,
+ "mastered": 15682,
+ "##nding": 15683,
+ "leinster": 15684,
+ "rooted": 15685,
+ "threaten": 15686,
+ "##strom": 15687,
+ "borneo": 15688,
+ "##hes": 15689,
+ "suggestions": 15690,
+ "scholarships": 15691,
+ "propeller": 15692,
+ "documentaries": 15693,
+ "patronage": 15694,
+ "coats": 15695,
+ "constructing": 15696,
+ "invest": 15697,
+ "neurons": 15698,
+ "comet": 15699,
+ "entirety": 15700,
+ "shouts": 15701,
+ "identities": 15702,
+ "annoying": 15703,
+ "unchanged": 15704,
+ "wary": 15705,
+ "##antly": 15706,
+ "##ogy": 15707,
+ "neat": 15708,
+ "oversight": 15709,
+ "##kos": 15710,
+ "phillies": 15711,
+ "replay": 15712,
+ "constance": 15713,
+ "##kka": 15714,
+ "incarnation": 15715,
+ "humble": 15716,
+ "skies": 15717,
+ "minus": 15718,
+ "##acy": 15719,
+ "smithsonian": 15720,
+ "##chel": 15721,
+ "guerrilla": 15722,
+ "jar": 15723,
+ "cadets": 15724,
+ "##plate": 15725,
+ "surplus": 15726,
+ "audit": 15727,
+ "##aru": 15728,
+ "cracking": 15729,
+ "joanna": 15730,
+ "louisa": 15731,
+ "pacing": 15732,
+ "##lights": 15733,
+ "intentionally": 15734,
+ "##iri": 15735,
+ "diner": 15736,
+ "nwa": 15737,
+ "imprint": 15738,
+ "australians": 15739,
+ "tong": 15740,
+ "unprecedented": 15741,
+ "bunker": 15742,
+ "naive": 15743,
+ "specialists": 15744,
+ "ark": 15745,
+ "nichols": 15746,
+ "railing": 15747,
+ "leaked": 15748,
+ "pedal": 15749,
+ "##uka": 15750,
+ "shrub": 15751,
+ "longing": 15752,
+ "roofs": 15753,
+ "v8": 15754,
+ "captains": 15755,
+ "neural": 15756,
+ "tuned": 15757,
+ "##ntal": 15758,
+ "##jet": 15759,
+ "emission": 15760,
+ "medina": 15761,
+ "frantic": 15762,
+ "codex": 15763,
+ "definitive": 15764,
+ "sid": 15765,
+ "abolition": 15766,
+ "intensified": 15767,
+ "stocks": 15768,
+ "enrique": 15769,
+ "sustain": 15770,
+ "genoa": 15771,
+ "oxide": 15772,
+ "##written": 15773,
+ "clues": 15774,
+ "cha": 15775,
+ "##gers": 15776,
+ "tributaries": 15777,
+ "fragment": 15778,
+ "venom": 15779,
+ "##rity": 15780,
+ "##ente": 15781,
+ "##sca": 15782,
+ "muffled": 15783,
+ "vain": 15784,
+ "sire": 15785,
+ "laos": 15786,
+ "##ingly": 15787,
+ "##hana": 15788,
+ "hastily": 15789,
+ "snapping": 15790,
+ "surfaced": 15791,
+ "sentiment": 15792,
+ "motive": 15793,
+ "##oft": 15794,
+ "contests": 15795,
+ "approximate": 15796,
+ "mesa": 15797,
+ "luckily": 15798,
+ "dinosaur": 15799,
+ "exchanges": 15800,
+ "propelled": 15801,
+ "accord": 15802,
+ "bourne": 15803,
+ "relieve": 15804,
+ "tow": 15805,
+ "masks": 15806,
+ "offended": 15807,
+ "##ues": 15808,
+ "cynthia": 15809,
+ "##mmer": 15810,
+ "rains": 15811,
+ "bartender": 15812,
+ "zinc": 15813,
+ "reviewers": 15814,
+ "lois": 15815,
+ "##sai": 15816,
+ "legged": 15817,
+ "arrogant": 15818,
+ "rafe": 15819,
+ "rosie": 15820,
+ "comprise": 15821,
+ "handicap": 15822,
+ "blockade": 15823,
+ "inlet": 15824,
+ "lagoon": 15825,
+ "copied": 15826,
+ "drilling": 15827,
+ "shelley": 15828,
+ "petals": 15829,
+ "##inian": 15830,
+ "mandarin": 15831,
+ "obsolete": 15832,
+ "##inated": 15833,
+ "onward": 15834,
+ "arguably": 15835,
+ "productivity": 15836,
+ "cindy": 15837,
+ "praising": 15838,
+ "seldom": 15839,
+ "busch": 15840,
+ "discusses": 15841,
+ "raleigh": 15842,
+ "shortage": 15843,
+ "ranged": 15844,
+ "stanton": 15845,
+ "encouragement": 15846,
+ "firstly": 15847,
+ "conceded": 15848,
+ "overs": 15849,
+ "temporal": 15850,
+ "##uke": 15851,
+ "cbe": 15852,
+ "##bos": 15853,
+ "woo": 15854,
+ "certainty": 15855,
+ "pumps": 15856,
+ "##pton": 15857,
+ "stalked": 15858,
+ "##uli": 15859,
+ "lizzie": 15860,
+ "periodic": 15861,
+ "thieves": 15862,
+ "weaker": 15863,
+ "##night": 15864,
+ "gases": 15865,
+ "shoving": 15866,
+ "chooses": 15867,
+ "wc": 15868,
+ "##chemical": 15869,
+ "prompting": 15870,
+ "weights": 15871,
+ "##kill": 15872,
+ "robust": 15873,
+ "flanked": 15874,
+ "sticky": 15875,
+ "hu": 15876,
+ "tuberculosis": 15877,
+ "##eb": 15878,
+ "##eal": 15879,
+ "christchurch": 15880,
+ "resembled": 15881,
+ "wallet": 15882,
+ "reese": 15883,
+ "inappropriate": 15884,
+ "pictured": 15885,
+ "distract": 15886,
+ "fixing": 15887,
+ "fiddle": 15888,
+ "giggled": 15889,
+ "burger": 15890,
+ "heirs": 15891,
+ "hairy": 15892,
+ "mechanic": 15893,
+ "torque": 15894,
+ "apache": 15895,
+ "obsessed": 15896,
+ "chiefly": 15897,
+ "cheng": 15898,
+ "logging": 15899,
+ "##tag": 15900,
+ "extracted": 15901,
+ "meaningful": 15902,
+ "numb": 15903,
+ "##vsky": 15904,
+ "gloucestershire": 15905,
+ "reminding": 15906,
+ "##bay": 15907,
+ "unite": 15908,
+ "##lit": 15909,
+ "breeds": 15910,
+ "diminished": 15911,
+ "clown": 15912,
+ "glove": 15913,
+ "1860s": 15914,
+ "##ن": 15915,
+ "##ug": 15916,
+ "archibald": 15917,
+ "focal": 15918,
+ "freelance": 15919,
+ "sliced": 15920,
+ "depiction": 15921,
+ "##yk": 15922,
+ "organism": 15923,
+ "switches": 15924,
+ "sights": 15925,
+ "stray": 15926,
+ "crawling": 15927,
+ "##ril": 15928,
+ "lever": 15929,
+ "leningrad": 15930,
+ "interpretations": 15931,
+ "loops": 15932,
+ "anytime": 15933,
+ "reel": 15934,
+ "alicia": 15935,
+ "delighted": 15936,
+ "##ech": 15937,
+ "inhaled": 15938,
+ "xiv": 15939,
+ "suitcase": 15940,
+ "bernie": 15941,
+ "vega": 15942,
+ "licenses": 15943,
+ "northampton": 15944,
+ "exclusion": 15945,
+ "induction": 15946,
+ "monasteries": 15947,
+ "racecourse": 15948,
+ "homosexuality": 15949,
+ "##right": 15950,
+ "##sfield": 15951,
+ "##rky": 15952,
+ "dimitri": 15953,
+ "michele": 15954,
+ "alternatives": 15955,
+ "ions": 15956,
+ "commentators": 15957,
+ "genuinely": 15958,
+ "objected": 15959,
+ "pork": 15960,
+ "hospitality": 15961,
+ "fencing": 15962,
+ "stephan": 15963,
+ "warships": 15964,
+ "peripheral": 15965,
+ "wit": 15966,
+ "drunken": 15967,
+ "wrinkled": 15968,
+ "quentin": 15969,
+ "spends": 15970,
+ "departing": 15971,
+ "chung": 15972,
+ "numerical": 15973,
+ "spokesperson": 15974,
+ "##zone": 15975,
+ "johannesburg": 15976,
+ "caliber": 15977,
+ "killers": 15978,
+ "##udge": 15979,
+ "assumes": 15980,
+ "neatly": 15981,
+ "demographic": 15982,
+ "abigail": 15983,
+ "bloc": 15984,
+ "##vel": 15985,
+ "mounting": 15986,
+ "##lain": 15987,
+ "bentley": 15988,
+ "slightest": 15989,
+ "xu": 15990,
+ "recipients": 15991,
+ "##jk": 15992,
+ "merlin": 15993,
+ "##writer": 15994,
+ "seniors": 15995,
+ "prisons": 15996,
+ "blinking": 15997,
+ "hindwings": 15998,
+ "flickered": 15999,
+ "kappa": 16000,
+ "##hel": 16001,
+ "80s": 16002,
+ "strengthening": 16003,
+ "appealing": 16004,
+ "brewing": 16005,
+ "gypsy": 16006,
+ "mali": 16007,
+ "lashes": 16008,
+ "hulk": 16009,
+ "unpleasant": 16010,
+ "harassment": 16011,
+ "bio": 16012,
+ "treaties": 16013,
+ "predict": 16014,
+ "instrumentation": 16015,
+ "pulp": 16016,
+ "troupe": 16017,
+ "boiling": 16018,
+ "mantle": 16019,
+ "##ffe": 16020,
+ "ins": 16021,
+ "##vn": 16022,
+ "dividing": 16023,
+ "handles": 16024,
+ "verbs": 16025,
+ "##onal": 16026,
+ "coconut": 16027,
+ "senegal": 16028,
+ "340": 16029,
+ "thorough": 16030,
+ "gum": 16031,
+ "momentarily": 16032,
+ "##sto": 16033,
+ "cocaine": 16034,
+ "panicked": 16035,
+ "destined": 16036,
+ "##turing": 16037,
+ "teatro": 16038,
+ "denying": 16039,
+ "weary": 16040,
+ "captained": 16041,
+ "mans": 16042,
+ "##hawks": 16043,
+ "##code": 16044,
+ "wakefield": 16045,
+ "bollywood": 16046,
+ "thankfully": 16047,
+ "##16": 16048,
+ "cyril": 16049,
+ "##wu": 16050,
+ "amendments": 16051,
+ "##bahn": 16052,
+ "consultation": 16053,
+ "stud": 16054,
+ "reflections": 16055,
+ "kindness": 16056,
+ "1787": 16057,
+ "internally": 16058,
+ "##ovo": 16059,
+ "tex": 16060,
+ "mosaic": 16061,
+ "distribute": 16062,
+ "paddy": 16063,
+ "seeming": 16064,
+ "143": 16065,
+ "##hic": 16066,
+ "piers": 16067,
+ "##15": 16068,
+ "##mura": 16069,
+ "##verse": 16070,
+ "popularly": 16071,
+ "winger": 16072,
+ "kang": 16073,
+ "sentinel": 16074,
+ "mccoy": 16075,
+ "##anza": 16076,
+ "covenant": 16077,
+ "##bag": 16078,
+ "verge": 16079,
+ "fireworks": 16080,
+ "suppress": 16081,
+ "thrilled": 16082,
+ "dominate": 16083,
+ "##jar": 16084,
+ "swansea": 16085,
+ "##60": 16086,
+ "142": 16087,
+ "reconciliation": 16088,
+ "##ndi": 16089,
+ "stiffened": 16090,
+ "cue": 16091,
+ "dorian": 16092,
+ "##uf": 16093,
+ "damascus": 16094,
+ "amor": 16095,
+ "ida": 16096,
+ "foremost": 16097,
+ "##aga": 16098,
+ "porsche": 16099,
+ "unseen": 16100,
+ "dir": 16101,
+ "##had": 16102,
+ "##azi": 16103,
+ "stony": 16104,
+ "lexi": 16105,
+ "melodies": 16106,
+ "##nko": 16107,
+ "angular": 16108,
+ "integer": 16109,
+ "podcast": 16110,
+ "ants": 16111,
+ "inherent": 16112,
+ "jaws": 16113,
+ "justify": 16114,
+ "persona": 16115,
+ "##olved": 16116,
+ "josephine": 16117,
+ "##nr": 16118,
+ "##ressed": 16119,
+ "customary": 16120,
+ "flashes": 16121,
+ "gala": 16122,
+ "cyrus": 16123,
+ "glaring": 16124,
+ "backyard": 16125,
+ "ariel": 16126,
+ "physiology": 16127,
+ "greenland": 16128,
+ "html": 16129,
+ "stir": 16130,
+ "avon": 16131,
+ "atletico": 16132,
+ "finch": 16133,
+ "methodology": 16134,
+ "ked": 16135,
+ "##lent": 16136,
+ "mas": 16137,
+ "catholicism": 16138,
+ "townsend": 16139,
+ "branding": 16140,
+ "quincy": 16141,
+ "fits": 16142,
+ "containers": 16143,
+ "1777": 16144,
+ "ashore": 16145,
+ "aragon": 16146,
+ "##19": 16147,
+ "forearm": 16148,
+ "poisoning": 16149,
+ "##sd": 16150,
+ "adopting": 16151,
+ "conquer": 16152,
+ "grinding": 16153,
+ "amnesty": 16154,
+ "keller": 16155,
+ "finances": 16156,
+ "evaluate": 16157,
+ "forged": 16158,
+ "lankan": 16159,
+ "instincts": 16160,
+ "##uto": 16161,
+ "guam": 16162,
+ "bosnian": 16163,
+ "photographed": 16164,
+ "workplace": 16165,
+ "desirable": 16166,
+ "protector": 16167,
+ "##dog": 16168,
+ "allocation": 16169,
+ "intently": 16170,
+ "encourages": 16171,
+ "willy": 16172,
+ "##sten": 16173,
+ "bodyguard": 16174,
+ "electro": 16175,
+ "brighter": 16176,
+ "##ν": 16177,
+ "bihar": 16178,
+ "##chev": 16179,
+ "lasts": 16180,
+ "opener": 16181,
+ "amphibious": 16182,
+ "sal": 16183,
+ "verde": 16184,
+ "arte": 16185,
+ "##cope": 16186,
+ "captivity": 16187,
+ "vocabulary": 16188,
+ "yields": 16189,
+ "##tted": 16190,
+ "agreeing": 16191,
+ "desmond": 16192,
+ "pioneered": 16193,
+ "##chus": 16194,
+ "strap": 16195,
+ "campaigned": 16196,
+ "railroads": 16197,
+ "##ович": 16198,
+ "emblem": 16199,
+ "##dre": 16200,
+ "stormed": 16201,
+ "501": 16202,
+ "##ulous": 16203,
+ "marijuana": 16204,
+ "northumberland": 16205,
+ "##gn": 16206,
+ "##nath": 16207,
+ "bowen": 16208,
+ "landmarks": 16209,
+ "beaumont": 16210,
+ "##qua": 16211,
+ "danube": 16212,
+ "##bler": 16213,
+ "attorneys": 16214,
+ "th": 16215,
+ "ge": 16216,
+ "flyers": 16217,
+ "critique": 16218,
+ "villains": 16219,
+ "cass": 16220,
+ "mutation": 16221,
+ "acc": 16222,
+ "##0s": 16223,
+ "colombo": 16224,
+ "mckay": 16225,
+ "motif": 16226,
+ "sampling": 16227,
+ "concluding": 16228,
+ "syndicate": 16229,
+ "##rell": 16230,
+ "neon": 16231,
+ "stables": 16232,
+ "ds": 16233,
+ "warnings": 16234,
+ "clint": 16235,
+ "mourning": 16236,
+ "wilkinson": 16237,
+ "##tated": 16238,
+ "merrill": 16239,
+ "leopard": 16240,
+ "evenings": 16241,
+ "exhaled": 16242,
+ "emil": 16243,
+ "sonia": 16244,
+ "ezra": 16245,
+ "discrete": 16246,
+ "stove": 16247,
+ "farrell": 16248,
+ "fifteenth": 16249,
+ "prescribed": 16250,
+ "superhero": 16251,
+ "##rier": 16252,
+ "worms": 16253,
+ "helm": 16254,
+ "wren": 16255,
+ "##duction": 16256,
+ "##hc": 16257,
+ "expo": 16258,
+ "##rator": 16259,
+ "hq": 16260,
+ "unfamiliar": 16261,
+ "antony": 16262,
+ "prevents": 16263,
+ "acceleration": 16264,
+ "fiercely": 16265,
+ "mari": 16266,
+ "painfully": 16267,
+ "calculations": 16268,
+ "cheaper": 16269,
+ "ign": 16270,
+ "clifton": 16271,
+ "irvine": 16272,
+ "davenport": 16273,
+ "mozambique": 16274,
+ "##np": 16275,
+ "pierced": 16276,
+ "##evich": 16277,
+ "wonders": 16278,
+ "##wig": 16279,
+ "##cate": 16280,
+ "##iling": 16281,
+ "crusade": 16282,
+ "ware": 16283,
+ "##uel": 16284,
+ "enzymes": 16285,
+ "reasonably": 16286,
+ "mls": 16287,
+ "##coe": 16288,
+ "mater": 16289,
+ "ambition": 16290,
+ "bunny": 16291,
+ "eliot": 16292,
+ "kernel": 16293,
+ "##fin": 16294,
+ "asphalt": 16295,
+ "headmaster": 16296,
+ "torah": 16297,
+ "aden": 16298,
+ "lush": 16299,
+ "pins": 16300,
+ "waived": 16301,
+ "##care": 16302,
+ "##yas": 16303,
+ "joao": 16304,
+ "substrate": 16305,
+ "enforce": 16306,
+ "##grad": 16307,
+ "##ules": 16308,
+ "alvarez": 16309,
+ "selections": 16310,
+ "epidemic": 16311,
+ "tempted": 16312,
+ "##bit": 16313,
+ "bremen": 16314,
+ "translates": 16315,
+ "ensured": 16316,
+ "waterfront": 16317,
+ "29th": 16318,
+ "forrest": 16319,
+ "manny": 16320,
+ "malone": 16321,
+ "kramer": 16322,
+ "reigning": 16323,
+ "cookies": 16324,
+ "simpler": 16325,
+ "absorption": 16326,
+ "205": 16327,
+ "engraved": 16328,
+ "##ffy": 16329,
+ "evaluated": 16330,
+ "1778": 16331,
+ "haze": 16332,
+ "146": 16333,
+ "comforting": 16334,
+ "crossover": 16335,
+ "##abe": 16336,
+ "thorn": 16337,
+ "##rift": 16338,
+ "##imo": 16339,
+ "##pop": 16340,
+ "suppression": 16341,
+ "fatigue": 16342,
+ "cutter": 16343,
+ "##tr": 16344,
+ "201": 16345,
+ "wurttemberg": 16346,
+ "##orf": 16347,
+ "enforced": 16348,
+ "hovering": 16349,
+ "proprietary": 16350,
+ "gb": 16351,
+ "samurai": 16352,
+ "syllable": 16353,
+ "ascent": 16354,
+ "lacey": 16355,
+ "tick": 16356,
+ "lars": 16357,
+ "tractor": 16358,
+ "merchandise": 16359,
+ "rep": 16360,
+ "bouncing": 16361,
+ "defendants": 16362,
+ "##yre": 16363,
+ "huntington": 16364,
+ "##ground": 16365,
+ "##oko": 16366,
+ "standardized": 16367,
+ "##hor": 16368,
+ "##hima": 16369,
+ "assassinated": 16370,
+ "nu": 16371,
+ "predecessors": 16372,
+ "rainy": 16373,
+ "liar": 16374,
+ "assurance": 16375,
+ "lyrical": 16376,
+ "##uga": 16377,
+ "secondly": 16378,
+ "flattened": 16379,
+ "ios": 16380,
+ "parameter": 16381,
+ "undercover": 16382,
+ "##mity": 16383,
+ "bordeaux": 16384,
+ "punish": 16385,
+ "ridges": 16386,
+ "markers": 16387,
+ "exodus": 16388,
+ "inactive": 16389,
+ "hesitate": 16390,
+ "debbie": 16391,
+ "nyc": 16392,
+ "pledge": 16393,
+ "savoy": 16394,
+ "nagar": 16395,
+ "offset": 16396,
+ "organist": 16397,
+ "##tium": 16398,
+ "hesse": 16399,
+ "marin": 16400,
+ "converting": 16401,
+ "##iver": 16402,
+ "diagram": 16403,
+ "propulsion": 16404,
+ "pu": 16405,
+ "validity": 16406,
+ "reverted": 16407,
+ "supportive": 16408,
+ "##dc": 16409,
+ "ministries": 16410,
+ "clans": 16411,
+ "responds": 16412,
+ "proclamation": 16413,
+ "##inae": 16414,
+ "##ø": 16415,
+ "##rea": 16416,
+ "ein": 16417,
+ "pleading": 16418,
+ "patriot": 16419,
+ "sf": 16420,
+ "birch": 16421,
+ "islanders": 16422,
+ "strauss": 16423,
+ "hates": 16424,
+ "##dh": 16425,
+ "brandenburg": 16426,
+ "concession": 16427,
+ "rd": 16428,
+ "##ob": 16429,
+ "1900s": 16430,
+ "killings": 16431,
+ "textbook": 16432,
+ "antiquity": 16433,
+ "cinematography": 16434,
+ "wharf": 16435,
+ "embarrassing": 16436,
+ "setup": 16437,
+ "creed": 16438,
+ "farmland": 16439,
+ "inequality": 16440,
+ "centred": 16441,
+ "signatures": 16442,
+ "fallon": 16443,
+ "370": 16444,
+ "##ingham": 16445,
+ "##uts": 16446,
+ "ceylon": 16447,
+ "gazing": 16448,
+ "directive": 16449,
+ "laurie": 16450,
+ "##tern": 16451,
+ "globally": 16452,
+ "##uated": 16453,
+ "##dent": 16454,
+ "allah": 16455,
+ "excavation": 16456,
+ "threads": 16457,
+ "##cross": 16458,
+ "148": 16459,
+ "frantically": 16460,
+ "icc": 16461,
+ "utilize": 16462,
+ "determines": 16463,
+ "respiratory": 16464,
+ "thoughtful": 16465,
+ "receptions": 16466,
+ "##dicate": 16467,
+ "merging": 16468,
+ "chandra": 16469,
+ "seine": 16470,
+ "147": 16471,
+ "builders": 16472,
+ "builds": 16473,
+ "diagnostic": 16474,
+ "dev": 16475,
+ "visibility": 16476,
+ "goddamn": 16477,
+ "analyses": 16478,
+ "dhaka": 16479,
+ "cho": 16480,
+ "proves": 16481,
+ "chancel": 16482,
+ "concurrent": 16483,
+ "curiously": 16484,
+ "canadians": 16485,
+ "pumped": 16486,
+ "restoring": 16487,
+ "1850s": 16488,
+ "turtles": 16489,
+ "jaguar": 16490,
+ "sinister": 16491,
+ "spinal": 16492,
+ "traction": 16493,
+ "declan": 16494,
+ "vows": 16495,
+ "1784": 16496,
+ "glowed": 16497,
+ "capitalism": 16498,
+ "swirling": 16499,
+ "install": 16500,
+ "universidad": 16501,
+ "##lder": 16502,
+ "##oat": 16503,
+ "soloist": 16504,
+ "##genic": 16505,
+ "##oor": 16506,
+ "coincidence": 16507,
+ "beginnings": 16508,
+ "nissan": 16509,
+ "dip": 16510,
+ "resorts": 16511,
+ "caucasus": 16512,
+ "combustion": 16513,
+ "infectious": 16514,
+ "##eno": 16515,
+ "pigeon": 16516,
+ "serpent": 16517,
+ "##itating": 16518,
+ "conclude": 16519,
+ "masked": 16520,
+ "salad": 16521,
+ "jew": 16522,
+ "##gr": 16523,
+ "surreal": 16524,
+ "toni": 16525,
+ "##wc": 16526,
+ "harmonica": 16527,
+ "151": 16528,
+ "##gins": 16529,
+ "##etic": 16530,
+ "##coat": 16531,
+ "fishermen": 16532,
+ "intending": 16533,
+ "bravery": 16534,
+ "##wave": 16535,
+ "klaus": 16536,
+ "titan": 16537,
+ "wembley": 16538,
+ "taiwanese": 16539,
+ "ransom": 16540,
+ "40th": 16541,
+ "incorrect": 16542,
+ "hussein": 16543,
+ "eyelids": 16544,
+ "jp": 16545,
+ "cooke": 16546,
+ "dramas": 16547,
+ "utilities": 16548,
+ "##etta": 16549,
+ "##print": 16550,
+ "eisenhower": 16551,
+ "principally": 16552,
+ "granada": 16553,
+ "lana": 16554,
+ "##rak": 16555,
+ "openings": 16556,
+ "concord": 16557,
+ "##bl": 16558,
+ "bethany": 16559,
+ "connie": 16560,
+ "morality": 16561,
+ "sega": 16562,
+ "##mons": 16563,
+ "##nard": 16564,
+ "earnings": 16565,
+ "##kara": 16566,
+ "##cine": 16567,
+ "wii": 16568,
+ "communes": 16569,
+ "##rel": 16570,
+ "coma": 16571,
+ "composing": 16572,
+ "softened": 16573,
+ "severed": 16574,
+ "grapes": 16575,
+ "##17": 16576,
+ "nguyen": 16577,
+ "analyzed": 16578,
+ "warlord": 16579,
+ "hubbard": 16580,
+ "heavenly": 16581,
+ "behave": 16582,
+ "slovenian": 16583,
+ "##hit": 16584,
+ "##ony": 16585,
+ "hailed": 16586,
+ "filmmakers": 16587,
+ "trance": 16588,
+ "caldwell": 16589,
+ "skye": 16590,
+ "unrest": 16591,
+ "coward": 16592,
+ "likelihood": 16593,
+ "##aging": 16594,
+ "bern": 16595,
+ "sci": 16596,
+ "taliban": 16597,
+ "honolulu": 16598,
+ "propose": 16599,
+ "##wang": 16600,
+ "1700": 16601,
+ "browser": 16602,
+ "imagining": 16603,
+ "cobra": 16604,
+ "contributes": 16605,
+ "dukes": 16606,
+ "instinctively": 16607,
+ "conan": 16608,
+ "violinist": 16609,
+ "##ores": 16610,
+ "accessories": 16611,
+ "gradual": 16612,
+ "##amp": 16613,
+ "quotes": 16614,
+ "sioux": 16615,
+ "##dating": 16616,
+ "undertake": 16617,
+ "intercepted": 16618,
+ "sparkling": 16619,
+ "compressed": 16620,
+ "139": 16621,
+ "fungus": 16622,
+ "tombs": 16623,
+ "haley": 16624,
+ "imposing": 16625,
+ "rests": 16626,
+ "degradation": 16627,
+ "lincolnshire": 16628,
+ "retailers": 16629,
+ "wetlands": 16630,
+ "tulsa": 16631,
+ "distributor": 16632,
+ "dungeon": 16633,
+ "nun": 16634,
+ "greenhouse": 16635,
+ "convey": 16636,
+ "atlantis": 16637,
+ "aft": 16638,
+ "exits": 16639,
+ "oman": 16640,
+ "dresser": 16641,
+ "lyons": 16642,
+ "##sti": 16643,
+ "joking": 16644,
+ "eddy": 16645,
+ "judgement": 16646,
+ "omitted": 16647,
+ "digits": 16648,
+ "##cts": 16649,
+ "##game": 16650,
+ "juniors": 16651,
+ "##rae": 16652,
+ "cents": 16653,
+ "stricken": 16654,
+ "une": 16655,
+ "##ngo": 16656,
+ "wizards": 16657,
+ "weir": 16658,
+ "breton": 16659,
+ "nan": 16660,
+ "technician": 16661,
+ "fibers": 16662,
+ "liking": 16663,
+ "royalty": 16664,
+ "##cca": 16665,
+ "154": 16666,
+ "persia": 16667,
+ "terribly": 16668,
+ "magician": 16669,
+ "##rable": 16670,
+ "##unt": 16671,
+ "vance": 16672,
+ "cafeteria": 16673,
+ "booker": 16674,
+ "camille": 16675,
+ "warmer": 16676,
+ "##static": 16677,
+ "consume": 16678,
+ "cavern": 16679,
+ "gaps": 16680,
+ "compass": 16681,
+ "contemporaries": 16682,
+ "foyer": 16683,
+ "soothing": 16684,
+ "graveyard": 16685,
+ "maj": 16686,
+ "plunged": 16687,
+ "blush": 16688,
+ "##wear": 16689,
+ "cascade": 16690,
+ "demonstrates": 16691,
+ "ordinance": 16692,
+ "##nov": 16693,
+ "boyle": 16694,
+ "##lana": 16695,
+ "rockefeller": 16696,
+ "shaken": 16697,
+ "banjo": 16698,
+ "izzy": 16699,
+ "##ense": 16700,
+ "breathless": 16701,
+ "vines": 16702,
+ "##32": 16703,
+ "##eman": 16704,
+ "alterations": 16705,
+ "chromosome": 16706,
+ "dwellings": 16707,
+ "feudal": 16708,
+ "mole": 16709,
+ "153": 16710,
+ "catalonia": 16711,
+ "relics": 16712,
+ "tenant": 16713,
+ "mandated": 16714,
+ "##fm": 16715,
+ "fridge": 16716,
+ "hats": 16717,
+ "honesty": 16718,
+ "patented": 16719,
+ "raul": 16720,
+ "heap": 16721,
+ "cruisers": 16722,
+ "accusing": 16723,
+ "enlightenment": 16724,
+ "infants": 16725,
+ "wherein": 16726,
+ "chatham": 16727,
+ "contractors": 16728,
+ "zen": 16729,
+ "affinity": 16730,
+ "hc": 16731,
+ "osborne": 16732,
+ "piston": 16733,
+ "156": 16734,
+ "traps": 16735,
+ "maturity": 16736,
+ "##rana": 16737,
+ "lagos": 16738,
+ "##zal": 16739,
+ "peering": 16740,
+ "##nay": 16741,
+ "attendant": 16742,
+ "dealers": 16743,
+ "protocols": 16744,
+ "subset": 16745,
+ "prospects": 16746,
+ "biographical": 16747,
+ "##cre": 16748,
+ "artery": 16749,
+ "##zers": 16750,
+ "insignia": 16751,
+ "nuns": 16752,
+ "endured": 16753,
+ "##eration": 16754,
+ "recommend": 16755,
+ "schwartz": 16756,
+ "serbs": 16757,
+ "berger": 16758,
+ "cromwell": 16759,
+ "crossroads": 16760,
+ "##ctor": 16761,
+ "enduring": 16762,
+ "clasped": 16763,
+ "grounded": 16764,
+ "##bine": 16765,
+ "marseille": 16766,
+ "twitched": 16767,
+ "abel": 16768,
+ "choke": 16769,
+ "https": 16770,
+ "catalyst": 16771,
+ "moldova": 16772,
+ "italians": 16773,
+ "##tist": 16774,
+ "disastrous": 16775,
+ "wee": 16776,
+ "##oured": 16777,
+ "##nti": 16778,
+ "wwf": 16779,
+ "nope": 16780,
+ "##piration": 16781,
+ "##asa": 16782,
+ "expresses": 16783,
+ "thumbs": 16784,
+ "167": 16785,
+ "##nza": 16786,
+ "coca": 16787,
+ "1781": 16788,
+ "cheating": 16789,
+ "##ption": 16790,
+ "skipped": 16791,
+ "sensory": 16792,
+ "heidelberg": 16793,
+ "spies": 16794,
+ "satan": 16795,
+ "dangers": 16796,
+ "semifinal": 16797,
+ "202": 16798,
+ "bohemia": 16799,
+ "whitish": 16800,
+ "confusing": 16801,
+ "shipbuilding": 16802,
+ "relies": 16803,
+ "surgeons": 16804,
+ "landings": 16805,
+ "ravi": 16806,
+ "baku": 16807,
+ "moor": 16808,
+ "suffix": 16809,
+ "alejandro": 16810,
+ "##yana": 16811,
+ "litre": 16812,
+ "upheld": 16813,
+ "##unk": 16814,
+ "rajasthan": 16815,
+ "##rek": 16816,
+ "coaster": 16817,
+ "insists": 16818,
+ "posture": 16819,
+ "scenarios": 16820,
+ "etienne": 16821,
+ "favoured": 16822,
+ "appoint": 16823,
+ "transgender": 16824,
+ "elephants": 16825,
+ "poked": 16826,
+ "greenwood": 16827,
+ "defences": 16828,
+ "fulfilled": 16829,
+ "militant": 16830,
+ "somali": 16831,
+ "1758": 16832,
+ "chalk": 16833,
+ "potent": 16834,
+ "##ucci": 16835,
+ "migrants": 16836,
+ "wink": 16837,
+ "assistants": 16838,
+ "nos": 16839,
+ "restriction": 16840,
+ "activism": 16841,
+ "niger": 16842,
+ "##ario": 16843,
+ "colon": 16844,
+ "shaun": 16845,
+ "##sat": 16846,
+ "daphne": 16847,
+ "##erated": 16848,
+ "swam": 16849,
+ "congregations": 16850,
+ "reprise": 16851,
+ "considerations": 16852,
+ "magnet": 16853,
+ "playable": 16854,
+ "xvi": 16855,
+ "##р": 16856,
+ "overthrow": 16857,
+ "tobias": 16858,
+ "knob": 16859,
+ "chavez": 16860,
+ "coding": 16861,
+ "##mers": 16862,
+ "propped": 16863,
+ "katrina": 16864,
+ "orient": 16865,
+ "newcomer": 16866,
+ "##suke": 16867,
+ "temperate": 16868,
+ "##pool": 16869,
+ "farmhouse": 16870,
+ "interrogation": 16871,
+ "##vd": 16872,
+ "committing": 16873,
+ "##vert": 16874,
+ "forthcoming": 16875,
+ "strawberry": 16876,
+ "joaquin": 16877,
+ "macau": 16878,
+ "ponds": 16879,
+ "shocking": 16880,
+ "siberia": 16881,
+ "##cellular": 16882,
+ "chant": 16883,
+ "contributors": 16884,
+ "##nant": 16885,
+ "##ologists": 16886,
+ "sped": 16887,
+ "absorb": 16888,
+ "hail": 16889,
+ "1782": 16890,
+ "spared": 16891,
+ "##hore": 16892,
+ "barbados": 16893,
+ "karate": 16894,
+ "opus": 16895,
+ "originates": 16896,
+ "saul": 16897,
+ "##xie": 16898,
+ "evergreen": 16899,
+ "leaped": 16900,
+ "##rock": 16901,
+ "correlation": 16902,
+ "exaggerated": 16903,
+ "weekday": 16904,
+ "unification": 16905,
+ "bump": 16906,
+ "tracing": 16907,
+ "brig": 16908,
+ "afb": 16909,
+ "pathways": 16910,
+ "utilizing": 16911,
+ "##ners": 16912,
+ "mod": 16913,
+ "mb": 16914,
+ "disturbance": 16915,
+ "kneeling": 16916,
+ "##stad": 16917,
+ "##guchi": 16918,
+ "100th": 16919,
+ "pune": 16920,
+ "##thy": 16921,
+ "decreasing": 16922,
+ "168": 16923,
+ "manipulation": 16924,
+ "miriam": 16925,
+ "academia": 16926,
+ "ecosystem": 16927,
+ "occupational": 16928,
+ "rbi": 16929,
+ "##lem": 16930,
+ "rift": 16931,
+ "##14": 16932,
+ "rotary": 16933,
+ "stacked": 16934,
+ "incorporation": 16935,
+ "awakening": 16936,
+ "generators": 16937,
+ "guerrero": 16938,
+ "racist": 16939,
+ "##omy": 16940,
+ "cyber": 16941,
+ "derivatives": 16942,
+ "culminated": 16943,
+ "allie": 16944,
+ "annals": 16945,
+ "panzer": 16946,
+ "sainte": 16947,
+ "wikipedia": 16948,
+ "pops": 16949,
+ "zu": 16950,
+ "austro": 16951,
+ "##vate": 16952,
+ "algerian": 16953,
+ "politely": 16954,
+ "nicholson": 16955,
+ "mornings": 16956,
+ "educate": 16957,
+ "tastes": 16958,
+ "thrill": 16959,
+ "dartmouth": 16960,
+ "##gating": 16961,
+ "db": 16962,
+ "##jee": 16963,
+ "regan": 16964,
+ "differing": 16965,
+ "concentrating": 16966,
+ "choreography": 16967,
+ "divinity": 16968,
+ "##media": 16969,
+ "pledged": 16970,
+ "alexandre": 16971,
+ "routing": 16972,
+ "gregor": 16973,
+ "madeline": 16974,
+ "##idal": 16975,
+ "apocalypse": 16976,
+ "##hora": 16977,
+ "gunfire": 16978,
+ "culminating": 16979,
+ "elves": 16980,
+ "fined": 16981,
+ "liang": 16982,
+ "lam": 16983,
+ "programmed": 16984,
+ "tar": 16985,
+ "guessing": 16986,
+ "transparency": 16987,
+ "gabrielle": 16988,
+ "##gna": 16989,
+ "cancellation": 16990,
+ "flexibility": 16991,
+ "##lining": 16992,
+ "accession": 16993,
+ "shea": 16994,
+ "stronghold": 16995,
+ "nets": 16996,
+ "specializes": 16997,
+ "##rgan": 16998,
+ "abused": 16999,
+ "hasan": 17000,
+ "sgt": 17001,
+ "ling": 17002,
+ "exceeding": 17003,
+ "##₄": 17004,
+ "admiration": 17005,
+ "supermarket": 17006,
+ "##ark": 17007,
+ "photographers": 17008,
+ "specialised": 17009,
+ "tilt": 17010,
+ "resonance": 17011,
+ "hmm": 17012,
+ "perfume": 17013,
+ "380": 17014,
+ "sami": 17015,
+ "threatens": 17016,
+ "garland": 17017,
+ "botany": 17018,
+ "guarding": 17019,
+ "boiled": 17020,
+ "greet": 17021,
+ "puppy": 17022,
+ "russo": 17023,
+ "supplier": 17024,
+ "wilmington": 17025,
+ "vibrant": 17026,
+ "vijay": 17027,
+ "##bius": 17028,
+ "paralympic": 17029,
+ "grumbled": 17030,
+ "paige": 17031,
+ "faa": 17032,
+ "licking": 17033,
+ "margins": 17034,
+ "hurricanes": 17035,
+ "##gong": 17036,
+ "fest": 17037,
+ "grenade": 17038,
+ "ripping": 17039,
+ "##uz": 17040,
+ "counseling": 17041,
+ "weigh": 17042,
+ "##sian": 17043,
+ "needles": 17044,
+ "wiltshire": 17045,
+ "edison": 17046,
+ "costly": 17047,
+ "##not": 17048,
+ "fulton": 17049,
+ "tramway": 17050,
+ "redesigned": 17051,
+ "staffordshire": 17052,
+ "cache": 17053,
+ "gasping": 17054,
+ "watkins": 17055,
+ "sleepy": 17056,
+ "candidacy": 17057,
+ "##group": 17058,
+ "monkeys": 17059,
+ "timeline": 17060,
+ "throbbing": 17061,
+ "##bid": 17062,
+ "##sos": 17063,
+ "berth": 17064,
+ "uzbekistan": 17065,
+ "vanderbilt": 17066,
+ "bothering": 17067,
+ "overturned": 17068,
+ "ballots": 17069,
+ "gem": 17070,
+ "##iger": 17071,
+ "sunglasses": 17072,
+ "subscribers": 17073,
+ "hooker": 17074,
+ "compelling": 17075,
+ "ang": 17076,
+ "exceptionally": 17077,
+ "saloon": 17078,
+ "stab": 17079,
+ "##rdi": 17080,
+ "carla": 17081,
+ "terrifying": 17082,
+ "rom": 17083,
+ "##vision": 17084,
+ "coil": 17085,
+ "##oids": 17086,
+ "satisfying": 17087,
+ "vendors": 17088,
+ "31st": 17089,
+ "mackay": 17090,
+ "deities": 17091,
+ "overlooked": 17092,
+ "ambient": 17093,
+ "bahamas": 17094,
+ "felipe": 17095,
+ "olympia": 17096,
+ "whirled": 17097,
+ "botanist": 17098,
+ "advertised": 17099,
+ "tugging": 17100,
+ "##dden": 17101,
+ "disciples": 17102,
+ "morales": 17103,
+ "unionist": 17104,
+ "rites": 17105,
+ "foley": 17106,
+ "morse": 17107,
+ "motives": 17108,
+ "creepy": 17109,
+ "##₀": 17110,
+ "soo": 17111,
+ "##sz": 17112,
+ "bargain": 17113,
+ "highness": 17114,
+ "frightening": 17115,
+ "turnpike": 17116,
+ "tory": 17117,
+ "reorganization": 17118,
+ "##cer": 17119,
+ "depict": 17120,
+ "biographer": 17121,
+ "##walk": 17122,
+ "unopposed": 17123,
+ "manifesto": 17124,
+ "##gles": 17125,
+ "institut": 17126,
+ "emile": 17127,
+ "accidental": 17128,
+ "kapoor": 17129,
+ "##dam": 17130,
+ "kilkenny": 17131,
+ "cortex": 17132,
+ "lively": 17133,
+ "##13": 17134,
+ "romanesque": 17135,
+ "jain": 17136,
+ "shan": 17137,
+ "cannons": 17138,
+ "##ood": 17139,
+ "##ske": 17140,
+ "petrol": 17141,
+ "echoing": 17142,
+ "amalgamated": 17143,
+ "disappears": 17144,
+ "cautious": 17145,
+ "proposes": 17146,
+ "sanctions": 17147,
+ "trenton": 17148,
+ "##ر": 17149,
+ "flotilla": 17150,
+ "aus": 17151,
+ "contempt": 17152,
+ "tor": 17153,
+ "canary": 17154,
+ "cote": 17155,
+ "theirs": 17156,
+ "##hun": 17157,
+ "conceptual": 17158,
+ "deleted": 17159,
+ "fascinating": 17160,
+ "paso": 17161,
+ "blazing": 17162,
+ "elf": 17163,
+ "honourable": 17164,
+ "hutchinson": 17165,
+ "##eiro": 17166,
+ "##outh": 17167,
+ "##zin": 17168,
+ "surveyor": 17169,
+ "tee": 17170,
+ "amidst": 17171,
+ "wooded": 17172,
+ "reissue": 17173,
+ "intro": 17174,
+ "##ono": 17175,
+ "cobb": 17176,
+ "shelters": 17177,
+ "newsletter": 17178,
+ "hanson": 17179,
+ "brace": 17180,
+ "encoding": 17181,
+ "confiscated": 17182,
+ "dem": 17183,
+ "caravan": 17184,
+ "marino": 17185,
+ "scroll": 17186,
+ "melodic": 17187,
+ "cows": 17188,
+ "imam": 17189,
+ "##adi": 17190,
+ "##aneous": 17191,
+ "northward": 17192,
+ "searches": 17193,
+ "biodiversity": 17194,
+ "cora": 17195,
+ "310": 17196,
+ "roaring": 17197,
+ "##bers": 17198,
+ "connell": 17199,
+ "theologian": 17200,
+ "halo": 17201,
+ "compose": 17202,
+ "pathetic": 17203,
+ "unmarried": 17204,
+ "dynamo": 17205,
+ "##oot": 17206,
+ "az": 17207,
+ "calculation": 17208,
+ "toulouse": 17209,
+ "deserves": 17210,
+ "humour": 17211,
+ "nr": 17212,
+ "forgiveness": 17213,
+ "tam": 17214,
+ "undergone": 17215,
+ "martyr": 17216,
+ "pamela": 17217,
+ "myths": 17218,
+ "whore": 17219,
+ "counselor": 17220,
+ "hicks": 17221,
+ "290": 17222,
+ "heavens": 17223,
+ "battleship": 17224,
+ "electromagnetic": 17225,
+ "##bbs": 17226,
+ "stellar": 17227,
+ "establishments": 17228,
+ "presley": 17229,
+ "hopped": 17230,
+ "##chin": 17231,
+ "temptation": 17232,
+ "90s": 17233,
+ "wills": 17234,
+ "nas": 17235,
+ "##yuan": 17236,
+ "nhs": 17237,
+ "##nya": 17238,
+ "seminars": 17239,
+ "##yev": 17240,
+ "adaptations": 17241,
+ "gong": 17242,
+ "asher": 17243,
+ "lex": 17244,
+ "indicator": 17245,
+ "sikh": 17246,
+ "tobago": 17247,
+ "cites": 17248,
+ "goin": 17249,
+ "##yte": 17250,
+ "satirical": 17251,
+ "##gies": 17252,
+ "characterised": 17253,
+ "correspond": 17254,
+ "bubbles": 17255,
+ "lure": 17256,
+ "participates": 17257,
+ "##vid": 17258,
+ "eruption": 17259,
+ "skate": 17260,
+ "therapeutic": 17261,
+ "1785": 17262,
+ "canals": 17263,
+ "wholesale": 17264,
+ "defaulted": 17265,
+ "sac": 17266,
+ "460": 17267,
+ "petit": 17268,
+ "##zzled": 17269,
+ "virgil": 17270,
+ "leak": 17271,
+ "ravens": 17272,
+ "256": 17273,
+ "portraying": 17274,
+ "##yx": 17275,
+ "ghetto": 17276,
+ "creators": 17277,
+ "dams": 17278,
+ "portray": 17279,
+ "vicente": 17280,
+ "##rington": 17281,
+ "fae": 17282,
+ "namesake": 17283,
+ "bounty": 17284,
+ "##arium": 17285,
+ "joachim": 17286,
+ "##ota": 17287,
+ "##iser": 17288,
+ "aforementioned": 17289,
+ "axle": 17290,
+ "snout": 17291,
+ "depended": 17292,
+ "dismantled": 17293,
+ "reuben": 17294,
+ "480": 17295,
+ "##ibly": 17296,
+ "gallagher": 17297,
+ "##lau": 17298,
+ "##pd": 17299,
+ "earnest": 17300,
+ "##ieu": 17301,
+ "##iary": 17302,
+ "inflicted": 17303,
+ "objections": 17304,
+ "##llar": 17305,
+ "asa": 17306,
+ "gritted": 17307,
+ "##athy": 17308,
+ "jericho": 17309,
+ "##sea": 17310,
+ "##was": 17311,
+ "flick": 17312,
+ "underside": 17313,
+ "ceramics": 17314,
+ "undead": 17315,
+ "substituted": 17316,
+ "195": 17317,
+ "eastward": 17318,
+ "undoubtedly": 17319,
+ "wheeled": 17320,
+ "chimney": 17321,
+ "##iche": 17322,
+ "guinness": 17323,
+ "cb": 17324,
+ "##ager": 17325,
+ "siding": 17326,
+ "##bell": 17327,
+ "traitor": 17328,
+ "baptiste": 17329,
+ "disguised": 17330,
+ "inauguration": 17331,
+ "149": 17332,
+ "tipperary": 17333,
+ "choreographer": 17334,
+ "perched": 17335,
+ "warmed": 17336,
+ "stationary": 17337,
+ "eco": 17338,
+ "##ike": 17339,
+ "##ntes": 17340,
+ "bacterial": 17341,
+ "##aurus": 17342,
+ "flores": 17343,
+ "phosphate": 17344,
+ "##core": 17345,
+ "attacker": 17346,
+ "invaders": 17347,
+ "alvin": 17348,
+ "intersects": 17349,
+ "a1": 17350,
+ "indirectly": 17351,
+ "immigrated": 17352,
+ "businessmen": 17353,
+ "cornelius": 17354,
+ "valves": 17355,
+ "narrated": 17356,
+ "pill": 17357,
+ "sober": 17358,
+ "ul": 17359,
+ "nationale": 17360,
+ "monastic": 17361,
+ "applicants": 17362,
+ "scenery": 17363,
+ "##jack": 17364,
+ "161": 17365,
+ "motifs": 17366,
+ "constitutes": 17367,
+ "cpu": 17368,
+ "##osh": 17369,
+ "jurisdictions": 17370,
+ "sd": 17371,
+ "tuning": 17372,
+ "irritation": 17373,
+ "woven": 17374,
+ "##uddin": 17375,
+ "fertility": 17376,
+ "gao": 17377,
+ "##erie": 17378,
+ "antagonist": 17379,
+ "impatient": 17380,
+ "glacial": 17381,
+ "hides": 17382,
+ "boarded": 17383,
+ "denominations": 17384,
+ "interception": 17385,
+ "##jas": 17386,
+ "cookie": 17387,
+ "nicola": 17388,
+ "##tee": 17389,
+ "algebraic": 17390,
+ "marquess": 17391,
+ "bahn": 17392,
+ "parole": 17393,
+ "buyers": 17394,
+ "bait": 17395,
+ "turbines": 17396,
+ "paperwork": 17397,
+ "bestowed": 17398,
+ "natasha": 17399,
+ "renee": 17400,
+ "oceans": 17401,
+ "purchases": 17402,
+ "157": 17403,
+ "vaccine": 17404,
+ "215": 17405,
+ "##tock": 17406,
+ "fixtures": 17407,
+ "playhouse": 17408,
+ "integrate": 17409,
+ "jai": 17410,
+ "oswald": 17411,
+ "intellectuals": 17412,
+ "##cky": 17413,
+ "booked": 17414,
+ "nests": 17415,
+ "mortimer": 17416,
+ "##isi": 17417,
+ "obsession": 17418,
+ "sept": 17419,
+ "##gler": 17420,
+ "##sum": 17421,
+ "440": 17422,
+ "scrutiny": 17423,
+ "simultaneous": 17424,
+ "squinted": 17425,
+ "##shin": 17426,
+ "collects": 17427,
+ "oven": 17428,
+ "shankar": 17429,
+ "penned": 17430,
+ "remarkably": 17431,
+ "##я": 17432,
+ "slips": 17433,
+ "luggage": 17434,
+ "spectral": 17435,
+ "1786": 17436,
+ "collaborations": 17437,
+ "louie": 17438,
+ "consolidation": 17439,
+ "##ailed": 17440,
+ "##ivating": 17441,
+ "420": 17442,
+ "hoover": 17443,
+ "blackpool": 17444,
+ "harness": 17445,
+ "ignition": 17446,
+ "vest": 17447,
+ "tails": 17448,
+ "belmont": 17449,
+ "mongol": 17450,
+ "skinner": 17451,
+ "##nae": 17452,
+ "visually": 17453,
+ "mage": 17454,
+ "derry": 17455,
+ "##tism": 17456,
+ "##unce": 17457,
+ "stevie": 17458,
+ "transitional": 17459,
+ "##rdy": 17460,
+ "redskins": 17461,
+ "drying": 17462,
+ "prep": 17463,
+ "prospective": 17464,
+ "##21": 17465,
+ "annoyance": 17466,
+ "oversee": 17467,
+ "##loaded": 17468,
+ "fills": 17469,
+ "##books": 17470,
+ "##iki": 17471,
+ "announces": 17472,
+ "fda": 17473,
+ "scowled": 17474,
+ "respects": 17475,
+ "prasad": 17476,
+ "mystic": 17477,
+ "tucson": 17478,
+ "##vale": 17479,
+ "revue": 17480,
+ "springer": 17481,
+ "bankrupt": 17482,
+ "1772": 17483,
+ "aristotle": 17484,
+ "salvatore": 17485,
+ "habsburg": 17486,
+ "##geny": 17487,
+ "dal": 17488,
+ "natal": 17489,
+ "nut": 17490,
+ "pod": 17491,
+ "chewing": 17492,
+ "darts": 17493,
+ "moroccan": 17494,
+ "walkover": 17495,
+ "rosario": 17496,
+ "lenin": 17497,
+ "punjabi": 17498,
+ "##ße": 17499,
+ "grossed": 17500,
+ "scattering": 17501,
+ "wired": 17502,
+ "invasive": 17503,
+ "hui": 17504,
+ "polynomial": 17505,
+ "corridors": 17506,
+ "wakes": 17507,
+ "gina": 17508,
+ "portrays": 17509,
+ "##cratic": 17510,
+ "arid": 17511,
+ "retreating": 17512,
+ "erich": 17513,
+ "irwin": 17514,
+ "sniper": 17515,
+ "##dha": 17516,
+ "linen": 17517,
+ "lindsey": 17518,
+ "maneuver": 17519,
+ "butch": 17520,
+ "shutting": 17521,
+ "socio": 17522,
+ "bounce": 17523,
+ "commemorative": 17524,
+ "postseason": 17525,
+ "jeremiah": 17526,
+ "pines": 17527,
+ "275": 17528,
+ "mystical": 17529,
+ "beads": 17530,
+ "bp": 17531,
+ "abbas": 17532,
+ "furnace": 17533,
+ "bidding": 17534,
+ "consulted": 17535,
+ "assaulted": 17536,
+ "empirical": 17537,
+ "rubble": 17538,
+ "enclosure": 17539,
+ "sob": 17540,
+ "weakly": 17541,
+ "cancel": 17542,
+ "polly": 17543,
+ "yielded": 17544,
+ "##emann": 17545,
+ "curly": 17546,
+ "prediction": 17547,
+ "battered": 17548,
+ "70s": 17549,
+ "vhs": 17550,
+ "jacqueline": 17551,
+ "render": 17552,
+ "sails": 17553,
+ "barked": 17554,
+ "detailing": 17555,
+ "grayson": 17556,
+ "riga": 17557,
+ "sloane": 17558,
+ "raging": 17559,
+ "##yah": 17560,
+ "herbs": 17561,
+ "bravo": 17562,
+ "##athlon": 17563,
+ "alloy": 17564,
+ "giggle": 17565,
+ "imminent": 17566,
+ "suffers": 17567,
+ "assumptions": 17568,
+ "waltz": 17569,
+ "##itate": 17570,
+ "accomplishments": 17571,
+ "##ited": 17572,
+ "bathing": 17573,
+ "remixed": 17574,
+ "deception": 17575,
+ "prefix": 17576,
+ "##emia": 17577,
+ "deepest": 17578,
+ "##tier": 17579,
+ "##eis": 17580,
+ "balkan": 17581,
+ "frogs": 17582,
+ "##rong": 17583,
+ "slab": 17584,
+ "##pate": 17585,
+ "philosophers": 17586,
+ "peterborough": 17587,
+ "grains": 17588,
+ "imports": 17589,
+ "dickinson": 17590,
+ "rwanda": 17591,
+ "##atics": 17592,
+ "1774": 17593,
+ "dirk": 17594,
+ "lan": 17595,
+ "tablets": 17596,
+ "##rove": 17597,
+ "clone": 17598,
+ "##rice": 17599,
+ "caretaker": 17600,
+ "hostilities": 17601,
+ "mclean": 17602,
+ "##gre": 17603,
+ "regimental": 17604,
+ "treasures": 17605,
+ "norms": 17606,
+ "impose": 17607,
+ "tsar": 17608,
+ "tango": 17609,
+ "diplomacy": 17610,
+ "variously": 17611,
+ "complain": 17612,
+ "192": 17613,
+ "recognise": 17614,
+ "arrests": 17615,
+ "1779": 17616,
+ "celestial": 17617,
+ "pulitzer": 17618,
+ "##dus": 17619,
+ "bing": 17620,
+ "libretto": 17621,
+ "##moor": 17622,
+ "adele": 17623,
+ "splash": 17624,
+ "##rite": 17625,
+ "expectation": 17626,
+ "lds": 17627,
+ "confronts": 17628,
+ "##izer": 17629,
+ "spontaneous": 17630,
+ "harmful": 17631,
+ "wedge": 17632,
+ "entrepreneurs": 17633,
+ "buyer": 17634,
+ "##ope": 17635,
+ "bilingual": 17636,
+ "translate": 17637,
+ "rugged": 17638,
+ "conner": 17639,
+ "circulated": 17640,
+ "uae": 17641,
+ "eaton": 17642,
+ "##gra": 17643,
+ "##zzle": 17644,
+ "lingered": 17645,
+ "lockheed": 17646,
+ "vishnu": 17647,
+ "reelection": 17648,
+ "alonso": 17649,
+ "##oom": 17650,
+ "joints": 17651,
+ "yankee": 17652,
+ "headline": 17653,
+ "cooperate": 17654,
+ "heinz": 17655,
+ "laureate": 17656,
+ "invading": 17657,
+ "##sford": 17658,
+ "echoes": 17659,
+ "scandinavian": 17660,
+ "##dham": 17661,
+ "hugging": 17662,
+ "vitamin": 17663,
+ "salute": 17664,
+ "micah": 17665,
+ "hind": 17666,
+ "trader": 17667,
+ "##sper": 17668,
+ "radioactive": 17669,
+ "##ndra": 17670,
+ "militants": 17671,
+ "poisoned": 17672,
+ "ratified": 17673,
+ "remark": 17674,
+ "campeonato": 17675,
+ "deprived": 17676,
+ "wander": 17677,
+ "prop": 17678,
+ "##dong": 17679,
+ "outlook": 17680,
+ "##tani": 17681,
+ "##rix": 17682,
+ "##eye": 17683,
+ "chiang": 17684,
+ "darcy": 17685,
+ "##oping": 17686,
+ "mandolin": 17687,
+ "spice": 17688,
+ "statesman": 17689,
+ "babylon": 17690,
+ "182": 17691,
+ "walled": 17692,
+ "forgetting": 17693,
+ "afro": 17694,
+ "##cap": 17695,
+ "158": 17696,
+ "giorgio": 17697,
+ "buffer": 17698,
+ "##polis": 17699,
+ "planetary": 17700,
+ "##gis": 17701,
+ "overlap": 17702,
+ "terminals": 17703,
+ "kinda": 17704,
+ "centenary": 17705,
+ "##bir": 17706,
+ "arising": 17707,
+ "manipulate": 17708,
+ "elm": 17709,
+ "ke": 17710,
+ "1770": 17711,
+ "ak": 17712,
+ "##tad": 17713,
+ "chrysler": 17714,
+ "mapped": 17715,
+ "moose": 17716,
+ "pomeranian": 17717,
+ "quad": 17718,
+ "macarthur": 17719,
+ "assemblies": 17720,
+ "shoreline": 17721,
+ "recalls": 17722,
+ "stratford": 17723,
+ "##rted": 17724,
+ "noticeable": 17725,
+ "##evic": 17726,
+ "imp": 17727,
+ "##rita": 17728,
+ "##sque": 17729,
+ "accustomed": 17730,
+ "supplying": 17731,
+ "tents": 17732,
+ "disgusted": 17733,
+ "vogue": 17734,
+ "sipped": 17735,
+ "filters": 17736,
+ "khz": 17737,
+ "reno": 17738,
+ "selecting": 17739,
+ "luftwaffe": 17740,
+ "mcmahon": 17741,
+ "tyne": 17742,
+ "masterpiece": 17743,
+ "carriages": 17744,
+ "collided": 17745,
+ "dunes": 17746,
+ "exercised": 17747,
+ "flare": 17748,
+ "remembers": 17749,
+ "muzzle": 17750,
+ "##mobile": 17751,
+ "heck": 17752,
+ "##rson": 17753,
+ "burgess": 17754,
+ "lunged": 17755,
+ "middleton": 17756,
+ "boycott": 17757,
+ "bilateral": 17758,
+ "##sity": 17759,
+ "hazardous": 17760,
+ "lumpur": 17761,
+ "multiplayer": 17762,
+ "spotlight": 17763,
+ "jackets": 17764,
+ "goldman": 17765,
+ "liege": 17766,
+ "porcelain": 17767,
+ "rag": 17768,
+ "waterford": 17769,
+ "benz": 17770,
+ "attracts": 17771,
+ "hopeful": 17772,
+ "battling": 17773,
+ "ottomans": 17774,
+ "kensington": 17775,
+ "baked": 17776,
+ "hymns": 17777,
+ "cheyenne": 17778,
+ "lattice": 17779,
+ "levine": 17780,
+ "borrow": 17781,
+ "polymer": 17782,
+ "clashes": 17783,
+ "michaels": 17784,
+ "monitored": 17785,
+ "commitments": 17786,
+ "denounced": 17787,
+ "##25": 17788,
+ "##von": 17789,
+ "cavity": 17790,
+ "##oney": 17791,
+ "hobby": 17792,
+ "akin": 17793,
+ "##holders": 17794,
+ "futures": 17795,
+ "intricate": 17796,
+ "cornish": 17797,
+ "patty": 17798,
+ "##oned": 17799,
+ "illegally": 17800,
+ "dolphin": 17801,
+ "##lag": 17802,
+ "barlow": 17803,
+ "yellowish": 17804,
+ "maddie": 17805,
+ "apologized": 17806,
+ "luton": 17807,
+ "plagued": 17808,
+ "##puram": 17809,
+ "nana": 17810,
+ "##rds": 17811,
+ "sway": 17812,
+ "fanny": 17813,
+ "łodz": 17814,
+ "##rino": 17815,
+ "psi": 17816,
+ "suspicions": 17817,
+ "hanged": 17818,
+ "##eding": 17819,
+ "initiate": 17820,
+ "charlton": 17821,
+ "##por": 17822,
+ "nak": 17823,
+ "competent": 17824,
+ "235": 17825,
+ "analytical": 17826,
+ "annex": 17827,
+ "wardrobe": 17828,
+ "reservations": 17829,
+ "##rma": 17830,
+ "sect": 17831,
+ "162": 17832,
+ "fairfax": 17833,
+ "hedge": 17834,
+ "piled": 17835,
+ "buckingham": 17836,
+ "uneven": 17837,
+ "bauer": 17838,
+ "simplicity": 17839,
+ "snyder": 17840,
+ "interpret": 17841,
+ "accountability": 17842,
+ "donors": 17843,
+ "moderately": 17844,
+ "byrd": 17845,
+ "continents": 17846,
+ "##cite": 17847,
+ "##max": 17848,
+ "disciple": 17849,
+ "hr": 17850,
+ "jamaican": 17851,
+ "ping": 17852,
+ "nominees": 17853,
+ "##uss": 17854,
+ "mongolian": 17855,
+ "diver": 17856,
+ "attackers": 17857,
+ "eagerly": 17858,
+ "ideological": 17859,
+ "pillows": 17860,
+ "miracles": 17861,
+ "apartheid": 17862,
+ "revolver": 17863,
+ "sulfur": 17864,
+ "clinics": 17865,
+ "moran": 17866,
+ "163": 17867,
+ "##enko": 17868,
+ "ile": 17869,
+ "katy": 17870,
+ "rhetoric": 17871,
+ "##icated": 17872,
+ "chronology": 17873,
+ "recycling": 17874,
+ "##hrer": 17875,
+ "elongated": 17876,
+ "mughal": 17877,
+ "pascal": 17878,
+ "profiles": 17879,
+ "vibration": 17880,
+ "databases": 17881,
+ "domination": 17882,
+ "##fare": 17883,
+ "##rant": 17884,
+ "matthias": 17885,
+ "digest": 17886,
+ "rehearsal": 17887,
+ "polling": 17888,
+ "weiss": 17889,
+ "initiation": 17890,
+ "reeves": 17891,
+ "clinging": 17892,
+ "flourished": 17893,
+ "impress": 17894,
+ "ngo": 17895,
+ "##hoff": 17896,
+ "##ume": 17897,
+ "buckley": 17898,
+ "symposium": 17899,
+ "rhythms": 17900,
+ "weed": 17901,
+ "emphasize": 17902,
+ "transforming": 17903,
+ "##taking": 17904,
+ "##gence": 17905,
+ "##yman": 17906,
+ "accountant": 17907,
+ "analyze": 17908,
+ "flicker": 17909,
+ "foil": 17910,
+ "priesthood": 17911,
+ "voluntarily": 17912,
+ "decreases": 17913,
+ "##80": 17914,
+ "##hya": 17915,
+ "slater": 17916,
+ "sv": 17917,
+ "charting": 17918,
+ "mcgill": 17919,
+ "##lde": 17920,
+ "moreno": 17921,
+ "##iu": 17922,
+ "besieged": 17923,
+ "zur": 17924,
+ "robes": 17925,
+ "##phic": 17926,
+ "admitting": 17927,
+ "api": 17928,
+ "deported": 17929,
+ "turmoil": 17930,
+ "peyton": 17931,
+ "earthquakes": 17932,
+ "##ares": 17933,
+ "nationalists": 17934,
+ "beau": 17935,
+ "clair": 17936,
+ "brethren": 17937,
+ "interrupt": 17938,
+ "welch": 17939,
+ "curated": 17940,
+ "galerie": 17941,
+ "requesting": 17942,
+ "164": 17943,
+ "##ested": 17944,
+ "impending": 17945,
+ "steward": 17946,
+ "viper": 17947,
+ "##vina": 17948,
+ "complaining": 17949,
+ "beautifully": 17950,
+ "brandy": 17951,
+ "foam": 17952,
+ "nl": 17953,
+ "1660": 17954,
+ "##cake": 17955,
+ "alessandro": 17956,
+ "punches": 17957,
+ "laced": 17958,
+ "explanations": 17959,
+ "##lim": 17960,
+ "attribute": 17961,
+ "clit": 17962,
+ "reggie": 17963,
+ "discomfort": 17964,
+ "##cards": 17965,
+ "smoothed": 17966,
+ "whales": 17967,
+ "##cene": 17968,
+ "adler": 17969,
+ "countered": 17970,
+ "duffy": 17971,
+ "disciplinary": 17972,
+ "widening": 17973,
+ "recipe": 17974,
+ "reliance": 17975,
+ "conducts": 17976,
+ "goats": 17977,
+ "gradient": 17978,
+ "preaching": 17979,
+ "##shaw": 17980,
+ "matilda": 17981,
+ "quasi": 17982,
+ "striped": 17983,
+ "meridian": 17984,
+ "cannabis": 17985,
+ "cordoba": 17986,
+ "certificates": 17987,
+ "##agh": 17988,
+ "##tering": 17989,
+ "graffiti": 17990,
+ "hangs": 17991,
+ "pilgrims": 17992,
+ "repeats": 17993,
+ "##ych": 17994,
+ "revive": 17995,
+ "urine": 17996,
+ "etat": 17997,
+ "##hawk": 17998,
+ "fueled": 17999,
+ "belts": 18000,
+ "fuzzy": 18001,
+ "susceptible": 18002,
+ "##hang": 18003,
+ "mauritius": 18004,
+ "salle": 18005,
+ "sincere": 18006,
+ "beers": 18007,
+ "hooks": 18008,
+ "##cki": 18009,
+ "arbitration": 18010,
+ "entrusted": 18011,
+ "advise": 18012,
+ "sniffed": 18013,
+ "seminar": 18014,
+ "junk": 18015,
+ "donnell": 18016,
+ "processors": 18017,
+ "principality": 18018,
+ "strapped": 18019,
+ "celia": 18020,
+ "mendoza": 18021,
+ "everton": 18022,
+ "fortunes": 18023,
+ "prejudice": 18024,
+ "starving": 18025,
+ "reassigned": 18026,
+ "steamer": 18027,
+ "##lund": 18028,
+ "tuck": 18029,
+ "evenly": 18030,
+ "foreman": 18031,
+ "##ffen": 18032,
+ "dans": 18033,
+ "375": 18034,
+ "envisioned": 18035,
+ "slit": 18036,
+ "##xy": 18037,
+ "baseman": 18038,
+ "liberia": 18039,
+ "rosemary": 18040,
+ "##weed": 18041,
+ "electrified": 18042,
+ "periodically": 18043,
+ "potassium": 18044,
+ "stride": 18045,
+ "contexts": 18046,
+ "sperm": 18047,
+ "slade": 18048,
+ "mariners": 18049,
+ "influx": 18050,
+ "bianca": 18051,
+ "subcommittee": 18052,
+ "##rane": 18053,
+ "spilling": 18054,
+ "icao": 18055,
+ "estuary": 18056,
+ "##nock": 18057,
+ "delivers": 18058,
+ "iphone": 18059,
+ "##ulata": 18060,
+ "isa": 18061,
+ "mira": 18062,
+ "bohemian": 18063,
+ "dessert": 18064,
+ "##sbury": 18065,
+ "welcoming": 18066,
+ "proudly": 18067,
+ "slowing": 18068,
+ "##chs": 18069,
+ "musee": 18070,
+ "ascension": 18071,
+ "russ": 18072,
+ "##vian": 18073,
+ "waits": 18074,
+ "##psy": 18075,
+ "africans": 18076,
+ "exploit": 18077,
+ "##morphic": 18078,
+ "gov": 18079,
+ "eccentric": 18080,
+ "crab": 18081,
+ "peck": 18082,
+ "##ull": 18083,
+ "entrances": 18084,
+ "formidable": 18085,
+ "marketplace": 18086,
+ "groom": 18087,
+ "bolted": 18088,
+ "metabolism": 18089,
+ "patton": 18090,
+ "robbins": 18091,
+ "courier": 18092,
+ "payload": 18093,
+ "endure": 18094,
+ "##ifier": 18095,
+ "andes": 18096,
+ "refrigerator": 18097,
+ "##pr": 18098,
+ "ornate": 18099,
+ "##uca": 18100,
+ "ruthless": 18101,
+ "illegitimate": 18102,
+ "masonry": 18103,
+ "strasbourg": 18104,
+ "bikes": 18105,
+ "adobe": 18106,
+ "##³": 18107,
+ "apples": 18108,
+ "quintet": 18109,
+ "willingly": 18110,
+ "niche": 18111,
+ "bakery": 18112,
+ "corpses": 18113,
+ "energetic": 18114,
+ "##cliffe": 18115,
+ "##sser": 18116,
+ "##ards": 18117,
+ "177": 18118,
+ "centimeters": 18119,
+ "centro": 18120,
+ "fuscous": 18121,
+ "cretaceous": 18122,
+ "rancho": 18123,
+ "##yde": 18124,
+ "andrei": 18125,
+ "telecom": 18126,
+ "tottenham": 18127,
+ "oasis": 18128,
+ "ordination": 18129,
+ "vulnerability": 18130,
+ "presiding": 18131,
+ "corey": 18132,
+ "cp": 18133,
+ "penguins": 18134,
+ "sims": 18135,
+ "##pis": 18136,
+ "malawi": 18137,
+ "piss": 18138,
+ "##48": 18139,
+ "correction": 18140,
+ "##cked": 18141,
+ "##ffle": 18142,
+ "##ryn": 18143,
+ "countdown": 18144,
+ "detectives": 18145,
+ "psychiatrist": 18146,
+ "psychedelic": 18147,
+ "dinosaurs": 18148,
+ "blouse": 18149,
+ "##get": 18150,
+ "choi": 18151,
+ "vowed": 18152,
+ "##oz": 18153,
+ "randomly": 18154,
+ "##pol": 18155,
+ "49ers": 18156,
+ "scrub": 18157,
+ "blanche": 18158,
+ "bruins": 18159,
+ "dusseldorf": 18160,
+ "##using": 18161,
+ "unwanted": 18162,
+ "##ums": 18163,
+ "212": 18164,
+ "dominique": 18165,
+ "elevations": 18166,
+ "headlights": 18167,
+ "om": 18168,
+ "laguna": 18169,
+ "##oga": 18170,
+ "1750": 18171,
+ "famously": 18172,
+ "ignorance": 18173,
+ "shrewsbury": 18174,
+ "##aine": 18175,
+ "ajax": 18176,
+ "breuning": 18177,
+ "che": 18178,
+ "confederacy": 18179,
+ "greco": 18180,
+ "overhaul": 18181,
+ "##screen": 18182,
+ "paz": 18183,
+ "skirts": 18184,
+ "disagreement": 18185,
+ "cruelty": 18186,
+ "jagged": 18187,
+ "phoebe": 18188,
+ "shifter": 18189,
+ "hovered": 18190,
+ "viruses": 18191,
+ "##wes": 18192,
+ "mandy": 18193,
+ "##lined": 18194,
+ "##gc": 18195,
+ "landlord": 18196,
+ "squirrel": 18197,
+ "dashed": 18198,
+ "##ι": 18199,
+ "ornamental": 18200,
+ "gag": 18201,
+ "wally": 18202,
+ "grange": 18203,
+ "literal": 18204,
+ "spurs": 18205,
+ "undisclosed": 18206,
+ "proceeding": 18207,
+ "yin": 18208,
+ "##text": 18209,
+ "billie": 18210,
+ "orphan": 18211,
+ "spanned": 18212,
+ "humidity": 18213,
+ "indy": 18214,
+ "weighted": 18215,
+ "presentations": 18216,
+ "explosions": 18217,
+ "lucian": 18218,
+ "##tary": 18219,
+ "vaughn": 18220,
+ "hindus": 18221,
+ "##anga": 18222,
+ "##hell": 18223,
+ "psycho": 18224,
+ "171": 18225,
+ "daytona": 18226,
+ "protects": 18227,
+ "efficiently": 18228,
+ "rematch": 18229,
+ "sly": 18230,
+ "tandem": 18231,
+ "##oya": 18232,
+ "rebranded": 18233,
+ "impaired": 18234,
+ "hee": 18235,
+ "metropolis": 18236,
+ "peach": 18237,
+ "godfrey": 18238,
+ "diaspora": 18239,
+ "ethnicity": 18240,
+ "prosperous": 18241,
+ "gleaming": 18242,
+ "dar": 18243,
+ "grossing": 18244,
+ "playback": 18245,
+ "##rden": 18246,
+ "stripe": 18247,
+ "pistols": 18248,
+ "##tain": 18249,
+ "births": 18250,
+ "labelled": 18251,
+ "##cating": 18252,
+ "172": 18253,
+ "rudy": 18254,
+ "alba": 18255,
+ "##onne": 18256,
+ "aquarium": 18257,
+ "hostility": 18258,
+ "##gb": 18259,
+ "##tase": 18260,
+ "shudder": 18261,
+ "sumatra": 18262,
+ "hardest": 18263,
+ "lakers": 18264,
+ "consonant": 18265,
+ "creeping": 18266,
+ "demos": 18267,
+ "homicide": 18268,
+ "capsule": 18269,
+ "zeke": 18270,
+ "liberties": 18271,
+ "expulsion": 18272,
+ "pueblo": 18273,
+ "##comb": 18274,
+ "trait": 18275,
+ "transporting": 18276,
+ "##ddin": 18277,
+ "##neck": 18278,
+ "##yna": 18279,
+ "depart": 18280,
+ "gregg": 18281,
+ "mold": 18282,
+ "ledge": 18283,
+ "hangar": 18284,
+ "oldham": 18285,
+ "playboy": 18286,
+ "termination": 18287,
+ "analysts": 18288,
+ "gmbh": 18289,
+ "romero": 18290,
+ "##itic": 18291,
+ "insist": 18292,
+ "cradle": 18293,
+ "filthy": 18294,
+ "brightness": 18295,
+ "slash": 18296,
+ "shootout": 18297,
+ "deposed": 18298,
+ "bordering": 18299,
+ "##truct": 18300,
+ "isis": 18301,
+ "microwave": 18302,
+ "tumbled": 18303,
+ "sheltered": 18304,
+ "cathy": 18305,
+ "werewolves": 18306,
+ "messy": 18307,
+ "andersen": 18308,
+ "convex": 18309,
+ "clapped": 18310,
+ "clinched": 18311,
+ "satire": 18312,
+ "wasting": 18313,
+ "edo": 18314,
+ "vc": 18315,
+ "rufus": 18316,
+ "##jak": 18317,
+ "mont": 18318,
+ "##etti": 18319,
+ "poznan": 18320,
+ "##keeping": 18321,
+ "restructuring": 18322,
+ "transverse": 18323,
+ "##rland": 18324,
+ "azerbaijani": 18325,
+ "slovene": 18326,
+ "gestures": 18327,
+ "roommate": 18328,
+ "choking": 18329,
+ "shear": 18330,
+ "##quist": 18331,
+ "vanguard": 18332,
+ "oblivious": 18333,
+ "##hiro": 18334,
+ "disagreed": 18335,
+ "baptism": 18336,
+ "##lich": 18337,
+ "coliseum": 18338,
+ "##aceae": 18339,
+ "salvage": 18340,
+ "societe": 18341,
+ "cory": 18342,
+ "locke": 18343,
+ "relocation": 18344,
+ "relying": 18345,
+ "versailles": 18346,
+ "ahl": 18347,
+ "swelling": 18348,
+ "##elo": 18349,
+ "cheerful": 18350,
+ "##word": 18351,
+ "##edes": 18352,
+ "gin": 18353,
+ "sarajevo": 18354,
+ "obstacle": 18355,
+ "diverted": 18356,
+ "##nac": 18357,
+ "messed": 18358,
+ "thoroughbred": 18359,
+ "fluttered": 18360,
+ "utrecht": 18361,
+ "chewed": 18362,
+ "acquaintance": 18363,
+ "assassins": 18364,
+ "dispatch": 18365,
+ "mirza": 18366,
+ "##wart": 18367,
+ "nike": 18368,
+ "salzburg": 18369,
+ "swell": 18370,
+ "yen": 18371,
+ "##gee": 18372,
+ "idle": 18373,
+ "ligue": 18374,
+ "samson": 18375,
+ "##nds": 18376,
+ "##igh": 18377,
+ "playful": 18378,
+ "spawned": 18379,
+ "##cise": 18380,
+ "tease": 18381,
+ "##case": 18382,
+ "burgundy": 18383,
+ "##bot": 18384,
+ "stirring": 18385,
+ "skeptical": 18386,
+ "interceptions": 18387,
+ "marathi": 18388,
+ "##dies": 18389,
+ "bedrooms": 18390,
+ "aroused": 18391,
+ "pinch": 18392,
+ "##lik": 18393,
+ "preferences": 18394,
+ "tattoos": 18395,
+ "buster": 18396,
+ "digitally": 18397,
+ "projecting": 18398,
+ "rust": 18399,
+ "##ital": 18400,
+ "kitten": 18401,
+ "priorities": 18402,
+ "addison": 18403,
+ "pseudo": 18404,
+ "##guard": 18405,
+ "dusk": 18406,
+ "icons": 18407,
+ "sermon": 18408,
+ "##psis": 18409,
+ "##iba": 18410,
+ "bt": 18411,
+ "##lift": 18412,
+ "##xt": 18413,
+ "ju": 18414,
+ "truce": 18415,
+ "rink": 18416,
+ "##dah": 18417,
+ "##wy": 18418,
+ "defects": 18419,
+ "psychiatry": 18420,
+ "offences": 18421,
+ "calculate": 18422,
+ "glucose": 18423,
+ "##iful": 18424,
+ "##rized": 18425,
+ "##unda": 18426,
+ "francaise": 18427,
+ "##hari": 18428,
+ "richest": 18429,
+ "warwickshire": 18430,
+ "carly": 18431,
+ "1763": 18432,
+ "purity": 18433,
+ "redemption": 18434,
+ "lending": 18435,
+ "##cious": 18436,
+ "muse": 18437,
+ "bruises": 18438,
+ "cerebral": 18439,
+ "aero": 18440,
+ "carving": 18441,
+ "##name": 18442,
+ "preface": 18443,
+ "terminology": 18444,
+ "invade": 18445,
+ "monty": 18446,
+ "##int": 18447,
+ "anarchist": 18448,
+ "blurred": 18449,
+ "##iled": 18450,
+ "rossi": 18451,
+ "treats": 18452,
+ "guts": 18453,
+ "shu": 18454,
+ "foothills": 18455,
+ "ballads": 18456,
+ "undertaking": 18457,
+ "premise": 18458,
+ "cecilia": 18459,
+ "affiliates": 18460,
+ "blasted": 18461,
+ "conditional": 18462,
+ "wilder": 18463,
+ "minors": 18464,
+ "drone": 18465,
+ "rudolph": 18466,
+ "buffy": 18467,
+ "swallowing": 18468,
+ "horton": 18469,
+ "attested": 18470,
+ "##hop": 18471,
+ "rutherford": 18472,
+ "howell": 18473,
+ "primetime": 18474,
+ "livery": 18475,
+ "penal": 18476,
+ "##bis": 18477,
+ "minimize": 18478,
+ "hydro": 18479,
+ "wrecked": 18480,
+ "wrought": 18481,
+ "palazzo": 18482,
+ "##gling": 18483,
+ "cans": 18484,
+ "vernacular": 18485,
+ "friedman": 18486,
+ "nobleman": 18487,
+ "shale": 18488,
+ "walnut": 18489,
+ "danielle": 18490,
+ "##ection": 18491,
+ "##tley": 18492,
+ "sears": 18493,
+ "##kumar": 18494,
+ "chords": 18495,
+ "lend": 18496,
+ "flipping": 18497,
+ "streamed": 18498,
+ "por": 18499,
+ "dracula": 18500,
+ "gallons": 18501,
+ "sacrifices": 18502,
+ "gamble": 18503,
+ "orphanage": 18504,
+ "##iman": 18505,
+ "mckenzie": 18506,
+ "##gible": 18507,
+ "boxers": 18508,
+ "daly": 18509,
+ "##balls": 18510,
+ "##ان": 18511,
+ "208": 18512,
+ "##ific": 18513,
+ "##rative": 18514,
+ "##iq": 18515,
+ "exploited": 18516,
+ "slated": 18517,
+ "##uity": 18518,
+ "circling": 18519,
+ "hillary": 18520,
+ "pinched": 18521,
+ "goldberg": 18522,
+ "provost": 18523,
+ "campaigning": 18524,
+ "lim": 18525,
+ "piles": 18526,
+ "ironically": 18527,
+ "jong": 18528,
+ "mohan": 18529,
+ "successors": 18530,
+ "usaf": 18531,
+ "##tem": 18532,
+ "##ught": 18533,
+ "autobiographical": 18534,
+ "haute": 18535,
+ "preserves": 18536,
+ "##ending": 18537,
+ "acquitted": 18538,
+ "comparisons": 18539,
+ "203": 18540,
+ "hydroelectric": 18541,
+ "gangs": 18542,
+ "cypriot": 18543,
+ "torpedoes": 18544,
+ "rushes": 18545,
+ "chrome": 18546,
+ "derive": 18547,
+ "bumps": 18548,
+ "instability": 18549,
+ "fiat": 18550,
+ "pets": 18551,
+ "##mbe": 18552,
+ "silas": 18553,
+ "dye": 18554,
+ "reckless": 18555,
+ "settler": 18556,
+ "##itation": 18557,
+ "info": 18558,
+ "heats": 18559,
+ "##writing": 18560,
+ "176": 18561,
+ "canonical": 18562,
+ "maltese": 18563,
+ "fins": 18564,
+ "mushroom": 18565,
+ "stacy": 18566,
+ "aspen": 18567,
+ "avid": 18568,
+ "##kur": 18569,
+ "##loading": 18570,
+ "vickers": 18571,
+ "gaston": 18572,
+ "hillside": 18573,
+ "statutes": 18574,
+ "wilde": 18575,
+ "gail": 18576,
+ "kung": 18577,
+ "sabine": 18578,
+ "comfortably": 18579,
+ "motorcycles": 18580,
+ "##rgo": 18581,
+ "169": 18582,
+ "pneumonia": 18583,
+ "fetch": 18584,
+ "##sonic": 18585,
+ "axel": 18586,
+ "faintly": 18587,
+ "parallels": 18588,
+ "##oop": 18589,
+ "mclaren": 18590,
+ "spouse": 18591,
+ "compton": 18592,
+ "interdisciplinary": 18593,
+ "miner": 18594,
+ "##eni": 18595,
+ "181": 18596,
+ "clamped": 18597,
+ "##chal": 18598,
+ "##llah": 18599,
+ "separates": 18600,
+ "versa": 18601,
+ "##mler": 18602,
+ "scarborough": 18603,
+ "labrador": 18604,
+ "##lity": 18605,
+ "##osing": 18606,
+ "rutgers": 18607,
+ "hurdles": 18608,
+ "como": 18609,
+ "166": 18610,
+ "burt": 18611,
+ "divers": 18612,
+ "##100": 18613,
+ "wichita": 18614,
+ "cade": 18615,
+ "coincided": 18616,
+ "##erson": 18617,
+ "bruised": 18618,
+ "mla": 18619,
+ "##pper": 18620,
+ "vineyard": 18621,
+ "##ili": 18622,
+ "##brush": 18623,
+ "notch": 18624,
+ "mentioning": 18625,
+ "jase": 18626,
+ "hearted": 18627,
+ "kits": 18628,
+ "doe": 18629,
+ "##acle": 18630,
+ "pomerania": 18631,
+ "##ady": 18632,
+ "ronan": 18633,
+ "seizure": 18634,
+ "pavel": 18635,
+ "problematic": 18636,
+ "##zaki": 18637,
+ "domenico": 18638,
+ "##ulin": 18639,
+ "catering": 18640,
+ "penelope": 18641,
+ "dependence": 18642,
+ "parental": 18643,
+ "emilio": 18644,
+ "ministerial": 18645,
+ "atkinson": 18646,
+ "##bolic": 18647,
+ "clarkson": 18648,
+ "chargers": 18649,
+ "colby": 18650,
+ "grill": 18651,
+ "peeked": 18652,
+ "arises": 18653,
+ "summon": 18654,
+ "##aged": 18655,
+ "fools": 18656,
+ "##grapher": 18657,
+ "faculties": 18658,
+ "qaeda": 18659,
+ "##vial": 18660,
+ "garner": 18661,
+ "refurbished": 18662,
+ "##hwa": 18663,
+ "geelong": 18664,
+ "disasters": 18665,
+ "nudged": 18666,
+ "bs": 18667,
+ "shareholder": 18668,
+ "lori": 18669,
+ "algae": 18670,
+ "reinstated": 18671,
+ "rot": 18672,
+ "##ades": 18673,
+ "##nous": 18674,
+ "invites": 18675,
+ "stainless": 18676,
+ "183": 18677,
+ "inclusive": 18678,
+ "##itude": 18679,
+ "diocesan": 18680,
+ "til": 18681,
+ "##icz": 18682,
+ "denomination": 18683,
+ "##xa": 18684,
+ "benton": 18685,
+ "floral": 18686,
+ "registers": 18687,
+ "##ider": 18688,
+ "##erman": 18689,
+ "##kell": 18690,
+ "absurd": 18691,
+ "brunei": 18692,
+ "guangzhou": 18693,
+ "hitter": 18694,
+ "retaliation": 18695,
+ "##uled": 18696,
+ "##eve": 18697,
+ "blanc": 18698,
+ "nh": 18699,
+ "consistency": 18700,
+ "contamination": 18701,
+ "##eres": 18702,
+ "##rner": 18703,
+ "dire": 18704,
+ "palermo": 18705,
+ "broadcasters": 18706,
+ "diaries": 18707,
+ "inspire": 18708,
+ "vols": 18709,
+ "brewer": 18710,
+ "tightening": 18711,
+ "ky": 18712,
+ "mixtape": 18713,
+ "hormone": 18714,
+ "##tok": 18715,
+ "stokes": 18716,
+ "##color": 18717,
+ "##dly": 18718,
+ "##ssi": 18719,
+ "pg": 18720,
+ "##ometer": 18721,
+ "##lington": 18722,
+ "sanitation": 18723,
+ "##tility": 18724,
+ "intercontinental": 18725,
+ "apps": 18726,
+ "##adt": 18727,
+ "¹⁄₂": 18728,
+ "cylinders": 18729,
+ "economies": 18730,
+ "favourable": 18731,
+ "unison": 18732,
+ "croix": 18733,
+ "gertrude": 18734,
+ "odyssey": 18735,
+ "vanity": 18736,
+ "dangling": 18737,
+ "##logists": 18738,
+ "upgrades": 18739,
+ "dice": 18740,
+ "middleweight": 18741,
+ "practitioner": 18742,
+ "##ight": 18743,
+ "206": 18744,
+ "henrik": 18745,
+ "parlor": 18746,
+ "orion": 18747,
+ "angered": 18748,
+ "lac": 18749,
+ "python": 18750,
+ "blurted": 18751,
+ "##rri": 18752,
+ "sensual": 18753,
+ "intends": 18754,
+ "swings": 18755,
+ "angled": 18756,
+ "##phs": 18757,
+ "husky": 18758,
+ "attain": 18759,
+ "peerage": 18760,
+ "precinct": 18761,
+ "textiles": 18762,
+ "cheltenham": 18763,
+ "shuffled": 18764,
+ "dai": 18765,
+ "confess": 18766,
+ "tasting": 18767,
+ "bhutan": 18768,
+ "##riation": 18769,
+ "tyrone": 18770,
+ "segregation": 18771,
+ "abrupt": 18772,
+ "ruiz": 18773,
+ "##rish": 18774,
+ "smirked": 18775,
+ "blackwell": 18776,
+ "confidential": 18777,
+ "browning": 18778,
+ "amounted": 18779,
+ "##put": 18780,
+ "vase": 18781,
+ "scarce": 18782,
+ "fabulous": 18783,
+ "raided": 18784,
+ "staple": 18785,
+ "guyana": 18786,
+ "unemployed": 18787,
+ "glider": 18788,
+ "shay": 18789,
+ "##tow": 18790,
+ "carmine": 18791,
+ "troll": 18792,
+ "intervene": 18793,
+ "squash": 18794,
+ "superstar": 18795,
+ "##uce": 18796,
+ "cylindrical": 18797,
+ "len": 18798,
+ "roadway": 18799,
+ "researched": 18800,
+ "handy": 18801,
+ "##rium": 18802,
+ "##jana": 18803,
+ "meta": 18804,
+ "lao": 18805,
+ "declares": 18806,
+ "##rring": 18807,
+ "##tadt": 18808,
+ "##elin": 18809,
+ "##kova": 18810,
+ "willem": 18811,
+ "shrubs": 18812,
+ "napoleonic": 18813,
+ "realms": 18814,
+ "skater": 18815,
+ "qi": 18816,
+ "volkswagen": 18817,
+ "##ł": 18818,
+ "tad": 18819,
+ "hara": 18820,
+ "archaeologist": 18821,
+ "awkwardly": 18822,
+ "eerie": 18823,
+ "##kind": 18824,
+ "wiley": 18825,
+ "##heimer": 18826,
+ "##24": 18827,
+ "titus": 18828,
+ "organizers": 18829,
+ "cfl": 18830,
+ "crusaders": 18831,
+ "lama": 18832,
+ "usb": 18833,
+ "vent": 18834,
+ "enraged": 18835,
+ "thankful": 18836,
+ "occupants": 18837,
+ "maximilian": 18838,
+ "##gaard": 18839,
+ "possessing": 18840,
+ "textbooks": 18841,
+ "##oran": 18842,
+ "collaborator": 18843,
+ "quaker": 18844,
+ "##ulo": 18845,
+ "avalanche": 18846,
+ "mono": 18847,
+ "silky": 18848,
+ "straits": 18849,
+ "isaiah": 18850,
+ "mustang": 18851,
+ "surged": 18852,
+ "resolutions": 18853,
+ "potomac": 18854,
+ "descend": 18855,
+ "cl": 18856,
+ "kilograms": 18857,
+ "plato": 18858,
+ "strains": 18859,
+ "saturdays": 18860,
+ "##olin": 18861,
+ "bernstein": 18862,
+ "##ype": 18863,
+ "holstein": 18864,
+ "ponytail": 18865,
+ "##watch": 18866,
+ "belize": 18867,
+ "conversely": 18868,
+ "heroine": 18869,
+ "perpetual": 18870,
+ "##ylus": 18871,
+ "charcoal": 18872,
+ "piedmont": 18873,
+ "glee": 18874,
+ "negotiating": 18875,
+ "backdrop": 18876,
+ "prologue": 18877,
+ "##jah": 18878,
+ "##mmy": 18879,
+ "pasadena": 18880,
+ "climbs": 18881,
+ "ramos": 18882,
+ "sunni": 18883,
+ "##holm": 18884,
+ "##tner": 18885,
+ "##tri": 18886,
+ "anand": 18887,
+ "deficiency": 18888,
+ "hertfordshire": 18889,
+ "stout": 18890,
+ "##avi": 18891,
+ "aperture": 18892,
+ "orioles": 18893,
+ "##irs": 18894,
+ "doncaster": 18895,
+ "intrigued": 18896,
+ "bombed": 18897,
+ "coating": 18898,
+ "otis": 18899,
+ "##mat": 18900,
+ "cocktail": 18901,
+ "##jit": 18902,
+ "##eto": 18903,
+ "amir": 18904,
+ "arousal": 18905,
+ "sar": 18906,
+ "##proof": 18907,
+ "##act": 18908,
+ "##ories": 18909,
+ "dixie": 18910,
+ "pots": 18911,
+ "##bow": 18912,
+ "whereabouts": 18913,
+ "159": 18914,
+ "##fted": 18915,
+ "drains": 18916,
+ "bullying": 18917,
+ "cottages": 18918,
+ "scripture": 18919,
+ "coherent": 18920,
+ "fore": 18921,
+ "poe": 18922,
+ "appetite": 18923,
+ "##uration": 18924,
+ "sampled": 18925,
+ "##ators": 18926,
+ "##dp": 18927,
+ "derrick": 18928,
+ "rotor": 18929,
+ "jays": 18930,
+ "peacock": 18931,
+ "installment": 18932,
+ "##rro": 18933,
+ "advisors": 18934,
+ "##coming": 18935,
+ "rodeo": 18936,
+ "scotch": 18937,
+ "##mot": 18938,
+ "##db": 18939,
+ "##fen": 18940,
+ "##vant": 18941,
+ "ensued": 18942,
+ "rodrigo": 18943,
+ "dictatorship": 18944,
+ "martyrs": 18945,
+ "twenties": 18946,
+ "##н": 18947,
+ "towed": 18948,
+ "incidence": 18949,
+ "marta": 18950,
+ "rainforest": 18951,
+ "sai": 18952,
+ "scaled": 18953,
+ "##cles": 18954,
+ "oceanic": 18955,
+ "qualifiers": 18956,
+ "symphonic": 18957,
+ "mcbride": 18958,
+ "dislike": 18959,
+ "generalized": 18960,
+ "aubrey": 18961,
+ "colonization": 18962,
+ "##iation": 18963,
+ "##lion": 18964,
+ "##ssing": 18965,
+ "disliked": 18966,
+ "lublin": 18967,
+ "salesman": 18968,
+ "##ulates": 18969,
+ "spherical": 18970,
+ "whatsoever": 18971,
+ "sweating": 18972,
+ "avalon": 18973,
+ "contention": 18974,
+ "punt": 18975,
+ "severity": 18976,
+ "alderman": 18977,
+ "atari": 18978,
+ "##dina": 18979,
+ "##grant": 18980,
+ "##rop": 18981,
+ "scarf": 18982,
+ "seville": 18983,
+ "vertices": 18984,
+ "annexation": 18985,
+ "fairfield": 18986,
+ "fascination": 18987,
+ "inspiring": 18988,
+ "launches": 18989,
+ "palatinate": 18990,
+ "regretted": 18991,
+ "##rca": 18992,
+ "feral": 18993,
+ "##iom": 18994,
+ "elk": 18995,
+ "nap": 18996,
+ "olsen": 18997,
+ "reddy": 18998,
+ "yong": 18999,
+ "##leader": 19000,
+ "##iae": 19001,
+ "garment": 19002,
+ "transports": 19003,
+ "feng": 19004,
+ "gracie": 19005,
+ "outrage": 19006,
+ "viceroy": 19007,
+ "insides": 19008,
+ "##esis": 19009,
+ "breakup": 19010,
+ "grady": 19011,
+ "organizer": 19012,
+ "softer": 19013,
+ "grimaced": 19014,
+ "222": 19015,
+ "murals": 19016,
+ "galicia": 19017,
+ "arranging": 19018,
+ "vectors": 19019,
+ "##rsten": 19020,
+ "bas": 19021,
+ "##sb": 19022,
+ "##cens": 19023,
+ "sloan": 19024,
+ "##eka": 19025,
+ "bitten": 19026,
+ "ara": 19027,
+ "fender": 19028,
+ "nausea": 19029,
+ "bumped": 19030,
+ "kris": 19031,
+ "banquet": 19032,
+ "comrades": 19033,
+ "detector": 19034,
+ "persisted": 19035,
+ "##llan": 19036,
+ "adjustment": 19037,
+ "endowed": 19038,
+ "cinemas": 19039,
+ "##shot": 19040,
+ "sellers": 19041,
+ "##uman": 19042,
+ "peek": 19043,
+ "epa": 19044,
+ "kindly": 19045,
+ "neglect": 19046,
+ "simpsons": 19047,
+ "talon": 19048,
+ "mausoleum": 19049,
+ "runaway": 19050,
+ "hangul": 19051,
+ "lookout": 19052,
+ "##cic": 19053,
+ "rewards": 19054,
+ "coughed": 19055,
+ "acquainted": 19056,
+ "chloride": 19057,
+ "##ald": 19058,
+ "quicker": 19059,
+ "accordion": 19060,
+ "neolithic": 19061,
+ "##qa": 19062,
+ "artemis": 19063,
+ "coefficient": 19064,
+ "lenny": 19065,
+ "pandora": 19066,
+ "tx": 19067,
+ "##xed": 19068,
+ "ecstasy": 19069,
+ "litter": 19070,
+ "segunda": 19071,
+ "chairperson": 19072,
+ "gemma": 19073,
+ "hiss": 19074,
+ "rumor": 19075,
+ "vow": 19076,
+ "nasal": 19077,
+ "antioch": 19078,
+ "compensate": 19079,
+ "patiently": 19080,
+ "transformers": 19081,
+ "##eded": 19082,
+ "judo": 19083,
+ "morrow": 19084,
+ "penis": 19085,
+ "posthumous": 19086,
+ "philips": 19087,
+ "bandits": 19088,
+ "husbands": 19089,
+ "denote": 19090,
+ "flaming": 19091,
+ "##any": 19092,
+ "##phones": 19093,
+ "langley": 19094,
+ "yorker": 19095,
+ "1760": 19096,
+ "walters": 19097,
+ "##uo": 19098,
+ "##kle": 19099,
+ "gubernatorial": 19100,
+ "fatty": 19101,
+ "samsung": 19102,
+ "leroy": 19103,
+ "outlaw": 19104,
+ "##nine": 19105,
+ "unpublished": 19106,
+ "poole": 19107,
+ "jakob": 19108,
+ "##ᵢ": 19109,
+ "##ₙ": 19110,
+ "crete": 19111,
+ "distorted": 19112,
+ "superiority": 19113,
+ "##dhi": 19114,
+ "intercept": 19115,
+ "crust": 19116,
+ "mig": 19117,
+ "claus": 19118,
+ "crashes": 19119,
+ "positioning": 19120,
+ "188": 19121,
+ "stallion": 19122,
+ "301": 19123,
+ "frontal": 19124,
+ "armistice": 19125,
+ "##estinal": 19126,
+ "elton": 19127,
+ "aj": 19128,
+ "encompassing": 19129,
+ "camel": 19130,
+ "commemorated": 19131,
+ "malaria": 19132,
+ "woodward": 19133,
+ "calf": 19134,
+ "cigar": 19135,
+ "penetrate": 19136,
+ "##oso": 19137,
+ "willard": 19138,
+ "##rno": 19139,
+ "##uche": 19140,
+ "illustrate": 19141,
+ "amusing": 19142,
+ "convergence": 19143,
+ "noteworthy": 19144,
+ "##lma": 19145,
+ "##rva": 19146,
+ "journeys": 19147,
+ "realise": 19148,
+ "manfred": 19149,
+ "##sable": 19150,
+ "410": 19151,
+ "##vocation": 19152,
+ "hearings": 19153,
+ "fiance": 19154,
+ "##posed": 19155,
+ "educators": 19156,
+ "provoked": 19157,
+ "adjusting": 19158,
+ "##cturing": 19159,
+ "modular": 19160,
+ "stockton": 19161,
+ "paterson": 19162,
+ "vlad": 19163,
+ "rejects": 19164,
+ "electors": 19165,
+ "selena": 19166,
+ "maureen": 19167,
+ "##tres": 19168,
+ "uber": 19169,
+ "##rce": 19170,
+ "swirled": 19171,
+ "##num": 19172,
+ "proportions": 19173,
+ "nanny": 19174,
+ "pawn": 19175,
+ "naturalist": 19176,
+ "parma": 19177,
+ "apostles": 19178,
+ "awoke": 19179,
+ "ethel": 19180,
+ "wen": 19181,
+ "##bey": 19182,
+ "monsoon": 19183,
+ "overview": 19184,
+ "##inating": 19185,
+ "mccain": 19186,
+ "rendition": 19187,
+ "risky": 19188,
+ "adorned": 19189,
+ "##ih": 19190,
+ "equestrian": 19191,
+ "germain": 19192,
+ "nj": 19193,
+ "conspicuous": 19194,
+ "confirming": 19195,
+ "##yoshi": 19196,
+ "shivering": 19197,
+ "##imeter": 19198,
+ "milestone": 19199,
+ "rumours": 19200,
+ "flinched": 19201,
+ "bounds": 19202,
+ "smacked": 19203,
+ "token": 19204,
+ "##bei": 19205,
+ "lectured": 19206,
+ "automobiles": 19207,
+ "##shore": 19208,
+ "impacted": 19209,
+ "##iable": 19210,
+ "nouns": 19211,
+ "nero": 19212,
+ "##leaf": 19213,
+ "ismail": 19214,
+ "prostitute": 19215,
+ "trams": 19216,
+ "##lace": 19217,
+ "bridget": 19218,
+ "sud": 19219,
+ "stimulus": 19220,
+ "impressions": 19221,
+ "reins": 19222,
+ "revolves": 19223,
+ "##oud": 19224,
+ "##gned": 19225,
+ "giro": 19226,
+ "honeymoon": 19227,
+ "##swell": 19228,
+ "criterion": 19229,
+ "##sms": 19230,
+ "##uil": 19231,
+ "libyan": 19232,
+ "prefers": 19233,
+ "##osition": 19234,
+ "211": 19235,
+ "preview": 19236,
+ "sucks": 19237,
+ "accusation": 19238,
+ "bursts": 19239,
+ "metaphor": 19240,
+ "diffusion": 19241,
+ "tolerate": 19242,
+ "faye": 19243,
+ "betting": 19244,
+ "cinematographer": 19245,
+ "liturgical": 19246,
+ "specials": 19247,
+ "bitterly": 19248,
+ "humboldt": 19249,
+ "##ckle": 19250,
+ "flux": 19251,
+ "rattled": 19252,
+ "##itzer": 19253,
+ "archaeologists": 19254,
+ "odor": 19255,
+ "authorised": 19256,
+ "marshes": 19257,
+ "discretion": 19258,
+ "##ов": 19259,
+ "alarmed": 19260,
+ "archaic": 19261,
+ "inverse": 19262,
+ "##leton": 19263,
+ "explorers": 19264,
+ "##pine": 19265,
+ "drummond": 19266,
+ "tsunami": 19267,
+ "woodlands": 19268,
+ "##minate": 19269,
+ "##tland": 19270,
+ "booklet": 19271,
+ "insanity": 19272,
+ "owning": 19273,
+ "insert": 19274,
+ "crafted": 19275,
+ "calculus": 19276,
+ "##tore": 19277,
+ "receivers": 19278,
+ "##bt": 19279,
+ "stung": 19280,
+ "##eca": 19281,
+ "##nched": 19282,
+ "prevailing": 19283,
+ "travellers": 19284,
+ "eyeing": 19285,
+ "lila": 19286,
+ "graphs": 19287,
+ "##borne": 19288,
+ "178": 19289,
+ "julien": 19290,
+ "##won": 19291,
+ "morale": 19292,
+ "adaptive": 19293,
+ "therapist": 19294,
+ "erica": 19295,
+ "cw": 19296,
+ "libertarian": 19297,
+ "bowman": 19298,
+ "pitches": 19299,
+ "vita": 19300,
+ "##ional": 19301,
+ "crook": 19302,
+ "##ads": 19303,
+ "##entation": 19304,
+ "caledonia": 19305,
+ "mutiny": 19306,
+ "##sible": 19307,
+ "1840s": 19308,
+ "automation": 19309,
+ "##ß": 19310,
+ "flock": 19311,
+ "##pia": 19312,
+ "ironic": 19313,
+ "pathology": 19314,
+ "##imus": 19315,
+ "remarried": 19316,
+ "##22": 19317,
+ "joker": 19318,
+ "withstand": 19319,
+ "energies": 19320,
+ "##att": 19321,
+ "shropshire": 19322,
+ "hostages": 19323,
+ "madeleine": 19324,
+ "tentatively": 19325,
+ "conflicting": 19326,
+ "mateo": 19327,
+ "recipes": 19328,
+ "euros": 19329,
+ "ol": 19330,
+ "mercenaries": 19331,
+ "nico": 19332,
+ "##ndon": 19333,
+ "albuquerque": 19334,
+ "augmented": 19335,
+ "mythical": 19336,
+ "bel": 19337,
+ "freud": 19338,
+ "##child": 19339,
+ "cough": 19340,
+ "##lica": 19341,
+ "365": 19342,
+ "freddy": 19343,
+ "lillian": 19344,
+ "genetically": 19345,
+ "nuremberg": 19346,
+ "calder": 19347,
+ "209": 19348,
+ "bonn": 19349,
+ "outdoors": 19350,
+ "paste": 19351,
+ "suns": 19352,
+ "urgency": 19353,
+ "vin": 19354,
+ "restraint": 19355,
+ "tyson": 19356,
+ "##cera": 19357,
+ "##selle": 19358,
+ "barrage": 19359,
+ "bethlehem": 19360,
+ "kahn": 19361,
+ "##par": 19362,
+ "mounts": 19363,
+ "nippon": 19364,
+ "barony": 19365,
+ "happier": 19366,
+ "ryu": 19367,
+ "makeshift": 19368,
+ "sheldon": 19369,
+ "blushed": 19370,
+ "castillo": 19371,
+ "barking": 19372,
+ "listener": 19373,
+ "taped": 19374,
+ "bethel": 19375,
+ "fluent": 19376,
+ "headlines": 19377,
+ "pornography": 19378,
+ "rum": 19379,
+ "disclosure": 19380,
+ "sighing": 19381,
+ "mace": 19382,
+ "doubling": 19383,
+ "gunther": 19384,
+ "manly": 19385,
+ "##plex": 19386,
+ "rt": 19387,
+ "interventions": 19388,
+ "physiological": 19389,
+ "forwards": 19390,
+ "emerges": 19391,
+ "##tooth": 19392,
+ "##gny": 19393,
+ "compliment": 19394,
+ "rib": 19395,
+ "recession": 19396,
+ "visibly": 19397,
+ "barge": 19398,
+ "faults": 19399,
+ "connector": 19400,
+ "exquisite": 19401,
+ "prefect": 19402,
+ "##rlin": 19403,
+ "patio": 19404,
+ "##cured": 19405,
+ "elevators": 19406,
+ "brandt": 19407,
+ "italics": 19408,
+ "pena": 19409,
+ "173": 19410,
+ "wasp": 19411,
+ "satin": 19412,
+ "ea": 19413,
+ "botswana": 19414,
+ "graceful": 19415,
+ "respectable": 19416,
+ "##jima": 19417,
+ "##rter": 19418,
+ "##oic": 19419,
+ "franciscan": 19420,
+ "generates": 19421,
+ "##dl": 19422,
+ "alfredo": 19423,
+ "disgusting": 19424,
+ "##olate": 19425,
+ "##iously": 19426,
+ "sherwood": 19427,
+ "warns": 19428,
+ "cod": 19429,
+ "promo": 19430,
+ "cheryl": 19431,
+ "sino": 19432,
+ "##ة": 19433,
+ "##escu": 19434,
+ "twitch": 19435,
+ "##zhi": 19436,
+ "brownish": 19437,
+ "thom": 19438,
+ "ortiz": 19439,
+ "##dron": 19440,
+ "densely": 19441,
+ "##beat": 19442,
+ "carmel": 19443,
+ "reinforce": 19444,
+ "##bana": 19445,
+ "187": 19446,
+ "anastasia": 19447,
+ "downhill": 19448,
+ "vertex": 19449,
+ "contaminated": 19450,
+ "remembrance": 19451,
+ "harmonic": 19452,
+ "homework": 19453,
+ "##sol": 19454,
+ "fiancee": 19455,
+ "gears": 19456,
+ "olds": 19457,
+ "angelica": 19458,
+ "loft": 19459,
+ "ramsay": 19460,
+ "quiz": 19461,
+ "colliery": 19462,
+ "sevens": 19463,
+ "##cape": 19464,
+ "autism": 19465,
+ "##hil": 19466,
+ "walkway": 19467,
+ "##boats": 19468,
+ "ruben": 19469,
+ "abnormal": 19470,
+ "ounce": 19471,
+ "khmer": 19472,
+ "##bbe": 19473,
+ "zachary": 19474,
+ "bedside": 19475,
+ "morphology": 19476,
+ "punching": 19477,
+ "##olar": 19478,
+ "sparrow": 19479,
+ "convinces": 19480,
+ "##35": 19481,
+ "hewitt": 19482,
+ "queer": 19483,
+ "remastered": 19484,
+ "rods": 19485,
+ "mabel": 19486,
+ "solemn": 19487,
+ "notified": 19488,
+ "lyricist": 19489,
+ "symmetric": 19490,
+ "##xide": 19491,
+ "174": 19492,
+ "encore": 19493,
+ "passports": 19494,
+ "wildcats": 19495,
+ "##uni": 19496,
+ "baja": 19497,
+ "##pac": 19498,
+ "mildly": 19499,
+ "##ease": 19500,
+ "bleed": 19501,
+ "commodity": 19502,
+ "mounds": 19503,
+ "glossy": 19504,
+ "orchestras": 19505,
+ "##omo": 19506,
+ "damian": 19507,
+ "prelude": 19508,
+ "ambitions": 19509,
+ "##vet": 19510,
+ "awhile": 19511,
+ "remotely": 19512,
+ "##aud": 19513,
+ "asserts": 19514,
+ "imply": 19515,
+ "##iques": 19516,
+ "distinctly": 19517,
+ "modelling": 19518,
+ "remedy": 19519,
+ "##dded": 19520,
+ "windshield": 19521,
+ "dani": 19522,
+ "xiao": 19523,
+ "##endra": 19524,
+ "audible": 19525,
+ "powerplant": 19526,
+ "1300": 19527,
+ "invalid": 19528,
+ "elemental": 19529,
+ "acquisitions": 19530,
+ "##hala": 19531,
+ "immaculate": 19532,
+ "libby": 19533,
+ "plata": 19534,
+ "smuggling": 19535,
+ "ventilation": 19536,
+ "denoted": 19537,
+ "minh": 19538,
+ "##morphism": 19539,
+ "430": 19540,
+ "differed": 19541,
+ "dion": 19542,
+ "kelley": 19543,
+ "lore": 19544,
+ "mocking": 19545,
+ "sabbath": 19546,
+ "spikes": 19547,
+ "hygiene": 19548,
+ "drown": 19549,
+ "runoff": 19550,
+ "stylized": 19551,
+ "tally": 19552,
+ "liberated": 19553,
+ "aux": 19554,
+ "interpreter": 19555,
+ "righteous": 19556,
+ "aba": 19557,
+ "siren": 19558,
+ "reaper": 19559,
+ "pearce": 19560,
+ "millie": 19561,
+ "##cier": 19562,
+ "##yra": 19563,
+ "gaius": 19564,
+ "##iso": 19565,
+ "captures": 19566,
+ "##ttering": 19567,
+ "dorm": 19568,
+ "claudio": 19569,
+ "##sic": 19570,
+ "benches": 19571,
+ "knighted": 19572,
+ "blackness": 19573,
+ "##ored": 19574,
+ "discount": 19575,
+ "fumble": 19576,
+ "oxidation": 19577,
+ "routed": 19578,
+ "##ς": 19579,
+ "novak": 19580,
+ "perpendicular": 19581,
+ "spoiled": 19582,
+ "fracture": 19583,
+ "splits": 19584,
+ "##urt": 19585,
+ "pads": 19586,
+ "topology": 19587,
+ "##cats": 19588,
+ "axes": 19589,
+ "fortunate": 19590,
+ "offenders": 19591,
+ "protestants": 19592,
+ "esteem": 19593,
+ "221": 19594,
+ "broadband": 19595,
+ "convened": 19596,
+ "frankly": 19597,
+ "hound": 19598,
+ "prototypes": 19599,
+ "isil": 19600,
+ "facilitated": 19601,
+ "keel": 19602,
+ "##sher": 19603,
+ "sahara": 19604,
+ "awaited": 19605,
+ "bubba": 19606,
+ "orb": 19607,
+ "prosecutors": 19608,
+ "186": 19609,
+ "hem": 19610,
+ "520": 19611,
+ "##xing": 19612,
+ "relaxing": 19613,
+ "remnant": 19614,
+ "romney": 19615,
+ "sorted": 19616,
+ "slalom": 19617,
+ "stefano": 19618,
+ "ulrich": 19619,
+ "##active": 19620,
+ "exemption": 19621,
+ "folder": 19622,
+ "pauses": 19623,
+ "foliage": 19624,
+ "hitchcock": 19625,
+ "epithet": 19626,
+ "204": 19627,
+ "criticisms": 19628,
+ "##aca": 19629,
+ "ballistic": 19630,
+ "brody": 19631,
+ "hinduism": 19632,
+ "chaotic": 19633,
+ "youths": 19634,
+ "equals": 19635,
+ "##pala": 19636,
+ "pts": 19637,
+ "thicker": 19638,
+ "analogous": 19639,
+ "capitalist": 19640,
+ "improvised": 19641,
+ "overseeing": 19642,
+ "sinatra": 19643,
+ "ascended": 19644,
+ "beverage": 19645,
+ "##tl": 19646,
+ "straightforward": 19647,
+ "##kon": 19648,
+ "curran": 19649,
+ "##west": 19650,
+ "bois": 19651,
+ "325": 19652,
+ "induce": 19653,
+ "surveying": 19654,
+ "emperors": 19655,
+ "sax": 19656,
+ "unpopular": 19657,
+ "##kk": 19658,
+ "cartoonist": 19659,
+ "fused": 19660,
+ "##mble": 19661,
+ "unto": 19662,
+ "##yuki": 19663,
+ "localities": 19664,
+ "##cko": 19665,
+ "##ln": 19666,
+ "darlington": 19667,
+ "slain": 19668,
+ "academie": 19669,
+ "lobbying": 19670,
+ "sediment": 19671,
+ "puzzles": 19672,
+ "##grass": 19673,
+ "defiance": 19674,
+ "dickens": 19675,
+ "manifest": 19676,
+ "tongues": 19677,
+ "alumnus": 19678,
+ "arbor": 19679,
+ "coincide": 19680,
+ "184": 19681,
+ "appalachian": 19682,
+ "mustafa": 19683,
+ "examiner": 19684,
+ "cabaret": 19685,
+ "traumatic": 19686,
+ "yves": 19687,
+ "bracelet": 19688,
+ "draining": 19689,
+ "heroin": 19690,
+ "magnum": 19691,
+ "baths": 19692,
+ "odessa": 19693,
+ "consonants": 19694,
+ "mitsubishi": 19695,
+ "##gua": 19696,
+ "kellan": 19697,
+ "vaudeville": 19698,
+ "##fr": 19699,
+ "joked": 19700,
+ "null": 19701,
+ "straps": 19702,
+ "probation": 19703,
+ "##ław": 19704,
+ "ceded": 19705,
+ "interfaces": 19706,
+ "##pas": 19707,
+ "##zawa": 19708,
+ "blinding": 19709,
+ "viet": 19710,
+ "224": 19711,
+ "rothschild": 19712,
+ "museo": 19713,
+ "640": 19714,
+ "huddersfield": 19715,
+ "##vr": 19716,
+ "tactic": 19717,
+ "##storm": 19718,
+ "brackets": 19719,
+ "dazed": 19720,
+ "incorrectly": 19721,
+ "##vu": 19722,
+ "reg": 19723,
+ "glazed": 19724,
+ "fearful": 19725,
+ "manifold": 19726,
+ "benefited": 19727,
+ "irony": 19728,
+ "##sun": 19729,
+ "stumbling": 19730,
+ "##rte": 19731,
+ "willingness": 19732,
+ "balkans": 19733,
+ "mei": 19734,
+ "wraps": 19735,
+ "##aba": 19736,
+ "injected": 19737,
+ "##lea": 19738,
+ "gu": 19739,
+ "syed": 19740,
+ "harmless": 19741,
+ "##hammer": 19742,
+ "bray": 19743,
+ "takeoff": 19744,
+ "poppy": 19745,
+ "timor": 19746,
+ "cardboard": 19747,
+ "astronaut": 19748,
+ "purdue": 19749,
+ "weeping": 19750,
+ "southbound": 19751,
+ "cursing": 19752,
+ "stalls": 19753,
+ "diagonal": 19754,
+ "##neer": 19755,
+ "lamar": 19756,
+ "bryce": 19757,
+ "comte": 19758,
+ "weekdays": 19759,
+ "harrington": 19760,
+ "##uba": 19761,
+ "negatively": 19762,
+ "##see": 19763,
+ "lays": 19764,
+ "grouping": 19765,
+ "##cken": 19766,
+ "##henko": 19767,
+ "affirmed": 19768,
+ "halle": 19769,
+ "modernist": 19770,
+ "##lai": 19771,
+ "hodges": 19772,
+ "smelling": 19773,
+ "aristocratic": 19774,
+ "baptized": 19775,
+ "dismiss": 19776,
+ "justification": 19777,
+ "oilers": 19778,
+ "##now": 19779,
+ "coupling": 19780,
+ "qin": 19781,
+ "snack": 19782,
+ "healer": 19783,
+ "##qing": 19784,
+ "gardener": 19785,
+ "layla": 19786,
+ "battled": 19787,
+ "formulated": 19788,
+ "stephenson": 19789,
+ "gravitational": 19790,
+ "##gill": 19791,
+ "##jun": 19792,
+ "1768": 19793,
+ "granny": 19794,
+ "coordinating": 19795,
+ "suites": 19796,
+ "##cd": 19797,
+ "##ioned": 19798,
+ "monarchs": 19799,
+ "##cote": 19800,
+ "##hips": 19801,
+ "sep": 19802,
+ "blended": 19803,
+ "apr": 19804,
+ "barrister": 19805,
+ "deposition": 19806,
+ "fia": 19807,
+ "mina": 19808,
+ "policemen": 19809,
+ "paranoid": 19810,
+ "##pressed": 19811,
+ "churchyard": 19812,
+ "covert": 19813,
+ "crumpled": 19814,
+ "creep": 19815,
+ "abandoning": 19816,
+ "tr": 19817,
+ "transmit": 19818,
+ "conceal": 19819,
+ "barr": 19820,
+ "understands": 19821,
+ "readiness": 19822,
+ "spire": 19823,
+ "##cology": 19824,
+ "##enia": 19825,
+ "##erry": 19826,
+ "610": 19827,
+ "startling": 19828,
+ "unlock": 19829,
+ "vida": 19830,
+ "bowled": 19831,
+ "slots": 19832,
+ "##nat": 19833,
+ "##islav": 19834,
+ "spaced": 19835,
+ "trusting": 19836,
+ "admire": 19837,
+ "rig": 19838,
+ "##ink": 19839,
+ "slack": 19840,
+ "##70": 19841,
+ "mv": 19842,
+ "207": 19843,
+ "casualty": 19844,
+ "##wei": 19845,
+ "classmates": 19846,
+ "##odes": 19847,
+ "##rar": 19848,
+ "##rked": 19849,
+ "amherst": 19850,
+ "furnished": 19851,
+ "evolve": 19852,
+ "foundry": 19853,
+ "menace": 19854,
+ "mead": 19855,
+ "##lein": 19856,
+ "flu": 19857,
+ "wesleyan": 19858,
+ "##kled": 19859,
+ "monterey": 19860,
+ "webber": 19861,
+ "##vos": 19862,
+ "wil": 19863,
+ "##mith": 19864,
+ "##на": 19865,
+ "bartholomew": 19866,
+ "justices": 19867,
+ "restrained": 19868,
+ "##cke": 19869,
+ "amenities": 19870,
+ "191": 19871,
+ "mediated": 19872,
+ "sewage": 19873,
+ "trenches": 19874,
+ "ml": 19875,
+ "mainz": 19876,
+ "##thus": 19877,
+ "1800s": 19878,
+ "##cula": 19879,
+ "##inski": 19880,
+ "caine": 19881,
+ "bonding": 19882,
+ "213": 19883,
+ "converts": 19884,
+ "spheres": 19885,
+ "superseded": 19886,
+ "marianne": 19887,
+ "crypt": 19888,
+ "sweaty": 19889,
+ "ensign": 19890,
+ "historia": 19891,
+ "##br": 19892,
+ "spruce": 19893,
+ "##post": 19894,
+ "##ask": 19895,
+ "forks": 19896,
+ "thoughtfully": 19897,
+ "yukon": 19898,
+ "pamphlet": 19899,
+ "ames": 19900,
+ "##uter": 19901,
+ "karma": 19902,
+ "##yya": 19903,
+ "bryn": 19904,
+ "negotiation": 19905,
+ "sighs": 19906,
+ "incapable": 19907,
+ "##mbre": 19908,
+ "##ntial": 19909,
+ "actresses": 19910,
+ "taft": 19911,
+ "##mill": 19912,
+ "luce": 19913,
+ "prevailed": 19914,
+ "##amine": 19915,
+ "1773": 19916,
+ "motionless": 19917,
+ "envoy": 19918,
+ "testify": 19919,
+ "investing": 19920,
+ "sculpted": 19921,
+ "instructors": 19922,
+ "provence": 19923,
+ "kali": 19924,
+ "cullen": 19925,
+ "horseback": 19926,
+ "##while": 19927,
+ "goodwin": 19928,
+ "##jos": 19929,
+ "gaa": 19930,
+ "norte": 19931,
+ "##ldon": 19932,
+ "modify": 19933,
+ "wavelength": 19934,
+ "abd": 19935,
+ "214": 19936,
+ "skinned": 19937,
+ "sprinter": 19938,
+ "forecast": 19939,
+ "scheduling": 19940,
+ "marries": 19941,
+ "squared": 19942,
+ "tentative": 19943,
+ "##chman": 19944,
+ "boer": 19945,
+ "##isch": 19946,
+ "bolts": 19947,
+ "swap": 19948,
+ "fisherman": 19949,
+ "assyrian": 19950,
+ "impatiently": 19951,
+ "guthrie": 19952,
+ "martins": 19953,
+ "murdoch": 19954,
+ "194": 19955,
+ "tanya": 19956,
+ "nicely": 19957,
+ "dolly": 19958,
+ "lacy": 19959,
+ "med": 19960,
+ "##45": 19961,
+ "syn": 19962,
+ "decks": 19963,
+ "fashionable": 19964,
+ "millionaire": 19965,
+ "##ust": 19966,
+ "surfing": 19967,
+ "##ml": 19968,
+ "##ision": 19969,
+ "heaved": 19970,
+ "tammy": 19971,
+ "consulate": 19972,
+ "attendees": 19973,
+ "routinely": 19974,
+ "197": 19975,
+ "fuse": 19976,
+ "saxophonist": 19977,
+ "backseat": 19978,
+ "malaya": 19979,
+ "##lord": 19980,
+ "scowl": 19981,
+ "tau": 19982,
+ "##ishly": 19983,
+ "193": 19984,
+ "sighted": 19985,
+ "steaming": 19986,
+ "##rks": 19987,
+ "303": 19988,
+ "911": 19989,
+ "##holes": 19990,
+ "##hong": 19991,
+ "ching": 19992,
+ "##wife": 19993,
+ "bless": 19994,
+ "conserved": 19995,
+ "jurassic": 19996,
+ "stacey": 19997,
+ "unix": 19998,
+ "zion": 19999,
+ "chunk": 20000,
+ "rigorous": 20001,
+ "blaine": 20002,
+ "198": 20003,
+ "peabody": 20004,
+ "slayer": 20005,
+ "dismay": 20006,
+ "brewers": 20007,
+ "nz": 20008,
+ "##jer": 20009,
+ "det": 20010,
+ "##glia": 20011,
+ "glover": 20012,
+ "postwar": 20013,
+ "int": 20014,
+ "penetration": 20015,
+ "sylvester": 20016,
+ "imitation": 20017,
+ "vertically": 20018,
+ "airlift": 20019,
+ "heiress": 20020,
+ "knoxville": 20021,
+ "viva": 20022,
+ "##uin": 20023,
+ "390": 20024,
+ "macon": 20025,
+ "##rim": 20026,
+ "##fighter": 20027,
+ "##gonal": 20028,
+ "janice": 20029,
+ "##orescence": 20030,
+ "##wari": 20031,
+ "marius": 20032,
+ "belongings": 20033,
+ "leicestershire": 20034,
+ "196": 20035,
+ "blanco": 20036,
+ "inverted": 20037,
+ "preseason": 20038,
+ "sanity": 20039,
+ "sobbing": 20040,
+ "##due": 20041,
+ "##elt": 20042,
+ "##dled": 20043,
+ "collingwood": 20044,
+ "regeneration": 20045,
+ "flickering": 20046,
+ "shortest": 20047,
+ "##mount": 20048,
+ "##osi": 20049,
+ "feminism": 20050,
+ "##lat": 20051,
+ "sherlock": 20052,
+ "cabinets": 20053,
+ "fumbled": 20054,
+ "northbound": 20055,
+ "precedent": 20056,
+ "snaps": 20057,
+ "##mme": 20058,
+ "researching": 20059,
+ "##akes": 20060,
+ "guillaume": 20061,
+ "insights": 20062,
+ "manipulated": 20063,
+ "vapor": 20064,
+ "neighbour": 20065,
+ "sap": 20066,
+ "gangster": 20067,
+ "frey": 20068,
+ "f1": 20069,
+ "stalking": 20070,
+ "scarcely": 20071,
+ "callie": 20072,
+ "barnett": 20073,
+ "tendencies": 20074,
+ "audi": 20075,
+ "doomed": 20076,
+ "assessing": 20077,
+ "slung": 20078,
+ "panchayat": 20079,
+ "ambiguous": 20080,
+ "bartlett": 20081,
+ "##etto": 20082,
+ "distributing": 20083,
+ "violating": 20084,
+ "wolverhampton": 20085,
+ "##hetic": 20086,
+ "swami": 20087,
+ "histoire": 20088,
+ "##urus": 20089,
+ "liable": 20090,
+ "pounder": 20091,
+ "groin": 20092,
+ "hussain": 20093,
+ "larsen": 20094,
+ "popping": 20095,
+ "surprises": 20096,
+ "##atter": 20097,
+ "vie": 20098,
+ "curt": 20099,
+ "##station": 20100,
+ "mute": 20101,
+ "relocate": 20102,
+ "musicals": 20103,
+ "authorization": 20104,
+ "richter": 20105,
+ "##sef": 20106,
+ "immortality": 20107,
+ "tna": 20108,
+ "bombings": 20109,
+ "##press": 20110,
+ "deteriorated": 20111,
+ "yiddish": 20112,
+ "##acious": 20113,
+ "robbed": 20114,
+ "colchester": 20115,
+ "cs": 20116,
+ "pmid": 20117,
+ "ao": 20118,
+ "verified": 20119,
+ "balancing": 20120,
+ "apostle": 20121,
+ "swayed": 20122,
+ "recognizable": 20123,
+ "oxfordshire": 20124,
+ "retention": 20125,
+ "nottinghamshire": 20126,
+ "contender": 20127,
+ "judd": 20128,
+ "invitational": 20129,
+ "shrimp": 20130,
+ "uhf": 20131,
+ "##icient": 20132,
+ "cleaner": 20133,
+ "longitudinal": 20134,
+ "tanker": 20135,
+ "##mur": 20136,
+ "acronym": 20137,
+ "broker": 20138,
+ "koppen": 20139,
+ "sundance": 20140,
+ "suppliers": 20141,
+ "##gil": 20142,
+ "4000": 20143,
+ "clipped": 20144,
+ "fuels": 20145,
+ "petite": 20146,
+ "##anne": 20147,
+ "landslide": 20148,
+ "helene": 20149,
+ "diversion": 20150,
+ "populous": 20151,
+ "landowners": 20152,
+ "auspices": 20153,
+ "melville": 20154,
+ "quantitative": 20155,
+ "##xes": 20156,
+ "ferries": 20157,
+ "nicky": 20158,
+ "##llus": 20159,
+ "doo": 20160,
+ "haunting": 20161,
+ "roche": 20162,
+ "carver": 20163,
+ "downed": 20164,
+ "unavailable": 20165,
+ "##pathy": 20166,
+ "approximation": 20167,
+ "hiroshima": 20168,
+ "##hue": 20169,
+ "garfield": 20170,
+ "valle": 20171,
+ "comparatively": 20172,
+ "keyboardist": 20173,
+ "traveler": 20174,
+ "##eit": 20175,
+ "congestion": 20176,
+ "calculating": 20177,
+ "subsidiaries": 20178,
+ "##bate": 20179,
+ "serb": 20180,
+ "modernization": 20181,
+ "fairies": 20182,
+ "deepened": 20183,
+ "ville": 20184,
+ "averages": 20185,
+ "##lore": 20186,
+ "inflammatory": 20187,
+ "tonga": 20188,
+ "##itch": 20189,
+ "co₂": 20190,
+ "squads": 20191,
+ "##hea": 20192,
+ "gigantic": 20193,
+ "serum": 20194,
+ "enjoyment": 20195,
+ "retailer": 20196,
+ "verona": 20197,
+ "35th": 20198,
+ "cis": 20199,
+ "##phobic": 20200,
+ "magna": 20201,
+ "technicians": 20202,
+ "##vati": 20203,
+ "arithmetic": 20204,
+ "##sport": 20205,
+ "levin": 20206,
+ "##dation": 20207,
+ "amtrak": 20208,
+ "chow": 20209,
+ "sienna": 20210,
+ "##eyer": 20211,
+ "backstage": 20212,
+ "entrepreneurship": 20213,
+ "##otic": 20214,
+ "learnt": 20215,
+ "tao": 20216,
+ "##udy": 20217,
+ "worcestershire": 20218,
+ "formulation": 20219,
+ "baggage": 20220,
+ "hesitant": 20221,
+ "bali": 20222,
+ "sabotage": 20223,
+ "##kari": 20224,
+ "barren": 20225,
+ "enhancing": 20226,
+ "murmur": 20227,
+ "pl": 20228,
+ "freshly": 20229,
+ "putnam": 20230,
+ "syntax": 20231,
+ "aces": 20232,
+ "medicines": 20233,
+ "resentment": 20234,
+ "bandwidth": 20235,
+ "##sier": 20236,
+ "grins": 20237,
+ "chili": 20238,
+ "guido": 20239,
+ "##sei": 20240,
+ "framing": 20241,
+ "implying": 20242,
+ "gareth": 20243,
+ "lissa": 20244,
+ "genevieve": 20245,
+ "pertaining": 20246,
+ "admissions": 20247,
+ "geo": 20248,
+ "thorpe": 20249,
+ "proliferation": 20250,
+ "sato": 20251,
+ "bela": 20252,
+ "analyzing": 20253,
+ "parting": 20254,
+ "##gor": 20255,
+ "awakened": 20256,
+ "##isman": 20257,
+ "huddled": 20258,
+ "secrecy": 20259,
+ "##kling": 20260,
+ "hush": 20261,
+ "gentry": 20262,
+ "540": 20263,
+ "dungeons": 20264,
+ "##ego": 20265,
+ "coasts": 20266,
+ "##utz": 20267,
+ "sacrificed": 20268,
+ "##chule": 20269,
+ "landowner": 20270,
+ "mutually": 20271,
+ "prevalence": 20272,
+ "programmer": 20273,
+ "adolescent": 20274,
+ "disrupted": 20275,
+ "seaside": 20276,
+ "gee": 20277,
+ "trusts": 20278,
+ "vamp": 20279,
+ "georgie": 20280,
+ "##nesian": 20281,
+ "##iol": 20282,
+ "schedules": 20283,
+ "sindh": 20284,
+ "##market": 20285,
+ "etched": 20286,
+ "hm": 20287,
+ "sparse": 20288,
+ "bey": 20289,
+ "beaux": 20290,
+ "scratching": 20291,
+ "gliding": 20292,
+ "unidentified": 20293,
+ "216": 20294,
+ "collaborating": 20295,
+ "gems": 20296,
+ "jesuits": 20297,
+ "oro": 20298,
+ "accumulation": 20299,
+ "shaping": 20300,
+ "mbe": 20301,
+ "anal": 20302,
+ "##xin": 20303,
+ "231": 20304,
+ "enthusiasts": 20305,
+ "newscast": 20306,
+ "##egan": 20307,
+ "janata": 20308,
+ "dewey": 20309,
+ "parkinson": 20310,
+ "179": 20311,
+ "ankara": 20312,
+ "biennial": 20313,
+ "towering": 20314,
+ "dd": 20315,
+ "inconsistent": 20316,
+ "950": 20317,
+ "##chet": 20318,
+ "thriving": 20319,
+ "terminate": 20320,
+ "cabins": 20321,
+ "furiously": 20322,
+ "eats": 20323,
+ "advocating": 20324,
+ "donkey": 20325,
+ "marley": 20326,
+ "muster": 20327,
+ "phyllis": 20328,
+ "leiden": 20329,
+ "##user": 20330,
+ "grassland": 20331,
+ "glittering": 20332,
+ "iucn": 20333,
+ "loneliness": 20334,
+ "217": 20335,
+ "memorandum": 20336,
+ "armenians": 20337,
+ "##ddle": 20338,
+ "popularized": 20339,
+ "rhodesia": 20340,
+ "60s": 20341,
+ "lame": 20342,
+ "##illon": 20343,
+ "sans": 20344,
+ "bikini": 20345,
+ "header": 20346,
+ "orbits": 20347,
+ "##xx": 20348,
+ "##finger": 20349,
+ "##ulator": 20350,
+ "sharif": 20351,
+ "spines": 20352,
+ "biotechnology": 20353,
+ "strolled": 20354,
+ "naughty": 20355,
+ "yates": 20356,
+ "##wire": 20357,
+ "fremantle": 20358,
+ "milo": 20359,
+ "##mour": 20360,
+ "abducted": 20361,
+ "removes": 20362,
+ "##atin": 20363,
+ "humming": 20364,
+ "wonderland": 20365,
+ "##chrome": 20366,
+ "##ester": 20367,
+ "hume": 20368,
+ "pivotal": 20369,
+ "##rates": 20370,
+ "armand": 20371,
+ "grams": 20372,
+ "believers": 20373,
+ "elector": 20374,
+ "rte": 20375,
+ "apron": 20376,
+ "bis": 20377,
+ "scraped": 20378,
+ "##yria": 20379,
+ "endorsement": 20380,
+ "initials": 20381,
+ "##llation": 20382,
+ "eps": 20383,
+ "dotted": 20384,
+ "hints": 20385,
+ "buzzing": 20386,
+ "emigration": 20387,
+ "nearer": 20388,
+ "##tom": 20389,
+ "indicators": 20390,
+ "##ulu": 20391,
+ "coarse": 20392,
+ "neutron": 20393,
+ "protectorate": 20394,
+ "##uze": 20395,
+ "directional": 20396,
+ "exploits": 20397,
+ "pains": 20398,
+ "loire": 20399,
+ "1830s": 20400,
+ "proponents": 20401,
+ "guggenheim": 20402,
+ "rabbits": 20403,
+ "ritchie": 20404,
+ "305": 20405,
+ "hectare": 20406,
+ "inputs": 20407,
+ "hutton": 20408,
+ "##raz": 20409,
+ "verify": 20410,
+ "##ako": 20411,
+ "boilers": 20412,
+ "longitude": 20413,
+ "##lev": 20414,
+ "skeletal": 20415,
+ "yer": 20416,
+ "emilia": 20417,
+ "citrus": 20418,
+ "compromised": 20419,
+ "##gau": 20420,
+ "pokemon": 20421,
+ "prescription": 20422,
+ "paragraph": 20423,
+ "eduard": 20424,
+ "cadillac": 20425,
+ "attire": 20426,
+ "categorized": 20427,
+ "kenyan": 20428,
+ "weddings": 20429,
+ "charley": 20430,
+ "##bourg": 20431,
+ "entertain": 20432,
+ "monmouth": 20433,
+ "##lles": 20434,
+ "nutrients": 20435,
+ "davey": 20436,
+ "mesh": 20437,
+ "incentive": 20438,
+ "practised": 20439,
+ "ecosystems": 20440,
+ "kemp": 20441,
+ "subdued": 20442,
+ "overheard": 20443,
+ "##rya": 20444,
+ "bodily": 20445,
+ "maxim": 20446,
+ "##nius": 20447,
+ "apprenticeship": 20448,
+ "ursula": 20449,
+ "##fight": 20450,
+ "lodged": 20451,
+ "rug": 20452,
+ "silesian": 20453,
+ "unconstitutional": 20454,
+ "patel": 20455,
+ "inspected": 20456,
+ "coyote": 20457,
+ "unbeaten": 20458,
+ "##hak": 20459,
+ "34th": 20460,
+ "disruption": 20461,
+ "convict": 20462,
+ "parcel": 20463,
+ "##cl": 20464,
+ "##nham": 20465,
+ "collier": 20466,
+ "implicated": 20467,
+ "mallory": 20468,
+ "##iac": 20469,
+ "##lab": 20470,
+ "susannah": 20471,
+ "winkler": 20472,
+ "##rber": 20473,
+ "shia": 20474,
+ "phelps": 20475,
+ "sediments": 20476,
+ "graphical": 20477,
+ "robotic": 20478,
+ "##sner": 20479,
+ "adulthood": 20480,
+ "mart": 20481,
+ "smoked": 20482,
+ "##isto": 20483,
+ "kathryn": 20484,
+ "clarified": 20485,
+ "##aran": 20486,
+ "divides": 20487,
+ "convictions": 20488,
+ "oppression": 20489,
+ "pausing": 20490,
+ "burying": 20491,
+ "##mt": 20492,
+ "federico": 20493,
+ "mathias": 20494,
+ "eileen": 20495,
+ "##tana": 20496,
+ "kite": 20497,
+ "hunched": 20498,
+ "##acies": 20499,
+ "189": 20500,
+ "##atz": 20501,
+ "disadvantage": 20502,
+ "liza": 20503,
+ "kinetic": 20504,
+ "greedy": 20505,
+ "paradox": 20506,
+ "yokohama": 20507,
+ "dowager": 20508,
+ "trunks": 20509,
+ "ventured": 20510,
+ "##gement": 20511,
+ "gupta": 20512,
+ "vilnius": 20513,
+ "olaf": 20514,
+ "##thest": 20515,
+ "crimean": 20516,
+ "hopper": 20517,
+ "##ej": 20518,
+ "progressively": 20519,
+ "arturo": 20520,
+ "mouthed": 20521,
+ "arrondissement": 20522,
+ "##fusion": 20523,
+ "rubin": 20524,
+ "simulcast": 20525,
+ "oceania": 20526,
+ "##orum": 20527,
+ "##stra": 20528,
+ "##rred": 20529,
+ "busiest": 20530,
+ "intensely": 20531,
+ "navigator": 20532,
+ "cary": 20533,
+ "##vine": 20534,
+ "##hini": 20535,
+ "##bies": 20536,
+ "fife": 20537,
+ "rowe": 20538,
+ "rowland": 20539,
+ "posing": 20540,
+ "insurgents": 20541,
+ "shafts": 20542,
+ "lawsuits": 20543,
+ "activate": 20544,
+ "conor": 20545,
+ "inward": 20546,
+ "culturally": 20547,
+ "garlic": 20548,
+ "265": 20549,
+ "##eering": 20550,
+ "eclectic": 20551,
+ "##hui": 20552,
+ "##kee": 20553,
+ "##nl": 20554,
+ "furrowed": 20555,
+ "vargas": 20556,
+ "meteorological": 20557,
+ "rendezvous": 20558,
+ "##aus": 20559,
+ "culinary": 20560,
+ "commencement": 20561,
+ "##dition": 20562,
+ "quota": 20563,
+ "##notes": 20564,
+ "mommy": 20565,
+ "salaries": 20566,
+ "overlapping": 20567,
+ "mule": 20568,
+ "##iology": 20569,
+ "##mology": 20570,
+ "sums": 20571,
+ "wentworth": 20572,
+ "##isk": 20573,
+ "##zione": 20574,
+ "mainline": 20575,
+ "subgroup": 20576,
+ "##illy": 20577,
+ "hack": 20578,
+ "plaintiff": 20579,
+ "verdi": 20580,
+ "bulb": 20581,
+ "differentiation": 20582,
+ "engagements": 20583,
+ "multinational": 20584,
+ "supplemented": 20585,
+ "bertrand": 20586,
+ "caller": 20587,
+ "regis": 20588,
+ "##naire": 20589,
+ "##sler": 20590,
+ "##arts": 20591,
+ "##imated": 20592,
+ "blossom": 20593,
+ "propagation": 20594,
+ "kilometer": 20595,
+ "viaduct": 20596,
+ "vineyards": 20597,
+ "##uate": 20598,
+ "beckett": 20599,
+ "optimization": 20600,
+ "golfer": 20601,
+ "songwriters": 20602,
+ "seminal": 20603,
+ "semitic": 20604,
+ "thud": 20605,
+ "volatile": 20606,
+ "evolving": 20607,
+ "ridley": 20608,
+ "##wley": 20609,
+ "trivial": 20610,
+ "distributions": 20611,
+ "scandinavia": 20612,
+ "jiang": 20613,
+ "##ject": 20614,
+ "wrestled": 20615,
+ "insistence": 20616,
+ "##dio": 20617,
+ "emphasizes": 20618,
+ "napkin": 20619,
+ "##ods": 20620,
+ "adjunct": 20621,
+ "rhyme": 20622,
+ "##ricted": 20623,
+ "##eti": 20624,
+ "hopeless": 20625,
+ "surrounds": 20626,
+ "tremble": 20627,
+ "32nd": 20628,
+ "smoky": 20629,
+ "##ntly": 20630,
+ "oils": 20631,
+ "medicinal": 20632,
+ "padded": 20633,
+ "steer": 20634,
+ "wilkes": 20635,
+ "219": 20636,
+ "255": 20637,
+ "concessions": 20638,
+ "hue": 20639,
+ "uniquely": 20640,
+ "blinded": 20641,
+ "landon": 20642,
+ "yahoo": 20643,
+ "##lane": 20644,
+ "hendrix": 20645,
+ "commemorating": 20646,
+ "dex": 20647,
+ "specify": 20648,
+ "chicks": 20649,
+ "##ggio": 20650,
+ "intercity": 20651,
+ "1400": 20652,
+ "morley": 20653,
+ "##torm": 20654,
+ "highlighting": 20655,
+ "##oting": 20656,
+ "pang": 20657,
+ "oblique": 20658,
+ "stalled": 20659,
+ "##liner": 20660,
+ "flirting": 20661,
+ "newborn": 20662,
+ "1769": 20663,
+ "bishopric": 20664,
+ "shaved": 20665,
+ "232": 20666,
+ "currie": 20667,
+ "##ush": 20668,
+ "dharma": 20669,
+ "spartan": 20670,
+ "##ooped": 20671,
+ "favorites": 20672,
+ "smug": 20673,
+ "novella": 20674,
+ "sirens": 20675,
+ "abusive": 20676,
+ "creations": 20677,
+ "espana": 20678,
+ "##lage": 20679,
+ "paradigm": 20680,
+ "semiconductor": 20681,
+ "sheen": 20682,
+ "##rdo": 20683,
+ "##yen": 20684,
+ "##zak": 20685,
+ "nrl": 20686,
+ "renew": 20687,
+ "##pose": 20688,
+ "##tur": 20689,
+ "adjutant": 20690,
+ "marches": 20691,
+ "norma": 20692,
+ "##enity": 20693,
+ "ineffective": 20694,
+ "weimar": 20695,
+ "grunt": 20696,
+ "##gat": 20697,
+ "lordship": 20698,
+ "plotting": 20699,
+ "expenditure": 20700,
+ "infringement": 20701,
+ "lbs": 20702,
+ "refrain": 20703,
+ "av": 20704,
+ "mimi": 20705,
+ "mistakenly": 20706,
+ "postmaster": 20707,
+ "1771": 20708,
+ "##bara": 20709,
+ "ras": 20710,
+ "motorsports": 20711,
+ "tito": 20712,
+ "199": 20713,
+ "subjective": 20714,
+ "##zza": 20715,
+ "bully": 20716,
+ "stew": 20717,
+ "##kaya": 20718,
+ "prescott": 20719,
+ "1a": 20720,
+ "##raphic": 20721,
+ "##zam": 20722,
+ "bids": 20723,
+ "styling": 20724,
+ "paranormal": 20725,
+ "reeve": 20726,
+ "sneaking": 20727,
+ "exploding": 20728,
+ "katz": 20729,
+ "akbar": 20730,
+ "migrant": 20731,
+ "syllables": 20732,
+ "indefinitely": 20733,
+ "##ogical": 20734,
+ "destroys": 20735,
+ "replaces": 20736,
+ "applause": 20737,
+ "##phine": 20738,
+ "pest": 20739,
+ "##fide": 20740,
+ "218": 20741,
+ "articulated": 20742,
+ "bertie": 20743,
+ "##thing": 20744,
+ "##cars": 20745,
+ "##ptic": 20746,
+ "courtroom": 20747,
+ "crowley": 20748,
+ "aesthetics": 20749,
+ "cummings": 20750,
+ "tehsil": 20751,
+ "hormones": 20752,
+ "titanic": 20753,
+ "dangerously": 20754,
+ "##ibe": 20755,
+ "stadion": 20756,
+ "jaenelle": 20757,
+ "auguste": 20758,
+ "ciudad": 20759,
+ "##chu": 20760,
+ "mysore": 20761,
+ "partisans": 20762,
+ "##sio": 20763,
+ "lucan": 20764,
+ "philipp": 20765,
+ "##aly": 20766,
+ "debating": 20767,
+ "henley": 20768,
+ "interiors": 20769,
+ "##rano": 20770,
+ "##tious": 20771,
+ "homecoming": 20772,
+ "beyonce": 20773,
+ "usher": 20774,
+ "henrietta": 20775,
+ "prepares": 20776,
+ "weeds": 20777,
+ "##oman": 20778,
+ "ely": 20779,
+ "plucked": 20780,
+ "##pire": 20781,
+ "##dable": 20782,
+ "luxurious": 20783,
+ "##aq": 20784,
+ "artifact": 20785,
+ "password": 20786,
+ "pasture": 20787,
+ "juno": 20788,
+ "maddy": 20789,
+ "minsk": 20790,
+ "##dder": 20791,
+ "##ologies": 20792,
+ "##rone": 20793,
+ "assessments": 20794,
+ "martian": 20795,
+ "royalist": 20796,
+ "1765": 20797,
+ "examines": 20798,
+ "##mani": 20799,
+ "##rge": 20800,
+ "nino": 20801,
+ "223": 20802,
+ "parry": 20803,
+ "scooped": 20804,
+ "relativity": 20805,
+ "##eli": 20806,
+ "##uting": 20807,
+ "##cao": 20808,
+ "congregational": 20809,
+ "noisy": 20810,
+ "traverse": 20811,
+ "##agawa": 20812,
+ "strikeouts": 20813,
+ "nickelodeon": 20814,
+ "obituary": 20815,
+ "transylvania": 20816,
+ "binds": 20817,
+ "depictions": 20818,
+ "polk": 20819,
+ "trolley": 20820,
+ "##yed": 20821,
+ "##lard": 20822,
+ "breeders": 20823,
+ "##under": 20824,
+ "dryly": 20825,
+ "hokkaido": 20826,
+ "1762": 20827,
+ "strengths": 20828,
+ "stacks": 20829,
+ "bonaparte": 20830,
+ "connectivity": 20831,
+ "neared": 20832,
+ "prostitutes": 20833,
+ "stamped": 20834,
+ "anaheim": 20835,
+ "gutierrez": 20836,
+ "sinai": 20837,
+ "##zzling": 20838,
+ "bram": 20839,
+ "fresno": 20840,
+ "madhya": 20841,
+ "##86": 20842,
+ "proton": 20843,
+ "##lena": 20844,
+ "##llum": 20845,
+ "##phon": 20846,
+ "reelected": 20847,
+ "wanda": 20848,
+ "##anus": 20849,
+ "##lb": 20850,
+ "ample": 20851,
+ "distinguishing": 20852,
+ "##yler": 20853,
+ "grasping": 20854,
+ "sermons": 20855,
+ "tomato": 20856,
+ "bland": 20857,
+ "stimulation": 20858,
+ "avenues": 20859,
+ "##eux": 20860,
+ "spreads": 20861,
+ "scarlett": 20862,
+ "fern": 20863,
+ "pentagon": 20864,
+ "assert": 20865,
+ "baird": 20866,
+ "chesapeake": 20867,
+ "ir": 20868,
+ "calmed": 20869,
+ "distortion": 20870,
+ "fatalities": 20871,
+ "##olis": 20872,
+ "correctional": 20873,
+ "pricing": 20874,
+ "##astic": 20875,
+ "##gina": 20876,
+ "prom": 20877,
+ "dammit": 20878,
+ "ying": 20879,
+ "collaborate": 20880,
+ "##chia": 20881,
+ "welterweight": 20882,
+ "33rd": 20883,
+ "pointer": 20884,
+ "substitution": 20885,
+ "bonded": 20886,
+ "umpire": 20887,
+ "communicating": 20888,
+ "multitude": 20889,
+ "paddle": 20890,
+ "##obe": 20891,
+ "federally": 20892,
+ "intimacy": 20893,
+ "##insky": 20894,
+ "betray": 20895,
+ "ssr": 20896,
+ "##lett": 20897,
+ "##lean": 20898,
+ "##lves": 20899,
+ "##therapy": 20900,
+ "airbus": 20901,
+ "##tery": 20902,
+ "functioned": 20903,
+ "ud": 20904,
+ "bearer": 20905,
+ "biomedical": 20906,
+ "netflix": 20907,
+ "##hire": 20908,
+ "##nca": 20909,
+ "condom": 20910,
+ "brink": 20911,
+ "ik": 20912,
+ "##nical": 20913,
+ "macy": 20914,
+ "##bet": 20915,
+ "flap": 20916,
+ "gma": 20917,
+ "experimented": 20918,
+ "jelly": 20919,
+ "lavender": 20920,
+ "##icles": 20921,
+ "##ulia": 20922,
+ "munro": 20923,
+ "##mian": 20924,
+ "##tial": 20925,
+ "rye": 20926,
+ "##rle": 20927,
+ "60th": 20928,
+ "gigs": 20929,
+ "hottest": 20930,
+ "rotated": 20931,
+ "predictions": 20932,
+ "fuji": 20933,
+ "bu": 20934,
+ "##erence": 20935,
+ "##omi": 20936,
+ "barangay": 20937,
+ "##fulness": 20938,
+ "##sas": 20939,
+ "clocks": 20940,
+ "##rwood": 20941,
+ "##liness": 20942,
+ "cereal": 20943,
+ "roe": 20944,
+ "wight": 20945,
+ "decker": 20946,
+ "uttered": 20947,
+ "babu": 20948,
+ "onion": 20949,
+ "xml": 20950,
+ "forcibly": 20951,
+ "##df": 20952,
+ "petra": 20953,
+ "sarcasm": 20954,
+ "hartley": 20955,
+ "peeled": 20956,
+ "storytelling": 20957,
+ "##42": 20958,
+ "##xley": 20959,
+ "##ysis": 20960,
+ "##ffa": 20961,
+ "fibre": 20962,
+ "kiel": 20963,
+ "auditor": 20964,
+ "fig": 20965,
+ "harald": 20966,
+ "greenville": 20967,
+ "##berries": 20968,
+ "geographically": 20969,
+ "nell": 20970,
+ "quartz": 20971,
+ "##athic": 20972,
+ "cemeteries": 20973,
+ "##lr": 20974,
+ "crossings": 20975,
+ "nah": 20976,
+ "holloway": 20977,
+ "reptiles": 20978,
+ "chun": 20979,
+ "sichuan": 20980,
+ "snowy": 20981,
+ "660": 20982,
+ "corrections": 20983,
+ "##ivo": 20984,
+ "zheng": 20985,
+ "ambassadors": 20986,
+ "blacksmith": 20987,
+ "fielded": 20988,
+ "fluids": 20989,
+ "hardcover": 20990,
+ "turnover": 20991,
+ "medications": 20992,
+ "melvin": 20993,
+ "academies": 20994,
+ "##erton": 20995,
+ "ro": 20996,
+ "roach": 20997,
+ "absorbing": 20998,
+ "spaniards": 20999,
+ "colton": 21000,
+ "##founded": 21001,
+ "outsider": 21002,
+ "espionage": 21003,
+ "kelsey": 21004,
+ "245": 21005,
+ "edible": 21006,
+ "##ulf": 21007,
+ "dora": 21008,
+ "establishes": 21009,
+ "##sham": 21010,
+ "##tries": 21011,
+ "contracting": 21012,
+ "##tania": 21013,
+ "cinematic": 21014,
+ "costello": 21015,
+ "nesting": 21016,
+ "##uron": 21017,
+ "connolly": 21018,
+ "duff": 21019,
+ "##nology": 21020,
+ "mma": 21021,
+ "##mata": 21022,
+ "fergus": 21023,
+ "sexes": 21024,
+ "gi": 21025,
+ "optics": 21026,
+ "spectator": 21027,
+ "woodstock": 21028,
+ "banning": 21029,
+ "##hee": 21030,
+ "##fle": 21031,
+ "differentiate": 21032,
+ "outfielder": 21033,
+ "refinery": 21034,
+ "226": 21035,
+ "312": 21036,
+ "gerhard": 21037,
+ "horde": 21038,
+ "lair": 21039,
+ "drastically": 21040,
+ "##udi": 21041,
+ "landfall": 21042,
+ "##cheng": 21043,
+ "motorsport": 21044,
+ "odi": 21045,
+ "##achi": 21046,
+ "predominant": 21047,
+ "quay": 21048,
+ "skins": 21049,
+ "##ental": 21050,
+ "edna": 21051,
+ "harshly": 21052,
+ "complementary": 21053,
+ "murdering": 21054,
+ "##aves": 21055,
+ "wreckage": 21056,
+ "##90": 21057,
+ "ono": 21058,
+ "outstretched": 21059,
+ "lennox": 21060,
+ "munitions": 21061,
+ "galen": 21062,
+ "reconcile": 21063,
+ "470": 21064,
+ "scalp": 21065,
+ "bicycles": 21066,
+ "gillespie": 21067,
+ "questionable": 21068,
+ "rosenberg": 21069,
+ "guillermo": 21070,
+ "hostel": 21071,
+ "jarvis": 21072,
+ "kabul": 21073,
+ "volvo": 21074,
+ "opium": 21075,
+ "yd": 21076,
+ "##twined": 21077,
+ "abuses": 21078,
+ "decca": 21079,
+ "outpost": 21080,
+ "##cino": 21081,
+ "sensible": 21082,
+ "neutrality": 21083,
+ "##64": 21084,
+ "ponce": 21085,
+ "anchorage": 21086,
+ "atkins": 21087,
+ "turrets": 21088,
+ "inadvertently": 21089,
+ "disagree": 21090,
+ "libre": 21091,
+ "vodka": 21092,
+ "reassuring": 21093,
+ "weighs": 21094,
+ "##yal": 21095,
+ "glide": 21096,
+ "jumper": 21097,
+ "ceilings": 21098,
+ "repertory": 21099,
+ "outs": 21100,
+ "stain": 21101,
+ "##bial": 21102,
+ "envy": 21103,
+ "##ucible": 21104,
+ "smashing": 21105,
+ "heightened": 21106,
+ "policing": 21107,
+ "hyun": 21108,
+ "mixes": 21109,
+ "lai": 21110,
+ "prima": 21111,
+ "##ples": 21112,
+ "celeste": 21113,
+ "##bina": 21114,
+ "lucrative": 21115,
+ "intervened": 21116,
+ "kc": 21117,
+ "manually": 21118,
+ "##rned": 21119,
+ "stature": 21120,
+ "staffed": 21121,
+ "bun": 21122,
+ "bastards": 21123,
+ "nairobi": 21124,
+ "priced": 21125,
+ "##auer": 21126,
+ "thatcher": 21127,
+ "##kia": 21128,
+ "tripped": 21129,
+ "comune": 21130,
+ "##ogan": 21131,
+ "##pled": 21132,
+ "brasil": 21133,
+ "incentives": 21134,
+ "emanuel": 21135,
+ "hereford": 21136,
+ "musica": 21137,
+ "##kim": 21138,
+ "benedictine": 21139,
+ "biennale": 21140,
+ "##lani": 21141,
+ "eureka": 21142,
+ "gardiner": 21143,
+ "rb": 21144,
+ "knocks": 21145,
+ "sha": 21146,
+ "##ael": 21147,
+ "##elled": 21148,
+ "##onate": 21149,
+ "efficacy": 21150,
+ "ventura": 21151,
+ "masonic": 21152,
+ "sanford": 21153,
+ "maize": 21154,
+ "leverage": 21155,
+ "##feit": 21156,
+ "capacities": 21157,
+ "santana": 21158,
+ "##aur": 21159,
+ "novelty": 21160,
+ "vanilla": 21161,
+ "##cter": 21162,
+ "##tour": 21163,
+ "benin": 21164,
+ "##oir": 21165,
+ "##rain": 21166,
+ "neptune": 21167,
+ "drafting": 21168,
+ "tallinn": 21169,
+ "##cable": 21170,
+ "humiliation": 21171,
+ "##boarding": 21172,
+ "schleswig": 21173,
+ "fabian": 21174,
+ "bernardo": 21175,
+ "liturgy": 21176,
+ "spectacle": 21177,
+ "sweeney": 21178,
+ "pont": 21179,
+ "routledge": 21180,
+ "##tment": 21181,
+ "cosmos": 21182,
+ "ut": 21183,
+ "hilt": 21184,
+ "sleek": 21185,
+ "universally": 21186,
+ "##eville": 21187,
+ "##gawa": 21188,
+ "typed": 21189,
+ "##dry": 21190,
+ "favors": 21191,
+ "allegheny": 21192,
+ "glaciers": 21193,
+ "##rly": 21194,
+ "recalling": 21195,
+ "aziz": 21196,
+ "##log": 21197,
+ "parasite": 21198,
+ "requiem": 21199,
+ "auf": 21200,
+ "##berto": 21201,
+ "##llin": 21202,
+ "illumination": 21203,
+ "##breaker": 21204,
+ "##issa": 21205,
+ "festivities": 21206,
+ "bows": 21207,
+ "govern": 21208,
+ "vibe": 21209,
+ "vp": 21210,
+ "333": 21211,
+ "sprawled": 21212,
+ "larson": 21213,
+ "pilgrim": 21214,
+ "bwf": 21215,
+ "leaping": 21216,
+ "##rts": 21217,
+ "##ssel": 21218,
+ "alexei": 21219,
+ "greyhound": 21220,
+ "hoarse": 21221,
+ "##dler": 21222,
+ "##oration": 21223,
+ "seneca": 21224,
+ "##cule": 21225,
+ "gaping": 21226,
+ "##ulously": 21227,
+ "##pura": 21228,
+ "cinnamon": 21229,
+ "##gens": 21230,
+ "##rricular": 21231,
+ "craven": 21232,
+ "fantasies": 21233,
+ "houghton": 21234,
+ "engined": 21235,
+ "reigned": 21236,
+ "dictator": 21237,
+ "supervising": 21238,
+ "##oris": 21239,
+ "bogota": 21240,
+ "commentaries": 21241,
+ "unnatural": 21242,
+ "fingernails": 21243,
+ "spirituality": 21244,
+ "tighten": 21245,
+ "##tm": 21246,
+ "canadiens": 21247,
+ "protesting": 21248,
+ "intentional": 21249,
+ "cheers": 21250,
+ "sparta": 21251,
+ "##ytic": 21252,
+ "##iere": 21253,
+ "##zine": 21254,
+ "widen": 21255,
+ "belgarath": 21256,
+ "controllers": 21257,
+ "dodd": 21258,
+ "iaaf": 21259,
+ "navarre": 21260,
+ "##ication": 21261,
+ "defect": 21262,
+ "squire": 21263,
+ "steiner": 21264,
+ "whisky": 21265,
+ "##mins": 21266,
+ "560": 21267,
+ "inevitably": 21268,
+ "tome": 21269,
+ "##gold": 21270,
+ "chew": 21271,
+ "##uid": 21272,
+ "##lid": 21273,
+ "elastic": 21274,
+ "##aby": 21275,
+ "streaked": 21276,
+ "alliances": 21277,
+ "jailed": 21278,
+ "regal": 21279,
+ "##ined": 21280,
+ "##phy": 21281,
+ "czechoslovak": 21282,
+ "narration": 21283,
+ "absently": 21284,
+ "##uld": 21285,
+ "bluegrass": 21286,
+ "guangdong": 21287,
+ "quran": 21288,
+ "criticizing": 21289,
+ "hose": 21290,
+ "hari": 21291,
+ "##liest": 21292,
+ "##owa": 21293,
+ "skier": 21294,
+ "streaks": 21295,
+ "deploy": 21296,
+ "##lom": 21297,
+ "raft": 21298,
+ "bose": 21299,
+ "dialed": 21300,
+ "huff": 21301,
+ "##eira": 21302,
+ "haifa": 21303,
+ "simplest": 21304,
+ "bursting": 21305,
+ "endings": 21306,
+ "ib": 21307,
+ "sultanate": 21308,
+ "##titled": 21309,
+ "franks": 21310,
+ "whitman": 21311,
+ "ensures": 21312,
+ "sven": 21313,
+ "##ggs": 21314,
+ "collaborators": 21315,
+ "forster": 21316,
+ "organising": 21317,
+ "ui": 21318,
+ "banished": 21319,
+ "napier": 21320,
+ "injustice": 21321,
+ "teller": 21322,
+ "layered": 21323,
+ "thump": 21324,
+ "##otti": 21325,
+ "roc": 21326,
+ "battleships": 21327,
+ "evidenced": 21328,
+ "fugitive": 21329,
+ "sadie": 21330,
+ "robotics": 21331,
+ "##roud": 21332,
+ "equatorial": 21333,
+ "geologist": 21334,
+ "##iza": 21335,
+ "yielding": 21336,
+ "##bron": 21337,
+ "##sr": 21338,
+ "internationale": 21339,
+ "mecca": 21340,
+ "##diment": 21341,
+ "sbs": 21342,
+ "skyline": 21343,
+ "toad": 21344,
+ "uploaded": 21345,
+ "reflective": 21346,
+ "undrafted": 21347,
+ "lal": 21348,
+ "leafs": 21349,
+ "bayern": 21350,
+ "##dai": 21351,
+ "lakshmi": 21352,
+ "shortlisted": 21353,
+ "##stick": 21354,
+ "##wicz": 21355,
+ "camouflage": 21356,
+ "donate": 21357,
+ "af": 21358,
+ "christi": 21359,
+ "lau": 21360,
+ "##acio": 21361,
+ "disclosed": 21362,
+ "nemesis": 21363,
+ "1761": 21364,
+ "assemble": 21365,
+ "straining": 21366,
+ "northamptonshire": 21367,
+ "tal": 21368,
+ "##asi": 21369,
+ "bernardino": 21370,
+ "premature": 21371,
+ "heidi": 21372,
+ "42nd": 21373,
+ "coefficients": 21374,
+ "galactic": 21375,
+ "reproduce": 21376,
+ "buzzed": 21377,
+ "sensations": 21378,
+ "zionist": 21379,
+ "monsieur": 21380,
+ "myrtle": 21381,
+ "##eme": 21382,
+ "archery": 21383,
+ "strangled": 21384,
+ "musically": 21385,
+ "viewpoint": 21386,
+ "antiquities": 21387,
+ "bei": 21388,
+ "trailers": 21389,
+ "seahawks": 21390,
+ "cured": 21391,
+ "pee": 21392,
+ "preferring": 21393,
+ "tasmanian": 21394,
+ "lange": 21395,
+ "sul": 21396,
+ "##mail": 21397,
+ "##working": 21398,
+ "colder": 21399,
+ "overland": 21400,
+ "lucivar": 21401,
+ "massey": 21402,
+ "gatherings": 21403,
+ "haitian": 21404,
+ "##smith": 21405,
+ "disapproval": 21406,
+ "flaws": 21407,
+ "##cco": 21408,
+ "##enbach": 21409,
+ "1766": 21410,
+ "npr": 21411,
+ "##icular": 21412,
+ "boroughs": 21413,
+ "creole": 21414,
+ "forums": 21415,
+ "techno": 21416,
+ "1755": 21417,
+ "dent": 21418,
+ "abdominal": 21419,
+ "streetcar": 21420,
+ "##eson": 21421,
+ "##stream": 21422,
+ "procurement": 21423,
+ "gemini": 21424,
+ "predictable": 21425,
+ "##tya": 21426,
+ "acheron": 21427,
+ "christoph": 21428,
+ "feeder": 21429,
+ "fronts": 21430,
+ "vendor": 21431,
+ "bernhard": 21432,
+ "jammu": 21433,
+ "tumors": 21434,
+ "slang": 21435,
+ "##uber": 21436,
+ "goaltender": 21437,
+ "twists": 21438,
+ "curving": 21439,
+ "manson": 21440,
+ "vuelta": 21441,
+ "mer": 21442,
+ "peanut": 21443,
+ "confessions": 21444,
+ "pouch": 21445,
+ "unpredictable": 21446,
+ "allowance": 21447,
+ "theodor": 21448,
+ "vascular": 21449,
+ "##factory": 21450,
+ "bala": 21451,
+ "authenticity": 21452,
+ "metabolic": 21453,
+ "coughing": 21454,
+ "nanjing": 21455,
+ "##cea": 21456,
+ "pembroke": 21457,
+ "##bard": 21458,
+ "splendid": 21459,
+ "36th": 21460,
+ "ff": 21461,
+ "hourly": 21462,
+ "##ahu": 21463,
+ "elmer": 21464,
+ "handel": 21465,
+ "##ivate": 21466,
+ "awarding": 21467,
+ "thrusting": 21468,
+ "dl": 21469,
+ "experimentation": 21470,
+ "##hesion": 21471,
+ "##46": 21472,
+ "caressed": 21473,
+ "entertained": 21474,
+ "steak": 21475,
+ "##rangle": 21476,
+ "biologist": 21477,
+ "orphans": 21478,
+ "baroness": 21479,
+ "oyster": 21480,
+ "stepfather": 21481,
+ "##dridge": 21482,
+ "mirage": 21483,
+ "reefs": 21484,
+ "speeding": 21485,
+ "##31": 21486,
+ "barons": 21487,
+ "1764": 21488,
+ "227": 21489,
+ "inhabit": 21490,
+ "preached": 21491,
+ "repealed": 21492,
+ "##tral": 21493,
+ "honoring": 21494,
+ "boogie": 21495,
+ "captives": 21496,
+ "administer": 21497,
+ "johanna": 21498,
+ "##imate": 21499,
+ "gel": 21500,
+ "suspiciously": 21501,
+ "1767": 21502,
+ "sobs": 21503,
+ "##dington": 21504,
+ "backbone": 21505,
+ "hayward": 21506,
+ "garry": 21507,
+ "##folding": 21508,
+ "##nesia": 21509,
+ "maxi": 21510,
+ "##oof": 21511,
+ "##ppe": 21512,
+ "ellison": 21513,
+ "galileo": 21514,
+ "##stand": 21515,
+ "crimea": 21516,
+ "frenzy": 21517,
+ "amour": 21518,
+ "bumper": 21519,
+ "matrices": 21520,
+ "natalia": 21521,
+ "baking": 21522,
+ "garth": 21523,
+ "palestinians": 21524,
+ "##grove": 21525,
+ "smack": 21526,
+ "conveyed": 21527,
+ "ensembles": 21528,
+ "gardening": 21529,
+ "##manship": 21530,
+ "##rup": 21531,
+ "##stituting": 21532,
+ "1640": 21533,
+ "harvesting": 21534,
+ "topography": 21535,
+ "jing": 21536,
+ "shifters": 21537,
+ "dormitory": 21538,
+ "##carriage": 21539,
+ "##lston": 21540,
+ "ist": 21541,
+ "skulls": 21542,
+ "##stadt": 21543,
+ "dolores": 21544,
+ "jewellery": 21545,
+ "sarawak": 21546,
+ "##wai": 21547,
+ "##zier": 21548,
+ "fences": 21549,
+ "christy": 21550,
+ "confinement": 21551,
+ "tumbling": 21552,
+ "credibility": 21553,
+ "fir": 21554,
+ "stench": 21555,
+ "##bria": 21556,
+ "##plication": 21557,
+ "##nged": 21558,
+ "##sam": 21559,
+ "virtues": 21560,
+ "##belt": 21561,
+ "marjorie": 21562,
+ "pba": 21563,
+ "##eem": 21564,
+ "##made": 21565,
+ "celebrates": 21566,
+ "schooner": 21567,
+ "agitated": 21568,
+ "barley": 21569,
+ "fulfilling": 21570,
+ "anthropologist": 21571,
+ "##pro": 21572,
+ "restrict": 21573,
+ "novi": 21574,
+ "regulating": 21575,
+ "##nent": 21576,
+ "padres": 21577,
+ "##rani": 21578,
+ "##hesive": 21579,
+ "loyola": 21580,
+ "tabitha": 21581,
+ "milky": 21582,
+ "olson": 21583,
+ "proprietor": 21584,
+ "crambidae": 21585,
+ "guarantees": 21586,
+ "intercollegiate": 21587,
+ "ljubljana": 21588,
+ "hilda": 21589,
+ "##sko": 21590,
+ "ignorant": 21591,
+ "hooded": 21592,
+ "##lts": 21593,
+ "sardinia": 21594,
+ "##lidae": 21595,
+ "##vation": 21596,
+ "frontman": 21597,
+ "privileged": 21598,
+ "witchcraft": 21599,
+ "##gp": 21600,
+ "jammed": 21601,
+ "laude": 21602,
+ "poking": 21603,
+ "##than": 21604,
+ "bracket": 21605,
+ "amazement": 21606,
+ "yunnan": 21607,
+ "##erus": 21608,
+ "maharaja": 21609,
+ "linnaeus": 21610,
+ "264": 21611,
+ "commissioning": 21612,
+ "milano": 21613,
+ "peacefully": 21614,
+ "##logies": 21615,
+ "akira": 21616,
+ "rani": 21617,
+ "regulator": 21618,
+ "##36": 21619,
+ "grasses": 21620,
+ "##rance": 21621,
+ "luzon": 21622,
+ "crows": 21623,
+ "compiler": 21624,
+ "gretchen": 21625,
+ "seaman": 21626,
+ "edouard": 21627,
+ "tab": 21628,
+ "buccaneers": 21629,
+ "ellington": 21630,
+ "hamlets": 21631,
+ "whig": 21632,
+ "socialists": 21633,
+ "##anto": 21634,
+ "directorial": 21635,
+ "easton": 21636,
+ "mythological": 21637,
+ "##kr": 21638,
+ "##vary": 21639,
+ "rhineland": 21640,
+ "semantic": 21641,
+ "taut": 21642,
+ "dune": 21643,
+ "inventions": 21644,
+ "succeeds": 21645,
+ "##iter": 21646,
+ "replication": 21647,
+ "branched": 21648,
+ "##pired": 21649,
+ "jul": 21650,
+ "prosecuted": 21651,
+ "kangaroo": 21652,
+ "penetrated": 21653,
+ "##avian": 21654,
+ "middlesbrough": 21655,
+ "doses": 21656,
+ "bleak": 21657,
+ "madam": 21658,
+ "predatory": 21659,
+ "relentless": 21660,
+ "##vili": 21661,
+ "reluctance": 21662,
+ "##vir": 21663,
+ "hailey": 21664,
+ "crore": 21665,
+ "silvery": 21666,
+ "1759": 21667,
+ "monstrous": 21668,
+ "swimmers": 21669,
+ "transmissions": 21670,
+ "hawthorn": 21671,
+ "informing": 21672,
+ "##eral": 21673,
+ "toilets": 21674,
+ "caracas": 21675,
+ "crouch": 21676,
+ "kb": 21677,
+ "##sett": 21678,
+ "295": 21679,
+ "cartel": 21680,
+ "hadley": 21681,
+ "##aling": 21682,
+ "alexia": 21683,
+ "yvonne": 21684,
+ "##biology": 21685,
+ "cinderella": 21686,
+ "eton": 21687,
+ "superb": 21688,
+ "blizzard": 21689,
+ "stabbing": 21690,
+ "industrialist": 21691,
+ "maximus": 21692,
+ "##gm": 21693,
+ "##orus": 21694,
+ "groves": 21695,
+ "maud": 21696,
+ "clade": 21697,
+ "oversized": 21698,
+ "comedic": 21699,
+ "##bella": 21700,
+ "rosen": 21701,
+ "nomadic": 21702,
+ "fulham": 21703,
+ "montane": 21704,
+ "beverages": 21705,
+ "galaxies": 21706,
+ "redundant": 21707,
+ "swarm": 21708,
+ "##rot": 21709,
+ "##folia": 21710,
+ "##llis": 21711,
+ "buckinghamshire": 21712,
+ "fen": 21713,
+ "bearings": 21714,
+ "bahadur": 21715,
+ "##rom": 21716,
+ "gilles": 21717,
+ "phased": 21718,
+ "dynamite": 21719,
+ "faber": 21720,
+ "benoit": 21721,
+ "vip": 21722,
+ "##ount": 21723,
+ "##wd": 21724,
+ "booking": 21725,
+ "fractured": 21726,
+ "tailored": 21727,
+ "anya": 21728,
+ "spices": 21729,
+ "westwood": 21730,
+ "cairns": 21731,
+ "auditions": 21732,
+ "inflammation": 21733,
+ "steamed": 21734,
+ "##rocity": 21735,
+ "##acion": 21736,
+ "##urne": 21737,
+ "skyla": 21738,
+ "thereof": 21739,
+ "watford": 21740,
+ "torment": 21741,
+ "archdeacon": 21742,
+ "transforms": 21743,
+ "lulu": 21744,
+ "demeanor": 21745,
+ "fucked": 21746,
+ "serge": 21747,
+ "##sor": 21748,
+ "mckenna": 21749,
+ "minas": 21750,
+ "entertainer": 21751,
+ "##icide": 21752,
+ "caress": 21753,
+ "originate": 21754,
+ "residue": 21755,
+ "##sty": 21756,
+ "1740": 21757,
+ "##ilised": 21758,
+ "##org": 21759,
+ "beech": 21760,
+ "##wana": 21761,
+ "subsidies": 21762,
+ "##ghton": 21763,
+ "emptied": 21764,
+ "gladstone": 21765,
+ "ru": 21766,
+ "firefighters": 21767,
+ "voodoo": 21768,
+ "##rcle": 21769,
+ "het": 21770,
+ "nightingale": 21771,
+ "tamara": 21772,
+ "edmond": 21773,
+ "ingredient": 21774,
+ "weaknesses": 21775,
+ "silhouette": 21776,
+ "285": 21777,
+ "compatibility": 21778,
+ "withdrawing": 21779,
+ "hampson": 21780,
+ "##mona": 21781,
+ "anguish": 21782,
+ "giggling": 21783,
+ "##mber": 21784,
+ "bookstore": 21785,
+ "##jiang": 21786,
+ "southernmost": 21787,
+ "tilting": 21788,
+ "##vance": 21789,
+ "bai": 21790,
+ "economical": 21791,
+ "rf": 21792,
+ "briefcase": 21793,
+ "dreadful": 21794,
+ "hinted": 21795,
+ "projections": 21796,
+ "shattering": 21797,
+ "totaling": 21798,
+ "##rogate": 21799,
+ "analogue": 21800,
+ "indicted": 21801,
+ "periodical": 21802,
+ "fullback": 21803,
+ "##dman": 21804,
+ "haynes": 21805,
+ "##tenberg": 21806,
+ "##ffs": 21807,
+ "##ishment": 21808,
+ "1745": 21809,
+ "thirst": 21810,
+ "stumble": 21811,
+ "penang": 21812,
+ "vigorous": 21813,
+ "##ddling": 21814,
+ "##kor": 21815,
+ "##lium": 21816,
+ "octave": 21817,
+ "##ove": 21818,
+ "##enstein": 21819,
+ "##inen": 21820,
+ "##ones": 21821,
+ "siberian": 21822,
+ "##uti": 21823,
+ "cbn": 21824,
+ "repeal": 21825,
+ "swaying": 21826,
+ "##vington": 21827,
+ "khalid": 21828,
+ "tanaka": 21829,
+ "unicorn": 21830,
+ "otago": 21831,
+ "plastered": 21832,
+ "lobe": 21833,
+ "riddle": 21834,
+ "##rella": 21835,
+ "perch": 21836,
+ "##ishing": 21837,
+ "croydon": 21838,
+ "filtered": 21839,
+ "graeme": 21840,
+ "tripoli": 21841,
+ "##ossa": 21842,
+ "crocodile": 21843,
+ "##chers": 21844,
+ "sufi": 21845,
+ "mined": 21846,
+ "##tung": 21847,
+ "inferno": 21848,
+ "lsu": 21849,
+ "##phi": 21850,
+ "swelled": 21851,
+ "utilizes": 21852,
+ "£2": 21853,
+ "cale": 21854,
+ "periodicals": 21855,
+ "styx": 21856,
+ "hike": 21857,
+ "informally": 21858,
+ "coop": 21859,
+ "lund": 21860,
+ "##tidae": 21861,
+ "ala": 21862,
+ "hen": 21863,
+ "qui": 21864,
+ "transformations": 21865,
+ "disposed": 21866,
+ "sheath": 21867,
+ "chickens": 21868,
+ "##cade": 21869,
+ "fitzroy": 21870,
+ "sas": 21871,
+ "silesia": 21872,
+ "unacceptable": 21873,
+ "odisha": 21874,
+ "1650": 21875,
+ "sabrina": 21876,
+ "pe": 21877,
+ "spokane": 21878,
+ "ratios": 21879,
+ "athena": 21880,
+ "massage": 21881,
+ "shen": 21882,
+ "dilemma": 21883,
+ "##drum": 21884,
+ "##riz": 21885,
+ "##hul": 21886,
+ "corona": 21887,
+ "doubtful": 21888,
+ "niall": 21889,
+ "##pha": 21890,
+ "##bino": 21891,
+ "fines": 21892,
+ "cite": 21893,
+ "acknowledging": 21894,
+ "bangor": 21895,
+ "ballard": 21896,
+ "bathurst": 21897,
+ "##resh": 21898,
+ "huron": 21899,
+ "mustered": 21900,
+ "alzheimer": 21901,
+ "garments": 21902,
+ "kinase": 21903,
+ "tyre": 21904,
+ "warship": 21905,
+ "##cp": 21906,
+ "flashback": 21907,
+ "pulmonary": 21908,
+ "braun": 21909,
+ "cheat": 21910,
+ "kamal": 21911,
+ "cyclists": 21912,
+ "constructions": 21913,
+ "grenades": 21914,
+ "ndp": 21915,
+ "traveller": 21916,
+ "excuses": 21917,
+ "stomped": 21918,
+ "signalling": 21919,
+ "trimmed": 21920,
+ "futsal": 21921,
+ "mosques": 21922,
+ "relevance": 21923,
+ "##wine": 21924,
+ "wta": 21925,
+ "##23": 21926,
+ "##vah": 21927,
+ "##lter": 21928,
+ "hoc": 21929,
+ "##riding": 21930,
+ "optimistic": 21931,
+ "##´s": 21932,
+ "deco": 21933,
+ "sim": 21934,
+ "interacting": 21935,
+ "rejecting": 21936,
+ "moniker": 21937,
+ "waterways": 21938,
+ "##ieri": 21939,
+ "##oku": 21940,
+ "mayors": 21941,
+ "gdansk": 21942,
+ "outnumbered": 21943,
+ "pearls": 21944,
+ "##ended": 21945,
+ "##hampton": 21946,
+ "fairs": 21947,
+ "totals": 21948,
+ "dominating": 21949,
+ "262": 21950,
+ "notions": 21951,
+ "stairway": 21952,
+ "compiling": 21953,
+ "pursed": 21954,
+ "commodities": 21955,
+ "grease": 21956,
+ "yeast": 21957,
+ "##jong": 21958,
+ "carthage": 21959,
+ "griffiths": 21960,
+ "residual": 21961,
+ "amc": 21962,
+ "contraction": 21963,
+ "laird": 21964,
+ "sapphire": 21965,
+ "##marine": 21966,
+ "##ivated": 21967,
+ "amalgamation": 21968,
+ "dissolve": 21969,
+ "inclination": 21970,
+ "lyle": 21971,
+ "packaged": 21972,
+ "altitudes": 21973,
+ "suez": 21974,
+ "canons": 21975,
+ "graded": 21976,
+ "lurched": 21977,
+ "narrowing": 21978,
+ "boasts": 21979,
+ "guise": 21980,
+ "wed": 21981,
+ "enrico": 21982,
+ "##ovsky": 21983,
+ "rower": 21984,
+ "scarred": 21985,
+ "bree": 21986,
+ "cub": 21987,
+ "iberian": 21988,
+ "protagonists": 21989,
+ "bargaining": 21990,
+ "proposing": 21991,
+ "trainers": 21992,
+ "voyages": 21993,
+ "vans": 21994,
+ "fishes": 21995,
+ "##aea": 21996,
+ "##ivist": 21997,
+ "##verance": 21998,
+ "encryption": 21999,
+ "artworks": 22000,
+ "kazan": 22001,
+ "sabre": 22002,
+ "cleopatra": 22003,
+ "hepburn": 22004,
+ "rotting": 22005,
+ "supremacy": 22006,
+ "mecklenburg": 22007,
+ "##brate": 22008,
+ "burrows": 22009,
+ "hazards": 22010,
+ "outgoing": 22011,
+ "flair": 22012,
+ "organizes": 22013,
+ "##ctions": 22014,
+ "scorpion": 22015,
+ "##usions": 22016,
+ "boo": 22017,
+ "234": 22018,
+ "chevalier": 22019,
+ "dunedin": 22020,
+ "slapping": 22021,
+ "##34": 22022,
+ "ineligible": 22023,
+ "pensions": 22024,
+ "##38": 22025,
+ "##omic": 22026,
+ "manufactures": 22027,
+ "emails": 22028,
+ "bismarck": 22029,
+ "238": 22030,
+ "weakening": 22031,
+ "blackish": 22032,
+ "ding": 22033,
+ "mcgee": 22034,
+ "quo": 22035,
+ "##rling": 22036,
+ "northernmost": 22037,
+ "xx": 22038,
+ "manpower": 22039,
+ "greed": 22040,
+ "sampson": 22041,
+ "clicking": 22042,
+ "##ange": 22043,
+ "##horpe": 22044,
+ "##inations": 22045,
+ "##roving": 22046,
+ "torre": 22047,
+ "##eptive": 22048,
+ "##moral": 22049,
+ "symbolism": 22050,
+ "38th": 22051,
+ "asshole": 22052,
+ "meritorious": 22053,
+ "outfits": 22054,
+ "splashed": 22055,
+ "biographies": 22056,
+ "sprung": 22057,
+ "astros": 22058,
+ "##tale": 22059,
+ "302": 22060,
+ "737": 22061,
+ "filly": 22062,
+ "raoul": 22063,
+ "nw": 22064,
+ "tokugawa": 22065,
+ "linden": 22066,
+ "clubhouse": 22067,
+ "##apa": 22068,
+ "tracts": 22069,
+ "romano": 22070,
+ "##pio": 22071,
+ "putin": 22072,
+ "tags": 22073,
+ "##note": 22074,
+ "chained": 22075,
+ "dickson": 22076,
+ "gunshot": 22077,
+ "moe": 22078,
+ "gunn": 22079,
+ "rashid": 22080,
+ "##tails": 22081,
+ "zipper": 22082,
+ "##bas": 22083,
+ "##nea": 22084,
+ "contrasted": 22085,
+ "##ply": 22086,
+ "##udes": 22087,
+ "plum": 22088,
+ "pharaoh": 22089,
+ "##pile": 22090,
+ "aw": 22091,
+ "comedies": 22092,
+ "ingrid": 22093,
+ "sandwiches": 22094,
+ "subdivisions": 22095,
+ "1100": 22096,
+ "mariana": 22097,
+ "nokia": 22098,
+ "kamen": 22099,
+ "hz": 22100,
+ "delaney": 22101,
+ "veto": 22102,
+ "herring": 22103,
+ "##words": 22104,
+ "possessive": 22105,
+ "outlines": 22106,
+ "##roup": 22107,
+ "siemens": 22108,
+ "stairwell": 22109,
+ "rc": 22110,
+ "gallantry": 22111,
+ "messiah": 22112,
+ "palais": 22113,
+ "yells": 22114,
+ "233": 22115,
+ "zeppelin": 22116,
+ "##dm": 22117,
+ "bolivar": 22118,
+ "##cede": 22119,
+ "smackdown": 22120,
+ "mckinley": 22121,
+ "##mora": 22122,
+ "##yt": 22123,
+ "muted": 22124,
+ "geologic": 22125,
+ "finely": 22126,
+ "unitary": 22127,
+ "avatar": 22128,
+ "hamas": 22129,
+ "maynard": 22130,
+ "rees": 22131,
+ "bog": 22132,
+ "contrasting": 22133,
+ "##rut": 22134,
+ "liv": 22135,
+ "chico": 22136,
+ "disposition": 22137,
+ "pixel": 22138,
+ "##erate": 22139,
+ "becca": 22140,
+ "dmitry": 22141,
+ "yeshiva": 22142,
+ "narratives": 22143,
+ "##lva": 22144,
+ "##ulton": 22145,
+ "mercenary": 22146,
+ "sharpe": 22147,
+ "tempered": 22148,
+ "navigate": 22149,
+ "stealth": 22150,
+ "amassed": 22151,
+ "keynes": 22152,
+ "##lini": 22153,
+ "untouched": 22154,
+ "##rrie": 22155,
+ "havoc": 22156,
+ "lithium": 22157,
+ "##fighting": 22158,
+ "abyss": 22159,
+ "graf": 22160,
+ "southward": 22161,
+ "wolverine": 22162,
+ "balloons": 22163,
+ "implements": 22164,
+ "ngos": 22165,
+ "transitions": 22166,
+ "##icum": 22167,
+ "ambushed": 22168,
+ "concacaf": 22169,
+ "dormant": 22170,
+ "economists": 22171,
+ "##dim": 22172,
+ "costing": 22173,
+ "csi": 22174,
+ "rana": 22175,
+ "universite": 22176,
+ "boulders": 22177,
+ "verity": 22178,
+ "##llon": 22179,
+ "collin": 22180,
+ "mellon": 22181,
+ "misses": 22182,
+ "cypress": 22183,
+ "fluorescent": 22184,
+ "lifeless": 22185,
+ "spence": 22186,
+ "##ulla": 22187,
+ "crewe": 22188,
+ "shepard": 22189,
+ "pak": 22190,
+ "revelations": 22191,
+ "##م": 22192,
+ "jolly": 22193,
+ "gibbons": 22194,
+ "paw": 22195,
+ "##dro": 22196,
+ "##quel": 22197,
+ "freeing": 22198,
+ "##test": 22199,
+ "shack": 22200,
+ "fries": 22201,
+ "palatine": 22202,
+ "##51": 22203,
+ "##hiko": 22204,
+ "accompaniment": 22205,
+ "cruising": 22206,
+ "recycled": 22207,
+ "##aver": 22208,
+ "erwin": 22209,
+ "sorting": 22210,
+ "synthesizers": 22211,
+ "dyke": 22212,
+ "realities": 22213,
+ "sg": 22214,
+ "strides": 22215,
+ "enslaved": 22216,
+ "wetland": 22217,
+ "##ghan": 22218,
+ "competence": 22219,
+ "gunpowder": 22220,
+ "grassy": 22221,
+ "maroon": 22222,
+ "reactors": 22223,
+ "objection": 22224,
+ "##oms": 22225,
+ "carlson": 22226,
+ "gearbox": 22227,
+ "macintosh": 22228,
+ "radios": 22229,
+ "shelton": 22230,
+ "##sho": 22231,
+ "clergyman": 22232,
+ "prakash": 22233,
+ "254": 22234,
+ "mongols": 22235,
+ "trophies": 22236,
+ "oricon": 22237,
+ "228": 22238,
+ "stimuli": 22239,
+ "twenty20": 22240,
+ "cantonese": 22241,
+ "cortes": 22242,
+ "mirrored": 22243,
+ "##saurus": 22244,
+ "bhp": 22245,
+ "cristina": 22246,
+ "melancholy": 22247,
+ "##lating": 22248,
+ "enjoyable": 22249,
+ "nuevo": 22250,
+ "##wny": 22251,
+ "downfall": 22252,
+ "schumacher": 22253,
+ "##ind": 22254,
+ "banging": 22255,
+ "lausanne": 22256,
+ "rumbled": 22257,
+ "paramilitary": 22258,
+ "reflex": 22259,
+ "ax": 22260,
+ "amplitude": 22261,
+ "migratory": 22262,
+ "##gall": 22263,
+ "##ups": 22264,
+ "midi": 22265,
+ "barnard": 22266,
+ "lastly": 22267,
+ "sherry": 22268,
+ "##hp": 22269,
+ "##nall": 22270,
+ "keystone": 22271,
+ "##kra": 22272,
+ "carleton": 22273,
+ "slippery": 22274,
+ "##53": 22275,
+ "coloring": 22276,
+ "foe": 22277,
+ "socket": 22278,
+ "otter": 22279,
+ "##rgos": 22280,
+ "mats": 22281,
+ "##tose": 22282,
+ "consultants": 22283,
+ "bafta": 22284,
+ "bison": 22285,
+ "topping": 22286,
+ "##km": 22287,
+ "490": 22288,
+ "primal": 22289,
+ "abandonment": 22290,
+ "transplant": 22291,
+ "atoll": 22292,
+ "hideous": 22293,
+ "mort": 22294,
+ "pained": 22295,
+ "reproduced": 22296,
+ "tae": 22297,
+ "howling": 22298,
+ "##turn": 22299,
+ "unlawful": 22300,
+ "billionaire": 22301,
+ "hotter": 22302,
+ "poised": 22303,
+ "lansing": 22304,
+ "##chang": 22305,
+ "dinamo": 22306,
+ "retro": 22307,
+ "messing": 22308,
+ "nfc": 22309,
+ "domesday": 22310,
+ "##mina": 22311,
+ "blitz": 22312,
+ "timed": 22313,
+ "##athing": 22314,
+ "##kley": 22315,
+ "ascending": 22316,
+ "gesturing": 22317,
+ "##izations": 22318,
+ "signaled": 22319,
+ "tis": 22320,
+ "chinatown": 22321,
+ "mermaid": 22322,
+ "savanna": 22323,
+ "jameson": 22324,
+ "##aint": 22325,
+ "catalina": 22326,
+ "##pet": 22327,
+ "##hers": 22328,
+ "cochrane": 22329,
+ "cy": 22330,
+ "chatting": 22331,
+ "##kus": 22332,
+ "alerted": 22333,
+ "computation": 22334,
+ "mused": 22335,
+ "noelle": 22336,
+ "majestic": 22337,
+ "mohawk": 22338,
+ "campo": 22339,
+ "octagonal": 22340,
+ "##sant": 22341,
+ "##hend": 22342,
+ "241": 22343,
+ "aspiring": 22344,
+ "##mart": 22345,
+ "comprehend": 22346,
+ "iona": 22347,
+ "paralyzed": 22348,
+ "shimmering": 22349,
+ "swindon": 22350,
+ "rhone": 22351,
+ "##eley": 22352,
+ "reputed": 22353,
+ "configurations": 22354,
+ "pitchfork": 22355,
+ "agitation": 22356,
+ "francais": 22357,
+ "gillian": 22358,
+ "lipstick": 22359,
+ "##ilo": 22360,
+ "outsiders": 22361,
+ "pontifical": 22362,
+ "resisting": 22363,
+ "bitterness": 22364,
+ "sewer": 22365,
+ "rockies": 22366,
+ "##edd": 22367,
+ "##ucher": 22368,
+ "misleading": 22369,
+ "1756": 22370,
+ "exiting": 22371,
+ "galloway": 22372,
+ "##nging": 22373,
+ "risked": 22374,
+ "##heart": 22375,
+ "246": 22376,
+ "commemoration": 22377,
+ "schultz": 22378,
+ "##rka": 22379,
+ "integrating": 22380,
+ "##rsa": 22381,
+ "poses": 22382,
+ "shrieked": 22383,
+ "##weiler": 22384,
+ "guineas": 22385,
+ "gladys": 22386,
+ "jerking": 22387,
+ "owls": 22388,
+ "goldsmith": 22389,
+ "nightly": 22390,
+ "penetrating": 22391,
+ "##unced": 22392,
+ "lia": 22393,
+ "##33": 22394,
+ "ignited": 22395,
+ "betsy": 22396,
+ "##aring": 22397,
+ "##thorpe": 22398,
+ "follower": 22399,
+ "vigorously": 22400,
+ "##rave": 22401,
+ "coded": 22402,
+ "kiran": 22403,
+ "knit": 22404,
+ "zoology": 22405,
+ "tbilisi": 22406,
+ "##28": 22407,
+ "##bered": 22408,
+ "repository": 22409,
+ "govt": 22410,
+ "deciduous": 22411,
+ "dino": 22412,
+ "growling": 22413,
+ "##bba": 22414,
+ "enhancement": 22415,
+ "unleashed": 22416,
+ "chanting": 22417,
+ "pussy": 22418,
+ "biochemistry": 22419,
+ "##eric": 22420,
+ "kettle": 22421,
+ "repression": 22422,
+ "toxicity": 22423,
+ "nrhp": 22424,
+ "##arth": 22425,
+ "##kko": 22426,
+ "##bush": 22427,
+ "ernesto": 22428,
+ "commended": 22429,
+ "outspoken": 22430,
+ "242": 22431,
+ "mca": 22432,
+ "parchment": 22433,
+ "sms": 22434,
+ "kristen": 22435,
+ "##aton": 22436,
+ "bisexual": 22437,
+ "raked": 22438,
+ "glamour": 22439,
+ "navajo": 22440,
+ "a2": 22441,
+ "conditioned": 22442,
+ "showcased": 22443,
+ "##hma": 22444,
+ "spacious": 22445,
+ "youthful": 22446,
+ "##esa": 22447,
+ "usl": 22448,
+ "appliances": 22449,
+ "junta": 22450,
+ "brest": 22451,
+ "layne": 22452,
+ "conglomerate": 22453,
+ "enchanted": 22454,
+ "chao": 22455,
+ "loosened": 22456,
+ "picasso": 22457,
+ "circulating": 22458,
+ "inspect": 22459,
+ "montevideo": 22460,
+ "##centric": 22461,
+ "##kti": 22462,
+ "piazza": 22463,
+ "spurred": 22464,
+ "##aith": 22465,
+ "bari": 22466,
+ "freedoms": 22467,
+ "poultry": 22468,
+ "stamford": 22469,
+ "lieu": 22470,
+ "##ect": 22471,
+ "indigo": 22472,
+ "sarcastic": 22473,
+ "bahia": 22474,
+ "stump": 22475,
+ "attach": 22476,
+ "dvds": 22477,
+ "frankenstein": 22478,
+ "lille": 22479,
+ "approx": 22480,
+ "scriptures": 22481,
+ "pollen": 22482,
+ "##script": 22483,
+ "nmi": 22484,
+ "overseen": 22485,
+ "##ivism": 22486,
+ "tides": 22487,
+ "proponent": 22488,
+ "newmarket": 22489,
+ "inherit": 22490,
+ "milling": 22491,
+ "##erland": 22492,
+ "centralized": 22493,
+ "##rou": 22494,
+ "distributors": 22495,
+ "credentials": 22496,
+ "drawers": 22497,
+ "abbreviation": 22498,
+ "##lco": 22499,
+ "##xon": 22500,
+ "downing": 22501,
+ "uncomfortably": 22502,
+ "ripe": 22503,
+ "##oes": 22504,
+ "erase": 22505,
+ "franchises": 22506,
+ "##ever": 22507,
+ "populace": 22508,
+ "##bery": 22509,
+ "##khar": 22510,
+ "decomposition": 22511,
+ "pleas": 22512,
+ "##tet": 22513,
+ "daryl": 22514,
+ "sabah": 22515,
+ "##stle": 22516,
+ "##wide": 22517,
+ "fearless": 22518,
+ "genie": 22519,
+ "lesions": 22520,
+ "annette": 22521,
+ "##ogist": 22522,
+ "oboe": 22523,
+ "appendix": 22524,
+ "nair": 22525,
+ "dripped": 22526,
+ "petitioned": 22527,
+ "maclean": 22528,
+ "mosquito": 22529,
+ "parrot": 22530,
+ "rpg": 22531,
+ "hampered": 22532,
+ "1648": 22533,
+ "operatic": 22534,
+ "reservoirs": 22535,
+ "##tham": 22536,
+ "irrelevant": 22537,
+ "jolt": 22538,
+ "summarized": 22539,
+ "##fp": 22540,
+ "medallion": 22541,
+ "##taff": 22542,
+ "##−": 22543,
+ "clawed": 22544,
+ "harlow": 22545,
+ "narrower": 22546,
+ "goddard": 22547,
+ "marcia": 22548,
+ "bodied": 22549,
+ "fremont": 22550,
+ "suarez": 22551,
+ "altering": 22552,
+ "tempest": 22553,
+ "mussolini": 22554,
+ "porn": 22555,
+ "##isms": 22556,
+ "sweetly": 22557,
+ "oversees": 22558,
+ "walkers": 22559,
+ "solitude": 22560,
+ "grimly": 22561,
+ "shrines": 22562,
+ "hk": 22563,
+ "ich": 22564,
+ "supervisors": 22565,
+ "hostess": 22566,
+ "dietrich": 22567,
+ "legitimacy": 22568,
+ "brushes": 22569,
+ "expressive": 22570,
+ "##yp": 22571,
+ "dissipated": 22572,
+ "##rse": 22573,
+ "localized": 22574,
+ "systemic": 22575,
+ "##nikov": 22576,
+ "gettysburg": 22577,
+ "##js": 22578,
+ "##uaries": 22579,
+ "dialogues": 22580,
+ "muttering": 22581,
+ "251": 22582,
+ "housekeeper": 22583,
+ "sicilian": 22584,
+ "discouraged": 22585,
+ "##frey": 22586,
+ "beamed": 22587,
+ "kaladin": 22588,
+ "halftime": 22589,
+ "kidnap": 22590,
+ "##amo": 22591,
+ "##llet": 22592,
+ "1754": 22593,
+ "synonymous": 22594,
+ "depleted": 22595,
+ "instituto": 22596,
+ "insulin": 22597,
+ "reprised": 22598,
+ "##opsis": 22599,
+ "clashed": 22600,
+ "##ctric": 22601,
+ "interrupting": 22602,
+ "radcliffe": 22603,
+ "insisting": 22604,
+ "medici": 22605,
+ "1715": 22606,
+ "ejected": 22607,
+ "playfully": 22608,
+ "turbulent": 22609,
+ "##47": 22610,
+ "starvation": 22611,
+ "##rini": 22612,
+ "shipment": 22613,
+ "rebellious": 22614,
+ "petersen": 22615,
+ "verification": 22616,
+ "merits": 22617,
+ "##rified": 22618,
+ "cakes": 22619,
+ "##charged": 22620,
+ "1757": 22621,
+ "milford": 22622,
+ "shortages": 22623,
+ "spying": 22624,
+ "fidelity": 22625,
+ "##aker": 22626,
+ "emitted": 22627,
+ "storylines": 22628,
+ "harvested": 22629,
+ "seismic": 22630,
+ "##iform": 22631,
+ "cheung": 22632,
+ "kilda": 22633,
+ "theoretically": 22634,
+ "barbie": 22635,
+ "lynx": 22636,
+ "##rgy": 22637,
+ "##tius": 22638,
+ "goblin": 22639,
+ "mata": 22640,
+ "poisonous": 22641,
+ "##nburg": 22642,
+ "reactive": 22643,
+ "residues": 22644,
+ "obedience": 22645,
+ "##евич": 22646,
+ "conjecture": 22647,
+ "##rac": 22648,
+ "401": 22649,
+ "hating": 22650,
+ "sixties": 22651,
+ "kicker": 22652,
+ "moaning": 22653,
+ "motown": 22654,
+ "##bha": 22655,
+ "emancipation": 22656,
+ "neoclassical": 22657,
+ "##hering": 22658,
+ "consoles": 22659,
+ "ebert": 22660,
+ "professorship": 22661,
+ "##tures": 22662,
+ "sustaining": 22663,
+ "assaults": 22664,
+ "obeyed": 22665,
+ "affluent": 22666,
+ "incurred": 22667,
+ "tornadoes": 22668,
+ "##eber": 22669,
+ "##zow": 22670,
+ "emphasizing": 22671,
+ "highlanders": 22672,
+ "cheated": 22673,
+ "helmets": 22674,
+ "##ctus": 22675,
+ "internship": 22676,
+ "terence": 22677,
+ "bony": 22678,
+ "executions": 22679,
+ "legislators": 22680,
+ "berries": 22681,
+ "peninsular": 22682,
+ "tinged": 22683,
+ "##aco": 22684,
+ "1689": 22685,
+ "amplifier": 22686,
+ "corvette": 22687,
+ "ribbons": 22688,
+ "lavish": 22689,
+ "pennant": 22690,
+ "##lander": 22691,
+ "worthless": 22692,
+ "##chfield": 22693,
+ "##forms": 22694,
+ "mariano": 22695,
+ "pyrenees": 22696,
+ "expenditures": 22697,
+ "##icides": 22698,
+ "chesterfield": 22699,
+ "mandir": 22700,
+ "tailor": 22701,
+ "39th": 22702,
+ "sergey": 22703,
+ "nestled": 22704,
+ "willed": 22705,
+ "aristocracy": 22706,
+ "devotees": 22707,
+ "goodnight": 22708,
+ "raaf": 22709,
+ "rumored": 22710,
+ "weaponry": 22711,
+ "remy": 22712,
+ "appropriations": 22713,
+ "harcourt": 22714,
+ "burr": 22715,
+ "riaa": 22716,
+ "##lence": 22717,
+ "limitation": 22718,
+ "unnoticed": 22719,
+ "guo": 22720,
+ "soaking": 22721,
+ "swamps": 22722,
+ "##tica": 22723,
+ "collapsing": 22724,
+ "tatiana": 22725,
+ "descriptive": 22726,
+ "brigham": 22727,
+ "psalm": 22728,
+ "##chment": 22729,
+ "maddox": 22730,
+ "##lization": 22731,
+ "patti": 22732,
+ "caliph": 22733,
+ "##aja": 22734,
+ "akron": 22735,
+ "injuring": 22736,
+ "serra": 22737,
+ "##ganj": 22738,
+ "basins": 22739,
+ "##sari": 22740,
+ "astonished": 22741,
+ "launcher": 22742,
+ "##church": 22743,
+ "hilary": 22744,
+ "wilkins": 22745,
+ "sewing": 22746,
+ "##sf": 22747,
+ "stinging": 22748,
+ "##fia": 22749,
+ "##ncia": 22750,
+ "underwood": 22751,
+ "startup": 22752,
+ "##ition": 22753,
+ "compilations": 22754,
+ "vibrations": 22755,
+ "embankment": 22756,
+ "jurist": 22757,
+ "##nity": 22758,
+ "bard": 22759,
+ "juventus": 22760,
+ "groundwater": 22761,
+ "kern": 22762,
+ "palaces": 22763,
+ "helium": 22764,
+ "boca": 22765,
+ "cramped": 22766,
+ "marissa": 22767,
+ "soto": 22768,
+ "##worm": 22769,
+ "jae": 22770,
+ "princely": 22771,
+ "##ggy": 22772,
+ "faso": 22773,
+ "bazaar": 22774,
+ "warmly": 22775,
+ "##voking": 22776,
+ "229": 22777,
+ "pairing": 22778,
+ "##lite": 22779,
+ "##grate": 22780,
+ "##nets": 22781,
+ "wien": 22782,
+ "freaked": 22783,
+ "ulysses": 22784,
+ "rebirth": 22785,
+ "##alia": 22786,
+ "##rent": 22787,
+ "mummy": 22788,
+ "guzman": 22789,
+ "jimenez": 22790,
+ "stilled": 22791,
+ "##nitz": 22792,
+ "trajectory": 22793,
+ "tha": 22794,
+ "woken": 22795,
+ "archival": 22796,
+ "professions": 22797,
+ "##pts": 22798,
+ "##pta": 22799,
+ "hilly": 22800,
+ "shadowy": 22801,
+ "shrink": 22802,
+ "##bolt": 22803,
+ "norwood": 22804,
+ "glued": 22805,
+ "migrate": 22806,
+ "stereotypes": 22807,
+ "devoid": 22808,
+ "##pheus": 22809,
+ "625": 22810,
+ "evacuate": 22811,
+ "horrors": 22812,
+ "infancy": 22813,
+ "gotham": 22814,
+ "knowles": 22815,
+ "optic": 22816,
+ "downloaded": 22817,
+ "sachs": 22818,
+ "kingsley": 22819,
+ "parramatta": 22820,
+ "darryl": 22821,
+ "mor": 22822,
+ "##onale": 22823,
+ "shady": 22824,
+ "commence": 22825,
+ "confesses": 22826,
+ "kan": 22827,
+ "##meter": 22828,
+ "##placed": 22829,
+ "marlborough": 22830,
+ "roundabout": 22831,
+ "regents": 22832,
+ "frigates": 22833,
+ "io": 22834,
+ "##imating": 22835,
+ "gothenburg": 22836,
+ "revoked": 22837,
+ "carvings": 22838,
+ "clockwise": 22839,
+ "convertible": 22840,
+ "intruder": 22841,
+ "##sche": 22842,
+ "banged": 22843,
+ "##ogo": 22844,
+ "vicky": 22845,
+ "bourgeois": 22846,
+ "##mony": 22847,
+ "dupont": 22848,
+ "footing": 22849,
+ "##gum": 22850,
+ "pd": 22851,
+ "##real": 22852,
+ "buckle": 22853,
+ "yun": 22854,
+ "penthouse": 22855,
+ "sane": 22856,
+ "720": 22857,
+ "serviced": 22858,
+ "stakeholders": 22859,
+ "neumann": 22860,
+ "bb": 22861,
+ "##eers": 22862,
+ "comb": 22863,
+ "##gam": 22864,
+ "catchment": 22865,
+ "pinning": 22866,
+ "rallies": 22867,
+ "typing": 22868,
+ "##elles": 22869,
+ "forefront": 22870,
+ "freiburg": 22871,
+ "sweetie": 22872,
+ "giacomo": 22873,
+ "widowed": 22874,
+ "goodwill": 22875,
+ "worshipped": 22876,
+ "aspirations": 22877,
+ "midday": 22878,
+ "##vat": 22879,
+ "fishery": 22880,
+ "##trick": 22881,
+ "bournemouth": 22882,
+ "turk": 22883,
+ "243": 22884,
+ "hearth": 22885,
+ "ethanol": 22886,
+ "guadalajara": 22887,
+ "murmurs": 22888,
+ "sl": 22889,
+ "##uge": 22890,
+ "afforded": 22891,
+ "scripted": 22892,
+ "##hta": 22893,
+ "wah": 22894,
+ "##jn": 22895,
+ "coroner": 22896,
+ "translucent": 22897,
+ "252": 22898,
+ "memorials": 22899,
+ "puck": 22900,
+ "progresses": 22901,
+ "clumsy": 22902,
+ "##race": 22903,
+ "315": 22904,
+ "candace": 22905,
+ "recounted": 22906,
+ "##27": 22907,
+ "##slin": 22908,
+ "##uve": 22909,
+ "filtering": 22910,
+ "##mac": 22911,
+ "howl": 22912,
+ "strata": 22913,
+ "heron": 22914,
+ "leveled": 22915,
+ "##ays": 22916,
+ "dubious": 22917,
+ "##oja": 22918,
+ "##т": 22919,
+ "##wheel": 22920,
+ "citations": 22921,
+ "exhibiting": 22922,
+ "##laya": 22923,
+ "##mics": 22924,
+ "##pods": 22925,
+ "turkic": 22926,
+ "##lberg": 22927,
+ "injunction": 22928,
+ "##ennial": 22929,
+ "##mit": 22930,
+ "antibodies": 22931,
+ "##44": 22932,
+ "organise": 22933,
+ "##rigues": 22934,
+ "cardiovascular": 22935,
+ "cushion": 22936,
+ "inverness": 22937,
+ "##zquez": 22938,
+ "dia": 22939,
+ "cocoa": 22940,
+ "sibling": 22941,
+ "##tman": 22942,
+ "##roid": 22943,
+ "expanse": 22944,
+ "feasible": 22945,
+ "tunisian": 22946,
+ "algiers": 22947,
+ "##relli": 22948,
+ "rus": 22949,
+ "bloomberg": 22950,
+ "dso": 22951,
+ "westphalia": 22952,
+ "bro": 22953,
+ "tacoma": 22954,
+ "281": 22955,
+ "downloads": 22956,
+ "##ours": 22957,
+ "konrad": 22958,
+ "duran": 22959,
+ "##hdi": 22960,
+ "continuum": 22961,
+ "jett": 22962,
+ "compares": 22963,
+ "legislator": 22964,
+ "secession": 22965,
+ "##nable": 22966,
+ "##gues": 22967,
+ "##zuka": 22968,
+ "translating": 22969,
+ "reacher": 22970,
+ "##gley": 22971,
+ "##ła": 22972,
+ "aleppo": 22973,
+ "##agi": 22974,
+ "tc": 22975,
+ "orchards": 22976,
+ "trapping": 22977,
+ "linguist": 22978,
+ "versatile": 22979,
+ "drumming": 22980,
+ "postage": 22981,
+ "calhoun": 22982,
+ "superiors": 22983,
+ "##mx": 22984,
+ "barefoot": 22985,
+ "leary": 22986,
+ "##cis": 22987,
+ "ignacio": 22988,
+ "alfa": 22989,
+ "kaplan": 22990,
+ "##rogen": 22991,
+ "bratislava": 22992,
+ "mori": 22993,
+ "##vot": 22994,
+ "disturb": 22995,
+ "haas": 22996,
+ "313": 22997,
+ "cartridges": 22998,
+ "gilmore": 22999,
+ "radiated": 23000,
+ "salford": 23001,
+ "tunic": 23002,
+ "hades": 23003,
+ "##ulsive": 23004,
+ "archeological": 23005,
+ "delilah": 23006,
+ "magistrates": 23007,
+ "auditioned": 23008,
+ "brewster": 23009,
+ "charters": 23010,
+ "empowerment": 23011,
+ "blogs": 23012,
+ "cappella": 23013,
+ "dynasties": 23014,
+ "iroquois": 23015,
+ "whipping": 23016,
+ "##krishna": 23017,
+ "raceway": 23018,
+ "truths": 23019,
+ "myra": 23020,
+ "weaken": 23021,
+ "judah": 23022,
+ "mcgregor": 23023,
+ "##horse": 23024,
+ "mic": 23025,
+ "refueling": 23026,
+ "37th": 23027,
+ "burnley": 23028,
+ "bosses": 23029,
+ "markus": 23030,
+ "premio": 23031,
+ "query": 23032,
+ "##gga": 23033,
+ "dunbar": 23034,
+ "##economic": 23035,
+ "darkest": 23036,
+ "lyndon": 23037,
+ "sealing": 23038,
+ "commendation": 23039,
+ "reappeared": 23040,
+ "##mun": 23041,
+ "addicted": 23042,
+ "ezio": 23043,
+ "slaughtered": 23044,
+ "satisfactory": 23045,
+ "shuffle": 23046,
+ "##eves": 23047,
+ "##thic": 23048,
+ "##uj": 23049,
+ "fortification": 23050,
+ "warrington": 23051,
+ "##otto": 23052,
+ "resurrected": 23053,
+ "fargo": 23054,
+ "mane": 23055,
+ "##utable": 23056,
+ "##lei": 23057,
+ "##space": 23058,
+ "foreword": 23059,
+ "ox": 23060,
+ "##aris": 23061,
+ "##vern": 23062,
+ "abrams": 23063,
+ "hua": 23064,
+ "##mento": 23065,
+ "sakura": 23066,
+ "##alo": 23067,
+ "uv": 23068,
+ "sentimental": 23069,
+ "##skaya": 23070,
+ "midfield": 23071,
+ "##eses": 23072,
+ "sturdy": 23073,
+ "scrolls": 23074,
+ "macleod": 23075,
+ "##kyu": 23076,
+ "entropy": 23077,
+ "##lance": 23078,
+ "mitochondrial": 23079,
+ "cicero": 23080,
+ "excelled": 23081,
+ "thinner": 23082,
+ "convoys": 23083,
+ "perceive": 23084,
+ "##oslav": 23085,
+ "##urable": 23086,
+ "systematically": 23087,
+ "grind": 23088,
+ "burkina": 23089,
+ "287": 23090,
+ "##tagram": 23091,
+ "ops": 23092,
+ "##aman": 23093,
+ "guantanamo": 23094,
+ "##cloth": 23095,
+ "##tite": 23096,
+ "forcefully": 23097,
+ "wavy": 23098,
+ "##jou": 23099,
+ "pointless": 23100,
+ "##linger": 23101,
+ "##tze": 23102,
+ "layton": 23103,
+ "portico": 23104,
+ "superficial": 23105,
+ "clerical": 23106,
+ "outlaws": 23107,
+ "##hism": 23108,
+ "burials": 23109,
+ "muir": 23110,
+ "##inn": 23111,
+ "creditors": 23112,
+ "hauling": 23113,
+ "rattle": 23114,
+ "##leg": 23115,
+ "calais": 23116,
+ "monde": 23117,
+ "archers": 23118,
+ "reclaimed": 23119,
+ "dwell": 23120,
+ "wexford": 23121,
+ "hellenic": 23122,
+ "falsely": 23123,
+ "remorse": 23124,
+ "##tek": 23125,
+ "dough": 23126,
+ "furnishings": 23127,
+ "##uttered": 23128,
+ "gabon": 23129,
+ "neurological": 23130,
+ "novice": 23131,
+ "##igraphy": 23132,
+ "contemplated": 23133,
+ "pulpit": 23134,
+ "nightstand": 23135,
+ "saratoga": 23136,
+ "##istan": 23137,
+ "documenting": 23138,
+ "pulsing": 23139,
+ "taluk": 23140,
+ "##firmed": 23141,
+ "busted": 23142,
+ "marital": 23143,
+ "##rien": 23144,
+ "disagreements": 23145,
+ "wasps": 23146,
+ "##yes": 23147,
+ "hodge": 23148,
+ "mcdonnell": 23149,
+ "mimic": 23150,
+ "fran": 23151,
+ "pendant": 23152,
+ "dhabi": 23153,
+ "musa": 23154,
+ "##nington": 23155,
+ "congratulations": 23156,
+ "argent": 23157,
+ "darrell": 23158,
+ "concussion": 23159,
+ "losers": 23160,
+ "regrets": 23161,
+ "thessaloniki": 23162,
+ "reversal": 23163,
+ "donaldson": 23164,
+ "hardwood": 23165,
+ "thence": 23166,
+ "achilles": 23167,
+ "ritter": 23168,
+ "##eran": 23169,
+ "demonic": 23170,
+ "jurgen": 23171,
+ "prophets": 23172,
+ "goethe": 23173,
+ "eki": 23174,
+ "classmate": 23175,
+ "buff": 23176,
+ "##cking": 23177,
+ "yank": 23178,
+ "irrational": 23179,
+ "##inging": 23180,
+ "perished": 23181,
+ "seductive": 23182,
+ "qur": 23183,
+ "sourced": 23184,
+ "##crat": 23185,
+ "##typic": 23186,
+ "mustard": 23187,
+ "ravine": 23188,
+ "barre": 23189,
+ "horizontally": 23190,
+ "characterization": 23191,
+ "phylogenetic": 23192,
+ "boise": 23193,
+ "##dit": 23194,
+ "##runner": 23195,
+ "##tower": 23196,
+ "brutally": 23197,
+ "intercourse": 23198,
+ "seduce": 23199,
+ "##bbing": 23200,
+ "fay": 23201,
+ "ferris": 23202,
+ "ogden": 23203,
+ "amar": 23204,
+ "nik": 23205,
+ "unarmed": 23206,
+ "##inator": 23207,
+ "evaluating": 23208,
+ "kyrgyzstan": 23209,
+ "sweetness": 23210,
+ "##lford": 23211,
+ "##oki": 23212,
+ "mccormick": 23213,
+ "meiji": 23214,
+ "notoriety": 23215,
+ "stimulate": 23216,
+ "disrupt": 23217,
+ "figuring": 23218,
+ "instructional": 23219,
+ "mcgrath": 23220,
+ "##zoo": 23221,
+ "groundbreaking": 23222,
+ "##lto": 23223,
+ "flinch": 23224,
+ "khorasan": 23225,
+ "agrarian": 23226,
+ "bengals": 23227,
+ "mixer": 23228,
+ "radiating": 23229,
+ "##sov": 23230,
+ "ingram": 23231,
+ "pitchers": 23232,
+ "nad": 23233,
+ "tariff": 23234,
+ "##cript": 23235,
+ "tata": 23236,
+ "##codes": 23237,
+ "##emi": 23238,
+ "##ungen": 23239,
+ "appellate": 23240,
+ "lehigh": 23241,
+ "##bled": 23242,
+ "##giri": 23243,
+ "brawl": 23244,
+ "duct": 23245,
+ "texans": 23246,
+ "##ciation": 23247,
+ "##ropolis": 23248,
+ "skipper": 23249,
+ "speculative": 23250,
+ "vomit": 23251,
+ "doctrines": 23252,
+ "stresses": 23253,
+ "253": 23254,
+ "davy": 23255,
+ "graders": 23256,
+ "whitehead": 23257,
+ "jozef": 23258,
+ "timely": 23259,
+ "cumulative": 23260,
+ "haryana": 23261,
+ "paints": 23262,
+ "appropriately": 23263,
+ "boon": 23264,
+ "cactus": 23265,
+ "##ales": 23266,
+ "##pid": 23267,
+ "dow": 23268,
+ "legions": 23269,
+ "##pit": 23270,
+ "perceptions": 23271,
+ "1730": 23272,
+ "picturesque": 23273,
+ "##yse": 23274,
+ "periphery": 23275,
+ "rune": 23276,
+ "wr": 23277,
+ "##aha": 23278,
+ "celtics": 23279,
+ "sentencing": 23280,
+ "whoa": 23281,
+ "##erin": 23282,
+ "confirms": 23283,
+ "variance": 23284,
+ "425": 23285,
+ "moines": 23286,
+ "mathews": 23287,
+ "spade": 23288,
+ "rave": 23289,
+ "m1": 23290,
+ "fronted": 23291,
+ "fx": 23292,
+ "blending": 23293,
+ "alleging": 23294,
+ "reared": 23295,
+ "##gl": 23296,
+ "237": 23297,
+ "##paper": 23298,
+ "grassroots": 23299,
+ "eroded": 23300,
+ "##free": 23301,
+ "##physical": 23302,
+ "directs": 23303,
+ "ordeal": 23304,
+ "##sław": 23305,
+ "accelerate": 23306,
+ "hacker": 23307,
+ "rooftop": 23308,
+ "##inia": 23309,
+ "lev": 23310,
+ "buys": 23311,
+ "cebu": 23312,
+ "devote": 23313,
+ "##lce": 23314,
+ "specialising": 23315,
+ "##ulsion": 23316,
+ "choreographed": 23317,
+ "repetition": 23318,
+ "warehouses": 23319,
+ "##ryl": 23320,
+ "paisley": 23321,
+ "tuscany": 23322,
+ "analogy": 23323,
+ "sorcerer": 23324,
+ "hash": 23325,
+ "huts": 23326,
+ "shards": 23327,
+ "descends": 23328,
+ "exclude": 23329,
+ "nix": 23330,
+ "chaplin": 23331,
+ "gaga": 23332,
+ "ito": 23333,
+ "vane": 23334,
+ "##drich": 23335,
+ "causeway": 23336,
+ "misconduct": 23337,
+ "limo": 23338,
+ "orchestrated": 23339,
+ "glands": 23340,
+ "jana": 23341,
+ "##kot": 23342,
+ "u2": 23343,
+ "##mple": 23344,
+ "##sons": 23345,
+ "branching": 23346,
+ "contrasts": 23347,
+ "scoop": 23348,
+ "longed": 23349,
+ "##virus": 23350,
+ "chattanooga": 23351,
+ "##75": 23352,
+ "syrup": 23353,
+ "cornerstone": 23354,
+ "##tized": 23355,
+ "##mind": 23356,
+ "##iaceae": 23357,
+ "careless": 23358,
+ "precedence": 23359,
+ "frescoes": 23360,
+ "##uet": 23361,
+ "chilled": 23362,
+ "consult": 23363,
+ "modelled": 23364,
+ "snatch": 23365,
+ "peat": 23366,
+ "##thermal": 23367,
+ "caucasian": 23368,
+ "humane": 23369,
+ "relaxation": 23370,
+ "spins": 23371,
+ "temperance": 23372,
+ "##lbert": 23373,
+ "occupations": 23374,
+ "lambda": 23375,
+ "hybrids": 23376,
+ "moons": 23377,
+ "mp3": 23378,
+ "##oese": 23379,
+ "247": 23380,
+ "rolf": 23381,
+ "societal": 23382,
+ "yerevan": 23383,
+ "ness": 23384,
+ "##ssler": 23385,
+ "befriended": 23386,
+ "mechanized": 23387,
+ "nominate": 23388,
+ "trough": 23389,
+ "boasted": 23390,
+ "cues": 23391,
+ "seater": 23392,
+ "##hom": 23393,
+ "bends": 23394,
+ "##tangle": 23395,
+ "conductors": 23396,
+ "emptiness": 23397,
+ "##lmer": 23398,
+ "eurasian": 23399,
+ "adriatic": 23400,
+ "tian": 23401,
+ "##cie": 23402,
+ "anxiously": 23403,
+ "lark": 23404,
+ "propellers": 23405,
+ "chichester": 23406,
+ "jock": 23407,
+ "ev": 23408,
+ "2a": 23409,
+ "##holding": 23410,
+ "credible": 23411,
+ "recounts": 23412,
+ "tori": 23413,
+ "loyalist": 23414,
+ "abduction": 23415,
+ "##hoot": 23416,
+ "##redo": 23417,
+ "nepali": 23418,
+ "##mite": 23419,
+ "ventral": 23420,
+ "tempting": 23421,
+ "##ango": 23422,
+ "##crats": 23423,
+ "steered": 23424,
+ "##wice": 23425,
+ "javelin": 23426,
+ "dipping": 23427,
+ "laborers": 23428,
+ "prentice": 23429,
+ "looming": 23430,
+ "titanium": 23431,
+ "##ː": 23432,
+ "badges": 23433,
+ "emir": 23434,
+ "tensor": 23435,
+ "##ntation": 23436,
+ "egyptians": 23437,
+ "rash": 23438,
+ "denies": 23439,
+ "hawthorne": 23440,
+ "lombard": 23441,
+ "showers": 23442,
+ "wehrmacht": 23443,
+ "dietary": 23444,
+ "trojan": 23445,
+ "##reus": 23446,
+ "welles": 23447,
+ "executing": 23448,
+ "horseshoe": 23449,
+ "lifeboat": 23450,
+ "##lak": 23451,
+ "elsa": 23452,
+ "infirmary": 23453,
+ "nearing": 23454,
+ "roberta": 23455,
+ "boyer": 23456,
+ "mutter": 23457,
+ "trillion": 23458,
+ "joanne": 23459,
+ "##fine": 23460,
+ "##oked": 23461,
+ "sinks": 23462,
+ "vortex": 23463,
+ "uruguayan": 23464,
+ "clasp": 23465,
+ "sirius": 23466,
+ "##block": 23467,
+ "accelerator": 23468,
+ "prohibit": 23469,
+ "sunken": 23470,
+ "byu": 23471,
+ "chronological": 23472,
+ "diplomats": 23473,
+ "ochreous": 23474,
+ "510": 23475,
+ "symmetrical": 23476,
+ "1644": 23477,
+ "maia": 23478,
+ "##tology": 23479,
+ "salts": 23480,
+ "reigns": 23481,
+ "atrocities": 23482,
+ "##ия": 23483,
+ "hess": 23484,
+ "bared": 23485,
+ "issn": 23486,
+ "##vyn": 23487,
+ "cater": 23488,
+ "saturated": 23489,
+ "##cycle": 23490,
+ "##isse": 23491,
+ "sable": 23492,
+ "voyager": 23493,
+ "dyer": 23494,
+ "yusuf": 23495,
+ "##inge": 23496,
+ "fountains": 23497,
+ "wolff": 23498,
+ "##39": 23499,
+ "##nni": 23500,
+ "engraving": 23501,
+ "rollins": 23502,
+ "atheist": 23503,
+ "ominous": 23504,
+ "##ault": 23505,
+ "herr": 23506,
+ "chariot": 23507,
+ "martina": 23508,
+ "strung": 23509,
+ "##fell": 23510,
+ "##farlane": 23511,
+ "horrific": 23512,
+ "sahib": 23513,
+ "gazes": 23514,
+ "saetan": 23515,
+ "erased": 23516,
+ "ptolemy": 23517,
+ "##olic": 23518,
+ "flushing": 23519,
+ "lauderdale": 23520,
+ "analytic": 23521,
+ "##ices": 23522,
+ "530": 23523,
+ "navarro": 23524,
+ "beak": 23525,
+ "gorilla": 23526,
+ "herrera": 23527,
+ "broom": 23528,
+ "guadalupe": 23529,
+ "raiding": 23530,
+ "sykes": 23531,
+ "311": 23532,
+ "bsc": 23533,
+ "deliveries": 23534,
+ "1720": 23535,
+ "invasions": 23536,
+ "carmichael": 23537,
+ "tajikistan": 23538,
+ "thematic": 23539,
+ "ecumenical": 23540,
+ "sentiments": 23541,
+ "onstage": 23542,
+ "##rians": 23543,
+ "##brand": 23544,
+ "##sume": 23545,
+ "catastrophic": 23546,
+ "flanks": 23547,
+ "molten": 23548,
+ "##arns": 23549,
+ "waller": 23550,
+ "aimee": 23551,
+ "terminating": 23552,
+ "##icing": 23553,
+ "alternately": 23554,
+ "##oche": 23555,
+ "nehru": 23556,
+ "printers": 23557,
+ "outraged": 23558,
+ "##eving": 23559,
+ "empires": 23560,
+ "template": 23561,
+ "banners": 23562,
+ "repetitive": 23563,
+ "za": 23564,
+ "##oise": 23565,
+ "vegetarian": 23566,
+ "##tell": 23567,
+ "guiana": 23568,
+ "opt": 23569,
+ "cavendish": 23570,
+ "lucknow": 23571,
+ "synthesized": 23572,
+ "##hani": 23573,
+ "##mada": 23574,
+ "finalized": 23575,
+ "##ctable": 23576,
+ "fictitious": 23577,
+ "mayoral": 23578,
+ "unreliable": 23579,
+ "##enham": 23580,
+ "embracing": 23581,
+ "peppers": 23582,
+ "rbis": 23583,
+ "##chio": 23584,
+ "##neo": 23585,
+ "inhibition": 23586,
+ "slashed": 23587,
+ "togo": 23588,
+ "orderly": 23589,
+ "embroidered": 23590,
+ "safari": 23591,
+ "salty": 23592,
+ "236": 23593,
+ "barron": 23594,
+ "benito": 23595,
+ "totaled": 23596,
+ "##dak": 23597,
+ "pubs": 23598,
+ "simulated": 23599,
+ "caden": 23600,
+ "devin": 23601,
+ "tolkien": 23602,
+ "momma": 23603,
+ "welding": 23604,
+ "sesame": 23605,
+ "##ept": 23606,
+ "gottingen": 23607,
+ "hardness": 23608,
+ "630": 23609,
+ "shaman": 23610,
+ "temeraire": 23611,
+ "620": 23612,
+ "adequately": 23613,
+ "pediatric": 23614,
+ "##kit": 23615,
+ "ck": 23616,
+ "assertion": 23617,
+ "radicals": 23618,
+ "composure": 23619,
+ "cadence": 23620,
+ "seafood": 23621,
+ "beaufort": 23622,
+ "lazarus": 23623,
+ "mani": 23624,
+ "warily": 23625,
+ "cunning": 23626,
+ "kurdistan": 23627,
+ "249": 23628,
+ "cantata": 23629,
+ "##kir": 23630,
+ "ares": 23631,
+ "##41": 23632,
+ "##clusive": 23633,
+ "nape": 23634,
+ "townland": 23635,
+ "geared": 23636,
+ "insulted": 23637,
+ "flutter": 23638,
+ "boating": 23639,
+ "violate": 23640,
+ "draper": 23641,
+ "dumping": 23642,
+ "malmo": 23643,
+ "##hh": 23644,
+ "##romatic": 23645,
+ "firearm": 23646,
+ "alta": 23647,
+ "bono": 23648,
+ "obscured": 23649,
+ "##clave": 23650,
+ "exceeds": 23651,
+ "panorama": 23652,
+ "unbelievable": 23653,
+ "##train": 23654,
+ "preschool": 23655,
+ "##essed": 23656,
+ "disconnected": 23657,
+ "installing": 23658,
+ "rescuing": 23659,
+ "secretaries": 23660,
+ "accessibility": 23661,
+ "##castle": 23662,
+ "##drive": 23663,
+ "##ifice": 23664,
+ "##film": 23665,
+ "bouts": 23666,
+ "slug": 23667,
+ "waterway": 23668,
+ "mindanao": 23669,
+ "##buro": 23670,
+ "##ratic": 23671,
+ "halves": 23672,
+ "##ل": 23673,
+ "calming": 23674,
+ "liter": 23675,
+ "maternity": 23676,
+ "adorable": 23677,
+ "bragg": 23678,
+ "electrification": 23679,
+ "mcc": 23680,
+ "##dote": 23681,
+ "roxy": 23682,
+ "schizophrenia": 23683,
+ "##body": 23684,
+ "munoz": 23685,
+ "kaye": 23686,
+ "whaling": 23687,
+ "239": 23688,
+ "mil": 23689,
+ "tingling": 23690,
+ "tolerant": 23691,
+ "##ago": 23692,
+ "unconventional": 23693,
+ "volcanoes": 23694,
+ "##finder": 23695,
+ "deportivo": 23696,
+ "##llie": 23697,
+ "robson": 23698,
+ "kaufman": 23699,
+ "neuroscience": 23700,
+ "wai": 23701,
+ "deportation": 23702,
+ "masovian": 23703,
+ "scraping": 23704,
+ "converse": 23705,
+ "##bh": 23706,
+ "hacking": 23707,
+ "bulge": 23708,
+ "##oun": 23709,
+ "administratively": 23710,
+ "yao": 23711,
+ "580": 23712,
+ "amp": 23713,
+ "mammoth": 23714,
+ "booster": 23715,
+ "claremont": 23716,
+ "hooper": 23717,
+ "nomenclature": 23718,
+ "pursuits": 23719,
+ "mclaughlin": 23720,
+ "melinda": 23721,
+ "##sul": 23722,
+ "catfish": 23723,
+ "barclay": 23724,
+ "substrates": 23725,
+ "taxa": 23726,
+ "zee": 23727,
+ "originals": 23728,
+ "kimberly": 23729,
+ "packets": 23730,
+ "padma": 23731,
+ "##ality": 23732,
+ "borrowing": 23733,
+ "ostensibly": 23734,
+ "solvent": 23735,
+ "##bri": 23736,
+ "##genesis": 23737,
+ "##mist": 23738,
+ "lukas": 23739,
+ "shreveport": 23740,
+ "veracruz": 23741,
+ "##ь": 23742,
+ "##lou": 23743,
+ "##wives": 23744,
+ "cheney": 23745,
+ "tt": 23746,
+ "anatolia": 23747,
+ "hobbs": 23748,
+ "##zyn": 23749,
+ "cyclic": 23750,
+ "radiant": 23751,
+ "alistair": 23752,
+ "greenish": 23753,
+ "siena": 23754,
+ "dat": 23755,
+ "independents": 23756,
+ "##bation": 23757,
+ "conform": 23758,
+ "pieter": 23759,
+ "hyper": 23760,
+ "applicant": 23761,
+ "bradshaw": 23762,
+ "spores": 23763,
+ "telangana": 23764,
+ "vinci": 23765,
+ "inexpensive": 23766,
+ "nuclei": 23767,
+ "322": 23768,
+ "jang": 23769,
+ "nme": 23770,
+ "soho": 23771,
+ "spd": 23772,
+ "##ign": 23773,
+ "cradled": 23774,
+ "receptionist": 23775,
+ "pow": 23776,
+ "##43": 23777,
+ "##rika": 23778,
+ "fascism": 23779,
+ "##ifer": 23780,
+ "experimenting": 23781,
+ "##ading": 23782,
+ "##iec": 23783,
+ "##region": 23784,
+ "345": 23785,
+ "jocelyn": 23786,
+ "maris": 23787,
+ "stair": 23788,
+ "nocturnal": 23789,
+ "toro": 23790,
+ "constabulary": 23791,
+ "elgin": 23792,
+ "##kker": 23793,
+ "msc": 23794,
+ "##giving": 23795,
+ "##schen": 23796,
+ "##rase": 23797,
+ "doherty": 23798,
+ "doping": 23799,
+ "sarcastically": 23800,
+ "batter": 23801,
+ "maneuvers": 23802,
+ "##cano": 23803,
+ "##apple": 23804,
+ "##gai": 23805,
+ "##git": 23806,
+ "intrinsic": 23807,
+ "##nst": 23808,
+ "##stor": 23809,
+ "1753": 23810,
+ "showtime": 23811,
+ "cafes": 23812,
+ "gasps": 23813,
+ "lviv": 23814,
+ "ushered": 23815,
+ "##thed": 23816,
+ "fours": 23817,
+ "restart": 23818,
+ "astonishment": 23819,
+ "transmitting": 23820,
+ "flyer": 23821,
+ "shrugs": 23822,
+ "##sau": 23823,
+ "intriguing": 23824,
+ "cones": 23825,
+ "dictated": 23826,
+ "mushrooms": 23827,
+ "medial": 23828,
+ "##kovsky": 23829,
+ "##elman": 23830,
+ "escorting": 23831,
+ "gaped": 23832,
+ "##26": 23833,
+ "godfather": 23834,
+ "##door": 23835,
+ "##sell": 23836,
+ "djs": 23837,
+ "recaptured": 23838,
+ "timetable": 23839,
+ "vila": 23840,
+ "1710": 23841,
+ "3a": 23842,
+ "aerodrome": 23843,
+ "mortals": 23844,
+ "scientology": 23845,
+ "##orne": 23846,
+ "angelina": 23847,
+ "mag": 23848,
+ "convection": 23849,
+ "unpaid": 23850,
+ "insertion": 23851,
+ "intermittent": 23852,
+ "lego": 23853,
+ "##nated": 23854,
+ "endeavor": 23855,
+ "kota": 23856,
+ "pereira": 23857,
+ "##lz": 23858,
+ "304": 23859,
+ "bwv": 23860,
+ "glamorgan": 23861,
+ "insults": 23862,
+ "agatha": 23863,
+ "fey": 23864,
+ "##cend": 23865,
+ "fleetwood": 23866,
+ "mahogany": 23867,
+ "protruding": 23868,
+ "steamship": 23869,
+ "zeta": 23870,
+ "##arty": 23871,
+ "mcguire": 23872,
+ "suspense": 23873,
+ "##sphere": 23874,
+ "advising": 23875,
+ "urges": 23876,
+ "##wala": 23877,
+ "hurriedly": 23878,
+ "meteor": 23879,
+ "gilded": 23880,
+ "inline": 23881,
+ "arroyo": 23882,
+ "stalker": 23883,
+ "##oge": 23884,
+ "excitedly": 23885,
+ "revered": 23886,
+ "##cure": 23887,
+ "earle": 23888,
+ "introductory": 23889,
+ "##break": 23890,
+ "##ilde": 23891,
+ "mutants": 23892,
+ "puff": 23893,
+ "pulses": 23894,
+ "reinforcement": 23895,
+ "##haling": 23896,
+ "curses": 23897,
+ "lizards": 23898,
+ "stalk": 23899,
+ "correlated": 23900,
+ "##fixed": 23901,
+ "fallout": 23902,
+ "macquarie": 23903,
+ "##unas": 23904,
+ "bearded": 23905,
+ "denton": 23906,
+ "heaving": 23907,
+ "802": 23908,
+ "##ocation": 23909,
+ "winery": 23910,
+ "assign": 23911,
+ "dortmund": 23912,
+ "##lkirk": 23913,
+ "everest": 23914,
+ "invariant": 23915,
+ "charismatic": 23916,
+ "susie": 23917,
+ "##elling": 23918,
+ "bled": 23919,
+ "lesley": 23920,
+ "telegram": 23921,
+ "sumner": 23922,
+ "bk": 23923,
+ "##ogen": 23924,
+ "##к": 23925,
+ "wilcox": 23926,
+ "needy": 23927,
+ "colbert": 23928,
+ "duval": 23929,
+ "##iferous": 23930,
+ "##mbled": 23931,
+ "allotted": 23932,
+ "attends": 23933,
+ "imperative": 23934,
+ "##hita": 23935,
+ "replacements": 23936,
+ "hawker": 23937,
+ "##inda": 23938,
+ "insurgency": 23939,
+ "##zee": 23940,
+ "##eke": 23941,
+ "casts": 23942,
+ "##yla": 23943,
+ "680": 23944,
+ "ives": 23945,
+ "transitioned": 23946,
+ "##pack": 23947,
+ "##powering": 23948,
+ "authoritative": 23949,
+ "baylor": 23950,
+ "flex": 23951,
+ "cringed": 23952,
+ "plaintiffs": 23953,
+ "woodrow": 23954,
+ "##skie": 23955,
+ "drastic": 23956,
+ "ape": 23957,
+ "aroma": 23958,
+ "unfolded": 23959,
+ "commotion": 23960,
+ "nt": 23961,
+ "preoccupied": 23962,
+ "theta": 23963,
+ "routines": 23964,
+ "lasers": 23965,
+ "privatization": 23966,
+ "wand": 23967,
+ "domino": 23968,
+ "ek": 23969,
+ "clenching": 23970,
+ "nsa": 23971,
+ "strategically": 23972,
+ "showered": 23973,
+ "bile": 23974,
+ "handkerchief": 23975,
+ "pere": 23976,
+ "storing": 23977,
+ "christophe": 23978,
+ "insulting": 23979,
+ "316": 23980,
+ "nakamura": 23981,
+ "romani": 23982,
+ "asiatic": 23983,
+ "magdalena": 23984,
+ "palma": 23985,
+ "cruises": 23986,
+ "stripping": 23987,
+ "405": 23988,
+ "konstantin": 23989,
+ "soaring": 23990,
+ "##berman": 23991,
+ "colloquially": 23992,
+ "forerunner": 23993,
+ "havilland": 23994,
+ "incarcerated": 23995,
+ "parasites": 23996,
+ "sincerity": 23997,
+ "##utus": 23998,
+ "disks": 23999,
+ "plank": 24000,
+ "saigon": 24001,
+ "##ining": 24002,
+ "corbin": 24003,
+ "homo": 24004,
+ "ornaments": 24005,
+ "powerhouse": 24006,
+ "##tlement": 24007,
+ "chong": 24008,
+ "fastened": 24009,
+ "feasibility": 24010,
+ "idf": 24011,
+ "morphological": 24012,
+ "usable": 24013,
+ "##nish": 24014,
+ "##zuki": 24015,
+ "aqueduct": 24016,
+ "jaguars": 24017,
+ "keepers": 24018,
+ "##flies": 24019,
+ "aleksandr": 24020,
+ "faust": 24021,
+ "assigns": 24022,
+ "ewing": 24023,
+ "bacterium": 24024,
+ "hurled": 24025,
+ "tricky": 24026,
+ "hungarians": 24027,
+ "integers": 24028,
+ "wallis": 24029,
+ "321": 24030,
+ "yamaha": 24031,
+ "##isha": 24032,
+ "hushed": 24033,
+ "oblivion": 24034,
+ "aviator": 24035,
+ "evangelist": 24036,
+ "friars": 24037,
+ "##eller": 24038,
+ "monograph": 24039,
+ "ode": 24040,
+ "##nary": 24041,
+ "airplanes": 24042,
+ "labourers": 24043,
+ "charms": 24044,
+ "##nee": 24045,
+ "1661": 24046,
+ "hagen": 24047,
+ "tnt": 24048,
+ "rudder": 24049,
+ "fiesta": 24050,
+ "transcript": 24051,
+ "dorothea": 24052,
+ "ska": 24053,
+ "inhibitor": 24054,
+ "maccabi": 24055,
+ "retorted": 24056,
+ "raining": 24057,
+ "encompassed": 24058,
+ "clauses": 24059,
+ "menacing": 24060,
+ "1642": 24061,
+ "lineman": 24062,
+ "##gist": 24063,
+ "vamps": 24064,
+ "##ape": 24065,
+ "##dick": 24066,
+ "gloom": 24067,
+ "##rera": 24068,
+ "dealings": 24069,
+ "easing": 24070,
+ "seekers": 24071,
+ "##nut": 24072,
+ "##pment": 24073,
+ "helens": 24074,
+ "unmanned": 24075,
+ "##anu": 24076,
+ "##isson": 24077,
+ "basics": 24078,
+ "##amy": 24079,
+ "##ckman": 24080,
+ "adjustments": 24081,
+ "1688": 24082,
+ "brutality": 24083,
+ "horne": 24084,
+ "##zell": 24085,
+ "sui": 24086,
+ "##55": 24087,
+ "##mable": 24088,
+ "aggregator": 24089,
+ "##thal": 24090,
+ "rhino": 24091,
+ "##drick": 24092,
+ "##vira": 24093,
+ "counters": 24094,
+ "zoom": 24095,
+ "##01": 24096,
+ "##rting": 24097,
+ "mn": 24098,
+ "montenegrin": 24099,
+ "packard": 24100,
+ "##unciation": 24101,
+ "##♭": 24102,
+ "##kki": 24103,
+ "reclaim": 24104,
+ "scholastic": 24105,
+ "thugs": 24106,
+ "pulsed": 24107,
+ "##icia": 24108,
+ "syriac": 24109,
+ "quan": 24110,
+ "saddam": 24111,
+ "banda": 24112,
+ "kobe": 24113,
+ "blaming": 24114,
+ "buddies": 24115,
+ "dissent": 24116,
+ "##lusion": 24117,
+ "##usia": 24118,
+ "corbett": 24119,
+ "jaya": 24120,
+ "delle": 24121,
+ "erratic": 24122,
+ "lexie": 24123,
+ "##hesis": 24124,
+ "435": 24125,
+ "amiga": 24126,
+ "hermes": 24127,
+ "##pressing": 24128,
+ "##leen": 24129,
+ "chapels": 24130,
+ "gospels": 24131,
+ "jamal": 24132,
+ "##uating": 24133,
+ "compute": 24134,
+ "revolving": 24135,
+ "warp": 24136,
+ "##sso": 24137,
+ "##thes": 24138,
+ "armory": 24139,
+ "##eras": 24140,
+ "##gol": 24141,
+ "antrim": 24142,
+ "loki": 24143,
+ "##kow": 24144,
+ "##asian": 24145,
+ "##good": 24146,
+ "##zano": 24147,
+ "braid": 24148,
+ "handwriting": 24149,
+ "subdistrict": 24150,
+ "funky": 24151,
+ "pantheon": 24152,
+ "##iculate": 24153,
+ "concurrency": 24154,
+ "estimation": 24155,
+ "improper": 24156,
+ "juliana": 24157,
+ "##his": 24158,
+ "newcomers": 24159,
+ "johnstone": 24160,
+ "staten": 24161,
+ "communicated": 24162,
+ "##oco": 24163,
+ "##alle": 24164,
+ "sausage": 24165,
+ "stormy": 24166,
+ "##stered": 24167,
+ "##tters": 24168,
+ "superfamily": 24169,
+ "##grade": 24170,
+ "acidic": 24171,
+ "collateral": 24172,
+ "tabloid": 24173,
+ "##oped": 24174,
+ "##rza": 24175,
+ "bladder": 24176,
+ "austen": 24177,
+ "##ellant": 24178,
+ "mcgraw": 24179,
+ "##hay": 24180,
+ "hannibal": 24181,
+ "mein": 24182,
+ "aquino": 24183,
+ "lucifer": 24184,
+ "wo": 24185,
+ "badger": 24186,
+ "boar": 24187,
+ "cher": 24188,
+ "christensen": 24189,
+ "greenberg": 24190,
+ "interruption": 24191,
+ "##kken": 24192,
+ "jem": 24193,
+ "244": 24194,
+ "mocked": 24195,
+ "bottoms": 24196,
+ "cambridgeshire": 24197,
+ "##lide": 24198,
+ "sprawling": 24199,
+ "##bbly": 24200,
+ "eastwood": 24201,
+ "ghent": 24202,
+ "synth": 24203,
+ "##buck": 24204,
+ "advisers": 24205,
+ "##bah": 24206,
+ "nominally": 24207,
+ "hapoel": 24208,
+ "qu": 24209,
+ "daggers": 24210,
+ "estranged": 24211,
+ "fabricated": 24212,
+ "towels": 24213,
+ "vinnie": 24214,
+ "wcw": 24215,
+ "misunderstanding": 24216,
+ "anglia": 24217,
+ "nothin": 24218,
+ "unmistakable": 24219,
+ "##dust": 24220,
+ "##lova": 24221,
+ "chilly": 24222,
+ "marquette": 24223,
+ "truss": 24224,
+ "##edge": 24225,
+ "##erine": 24226,
+ "reece": 24227,
+ "##lty": 24228,
+ "##chemist": 24229,
+ "##connected": 24230,
+ "272": 24231,
+ "308": 24232,
+ "41st": 24233,
+ "bash": 24234,
+ "raion": 24235,
+ "waterfalls": 24236,
+ "##ump": 24237,
+ "##main": 24238,
+ "labyrinth": 24239,
+ "queue": 24240,
+ "theorist": 24241,
+ "##istle": 24242,
+ "bharatiya": 24243,
+ "flexed": 24244,
+ "soundtracks": 24245,
+ "rooney": 24246,
+ "leftist": 24247,
+ "patrolling": 24248,
+ "wharton": 24249,
+ "plainly": 24250,
+ "alleviate": 24251,
+ "eastman": 24252,
+ "schuster": 24253,
+ "topographic": 24254,
+ "engages": 24255,
+ "immensely": 24256,
+ "unbearable": 24257,
+ "fairchild": 24258,
+ "1620": 24259,
+ "dona": 24260,
+ "lurking": 24261,
+ "parisian": 24262,
+ "oliveira": 24263,
+ "ia": 24264,
+ "indictment": 24265,
+ "hahn": 24266,
+ "bangladeshi": 24267,
+ "##aster": 24268,
+ "vivo": 24269,
+ "##uming": 24270,
+ "##ential": 24271,
+ "antonia": 24272,
+ "expects": 24273,
+ "indoors": 24274,
+ "kildare": 24275,
+ "harlan": 24276,
+ "##logue": 24277,
+ "##ogenic": 24278,
+ "##sities": 24279,
+ "forgiven": 24280,
+ "##wat": 24281,
+ "childish": 24282,
+ "tavi": 24283,
+ "##mide": 24284,
+ "##orra": 24285,
+ "plausible": 24286,
+ "grimm": 24287,
+ "successively": 24288,
+ "scooted": 24289,
+ "##bola": 24290,
+ "##dget": 24291,
+ "##rith": 24292,
+ "spartans": 24293,
+ "emery": 24294,
+ "flatly": 24295,
+ "azure": 24296,
+ "epilogue": 24297,
+ "##wark": 24298,
+ "flourish": 24299,
+ "##iny": 24300,
+ "##tracted": 24301,
+ "##overs": 24302,
+ "##oshi": 24303,
+ "bestseller": 24304,
+ "distressed": 24305,
+ "receipt": 24306,
+ "spitting": 24307,
+ "hermit": 24308,
+ "topological": 24309,
+ "##cot": 24310,
+ "drilled": 24311,
+ "subunit": 24312,
+ "francs": 24313,
+ "##layer": 24314,
+ "eel": 24315,
+ "##fk": 24316,
+ "##itas": 24317,
+ "octopus": 24318,
+ "footprint": 24319,
+ "petitions": 24320,
+ "ufo": 24321,
+ "##say": 24322,
+ "##foil": 24323,
+ "interfering": 24324,
+ "leaking": 24325,
+ "palo": 24326,
+ "##metry": 24327,
+ "thistle": 24328,
+ "valiant": 24329,
+ "##pic": 24330,
+ "narayan": 24331,
+ "mcpherson": 24332,
+ "##fast": 24333,
+ "gonzales": 24334,
+ "##ym": 24335,
+ "##enne": 24336,
+ "dustin": 24337,
+ "novgorod": 24338,
+ "solos": 24339,
+ "##zman": 24340,
+ "doin": 24341,
+ "##raph": 24342,
+ "##patient": 24343,
+ "##meyer": 24344,
+ "soluble": 24345,
+ "ashland": 24346,
+ "cuffs": 24347,
+ "carole": 24348,
+ "pendleton": 24349,
+ "whistling": 24350,
+ "vassal": 24351,
+ "##river": 24352,
+ "deviation": 24353,
+ "revisited": 24354,
+ "constituents": 24355,
+ "rallied": 24356,
+ "rotate": 24357,
+ "loomed": 24358,
+ "##eil": 24359,
+ "##nting": 24360,
+ "amateurs": 24361,
+ "augsburg": 24362,
+ "auschwitz": 24363,
+ "crowns": 24364,
+ "skeletons": 24365,
+ "##cona": 24366,
+ "bonnet": 24367,
+ "257": 24368,
+ "dummy": 24369,
+ "globalization": 24370,
+ "simeon": 24371,
+ "sleeper": 24372,
+ "mandal": 24373,
+ "differentiated": 24374,
+ "##crow": 24375,
+ "##mare": 24376,
+ "milne": 24377,
+ "bundled": 24378,
+ "exasperated": 24379,
+ "talmud": 24380,
+ "owes": 24381,
+ "segregated": 24382,
+ "##feng": 24383,
+ "##uary": 24384,
+ "dentist": 24385,
+ "piracy": 24386,
+ "props": 24387,
+ "##rang": 24388,
+ "devlin": 24389,
+ "##torium": 24390,
+ "malicious": 24391,
+ "paws": 24392,
+ "##laid": 24393,
+ "dependency": 24394,
+ "##ergy": 24395,
+ "##fers": 24396,
+ "##enna": 24397,
+ "258": 24398,
+ "pistons": 24399,
+ "rourke": 24400,
+ "jed": 24401,
+ "grammatical": 24402,
+ "tres": 24403,
+ "maha": 24404,
+ "wig": 24405,
+ "512": 24406,
+ "ghostly": 24407,
+ "jayne": 24408,
+ "##achal": 24409,
+ "##creen": 24410,
+ "##ilis": 24411,
+ "##lins": 24412,
+ "##rence": 24413,
+ "designate": 24414,
+ "##with": 24415,
+ "arrogance": 24416,
+ "cambodian": 24417,
+ "clones": 24418,
+ "showdown": 24419,
+ "throttle": 24420,
+ "twain": 24421,
+ "##ception": 24422,
+ "lobes": 24423,
+ "metz": 24424,
+ "nagoya": 24425,
+ "335": 24426,
+ "braking": 24427,
+ "##furt": 24428,
+ "385": 24429,
+ "roaming": 24430,
+ "##minster": 24431,
+ "amin": 24432,
+ "crippled": 24433,
+ "##37": 24434,
+ "##llary": 24435,
+ "indifferent": 24436,
+ "hoffmann": 24437,
+ "idols": 24438,
+ "intimidating": 24439,
+ "1751": 24440,
+ "261": 24441,
+ "influenza": 24442,
+ "memo": 24443,
+ "onions": 24444,
+ "1748": 24445,
+ "bandage": 24446,
+ "consciously": 24447,
+ "##landa": 24448,
+ "##rage": 24449,
+ "clandestine": 24450,
+ "observes": 24451,
+ "swiped": 24452,
+ "tangle": 24453,
+ "##ener": 24454,
+ "##jected": 24455,
+ "##trum": 24456,
+ "##bill": 24457,
+ "##lta": 24458,
+ "hugs": 24459,
+ "congresses": 24460,
+ "josiah": 24461,
+ "spirited": 24462,
+ "##dek": 24463,
+ "humanist": 24464,
+ "managerial": 24465,
+ "filmmaking": 24466,
+ "inmate": 24467,
+ "rhymes": 24468,
+ "debuting": 24469,
+ "grimsby": 24470,
+ "ur": 24471,
+ "##laze": 24472,
+ "duplicate": 24473,
+ "vigor": 24474,
+ "##tf": 24475,
+ "republished": 24476,
+ "bolshevik": 24477,
+ "refurbishment": 24478,
+ "antibiotics": 24479,
+ "martini": 24480,
+ "methane": 24481,
+ "newscasts": 24482,
+ "royale": 24483,
+ "horizons": 24484,
+ "levant": 24485,
+ "iain": 24486,
+ "visas": 24487,
+ "##ischen": 24488,
+ "paler": 24489,
+ "##around": 24490,
+ "manifestation": 24491,
+ "snuck": 24492,
+ "alf": 24493,
+ "chop": 24494,
+ "futile": 24495,
+ "pedestal": 24496,
+ "rehab": 24497,
+ "##kat": 24498,
+ "bmg": 24499,
+ "kerman": 24500,
+ "res": 24501,
+ "fairbanks": 24502,
+ "jarrett": 24503,
+ "abstraction": 24504,
+ "saharan": 24505,
+ "##zek": 24506,
+ "1746": 24507,
+ "procedural": 24508,
+ "clearer": 24509,
+ "kincaid": 24510,
+ "sash": 24511,
+ "luciano": 24512,
+ "##ffey": 24513,
+ "crunch": 24514,
+ "helmut": 24515,
+ "##vara": 24516,
+ "revolutionaries": 24517,
+ "##tute": 24518,
+ "creamy": 24519,
+ "leach": 24520,
+ "##mmon": 24521,
+ "1747": 24522,
+ "permitting": 24523,
+ "nes": 24524,
+ "plight": 24525,
+ "wendell": 24526,
+ "##lese": 24527,
+ "contra": 24528,
+ "ts": 24529,
+ "clancy": 24530,
+ "ipa": 24531,
+ "mach": 24532,
+ "staples": 24533,
+ "autopsy": 24534,
+ "disturbances": 24535,
+ "nueva": 24536,
+ "karin": 24537,
+ "pontiac": 24538,
+ "##uding": 24539,
+ "proxy": 24540,
+ "venerable": 24541,
+ "haunt": 24542,
+ "leto": 24543,
+ "bergman": 24544,
+ "expands": 24545,
+ "##helm": 24546,
+ "wal": 24547,
+ "##pipe": 24548,
+ "canning": 24549,
+ "celine": 24550,
+ "cords": 24551,
+ "obesity": 24552,
+ "##enary": 24553,
+ "intrusion": 24554,
+ "planner": 24555,
+ "##phate": 24556,
+ "reasoned": 24557,
+ "sequencing": 24558,
+ "307": 24559,
+ "harrow": 24560,
+ "##chon": 24561,
+ "##dora": 24562,
+ "marred": 24563,
+ "mcintyre": 24564,
+ "repay": 24565,
+ "tarzan": 24566,
+ "darting": 24567,
+ "248": 24568,
+ "harrisburg": 24569,
+ "margarita": 24570,
+ "repulsed": 24571,
+ "##hur": 24572,
+ "##lding": 24573,
+ "belinda": 24574,
+ "hamburger": 24575,
+ "novo": 24576,
+ "compliant": 24577,
+ "runways": 24578,
+ "bingham": 24579,
+ "registrar": 24580,
+ "skyscraper": 24581,
+ "ic": 24582,
+ "cuthbert": 24583,
+ "improvisation": 24584,
+ "livelihood": 24585,
+ "##corp": 24586,
+ "##elial": 24587,
+ "admiring": 24588,
+ "##dened": 24589,
+ "sporadic": 24590,
+ "believer": 24591,
+ "casablanca": 24592,
+ "popcorn": 24593,
+ "##29": 24594,
+ "asha": 24595,
+ "shovel": 24596,
+ "##bek": 24597,
+ "##dice": 24598,
+ "coiled": 24599,
+ "tangible": 24600,
+ "##dez": 24601,
+ "casper": 24602,
+ "elsie": 24603,
+ "resin": 24604,
+ "tenderness": 24605,
+ "rectory": 24606,
+ "##ivision": 24607,
+ "avail": 24608,
+ "sonar": 24609,
+ "##mori": 24610,
+ "boutique": 24611,
+ "##dier": 24612,
+ "guerre": 24613,
+ "bathed": 24614,
+ "upbringing": 24615,
+ "vaulted": 24616,
+ "sandals": 24617,
+ "blessings": 24618,
+ "##naut": 24619,
+ "##utnant": 24620,
+ "1680": 24621,
+ "306": 24622,
+ "foxes": 24623,
+ "pia": 24624,
+ "corrosion": 24625,
+ "hesitantly": 24626,
+ "confederates": 24627,
+ "crystalline": 24628,
+ "footprints": 24629,
+ "shapiro": 24630,
+ "tirana": 24631,
+ "valentin": 24632,
+ "drones": 24633,
+ "45th": 24634,
+ "microscope": 24635,
+ "shipments": 24636,
+ "texted": 24637,
+ "inquisition": 24638,
+ "wry": 24639,
+ "guernsey": 24640,
+ "unauthorized": 24641,
+ "resigning": 24642,
+ "760": 24643,
+ "ripple": 24644,
+ "schubert": 24645,
+ "stu": 24646,
+ "reassure": 24647,
+ "felony": 24648,
+ "##ardo": 24649,
+ "brittle": 24650,
+ "koreans": 24651,
+ "##havan": 24652,
+ "##ives": 24653,
+ "dun": 24654,
+ "implicit": 24655,
+ "tyres": 24656,
+ "##aldi": 24657,
+ "##lth": 24658,
+ "magnolia": 24659,
+ "##ehan": 24660,
+ "##puri": 24661,
+ "##poulos": 24662,
+ "aggressively": 24663,
+ "fei": 24664,
+ "gr": 24665,
+ "familiarity": 24666,
+ "##poo": 24667,
+ "indicative": 24668,
+ "##trust": 24669,
+ "fundamentally": 24670,
+ "jimmie": 24671,
+ "overrun": 24672,
+ "395": 24673,
+ "anchors": 24674,
+ "moans": 24675,
+ "##opus": 24676,
+ "britannia": 24677,
+ "armagh": 24678,
+ "##ggle": 24679,
+ "purposely": 24680,
+ "seizing": 24681,
+ "##vao": 24682,
+ "bewildered": 24683,
+ "mundane": 24684,
+ "avoidance": 24685,
+ "cosmopolitan": 24686,
+ "geometridae": 24687,
+ "quartermaster": 24688,
+ "caf": 24689,
+ "415": 24690,
+ "chatter": 24691,
+ "engulfed": 24692,
+ "gleam": 24693,
+ "purge": 24694,
+ "##icate": 24695,
+ "juliette": 24696,
+ "jurisprudence": 24697,
+ "guerra": 24698,
+ "revisions": 24699,
+ "##bn": 24700,
+ "casimir": 24701,
+ "brew": 24702,
+ "##jm": 24703,
+ "1749": 24704,
+ "clapton": 24705,
+ "cloudy": 24706,
+ "conde": 24707,
+ "hermitage": 24708,
+ "278": 24709,
+ "simulations": 24710,
+ "torches": 24711,
+ "vincenzo": 24712,
+ "matteo": 24713,
+ "##rill": 24714,
+ "hidalgo": 24715,
+ "booming": 24716,
+ "westbound": 24717,
+ "accomplishment": 24718,
+ "tentacles": 24719,
+ "unaffected": 24720,
+ "##sius": 24721,
+ "annabelle": 24722,
+ "flopped": 24723,
+ "sloping": 24724,
+ "##litz": 24725,
+ "dreamer": 24726,
+ "interceptor": 24727,
+ "vu": 24728,
+ "##loh": 24729,
+ "consecration": 24730,
+ "copying": 24731,
+ "messaging": 24732,
+ "breaker": 24733,
+ "climates": 24734,
+ "hospitalized": 24735,
+ "1752": 24736,
+ "torino": 24737,
+ "afternoons": 24738,
+ "winfield": 24739,
+ "witnessing": 24740,
+ "##teacher": 24741,
+ "breakers": 24742,
+ "choirs": 24743,
+ "sawmill": 24744,
+ "coldly": 24745,
+ "##ege": 24746,
+ "sipping": 24747,
+ "haste": 24748,
+ "uninhabited": 24749,
+ "conical": 24750,
+ "bibliography": 24751,
+ "pamphlets": 24752,
+ "severn": 24753,
+ "edict": 24754,
+ "##oca": 24755,
+ "deux": 24756,
+ "illnesses": 24757,
+ "grips": 24758,
+ "##pl": 24759,
+ "rehearsals": 24760,
+ "sis": 24761,
+ "thinkers": 24762,
+ "tame": 24763,
+ "##keepers": 24764,
+ "1690": 24765,
+ "acacia": 24766,
+ "reformer": 24767,
+ "##osed": 24768,
+ "##rys": 24769,
+ "shuffling": 24770,
+ "##iring": 24771,
+ "##shima": 24772,
+ "eastbound": 24773,
+ "ionic": 24774,
+ "rhea": 24775,
+ "flees": 24776,
+ "littered": 24777,
+ "##oum": 24778,
+ "rocker": 24779,
+ "vomiting": 24780,
+ "groaning": 24781,
+ "champ": 24782,
+ "overwhelmingly": 24783,
+ "civilizations": 24784,
+ "paces": 24785,
+ "sloop": 24786,
+ "adoptive": 24787,
+ "##tish": 24788,
+ "skaters": 24789,
+ "##vres": 24790,
+ "aiding": 24791,
+ "mango": 24792,
+ "##joy": 24793,
+ "nikola": 24794,
+ "shriek": 24795,
+ "##ignon": 24796,
+ "pharmaceuticals": 24797,
+ "##mg": 24798,
+ "tuna": 24799,
+ "calvert": 24800,
+ "gustavo": 24801,
+ "stocked": 24802,
+ "yearbook": 24803,
+ "##urai": 24804,
+ "##mana": 24805,
+ "computed": 24806,
+ "subsp": 24807,
+ "riff": 24808,
+ "hanoi": 24809,
+ "kelvin": 24810,
+ "hamid": 24811,
+ "moors": 24812,
+ "pastures": 24813,
+ "summons": 24814,
+ "jihad": 24815,
+ "nectar": 24816,
+ "##ctors": 24817,
+ "bayou": 24818,
+ "untitled": 24819,
+ "pleasing": 24820,
+ "vastly": 24821,
+ "republics": 24822,
+ "intellect": 24823,
+ "##η": 24824,
+ "##ulio": 24825,
+ "##tou": 24826,
+ "crumbling": 24827,
+ "stylistic": 24828,
+ "sb": 24829,
+ "##ی": 24830,
+ "consolation": 24831,
+ "frequented": 24832,
+ "h₂o": 24833,
+ "walden": 24834,
+ "widows": 24835,
+ "##iens": 24836,
+ "404": 24837,
+ "##ignment": 24838,
+ "chunks": 24839,
+ "improves": 24840,
+ "288": 24841,
+ "grit": 24842,
+ "recited": 24843,
+ "##dev": 24844,
+ "snarl": 24845,
+ "sociological": 24846,
+ "##arte": 24847,
+ "##gul": 24848,
+ "inquired": 24849,
+ "##held": 24850,
+ "bruise": 24851,
+ "clube": 24852,
+ "consultancy": 24853,
+ "homogeneous": 24854,
+ "hornets": 24855,
+ "multiplication": 24856,
+ "pasta": 24857,
+ "prick": 24858,
+ "savior": 24859,
+ "##grin": 24860,
+ "##kou": 24861,
+ "##phile": 24862,
+ "yoon": 24863,
+ "##gara": 24864,
+ "grimes": 24865,
+ "vanishing": 24866,
+ "cheering": 24867,
+ "reacting": 24868,
+ "bn": 24869,
+ "distillery": 24870,
+ "##quisite": 24871,
+ "##vity": 24872,
+ "coe": 24873,
+ "dockyard": 24874,
+ "massif": 24875,
+ "##jord": 24876,
+ "escorts": 24877,
+ "voss": 24878,
+ "##valent": 24879,
+ "byte": 24880,
+ "chopped": 24881,
+ "hawke": 24882,
+ "illusions": 24883,
+ "workings": 24884,
+ "floats": 24885,
+ "##koto": 24886,
+ "##vac": 24887,
+ "kv": 24888,
+ "annapolis": 24889,
+ "madden": 24890,
+ "##onus": 24891,
+ "alvaro": 24892,
+ "noctuidae": 24893,
+ "##cum": 24894,
+ "##scopic": 24895,
+ "avenge": 24896,
+ "steamboat": 24897,
+ "forte": 24898,
+ "illustrates": 24899,
+ "erika": 24900,
+ "##trip": 24901,
+ "570": 24902,
+ "dew": 24903,
+ "nationalities": 24904,
+ "bran": 24905,
+ "manifested": 24906,
+ "thirsty": 24907,
+ "diversified": 24908,
+ "muscled": 24909,
+ "reborn": 24910,
+ "##standing": 24911,
+ "arson": 24912,
+ "##lessness": 24913,
+ "##dran": 24914,
+ "##logram": 24915,
+ "##boys": 24916,
+ "##kushima": 24917,
+ "##vious": 24918,
+ "willoughby": 24919,
+ "##phobia": 24920,
+ "286": 24921,
+ "alsace": 24922,
+ "dashboard": 24923,
+ "yuki": 24924,
+ "##chai": 24925,
+ "granville": 24926,
+ "myspace": 24927,
+ "publicized": 24928,
+ "tricked": 24929,
+ "##gang": 24930,
+ "adjective": 24931,
+ "##ater": 24932,
+ "relic": 24933,
+ "reorganisation": 24934,
+ "enthusiastically": 24935,
+ "indications": 24936,
+ "saxe": 24937,
+ "##lassified": 24938,
+ "consolidate": 24939,
+ "iec": 24940,
+ "padua": 24941,
+ "helplessly": 24942,
+ "ramps": 24943,
+ "renaming": 24944,
+ "regulars": 24945,
+ "pedestrians": 24946,
+ "accents": 24947,
+ "convicts": 24948,
+ "inaccurate": 24949,
+ "lowers": 24950,
+ "mana": 24951,
+ "##pati": 24952,
+ "barrie": 24953,
+ "bjp": 24954,
+ "outta": 24955,
+ "someplace": 24956,
+ "berwick": 24957,
+ "flanking": 24958,
+ "invoked": 24959,
+ "marrow": 24960,
+ "sparsely": 24961,
+ "excerpts": 24962,
+ "clothed": 24963,
+ "rei": 24964,
+ "##ginal": 24965,
+ "wept": 24966,
+ "##straße": 24967,
+ "##vish": 24968,
+ "alexa": 24969,
+ "excel": 24970,
+ "##ptive": 24971,
+ "membranes": 24972,
+ "aquitaine": 24973,
+ "creeks": 24974,
+ "cutler": 24975,
+ "sheppard": 24976,
+ "implementations": 24977,
+ "ns": 24978,
+ "##dur": 24979,
+ "fragrance": 24980,
+ "budge": 24981,
+ "concordia": 24982,
+ "magnesium": 24983,
+ "marcelo": 24984,
+ "##antes": 24985,
+ "gladly": 24986,
+ "vibrating": 24987,
+ "##rral": 24988,
+ "##ggles": 24989,
+ "montrose": 24990,
+ "##omba": 24991,
+ "lew": 24992,
+ "seamus": 24993,
+ "1630": 24994,
+ "cocky": 24995,
+ "##ament": 24996,
+ "##uen": 24997,
+ "bjorn": 24998,
+ "##rrick": 24999,
+ "fielder": 25000,
+ "fluttering": 25001,
+ "##lase": 25002,
+ "methyl": 25003,
+ "kimberley": 25004,
+ "mcdowell": 25005,
+ "reductions": 25006,
+ "barbed": 25007,
+ "##jic": 25008,
+ "##tonic": 25009,
+ "aeronautical": 25010,
+ "condensed": 25011,
+ "distracting": 25012,
+ "##promising": 25013,
+ "huffed": 25014,
+ "##cala": 25015,
+ "##sle": 25016,
+ "claudius": 25017,
+ "invincible": 25018,
+ "missy": 25019,
+ "pious": 25020,
+ "balthazar": 25021,
+ "ci": 25022,
+ "##lang": 25023,
+ "butte": 25024,
+ "combo": 25025,
+ "orson": 25026,
+ "##dication": 25027,
+ "myriad": 25028,
+ "1707": 25029,
+ "silenced": 25030,
+ "##fed": 25031,
+ "##rh": 25032,
+ "coco": 25033,
+ "netball": 25034,
+ "yourselves": 25035,
+ "##oza": 25036,
+ "clarify": 25037,
+ "heller": 25038,
+ "peg": 25039,
+ "durban": 25040,
+ "etudes": 25041,
+ "offender": 25042,
+ "roast": 25043,
+ "blackmail": 25044,
+ "curvature": 25045,
+ "##woods": 25046,
+ "vile": 25047,
+ "309": 25048,
+ "illicit": 25049,
+ "suriname": 25050,
+ "##linson": 25051,
+ "overture": 25052,
+ "1685": 25053,
+ "bubbling": 25054,
+ "gymnast": 25055,
+ "tucking": 25056,
+ "##mming": 25057,
+ "##ouin": 25058,
+ "maldives": 25059,
+ "##bala": 25060,
+ "gurney": 25061,
+ "##dda": 25062,
+ "##eased": 25063,
+ "##oides": 25064,
+ "backside": 25065,
+ "pinto": 25066,
+ "jars": 25067,
+ "racehorse": 25068,
+ "tending": 25069,
+ "##rdial": 25070,
+ "baronetcy": 25071,
+ "wiener": 25072,
+ "duly": 25073,
+ "##rke": 25074,
+ "barbarian": 25075,
+ "cupping": 25076,
+ "flawed": 25077,
+ "##thesis": 25078,
+ "bertha": 25079,
+ "pleistocene": 25080,
+ "puddle": 25081,
+ "swearing": 25082,
+ "##nob": 25083,
+ "##tically": 25084,
+ "fleeting": 25085,
+ "prostate": 25086,
+ "amulet": 25087,
+ "educating": 25088,
+ "##mined": 25089,
+ "##iti": 25090,
+ "##tler": 25091,
+ "75th": 25092,
+ "jens": 25093,
+ "respondents": 25094,
+ "analytics": 25095,
+ "cavaliers": 25096,
+ "papacy": 25097,
+ "raju": 25098,
+ "##iente": 25099,
+ "##ulum": 25100,
+ "##tip": 25101,
+ "funnel": 25102,
+ "271": 25103,
+ "disneyland": 25104,
+ "##lley": 25105,
+ "sociologist": 25106,
+ "##iam": 25107,
+ "2500": 25108,
+ "faulkner": 25109,
+ "louvre": 25110,
+ "menon": 25111,
+ "##dson": 25112,
+ "276": 25113,
+ "##ower": 25114,
+ "afterlife": 25115,
+ "mannheim": 25116,
+ "peptide": 25117,
+ "referees": 25118,
+ "comedians": 25119,
+ "meaningless": 25120,
+ "##anger": 25121,
+ "##laise": 25122,
+ "fabrics": 25123,
+ "hurley": 25124,
+ "renal": 25125,
+ "sleeps": 25126,
+ "##bour": 25127,
+ "##icle": 25128,
+ "breakout": 25129,
+ "kristin": 25130,
+ "roadside": 25131,
+ "animator": 25132,
+ "clover": 25133,
+ "disdain": 25134,
+ "unsafe": 25135,
+ "redesign": 25136,
+ "##urity": 25137,
+ "firth": 25138,
+ "barnsley": 25139,
+ "portage": 25140,
+ "reset": 25141,
+ "narrows": 25142,
+ "268": 25143,
+ "commandos": 25144,
+ "expansive": 25145,
+ "speechless": 25146,
+ "tubular": 25147,
+ "##lux": 25148,
+ "essendon": 25149,
+ "eyelashes": 25150,
+ "smashwords": 25151,
+ "##yad": 25152,
+ "##bang": 25153,
+ "##claim": 25154,
+ "craved": 25155,
+ "sprinted": 25156,
+ "chet": 25157,
+ "somme": 25158,
+ "astor": 25159,
+ "wrocław": 25160,
+ "orton": 25161,
+ "266": 25162,
+ "bane": 25163,
+ "##erving": 25164,
+ "##uing": 25165,
+ "mischief": 25166,
+ "##amps": 25167,
+ "##sund": 25168,
+ "scaling": 25169,
+ "terre": 25170,
+ "##xious": 25171,
+ "impairment": 25172,
+ "offenses": 25173,
+ "undermine": 25174,
+ "moi": 25175,
+ "soy": 25176,
+ "contiguous": 25177,
+ "arcadia": 25178,
+ "inuit": 25179,
+ "seam": 25180,
+ "##tops": 25181,
+ "macbeth": 25182,
+ "rebelled": 25183,
+ "##icative": 25184,
+ "##iot": 25185,
+ "590": 25186,
+ "elaborated": 25187,
+ "frs": 25188,
+ "uniformed": 25189,
+ "##dberg": 25190,
+ "259": 25191,
+ "powerless": 25192,
+ "priscilla": 25193,
+ "stimulated": 25194,
+ "980": 25195,
+ "qc": 25196,
+ "arboretum": 25197,
+ "frustrating": 25198,
+ "trieste": 25199,
+ "bullock": 25200,
+ "##nified": 25201,
+ "enriched": 25202,
+ "glistening": 25203,
+ "intern": 25204,
+ "##adia": 25205,
+ "locus": 25206,
+ "nouvelle": 25207,
+ "ollie": 25208,
+ "ike": 25209,
+ "lash": 25210,
+ "starboard": 25211,
+ "ee": 25212,
+ "tapestry": 25213,
+ "headlined": 25214,
+ "hove": 25215,
+ "rigged": 25216,
+ "##vite": 25217,
+ "pollock": 25218,
+ "##yme": 25219,
+ "thrive": 25220,
+ "clustered": 25221,
+ "cas": 25222,
+ "roi": 25223,
+ "gleamed": 25224,
+ "olympiad": 25225,
+ "##lino": 25226,
+ "pressured": 25227,
+ "regimes": 25228,
+ "##hosis": 25229,
+ "##lick": 25230,
+ "ripley": 25231,
+ "##ophone": 25232,
+ "kickoff": 25233,
+ "gallon": 25234,
+ "rockwell": 25235,
+ "##arable": 25236,
+ "crusader": 25237,
+ "glue": 25238,
+ "revolutions": 25239,
+ "scrambling": 25240,
+ "1714": 25241,
+ "grover": 25242,
+ "##jure": 25243,
+ "englishman": 25244,
+ "aztec": 25245,
+ "263": 25246,
+ "contemplating": 25247,
+ "coven": 25248,
+ "ipad": 25249,
+ "preach": 25250,
+ "triumphant": 25251,
+ "tufts": 25252,
+ "##esian": 25253,
+ "rotational": 25254,
+ "##phus": 25255,
+ "328": 25256,
+ "falkland": 25257,
+ "##brates": 25258,
+ "strewn": 25259,
+ "clarissa": 25260,
+ "rejoin": 25261,
+ "environmentally": 25262,
+ "glint": 25263,
+ "banded": 25264,
+ "drenched": 25265,
+ "moat": 25266,
+ "albanians": 25267,
+ "johor": 25268,
+ "rr": 25269,
+ "maestro": 25270,
+ "malley": 25271,
+ "nouveau": 25272,
+ "shaded": 25273,
+ "taxonomy": 25274,
+ "v6": 25275,
+ "adhere": 25276,
+ "bunk": 25277,
+ "airfields": 25278,
+ "##ritan": 25279,
+ "1741": 25280,
+ "encompass": 25281,
+ "remington": 25282,
+ "tran": 25283,
+ "##erative": 25284,
+ "amelie": 25285,
+ "mazda": 25286,
+ "friar": 25287,
+ "morals": 25288,
+ "passions": 25289,
+ "##zai": 25290,
+ "breadth": 25291,
+ "vis": 25292,
+ "##hae": 25293,
+ "argus": 25294,
+ "burnham": 25295,
+ "caressing": 25296,
+ "insider": 25297,
+ "rudd": 25298,
+ "##imov": 25299,
+ "##mini": 25300,
+ "##rso": 25301,
+ "italianate": 25302,
+ "murderous": 25303,
+ "textual": 25304,
+ "wainwright": 25305,
+ "armada": 25306,
+ "bam": 25307,
+ "weave": 25308,
+ "timer": 25309,
+ "##taken": 25310,
+ "##nh": 25311,
+ "fra": 25312,
+ "##crest": 25313,
+ "ardent": 25314,
+ "salazar": 25315,
+ "taps": 25316,
+ "tunis": 25317,
+ "##ntino": 25318,
+ "allegro": 25319,
+ "gland": 25320,
+ "philanthropic": 25321,
+ "##chester": 25322,
+ "implication": 25323,
+ "##optera": 25324,
+ "esq": 25325,
+ "judas": 25326,
+ "noticeably": 25327,
+ "wynn": 25328,
+ "##dara": 25329,
+ "inched": 25330,
+ "indexed": 25331,
+ "crises": 25332,
+ "villiers": 25333,
+ "bandit": 25334,
+ "royalties": 25335,
+ "patterned": 25336,
+ "cupboard": 25337,
+ "interspersed": 25338,
+ "accessory": 25339,
+ "isla": 25340,
+ "kendrick": 25341,
+ "entourage": 25342,
+ "stitches": 25343,
+ "##esthesia": 25344,
+ "headwaters": 25345,
+ "##ior": 25346,
+ "interlude": 25347,
+ "distraught": 25348,
+ "draught": 25349,
+ "1727": 25350,
+ "##basket": 25351,
+ "biased": 25352,
+ "sy": 25353,
+ "transient": 25354,
+ "triad": 25355,
+ "subgenus": 25356,
+ "adapting": 25357,
+ "kidd": 25358,
+ "shortstop": 25359,
+ "##umatic": 25360,
+ "dimly": 25361,
+ "spiked": 25362,
+ "mcleod": 25363,
+ "reprint": 25364,
+ "nellie": 25365,
+ "pretoria": 25366,
+ "windmill": 25367,
+ "##cek": 25368,
+ "singled": 25369,
+ "##mps": 25370,
+ "273": 25371,
+ "reunite": 25372,
+ "##orous": 25373,
+ "747": 25374,
+ "bankers": 25375,
+ "outlying": 25376,
+ "##omp": 25377,
+ "##ports": 25378,
+ "##tream": 25379,
+ "apologies": 25380,
+ "cosmetics": 25381,
+ "patsy": 25382,
+ "##deh": 25383,
+ "##ocks": 25384,
+ "##yson": 25385,
+ "bender": 25386,
+ "nantes": 25387,
+ "serene": 25388,
+ "##nad": 25389,
+ "lucha": 25390,
+ "mmm": 25391,
+ "323": 25392,
+ "##cius": 25393,
+ "##gli": 25394,
+ "cmll": 25395,
+ "coinage": 25396,
+ "nestor": 25397,
+ "juarez": 25398,
+ "##rook": 25399,
+ "smeared": 25400,
+ "sprayed": 25401,
+ "twitching": 25402,
+ "sterile": 25403,
+ "irina": 25404,
+ "embodied": 25405,
+ "juveniles": 25406,
+ "enveloped": 25407,
+ "miscellaneous": 25408,
+ "cancers": 25409,
+ "dq": 25410,
+ "gulped": 25411,
+ "luisa": 25412,
+ "crested": 25413,
+ "swat": 25414,
+ "donegal": 25415,
+ "ref": 25416,
+ "##anov": 25417,
+ "##acker": 25418,
+ "hearst": 25419,
+ "mercantile": 25420,
+ "##lika": 25421,
+ "doorbell": 25422,
+ "ua": 25423,
+ "vicki": 25424,
+ "##alla": 25425,
+ "##som": 25426,
+ "bilbao": 25427,
+ "psychologists": 25428,
+ "stryker": 25429,
+ "sw": 25430,
+ "horsemen": 25431,
+ "turkmenistan": 25432,
+ "wits": 25433,
+ "##national": 25434,
+ "anson": 25435,
+ "mathew": 25436,
+ "screenings": 25437,
+ "##umb": 25438,
+ "rihanna": 25439,
+ "##agne": 25440,
+ "##nessy": 25441,
+ "aisles": 25442,
+ "##iani": 25443,
+ "##osphere": 25444,
+ "hines": 25445,
+ "kenton": 25446,
+ "saskatoon": 25447,
+ "tasha": 25448,
+ "truncated": 25449,
+ "##champ": 25450,
+ "##itan": 25451,
+ "mildred": 25452,
+ "advises": 25453,
+ "fredrik": 25454,
+ "interpreting": 25455,
+ "inhibitors": 25456,
+ "##athi": 25457,
+ "spectroscopy": 25458,
+ "##hab": 25459,
+ "##kong": 25460,
+ "karim": 25461,
+ "panda": 25462,
+ "##oia": 25463,
+ "##nail": 25464,
+ "##vc": 25465,
+ "conqueror": 25466,
+ "kgb": 25467,
+ "leukemia": 25468,
+ "##dity": 25469,
+ "arrivals": 25470,
+ "cheered": 25471,
+ "pisa": 25472,
+ "phosphorus": 25473,
+ "shielded": 25474,
+ "##riated": 25475,
+ "mammal": 25476,
+ "unitarian": 25477,
+ "urgently": 25478,
+ "chopin": 25479,
+ "sanitary": 25480,
+ "##mission": 25481,
+ "spicy": 25482,
+ "drugged": 25483,
+ "hinges": 25484,
+ "##tort": 25485,
+ "tipping": 25486,
+ "trier": 25487,
+ "impoverished": 25488,
+ "westchester": 25489,
+ "##caster": 25490,
+ "267": 25491,
+ "epoch": 25492,
+ "nonstop": 25493,
+ "##gman": 25494,
+ "##khov": 25495,
+ "aromatic": 25496,
+ "centrally": 25497,
+ "cerro": 25498,
+ "##tively": 25499,
+ "##vio": 25500,
+ "billions": 25501,
+ "modulation": 25502,
+ "sedimentary": 25503,
+ "283": 25504,
+ "facilitating": 25505,
+ "outrageous": 25506,
+ "goldstein": 25507,
+ "##eak": 25508,
+ "##kt": 25509,
+ "ld": 25510,
+ "maitland": 25511,
+ "penultimate": 25512,
+ "pollard": 25513,
+ "##dance": 25514,
+ "fleets": 25515,
+ "spaceship": 25516,
+ "vertebrae": 25517,
+ "##nig": 25518,
+ "alcoholism": 25519,
+ "als": 25520,
+ "recital": 25521,
+ "##bham": 25522,
+ "##ference": 25523,
+ "##omics": 25524,
+ "m2": 25525,
+ "##bm": 25526,
+ "trois": 25527,
+ "##tropical": 25528,
+ "##в": 25529,
+ "commemorates": 25530,
+ "##meric": 25531,
+ "marge": 25532,
+ "##raction": 25533,
+ "1643": 25534,
+ "670": 25535,
+ "cosmetic": 25536,
+ "ravaged": 25537,
+ "##ige": 25538,
+ "catastrophe": 25539,
+ "eng": 25540,
+ "##shida": 25541,
+ "albrecht": 25542,
+ "arterial": 25543,
+ "bellamy": 25544,
+ "decor": 25545,
+ "harmon": 25546,
+ "##rde": 25547,
+ "bulbs": 25548,
+ "synchronized": 25549,
+ "vito": 25550,
+ "easiest": 25551,
+ "shetland": 25552,
+ "shielding": 25553,
+ "wnba": 25554,
+ "##glers": 25555,
+ "##ssar": 25556,
+ "##riam": 25557,
+ "brianna": 25558,
+ "cumbria": 25559,
+ "##aceous": 25560,
+ "##rard": 25561,
+ "cores": 25562,
+ "thayer": 25563,
+ "##nsk": 25564,
+ "brood": 25565,
+ "hilltop": 25566,
+ "luminous": 25567,
+ "carts": 25568,
+ "keynote": 25569,
+ "larkin": 25570,
+ "logos": 25571,
+ "##cta": 25572,
+ "##ا": 25573,
+ "##mund": 25574,
+ "##quay": 25575,
+ "lilith": 25576,
+ "tinted": 25577,
+ "277": 25578,
+ "wrestle": 25579,
+ "mobilization": 25580,
+ "##uses": 25581,
+ "sequential": 25582,
+ "siam": 25583,
+ "bloomfield": 25584,
+ "takahashi": 25585,
+ "274": 25586,
+ "##ieving": 25587,
+ "presenters": 25588,
+ "ringo": 25589,
+ "blazed": 25590,
+ "witty": 25591,
+ "##oven": 25592,
+ "##ignant": 25593,
+ "devastation": 25594,
+ "haydn": 25595,
+ "harmed": 25596,
+ "newt": 25597,
+ "therese": 25598,
+ "##peed": 25599,
+ "gershwin": 25600,
+ "molina": 25601,
+ "rabbis": 25602,
+ "sudanese": 25603,
+ "001": 25604,
+ "innate": 25605,
+ "restarted": 25606,
+ "##sack": 25607,
+ "##fus": 25608,
+ "slices": 25609,
+ "wb": 25610,
+ "##shah": 25611,
+ "enroll": 25612,
+ "hypothetical": 25613,
+ "hysterical": 25614,
+ "1743": 25615,
+ "fabio": 25616,
+ "indefinite": 25617,
+ "warped": 25618,
+ "##hg": 25619,
+ "exchanging": 25620,
+ "525": 25621,
+ "unsuitable": 25622,
+ "##sboro": 25623,
+ "gallo": 25624,
+ "1603": 25625,
+ "bret": 25626,
+ "cobalt": 25627,
+ "homemade": 25628,
+ "##hunter": 25629,
+ "mx": 25630,
+ "operatives": 25631,
+ "##dhar": 25632,
+ "terraces": 25633,
+ "durable": 25634,
+ "latch": 25635,
+ "pens": 25636,
+ "whorls": 25637,
+ "##ctuated": 25638,
+ "##eaux": 25639,
+ "billing": 25640,
+ "ligament": 25641,
+ "succumbed": 25642,
+ "##gly": 25643,
+ "regulators": 25644,
+ "spawn": 25645,
+ "##brick": 25646,
+ "##stead": 25647,
+ "filmfare": 25648,
+ "rochelle": 25649,
+ "##nzo": 25650,
+ "1725": 25651,
+ "circumstance": 25652,
+ "saber": 25653,
+ "supplements": 25654,
+ "##nsky": 25655,
+ "##tson": 25656,
+ "crowe": 25657,
+ "wellesley": 25658,
+ "carrot": 25659,
+ "##9th": 25660,
+ "##movable": 25661,
+ "primate": 25662,
+ "drury": 25663,
+ "sincerely": 25664,
+ "topical": 25665,
+ "##mad": 25666,
+ "##rao": 25667,
+ "callahan": 25668,
+ "kyiv": 25669,
+ "smarter": 25670,
+ "tits": 25671,
+ "undo": 25672,
+ "##yeh": 25673,
+ "announcements": 25674,
+ "anthologies": 25675,
+ "barrio": 25676,
+ "nebula": 25677,
+ "##islaus": 25678,
+ "##shaft": 25679,
+ "##tyn": 25680,
+ "bodyguards": 25681,
+ "2021": 25682,
+ "assassinate": 25683,
+ "barns": 25684,
+ "emmett": 25685,
+ "scully": 25686,
+ "##mah": 25687,
+ "##yd": 25688,
+ "##eland": 25689,
+ "##tino": 25690,
+ "##itarian": 25691,
+ "demoted": 25692,
+ "gorman": 25693,
+ "lashed": 25694,
+ "prized": 25695,
+ "adventist": 25696,
+ "writ": 25697,
+ "##gui": 25698,
+ "alla": 25699,
+ "invertebrates": 25700,
+ "##ausen": 25701,
+ "1641": 25702,
+ "amman": 25703,
+ "1742": 25704,
+ "align": 25705,
+ "healy": 25706,
+ "redistribution": 25707,
+ "##gf": 25708,
+ "##rize": 25709,
+ "insulation": 25710,
+ "##drop": 25711,
+ "adherents": 25712,
+ "hezbollah": 25713,
+ "vitro": 25714,
+ "ferns": 25715,
+ "yanking": 25716,
+ "269": 25717,
+ "php": 25718,
+ "registering": 25719,
+ "uppsala": 25720,
+ "cheerleading": 25721,
+ "confines": 25722,
+ "mischievous": 25723,
+ "tully": 25724,
+ "##ross": 25725,
+ "49th": 25726,
+ "docked": 25727,
+ "roam": 25728,
+ "stipulated": 25729,
+ "pumpkin": 25730,
+ "##bry": 25731,
+ "prompt": 25732,
+ "##ezer": 25733,
+ "blindly": 25734,
+ "shuddering": 25735,
+ "craftsmen": 25736,
+ "frail": 25737,
+ "scented": 25738,
+ "katharine": 25739,
+ "scramble": 25740,
+ "shaggy": 25741,
+ "sponge": 25742,
+ "helix": 25743,
+ "zaragoza": 25744,
+ "279": 25745,
+ "##52": 25746,
+ "43rd": 25747,
+ "backlash": 25748,
+ "fontaine": 25749,
+ "seizures": 25750,
+ "posse": 25751,
+ "cowan": 25752,
+ "nonfiction": 25753,
+ "telenovela": 25754,
+ "wwii": 25755,
+ "hammered": 25756,
+ "undone": 25757,
+ "##gpur": 25758,
+ "encircled": 25759,
+ "irs": 25760,
+ "##ivation": 25761,
+ "artefacts": 25762,
+ "oneself": 25763,
+ "searing": 25764,
+ "smallpox": 25765,
+ "##belle": 25766,
+ "##osaurus": 25767,
+ "shandong": 25768,
+ "breached": 25769,
+ "upland": 25770,
+ "blushing": 25771,
+ "rankin": 25772,
+ "infinitely": 25773,
+ "psyche": 25774,
+ "tolerated": 25775,
+ "docking": 25776,
+ "evicted": 25777,
+ "##col": 25778,
+ "unmarked": 25779,
+ "##lving": 25780,
+ "gnome": 25781,
+ "lettering": 25782,
+ "litres": 25783,
+ "musique": 25784,
+ "##oint": 25785,
+ "benevolent": 25786,
+ "##jal": 25787,
+ "blackened": 25788,
+ "##anna": 25789,
+ "mccall": 25790,
+ "racers": 25791,
+ "tingle": 25792,
+ "##ocene": 25793,
+ "##orestation": 25794,
+ "introductions": 25795,
+ "radically": 25796,
+ "292": 25797,
+ "##hiff": 25798,
+ "##باد": 25799,
+ "1610": 25800,
+ "1739": 25801,
+ "munchen": 25802,
+ "plead": 25803,
+ "##nka": 25804,
+ "condo": 25805,
+ "scissors": 25806,
+ "##sight": 25807,
+ "##tens": 25808,
+ "apprehension": 25809,
+ "##cey": 25810,
+ "##yin": 25811,
+ "hallmark": 25812,
+ "watering": 25813,
+ "formulas": 25814,
+ "sequels": 25815,
+ "##llas": 25816,
+ "aggravated": 25817,
+ "bae": 25818,
+ "commencing": 25819,
+ "##building": 25820,
+ "enfield": 25821,
+ "prohibits": 25822,
+ "marne": 25823,
+ "vedic": 25824,
+ "civilized": 25825,
+ "euclidean": 25826,
+ "jagger": 25827,
+ "beforehand": 25828,
+ "blasts": 25829,
+ "dumont": 25830,
+ "##arney": 25831,
+ "##nem": 25832,
+ "740": 25833,
+ "conversions": 25834,
+ "hierarchical": 25835,
+ "rios": 25836,
+ "simulator": 25837,
+ "##dya": 25838,
+ "##lellan": 25839,
+ "hedges": 25840,
+ "oleg": 25841,
+ "thrusts": 25842,
+ "shadowed": 25843,
+ "darby": 25844,
+ "maximize": 25845,
+ "1744": 25846,
+ "gregorian": 25847,
+ "##nded": 25848,
+ "##routed": 25849,
+ "sham": 25850,
+ "unspecified": 25851,
+ "##hog": 25852,
+ "emory": 25853,
+ "factual": 25854,
+ "##smo": 25855,
+ "##tp": 25856,
+ "fooled": 25857,
+ "##rger": 25858,
+ "ortega": 25859,
+ "wellness": 25860,
+ "marlon": 25861,
+ "##oton": 25862,
+ "##urance": 25863,
+ "casket": 25864,
+ "keating": 25865,
+ "ley": 25866,
+ "enclave": 25867,
+ "##ayan": 25868,
+ "char": 25869,
+ "influencing": 25870,
+ "jia": 25871,
+ "##chenko": 25872,
+ "412": 25873,
+ "ammonia": 25874,
+ "erebidae": 25875,
+ "incompatible": 25876,
+ "violins": 25877,
+ "cornered": 25878,
+ "##arat": 25879,
+ "grooves": 25880,
+ "astronauts": 25881,
+ "columbian": 25882,
+ "rampant": 25883,
+ "fabrication": 25884,
+ "kyushu": 25885,
+ "mahmud": 25886,
+ "vanish": 25887,
+ "##dern": 25888,
+ "mesopotamia": 25889,
+ "##lete": 25890,
+ "ict": 25891,
+ "##rgen": 25892,
+ "caspian": 25893,
+ "kenji": 25894,
+ "pitted": 25895,
+ "##vered": 25896,
+ "999": 25897,
+ "grimace": 25898,
+ "roanoke": 25899,
+ "tchaikovsky": 25900,
+ "twinned": 25901,
+ "##analysis": 25902,
+ "##awan": 25903,
+ "xinjiang": 25904,
+ "arias": 25905,
+ "clemson": 25906,
+ "kazakh": 25907,
+ "sizable": 25908,
+ "1662": 25909,
+ "##khand": 25910,
+ "##vard": 25911,
+ "plunge": 25912,
+ "tatum": 25913,
+ "vittorio": 25914,
+ "##nden": 25915,
+ "cholera": 25916,
+ "##dana": 25917,
+ "##oper": 25918,
+ "bracing": 25919,
+ "indifference": 25920,
+ "projectile": 25921,
+ "superliga": 25922,
+ "##chee": 25923,
+ "realises": 25924,
+ "upgrading": 25925,
+ "299": 25926,
+ "porte": 25927,
+ "retribution": 25928,
+ "##vies": 25929,
+ "nk": 25930,
+ "stil": 25931,
+ "##resses": 25932,
+ "ama": 25933,
+ "bureaucracy": 25934,
+ "blackberry": 25935,
+ "bosch": 25936,
+ "testosterone": 25937,
+ "collapses": 25938,
+ "greer": 25939,
+ "##pathic": 25940,
+ "ioc": 25941,
+ "fifties": 25942,
+ "malls": 25943,
+ "##erved": 25944,
+ "bao": 25945,
+ "baskets": 25946,
+ "adolescents": 25947,
+ "siegfried": 25948,
+ "##osity": 25949,
+ "##tosis": 25950,
+ "mantra": 25951,
+ "detecting": 25952,
+ "existent": 25953,
+ "fledgling": 25954,
+ "##cchi": 25955,
+ "dissatisfied": 25956,
+ "gan": 25957,
+ "telecommunication": 25958,
+ "mingled": 25959,
+ "sobbed": 25960,
+ "6000": 25961,
+ "controversies": 25962,
+ "outdated": 25963,
+ "taxis": 25964,
+ "##raus": 25965,
+ "fright": 25966,
+ "slams": 25967,
+ "##lham": 25968,
+ "##fect": 25969,
+ "##tten": 25970,
+ "detectors": 25971,
+ "fetal": 25972,
+ "tanned": 25973,
+ "##uw": 25974,
+ "fray": 25975,
+ "goth": 25976,
+ "olympian": 25977,
+ "skipping": 25978,
+ "mandates": 25979,
+ "scratches": 25980,
+ "sheng": 25981,
+ "unspoken": 25982,
+ "hyundai": 25983,
+ "tracey": 25984,
+ "hotspur": 25985,
+ "restrictive": 25986,
+ "##buch": 25987,
+ "americana": 25988,
+ "mundo": 25989,
+ "##bari": 25990,
+ "burroughs": 25991,
+ "diva": 25992,
+ "vulcan": 25993,
+ "##6th": 25994,
+ "distinctions": 25995,
+ "thumping": 25996,
+ "##ngen": 25997,
+ "mikey": 25998,
+ "sheds": 25999,
+ "fide": 26000,
+ "rescues": 26001,
+ "springsteen": 26002,
+ "vested": 26003,
+ "valuation": 26004,
+ "##ece": 26005,
+ "##ely": 26006,
+ "pinnacle": 26007,
+ "rake": 26008,
+ "sylvie": 26009,
+ "##edo": 26010,
+ "almond": 26011,
+ "quivering": 26012,
+ "##irus": 26013,
+ "alteration": 26014,
+ "faltered": 26015,
+ "##wad": 26016,
+ "51st": 26017,
+ "hydra": 26018,
+ "ticked": 26019,
+ "##kato": 26020,
+ "recommends": 26021,
+ "##dicated": 26022,
+ "antigua": 26023,
+ "arjun": 26024,
+ "stagecoach": 26025,
+ "wilfred": 26026,
+ "trickle": 26027,
+ "pronouns": 26028,
+ "##pon": 26029,
+ "aryan": 26030,
+ "nighttime": 26031,
+ "##anian": 26032,
+ "gall": 26033,
+ "pea": 26034,
+ "stitch": 26035,
+ "##hei": 26036,
+ "leung": 26037,
+ "milos": 26038,
+ "##dini": 26039,
+ "eritrea": 26040,
+ "nexus": 26041,
+ "starved": 26042,
+ "snowfall": 26043,
+ "kant": 26044,
+ "parasitic": 26045,
+ "cot": 26046,
+ "discus": 26047,
+ "hana": 26048,
+ "strikers": 26049,
+ "appleton": 26050,
+ "kitchens": 26051,
+ "##erina": 26052,
+ "##partisan": 26053,
+ "##itha": 26054,
+ "##vius": 26055,
+ "disclose": 26056,
+ "metis": 26057,
+ "##channel": 26058,
+ "1701": 26059,
+ "tesla": 26060,
+ "##vera": 26061,
+ "fitch": 26062,
+ "1735": 26063,
+ "blooded": 26064,
+ "##tila": 26065,
+ "decimal": 26066,
+ "##tang": 26067,
+ "##bai": 26068,
+ "cyclones": 26069,
+ "eun": 26070,
+ "bottled": 26071,
+ "peas": 26072,
+ "pensacola": 26073,
+ "basha": 26074,
+ "bolivian": 26075,
+ "crabs": 26076,
+ "boil": 26077,
+ "lanterns": 26078,
+ "partridge": 26079,
+ "roofed": 26080,
+ "1645": 26081,
+ "necks": 26082,
+ "##phila": 26083,
+ "opined": 26084,
+ "patting": 26085,
+ "##kla": 26086,
+ "##lland": 26087,
+ "chuckles": 26088,
+ "volta": 26089,
+ "whereupon": 26090,
+ "##nche": 26091,
+ "devout": 26092,
+ "euroleague": 26093,
+ "suicidal": 26094,
+ "##dee": 26095,
+ "inherently": 26096,
+ "involuntary": 26097,
+ "knitting": 26098,
+ "nasser": 26099,
+ "##hide": 26100,
+ "puppets": 26101,
+ "colourful": 26102,
+ "courageous": 26103,
+ "southend": 26104,
+ "stills": 26105,
+ "miraculous": 26106,
+ "hodgson": 26107,
+ "richer": 26108,
+ "rochdale": 26109,
+ "ethernet": 26110,
+ "greta": 26111,
+ "uniting": 26112,
+ "prism": 26113,
+ "umm": 26114,
+ "##haya": 26115,
+ "##itical": 26116,
+ "##utation": 26117,
+ "deterioration": 26118,
+ "pointe": 26119,
+ "prowess": 26120,
+ "##ropriation": 26121,
+ "lids": 26122,
+ "scranton": 26123,
+ "billings": 26124,
+ "subcontinent": 26125,
+ "##koff": 26126,
+ "##scope": 26127,
+ "brute": 26128,
+ "kellogg": 26129,
+ "psalms": 26130,
+ "degraded": 26131,
+ "##vez": 26132,
+ "stanisław": 26133,
+ "##ructured": 26134,
+ "ferreira": 26135,
+ "pun": 26136,
+ "astonishing": 26137,
+ "gunnar": 26138,
+ "##yat": 26139,
+ "arya": 26140,
+ "prc": 26141,
+ "gottfried": 26142,
+ "##tight": 26143,
+ "excursion": 26144,
+ "##ographer": 26145,
+ "dina": 26146,
+ "##quil": 26147,
+ "##nare": 26148,
+ "huffington": 26149,
+ "illustrious": 26150,
+ "wilbur": 26151,
+ "gundam": 26152,
+ "verandah": 26153,
+ "##zard": 26154,
+ "naacp": 26155,
+ "##odle": 26156,
+ "constructive": 26157,
+ "fjord": 26158,
+ "kade": 26159,
+ "##naud": 26160,
+ "generosity": 26161,
+ "thrilling": 26162,
+ "baseline": 26163,
+ "cayman": 26164,
+ "frankish": 26165,
+ "plastics": 26166,
+ "accommodations": 26167,
+ "zoological": 26168,
+ "##fting": 26169,
+ "cedric": 26170,
+ "qb": 26171,
+ "motorized": 26172,
+ "##dome": 26173,
+ "##otted": 26174,
+ "squealed": 26175,
+ "tackled": 26176,
+ "canucks": 26177,
+ "budgets": 26178,
+ "situ": 26179,
+ "asthma": 26180,
+ "dail": 26181,
+ "gabled": 26182,
+ "grasslands": 26183,
+ "whimpered": 26184,
+ "writhing": 26185,
+ "judgments": 26186,
+ "##65": 26187,
+ "minnie": 26188,
+ "pv": 26189,
+ "##carbon": 26190,
+ "bananas": 26191,
+ "grille": 26192,
+ "domes": 26193,
+ "monique": 26194,
+ "odin": 26195,
+ "maguire": 26196,
+ "markham": 26197,
+ "tierney": 26198,
+ "##estra": 26199,
+ "##chua": 26200,
+ "libel": 26201,
+ "poke": 26202,
+ "speedy": 26203,
+ "atrium": 26204,
+ "laval": 26205,
+ "notwithstanding": 26206,
+ "##edly": 26207,
+ "fai": 26208,
+ "kala": 26209,
+ "##sur": 26210,
+ "robb": 26211,
+ "##sma": 26212,
+ "listings": 26213,
+ "luz": 26214,
+ "supplementary": 26215,
+ "tianjin": 26216,
+ "##acing": 26217,
+ "enzo": 26218,
+ "jd": 26219,
+ "ric": 26220,
+ "scanner": 26221,
+ "croats": 26222,
+ "transcribed": 26223,
+ "##49": 26224,
+ "arden": 26225,
+ "cv": 26226,
+ "##hair": 26227,
+ "##raphy": 26228,
+ "##lver": 26229,
+ "##uy": 26230,
+ "357": 26231,
+ "seventies": 26232,
+ "staggering": 26233,
+ "alam": 26234,
+ "horticultural": 26235,
+ "hs": 26236,
+ "regression": 26237,
+ "timbers": 26238,
+ "blasting": 26239,
+ "##ounded": 26240,
+ "montagu": 26241,
+ "manipulating": 26242,
+ "##cit": 26243,
+ "catalytic": 26244,
+ "1550": 26245,
+ "troopers": 26246,
+ "##meo": 26247,
+ "condemnation": 26248,
+ "fitzpatrick": 26249,
+ "##oire": 26250,
+ "##roved": 26251,
+ "inexperienced": 26252,
+ "1670": 26253,
+ "castes": 26254,
+ "##lative": 26255,
+ "outing": 26256,
+ "314": 26257,
+ "dubois": 26258,
+ "flicking": 26259,
+ "quarrel": 26260,
+ "ste": 26261,
+ "learners": 26262,
+ "1625": 26263,
+ "iq": 26264,
+ "whistled": 26265,
+ "##class": 26266,
+ "282": 26267,
+ "classify": 26268,
+ "tariffs": 26269,
+ "temperament": 26270,
+ "355": 26271,
+ "folly": 26272,
+ "liszt": 26273,
+ "##yles": 26274,
+ "immersed": 26275,
+ "jordanian": 26276,
+ "ceasefire": 26277,
+ "apparel": 26278,
+ "extras": 26279,
+ "maru": 26280,
+ "fished": 26281,
+ "##bio": 26282,
+ "harta": 26283,
+ "stockport": 26284,
+ "assortment": 26285,
+ "craftsman": 26286,
+ "paralysis": 26287,
+ "transmitters": 26288,
+ "##cola": 26289,
+ "blindness": 26290,
+ "##wk": 26291,
+ "fatally": 26292,
+ "proficiency": 26293,
+ "solemnly": 26294,
+ "##orno": 26295,
+ "repairing": 26296,
+ "amore": 26297,
+ "groceries": 26298,
+ "ultraviolet": 26299,
+ "##chase": 26300,
+ "schoolhouse": 26301,
+ "##tua": 26302,
+ "resurgence": 26303,
+ "nailed": 26304,
+ "##otype": 26305,
+ "##×": 26306,
+ "ruse": 26307,
+ "saliva": 26308,
+ "diagrams": 26309,
+ "##tructing": 26310,
+ "albans": 26311,
+ "rann": 26312,
+ "thirties": 26313,
+ "1b": 26314,
+ "antennas": 26315,
+ "hilarious": 26316,
+ "cougars": 26317,
+ "paddington": 26318,
+ "stats": 26319,
+ "##eger": 26320,
+ "breakaway": 26321,
+ "ipod": 26322,
+ "reza": 26323,
+ "authorship": 26324,
+ "prohibiting": 26325,
+ "scoffed": 26326,
+ "##etz": 26327,
+ "##ttle": 26328,
+ "conscription": 26329,
+ "defected": 26330,
+ "trondheim": 26331,
+ "##fires": 26332,
+ "ivanov": 26333,
+ "keenan": 26334,
+ "##adan": 26335,
+ "##ciful": 26336,
+ "##fb": 26337,
+ "##slow": 26338,
+ "locating": 26339,
+ "##ials": 26340,
+ "##tford": 26341,
+ "cadiz": 26342,
+ "basalt": 26343,
+ "blankly": 26344,
+ "interned": 26345,
+ "rags": 26346,
+ "rattling": 26347,
+ "##tick": 26348,
+ "carpathian": 26349,
+ "reassured": 26350,
+ "sync": 26351,
+ "bum": 26352,
+ "guildford": 26353,
+ "iss": 26354,
+ "staunch": 26355,
+ "##onga": 26356,
+ "astronomers": 26357,
+ "sera": 26358,
+ "sofie": 26359,
+ "emergencies": 26360,
+ "susquehanna": 26361,
+ "##heard": 26362,
+ "duc": 26363,
+ "mastery": 26364,
+ "vh1": 26365,
+ "williamsburg": 26366,
+ "bayer": 26367,
+ "buckled": 26368,
+ "craving": 26369,
+ "##khan": 26370,
+ "##rdes": 26371,
+ "bloomington": 26372,
+ "##write": 26373,
+ "alton": 26374,
+ "barbecue": 26375,
+ "##bians": 26376,
+ "justine": 26377,
+ "##hri": 26378,
+ "##ndt": 26379,
+ "delightful": 26380,
+ "smartphone": 26381,
+ "newtown": 26382,
+ "photon": 26383,
+ "retrieval": 26384,
+ "peugeot": 26385,
+ "hissing": 26386,
+ "##monium": 26387,
+ "##orough": 26388,
+ "flavors": 26389,
+ "lighted": 26390,
+ "relaunched": 26391,
+ "tainted": 26392,
+ "##games": 26393,
+ "##lysis": 26394,
+ "anarchy": 26395,
+ "microscopic": 26396,
+ "hopping": 26397,
+ "adept": 26398,
+ "evade": 26399,
+ "evie": 26400,
+ "##beau": 26401,
+ "inhibit": 26402,
+ "sinn": 26403,
+ "adjustable": 26404,
+ "hurst": 26405,
+ "intuition": 26406,
+ "wilton": 26407,
+ "cisco": 26408,
+ "44th": 26409,
+ "lawful": 26410,
+ "lowlands": 26411,
+ "stockings": 26412,
+ "thierry": 26413,
+ "##dalen": 26414,
+ "##hila": 26415,
+ "##nai": 26416,
+ "fates": 26417,
+ "prank": 26418,
+ "tb": 26419,
+ "maison": 26420,
+ "lobbied": 26421,
+ "provocative": 26422,
+ "1724": 26423,
+ "4a": 26424,
+ "utopia": 26425,
+ "##qual": 26426,
+ "carbonate": 26427,
+ "gujarati": 26428,
+ "purcell": 26429,
+ "##rford": 26430,
+ "curtiss": 26431,
+ "##mei": 26432,
+ "overgrown": 26433,
+ "arenas": 26434,
+ "mediation": 26435,
+ "swallows": 26436,
+ "##rnik": 26437,
+ "respectful": 26438,
+ "turnbull": 26439,
+ "##hedron": 26440,
+ "##hope": 26441,
+ "alyssa": 26442,
+ "ozone": 26443,
+ "##ʻi": 26444,
+ "ami": 26445,
+ "gestapo": 26446,
+ "johansson": 26447,
+ "snooker": 26448,
+ "canteen": 26449,
+ "cuff": 26450,
+ "declines": 26451,
+ "empathy": 26452,
+ "stigma": 26453,
+ "##ags": 26454,
+ "##iner": 26455,
+ "##raine": 26456,
+ "taxpayers": 26457,
+ "gui": 26458,
+ "volga": 26459,
+ "##wright": 26460,
+ "##copic": 26461,
+ "lifespan": 26462,
+ "overcame": 26463,
+ "tattooed": 26464,
+ "enactment": 26465,
+ "giggles": 26466,
+ "##ador": 26467,
+ "##camp": 26468,
+ "barrington": 26469,
+ "bribe": 26470,
+ "obligatory": 26471,
+ "orbiting": 26472,
+ "peng": 26473,
+ "##enas": 26474,
+ "elusive": 26475,
+ "sucker": 26476,
+ "##vating": 26477,
+ "cong": 26478,
+ "hardship": 26479,
+ "empowered": 26480,
+ "anticipating": 26481,
+ "estrada": 26482,
+ "cryptic": 26483,
+ "greasy": 26484,
+ "detainees": 26485,
+ "planck": 26486,
+ "sudbury": 26487,
+ "plaid": 26488,
+ "dod": 26489,
+ "marriott": 26490,
+ "kayla": 26491,
+ "##ears": 26492,
+ "##vb": 26493,
+ "##zd": 26494,
+ "mortally": 26495,
+ "##hein": 26496,
+ "cognition": 26497,
+ "radha": 26498,
+ "319": 26499,
+ "liechtenstein": 26500,
+ "meade": 26501,
+ "richly": 26502,
+ "argyle": 26503,
+ "harpsichord": 26504,
+ "liberalism": 26505,
+ "trumpets": 26506,
+ "lauded": 26507,
+ "tyrant": 26508,
+ "salsa": 26509,
+ "tiled": 26510,
+ "lear": 26511,
+ "promoters": 26512,
+ "reused": 26513,
+ "slicing": 26514,
+ "trident": 26515,
+ "##chuk": 26516,
+ "##gami": 26517,
+ "##lka": 26518,
+ "cantor": 26519,
+ "checkpoint": 26520,
+ "##points": 26521,
+ "gaul": 26522,
+ "leger": 26523,
+ "mammalian": 26524,
+ "##tov": 26525,
+ "##aar": 26526,
+ "##schaft": 26527,
+ "doha": 26528,
+ "frenchman": 26529,
+ "nirvana": 26530,
+ "##vino": 26531,
+ "delgado": 26532,
+ "headlining": 26533,
+ "##eron": 26534,
+ "##iography": 26535,
+ "jug": 26536,
+ "tko": 26537,
+ "1649": 26538,
+ "naga": 26539,
+ "intersections": 26540,
+ "##jia": 26541,
+ "benfica": 26542,
+ "nawab": 26543,
+ "##suka": 26544,
+ "ashford": 26545,
+ "gulp": 26546,
+ "##deck": 26547,
+ "##vill": 26548,
+ "##rug": 26549,
+ "brentford": 26550,
+ "frazier": 26551,
+ "pleasures": 26552,
+ "dunne": 26553,
+ "potsdam": 26554,
+ "shenzhen": 26555,
+ "dentistry": 26556,
+ "##tec": 26557,
+ "flanagan": 26558,
+ "##dorff": 26559,
+ "##hear": 26560,
+ "chorale": 26561,
+ "dinah": 26562,
+ "prem": 26563,
+ "quezon": 26564,
+ "##rogated": 26565,
+ "relinquished": 26566,
+ "sutra": 26567,
+ "terri": 26568,
+ "##pani": 26569,
+ "flaps": 26570,
+ "##rissa": 26571,
+ "poly": 26572,
+ "##rnet": 26573,
+ "homme": 26574,
+ "aback": 26575,
+ "##eki": 26576,
+ "linger": 26577,
+ "womb": 26578,
+ "##kson": 26579,
+ "##lewood": 26580,
+ "doorstep": 26581,
+ "orthodoxy": 26582,
+ "threaded": 26583,
+ "westfield": 26584,
+ "##rval": 26585,
+ "dioceses": 26586,
+ "fridays": 26587,
+ "subsided": 26588,
+ "##gata": 26589,
+ "loyalists": 26590,
+ "##biotic": 26591,
+ "##ettes": 26592,
+ "letterman": 26593,
+ "lunatic": 26594,
+ "prelate": 26595,
+ "tenderly": 26596,
+ "invariably": 26597,
+ "souza": 26598,
+ "thug": 26599,
+ "winslow": 26600,
+ "##otide": 26601,
+ "furlongs": 26602,
+ "gogh": 26603,
+ "jeopardy": 26604,
+ "##runa": 26605,
+ "pegasus": 26606,
+ "##umble": 26607,
+ "humiliated": 26608,
+ "standalone": 26609,
+ "tagged": 26610,
+ "##roller": 26611,
+ "freshmen": 26612,
+ "klan": 26613,
+ "##bright": 26614,
+ "attaining": 26615,
+ "initiating": 26616,
+ "transatlantic": 26617,
+ "logged": 26618,
+ "viz": 26619,
+ "##uance": 26620,
+ "1723": 26621,
+ "combatants": 26622,
+ "intervening": 26623,
+ "stephane": 26624,
+ "chieftain": 26625,
+ "despised": 26626,
+ "grazed": 26627,
+ "317": 26628,
+ "cdc": 26629,
+ "galveston": 26630,
+ "godzilla": 26631,
+ "macro": 26632,
+ "simulate": 26633,
+ "##planes": 26634,
+ "parades": 26635,
+ "##esses": 26636,
+ "960": 26637,
+ "##ductive": 26638,
+ "##unes": 26639,
+ "equator": 26640,
+ "overdose": 26641,
+ "##cans": 26642,
+ "##hosh": 26643,
+ "##lifting": 26644,
+ "joshi": 26645,
+ "epstein": 26646,
+ "sonora": 26647,
+ "treacherous": 26648,
+ "aquatics": 26649,
+ "manchu": 26650,
+ "responsive": 26651,
+ "##sation": 26652,
+ "supervisory": 26653,
+ "##christ": 26654,
+ "##llins": 26655,
+ "##ibar": 26656,
+ "##balance": 26657,
+ "##uso": 26658,
+ "kimball": 26659,
+ "karlsruhe": 26660,
+ "mab": 26661,
+ "##emy": 26662,
+ "ignores": 26663,
+ "phonetic": 26664,
+ "reuters": 26665,
+ "spaghetti": 26666,
+ "820": 26667,
+ "almighty": 26668,
+ "danzig": 26669,
+ "rumbling": 26670,
+ "tombstone": 26671,
+ "designations": 26672,
+ "lured": 26673,
+ "outset": 26674,
+ "##felt": 26675,
+ "supermarkets": 26676,
+ "##wt": 26677,
+ "grupo": 26678,
+ "kei": 26679,
+ "kraft": 26680,
+ "susanna": 26681,
+ "##blood": 26682,
+ "comprehension": 26683,
+ "genealogy": 26684,
+ "##aghan": 26685,
+ "##verted": 26686,
+ "redding": 26687,
+ "##ythe": 26688,
+ "1722": 26689,
+ "bowing": 26690,
+ "##pore": 26691,
+ "##roi": 26692,
+ "lest": 26693,
+ "sharpened": 26694,
+ "fulbright": 26695,
+ "valkyrie": 26696,
+ "sikhs": 26697,
+ "##unds": 26698,
+ "swans": 26699,
+ "bouquet": 26700,
+ "merritt": 26701,
+ "##tage": 26702,
+ "##venting": 26703,
+ "commuted": 26704,
+ "redhead": 26705,
+ "clerks": 26706,
+ "leasing": 26707,
+ "cesare": 26708,
+ "dea": 26709,
+ "hazy": 26710,
+ "##vances": 26711,
+ "fledged": 26712,
+ "greenfield": 26713,
+ "servicemen": 26714,
+ "##gical": 26715,
+ "armando": 26716,
+ "blackout": 26717,
+ "dt": 26718,
+ "sagged": 26719,
+ "downloadable": 26720,
+ "intra": 26721,
+ "potion": 26722,
+ "pods": 26723,
+ "##4th": 26724,
+ "##mism": 26725,
+ "xp": 26726,
+ "attendants": 26727,
+ "gambia": 26728,
+ "stale": 26729,
+ "##ntine": 26730,
+ "plump": 26731,
+ "asteroids": 26732,
+ "rediscovered": 26733,
+ "buds": 26734,
+ "flea": 26735,
+ "hive": 26736,
+ "##neas": 26737,
+ "1737": 26738,
+ "classifications": 26739,
+ "debuts": 26740,
+ "##eles": 26741,
+ "olympus": 26742,
+ "scala": 26743,
+ "##eurs": 26744,
+ "##gno": 26745,
+ "##mute": 26746,
+ "hummed": 26747,
+ "sigismund": 26748,
+ "visuals": 26749,
+ "wiggled": 26750,
+ "await": 26751,
+ "pilasters": 26752,
+ "clench": 26753,
+ "sulfate": 26754,
+ "##ances": 26755,
+ "bellevue": 26756,
+ "enigma": 26757,
+ "trainee": 26758,
+ "snort": 26759,
+ "##sw": 26760,
+ "clouded": 26761,
+ "denim": 26762,
+ "##rank": 26763,
+ "##rder": 26764,
+ "churning": 26765,
+ "hartman": 26766,
+ "lodges": 26767,
+ "riches": 26768,
+ "sima": 26769,
+ "##missible": 26770,
+ "accountable": 26771,
+ "socrates": 26772,
+ "regulates": 26773,
+ "mueller": 26774,
+ "##cr": 26775,
+ "1702": 26776,
+ "avoids": 26777,
+ "solids": 26778,
+ "himalayas": 26779,
+ "nutrient": 26780,
+ "pup": 26781,
+ "##jevic": 26782,
+ "squat": 26783,
+ "fades": 26784,
+ "nec": 26785,
+ "##lates": 26786,
+ "##pina": 26787,
+ "##rona": 26788,
+ "##ου": 26789,
+ "privateer": 26790,
+ "tequila": 26791,
+ "##gative": 26792,
+ "##mpton": 26793,
+ "apt": 26794,
+ "hornet": 26795,
+ "immortals": 26796,
+ "##dou": 26797,
+ "asturias": 26798,
+ "cleansing": 26799,
+ "dario": 26800,
+ "##rries": 26801,
+ "##anta": 26802,
+ "etymology": 26803,
+ "servicing": 26804,
+ "zhejiang": 26805,
+ "##venor": 26806,
+ "##nx": 26807,
+ "horned": 26808,
+ "erasmus": 26809,
+ "rayon": 26810,
+ "relocating": 26811,
+ "£10": 26812,
+ "##bags": 26813,
+ "escalated": 26814,
+ "promenade": 26815,
+ "stubble": 26816,
+ "2010s": 26817,
+ "artisans": 26818,
+ "axial": 26819,
+ "liquids": 26820,
+ "mora": 26821,
+ "sho": 26822,
+ "yoo": 26823,
+ "##tsky": 26824,
+ "bundles": 26825,
+ "oldies": 26826,
+ "##nally": 26827,
+ "notification": 26828,
+ "bastion": 26829,
+ "##ths": 26830,
+ "sparkle": 26831,
+ "##lved": 26832,
+ "1728": 26833,
+ "leash": 26834,
+ "pathogen": 26835,
+ "highs": 26836,
+ "##hmi": 26837,
+ "immature": 26838,
+ "880": 26839,
+ "gonzaga": 26840,
+ "ignatius": 26841,
+ "mansions": 26842,
+ "monterrey": 26843,
+ "sweets": 26844,
+ "bryson": 26845,
+ "##loe": 26846,
+ "polled": 26847,
+ "regatta": 26848,
+ "brightest": 26849,
+ "pei": 26850,
+ "rosy": 26851,
+ "squid": 26852,
+ "hatfield": 26853,
+ "payroll": 26854,
+ "addict": 26855,
+ "meath": 26856,
+ "cornerback": 26857,
+ "heaviest": 26858,
+ "lodging": 26859,
+ "##mage": 26860,
+ "capcom": 26861,
+ "rippled": 26862,
+ "##sily": 26863,
+ "barnet": 26864,
+ "mayhem": 26865,
+ "ymca": 26866,
+ "snuggled": 26867,
+ "rousseau": 26868,
+ "##cute": 26869,
+ "blanchard": 26870,
+ "284": 26871,
+ "fragmented": 26872,
+ "leighton": 26873,
+ "chromosomes": 26874,
+ "risking": 26875,
+ "##md": 26876,
+ "##strel": 26877,
+ "##utter": 26878,
+ "corinne": 26879,
+ "coyotes": 26880,
+ "cynical": 26881,
+ "hiroshi": 26882,
+ "yeomanry": 26883,
+ "##ractive": 26884,
+ "ebook": 26885,
+ "grading": 26886,
+ "mandela": 26887,
+ "plume": 26888,
+ "agustin": 26889,
+ "magdalene": 26890,
+ "##rkin": 26891,
+ "bea": 26892,
+ "femme": 26893,
+ "trafford": 26894,
+ "##coll": 26895,
+ "##lun": 26896,
+ "##tance": 26897,
+ "52nd": 26898,
+ "fourier": 26899,
+ "upton": 26900,
+ "##mental": 26901,
+ "camilla": 26902,
+ "gust": 26903,
+ "iihf": 26904,
+ "islamabad": 26905,
+ "longevity": 26906,
+ "##kala": 26907,
+ "feldman": 26908,
+ "netting": 26909,
+ "##rization": 26910,
+ "endeavour": 26911,
+ "foraging": 26912,
+ "mfa": 26913,
+ "orr": 26914,
+ "##open": 26915,
+ "greyish": 26916,
+ "contradiction": 26917,
+ "graz": 26918,
+ "##ruff": 26919,
+ "handicapped": 26920,
+ "marlene": 26921,
+ "tweed": 26922,
+ "oaxaca": 26923,
+ "spp": 26924,
+ "campos": 26925,
+ "miocene": 26926,
+ "pri": 26927,
+ "configured": 26928,
+ "cooks": 26929,
+ "pluto": 26930,
+ "cozy": 26931,
+ "pornographic": 26932,
+ "##entes": 26933,
+ "70th": 26934,
+ "fairness": 26935,
+ "glided": 26936,
+ "jonny": 26937,
+ "lynne": 26938,
+ "rounding": 26939,
+ "sired": 26940,
+ "##emon": 26941,
+ "##nist": 26942,
+ "remade": 26943,
+ "uncover": 26944,
+ "##mack": 26945,
+ "complied": 26946,
+ "lei": 26947,
+ "newsweek": 26948,
+ "##jured": 26949,
+ "##parts": 26950,
+ "##enting": 26951,
+ "##pg": 26952,
+ "293": 26953,
+ "finer": 26954,
+ "guerrillas": 26955,
+ "athenian": 26956,
+ "deng": 26957,
+ "disused": 26958,
+ "stepmother": 26959,
+ "accuse": 26960,
+ "gingerly": 26961,
+ "seduction": 26962,
+ "521": 26963,
+ "confronting": 26964,
+ "##walker": 26965,
+ "##going": 26966,
+ "gora": 26967,
+ "nostalgia": 26968,
+ "sabres": 26969,
+ "virginity": 26970,
+ "wrenched": 26971,
+ "##minated": 26972,
+ "syndication": 26973,
+ "wielding": 26974,
+ "eyre": 26975,
+ "##56": 26976,
+ "##gnon": 26977,
+ "##igny": 26978,
+ "behaved": 26979,
+ "taxpayer": 26980,
+ "sweeps": 26981,
+ "##growth": 26982,
+ "childless": 26983,
+ "gallant": 26984,
+ "##ywood": 26985,
+ "amplified": 26986,
+ "geraldine": 26987,
+ "scrape": 26988,
+ "##ffi": 26989,
+ "babylonian": 26990,
+ "fresco": 26991,
+ "##rdan": 26992,
+ "##kney": 26993,
+ "##position": 26994,
+ "1718": 26995,
+ "restricting": 26996,
+ "tack": 26997,
+ "fukuoka": 26998,
+ "osborn": 26999,
+ "selector": 27000,
+ "partnering": 27001,
+ "##dlow": 27002,
+ "318": 27003,
+ "gnu": 27004,
+ "kia": 27005,
+ "tak": 27006,
+ "whitley": 27007,
+ "gables": 27008,
+ "##54": 27009,
+ "##mania": 27010,
+ "mri": 27011,
+ "softness": 27012,
+ "immersion": 27013,
+ "##bots": 27014,
+ "##evsky": 27015,
+ "1713": 27016,
+ "chilling": 27017,
+ "insignificant": 27018,
+ "pcs": 27019,
+ "##uis": 27020,
+ "elites": 27021,
+ "lina": 27022,
+ "purported": 27023,
+ "supplemental": 27024,
+ "teaming": 27025,
+ "##americana": 27026,
+ "##dding": 27027,
+ "##inton": 27028,
+ "proficient": 27029,
+ "rouen": 27030,
+ "##nage": 27031,
+ "##rret": 27032,
+ "niccolo": 27033,
+ "selects": 27034,
+ "##bread": 27035,
+ "fluffy": 27036,
+ "1621": 27037,
+ "gruff": 27038,
+ "knotted": 27039,
+ "mukherjee": 27040,
+ "polgara": 27041,
+ "thrash": 27042,
+ "nicholls": 27043,
+ "secluded": 27044,
+ "smoothing": 27045,
+ "thru": 27046,
+ "corsica": 27047,
+ "loaf": 27048,
+ "whitaker": 27049,
+ "inquiries": 27050,
+ "##rrier": 27051,
+ "##kam": 27052,
+ "indochina": 27053,
+ "289": 27054,
+ "marlins": 27055,
+ "myles": 27056,
+ "peking": 27057,
+ "##tea": 27058,
+ "extracts": 27059,
+ "pastry": 27060,
+ "superhuman": 27061,
+ "connacht": 27062,
+ "vogel": 27063,
+ "##ditional": 27064,
+ "##het": 27065,
+ "##udged": 27066,
+ "##lash": 27067,
+ "gloss": 27068,
+ "quarries": 27069,
+ "refit": 27070,
+ "teaser": 27071,
+ "##alic": 27072,
+ "##gaon": 27073,
+ "20s": 27074,
+ "materialized": 27075,
+ "sling": 27076,
+ "camped": 27077,
+ "pickering": 27078,
+ "tung": 27079,
+ "tracker": 27080,
+ "pursuant": 27081,
+ "##cide": 27082,
+ "cranes": 27083,
+ "soc": 27084,
+ "##cini": 27085,
+ "##typical": 27086,
+ "##viere": 27087,
+ "anhalt": 27088,
+ "overboard": 27089,
+ "workout": 27090,
+ "chores": 27091,
+ "fares": 27092,
+ "orphaned": 27093,
+ "stains": 27094,
+ "##logie": 27095,
+ "fenton": 27096,
+ "surpassing": 27097,
+ "joyah": 27098,
+ "triggers": 27099,
+ "##itte": 27100,
+ "grandmaster": 27101,
+ "##lass": 27102,
+ "##lists": 27103,
+ "clapping": 27104,
+ "fraudulent": 27105,
+ "ledger": 27106,
+ "nagasaki": 27107,
+ "##cor": 27108,
+ "##nosis": 27109,
+ "##tsa": 27110,
+ "eucalyptus": 27111,
+ "tun": 27112,
+ "##icio": 27113,
+ "##rney": 27114,
+ "##tara": 27115,
+ "dax": 27116,
+ "heroism": 27117,
+ "ina": 27118,
+ "wrexham": 27119,
+ "onboard": 27120,
+ "unsigned": 27121,
+ "##dates": 27122,
+ "moshe": 27123,
+ "galley": 27124,
+ "winnie": 27125,
+ "droplets": 27126,
+ "exiles": 27127,
+ "praises": 27128,
+ "watered": 27129,
+ "noodles": 27130,
+ "##aia": 27131,
+ "fein": 27132,
+ "adi": 27133,
+ "leland": 27134,
+ "multicultural": 27135,
+ "stink": 27136,
+ "bingo": 27137,
+ "comets": 27138,
+ "erskine": 27139,
+ "modernized": 27140,
+ "canned": 27141,
+ "constraint": 27142,
+ "domestically": 27143,
+ "chemotherapy": 27144,
+ "featherweight": 27145,
+ "stifled": 27146,
+ "##mum": 27147,
+ "darkly": 27148,
+ "irresistible": 27149,
+ "refreshing": 27150,
+ "hasty": 27151,
+ "isolate": 27152,
+ "##oys": 27153,
+ "kitchener": 27154,
+ "planners": 27155,
+ "##wehr": 27156,
+ "cages": 27157,
+ "yarn": 27158,
+ "implant": 27159,
+ "toulon": 27160,
+ "elects": 27161,
+ "childbirth": 27162,
+ "yue": 27163,
+ "##lind": 27164,
+ "##lone": 27165,
+ "cn": 27166,
+ "rightful": 27167,
+ "sportsman": 27168,
+ "junctions": 27169,
+ "remodeled": 27170,
+ "specifies": 27171,
+ "##rgh": 27172,
+ "291": 27173,
+ "##oons": 27174,
+ "complimented": 27175,
+ "##urgent": 27176,
+ "lister": 27177,
+ "ot": 27178,
+ "##logic": 27179,
+ "bequeathed": 27180,
+ "cheekbones": 27181,
+ "fontana": 27182,
+ "gabby": 27183,
+ "##dial": 27184,
+ "amadeus": 27185,
+ "corrugated": 27186,
+ "maverick": 27187,
+ "resented": 27188,
+ "triangles": 27189,
+ "##hered": 27190,
+ "##usly": 27191,
+ "nazareth": 27192,
+ "tyrol": 27193,
+ "1675": 27194,
+ "assent": 27195,
+ "poorer": 27196,
+ "sectional": 27197,
+ "aegean": 27198,
+ "##cous": 27199,
+ "296": 27200,
+ "nylon": 27201,
+ "ghanaian": 27202,
+ "##egorical": 27203,
+ "##weig": 27204,
+ "cushions": 27205,
+ "forbid": 27206,
+ "fusiliers": 27207,
+ "obstruction": 27208,
+ "somerville": 27209,
+ "##scia": 27210,
+ "dime": 27211,
+ "earrings": 27212,
+ "elliptical": 27213,
+ "leyte": 27214,
+ "oder": 27215,
+ "polymers": 27216,
+ "timmy": 27217,
+ "atm": 27218,
+ "midtown": 27219,
+ "piloted": 27220,
+ "settles": 27221,
+ "continual": 27222,
+ "externally": 27223,
+ "mayfield": 27224,
+ "##uh": 27225,
+ "enrichment": 27226,
+ "henson": 27227,
+ "keane": 27228,
+ "persians": 27229,
+ "1733": 27230,
+ "benji": 27231,
+ "braden": 27232,
+ "pep": 27233,
+ "324": 27234,
+ "##efe": 27235,
+ "contenders": 27236,
+ "pepsi": 27237,
+ "valet": 27238,
+ "##isches": 27239,
+ "298": 27240,
+ "##asse": 27241,
+ "##earing": 27242,
+ "goofy": 27243,
+ "stroll": 27244,
+ "##amen": 27245,
+ "authoritarian": 27246,
+ "occurrences": 27247,
+ "adversary": 27248,
+ "ahmedabad": 27249,
+ "tangent": 27250,
+ "toppled": 27251,
+ "dorchester": 27252,
+ "1672": 27253,
+ "modernism": 27254,
+ "marxism": 27255,
+ "islamist": 27256,
+ "charlemagne": 27257,
+ "exponential": 27258,
+ "racks": 27259,
+ "unicode": 27260,
+ "brunette": 27261,
+ "mbc": 27262,
+ "pic": 27263,
+ "skirmish": 27264,
+ "##bund": 27265,
+ "##lad": 27266,
+ "##powered": 27267,
+ "##yst": 27268,
+ "hoisted": 27269,
+ "messina": 27270,
+ "shatter": 27271,
+ "##ctum": 27272,
+ "jedi": 27273,
+ "vantage": 27274,
+ "##music": 27275,
+ "##neil": 27276,
+ "clemens": 27277,
+ "mahmoud": 27278,
+ "corrupted": 27279,
+ "authentication": 27280,
+ "lowry": 27281,
+ "nils": 27282,
+ "##washed": 27283,
+ "omnibus": 27284,
+ "wounding": 27285,
+ "jillian": 27286,
+ "##itors": 27287,
+ "##opped": 27288,
+ "serialized": 27289,
+ "narcotics": 27290,
+ "handheld": 27291,
+ "##arm": 27292,
+ "##plicity": 27293,
+ "intersecting": 27294,
+ "stimulating": 27295,
+ "##onis": 27296,
+ "crate": 27297,
+ "fellowships": 27298,
+ "hemingway": 27299,
+ "casinos": 27300,
+ "climatic": 27301,
+ "fordham": 27302,
+ "copeland": 27303,
+ "drip": 27304,
+ "beatty": 27305,
+ "leaflets": 27306,
+ "robber": 27307,
+ "brothel": 27308,
+ "madeira": 27309,
+ "##hedral": 27310,
+ "sphinx": 27311,
+ "ultrasound": 27312,
+ "##vana": 27313,
+ "valor": 27314,
+ "forbade": 27315,
+ "leonid": 27316,
+ "villas": 27317,
+ "##aldo": 27318,
+ "duane": 27319,
+ "marquez": 27320,
+ "##cytes": 27321,
+ "disadvantaged": 27322,
+ "forearms": 27323,
+ "kawasaki": 27324,
+ "reacts": 27325,
+ "consular": 27326,
+ "lax": 27327,
+ "uncles": 27328,
+ "uphold": 27329,
+ "##hopper": 27330,
+ "concepcion": 27331,
+ "dorsey": 27332,
+ "lass": 27333,
+ "##izan": 27334,
+ "arching": 27335,
+ "passageway": 27336,
+ "1708": 27337,
+ "researches": 27338,
+ "tia": 27339,
+ "internationals": 27340,
+ "##graphs": 27341,
+ "##opers": 27342,
+ "distinguishes": 27343,
+ "javanese": 27344,
+ "divert": 27345,
+ "##uven": 27346,
+ "plotted": 27347,
+ "##listic": 27348,
+ "##rwin": 27349,
+ "##erik": 27350,
+ "##tify": 27351,
+ "affirmative": 27352,
+ "signifies": 27353,
+ "validation": 27354,
+ "##bson": 27355,
+ "kari": 27356,
+ "felicity": 27357,
+ "georgina": 27358,
+ "zulu": 27359,
+ "##eros": 27360,
+ "##rained": 27361,
+ "##rath": 27362,
+ "overcoming": 27363,
+ "##dot": 27364,
+ "argyll": 27365,
+ "##rbin": 27366,
+ "1734": 27367,
+ "chiba": 27368,
+ "ratification": 27369,
+ "windy": 27370,
+ "earls": 27371,
+ "parapet": 27372,
+ "##marks": 27373,
+ "hunan": 27374,
+ "pristine": 27375,
+ "astrid": 27376,
+ "punta": 27377,
+ "##gart": 27378,
+ "brodie": 27379,
+ "##kota": 27380,
+ "##oder": 27381,
+ "malaga": 27382,
+ "minerva": 27383,
+ "rouse": 27384,
+ "##phonic": 27385,
+ "bellowed": 27386,
+ "pagoda": 27387,
+ "portals": 27388,
+ "reclamation": 27389,
+ "##gur": 27390,
+ "##odies": 27391,
+ "##⁄₄": 27392,
+ "parentheses": 27393,
+ "quoting": 27394,
+ "allergic": 27395,
+ "palette": 27396,
+ "showcases": 27397,
+ "benefactor": 27398,
+ "heartland": 27399,
+ "nonlinear": 27400,
+ "##tness": 27401,
+ "bladed": 27402,
+ "cheerfully": 27403,
+ "scans": 27404,
+ "##ety": 27405,
+ "##hone": 27406,
+ "1666": 27407,
+ "girlfriends": 27408,
+ "pedersen": 27409,
+ "hiram": 27410,
+ "sous": 27411,
+ "##liche": 27412,
+ "##nator": 27413,
+ "1683": 27414,
+ "##nery": 27415,
+ "##orio": 27416,
+ "##umen": 27417,
+ "bobo": 27418,
+ "primaries": 27419,
+ "smiley": 27420,
+ "##cb": 27421,
+ "unearthed": 27422,
+ "uniformly": 27423,
+ "fis": 27424,
+ "metadata": 27425,
+ "1635": 27426,
+ "ind": 27427,
+ "##oted": 27428,
+ "recoil": 27429,
+ "##titles": 27430,
+ "##tura": 27431,
+ "##ια": 27432,
+ "406": 27433,
+ "hilbert": 27434,
+ "jamestown": 27435,
+ "mcmillan": 27436,
+ "tulane": 27437,
+ "seychelles": 27438,
+ "##frid": 27439,
+ "antics": 27440,
+ "coli": 27441,
+ "fated": 27442,
+ "stucco": 27443,
+ "##grants": 27444,
+ "1654": 27445,
+ "bulky": 27446,
+ "accolades": 27447,
+ "arrays": 27448,
+ "caledonian": 27449,
+ "carnage": 27450,
+ "optimism": 27451,
+ "puebla": 27452,
+ "##tative": 27453,
+ "##cave": 27454,
+ "enforcing": 27455,
+ "rotherham": 27456,
+ "seo": 27457,
+ "dunlop": 27458,
+ "aeronautics": 27459,
+ "chimed": 27460,
+ "incline": 27461,
+ "zoning": 27462,
+ "archduke": 27463,
+ "hellenistic": 27464,
+ "##oses": 27465,
+ "##sions": 27466,
+ "candi": 27467,
+ "thong": 27468,
+ "##ople": 27469,
+ "magnate": 27470,
+ "rustic": 27471,
+ "##rsk": 27472,
+ "projective": 27473,
+ "slant": 27474,
+ "##offs": 27475,
+ "danes": 27476,
+ "hollis": 27477,
+ "vocalists": 27478,
+ "##ammed": 27479,
+ "congenital": 27480,
+ "contend": 27481,
+ "gesellschaft": 27482,
+ "##ocating": 27483,
+ "##pressive": 27484,
+ "douglass": 27485,
+ "quieter": 27486,
+ "##cm": 27487,
+ "##kshi": 27488,
+ "howled": 27489,
+ "salim": 27490,
+ "spontaneously": 27491,
+ "townsville": 27492,
+ "buena": 27493,
+ "southport": 27494,
+ "##bold": 27495,
+ "kato": 27496,
+ "1638": 27497,
+ "faerie": 27498,
+ "stiffly": 27499,
+ "##vus": 27500,
+ "##rled": 27501,
+ "297": 27502,
+ "flawless": 27503,
+ "realising": 27504,
+ "taboo": 27505,
+ "##7th": 27506,
+ "bytes": 27507,
+ "straightening": 27508,
+ "356": 27509,
+ "jena": 27510,
+ "##hid": 27511,
+ "##rmin": 27512,
+ "cartwright": 27513,
+ "berber": 27514,
+ "bertram": 27515,
+ "soloists": 27516,
+ "411": 27517,
+ "noses": 27518,
+ "417": 27519,
+ "coping": 27520,
+ "fission": 27521,
+ "hardin": 27522,
+ "inca": 27523,
+ "##cen": 27524,
+ "1717": 27525,
+ "mobilized": 27526,
+ "vhf": 27527,
+ "##raf": 27528,
+ "biscuits": 27529,
+ "curate": 27530,
+ "##85": 27531,
+ "##anial": 27532,
+ "331": 27533,
+ "gaunt": 27534,
+ "neighbourhoods": 27535,
+ "1540": 27536,
+ "##abas": 27537,
+ "blanca": 27538,
+ "bypassed": 27539,
+ "sockets": 27540,
+ "behold": 27541,
+ "coincidentally": 27542,
+ "##bane": 27543,
+ "nara": 27544,
+ "shave": 27545,
+ "splinter": 27546,
+ "terrific": 27547,
+ "##arion": 27548,
+ "##erian": 27549,
+ "commonplace": 27550,
+ "juris": 27551,
+ "redwood": 27552,
+ "waistband": 27553,
+ "boxed": 27554,
+ "caitlin": 27555,
+ "fingerprints": 27556,
+ "jennie": 27557,
+ "naturalized": 27558,
+ "##ired": 27559,
+ "balfour": 27560,
+ "craters": 27561,
+ "jody": 27562,
+ "bungalow": 27563,
+ "hugely": 27564,
+ "quilt": 27565,
+ "glitter": 27566,
+ "pigeons": 27567,
+ "undertaker": 27568,
+ "bulging": 27569,
+ "constrained": 27570,
+ "goo": 27571,
+ "##sil": 27572,
+ "##akh": 27573,
+ "assimilation": 27574,
+ "reworked": 27575,
+ "##person": 27576,
+ "persuasion": 27577,
+ "##pants": 27578,
+ "felicia": 27579,
+ "##cliff": 27580,
+ "##ulent": 27581,
+ "1732": 27582,
+ "explodes": 27583,
+ "##dun": 27584,
+ "##inium": 27585,
+ "##zic": 27586,
+ "lyman": 27587,
+ "vulture": 27588,
+ "hog": 27589,
+ "overlook": 27590,
+ "begs": 27591,
+ "northwards": 27592,
+ "ow": 27593,
+ "spoil": 27594,
+ "##urer": 27595,
+ "fatima": 27596,
+ "favorably": 27597,
+ "accumulate": 27598,
+ "sargent": 27599,
+ "sorority": 27600,
+ "corresponded": 27601,
+ "dispersal": 27602,
+ "kochi": 27603,
+ "toned": 27604,
+ "##imi": 27605,
+ "##lita": 27606,
+ "internacional": 27607,
+ "newfound": 27608,
+ "##agger": 27609,
+ "##lynn": 27610,
+ "##rigue": 27611,
+ "booths": 27612,
+ "peanuts": 27613,
+ "##eborg": 27614,
+ "medicare": 27615,
+ "muriel": 27616,
+ "nur": 27617,
+ "##uram": 27618,
+ "crates": 27619,
+ "millennia": 27620,
+ "pajamas": 27621,
+ "worsened": 27622,
+ "##breakers": 27623,
+ "jimi": 27624,
+ "vanuatu": 27625,
+ "yawned": 27626,
+ "##udeau": 27627,
+ "carousel": 27628,
+ "##hony": 27629,
+ "hurdle": 27630,
+ "##ccus": 27631,
+ "##mounted": 27632,
+ "##pod": 27633,
+ "rv": 27634,
+ "##eche": 27635,
+ "airship": 27636,
+ "ambiguity": 27637,
+ "compulsion": 27638,
+ "recapture": 27639,
+ "##claiming": 27640,
+ "arthritis": 27641,
+ "##osomal": 27642,
+ "1667": 27643,
+ "asserting": 27644,
+ "ngc": 27645,
+ "sniffing": 27646,
+ "dade": 27647,
+ "discontent": 27648,
+ "glendale": 27649,
+ "ported": 27650,
+ "##amina": 27651,
+ "defamation": 27652,
+ "rammed": 27653,
+ "##scent": 27654,
+ "fling": 27655,
+ "livingstone": 27656,
+ "##fleet": 27657,
+ "875": 27658,
+ "##ppy": 27659,
+ "apocalyptic": 27660,
+ "comrade": 27661,
+ "lcd": 27662,
+ "##lowe": 27663,
+ "cessna": 27664,
+ "eine": 27665,
+ "persecuted": 27666,
+ "subsistence": 27667,
+ "demi": 27668,
+ "hoop": 27669,
+ "reliefs": 27670,
+ "710": 27671,
+ "coptic": 27672,
+ "progressing": 27673,
+ "stemmed": 27674,
+ "perpetrators": 27675,
+ "1665": 27676,
+ "priestess": 27677,
+ "##nio": 27678,
+ "dobson": 27679,
+ "ebony": 27680,
+ "rooster": 27681,
+ "itf": 27682,
+ "tortricidae": 27683,
+ "##bbon": 27684,
+ "##jian": 27685,
+ "cleanup": 27686,
+ "##jean": 27687,
+ "##øy": 27688,
+ "1721": 27689,
+ "eighties": 27690,
+ "taxonomic": 27691,
+ "holiness": 27692,
+ "##hearted": 27693,
+ "##spar": 27694,
+ "antilles": 27695,
+ "showcasing": 27696,
+ "stabilized": 27697,
+ "##nb": 27698,
+ "gia": 27699,
+ "mascara": 27700,
+ "michelangelo": 27701,
+ "dawned": 27702,
+ "##uria": 27703,
+ "##vinsky": 27704,
+ "extinguished": 27705,
+ "fitz": 27706,
+ "grotesque": 27707,
+ "£100": 27708,
+ "##fera": 27709,
+ "##loid": 27710,
+ "##mous": 27711,
+ "barges": 27712,
+ "neue": 27713,
+ "throbbed": 27714,
+ "cipher": 27715,
+ "johnnie": 27716,
+ "##a1": 27717,
+ "##mpt": 27718,
+ "outburst": 27719,
+ "##swick": 27720,
+ "spearheaded": 27721,
+ "administrations": 27722,
+ "c1": 27723,
+ "heartbreak": 27724,
+ "pixels": 27725,
+ "pleasantly": 27726,
+ "##enay": 27727,
+ "lombardy": 27728,
+ "plush": 27729,
+ "##nsed": 27730,
+ "bobbie": 27731,
+ "##hly": 27732,
+ "reapers": 27733,
+ "tremor": 27734,
+ "xiang": 27735,
+ "minogue": 27736,
+ "substantive": 27737,
+ "hitch": 27738,
+ "barak": 27739,
+ "##wyl": 27740,
+ "kwan": 27741,
+ "##encia": 27742,
+ "910": 27743,
+ "obscene": 27744,
+ "elegance": 27745,
+ "indus": 27746,
+ "surfer": 27747,
+ "bribery": 27748,
+ "conserve": 27749,
+ "##hyllum": 27750,
+ "##masters": 27751,
+ "horatio": 27752,
+ "##fat": 27753,
+ "apes": 27754,
+ "rebound": 27755,
+ "psychotic": 27756,
+ "##pour": 27757,
+ "iteration": 27758,
+ "##mium": 27759,
+ "##vani": 27760,
+ "botanic": 27761,
+ "horribly": 27762,
+ "antiques": 27763,
+ "dispose": 27764,
+ "paxton": 27765,
+ "##hli": 27766,
+ "##wg": 27767,
+ "timeless": 27768,
+ "1704": 27769,
+ "disregard": 27770,
+ "engraver": 27771,
+ "hounds": 27772,
+ "##bau": 27773,
+ "##version": 27774,
+ "looted": 27775,
+ "uno": 27776,
+ "facilitates": 27777,
+ "groans": 27778,
+ "masjid": 27779,
+ "rutland": 27780,
+ "antibody": 27781,
+ "disqualification": 27782,
+ "decatur": 27783,
+ "footballers": 27784,
+ "quake": 27785,
+ "slacks": 27786,
+ "48th": 27787,
+ "rein": 27788,
+ "scribe": 27789,
+ "stabilize": 27790,
+ "commits": 27791,
+ "exemplary": 27792,
+ "tho": 27793,
+ "##hort": 27794,
+ "##chison": 27795,
+ "pantry": 27796,
+ "traversed": 27797,
+ "##hiti": 27798,
+ "disrepair": 27799,
+ "identifiable": 27800,
+ "vibrated": 27801,
+ "baccalaureate": 27802,
+ "##nnis": 27803,
+ "csa": 27804,
+ "interviewing": 27805,
+ "##iensis": 27806,
+ "##raße": 27807,
+ "greaves": 27808,
+ "wealthiest": 27809,
+ "343": 27810,
+ "classed": 27811,
+ "jogged": 27812,
+ "£5": 27813,
+ "##58": 27814,
+ "##atal": 27815,
+ "illuminating": 27816,
+ "knicks": 27817,
+ "respecting": 27818,
+ "##uno": 27819,
+ "scrubbed": 27820,
+ "##iji": 27821,
+ "##dles": 27822,
+ "kruger": 27823,
+ "moods": 27824,
+ "growls": 27825,
+ "raider": 27826,
+ "silvia": 27827,
+ "chefs": 27828,
+ "kam": 27829,
+ "vr": 27830,
+ "cree": 27831,
+ "percival": 27832,
+ "##terol": 27833,
+ "gunter": 27834,
+ "counterattack": 27835,
+ "defiant": 27836,
+ "henan": 27837,
+ "ze": 27838,
+ "##rasia": 27839,
+ "##riety": 27840,
+ "equivalence": 27841,
+ "submissions": 27842,
+ "##fra": 27843,
+ "##thor": 27844,
+ "bautista": 27845,
+ "mechanically": 27846,
+ "##heater": 27847,
+ "cornice": 27848,
+ "herbal": 27849,
+ "templar": 27850,
+ "##mering": 27851,
+ "outputs": 27852,
+ "ruining": 27853,
+ "ligand": 27854,
+ "renumbered": 27855,
+ "extravagant": 27856,
+ "mika": 27857,
+ "blockbuster": 27858,
+ "eta": 27859,
+ "insurrection": 27860,
+ "##ilia": 27861,
+ "darkening": 27862,
+ "ferocious": 27863,
+ "pianos": 27864,
+ "strife": 27865,
+ "kinship": 27866,
+ "##aer": 27867,
+ "melee": 27868,
+ "##anor": 27869,
+ "##iste": 27870,
+ "##may": 27871,
+ "##oue": 27872,
+ "decidedly": 27873,
+ "weep": 27874,
+ "##jad": 27875,
+ "##missive": 27876,
+ "##ppel": 27877,
+ "354": 27878,
+ "puget": 27879,
+ "unease": 27880,
+ "##gnant": 27881,
+ "1629": 27882,
+ "hammering": 27883,
+ "kassel": 27884,
+ "ob": 27885,
+ "wessex": 27886,
+ "##lga": 27887,
+ "bromwich": 27888,
+ "egan": 27889,
+ "paranoia": 27890,
+ "utilization": 27891,
+ "##atable": 27892,
+ "##idad": 27893,
+ "contradictory": 27894,
+ "provoke": 27895,
+ "##ols": 27896,
+ "##ouring": 27897,
+ "##tangled": 27898,
+ "knesset": 27899,
+ "##very": 27900,
+ "##lette": 27901,
+ "plumbing": 27902,
+ "##sden": 27903,
+ "##¹": 27904,
+ "greensboro": 27905,
+ "occult": 27906,
+ "sniff": 27907,
+ "338": 27908,
+ "zev": 27909,
+ "beaming": 27910,
+ "gamer": 27911,
+ "haggard": 27912,
+ "mahal": 27913,
+ "##olt": 27914,
+ "##pins": 27915,
+ "mendes": 27916,
+ "utmost": 27917,
+ "briefing": 27918,
+ "gunnery": 27919,
+ "##gut": 27920,
+ "##pher": 27921,
+ "##zh": 27922,
+ "##rok": 27923,
+ "1679": 27924,
+ "khalifa": 27925,
+ "sonya": 27926,
+ "##boot": 27927,
+ "principals": 27928,
+ "urbana": 27929,
+ "wiring": 27930,
+ "##liffe": 27931,
+ "##minating": 27932,
+ "##rrado": 27933,
+ "dahl": 27934,
+ "nyu": 27935,
+ "skepticism": 27936,
+ "np": 27937,
+ "townspeople": 27938,
+ "ithaca": 27939,
+ "lobster": 27940,
+ "somethin": 27941,
+ "##fur": 27942,
+ "##arina": 27943,
+ "##−1": 27944,
+ "freighter": 27945,
+ "zimmerman": 27946,
+ "biceps": 27947,
+ "contractual": 27948,
+ "##herton": 27949,
+ "amend": 27950,
+ "hurrying": 27951,
+ "subconscious": 27952,
+ "##anal": 27953,
+ "336": 27954,
+ "meng": 27955,
+ "clermont": 27956,
+ "spawning": 27957,
+ "##eia": 27958,
+ "##lub": 27959,
+ "dignitaries": 27960,
+ "impetus": 27961,
+ "snacks": 27962,
+ "spotting": 27963,
+ "twigs": 27964,
+ "##bilis": 27965,
+ "##cz": 27966,
+ "##ouk": 27967,
+ "libertadores": 27968,
+ "nic": 27969,
+ "skylar": 27970,
+ "##aina": 27971,
+ "##firm": 27972,
+ "gustave": 27973,
+ "asean": 27974,
+ "##anum": 27975,
+ "dieter": 27976,
+ "legislatures": 27977,
+ "flirt": 27978,
+ "bromley": 27979,
+ "trolls": 27980,
+ "umar": 27981,
+ "##bbies": 27982,
+ "##tyle": 27983,
+ "blah": 27984,
+ "parc": 27985,
+ "bridgeport": 27986,
+ "crank": 27987,
+ "negligence": 27988,
+ "##nction": 27989,
+ "46th": 27990,
+ "constantin": 27991,
+ "molded": 27992,
+ "bandages": 27993,
+ "seriousness": 27994,
+ "00pm": 27995,
+ "siegel": 27996,
+ "carpets": 27997,
+ "compartments": 27998,
+ "upbeat": 27999,
+ "statehood": 28000,
+ "##dner": 28001,
+ "##edging": 28002,
+ "marko": 28003,
+ "730": 28004,
+ "platt": 28005,
+ "##hane": 28006,
+ "paving": 28007,
+ "##iy": 28008,
+ "1738": 28009,
+ "abbess": 28010,
+ "impatience": 28011,
+ "limousine": 28012,
+ "nbl": 28013,
+ "##talk": 28014,
+ "441": 28015,
+ "lucille": 28016,
+ "mojo": 28017,
+ "nightfall": 28018,
+ "robbers": 28019,
+ "##nais": 28020,
+ "karel": 28021,
+ "brisk": 28022,
+ "calves": 28023,
+ "replicate": 28024,
+ "ascribed": 28025,
+ "telescopes": 28026,
+ "##olf": 28027,
+ "intimidated": 28028,
+ "##reen": 28029,
+ "ballast": 28030,
+ "specialization": 28031,
+ "##sit": 28032,
+ "aerodynamic": 28033,
+ "caliphate": 28034,
+ "rainer": 28035,
+ "visionary": 28036,
+ "##arded": 28037,
+ "epsilon": 28038,
+ "##aday": 28039,
+ "##onte": 28040,
+ "aggregation": 28041,
+ "auditory": 28042,
+ "boosted": 28043,
+ "reunification": 28044,
+ "kathmandu": 28045,
+ "loco": 28046,
+ "robyn": 28047,
+ "402": 28048,
+ "acknowledges": 28049,
+ "appointing": 28050,
+ "humanoid": 28051,
+ "newell": 28052,
+ "redeveloped": 28053,
+ "restraints": 28054,
+ "##tained": 28055,
+ "barbarians": 28056,
+ "chopper": 28057,
+ "1609": 28058,
+ "italiana": 28059,
+ "##lez": 28060,
+ "##lho": 28061,
+ "investigates": 28062,
+ "wrestlemania": 28063,
+ "##anies": 28064,
+ "##bib": 28065,
+ "690": 28066,
+ "##falls": 28067,
+ "creaked": 28068,
+ "dragoons": 28069,
+ "gravely": 28070,
+ "minions": 28071,
+ "stupidity": 28072,
+ "volley": 28073,
+ "##harat": 28074,
+ "##week": 28075,
+ "musik": 28076,
+ "##eries": 28077,
+ "##uously": 28078,
+ "fungal": 28079,
+ "massimo": 28080,
+ "semantics": 28081,
+ "malvern": 28082,
+ "##ahl": 28083,
+ "##pee": 28084,
+ "discourage": 28085,
+ "embryo": 28086,
+ "imperialism": 28087,
+ "1910s": 28088,
+ "profoundly": 28089,
+ "##ddled": 28090,
+ "jiangsu": 28091,
+ "sparkled": 28092,
+ "stat": 28093,
+ "##holz": 28094,
+ "sweatshirt": 28095,
+ "tobin": 28096,
+ "##iction": 28097,
+ "sneered": 28098,
+ "##cheon": 28099,
+ "##oit": 28100,
+ "brit": 28101,
+ "causal": 28102,
+ "smyth": 28103,
+ "##neuve": 28104,
+ "diffuse": 28105,
+ "perrin": 28106,
+ "silvio": 28107,
+ "##ipes": 28108,
+ "##recht": 28109,
+ "detonated": 28110,
+ "iqbal": 28111,
+ "selma": 28112,
+ "##nism": 28113,
+ "##zumi": 28114,
+ "roasted": 28115,
+ "##riders": 28116,
+ "tay": 28117,
+ "##ados": 28118,
+ "##mament": 28119,
+ "##mut": 28120,
+ "##rud": 28121,
+ "840": 28122,
+ "completes": 28123,
+ "nipples": 28124,
+ "cfa": 28125,
+ "flavour": 28126,
+ "hirsch": 28127,
+ "##laus": 28128,
+ "calderon": 28129,
+ "sneakers": 28130,
+ "moravian": 28131,
+ "##ksha": 28132,
+ "1622": 28133,
+ "rq": 28134,
+ "294": 28135,
+ "##imeters": 28136,
+ "bodo": 28137,
+ "##isance": 28138,
+ "##pre": 28139,
+ "##ronia": 28140,
+ "anatomical": 28141,
+ "excerpt": 28142,
+ "##lke": 28143,
+ "dh": 28144,
+ "kunst": 28145,
+ "##tablished": 28146,
+ "##scoe": 28147,
+ "biomass": 28148,
+ "panted": 28149,
+ "unharmed": 28150,
+ "gael": 28151,
+ "housemates": 28152,
+ "montpellier": 28153,
+ "##59": 28154,
+ "coa": 28155,
+ "rodents": 28156,
+ "tonic": 28157,
+ "hickory": 28158,
+ "singleton": 28159,
+ "##taro": 28160,
+ "451": 28161,
+ "1719": 28162,
+ "aldo": 28163,
+ "breaststroke": 28164,
+ "dempsey": 28165,
+ "och": 28166,
+ "rocco": 28167,
+ "##cuit": 28168,
+ "merton": 28169,
+ "dissemination": 28170,
+ "midsummer": 28171,
+ "serials": 28172,
+ "##idi": 28173,
+ "haji": 28174,
+ "polynomials": 28175,
+ "##rdon": 28176,
+ "gs": 28177,
+ "enoch": 28178,
+ "prematurely": 28179,
+ "shutter": 28180,
+ "taunton": 28181,
+ "£3": 28182,
+ "##grating": 28183,
+ "##inates": 28184,
+ "archangel": 28185,
+ "harassed": 28186,
+ "##asco": 28187,
+ "326": 28188,
+ "archway": 28189,
+ "dazzling": 28190,
+ "##ecin": 28191,
+ "1736": 28192,
+ "sumo": 28193,
+ "wat": 28194,
+ "##kovich": 28195,
+ "1086": 28196,
+ "honneur": 28197,
+ "##ently": 28198,
+ "##nostic": 28199,
+ "##ttal": 28200,
+ "##idon": 28201,
+ "1605": 28202,
+ "403": 28203,
+ "1716": 28204,
+ "blogger": 28205,
+ "rents": 28206,
+ "##gnan": 28207,
+ "hires": 28208,
+ "##ikh": 28209,
+ "##dant": 28210,
+ "howie": 28211,
+ "##rons": 28212,
+ "handler": 28213,
+ "retracted": 28214,
+ "shocks": 28215,
+ "1632": 28216,
+ "arun": 28217,
+ "duluth": 28218,
+ "kepler": 28219,
+ "trumpeter": 28220,
+ "##lary": 28221,
+ "peeking": 28222,
+ "seasoned": 28223,
+ "trooper": 28224,
+ "##mara": 28225,
+ "laszlo": 28226,
+ "##iciencies": 28227,
+ "##rti": 28228,
+ "heterosexual": 28229,
+ "##inatory": 28230,
+ "##ssion": 28231,
+ "indira": 28232,
+ "jogging": 28233,
+ "##inga": 28234,
+ "##lism": 28235,
+ "beit": 28236,
+ "dissatisfaction": 28237,
+ "malice": 28238,
+ "##ately": 28239,
+ "nedra": 28240,
+ "peeling": 28241,
+ "##rgeon": 28242,
+ "47th": 28243,
+ "stadiums": 28244,
+ "475": 28245,
+ "vertigo": 28246,
+ "##ains": 28247,
+ "iced": 28248,
+ "restroom": 28249,
+ "##plify": 28250,
+ "##tub": 28251,
+ "illustrating": 28252,
+ "pear": 28253,
+ "##chner": 28254,
+ "##sibility": 28255,
+ "inorganic": 28256,
+ "rappers": 28257,
+ "receipts": 28258,
+ "watery": 28259,
+ "##kura": 28260,
+ "lucinda": 28261,
+ "##oulos": 28262,
+ "reintroduced": 28263,
+ "##8th": 28264,
+ "##tched": 28265,
+ "gracefully": 28266,
+ "saxons": 28267,
+ "nutritional": 28268,
+ "wastewater": 28269,
+ "rained": 28270,
+ "favourites": 28271,
+ "bedrock": 28272,
+ "fisted": 28273,
+ "hallways": 28274,
+ "likeness": 28275,
+ "upscale": 28276,
+ "##lateral": 28277,
+ "1580": 28278,
+ "blinds": 28279,
+ "prequel": 28280,
+ "##pps": 28281,
+ "##tama": 28282,
+ "deter": 28283,
+ "humiliating": 28284,
+ "restraining": 28285,
+ "tn": 28286,
+ "vents": 28287,
+ "1659": 28288,
+ "laundering": 28289,
+ "recess": 28290,
+ "rosary": 28291,
+ "tractors": 28292,
+ "coulter": 28293,
+ "federer": 28294,
+ "##ifiers": 28295,
+ "##plin": 28296,
+ "persistence": 28297,
+ "##quitable": 28298,
+ "geschichte": 28299,
+ "pendulum": 28300,
+ "quakers": 28301,
+ "##beam": 28302,
+ "bassett": 28303,
+ "pictorial": 28304,
+ "buffet": 28305,
+ "koln": 28306,
+ "##sitor": 28307,
+ "drills": 28308,
+ "reciprocal": 28309,
+ "shooters": 28310,
+ "##57": 28311,
+ "##cton": 28312,
+ "##tees": 28313,
+ "converge": 28314,
+ "pip": 28315,
+ "dmitri": 28316,
+ "donnelly": 28317,
+ "yamamoto": 28318,
+ "aqua": 28319,
+ "azores": 28320,
+ "demographics": 28321,
+ "hypnotic": 28322,
+ "spitfire": 28323,
+ "suspend": 28324,
+ "wryly": 28325,
+ "roderick": 28326,
+ "##rran": 28327,
+ "sebastien": 28328,
+ "##asurable": 28329,
+ "mavericks": 28330,
+ "##fles": 28331,
+ "##200": 28332,
+ "himalayan": 28333,
+ "prodigy": 28334,
+ "##iance": 28335,
+ "transvaal": 28336,
+ "demonstrators": 28337,
+ "handcuffs": 28338,
+ "dodged": 28339,
+ "mcnamara": 28340,
+ "sublime": 28341,
+ "1726": 28342,
+ "crazed": 28343,
+ "##efined": 28344,
+ "##till": 28345,
+ "ivo": 28346,
+ "pondered": 28347,
+ "reconciled": 28348,
+ "shrill": 28349,
+ "sava": 28350,
+ "##duk": 28351,
+ "bal": 28352,
+ "cad": 28353,
+ "heresy": 28354,
+ "jaipur": 28355,
+ "goran": 28356,
+ "##nished": 28357,
+ "341": 28358,
+ "lux": 28359,
+ "shelly": 28360,
+ "whitehall": 28361,
+ "##hre": 28362,
+ "israelis": 28363,
+ "peacekeeping": 28364,
+ "##wled": 28365,
+ "1703": 28366,
+ "demetrius": 28367,
+ "ousted": 28368,
+ "##arians": 28369,
+ "##zos": 28370,
+ "beale": 28371,
+ "anwar": 28372,
+ "backstroke": 28373,
+ "raged": 28374,
+ "shrinking": 28375,
+ "cremated": 28376,
+ "##yck": 28377,
+ "benign": 28378,
+ "towing": 28379,
+ "wadi": 28380,
+ "darmstadt": 28381,
+ "landfill": 28382,
+ "parana": 28383,
+ "soothe": 28384,
+ "colleen": 28385,
+ "sidewalks": 28386,
+ "mayfair": 28387,
+ "tumble": 28388,
+ "hepatitis": 28389,
+ "ferrer": 28390,
+ "superstructure": 28391,
+ "##gingly": 28392,
+ "##urse": 28393,
+ "##wee": 28394,
+ "anthropological": 28395,
+ "translators": 28396,
+ "##mies": 28397,
+ "closeness": 28398,
+ "hooves": 28399,
+ "##pw": 28400,
+ "mondays": 28401,
+ "##roll": 28402,
+ "##vita": 28403,
+ "landscaping": 28404,
+ "##urized": 28405,
+ "purification": 28406,
+ "sock": 28407,
+ "thorns": 28408,
+ "thwarted": 28409,
+ "jalan": 28410,
+ "tiberius": 28411,
+ "##taka": 28412,
+ "saline": 28413,
+ "##rito": 28414,
+ "confidently": 28415,
+ "khyber": 28416,
+ "sculptors": 28417,
+ "##ij": 28418,
+ "brahms": 28419,
+ "hammersmith": 28420,
+ "inspectors": 28421,
+ "battista": 28422,
+ "fivb": 28423,
+ "fragmentation": 28424,
+ "hackney": 28425,
+ "##uls": 28426,
+ "arresting": 28427,
+ "exercising": 28428,
+ "antoinette": 28429,
+ "bedfordshire": 28430,
+ "##zily": 28431,
+ "dyed": 28432,
+ "##hema": 28433,
+ "1656": 28434,
+ "racetrack": 28435,
+ "variability": 28436,
+ "##tique": 28437,
+ "1655": 28438,
+ "austrians": 28439,
+ "deteriorating": 28440,
+ "madman": 28441,
+ "theorists": 28442,
+ "aix": 28443,
+ "lehman": 28444,
+ "weathered": 28445,
+ "1731": 28446,
+ "decreed": 28447,
+ "eruptions": 28448,
+ "1729": 28449,
+ "flaw": 28450,
+ "quinlan": 28451,
+ "sorbonne": 28452,
+ "flutes": 28453,
+ "nunez": 28454,
+ "1711": 28455,
+ "adored": 28456,
+ "downwards": 28457,
+ "fable": 28458,
+ "rasped": 28459,
+ "1712": 28460,
+ "moritz": 28461,
+ "mouthful": 28462,
+ "renegade": 28463,
+ "shivers": 28464,
+ "stunts": 28465,
+ "dysfunction": 28466,
+ "restrain": 28467,
+ "translit": 28468,
+ "327": 28469,
+ "pancakes": 28470,
+ "##avio": 28471,
+ "##cision": 28472,
+ "##tray": 28473,
+ "351": 28474,
+ "vial": 28475,
+ "##lden": 28476,
+ "bain": 28477,
+ "##maid": 28478,
+ "##oxide": 28479,
+ "chihuahua": 28480,
+ "malacca": 28481,
+ "vimes": 28482,
+ "##rba": 28483,
+ "##rnier": 28484,
+ "1664": 28485,
+ "donnie": 28486,
+ "plaques": 28487,
+ "##ually": 28488,
+ "337": 28489,
+ "bangs": 28490,
+ "floppy": 28491,
+ "huntsville": 28492,
+ "loretta": 28493,
+ "nikolay": 28494,
+ "##otte": 28495,
+ "eater": 28496,
+ "handgun": 28497,
+ "ubiquitous": 28498,
+ "##hett": 28499,
+ "eras": 28500,
+ "zodiac": 28501,
+ "1634": 28502,
+ "##omorphic": 28503,
+ "1820s": 28504,
+ "##zog": 28505,
+ "cochran": 28506,
+ "##bula": 28507,
+ "##lithic": 28508,
+ "warring": 28509,
+ "##rada": 28510,
+ "dalai": 28511,
+ "excused": 28512,
+ "blazers": 28513,
+ "mcconnell": 28514,
+ "reeling": 28515,
+ "bot": 28516,
+ "este": 28517,
+ "##abi": 28518,
+ "geese": 28519,
+ "hoax": 28520,
+ "taxon": 28521,
+ "##bla": 28522,
+ "guitarists": 28523,
+ "##icon": 28524,
+ "condemning": 28525,
+ "hunts": 28526,
+ "inversion": 28527,
+ "moffat": 28528,
+ "taekwondo": 28529,
+ "##lvis": 28530,
+ "1624": 28531,
+ "stammered": 28532,
+ "##rest": 28533,
+ "##rzy": 28534,
+ "sousa": 28535,
+ "fundraiser": 28536,
+ "marylebone": 28537,
+ "navigable": 28538,
+ "uptown": 28539,
+ "cabbage": 28540,
+ "daniela": 28541,
+ "salman": 28542,
+ "shitty": 28543,
+ "whimper": 28544,
+ "##kian": 28545,
+ "##utive": 28546,
+ "programmers": 28547,
+ "protections": 28548,
+ "rm": 28549,
+ "##rmi": 28550,
+ "##rued": 28551,
+ "forceful": 28552,
+ "##enes": 28553,
+ "fuss": 28554,
+ "##tao": 28555,
+ "##wash": 28556,
+ "brat": 28557,
+ "oppressive": 28558,
+ "reykjavik": 28559,
+ "spartak": 28560,
+ "ticking": 28561,
+ "##inkles": 28562,
+ "##kiewicz": 28563,
+ "adolph": 28564,
+ "horst": 28565,
+ "maui": 28566,
+ "protege": 28567,
+ "straighten": 28568,
+ "cpc": 28569,
+ "landau": 28570,
+ "concourse": 28571,
+ "clements": 28572,
+ "resultant": 28573,
+ "##ando": 28574,
+ "imaginative": 28575,
+ "joo": 28576,
+ "reactivated": 28577,
+ "##rem": 28578,
+ "##ffled": 28579,
+ "##uising": 28580,
+ "consultative": 28581,
+ "##guide": 28582,
+ "flop": 28583,
+ "kaitlyn": 28584,
+ "mergers": 28585,
+ "parenting": 28586,
+ "somber": 28587,
+ "##vron": 28588,
+ "supervise": 28589,
+ "vidhan": 28590,
+ "##imum": 28591,
+ "courtship": 28592,
+ "exemplified": 28593,
+ "harmonies": 28594,
+ "medallist": 28595,
+ "refining": 28596,
+ "##rrow": 28597,
+ "##ка": 28598,
+ "amara": 28599,
+ "##hum": 28600,
+ "780": 28601,
+ "goalscorer": 28602,
+ "sited": 28603,
+ "overshadowed": 28604,
+ "rohan": 28605,
+ "displeasure": 28606,
+ "secretive": 28607,
+ "multiplied": 28608,
+ "osman": 28609,
+ "##orth": 28610,
+ "engravings": 28611,
+ "padre": 28612,
+ "##kali": 28613,
+ "##veda": 28614,
+ "miniatures": 28615,
+ "mis": 28616,
+ "##yala": 28617,
+ "clap": 28618,
+ "pali": 28619,
+ "rook": 28620,
+ "##cana": 28621,
+ "1692": 28622,
+ "57th": 28623,
+ "antennae": 28624,
+ "astro": 28625,
+ "oskar": 28626,
+ "1628": 28627,
+ "bulldog": 28628,
+ "crotch": 28629,
+ "hackett": 28630,
+ "yucatan": 28631,
+ "##sure": 28632,
+ "amplifiers": 28633,
+ "brno": 28634,
+ "ferrara": 28635,
+ "migrating": 28636,
+ "##gree": 28637,
+ "thanking": 28638,
+ "turing": 28639,
+ "##eza": 28640,
+ "mccann": 28641,
+ "ting": 28642,
+ "andersson": 28643,
+ "onslaught": 28644,
+ "gaines": 28645,
+ "ganga": 28646,
+ "incense": 28647,
+ "standardization": 28648,
+ "##mation": 28649,
+ "sentai": 28650,
+ "scuba": 28651,
+ "stuffing": 28652,
+ "turquoise": 28653,
+ "waivers": 28654,
+ "alloys": 28655,
+ "##vitt": 28656,
+ "regaining": 28657,
+ "vaults": 28658,
+ "##clops": 28659,
+ "##gizing": 28660,
+ "digger": 28661,
+ "furry": 28662,
+ "memorabilia": 28663,
+ "probing": 28664,
+ "##iad": 28665,
+ "payton": 28666,
+ "rec": 28667,
+ "deutschland": 28668,
+ "filippo": 28669,
+ "opaque": 28670,
+ "seamen": 28671,
+ "zenith": 28672,
+ "afrikaans": 28673,
+ "##filtration": 28674,
+ "disciplined": 28675,
+ "inspirational": 28676,
+ "##merie": 28677,
+ "banco": 28678,
+ "confuse": 28679,
+ "grafton": 28680,
+ "tod": 28681,
+ "##dgets": 28682,
+ "championed": 28683,
+ "simi": 28684,
+ "anomaly": 28685,
+ "biplane": 28686,
+ "##ceptive": 28687,
+ "electrode": 28688,
+ "##para": 28689,
+ "1697": 28690,
+ "cleavage": 28691,
+ "crossbow": 28692,
+ "swirl": 28693,
+ "informant": 28694,
+ "##lars": 28695,
+ "##osta": 28696,
+ "afi": 28697,
+ "bonfire": 28698,
+ "spec": 28699,
+ "##oux": 28700,
+ "lakeside": 28701,
+ "slump": 28702,
+ "##culus": 28703,
+ "##lais": 28704,
+ "##qvist": 28705,
+ "##rrigan": 28706,
+ "1016": 28707,
+ "facades": 28708,
+ "borg": 28709,
+ "inwardly": 28710,
+ "cervical": 28711,
+ "xl": 28712,
+ "pointedly": 28713,
+ "050": 28714,
+ "stabilization": 28715,
+ "##odon": 28716,
+ "chests": 28717,
+ "1699": 28718,
+ "hacked": 28719,
+ "ctv": 28720,
+ "orthogonal": 28721,
+ "suzy": 28722,
+ "##lastic": 28723,
+ "gaulle": 28724,
+ "jacobite": 28725,
+ "rearview": 28726,
+ "##cam": 28727,
+ "##erted": 28728,
+ "ashby": 28729,
+ "##drik": 28730,
+ "##igate": 28731,
+ "##mise": 28732,
+ "##zbek": 28733,
+ "affectionately": 28734,
+ "canine": 28735,
+ "disperse": 28736,
+ "latham": 28737,
+ "##istles": 28738,
+ "##ivar": 28739,
+ "spielberg": 28740,
+ "##orin": 28741,
+ "##idium": 28742,
+ "ezekiel": 28743,
+ "cid": 28744,
+ "##sg": 28745,
+ "durga": 28746,
+ "middletown": 28747,
+ "##cina": 28748,
+ "customized": 28749,
+ "frontiers": 28750,
+ "harden": 28751,
+ "##etano": 28752,
+ "##zzy": 28753,
+ "1604": 28754,
+ "bolsheviks": 28755,
+ "##66": 28756,
+ "coloration": 28757,
+ "yoko": 28758,
+ "##bedo": 28759,
+ "briefs": 28760,
+ "slabs": 28761,
+ "debra": 28762,
+ "liquidation": 28763,
+ "plumage": 28764,
+ "##oin": 28765,
+ "blossoms": 28766,
+ "dementia": 28767,
+ "subsidy": 28768,
+ "1611": 28769,
+ "proctor": 28770,
+ "relational": 28771,
+ "jerseys": 28772,
+ "parochial": 28773,
+ "ter": 28774,
+ "##ici": 28775,
+ "esa": 28776,
+ "peshawar": 28777,
+ "cavalier": 28778,
+ "loren": 28779,
+ "cpi": 28780,
+ "idiots": 28781,
+ "shamrock": 28782,
+ "1646": 28783,
+ "dutton": 28784,
+ "malabar": 28785,
+ "mustache": 28786,
+ "##endez": 28787,
+ "##ocytes": 28788,
+ "referencing": 28789,
+ "terminates": 28790,
+ "marche": 28791,
+ "yarmouth": 28792,
+ "##sop": 28793,
+ "acton": 28794,
+ "mated": 28795,
+ "seton": 28796,
+ "subtly": 28797,
+ "baptised": 28798,
+ "beige": 28799,
+ "extremes": 28800,
+ "jolted": 28801,
+ "kristina": 28802,
+ "telecast": 28803,
+ "##actic": 28804,
+ "safeguard": 28805,
+ "waldo": 28806,
+ "##baldi": 28807,
+ "##bular": 28808,
+ "endeavors": 28809,
+ "sloppy": 28810,
+ "subterranean": 28811,
+ "##ensburg": 28812,
+ "##itung": 28813,
+ "delicately": 28814,
+ "pigment": 28815,
+ "tq": 28816,
+ "##scu": 28817,
+ "1626": 28818,
+ "##ound": 28819,
+ "collisions": 28820,
+ "coveted": 28821,
+ "herds": 28822,
+ "##personal": 28823,
+ "##meister": 28824,
+ "##nberger": 28825,
+ "chopra": 28826,
+ "##ricting": 28827,
+ "abnormalities": 28828,
+ "defective": 28829,
+ "galician": 28830,
+ "lucie": 28831,
+ "##dilly": 28832,
+ "alligator": 28833,
+ "likened": 28834,
+ "##genase": 28835,
+ "burundi": 28836,
+ "clears": 28837,
+ "complexion": 28838,
+ "derelict": 28839,
+ "deafening": 28840,
+ "diablo": 28841,
+ "fingered": 28842,
+ "champaign": 28843,
+ "dogg": 28844,
+ "enlist": 28845,
+ "isotope": 28846,
+ "labeling": 28847,
+ "mrna": 28848,
+ "##erre": 28849,
+ "brilliance": 28850,
+ "marvelous": 28851,
+ "##ayo": 28852,
+ "1652": 28853,
+ "crawley": 28854,
+ "ether": 28855,
+ "footed": 28856,
+ "dwellers": 28857,
+ "deserts": 28858,
+ "hamish": 28859,
+ "rubs": 28860,
+ "warlock": 28861,
+ "skimmed": 28862,
+ "##lizer": 28863,
+ "870": 28864,
+ "buick": 28865,
+ "embark": 28866,
+ "heraldic": 28867,
+ "irregularities": 28868,
+ "##ajan": 28869,
+ "kiara": 28870,
+ "##kulam": 28871,
+ "##ieg": 28872,
+ "antigen": 28873,
+ "kowalski": 28874,
+ "##lge": 28875,
+ "oakley": 28876,
+ "visitation": 28877,
+ "##mbit": 28878,
+ "vt": 28879,
+ "##suit": 28880,
+ "1570": 28881,
+ "murderers": 28882,
+ "##miento": 28883,
+ "##rites": 28884,
+ "chimneys": 28885,
+ "##sling": 28886,
+ "condemn": 28887,
+ "custer": 28888,
+ "exchequer": 28889,
+ "havre": 28890,
+ "##ghi": 28891,
+ "fluctuations": 28892,
+ "##rations": 28893,
+ "dfb": 28894,
+ "hendricks": 28895,
+ "vaccines": 28896,
+ "##tarian": 28897,
+ "nietzsche": 28898,
+ "biking": 28899,
+ "juicy": 28900,
+ "##duced": 28901,
+ "brooding": 28902,
+ "scrolling": 28903,
+ "selangor": 28904,
+ "##ragan": 28905,
+ "352": 28906,
+ "annum": 28907,
+ "boomed": 28908,
+ "seminole": 28909,
+ "sugarcane": 28910,
+ "##dna": 28911,
+ "departmental": 28912,
+ "dismissing": 28913,
+ "innsbruck": 28914,
+ "arteries": 28915,
+ "ashok": 28916,
+ "batavia": 28917,
+ "daze": 28918,
+ "kun": 28919,
+ "overtook": 28920,
+ "##rga": 28921,
+ "##tlan": 28922,
+ "beheaded": 28923,
+ "gaddafi": 28924,
+ "holm": 28925,
+ "electronically": 28926,
+ "faulty": 28927,
+ "galilee": 28928,
+ "fractures": 28929,
+ "kobayashi": 28930,
+ "##lized": 28931,
+ "gunmen": 28932,
+ "magma": 28933,
+ "aramaic": 28934,
+ "mala": 28935,
+ "eastenders": 28936,
+ "inference": 28937,
+ "messengers": 28938,
+ "bf": 28939,
+ "##qu": 28940,
+ "407": 28941,
+ "bathrooms": 28942,
+ "##vere": 28943,
+ "1658": 28944,
+ "flashbacks": 28945,
+ "ideally": 28946,
+ "misunderstood": 28947,
+ "##jali": 28948,
+ "##weather": 28949,
+ "mendez": 28950,
+ "##grounds": 28951,
+ "505": 28952,
+ "uncanny": 28953,
+ "##iii": 28954,
+ "1709": 28955,
+ "friendships": 28956,
+ "##nbc": 28957,
+ "sacrament": 28958,
+ "accommodated": 28959,
+ "reiterated": 28960,
+ "logistical": 28961,
+ "pebbles": 28962,
+ "thumped": 28963,
+ "##escence": 28964,
+ "administering": 28965,
+ "decrees": 28966,
+ "drafts": 28967,
+ "##flight": 28968,
+ "##cased": 28969,
+ "##tula": 28970,
+ "futuristic": 28971,
+ "picket": 28972,
+ "intimidation": 28973,
+ "winthrop": 28974,
+ "##fahan": 28975,
+ "interfered": 28976,
+ "339": 28977,
+ "afar": 28978,
+ "francoise": 28979,
+ "morally": 28980,
+ "uta": 28981,
+ "cochin": 28982,
+ "croft": 28983,
+ "dwarfs": 28984,
+ "##bruck": 28985,
+ "##dents": 28986,
+ "##nami": 28987,
+ "biker": 28988,
+ "##hner": 28989,
+ "##meral": 28990,
+ "nano": 28991,
+ "##isen": 28992,
+ "##ometric": 28993,
+ "##pres": 28994,
+ "##ан": 28995,
+ "brightened": 28996,
+ "meek": 28997,
+ "parcels": 28998,
+ "securely": 28999,
+ "gunners": 29000,
+ "##jhl": 29001,
+ "##zko": 29002,
+ "agile": 29003,
+ "hysteria": 29004,
+ "##lten": 29005,
+ "##rcus": 29006,
+ "bukit": 29007,
+ "champs": 29008,
+ "chevy": 29009,
+ "cuckoo": 29010,
+ "leith": 29011,
+ "sadler": 29012,
+ "theologians": 29013,
+ "welded": 29014,
+ "##section": 29015,
+ "1663": 29016,
+ "jj": 29017,
+ "plurality": 29018,
+ "xander": 29019,
+ "##rooms": 29020,
+ "##formed": 29021,
+ "shredded": 29022,
+ "temps": 29023,
+ "intimately": 29024,
+ "pau": 29025,
+ "tormented": 29026,
+ "##lok": 29027,
+ "##stellar": 29028,
+ "1618": 29029,
+ "charred": 29030,
+ "ems": 29031,
+ "essen": 29032,
+ "##mmel": 29033,
+ "alarms": 29034,
+ "spraying": 29035,
+ "ascot": 29036,
+ "blooms": 29037,
+ "twinkle": 29038,
+ "##abia": 29039,
+ "##apes": 29040,
+ "internment": 29041,
+ "obsidian": 29042,
+ "##chaft": 29043,
+ "snoop": 29044,
+ "##dav": 29045,
+ "##ooping": 29046,
+ "malibu": 29047,
+ "##tension": 29048,
+ "quiver": 29049,
+ "##itia": 29050,
+ "hays": 29051,
+ "mcintosh": 29052,
+ "travers": 29053,
+ "walsall": 29054,
+ "##ffie": 29055,
+ "1623": 29056,
+ "beverley": 29057,
+ "schwarz": 29058,
+ "plunging": 29059,
+ "structurally": 29060,
+ "m3": 29061,
+ "rosenthal": 29062,
+ "vikram": 29063,
+ "##tsk": 29064,
+ "770": 29065,
+ "ghz": 29066,
+ "##onda": 29067,
+ "##tiv": 29068,
+ "chalmers": 29069,
+ "groningen": 29070,
+ "pew": 29071,
+ "reckon": 29072,
+ "unicef": 29073,
+ "##rvis": 29074,
+ "55th": 29075,
+ "##gni": 29076,
+ "1651": 29077,
+ "sulawesi": 29078,
+ "avila": 29079,
+ "cai": 29080,
+ "metaphysical": 29081,
+ "screwing": 29082,
+ "turbulence": 29083,
+ "##mberg": 29084,
+ "augusto": 29085,
+ "samba": 29086,
+ "56th": 29087,
+ "baffled": 29088,
+ "momentary": 29089,
+ "toxin": 29090,
+ "##urian": 29091,
+ "##wani": 29092,
+ "aachen": 29093,
+ "condoms": 29094,
+ "dali": 29095,
+ "steppe": 29096,
+ "##3d": 29097,
+ "##app": 29098,
+ "##oed": 29099,
+ "##year": 29100,
+ "adolescence": 29101,
+ "dauphin": 29102,
+ "electrically": 29103,
+ "inaccessible": 29104,
+ "microscopy": 29105,
+ "nikita": 29106,
+ "##ega": 29107,
+ "atv": 29108,
+ "##cel": 29109,
+ "##enter": 29110,
+ "##oles": 29111,
+ "##oteric": 29112,
+ "##ы": 29113,
+ "accountants": 29114,
+ "punishments": 29115,
+ "wrongly": 29116,
+ "bribes": 29117,
+ "adventurous": 29118,
+ "clinch": 29119,
+ "flinders": 29120,
+ "southland": 29121,
+ "##hem": 29122,
+ "##kata": 29123,
+ "gough": 29124,
+ "##ciency": 29125,
+ "lads": 29126,
+ "soared": 29127,
+ "##ה": 29128,
+ "undergoes": 29129,
+ "deformation": 29130,
+ "outlawed": 29131,
+ "rubbish": 29132,
+ "##arus": 29133,
+ "##mussen": 29134,
+ "##nidae": 29135,
+ "##rzburg": 29136,
+ "arcs": 29137,
+ "##ingdon": 29138,
+ "##tituted": 29139,
+ "1695": 29140,
+ "wheelbase": 29141,
+ "wheeling": 29142,
+ "bombardier": 29143,
+ "campground": 29144,
+ "zebra": 29145,
+ "##lices": 29146,
+ "##oj": 29147,
+ "##bain": 29148,
+ "lullaby": 29149,
+ "##ecure": 29150,
+ "donetsk": 29151,
+ "wylie": 29152,
+ "grenada": 29153,
+ "##arding": 29154,
+ "##ης": 29155,
+ "squinting": 29156,
+ "eireann": 29157,
+ "opposes": 29158,
+ "##andra": 29159,
+ "maximal": 29160,
+ "runes": 29161,
+ "##broken": 29162,
+ "##cuting": 29163,
+ "##iface": 29164,
+ "##ror": 29165,
+ "##rosis": 29166,
+ "additive": 29167,
+ "britney": 29168,
+ "adultery": 29169,
+ "triggering": 29170,
+ "##drome": 29171,
+ "detrimental": 29172,
+ "aarhus": 29173,
+ "containment": 29174,
+ "jc": 29175,
+ "swapped": 29176,
+ "vichy": 29177,
+ "##ioms": 29178,
+ "madly": 29179,
+ "##oric": 29180,
+ "##rag": 29181,
+ "brant": 29182,
+ "##ckey": 29183,
+ "##trix": 29184,
+ "1560": 29185,
+ "1612": 29186,
+ "broughton": 29187,
+ "rustling": 29188,
+ "##stems": 29189,
+ "##uder": 29190,
+ "asbestos": 29191,
+ "mentoring": 29192,
+ "##nivorous": 29193,
+ "finley": 29194,
+ "leaps": 29195,
+ "##isan": 29196,
+ "apical": 29197,
+ "pry": 29198,
+ "slits": 29199,
+ "substitutes": 29200,
+ "##dict": 29201,
+ "intuitive": 29202,
+ "fantasia": 29203,
+ "insistent": 29204,
+ "unreasonable": 29205,
+ "##igen": 29206,
+ "##vna": 29207,
+ "domed": 29208,
+ "hannover": 29209,
+ "margot": 29210,
+ "ponder": 29211,
+ "##zziness": 29212,
+ "impromptu": 29213,
+ "jian": 29214,
+ "lc": 29215,
+ "rampage": 29216,
+ "stemming": 29217,
+ "##eft": 29218,
+ "andrey": 29219,
+ "gerais": 29220,
+ "whichever": 29221,
+ "amnesia": 29222,
+ "appropriated": 29223,
+ "anzac": 29224,
+ "clicks": 29225,
+ "modifying": 29226,
+ "ultimatum": 29227,
+ "cambrian": 29228,
+ "maids": 29229,
+ "verve": 29230,
+ "yellowstone": 29231,
+ "##mbs": 29232,
+ "conservatoire": 29233,
+ "##scribe": 29234,
+ "adherence": 29235,
+ "dinners": 29236,
+ "spectra": 29237,
+ "imperfect": 29238,
+ "mysteriously": 29239,
+ "sidekick": 29240,
+ "tatar": 29241,
+ "tuba": 29242,
+ "##aks": 29243,
+ "##ifolia": 29244,
+ "distrust": 29245,
+ "##athan": 29246,
+ "##zle": 29247,
+ "c2": 29248,
+ "ronin": 29249,
+ "zac": 29250,
+ "##pse": 29251,
+ "celaena": 29252,
+ "instrumentalist": 29253,
+ "scents": 29254,
+ "skopje": 29255,
+ "##mbling": 29256,
+ "comical": 29257,
+ "compensated": 29258,
+ "vidal": 29259,
+ "condor": 29260,
+ "intersect": 29261,
+ "jingle": 29262,
+ "wavelengths": 29263,
+ "##urrent": 29264,
+ "mcqueen": 29265,
+ "##izzly": 29266,
+ "carp": 29267,
+ "weasel": 29268,
+ "422": 29269,
+ "kanye": 29270,
+ "militias": 29271,
+ "postdoctoral": 29272,
+ "eugen": 29273,
+ "gunslinger": 29274,
+ "##ɛ": 29275,
+ "faux": 29276,
+ "hospice": 29277,
+ "##for": 29278,
+ "appalled": 29279,
+ "derivation": 29280,
+ "dwarves": 29281,
+ "##elis": 29282,
+ "dilapidated": 29283,
+ "##folk": 29284,
+ "astoria": 29285,
+ "philology": 29286,
+ "##lwyn": 29287,
+ "##otho": 29288,
+ "##saka": 29289,
+ "inducing": 29290,
+ "philanthropy": 29291,
+ "##bf": 29292,
+ "##itative": 29293,
+ "geek": 29294,
+ "markedly": 29295,
+ "sql": 29296,
+ "##yce": 29297,
+ "bessie": 29298,
+ "indices": 29299,
+ "rn": 29300,
+ "##flict": 29301,
+ "495": 29302,
+ "frowns": 29303,
+ "resolving": 29304,
+ "weightlifting": 29305,
+ "tugs": 29306,
+ "cleric": 29307,
+ "contentious": 29308,
+ "1653": 29309,
+ "mania": 29310,
+ "rms": 29311,
+ "##miya": 29312,
+ "##reate": 29313,
+ "##ruck": 29314,
+ "##tucket": 29315,
+ "bien": 29316,
+ "eels": 29317,
+ "marek": 29318,
+ "##ayton": 29319,
+ "##cence": 29320,
+ "discreet": 29321,
+ "unofficially": 29322,
+ "##ife": 29323,
+ "leaks": 29324,
+ "##bber": 29325,
+ "1705": 29326,
+ "332": 29327,
+ "dung": 29328,
+ "compressor": 29329,
+ "hillsborough": 29330,
+ "pandit": 29331,
+ "shillings": 29332,
+ "distal": 29333,
+ "##skin": 29334,
+ "381": 29335,
+ "##tat": 29336,
+ "##you": 29337,
+ "nosed": 29338,
+ "##nir": 29339,
+ "mangrove": 29340,
+ "undeveloped": 29341,
+ "##idia": 29342,
+ "textures": 29343,
+ "##inho": 29344,
+ "##500": 29345,
+ "##rise": 29346,
+ "ae": 29347,
+ "irritating": 29348,
+ "nay": 29349,
+ "amazingly": 29350,
+ "bancroft": 29351,
+ "apologetic": 29352,
+ "compassionate": 29353,
+ "kata": 29354,
+ "symphonies": 29355,
+ "##lovic": 29356,
+ "airspace": 29357,
+ "##lch": 29358,
+ "930": 29359,
+ "gifford": 29360,
+ "precautions": 29361,
+ "fulfillment": 29362,
+ "sevilla": 29363,
+ "vulgar": 29364,
+ "martinique": 29365,
+ "##urities": 29366,
+ "looting": 29367,
+ "piccolo": 29368,
+ "tidy": 29369,
+ "##dermott": 29370,
+ "quadrant": 29371,
+ "armchair": 29372,
+ "incomes": 29373,
+ "mathematicians": 29374,
+ "stampede": 29375,
+ "nilsson": 29376,
+ "##inking": 29377,
+ "##scan": 29378,
+ "foo": 29379,
+ "quarterfinal": 29380,
+ "##ostal": 29381,
+ "shang": 29382,
+ "shouldered": 29383,
+ "squirrels": 29384,
+ "##owe": 29385,
+ "344": 29386,
+ "vinegar": 29387,
+ "##bner": 29388,
+ "##rchy": 29389,
+ "##systems": 29390,
+ "delaying": 29391,
+ "##trics": 29392,
+ "ars": 29393,
+ "dwyer": 29394,
+ "rhapsody": 29395,
+ "sponsoring": 29396,
+ "##gration": 29397,
+ "bipolar": 29398,
+ "cinder": 29399,
+ "starters": 29400,
+ "##olio": 29401,
+ "##urst": 29402,
+ "421": 29403,
+ "signage": 29404,
+ "##nty": 29405,
+ "aground": 29406,
+ "figurative": 29407,
+ "mons": 29408,
+ "acquaintances": 29409,
+ "duets": 29410,
+ "erroneously": 29411,
+ "soyuz": 29412,
+ "elliptic": 29413,
+ "recreated": 29414,
+ "##cultural": 29415,
+ "##quette": 29416,
+ "##ssed": 29417,
+ "##tma": 29418,
+ "##zcz": 29419,
+ "moderator": 29420,
+ "scares": 29421,
+ "##itaire": 29422,
+ "##stones": 29423,
+ "##udence": 29424,
+ "juniper": 29425,
+ "sighting": 29426,
+ "##just": 29427,
+ "##nsen": 29428,
+ "britten": 29429,
+ "calabria": 29430,
+ "ry": 29431,
+ "bop": 29432,
+ "cramer": 29433,
+ "forsyth": 29434,
+ "stillness": 29435,
+ "##л": 29436,
+ "airmen": 29437,
+ "gathers": 29438,
+ "unfit": 29439,
+ "##umber": 29440,
+ "##upt": 29441,
+ "taunting": 29442,
+ "##rip": 29443,
+ "seeker": 29444,
+ "streamlined": 29445,
+ "##bution": 29446,
+ "holster": 29447,
+ "schumann": 29448,
+ "tread": 29449,
+ "vox": 29450,
+ "##gano": 29451,
+ "##onzo": 29452,
+ "strive": 29453,
+ "dil": 29454,
+ "reforming": 29455,
+ "covent": 29456,
+ "newbury": 29457,
+ "predicting": 29458,
+ "##orro": 29459,
+ "decorate": 29460,
+ "tre": 29461,
+ "##puted": 29462,
+ "andover": 29463,
+ "ie": 29464,
+ "asahi": 29465,
+ "dept": 29466,
+ "dunkirk": 29467,
+ "gills": 29468,
+ "##tori": 29469,
+ "buren": 29470,
+ "huskies": 29471,
+ "##stis": 29472,
+ "##stov": 29473,
+ "abstracts": 29474,
+ "bets": 29475,
+ "loosen": 29476,
+ "##opa": 29477,
+ "1682": 29478,
+ "yearning": 29479,
+ "##glio": 29480,
+ "##sir": 29481,
+ "berman": 29482,
+ "effortlessly": 29483,
+ "enamel": 29484,
+ "napoli": 29485,
+ "persist": 29486,
+ "##peration": 29487,
+ "##uez": 29488,
+ "attache": 29489,
+ "elisa": 29490,
+ "b1": 29491,
+ "invitations": 29492,
+ "##kic": 29493,
+ "accelerating": 29494,
+ "reindeer": 29495,
+ "boardwalk": 29496,
+ "clutches": 29497,
+ "nelly": 29498,
+ "polka": 29499,
+ "starbucks": 29500,
+ "##kei": 29501,
+ "adamant": 29502,
+ "huey": 29503,
+ "lough": 29504,
+ "unbroken": 29505,
+ "adventurer": 29506,
+ "embroidery": 29507,
+ "inspecting": 29508,
+ "stanza": 29509,
+ "##ducted": 29510,
+ "naia": 29511,
+ "taluka": 29512,
+ "##pone": 29513,
+ "##roids": 29514,
+ "chases": 29515,
+ "deprivation": 29516,
+ "florian": 29517,
+ "##jing": 29518,
+ "##ppet": 29519,
+ "earthly": 29520,
+ "##lib": 29521,
+ "##ssee": 29522,
+ "colossal": 29523,
+ "foreigner": 29524,
+ "vet": 29525,
+ "freaks": 29526,
+ "patrice": 29527,
+ "rosewood": 29528,
+ "triassic": 29529,
+ "upstate": 29530,
+ "##pkins": 29531,
+ "dominates": 29532,
+ "ata": 29533,
+ "chants": 29534,
+ "ks": 29535,
+ "vo": 29536,
+ "##400": 29537,
+ "##bley": 29538,
+ "##raya": 29539,
+ "##rmed": 29540,
+ "555": 29541,
+ "agra": 29542,
+ "infiltrate": 29543,
+ "##ailing": 29544,
+ "##ilation": 29545,
+ "##tzer": 29546,
+ "##uppe": 29547,
+ "##werk": 29548,
+ "binoculars": 29549,
+ "enthusiast": 29550,
+ "fujian": 29551,
+ "squeak": 29552,
+ "##avs": 29553,
+ "abolitionist": 29554,
+ "almeida": 29555,
+ "boredom": 29556,
+ "hampstead": 29557,
+ "marsden": 29558,
+ "rations": 29559,
+ "##ands": 29560,
+ "inflated": 29561,
+ "334": 29562,
+ "bonuses": 29563,
+ "rosalie": 29564,
+ "patna": 29565,
+ "##rco": 29566,
+ "329": 29567,
+ "detachments": 29568,
+ "penitentiary": 29569,
+ "54th": 29570,
+ "flourishing": 29571,
+ "woolf": 29572,
+ "##dion": 29573,
+ "##etched": 29574,
+ "papyrus": 29575,
+ "##lster": 29576,
+ "##nsor": 29577,
+ "##toy": 29578,
+ "bobbed": 29579,
+ "dismounted": 29580,
+ "endelle": 29581,
+ "inhuman": 29582,
+ "motorola": 29583,
+ "tbs": 29584,
+ "wince": 29585,
+ "wreath": 29586,
+ "##ticus": 29587,
+ "hideout": 29588,
+ "inspections": 29589,
+ "sanjay": 29590,
+ "disgrace": 29591,
+ "infused": 29592,
+ "pudding": 29593,
+ "stalks": 29594,
+ "##urbed": 29595,
+ "arsenic": 29596,
+ "leases": 29597,
+ "##hyl": 29598,
+ "##rrard": 29599,
+ "collarbone": 29600,
+ "##waite": 29601,
+ "##wil": 29602,
+ "dowry": 29603,
+ "##bant": 29604,
+ "##edance": 29605,
+ "genealogical": 29606,
+ "nitrate": 29607,
+ "salamanca": 29608,
+ "scandals": 29609,
+ "thyroid": 29610,
+ "necessitated": 29611,
+ "##!": 29612,
+ "##\"": 29613,
+ "###": 29614,
+ "##$": 29615,
+ "##%": 29616,
+ "##&": 29617,
+ "##'": 29618,
+ "##(": 29619,
+ "##)": 29620,
+ "##*": 29621,
+ "##+": 29622,
+ "##,": 29623,
+ "##-": 29624,
+ "##.": 29625,
+ "##/": 29626,
+ "##:": 29627,
+ "##;": 29628,
+ "##<": 29629,
+ "##=": 29630,
+ "##>": 29631,
+ "##?": 29632,
+ "##@": 29633,
+ "##[": 29634,
+ "##\\": 29635,
+ "##]": 29636,
+ "##^": 29637,
+ "##_": 29638,
+ "##`": 29639,
+ "##{": 29640,
+ "##|": 29641,
+ "##}": 29642,
+ "##~": 29643,
+ "##¡": 29644,
+ "##¢": 29645,
+ "##£": 29646,
+ "##¤": 29647,
+ "##¥": 29648,
+ "##¦": 29649,
+ "##§": 29650,
+ "##¨": 29651,
+ "##©": 29652,
+ "##ª": 29653,
+ "##«": 29654,
+ "##¬": 29655,
+ "##®": 29656,
+ "##±": 29657,
+ "##´": 29658,
+ "##µ": 29659,
+ "##¶": 29660,
+ "##·": 29661,
+ "##º": 29662,
+ "##»": 29663,
+ "##¼": 29664,
+ "##¾": 29665,
+ "##¿": 29666,
+ "##æ": 29667,
+ "##ð": 29668,
+ "##÷": 29669,
+ "##þ": 29670,
+ "##đ": 29671,
+ "##ħ": 29672,
+ "##ŋ": 29673,
+ "##œ": 29674,
+ "##ƒ": 29675,
+ "##ɐ": 29676,
+ "##ɑ": 29677,
+ "##ɒ": 29678,
+ "##ɔ": 29679,
+ "##ɕ": 29680,
+ "##ə": 29681,
+ "##ɡ": 29682,
+ "##ɣ": 29683,
+ "##ɨ": 29684,
+ "##ɪ": 29685,
+ "##ɫ": 29686,
+ "##ɬ": 29687,
+ "##ɯ": 29688,
+ "##ɲ": 29689,
+ "##ɴ": 29690,
+ "##ɹ": 29691,
+ "##ɾ": 29692,
+ "##ʀ": 29693,
+ "##ʁ": 29694,
+ "##ʂ": 29695,
+ "##ʃ": 29696,
+ "##ʉ": 29697,
+ "##ʊ": 29698,
+ "##ʋ": 29699,
+ "##ʌ": 29700,
+ "##ʎ": 29701,
+ "##ʐ": 29702,
+ "##ʑ": 29703,
+ "##ʒ": 29704,
+ "##ʔ": 29705,
+ "##ʰ": 29706,
+ "##ʲ": 29707,
+ "##ʳ": 29708,
+ "##ʷ": 29709,
+ "##ʸ": 29710,
+ "##ʻ": 29711,
+ "##ʼ": 29712,
+ "##ʾ": 29713,
+ "##ʿ": 29714,
+ "##ˈ": 29715,
+ "##ˡ": 29716,
+ "##ˢ": 29717,
+ "##ˣ": 29718,
+ "##ˤ": 29719,
+ "##β": 29720,
+ "##γ": 29721,
+ "##δ": 29722,
+ "##ε": 29723,
+ "##ζ": 29724,
+ "##θ": 29725,
+ "##κ": 29726,
+ "##λ": 29727,
+ "##μ": 29728,
+ "##ξ": 29729,
+ "##ο": 29730,
+ "##π": 29731,
+ "##ρ": 29732,
+ "##σ": 29733,
+ "##τ": 29734,
+ "##υ": 29735,
+ "##φ": 29736,
+ "##χ": 29737,
+ "##ψ": 29738,
+ "##ω": 29739,
+ "##б": 29740,
+ "##г": 29741,
+ "##д": 29742,
+ "##ж": 29743,
+ "##з": 29744,
+ "##м": 29745,
+ "##п": 29746,
+ "##с": 29747,
+ "##у": 29748,
+ "##ф": 29749,
+ "##х": 29750,
+ "##ц": 29751,
+ "##ч": 29752,
+ "##ш": 29753,
+ "##щ": 29754,
+ "##ъ": 29755,
+ "##э": 29756,
+ "##ю": 29757,
+ "##ђ": 29758,
+ "##є": 29759,
+ "##і": 29760,
+ "##ј": 29761,
+ "##љ": 29762,
+ "##њ": 29763,
+ "##ћ": 29764,
+ "##ӏ": 29765,
+ "##ա": 29766,
+ "##բ": 29767,
+ "##գ": 29768,
+ "##դ": 29769,
+ "##ե": 29770,
+ "##թ": 29771,
+ "##ի": 29772,
+ "##լ": 29773,
+ "##կ": 29774,
+ "##հ": 29775,
+ "##մ": 29776,
+ "##յ": 29777,
+ "##ն": 29778,
+ "##ո": 29779,
+ "##պ": 29780,
+ "##ս": 29781,
+ "##վ": 29782,
+ "##տ": 29783,
+ "##ր": 29784,
+ "##ւ": 29785,
+ "##ք": 29786,
+ "##־": 29787,
+ "##א": 29788,
+ "##ב": 29789,
+ "##ג": 29790,
+ "##ד": 29791,
+ "##ו": 29792,
+ "##ז": 29793,
+ "##ח": 29794,
+ "##ט": 29795,
+ "##י": 29796,
+ "##ך": 29797,
+ "##כ": 29798,
+ "##ל": 29799,
+ "##ם": 29800,
+ "##מ": 29801,
+ "##ן": 29802,
+ "##נ": 29803,
+ "##ס": 29804,
+ "##ע": 29805,
+ "##ף": 29806,
+ "##פ": 29807,
+ "##ץ": 29808,
+ "##צ": 29809,
+ "##ק": 29810,
+ "##ר": 29811,
+ "##ש": 29812,
+ "##ת": 29813,
+ "##،": 29814,
+ "##ء": 29815,
+ "##ب": 29816,
+ "##ت": 29817,
+ "##ث": 29818,
+ "##ج": 29819,
+ "##ح": 29820,
+ "##خ": 29821,
+ "##ذ": 29822,
+ "##ز": 29823,
+ "##س": 29824,
+ "##ش": 29825,
+ "##ص": 29826,
+ "##ض": 29827,
+ "##ط": 29828,
+ "##ظ": 29829,
+ "##ع": 29830,
+ "##غ": 29831,
+ "##ـ": 29832,
+ "##ف": 29833,
+ "##ق": 29834,
+ "##ك": 29835,
+ "##و": 29836,
+ "##ى": 29837,
+ "##ٹ": 29838,
+ "##پ": 29839,
+ "##چ": 29840,
+ "##ک": 29841,
+ "##گ": 29842,
+ "##ں": 29843,
+ "##ھ": 29844,
+ "##ہ": 29845,
+ "##ے": 29846,
+ "##अ": 29847,
+ "##आ": 29848,
+ "##उ": 29849,
+ "##ए": 29850,
+ "##क": 29851,
+ "##ख": 29852,
+ "##ग": 29853,
+ "##च": 29854,
+ "##ज": 29855,
+ "##ट": 29856,
+ "##ड": 29857,
+ "##ण": 29858,
+ "##त": 29859,
+ "##थ": 29860,
+ "##द": 29861,
+ "##ध": 29862,
+ "##न": 29863,
+ "##प": 29864,
+ "##ब": 29865,
+ "##भ": 29866,
+ "##म": 29867,
+ "##य": 29868,
+ "##र": 29869,
+ "##ल": 29870,
+ "##व": 29871,
+ "##श": 29872,
+ "##ष": 29873,
+ "##स": 29874,
+ "##ह": 29875,
+ "##ा": 29876,
+ "##ि": 29877,
+ "##ी": 29878,
+ "##ो": 29879,
+ "##।": 29880,
+ "##॥": 29881,
+ "##ং": 29882,
+ "##অ": 29883,
+ "##আ": 29884,
+ "##ই": 29885,
+ "##উ": 29886,
+ "##এ": 29887,
+ "##ও": 29888,
+ "##ক": 29889,
+ "##খ": 29890,
+ "##গ": 29891,
+ "##চ": 29892,
+ "##ছ": 29893,
+ "##জ": 29894,
+ "##ট": 29895,
+ "##ড": 29896,
+ "##ণ": 29897,
+ "##ত": 29898,
+ "##থ": 29899,
+ "##দ": 29900,
+ "##ধ": 29901,
+ "##ন": 29902,
+ "##প": 29903,
+ "##ব": 29904,
+ "##ভ": 29905,
+ "##ম": 29906,
+ "##য": 29907,
+ "##র": 29908,
+ "##ল": 29909,
+ "##শ": 29910,
+ "##ষ": 29911,
+ "##স": 29912,
+ "##হ": 29913,
+ "##া": 29914,
+ "##ি": 29915,
+ "##ী": 29916,
+ "##ে": 29917,
+ "##க": 29918,
+ "##ச": 29919,
+ "##ட": 29920,
+ "##த": 29921,
+ "##ந": 29922,
+ "##ன": 29923,
+ "##ப": 29924,
+ "##ம": 29925,
+ "##ய": 29926,
+ "##ர": 29927,
+ "##ல": 29928,
+ "##ள": 29929,
+ "##வ": 29930,
+ "##ா": 29931,
+ "##ி": 29932,
+ "##ு": 29933,
+ "##ே": 29934,
+ "##ை": 29935,
+ "##ನ": 29936,
+ "##ರ": 29937,
+ "##ಾ": 29938,
+ "##ක": 29939,
+ "##ය": 29940,
+ "##ර": 29941,
+ "##ල": 29942,
+ "##ව": 29943,
+ "##ා": 29944,
+ "##ก": 29945,
+ "##ง": 29946,
+ "##ต": 29947,
+ "##ท": 29948,
+ "##น": 29949,
+ "##พ": 29950,
+ "##ม": 29951,
+ "##ย": 29952,
+ "##ร": 29953,
+ "##ล": 29954,
+ "##ว": 29955,
+ "##ส": 29956,
+ "##อ": 29957,
+ "##า": 29958,
+ "##เ": 29959,
+ "##་": 29960,
+ "##།": 29961,
+ "##ག": 29962,
+ "##ང": 29963,
+ "##ད": 29964,
+ "##ན": 29965,
+ "##པ": 29966,
+ "##བ": 29967,
+ "##མ": 29968,
+ "##འ": 29969,
+ "##ར": 29970,
+ "##ལ": 29971,
+ "##ས": 29972,
+ "##မ": 29973,
+ "##ა": 29974,
+ "##ბ": 29975,
+ "##გ": 29976,
+ "##დ": 29977,
+ "##ე": 29978,
+ "##ვ": 29979,
+ "##თ": 29980,
+ "##ი": 29981,
+ "##კ": 29982,
+ "##ლ": 29983,
+ "##მ": 29984,
+ "##ნ": 29985,
+ "##ო": 29986,
+ "##რ": 29987,
+ "##ს": 29988,
+ "##ტ": 29989,
+ "##უ": 29990,
+ "##ᄀ": 29991,
+ "##ᄂ": 29992,
+ "##ᄃ": 29993,
+ "##ᄅ": 29994,
+ "##ᄆ": 29995,
+ "##ᄇ": 29996,
+ "##ᄉ": 29997,
+ "##ᄊ": 29998,
+ "##ᄋ": 29999,
+ "##ᄌ": 30000,
+ "##ᄎ": 30001,
+ "##ᄏ": 30002,
+ "##ᄐ": 30003,
+ "##ᄑ": 30004,
+ "##ᄒ": 30005,
+ "##ᅡ": 30006,
+ "##ᅢ": 30007,
+ "##ᅥ": 30008,
+ "##ᅦ": 30009,
+ "##ᅧ": 30010,
+ "##ᅩ": 30011,
+ "##ᅪ": 30012,
+ "##ᅭ": 30013,
+ "##ᅮ": 30014,
+ "##ᅯ": 30015,
+ "##ᅲ": 30016,
+ "##ᅳ": 30017,
+ "##ᅴ": 30018,
+ "##ᅵ": 30019,
+ "##ᆨ": 30020,
+ "##ᆫ": 30021,
+ "##ᆯ": 30022,
+ "##ᆷ": 30023,
+ "##ᆸ": 30024,
+ "##ᆼ": 30025,
+ "##ᴬ": 30026,
+ "##ᴮ": 30027,
+ "##ᴰ": 30028,
+ "##ᴵ": 30029,
+ "##ᴺ": 30030,
+ "##ᵀ": 30031,
+ "##ᵃ": 30032,
+ "##ᵇ": 30033,
+ "##ᵈ": 30034,
+ "##ᵉ": 30035,
+ "##ᵍ": 30036,
+ "##ᵏ": 30037,
+ "##ᵐ": 30038,
+ "##ᵒ": 30039,
+ "##ᵖ": 30040,
+ "##ᵗ": 30041,
+ "##ᵘ": 30042,
+ "##ᵣ": 30043,
+ "##ᵤ": 30044,
+ "##ᵥ": 30045,
+ "##ᶜ": 30046,
+ "##ᶠ": 30047,
+ "##‐": 30048,
+ "##‑": 30049,
+ "##‒": 30050,
+ "##–": 30051,
+ "##—": 30052,
+ "##―": 30053,
+ "##‖": 30054,
+ "##‘": 30055,
+ "##’": 30056,
+ "##‚": 30057,
+ "##“": 30058,
+ "##”": 30059,
+ "##„": 30060,
+ "##†": 30061,
+ "##‡": 30062,
+ "##•": 30063,
+ "##…": 30064,
+ "##‰": 30065,
+ "##′": 30066,
+ "##″": 30067,
+ "##›": 30068,
+ "##‿": 30069,
+ "##⁄": 30070,
+ "##⁰": 30071,
+ "##ⁱ": 30072,
+ "##⁴": 30073,
+ "##⁵": 30074,
+ "##⁶": 30075,
+ "##⁷": 30076,
+ "##⁸": 30077,
+ "##⁹": 30078,
+ "##⁻": 30079,
+ "##ⁿ": 30080,
+ "##₅": 30081,
+ "##₆": 30082,
+ "##₇": 30083,
+ "##₈": 30084,
+ "##₉": 30085,
+ "##₊": 30086,
+ "##₍": 30087,
+ "##₎": 30088,
+ "##ₐ": 30089,
+ "##ₑ": 30090,
+ "##ₒ": 30091,
+ "##ₓ": 30092,
+ "##ₕ": 30093,
+ "##ₖ": 30094,
+ "##ₗ": 30095,
+ "##ₘ": 30096,
+ "##ₚ": 30097,
+ "##ₛ": 30098,
+ "##ₜ": 30099,
+ "##₤": 30100,
+ "##₩": 30101,
+ "##€": 30102,
+ "##₱": 30103,
+ "##₹": 30104,
+ "##ℓ": 30105,
+ "##№": 30106,
+ "##ℝ": 30107,
+ "##™": 30108,
+ "##⅓": 30109,
+ "##⅔": 30110,
+ "##←": 30111,
+ "##↑": 30112,
+ "##→": 30113,
+ "##↓": 30114,
+ "##↔": 30115,
+ "##↦": 30116,
+ "##⇄": 30117,
+ "##⇌": 30118,
+ "##⇒": 30119,
+ "##∂": 30120,
+ "##∅": 30121,
+ "##∆": 30122,
+ "##∇": 30123,
+ "##∈": 30124,
+ "##∗": 30125,
+ "##∘": 30126,
+ "##√": 30127,
+ "##∞": 30128,
+ "##∧": 30129,
+ "##∨": 30130,
+ "##∩": 30131,
+ "##∪": 30132,
+ "##≈": 30133,
+ "##≡": 30134,
+ "##≤": 30135,
+ "##≥": 30136,
+ "##⊂": 30137,
+ "##⊆": 30138,
+ "##⊕": 30139,
+ "##⊗": 30140,
+ "##⋅": 30141,
+ "##─": 30142,
+ "##│": 30143,
+ "##■": 30144,
+ "##▪": 30145,
+ "##●": 30146,
+ "##★": 30147,
+ "##☆": 30148,
+ "##☉": 30149,
+ "##♠": 30150,
+ "##♣": 30151,
+ "##♥": 30152,
+ "##♦": 30153,
+ "##♯": 30154,
+ "##⟨": 30155,
+ "##⟩": 30156,
+ "##ⱼ": 30157,
+ "##⺩": 30158,
+ "##⺼": 30159,
+ "##⽥": 30160,
+ "##、": 30161,
+ "##。": 30162,
+ "##〈": 30163,
+ "##〉": 30164,
+ "##《": 30165,
+ "##》": 30166,
+ "##「": 30167,
+ "##」": 30168,
+ "##『": 30169,
+ "##』": 30170,
+ "##〜": 30171,
+ "##あ": 30172,
+ "##い": 30173,
+ "##う": 30174,
+ "##え": 30175,
+ "##お": 30176,
+ "##か": 30177,
+ "##き": 30178,
+ "##く": 30179,
+ "##け": 30180,
+ "##こ": 30181,
+ "##さ": 30182,
+ "##し": 30183,
+ "##す": 30184,
+ "##せ": 30185,
+ "##そ": 30186,
+ "##た": 30187,
+ "##ち": 30188,
+ "##っ": 30189,
+ "##つ": 30190,
+ "##て": 30191,
+ "##と": 30192,
+ "##な": 30193,
+ "##に": 30194,
+ "##ぬ": 30195,
+ "##ね": 30196,
+ "##の": 30197,
+ "##は": 30198,
+ "##ひ": 30199,
+ "##ふ": 30200,
+ "##へ": 30201,
+ "##ほ": 30202,
+ "##ま": 30203,
+ "##み": 30204,
+ "##む": 30205,
+ "##め": 30206,
+ "##も": 30207,
+ "##や": 30208,
+ "##ゆ": 30209,
+ "##よ": 30210,
+ "##ら": 30211,
+ "##り": 30212,
+ "##る": 30213,
+ "##れ": 30214,
+ "##ろ": 30215,
+ "##を": 30216,
+ "##ん": 30217,
+ "##ァ": 30218,
+ "##ア": 30219,
+ "##ィ": 30220,
+ "##イ": 30221,
+ "##ウ": 30222,
+ "##ェ": 30223,
+ "##エ": 30224,
+ "##オ": 30225,
+ "##カ": 30226,
+ "##キ": 30227,
+ "##ク": 30228,
+ "##ケ": 30229,
+ "##コ": 30230,
+ "##サ": 30231,
+ "##シ": 30232,
+ "##ス": 30233,
+ "##セ": 30234,
+ "##タ": 30235,
+ "##チ": 30236,
+ "##ッ": 30237,
+ "##ツ": 30238,
+ "##テ": 30239,
+ "##ト": 30240,
+ "##ナ": 30241,
+ "##ニ": 30242,
+ "##ノ": 30243,
+ "##ハ": 30244,
+ "##ヒ": 30245,
+ "##フ": 30246,
+ "##ヘ": 30247,
+ "##ホ": 30248,
+ "##マ": 30249,
+ "##ミ": 30250,
+ "##ム": 30251,
+ "##メ": 30252,
+ "##モ": 30253,
+ "##ャ": 30254,
+ "##ュ": 30255,
+ "##ョ": 30256,
+ "##ラ": 30257,
+ "##リ": 30258,
+ "##ル": 30259,
+ "##レ": 30260,
+ "##ロ": 30261,
+ "##ワ": 30262,
+ "##ン": 30263,
+ "##・": 30264,
+ "##ー": 30265,
+ "##一": 30266,
+ "##三": 30267,
+ "##上": 30268,
+ "##下": 30269,
+ "##不": 30270,
+ "##世": 30271,
+ "##中": 30272,
+ "##主": 30273,
+ "##久": 30274,
+ "##之": 30275,
+ "##也": 30276,
+ "##事": 30277,
+ "##二": 30278,
+ "##五": 30279,
+ "##井": 30280,
+ "##京": 30281,
+ "##人": 30282,
+ "##亻": 30283,
+ "##仁": 30284,
+ "##介": 30285,
+ "##代": 30286,
+ "##仮": 30287,
+ "##伊": 30288,
+ "##会": 30289,
+ "##佐": 30290,
+ "##侍": 30291,
+ "##保": 30292,
+ "##信": 30293,
+ "##健": 30294,
+ "##元": 30295,
+ "##光": 30296,
+ "##八": 30297,
+ "##公": 30298,
+ "##内": 30299,
+ "##出": 30300,
+ "##分": 30301,
+ "##前": 30302,
+ "##劉": 30303,
+ "##力": 30304,
+ "##加": 30305,
+ "##勝": 30306,
+ "##北": 30307,
+ "##区": 30308,
+ "##十": 30309,
+ "##千": 30310,
+ "##南": 30311,
+ "##博": 30312,
+ "##原": 30313,
+ "##口": 30314,
+ "##古": 30315,
+ "##史": 30316,
+ "##司": 30317,
+ "##合": 30318,
+ "##吉": 30319,
+ "##同": 30320,
+ "##名": 30321,
+ "##和": 30322,
+ "##囗": 30323,
+ "##四": 30324,
+ "##国": 30325,
+ "##國": 30326,
+ "##土": 30327,
+ "##地": 30328,
+ "##坂": 30329,
+ "##城": 30330,
+ "##堂": 30331,
+ "##場": 30332,
+ "##士": 30333,
+ "##夏": 30334,
+ "##外": 30335,
+ "##大": 30336,
+ "##天": 30337,
+ "##太": 30338,
+ "##夫": 30339,
+ "##奈": 30340,
+ "##女": 30341,
+ "##子": 30342,
+ "##学": 30343,
+ "##宀": 30344,
+ "##宇": 30345,
+ "##安": 30346,
+ "##宗": 30347,
+ "##定": 30348,
+ "##宣": 30349,
+ "##宮": 30350,
+ "##家": 30351,
+ "##宿": 30352,
+ "##寺": 30353,
+ "##將": 30354,
+ "##小": 30355,
+ "##尚": 30356,
+ "##山": 30357,
+ "##岡": 30358,
+ "##島": 30359,
+ "##崎": 30360,
+ "##川": 30361,
+ "##州": 30362,
+ "##巿": 30363,
+ "##帝": 30364,
+ "##平": 30365,
+ "##年": 30366,
+ "##幸": 30367,
+ "##广": 30368,
+ "##弘": 30369,
+ "##張": 30370,
+ "##彳": 30371,
+ "##後": 30372,
+ "##御": 30373,
+ "##德": 30374,
+ "##心": 30375,
+ "##忄": 30376,
+ "##志": 30377,
+ "##忠": 30378,
+ "##愛": 30379,
+ "##成": 30380,
+ "##我": 30381,
+ "##戦": 30382,
+ "##戸": 30383,
+ "##手": 30384,
+ "##扌": 30385,
+ "##政": 30386,
+ "##文": 30387,
+ "##新": 30388,
+ "##方": 30389,
+ "##日": 30390,
+ "##明": 30391,
+ "##星": 30392,
+ "##春": 30393,
+ "##昭": 30394,
+ "##智": 30395,
+ "##曲": 30396,
+ "##書": 30397,
+ "##月": 30398,
+ "##有": 30399,
+ "##朝": 30400,
+ "##木": 30401,
+ "##本": 30402,
+ "##李": 30403,
+ "##村": 30404,
+ "##東": 30405,
+ "##松": 30406,
+ "##林": 30407,
+ "##森": 30408,
+ "##楊": 30409,
+ "##樹": 30410,
+ "##橋": 30411,
+ "##歌": 30412,
+ "##止": 30413,
+ "##正": 30414,
+ "##武": 30415,
+ "##比": 30416,
+ "##氏": 30417,
+ "##民": 30418,
+ "##水": 30419,
+ "##氵": 30420,
+ "##氷": 30421,
+ "##永": 30422,
+ "##江": 30423,
+ "##沢": 30424,
+ "##河": 30425,
+ "##治": 30426,
+ "##法": 30427,
+ "##海": 30428,
+ "##清": 30429,
+ "##漢": 30430,
+ "##瀬": 30431,
+ "##火": 30432,
+ "##版": 30433,
+ "##犬": 30434,
+ "##王": 30435,
+ "##生": 30436,
+ "##田": 30437,
+ "##男": 30438,
+ "##疒": 30439,
+ "##発": 30440,
+ "##白": 30441,
+ "##的": 30442,
+ "##皇": 30443,
+ "##目": 30444,
+ "##相": 30445,
+ "##省": 30446,
+ "##真": 30447,
+ "##石": 30448,
+ "##示": 30449,
+ "##社": 30450,
+ "##神": 30451,
+ "##福": 30452,
+ "##禾": 30453,
+ "##秀": 30454,
+ "##秋": 30455,
+ "##空": 30456,
+ "##立": 30457,
+ "##章": 30458,
+ "##竹": 30459,
+ "##糹": 30460,
+ "##美": 30461,
+ "##義": 30462,
+ "##耳": 30463,
+ "##良": 30464,
+ "##艹": 30465,
+ "##花": 30466,
+ "##英": 30467,
+ "##華": 30468,
+ "##葉": 30469,
+ "##藤": 30470,
+ "##行": 30471,
+ "##街": 30472,
+ "##西": 30473,
+ "##見": 30474,
+ "##訁": 30475,
+ "##語": 30476,
+ "##谷": 30477,
+ "##貝": 30478,
+ "##貴": 30479,
+ "##車": 30480,
+ "##軍": 30481,
+ "##辶": 30482,
+ "##道": 30483,
+ "##郎": 30484,
+ "##郡": 30485,
+ "##部": 30486,
+ "##都": 30487,
+ "##里": 30488,
+ "##野": 30489,
+ "##金": 30490,
+ "##鈴": 30491,
+ "##镇": 30492,
+ "##長": 30493,
+ "##門": 30494,
+ "##間": 30495,
+ "##阝": 30496,
+ "##阿": 30497,
+ "##陳": 30498,
+ "##陽": 30499,
+ "##雄": 30500,
+ "##青": 30501,
+ "##面": 30502,
+ "##風": 30503,
+ "##食": 30504,
+ "##香": 30505,
+ "##馬": 30506,
+ "##高": 30507,
+ "##龍": 30508,
+ "##龸": 30509,
+ "##fi": 30510,
+ "##fl": 30511,
+ "##!": 30512,
+ "##(": 30513,
+ "##)": 30514,
+ "##,": 30515,
+ "##-": 30516,
+ "##.": 30517,
+ "##/": 30518,
+ "##:": 30519,
+ "##?": 30520,
+ "##~": 30521
+ }
+ }
+}
\ No newline at end of file
diff --git a/data/models/all-MiniLM-L6-v2/tokenizer_config.json b/data/models/all-MiniLM-L6-v2/tokenizer_config.json
new file mode 100644
index 0000000..37fca74
--- /dev/null
+++ b/data/models/all-MiniLM-L6-v2/tokenizer_config.json
@@ -0,0 +1,15 @@
+{
+ "clean_up_tokenization_spaces": true,
+ "cls_token": "[CLS]",
+ "do_basic_tokenize": true,
+ "do_lower_case": true,
+ "mask_token": "[MASK]",
+ "model_max_length": 512,
+ "never_split": null,
+ "pad_token": "[PAD]",
+ "sep_token": "[SEP]",
+ "strip_accents": null,
+ "tokenize_chinese_chars": true,
+ "tokenizer_class": "BertTokenizer",
+ "unk_token": "[UNK]"
+}
diff --git a/data/models/all-MiniLM-L6-v2/vocab.txt b/data/models/all-MiniLM-L6-v2/vocab.txt
new file mode 100644
index 0000000..fb14027
--- /dev/null
+++ b/data/models/all-MiniLM-L6-v2/vocab.txt
@@ -0,0 +1,30522 @@
+[PAD]
+[unused0]
+[unused1]
+[unused2]
+[unused3]
+[unused4]
+[unused5]
+[unused6]
+[unused7]
+[unused8]
+[unused9]
+[unused10]
+[unused11]
+[unused12]
+[unused13]
+[unused14]
+[unused15]
+[unused16]
+[unused17]
+[unused18]
+[unused19]
+[unused20]
+[unused21]
+[unused22]
+[unused23]
+[unused24]
+[unused25]
+[unused26]
+[unused27]
+[unused28]
+[unused29]
+[unused30]
+[unused31]
+[unused32]
+[unused33]
+[unused34]
+[unused35]
+[unused36]
+[unused37]
+[unused38]
+[unused39]
+[unused40]
+[unused41]
+[unused42]
+[unused43]
+[unused44]
+[unused45]
+[unused46]
+[unused47]
+[unused48]
+[unused49]
+[unused50]
+[unused51]
+[unused52]
+[unused53]
+[unused54]
+[unused55]
+[unused56]
+[unused57]
+[unused58]
+[unused59]
+[unused60]
+[unused61]
+[unused62]
+[unused63]
+[unused64]
+[unused65]
+[unused66]
+[unused67]
+[unused68]
+[unused69]
+[unused70]
+[unused71]
+[unused72]
+[unused73]
+[unused74]
+[unused75]
+[unused76]
+[unused77]
+[unused78]
+[unused79]
+[unused80]
+[unused81]
+[unused82]
+[unused83]
+[unused84]
+[unused85]
+[unused86]
+[unused87]
+[unused88]
+[unused89]
+[unused90]
+[unused91]
+[unused92]
+[unused93]
+[unused94]
+[unused95]
+[unused96]
+[unused97]
+[unused98]
+[UNK]
+[CLS]
+[SEP]
+[MASK]
+[unused99]
+[unused100]
+[unused101]
+[unused102]
+[unused103]
+[unused104]
+[unused105]
+[unused106]
+[unused107]
+[unused108]
+[unused109]
+[unused110]
+[unused111]
+[unused112]
+[unused113]
+[unused114]
+[unused115]
+[unused116]
+[unused117]
+[unused118]
+[unused119]
+[unused120]
+[unused121]
+[unused122]
+[unused123]
+[unused124]
+[unused125]
+[unused126]
+[unused127]
+[unused128]
+[unused129]
+[unused130]
+[unused131]
+[unused132]
+[unused133]
+[unused134]
+[unused135]
+[unused136]
+[unused137]
+[unused138]
+[unused139]
+[unused140]
+[unused141]
+[unused142]
+[unused143]
+[unused144]
+[unused145]
+[unused146]
+[unused147]
+[unused148]
+[unused149]
+[unused150]
+[unused151]
+[unused152]
+[unused153]
+[unused154]
+[unused155]
+[unused156]
+[unused157]
+[unused158]
+[unused159]
+[unused160]
+[unused161]
+[unused162]
+[unused163]
+[unused164]
+[unused165]
+[unused166]
+[unused167]
+[unused168]
+[unused169]
+[unused170]
+[unused171]
+[unused172]
+[unused173]
+[unused174]
+[unused175]
+[unused176]
+[unused177]
+[unused178]
+[unused179]
+[unused180]
+[unused181]
+[unused182]
+[unused183]
+[unused184]
+[unused185]
+[unused186]
+[unused187]
+[unused188]
+[unused189]
+[unused190]
+[unused191]
+[unused192]
+[unused193]
+[unused194]
+[unused195]
+[unused196]
+[unused197]
+[unused198]
+[unused199]
+[unused200]
+[unused201]
+[unused202]
+[unused203]
+[unused204]
+[unused205]
+[unused206]
+[unused207]
+[unused208]
+[unused209]
+[unused210]
+[unused211]
+[unused212]
+[unused213]
+[unused214]
+[unused215]
+[unused216]
+[unused217]
+[unused218]
+[unused219]
+[unused220]
+[unused221]
+[unused222]
+[unused223]
+[unused224]
+[unused225]
+[unused226]
+[unused227]
+[unused228]
+[unused229]
+[unused230]
+[unused231]
+[unused232]
+[unused233]
+[unused234]
+[unused235]
+[unused236]
+[unused237]
+[unused238]
+[unused239]
+[unused240]
+[unused241]
+[unused242]
+[unused243]
+[unused244]
+[unused245]
+[unused246]
+[unused247]
+[unused248]
+[unused249]
+[unused250]
+[unused251]
+[unused252]
+[unused253]
+[unused254]
+[unused255]
+[unused256]
+[unused257]
+[unused258]
+[unused259]
+[unused260]
+[unused261]
+[unused262]
+[unused263]
+[unused264]
+[unused265]
+[unused266]
+[unused267]
+[unused268]
+[unused269]
+[unused270]
+[unused271]
+[unused272]
+[unused273]
+[unused274]
+[unused275]
+[unused276]
+[unused277]
+[unused278]
+[unused279]
+[unused280]
+[unused281]
+[unused282]
+[unused283]
+[unused284]
+[unused285]
+[unused286]
+[unused287]
+[unused288]
+[unused289]
+[unused290]
+[unused291]
+[unused292]
+[unused293]
+[unused294]
+[unused295]
+[unused296]
+[unused297]
+[unused298]
+[unused299]
+[unused300]
+[unused301]
+[unused302]
+[unused303]
+[unused304]
+[unused305]
+[unused306]
+[unused307]
+[unused308]
+[unused309]
+[unused310]
+[unused311]
+[unused312]
+[unused313]
+[unused314]
+[unused315]
+[unused316]
+[unused317]
+[unused318]
+[unused319]
+[unused320]
+[unused321]
+[unused322]
+[unused323]
+[unused324]
+[unused325]
+[unused326]
+[unused327]
+[unused328]
+[unused329]
+[unused330]
+[unused331]
+[unused332]
+[unused333]
+[unused334]
+[unused335]
+[unused336]
+[unused337]
+[unused338]
+[unused339]
+[unused340]
+[unused341]
+[unused342]
+[unused343]
+[unused344]
+[unused345]
+[unused346]
+[unused347]
+[unused348]
+[unused349]
+[unused350]
+[unused351]
+[unused352]
+[unused353]
+[unused354]
+[unused355]
+[unused356]
+[unused357]
+[unused358]
+[unused359]
+[unused360]
+[unused361]
+[unused362]
+[unused363]
+[unused364]
+[unused365]
+[unused366]
+[unused367]
+[unused368]
+[unused369]
+[unused370]
+[unused371]
+[unused372]
+[unused373]
+[unused374]
+[unused375]
+[unused376]
+[unused377]
+[unused378]
+[unused379]
+[unused380]
+[unused381]
+[unused382]
+[unused383]
+[unused384]
+[unused385]
+[unused386]
+[unused387]
+[unused388]
+[unused389]
+[unused390]
+[unused391]
+[unused392]
+[unused393]
+[unused394]
+[unused395]
+[unused396]
+[unused397]
+[unused398]
+[unused399]
+[unused400]
+[unused401]
+[unused402]
+[unused403]
+[unused404]
+[unused405]
+[unused406]
+[unused407]
+[unused408]
+[unused409]
+[unused410]
+[unused411]
+[unused412]
+[unused413]
+[unused414]
+[unused415]
+[unused416]
+[unused417]
+[unused418]
+[unused419]
+[unused420]
+[unused421]
+[unused422]
+[unused423]
+[unused424]
+[unused425]
+[unused426]
+[unused427]
+[unused428]
+[unused429]
+[unused430]
+[unused431]
+[unused432]
+[unused433]
+[unused434]
+[unused435]
+[unused436]
+[unused437]
+[unused438]
+[unused439]
+[unused440]
+[unused441]
+[unused442]
+[unused443]
+[unused444]
+[unused445]
+[unused446]
+[unused447]
+[unused448]
+[unused449]
+[unused450]
+[unused451]
+[unused452]
+[unused453]
+[unused454]
+[unused455]
+[unused456]
+[unused457]
+[unused458]
+[unused459]
+[unused460]
+[unused461]
+[unused462]
+[unused463]
+[unused464]
+[unused465]
+[unused466]
+[unused467]
+[unused468]
+[unused469]
+[unused470]
+[unused471]
+[unused472]
+[unused473]
+[unused474]
+[unused475]
+[unused476]
+[unused477]
+[unused478]
+[unused479]
+[unused480]
+[unused481]
+[unused482]
+[unused483]
+[unused484]
+[unused485]
+[unused486]
+[unused487]
+[unused488]
+[unused489]
+[unused490]
+[unused491]
+[unused492]
+[unused493]
+[unused494]
+[unused495]
+[unused496]
+[unused497]
+[unused498]
+[unused499]
+[unused500]
+[unused501]
+[unused502]
+[unused503]
+[unused504]
+[unused505]
+[unused506]
+[unused507]
+[unused508]
+[unused509]
+[unused510]
+[unused511]
+[unused512]
+[unused513]
+[unused514]
+[unused515]
+[unused516]
+[unused517]
+[unused518]
+[unused519]
+[unused520]
+[unused521]
+[unused522]
+[unused523]
+[unused524]
+[unused525]
+[unused526]
+[unused527]
+[unused528]
+[unused529]
+[unused530]
+[unused531]
+[unused532]
+[unused533]
+[unused534]
+[unused535]
+[unused536]
+[unused537]
+[unused538]
+[unused539]
+[unused540]
+[unused541]
+[unused542]
+[unused543]
+[unused544]
+[unused545]
+[unused546]
+[unused547]
+[unused548]
+[unused549]
+[unused550]
+[unused551]
+[unused552]
+[unused553]
+[unused554]
+[unused555]
+[unused556]
+[unused557]
+[unused558]
+[unused559]
+[unused560]
+[unused561]
+[unused562]
+[unused563]
+[unused564]
+[unused565]
+[unused566]
+[unused567]
+[unused568]
+[unused569]
+[unused570]
+[unused571]
+[unused572]
+[unused573]
+[unused574]
+[unused575]
+[unused576]
+[unused577]
+[unused578]
+[unused579]
+[unused580]
+[unused581]
+[unused582]
+[unused583]
+[unused584]
+[unused585]
+[unused586]
+[unused587]
+[unused588]
+[unused589]
+[unused590]
+[unused591]
+[unused592]
+[unused593]
+[unused594]
+[unused595]
+[unused596]
+[unused597]
+[unused598]
+[unused599]
+[unused600]
+[unused601]
+[unused602]
+[unused603]
+[unused604]
+[unused605]
+[unused606]
+[unused607]
+[unused608]
+[unused609]
+[unused610]
+[unused611]
+[unused612]
+[unused613]
+[unused614]
+[unused615]
+[unused616]
+[unused617]
+[unused618]
+[unused619]
+[unused620]
+[unused621]
+[unused622]
+[unused623]
+[unused624]
+[unused625]
+[unused626]
+[unused627]
+[unused628]
+[unused629]
+[unused630]
+[unused631]
+[unused632]
+[unused633]
+[unused634]
+[unused635]
+[unused636]
+[unused637]
+[unused638]
+[unused639]
+[unused640]
+[unused641]
+[unused642]
+[unused643]
+[unused644]
+[unused645]
+[unused646]
+[unused647]
+[unused648]
+[unused649]
+[unused650]
+[unused651]
+[unused652]
+[unused653]
+[unused654]
+[unused655]
+[unused656]
+[unused657]
+[unused658]
+[unused659]
+[unused660]
+[unused661]
+[unused662]
+[unused663]
+[unused664]
+[unused665]
+[unused666]
+[unused667]
+[unused668]
+[unused669]
+[unused670]
+[unused671]
+[unused672]
+[unused673]
+[unused674]
+[unused675]
+[unused676]
+[unused677]
+[unused678]
+[unused679]
+[unused680]
+[unused681]
+[unused682]
+[unused683]
+[unused684]
+[unused685]
+[unused686]
+[unused687]
+[unused688]
+[unused689]
+[unused690]
+[unused691]
+[unused692]
+[unused693]
+[unused694]
+[unused695]
+[unused696]
+[unused697]
+[unused698]
+[unused699]
+[unused700]
+[unused701]
+[unused702]
+[unused703]
+[unused704]
+[unused705]
+[unused706]
+[unused707]
+[unused708]
+[unused709]
+[unused710]
+[unused711]
+[unused712]
+[unused713]
+[unused714]
+[unused715]
+[unused716]
+[unused717]
+[unused718]
+[unused719]
+[unused720]
+[unused721]
+[unused722]
+[unused723]
+[unused724]
+[unused725]
+[unused726]
+[unused727]
+[unused728]
+[unused729]
+[unused730]
+[unused731]
+[unused732]
+[unused733]
+[unused734]
+[unused735]
+[unused736]
+[unused737]
+[unused738]
+[unused739]
+[unused740]
+[unused741]
+[unused742]
+[unused743]
+[unused744]
+[unused745]
+[unused746]
+[unused747]
+[unused748]
+[unused749]
+[unused750]
+[unused751]
+[unused752]
+[unused753]
+[unused754]
+[unused755]
+[unused756]
+[unused757]
+[unused758]
+[unused759]
+[unused760]
+[unused761]
+[unused762]
+[unused763]
+[unused764]
+[unused765]
+[unused766]
+[unused767]
+[unused768]
+[unused769]
+[unused770]
+[unused771]
+[unused772]
+[unused773]
+[unused774]
+[unused775]
+[unused776]
+[unused777]
+[unused778]
+[unused779]
+[unused780]
+[unused781]
+[unused782]
+[unused783]
+[unused784]
+[unused785]
+[unused786]
+[unused787]
+[unused788]
+[unused789]
+[unused790]
+[unused791]
+[unused792]
+[unused793]
+[unused794]
+[unused795]
+[unused796]
+[unused797]
+[unused798]
+[unused799]
+[unused800]
+[unused801]
+[unused802]
+[unused803]
+[unused804]
+[unused805]
+[unused806]
+[unused807]
+[unused808]
+[unused809]
+[unused810]
+[unused811]
+[unused812]
+[unused813]
+[unused814]
+[unused815]
+[unused816]
+[unused817]
+[unused818]
+[unused819]
+[unused820]
+[unused821]
+[unused822]
+[unused823]
+[unused824]
+[unused825]
+[unused826]
+[unused827]
+[unused828]
+[unused829]
+[unused830]
+[unused831]
+[unused832]
+[unused833]
+[unused834]
+[unused835]
+[unused836]
+[unused837]
+[unused838]
+[unused839]
+[unused840]
+[unused841]
+[unused842]
+[unused843]
+[unused844]
+[unused845]
+[unused846]
+[unused847]
+[unused848]
+[unused849]
+[unused850]
+[unused851]
+[unused852]
+[unused853]
+[unused854]
+[unused855]
+[unused856]
+[unused857]
+[unused858]
+[unused859]
+[unused860]
+[unused861]
+[unused862]
+[unused863]
+[unused864]
+[unused865]
+[unused866]
+[unused867]
+[unused868]
+[unused869]
+[unused870]
+[unused871]
+[unused872]
+[unused873]
+[unused874]
+[unused875]
+[unused876]
+[unused877]
+[unused878]
+[unused879]
+[unused880]
+[unused881]
+[unused882]
+[unused883]
+[unused884]
+[unused885]
+[unused886]
+[unused887]
+[unused888]
+[unused889]
+[unused890]
+[unused891]
+[unused892]
+[unused893]
+[unused894]
+[unused895]
+[unused896]
+[unused897]
+[unused898]
+[unused899]
+[unused900]
+[unused901]
+[unused902]
+[unused903]
+[unused904]
+[unused905]
+[unused906]
+[unused907]
+[unused908]
+[unused909]
+[unused910]
+[unused911]
+[unused912]
+[unused913]
+[unused914]
+[unused915]
+[unused916]
+[unused917]
+[unused918]
+[unused919]
+[unused920]
+[unused921]
+[unused922]
+[unused923]
+[unused924]
+[unused925]
+[unused926]
+[unused927]
+[unused928]
+[unused929]
+[unused930]
+[unused931]
+[unused932]
+[unused933]
+[unused934]
+[unused935]
+[unused936]
+[unused937]
+[unused938]
+[unused939]
+[unused940]
+[unused941]
+[unused942]
+[unused943]
+[unused944]
+[unused945]
+[unused946]
+[unused947]
+[unused948]
+[unused949]
+[unused950]
+[unused951]
+[unused952]
+[unused953]
+[unused954]
+[unused955]
+[unused956]
+[unused957]
+[unused958]
+[unused959]
+[unused960]
+[unused961]
+[unused962]
+[unused963]
+[unused964]
+[unused965]
+[unused966]
+[unused967]
+[unused968]
+[unused969]
+[unused970]
+[unused971]
+[unused972]
+[unused973]
+[unused974]
+[unused975]
+[unused976]
+[unused977]
+[unused978]
+[unused979]
+[unused980]
+[unused981]
+[unused982]
+[unused983]
+[unused984]
+[unused985]
+[unused986]
+[unused987]
+[unused988]
+[unused989]
+[unused990]
+[unused991]
+[unused992]
+[unused993]
+!
+"
+#
+$
+%
+&
+'
+(
+)
+*
++
+,
+-
+.
+/
+0
+1
+2
+3
+4
+5
+6
+7
+8
+9
+:
+;
+<
+=
+>
+?
+@
+[
+\
+]
+^
+_
+`
+a
+b
+c
+d
+e
+f
+g
+h
+i
+j
+k
+l
+m
+n
+o
+p
+q
+r
+s
+t
+u
+v
+w
+x
+y
+z
+{
+|
+}
+~
+¡
+¢
+£
+¤
+¥
+¦
+§
+¨
+©
+ª
+«
+¬
+®
+°
+±
+²
+³
+´
+µ
+¶
+·
+¹
+º
+»
+¼
+½
+¾
+¿
+×
+ß
+æ
+ð
+÷
+ø
+þ
+đ
+ħ
+ı
+ł
+ŋ
+œ
+ƒ
+ɐ
+ɑ
+ɒ
+ɔ
+ɕ
+ə
+ɛ
+ɡ
+ɣ
+ɨ
+ɪ
+ɫ
+ɬ
+ɯ
+ɲ
+ɴ
+ɹ
+ɾ
+ʀ
+ʁ
+ʂ
+ʃ
+ʉ
+ʊ
+ʋ
+ʌ
+ʎ
+ʐ
+ʑ
+ʒ
+ʔ
+ʰ
+ʲ
+ʳ
+ʷ
+ʸ
+ʻ
+ʼ
+ʾ
+ʿ
+ˈ
+ː
+ˡ
+ˢ
+ˣ
+ˤ
+α
+β
+γ
+δ
+ε
+ζ
+η
+θ
+ι
+κ
+λ
+μ
+ν
+ξ
+ο
+π
+ρ
+ς
+σ
+τ
+υ
+φ
+χ
+ψ
+ω
+а
+б
+в
+г
+д
+е
+ж
+з
+и
+к
+л
+м
+н
+о
+п
+р
+с
+т
+у
+ф
+х
+ц
+ч
+ш
+щ
+ъ
+ы
+ь
+э
+ю
+я
+ђ
+є
+і
+ј
+љ
+њ
+ћ
+ӏ
+ա
+բ
+գ
+դ
+ե
+թ
+ի
+լ
+կ
+հ
+մ
+յ
+ն
+ո
+պ
+ս
+վ
+տ
+ր
+ւ
+ք
+־
+א
+ב
+ג
+ד
+ה
+ו
+ז
+ח
+ט
+י
+ך
+כ
+ל
+ם
+מ
+ן
+נ
+ס
+ע
+ף
+פ
+ץ
+צ
+ק
+ר
+ש
+ת
+،
+ء
+ا
+ب
+ة
+ت
+ث
+ج
+ح
+خ
+د
+ذ
+ر
+ز
+س
+ش
+ص
+ض
+ط
+ظ
+ع
+غ
+ـ
+ف
+ق
+ك
+ل
+م
+ن
+ه
+و
+ى
+ي
+ٹ
+پ
+چ
+ک
+گ
+ں
+ھ
+ہ
+ی
+ے
+अ
+आ
+उ
+ए
+क
+ख
+ग
+च
+ज
+ट
+ड
+ण
+त
+थ
+द
+ध
+न
+प
+ब
+भ
+म
+य
+र
+ल
+व
+श
+ष
+स
+ह
+ा
+ि
+ी
+ो
+।
+॥
+ং
+অ
+আ
+ই
+উ
+এ
+ও
+ক
+খ
+গ
+চ
+ছ
+জ
+ট
+ড
+ণ
+ত
+থ
+দ
+ধ
+ন
+প
+ব
+ভ
+ম
+য
+র
+ল
+শ
+ষ
+স
+হ
+া
+ি
+ী
+ে
+க
+ச
+ட
+த
+ந
+ன
+ப
+ம
+ய
+ர
+ல
+ள
+வ
+ா
+ி
+ு
+ே
+ை
+ನ
+ರ
+ಾ
+ක
+ය
+ර
+ල
+ව
+ා
+ก
+ง
+ต
+ท
+น
+พ
+ม
+ย
+ร
+ล
+ว
+ส
+อ
+า
+เ
+་
+།
+ག
+ང
+ད
+ན
+པ
+བ
+མ
+འ
+ར
+ལ
+ས
+မ
+ა
+ბ
+გ
+დ
+ე
+ვ
+თ
+ი
+კ
+ლ
+მ
+ნ
+ო
+რ
+ს
+ტ
+უ
+ᄀ
+ᄂ
+ᄃ
+ᄅ
+ᄆ
+ᄇ
+ᄉ
+ᄊ
+ᄋ
+ᄌ
+ᄎ
+ᄏ
+ᄐ
+ᄑ
+ᄒ
+ᅡ
+ᅢ
+ᅥ
+ᅦ
+ᅧ
+ᅩ
+ᅪ
+ᅭ
+ᅮ
+ᅯ
+ᅲ
+ᅳ
+ᅴ
+ᅵ
+ᆨ
+ᆫ
+ᆯ
+ᆷ
+ᆸ
+ᆼ
+ᴬ
+ᴮ
+ᴰ
+ᴵ
+ᴺ
+ᵀ
+ᵃ
+ᵇ
+ᵈ
+ᵉ
+ᵍ
+ᵏ
+ᵐ
+ᵒ
+ᵖ
+ᵗ
+ᵘ
+ᵢ
+ᵣ
+ᵤ
+ᵥ
+ᶜ
+ᶠ
+‐
+‑
+‒
+–
+—
+―
+‖
+‘
+’
+‚
+“
+”
+„
+†
+‡
+•
+…
+‰
+′
+″
+›
+‿
+⁄
+⁰
+ⁱ
+⁴
+⁵
+⁶
+⁷
+⁸
+⁹
+⁺
+⁻
+ⁿ
+₀
+₁
+₂
+₃
+₄
+₅
+₆
+₇
+₈
+₉
+₊
+₍
+₎
+ₐ
+ₑ
+ₒ
+ₓ
+ₕ
+ₖ
+ₗ
+ₘ
+ₙ
+ₚ
+ₛ
+ₜ
+₤
+₩
+€
+₱
+₹
+ℓ
+№
+ℝ
+™
+⅓
+⅔
+←
+↑
+→
+↓
+↔
+↦
+⇄
+⇌
+⇒
+∂
+∅
+∆
+∇
+∈
+−
+∗
+∘
+√
+∞
+∧
+∨
+∩
+∪
+≈
+≡
+≤
+≥
+⊂
+⊆
+⊕
+⊗
+⋅
+─
+│
+■
+▪
+●
+★
+☆
+☉
+♠
+♣
+♥
+♦
+♭
+♯
+⟨
+⟩
+ⱼ
+⺩
+⺼
+⽥
+、
+。
+〈
+〉
+《
+》
+「
+」
+『
+』
+〜
+あ
+い
+う
+え
+お
+か
+き
+く
+け
+こ
+さ
+し
+す
+せ
+そ
+た
+ち
+っ
+つ
+て
+と
+な
+に
+ぬ
+ね
+の
+は
+ひ
+ふ
+へ
+ほ
+ま
+み
+む
+め
+も
+や
+ゆ
+よ
+ら
+り
+る
+れ
+ろ
+を
+ん
+ァ
+ア
+ィ
+イ
+ウ
+ェ
+エ
+オ
+カ
+キ
+ク
+ケ
+コ
+サ
+シ
+ス
+セ
+タ
+チ
+ッ
+ツ
+テ
+ト
+ナ
+ニ
+ノ
+ハ
+ヒ
+フ
+ヘ
+ホ
+マ
+ミ
+ム
+メ
+モ
+ャ
+ュ
+ョ
+ラ
+リ
+ル
+レ
+ロ
+ワ
+ン
+・
+ー
+一
+三
+上
+下
+不
+世
+中
+主
+久
+之
+也
+事
+二
+五
+井
+京
+人
+亻
+仁
+介
+代
+仮
+伊
+会
+佐
+侍
+保
+信
+健
+元
+光
+八
+公
+内
+出
+分
+前
+劉
+力
+加
+勝
+北
+区
+十
+千
+南
+博
+原
+口
+古
+史
+司
+合
+吉
+同
+名
+和
+囗
+四
+国
+國
+土
+地
+坂
+城
+堂
+場
+士
+夏
+外
+大
+天
+太
+夫
+奈
+女
+子
+学
+宀
+宇
+安
+宗
+定
+宣
+宮
+家
+宿
+寺
+將
+小
+尚
+山
+岡
+島
+崎
+川
+州
+巿
+帝
+平
+年
+幸
+广
+弘
+張
+彳
+後
+御
+德
+心
+忄
+志
+忠
+愛
+成
+我
+戦
+戸
+手
+扌
+政
+文
+新
+方
+日
+明
+星
+春
+昭
+智
+曲
+書
+月
+有
+朝
+木
+本
+李
+村
+東
+松
+林
+森
+楊
+樹
+橋
+歌
+止
+正
+武
+比
+氏
+民
+水
+氵
+氷
+永
+江
+沢
+河
+治
+法
+海
+清
+漢
+瀬
+火
+版
+犬
+王
+生
+田
+男
+疒
+発
+白
+的
+皇
+目
+相
+省
+真
+石
+示
+社
+神
+福
+禾
+秀
+秋
+空
+立
+章
+竹
+糹
+美
+義
+耳
+良
+艹
+花
+英
+華
+葉
+藤
+行
+街
+西
+見
+訁
+語
+谷
+貝
+貴
+車
+軍
+辶
+道
+郎
+郡
+部
+都
+里
+野
+金
+鈴
+镇
+長
+門
+間
+阝
+阿
+陳
+陽
+雄
+青
+面
+風
+食
+香
+馬
+高
+龍
+龸
+fi
+fl
+!
+(
+)
+,
+-
+.
+/
+:
+?
+~
+the
+of
+and
+in
+to
+was
+he
+is
+as
+for
+on
+with
+that
+it
+his
+by
+at
+from
+her
+##s
+she
+you
+had
+an
+were
+but
+be
+this
+are
+not
+my
+they
+one
+which
+or
+have
+him
+me
+first
+all
+also
+their
+has
+up
+who
+out
+been
+when
+after
+there
+into
+new
+two
+its
+##a
+time
+would
+no
+what
+about
+said
+we
+over
+then
+other
+so
+more
+##e
+can
+if
+like
+back
+them
+only
+some
+could
+##i
+where
+just
+##ing
+during
+before
+##n
+do
+##o
+made
+school
+through
+than
+now
+years
+most
+world
+may
+between
+down
+well
+three
+##d
+year
+while
+will
+##ed
+##r
+##y
+later
+##t
+city
+under
+around
+did
+such
+being
+used
+state
+people
+part
+know
+against
+your
+many
+second
+university
+both
+national
+##er
+these
+don
+known
+off
+way
+until
+re
+how
+even
+get
+head
+...
+didn
+##ly
+team
+american
+because
+de
+##l
+born
+united
+film
+since
+still
+long
+work
+south
+us
+became
+any
+high
+again
+day
+family
+see
+right
+man
+eyes
+house
+season
+war
+states
+including
+took
+life
+north
+same
+each
+called
+name
+much
+place
+however
+go
+four
+group
+another
+found
+won
+area
+here
+going
+10
+away
+series
+left
+home
+music
+best
+make
+hand
+number
+company
+several
+never
+last
+john
+000
+very
+album
+take
+end
+good
+too
+following
+released
+game
+played
+little
+began
+district
+##m
+old
+want
+those
+side
+held
+own
+early
+county
+ll
+league
+use
+west
+##u
+face
+think
+##es
+2010
+government
+##h
+march
+came
+small
+general
+town
+june
+##on
+line
+based
+something
+##k
+september
+thought
+looked
+along
+international
+2011
+air
+july
+club
+went
+january
+october
+our
+august
+april
+york
+12
+few
+2012
+2008
+east
+show
+member
+college
+2009
+father
+public
+##us
+come
+men
+five
+set
+station
+church
+##c
+next
+former
+november
+room
+party
+located
+december
+2013
+age
+got
+2007
+##g
+system
+let
+love
+2006
+though
+every
+2014
+look
+song
+water
+century
+without
+body
+black
+night
+within
+great
+women
+single
+ve
+building
+large
+population
+river
+named
+band
+white
+started
+##an
+once
+15
+20
+should
+18
+2015
+service
+top
+built
+british
+open
+death
+king
+moved
+local
+times
+children
+february
+book
+why
+11
+door
+need
+president
+order
+final
+road
+wasn
+although
+due
+major
+died
+village
+third
+knew
+2016
+asked
+turned
+st
+wanted
+say
+##p
+together
+received
+main
+son
+served
+different
+##en
+behind
+himself
+felt
+members
+power
+football
+law
+voice
+play
+##in
+near
+park
+history
+30
+having
+2005
+16
+##man
+saw
+mother
+##al
+army
+point
+front
+help
+english
+street
+art
+late
+hands
+games
+award
+##ia
+young
+14
+put
+published
+country
+division
+across
+told
+13
+often
+ever
+french
+london
+center
+six
+red
+2017
+led
+days
+include
+light
+25
+find
+tell
+among
+species
+really
+according
+central
+half
+2004
+form
+original
+gave
+office
+making
+enough
+lost
+full
+opened
+must
+included
+live
+given
+german
+player
+run
+business
+woman
+community
+cup
+might
+million
+land
+2000
+court
+development
+17
+short
+round
+ii
+km
+seen
+class
+story
+always
+become
+sure
+research
+almost
+director
+council
+la
+##2
+career
+things
+using
+island
+##z
+couldn
+car
+##is
+24
+close
+force
+##1
+better
+free
+support
+control
+field
+students
+2003
+education
+married
+##b
+nothing
+worked
+others
+record
+big
+inside
+level
+anything
+continued
+give
+james
+##3
+military
+established
+non
+returned
+feel
+does
+title
+written
+thing
+feet
+william
+far
+co
+association
+hard
+already
+2002
+##ra
+championship
+human
+western
+100
+##na
+department
+hall
+role
+various
+production
+21
+19
+heart
+2001
+living
+fire
+version
+##ers
+##f
+television
+royal
+##4
+produced
+working
+act
+case
+society
+region
+present
+radio
+period
+looking
+least
+total
+keep
+england
+wife
+program
+per
+brother
+mind
+special
+22
+##le
+am
+works
+soon
+##6
+political
+george
+services
+taken
+created
+##7
+further
+able
+reached
+david
+union
+joined
+upon
+done
+important
+social
+information
+either
+##ic
+##x
+appeared
+position
+ground
+lead
+rock
+dark
+election
+23
+board
+france
+hair
+course
+arms
+site
+police
+girl
+instead
+real
+sound
+##v
+words
+moment
+##te
+someone
+##8
+summer
+project
+announced
+san
+less
+wrote
+past
+followed
+##5
+blue
+founded
+al
+finally
+india
+taking
+records
+america
+##ne
+1999
+design
+considered
+northern
+god
+stop
+battle
+toward
+european
+outside
+described
+track
+today
+playing
+language
+28
+call
+26
+heard
+professional
+low
+australia
+miles
+california
+win
+yet
+green
+##ie
+trying
+blood
+##ton
+southern
+science
+maybe
+everything
+match
+square
+27
+mouth
+video
+race
+recorded
+leave
+above
+##9
+daughter
+points
+space
+1998
+museum
+change
+middle
+common
+##0
+move
+tv
+post
+##ta
+lake
+seven
+tried
+elected
+closed
+ten
+paul
+minister
+##th
+months
+start
+chief
+return
+canada
+person
+sea
+release
+similar
+modern
+brought
+rest
+hit
+formed
+mr
+##la
+1997
+floor
+event
+doing
+thomas
+1996
+robert
+care
+killed
+training
+star
+week
+needed
+turn
+finished
+railway
+rather
+news
+health
+sent
+example
+ran
+term
+michael
+coming
+currently
+yes
+forces
+despite
+gold
+areas
+50
+stage
+fact
+29
+dead
+says
+popular
+2018
+originally
+germany
+probably
+developed
+result
+pulled
+friend
+stood
+money
+running
+mi
+signed
+word
+songs
+child
+eventually
+met
+tour
+average
+teams
+minutes
+festival
+current
+deep
+kind
+1995
+decided
+usually
+eastern
+seemed
+##ness
+episode
+bed
+added
+table
+indian
+private
+charles
+route
+available
+idea
+throughout
+centre
+addition
+appointed
+style
+1994
+books
+eight
+construction
+press
+mean
+wall
+friends
+remained
+schools
+study
+##ch
+##um
+institute
+oh
+chinese
+sometimes
+events
+possible
+1992
+australian
+type
+brown
+forward
+talk
+process
+food
+debut
+seat
+performance
+committee
+features
+character
+arts
+herself
+else
+lot
+strong
+russian
+range
+hours
+peter
+arm
+##da
+morning
+dr
+sold
+##ry
+quickly
+directed
+1993
+guitar
+china
+##w
+31
+list
+##ma
+performed
+media
+uk
+players
+smile
+##rs
+myself
+40
+placed
+coach
+province
+towards
+wouldn
+leading
+whole
+boy
+official
+designed
+grand
+census
+##el
+europe
+attack
+japanese
+henry
+1991
+##re
+##os
+cross
+getting
+alone
+action
+lower
+network
+wide
+washington
+japan
+1990
+hospital
+believe
+changed
+sister
+##ar
+hold
+gone
+sir
+hadn
+ship
+##ka
+studies
+academy
+shot
+rights
+below
+base
+bad
+involved
+kept
+largest
+##ist
+bank
+future
+especially
+beginning
+mark
+movement
+section
+female
+magazine
+plan
+professor
+lord
+longer
+##ian
+sat
+walked
+hill
+actually
+civil
+energy
+model
+families
+size
+thus
+aircraft
+completed
+includes
+data
+captain
+##or
+fight
+vocals
+featured
+richard
+bridge
+fourth
+1989
+officer
+stone
+hear
+##ism
+means
+medical
+groups
+management
+self
+lips
+competition
+entire
+lived
+technology
+leaving
+federal
+tournament
+bit
+passed
+hot
+independent
+awards
+kingdom
+mary
+spent
+fine
+doesn
+reported
+##ling
+jack
+fall
+raised
+itself
+stay
+true
+studio
+1988
+sports
+replaced
+paris
+systems
+saint
+leader
+theatre
+whose
+market
+capital
+parents
+spanish
+canadian
+earth
+##ity
+cut
+degree
+writing
+bay
+christian
+awarded
+natural
+higher
+bill
+##as
+coast
+provided
+previous
+senior
+ft
+valley
+organization
+stopped
+onto
+countries
+parts
+conference
+queen
+security
+interest
+saying
+allowed
+master
+earlier
+phone
+matter
+smith
+winning
+try
+happened
+moving
+campaign
+los
+##ley
+breath
+nearly
+mid
+1987
+certain
+girls
+date
+italian
+african
+standing
+fell
+artist
+##ted
+shows
+deal
+mine
+industry
+1986
+##ng
+everyone
+republic
+provide
+collection
+library
+student
+##ville
+primary
+owned
+older
+via
+heavy
+1st
+makes
+##able
+attention
+anyone
+africa
+##ri
+stated
+length
+ended
+fingers
+command
+staff
+skin
+foreign
+opening
+governor
+okay
+medal
+kill
+sun
+cover
+job
+1985
+introduced
+chest
+hell
+feeling
+##ies
+success
+meet
+reason
+standard
+meeting
+novel
+1984
+trade
+source
+buildings
+##land
+rose
+guy
+goal
+##ur
+chapter
+native
+husband
+previously
+unit
+limited
+entered
+weeks
+producer
+operations
+mountain
+takes
+covered
+forced
+related
+roman
+complete
+successful
+key
+texas
+cold
+##ya
+channel
+1980
+traditional
+films
+dance
+clear
+approximately
+500
+nine
+van
+prince
+question
+active
+tracks
+ireland
+regional
+silver
+author
+personal
+sense
+operation
+##ine
+economic
+1983
+holding
+twenty
+isbn
+additional
+speed
+hour
+edition
+regular
+historic
+places
+whom
+shook
+movie
+km²
+secretary
+prior
+report
+chicago
+read
+foundation
+view
+engine
+scored
+1982
+units
+ask
+airport
+property
+ready
+immediately
+lady
+month
+listed
+contract
+##de
+manager
+themselves
+lines
+##ki
+navy
+writer
+meant
+##ts
+runs
+##ro
+practice
+championships
+singer
+glass
+commission
+required
+forest
+starting
+culture
+generally
+giving
+access
+attended
+test
+couple
+stand
+catholic
+martin
+caught
+executive
+##less
+eye
+##ey
+thinking
+chair
+quite
+shoulder
+1979
+hope
+decision
+plays
+defeated
+municipality
+whether
+structure
+offered
+slowly
+pain
+ice
+direction
+##ion
+paper
+mission
+1981
+mostly
+200
+noted
+individual
+managed
+nature
+lives
+plant
+##ha
+helped
+except
+studied
+computer
+figure
+relationship
+issue
+significant
+loss
+die
+smiled
+gun
+ago
+highest
+1972
+##am
+male
+bring
+goals
+mexico
+problem
+distance
+commercial
+completely
+location
+annual
+famous
+drive
+1976
+neck
+1978
+surface
+caused
+italy
+understand
+greek
+highway
+wrong
+hotel
+comes
+appearance
+joseph
+double
+issues
+musical
+companies
+castle
+income
+review
+assembly
+bass
+initially
+parliament
+artists
+experience
+1974
+particular
+walk
+foot
+engineering
+talking
+window
+dropped
+##ter
+miss
+baby
+boys
+break
+1975
+stars
+edge
+remember
+policy
+carried
+train
+stadium
+bar
+sex
+angeles
+evidence
+##ge
+becoming
+assistant
+soviet
+1977
+upper
+step
+wing
+1970
+youth
+financial
+reach
+##ll
+actor
+numerous
+##se
+##st
+nodded
+arrived
+##ation
+minute
+##nt
+believed
+sorry
+complex
+beautiful
+victory
+associated
+temple
+1968
+1973
+chance
+perhaps
+metal
+##son
+1945
+bishop
+##et
+lee
+launched
+particularly
+tree
+le
+retired
+subject
+prize
+contains
+yeah
+theory
+empire
+##ce
+suddenly
+waiting
+trust
+recording
+##to
+happy
+terms
+camp
+champion
+1971
+religious
+pass
+zealand
+names
+2nd
+port
+ancient
+tom
+corner
+represented
+watch
+legal
+anti
+justice
+cause
+watched
+brothers
+45
+material
+changes
+simply
+response
+louis
+fast
+##ting
+answer
+60
+historical
+1969
+stories
+straight
+create
+feature
+increased
+rate
+administration
+virginia
+el
+activities
+cultural
+overall
+winner
+programs
+basketball
+legs
+guard
+beyond
+cast
+doctor
+mm
+flight
+results
+remains
+cost
+effect
+winter
+##ble
+larger
+islands
+problems
+chairman
+grew
+commander
+isn
+1967
+pay
+failed
+selected
+hurt
+fort
+box
+regiment
+majority
+journal
+35
+edward
+plans
+##ke
+##ni
+shown
+pretty
+irish
+characters
+directly
+scene
+likely
+operated
+allow
+spring
+##j
+junior
+matches
+looks
+mike
+houses
+fellow
+##tion
+beach
+marriage
+##ham
+##ive
+rules
+oil
+65
+florida
+expected
+nearby
+congress
+sam
+peace
+recent
+iii
+wait
+subsequently
+cell
+##do
+variety
+serving
+agreed
+please
+poor
+joe
+pacific
+attempt
+wood
+democratic
+piece
+prime
+##ca
+rural
+mile
+touch
+appears
+township
+1964
+1966
+soldiers
+##men
+##ized
+1965
+pennsylvania
+closer
+fighting
+claimed
+score
+jones
+physical
+editor
+##ous
+filled
+genus
+specific
+sitting
+super
+mom
+##va
+therefore
+supported
+status
+fear
+cases
+store
+meaning
+wales
+minor
+spain
+tower
+focus
+vice
+frank
+follow
+parish
+separate
+golden
+horse
+fifth
+remaining
+branch
+32
+presented
+stared
+##id
+uses
+secret
+forms
+##co
+baseball
+exactly
+##ck
+choice
+note
+discovered
+travel
+composed
+truth
+russia
+ball
+color
+kiss
+dad
+wind
+continue
+ring
+referred
+numbers
+digital
+greater
+##ns
+metres
+slightly
+direct
+increase
+1960
+responsible
+crew
+rule
+trees
+troops
+##no
+broke
+goes
+individuals
+hundred
+weight
+creek
+sleep
+memory
+defense
+provides
+ordered
+code
+value
+jewish
+windows
+1944
+safe
+judge
+whatever
+corps
+realized
+growing
+pre
+##ga
+cities
+alexander
+gaze
+lies
+spread
+scott
+letter
+showed
+situation
+mayor
+transport
+watching
+workers
+extended
+##li
+expression
+normal
+##ment
+chart
+multiple
+border
+##ba
+host
+##ner
+daily
+mrs
+walls
+piano
+##ko
+heat
+cannot
+##ate
+earned
+products
+drama
+era
+authority
+seasons
+join
+grade
+##io
+sign
+difficult
+machine
+1963
+territory
+mainly
+##wood
+stations
+squadron
+1962
+stepped
+iron
+19th
+##led
+serve
+appear
+sky
+speak
+broken
+charge
+knowledge
+kilometres
+removed
+ships
+article
+campus
+simple
+##ty
+pushed
+britain
+##ve
+leaves
+recently
+cd
+soft
+boston
+latter
+easy
+acquired
+poland
+##sa
+quality
+officers
+presence
+planned
+nations
+mass
+broadcast
+jean
+share
+image
+influence
+wild
+offer
+emperor
+electric
+reading
+headed
+ability
+promoted
+yellow
+ministry
+1942
+throat
+smaller
+politician
+##by
+latin
+spoke
+cars
+williams
+males
+lack
+pop
+80
+##ier
+acting
+seeing
+consists
+##ti
+estate
+1961
+pressure
+johnson
+newspaper
+jr
+chris
+olympics
+online
+conditions
+beat
+elements
+walking
+vote
+##field
+needs
+carolina
+text
+featuring
+global
+block
+shirt
+levels
+francisco
+purpose
+females
+et
+dutch
+duke
+ahead
+gas
+twice
+safety
+serious
+turning
+highly
+lieutenant
+firm
+maria
+amount
+mixed
+daniel
+proposed
+perfect
+agreement
+affairs
+3rd
+seconds
+contemporary
+paid
+1943
+prison
+save
+kitchen
+label
+administrative
+intended
+constructed
+academic
+nice
+teacher
+races
+1956
+formerly
+corporation
+ben
+nation
+issued
+shut
+1958
+drums
+housing
+victoria
+seems
+opera
+1959
+graduated
+function
+von
+mentioned
+picked
+build
+recognized
+shortly
+protection
+picture
+notable
+exchange
+elections
+1980s
+loved
+percent
+racing
+fish
+elizabeth
+garden
+volume
+hockey
+1941
+beside
+settled
+##ford
+1940
+competed
+replied
+drew
+1948
+actress
+marine
+scotland
+steel
+glanced
+farm
+steve
+1957
+risk
+tonight
+positive
+magic
+singles
+effects
+gray
+screen
+dog
+##ja
+residents
+bus
+sides
+none
+secondary
+literature
+polish
+destroyed
+flying
+founder
+households
+1939
+lay
+reserve
+usa
+gallery
+##ler
+1946
+industrial
+younger
+approach
+appearances
+urban
+ones
+1950
+finish
+avenue
+powerful
+fully
+growth
+page
+honor
+jersey
+projects
+advanced
+revealed
+basic
+90
+infantry
+pair
+equipment
+visit
+33
+evening
+search
+grant
+effort
+solo
+treatment
+buried
+republican
+primarily
+bottom
+owner
+1970s
+israel
+gives
+jim
+dream
+bob
+remain
+spot
+70
+notes
+produce
+champions
+contact
+ed
+soul
+accepted
+ways
+del
+##ally
+losing
+split
+price
+capacity
+basis
+trial
+questions
+##ina
+1955
+20th
+guess
+officially
+memorial
+naval
+initial
+##ization
+whispered
+median
+engineer
+##ful
+sydney
+##go
+columbia
+strength
+300
+1952
+tears
+senate
+00
+card
+asian
+agent
+1947
+software
+44
+draw
+warm
+supposed
+com
+pro
+##il
+transferred
+leaned
+##at
+candidate
+escape
+mountains
+asia
+potential
+activity
+entertainment
+seem
+traffic
+jackson
+murder
+36
+slow
+product
+orchestra
+haven
+agency
+bbc
+taught
+website
+comedy
+unable
+storm
+planning
+albums
+rugby
+environment
+scientific
+grabbed
+protect
+##hi
+boat
+typically
+1954
+1953
+damage
+principal
+divided
+dedicated
+mount
+ohio
+##berg
+pick
+fought
+driver
+##der
+empty
+shoulders
+sort
+thank
+berlin
+prominent
+account
+freedom
+necessary
+efforts
+alex
+headquarters
+follows
+alongside
+des
+simon
+andrew
+suggested
+operating
+learning
+steps
+1949
+sweet
+technical
+begin
+easily
+34
+teeth
+speaking
+settlement
+scale
+##sh
+renamed
+ray
+max
+enemy
+semi
+joint
+compared
+##rd
+scottish
+leadership
+analysis
+offers
+georgia
+pieces
+captured
+animal
+deputy
+guest
+organized
+##lin
+tony
+combined
+method
+challenge
+1960s
+huge
+wants
+battalion
+sons
+rise
+crime
+types
+facilities
+telling
+path
+1951
+platform
+sit
+1990s
+##lo
+tells
+assigned
+rich
+pull
+##ot
+commonly
+alive
+##za
+letters
+concept
+conducted
+wearing
+happen
+bought
+becomes
+holy
+gets
+ocean
+defeat
+languages
+purchased
+coffee
+occurred
+titled
+##q
+declared
+applied
+sciences
+concert
+sounds
+jazz
+brain
+##me
+painting
+fleet
+tax
+nick
+##ius
+michigan
+count
+animals
+leaders
+episodes
+##line
+content
+##den
+birth
+##it
+clubs
+64
+palace
+critical
+refused
+fair
+leg
+laughed
+returning
+surrounding
+participated
+formation
+lifted
+pointed
+connected
+rome
+medicine
+laid
+taylor
+santa
+powers
+adam
+tall
+shared
+focused
+knowing
+yards
+entrance
+falls
+##wa
+calling
+##ad
+sources
+chosen
+beneath
+resources
+yard
+##ite
+nominated
+silence
+zone
+defined
+##que
+gained
+thirty
+38
+bodies
+moon
+##ard
+adopted
+christmas
+widely
+register
+apart
+iran
+premier
+serves
+du
+unknown
+parties
+##les
+generation
+##ff
+continues
+quick
+fields
+brigade
+quiet
+teaching
+clothes
+impact
+weapons
+partner
+flat
+theater
+supreme
+1938
+37
+relations
+##tor
+plants
+suffered
+1936
+wilson
+kids
+begins
+##age
+1918
+seats
+armed
+internet
+models
+worth
+laws
+400
+communities
+classes
+background
+knows
+thanks
+quarter
+reaching
+humans
+carry
+killing
+format
+kong
+hong
+setting
+75
+architecture
+disease
+railroad
+inc
+possibly
+wish
+arthur
+thoughts
+harry
+doors
+density
+##di
+crowd
+illinois
+stomach
+tone
+unique
+reports
+anyway
+##ir
+liberal
+der
+vehicle
+thick
+dry
+drug
+faced
+largely
+facility
+theme
+holds
+creation
+strange
+colonel
+##mi
+revolution
+bell
+politics
+turns
+silent
+rail
+relief
+independence
+combat
+shape
+write
+determined
+sales
+learned
+4th
+finger
+oxford
+providing
+1937
+heritage
+fiction
+situated
+designated
+allowing
+distribution
+hosted
+##est
+sight
+interview
+estimated
+reduced
+##ria
+toronto
+footballer
+keeping
+guys
+damn
+claim
+motion
+sport
+sixth
+stayed
+##ze
+en
+rear
+receive
+handed
+twelve
+dress
+audience
+granted
+brazil
+##well
+spirit
+##ated
+noticed
+etc
+olympic
+representative
+eric
+tight
+trouble
+reviews
+drink
+vampire
+missing
+roles
+ranked
+newly
+household
+finals
+wave
+critics
+##ee
+phase
+massachusetts
+pilot
+unlike
+philadelphia
+bright
+guns
+crown
+organizations
+roof
+42
+respectively
+clearly
+tongue
+marked
+circle
+fox
+korea
+bronze
+brian
+expanded
+sexual
+supply
+yourself
+inspired
+labour
+fc
+##ah
+reference
+vision
+draft
+connection
+brand
+reasons
+1935
+classic
+driving
+trip
+jesus
+cells
+entry
+1920
+neither
+trail
+claims
+atlantic
+orders
+labor
+nose
+afraid
+identified
+intelligence
+calls
+cancer
+attacked
+passing
+stephen
+positions
+imperial
+grey
+jason
+39
+sunday
+48
+swedish
+avoid
+extra
+uncle
+message
+covers
+allows
+surprise
+materials
+fame
+hunter
+##ji
+1930
+citizens
+figures
+davis
+environmental
+confirmed
+shit
+titles
+di
+performing
+difference
+acts
+attacks
+##ov
+existing
+votes
+opportunity
+nor
+shop
+entirely
+trains
+opposite
+pakistan
+##pa
+develop
+resulted
+representatives
+actions
+reality
+pressed
+##ish
+barely
+wine
+conversation
+faculty
+northwest
+ends
+documentary
+nuclear
+stock
+grace
+sets
+eat
+alternative
+##ps
+bag
+resulting
+creating
+surprised
+cemetery
+1919
+drop
+finding
+sarah
+cricket
+streets
+tradition
+ride
+1933
+exhibition
+target
+ear
+explained
+rain
+composer
+injury
+apartment
+municipal
+educational
+occupied
+netherlands
+clean
+billion
+constitution
+learn
+1914
+maximum
+classical
+francis
+lose
+opposition
+jose
+ontario
+bear
+core
+hills
+rolled
+ending
+drawn
+permanent
+fun
+##tes
+##lla
+lewis
+sites
+chamber
+ryan
+##way
+scoring
+height
+1934
+##house
+lyrics
+staring
+55
+officials
+1917
+snow
+oldest
+##tic
+orange
+##ger
+qualified
+interior
+apparently
+succeeded
+thousand
+dinner
+lights
+existence
+fans
+heavily
+41
+greatest
+conservative
+send
+bowl
+plus
+enter
+catch
+##un
+economy
+duty
+1929
+speech
+authorities
+princess
+performances
+versions
+shall
+graduate
+pictures
+effective
+remembered
+poetry
+desk
+crossed
+starring
+starts
+passenger
+sharp
+##ant
+acres
+ass
+weather
+falling
+rank
+fund
+supporting
+check
+adult
+publishing
+heads
+cm
+southeast
+lane
+##burg
+application
+bc
+##ura
+les
+condition
+transfer
+prevent
+display
+ex
+regions
+earl
+federation
+cool
+relatively
+answered
+besides
+1928
+obtained
+portion
+##town
+mix
+##ding
+reaction
+liked
+dean
+express
+peak
+1932
+##tte
+counter
+religion
+chain
+rare
+miller
+convention
+aid
+lie
+vehicles
+mobile
+perform
+squad
+wonder
+lying
+crazy
+sword
+##ping
+attempted
+centuries
+weren
+philosophy
+category
+##ize
+anna
+interested
+47
+sweden
+wolf
+frequently
+abandoned
+kg
+literary
+alliance
+task
+entitled
+##ay
+threw
+promotion
+factory
+tiny
+soccer
+visited
+matt
+fm
+achieved
+52
+defence
+internal
+persian
+43
+methods
+##ging
+arrested
+otherwise
+cambridge
+programming
+villages
+elementary
+districts
+rooms
+criminal
+conflict
+worry
+trained
+1931
+attempts
+waited
+signal
+bird
+truck
+subsequent
+programme
+##ol
+ad
+49
+communist
+details
+faith
+sector
+patrick
+carrying
+laugh
+##ss
+controlled
+korean
+showing
+origin
+fuel
+evil
+1927
+##ent
+brief
+identity
+darkness
+address
+pool
+missed
+publication
+web
+planet
+ian
+anne
+wings
+invited
+##tt
+briefly
+standards
+kissed
+##be
+ideas
+climate
+causing
+walter
+worse
+albert
+articles
+winners
+desire
+aged
+northeast
+dangerous
+gate
+doubt
+1922
+wooden
+multi
+##ky
+poet
+rising
+funding
+46
+communications
+communication
+violence
+copies
+prepared
+ford
+investigation
+skills
+1924
+pulling
+electronic
+##ak
+##ial
+##han
+containing
+ultimately
+offices
+singing
+understanding
+restaurant
+tomorrow
+fashion
+christ
+ward
+da
+pope
+stands
+5th
+flow
+studios
+aired
+commissioned
+contained
+exist
+fresh
+americans
+##per
+wrestling
+approved
+kid
+employed
+respect
+suit
+1925
+angel
+asking
+increasing
+frame
+angry
+selling
+1950s
+thin
+finds
+##nd
+temperature
+statement
+ali
+explain
+inhabitants
+towns
+extensive
+narrow
+51
+jane
+flowers
+images
+promise
+somewhere
+object
+fly
+closely
+##ls
+1912
+bureau
+cape
+1926
+weekly
+presidential
+legislative
+1921
+##ai
+##au
+launch
+founding
+##ny
+978
+##ring
+artillery
+strike
+un
+institutions
+roll
+writers
+landing
+chose
+kevin
+anymore
+pp
+##ut
+attorney
+fit
+dan
+billboard
+receiving
+agricultural
+breaking
+sought
+dave
+admitted
+lands
+mexican
+##bury
+charlie
+specifically
+hole
+iv
+howard
+credit
+moscow
+roads
+accident
+1923
+proved
+wear
+struck
+hey
+guards
+stuff
+slid
+expansion
+1915
+cat
+anthony
+##kin
+melbourne
+opposed
+sub
+southwest
+architect
+failure
+plane
+1916
+##ron
+map
+camera
+tank
+listen
+regarding
+wet
+introduction
+metropolitan
+link
+ep
+fighter
+inch
+grown
+gene
+anger
+fixed
+buy
+dvd
+khan
+domestic
+worldwide
+chapel
+mill
+functions
+examples
+##head
+developing
+1910
+turkey
+hits
+pocket
+antonio
+papers
+grow
+unless
+circuit
+18th
+concerned
+attached
+journalist
+selection
+journey
+converted
+provincial
+painted
+hearing
+aren
+bands
+negative
+aside
+wondered
+knight
+lap
+survey
+ma
+##ow
+noise
+billy
+##ium
+shooting
+guide
+bedroom
+priest
+resistance
+motor
+homes
+sounded
+giant
+##mer
+150
+scenes
+equal
+comic
+patients
+hidden
+solid
+actual
+bringing
+afternoon
+touched
+funds
+wedding
+consisted
+marie
+canal
+sr
+kim
+treaty
+turkish
+recognition
+residence
+cathedral
+broad
+knees
+incident
+shaped
+fired
+norwegian
+handle
+cheek
+contest
+represent
+##pe
+representing
+beauty
+##sen
+birds
+advantage
+emergency
+wrapped
+drawing
+notice
+pink
+broadcasting
+##ong
+somehow
+bachelor
+seventh
+collected
+registered
+establishment
+alan
+assumed
+chemical
+personnel
+roger
+retirement
+jeff
+portuguese
+wore
+tied
+device
+threat
+progress
+advance
+##ised
+banks
+hired
+manchester
+nfl
+teachers
+structures
+forever
+##bo
+tennis
+helping
+saturday
+sale
+applications
+junction
+hip
+incorporated
+neighborhood
+dressed
+ceremony
+##ds
+influenced
+hers
+visual
+stairs
+decades
+inner
+kansas
+hung
+hoped
+gain
+scheduled
+downtown
+engaged
+austria
+clock
+norway
+certainly
+pale
+protected
+1913
+victor
+employees
+plate
+putting
+surrounded
+##ists
+finishing
+blues
+tropical
+##ries
+minnesota
+consider
+philippines
+accept
+54
+retrieved
+1900
+concern
+anderson
+properties
+institution
+gordon
+successfully
+vietnam
+##dy
+backing
+outstanding
+muslim
+crossing
+folk
+producing
+usual
+demand
+occurs
+observed
+lawyer
+educated
+##ana
+kelly
+string
+pleasure
+budget
+items
+quietly
+colorado
+philip
+typical
+##worth
+derived
+600
+survived
+asks
+mental
+##ide
+56
+jake
+jews
+distinguished
+ltd
+1911
+sri
+extremely
+53
+athletic
+loud
+thousands
+worried
+shadow
+transportation
+horses
+weapon
+arena
+importance
+users
+tim
+objects
+contributed
+dragon
+douglas
+aware
+senator
+johnny
+jordan
+sisters
+engines
+flag
+investment
+samuel
+shock
+capable
+clark
+row
+wheel
+refers
+session
+familiar
+biggest
+wins
+hate
+maintained
+drove
+hamilton
+request
+expressed
+injured
+underground
+churches
+walker
+wars
+tunnel
+passes
+stupid
+agriculture
+softly
+cabinet
+regarded
+joining
+indiana
+##ea
+##ms
+push
+dates
+spend
+behavior
+woods
+protein
+gently
+chase
+morgan
+mention
+burning
+wake
+combination
+occur
+mirror
+leads
+jimmy
+indeed
+impossible
+singapore
+paintings
+covering
+##nes
+soldier
+locations
+attendance
+sell
+historian
+wisconsin
+invasion
+argued
+painter
+diego
+changing
+egypt
+##don
+experienced
+inches
+##ku
+missouri
+vol
+grounds
+spoken
+switzerland
+##gan
+reform
+rolling
+ha
+forget
+massive
+resigned
+burned
+allen
+tennessee
+locked
+values
+improved
+##mo
+wounded
+universe
+sick
+dating
+facing
+pack
+purchase
+user
+##pur
+moments
+##ul
+merged
+anniversary
+1908
+coal
+brick
+understood
+causes
+dynasty
+queensland
+establish
+stores
+crisis
+promote
+hoping
+views
+cards
+referee
+extension
+##si
+raise
+arizona
+improve
+colonial
+formal
+charged
+##rt
+palm
+lucky
+hide
+rescue
+faces
+95
+feelings
+candidates
+juan
+##ell
+goods
+6th
+courses
+weekend
+59
+luke
+cash
+fallen
+##om
+delivered
+affected
+installed
+carefully
+tries
+swiss
+hollywood
+costs
+lincoln
+responsibility
+##he
+shore
+file
+proper
+normally
+maryland
+assistance
+jump
+constant
+offering
+friendly
+waters
+persons
+realize
+contain
+trophy
+800
+partnership
+factor
+58
+musicians
+cry
+bound
+oregon
+indicated
+hero
+houston
+medium
+##ure
+consisting
+somewhat
+##ara
+57
+cycle
+##che
+beer
+moore
+frederick
+gotten
+eleven
+worst
+weak
+approached
+arranged
+chin
+loan
+universal
+bond
+fifteen
+pattern
+disappeared
+##ney
+translated
+##zed
+lip
+arab
+capture
+interests
+insurance
+##chi
+shifted
+cave
+prix
+warning
+sections
+courts
+coat
+plot
+smell
+feed
+golf
+favorite
+maintain
+knife
+vs
+voted
+degrees
+finance
+quebec
+opinion
+translation
+manner
+ruled
+operate
+productions
+choose
+musician
+discovery
+confused
+tired
+separated
+stream
+techniques
+committed
+attend
+ranking
+kings
+throw
+passengers
+measure
+horror
+fan
+mining
+sand
+danger
+salt
+calm
+decade
+dam
+require
+runner
+##ik
+rush
+associate
+greece
+##ker
+rivers
+consecutive
+matthew
+##ski
+sighed
+sq
+documents
+steam
+edited
+closing
+tie
+accused
+1905
+##ini
+islamic
+distributed
+directors
+organisation
+bruce
+7th
+breathing
+mad
+lit
+arrival
+concrete
+taste
+08
+composition
+shaking
+faster
+amateur
+adjacent
+stating
+1906
+twin
+flew
+##ran
+tokyo
+publications
+##tone
+obviously
+ridge
+storage
+1907
+carl
+pages
+concluded
+desert
+driven
+universities
+ages
+terminal
+sequence
+borough
+250
+constituency
+creative
+cousin
+economics
+dreams
+margaret
+notably
+reduce
+montreal
+mode
+17th
+ears
+saved
+jan
+vocal
+##ica
+1909
+andy
+##jo
+riding
+roughly
+threatened
+##ise
+meters
+meanwhile
+landed
+compete
+repeated
+grass
+czech
+regularly
+charges
+tea
+sudden
+appeal
+##ung
+solution
+describes
+pierre
+classification
+glad
+parking
+##ning
+belt
+physics
+99
+rachel
+add
+hungarian
+participate
+expedition
+damaged
+gift
+childhood
+85
+fifty
+##red
+mathematics
+jumped
+letting
+defensive
+mph
+##ux
+##gh
+testing
+##hip
+hundreds
+shoot
+owners
+matters
+smoke
+israeli
+kentucky
+dancing
+mounted
+grandfather
+emma
+designs
+profit
+argentina
+##gs
+truly
+li
+lawrence
+cole
+begun
+detroit
+willing
+branches
+smiling
+decide
+miami
+enjoyed
+recordings
+##dale
+poverty
+ethnic
+gay
+##bi
+gary
+arabic
+09
+accompanied
+##one
+##ons
+fishing
+determine
+residential
+acid
+##ary
+alice
+returns
+starred
+mail
+##ang
+jonathan
+strategy
+##ue
+net
+forty
+cook
+businesses
+equivalent
+commonwealth
+distinct
+ill
+##cy
+seriously
+##ors
+##ped
+shift
+harris
+replace
+rio
+imagine
+formula
+ensure
+##ber
+additionally
+scheme
+conservation
+occasionally
+purposes
+feels
+favor
+##and
+##ore
+1930s
+contrast
+hanging
+hunt
+movies
+1904
+instruments
+victims
+danish
+christopher
+busy
+demon
+sugar
+earliest
+colony
+studying
+balance
+duties
+##ks
+belgium
+slipped
+carter
+05
+visible
+stages
+iraq
+fifa
+##im
+commune
+forming
+zero
+07
+continuing
+talked
+counties
+legend
+bathroom
+option
+tail
+clay
+daughters
+afterwards
+severe
+jaw
+visitors
+##ded
+devices
+aviation
+russell
+kate
+##vi
+entering
+subjects
+##ino
+temporary
+swimming
+forth
+smooth
+ghost
+audio
+bush
+operates
+rocks
+movements
+signs
+eddie
+##tz
+ann
+voices
+honorary
+06
+memories
+dallas
+pure
+measures
+racial
+promised
+66
+harvard
+ceo
+16th
+parliamentary
+indicate
+benefit
+flesh
+dublin
+louisiana
+1902
+1901
+patient
+sleeping
+1903
+membership
+coastal
+medieval
+wanting
+element
+scholars
+rice
+62
+limit
+survive
+makeup
+rating
+definitely
+collaboration
+obvious
+##tan
+boss
+ms
+baron
+birthday
+linked
+soil
+diocese
+##lan
+ncaa
+##mann
+offensive
+shell
+shouldn
+waist
+##tus
+plain
+ross
+organ
+resolution
+manufacturing
+adding
+relative
+kennedy
+98
+whilst
+moth
+marketing
+gardens
+crash
+72
+heading
+partners
+credited
+carlos
+moves
+cable
+##zi
+marshall
+##out
+depending
+bottle
+represents
+rejected
+responded
+existed
+04
+jobs
+denmark
+lock
+##ating
+treated
+graham
+routes
+talent
+commissioner
+drugs
+secure
+tests
+reign
+restored
+photography
+##gi
+contributions
+oklahoma
+designer
+disc
+grin
+seattle
+robin
+paused
+atlanta
+unusual
+##gate
+praised
+las
+laughing
+satellite
+hungary
+visiting
+##sky
+interesting
+factors
+deck
+poems
+norman
+##water
+stuck
+speaker
+rifle
+domain
+premiered
+##her
+dc
+comics
+actors
+01
+reputation
+eliminated
+8th
+ceiling
+prisoners
+script
+##nce
+leather
+austin
+mississippi
+rapidly
+admiral
+parallel
+charlotte
+guilty
+tools
+gender
+divisions
+fruit
+##bs
+laboratory
+nelson
+fantasy
+marry
+rapid
+aunt
+tribe
+requirements
+aspects
+suicide
+amongst
+adams
+bone
+ukraine
+abc
+kick
+sees
+edinburgh
+clothing
+column
+rough
+gods
+hunting
+broadway
+gathered
+concerns
+##ek
+spending
+ty
+12th
+snapped
+requires
+solar
+bones
+cavalry
+##tta
+iowa
+drinking
+waste
+index
+franklin
+charity
+thompson
+stewart
+tip
+flash
+landscape
+friday
+enjoy
+singh
+poem
+listening
+##back
+eighth
+fred
+differences
+adapted
+bomb
+ukrainian
+surgery
+corporate
+masters
+anywhere
+##more
+waves
+odd
+sean
+portugal
+orleans
+dick
+debate
+kent
+eating
+puerto
+cleared
+96
+expect
+cinema
+97
+guitarist
+blocks
+electrical
+agree
+involving
+depth
+dying
+panel
+struggle
+##ged
+peninsula
+adults
+novels
+emerged
+vienna
+metro
+debuted
+shoes
+tamil
+songwriter
+meets
+prove
+beating
+instance
+heaven
+scared
+sending
+marks
+artistic
+passage
+superior
+03
+significantly
+shopping
+##tive
+retained
+##izing
+malaysia
+technique
+cheeks
+##ola
+warren
+maintenance
+destroy
+extreme
+allied
+120
+appearing
+##yn
+fill
+advice
+alabama
+qualifying
+policies
+cleveland
+hat
+battery
+smart
+authors
+10th
+soundtrack
+acted
+dated
+lb
+glance
+equipped
+coalition
+funny
+outer
+ambassador
+roy
+possibility
+couples
+campbell
+dna
+loose
+ethan
+supplies
+1898
+gonna
+88
+monster
+##res
+shake
+agents
+frequency
+springs
+dogs
+practices
+61
+gang
+plastic
+easier
+suggests
+gulf
+blade
+exposed
+colors
+industries
+markets
+pan
+nervous
+electoral
+charts
+legislation
+ownership
+##idae
+mac
+appointment
+shield
+copy
+assault
+socialist
+abbey
+monument
+license
+throne
+employment
+jay
+93
+replacement
+charter
+cloud
+powered
+suffering
+accounts
+oak
+connecticut
+strongly
+wright
+colour
+crystal
+13th
+context
+welsh
+networks
+voiced
+gabriel
+jerry
+##cing
+forehead
+mp
+##ens
+manage
+schedule
+totally
+remix
+##ii
+forests
+occupation
+print
+nicholas
+brazilian
+strategic
+vampires
+engineers
+76
+roots
+seek
+correct
+instrumental
+und
+alfred
+backed
+hop
+##des
+stanley
+robinson
+traveled
+wayne
+welcome
+austrian
+achieve
+67
+exit
+rates
+1899
+strip
+whereas
+##cs
+sing
+deeply
+adventure
+bobby
+rick
+jamie
+careful
+components
+cap
+useful
+personality
+knee
+##shi
+pushing
+hosts
+02
+protest
+ca
+ottoman
+symphony
+##sis
+63
+boundary
+1890
+processes
+considering
+considerable
+tons
+##work
+##ft
+##nia
+cooper
+trading
+dear
+conduct
+91
+illegal
+apple
+revolutionary
+holiday
+definition
+harder
+##van
+jacob
+circumstances
+destruction
+##lle
+popularity
+grip
+classified
+liverpool
+donald
+baltimore
+flows
+seeking
+honour
+approval
+92
+mechanical
+till
+happening
+statue
+critic
+increasingly
+immediate
+describe
+commerce
+stare
+##ster
+indonesia
+meat
+rounds
+boats
+baker
+orthodox
+depression
+formally
+worn
+naked
+claire
+muttered
+sentence
+11th
+emily
+document
+77
+criticism
+wished
+vessel
+spiritual
+bent
+virgin
+parker
+minimum
+murray
+lunch
+danny
+printed
+compilation
+keyboards
+false
+blow
+belonged
+68
+raising
+78
+cutting
+##board
+pittsburgh
+##up
+9th
+shadows
+81
+hated
+indigenous
+jon
+15th
+barry
+scholar
+ah
+##zer
+oliver
+##gy
+stick
+susan
+meetings
+attracted
+spell
+romantic
+##ver
+ye
+1895
+photo
+demanded
+customers
+##ac
+1896
+logan
+revival
+keys
+modified
+commanded
+jeans
+##ious
+upset
+raw
+phil
+detective
+hiding
+resident
+vincent
+##bly
+experiences
+diamond
+defeating
+coverage
+lucas
+external
+parks
+franchise
+helen
+bible
+successor
+percussion
+celebrated
+il
+lift
+profile
+clan
+romania
+##ied
+mills
+##su
+nobody
+achievement
+shrugged
+fault
+1897
+rhythm
+initiative
+breakfast
+carbon
+700
+69
+lasted
+violent
+74
+wound
+ken
+killer
+gradually
+filmed
+°c
+dollars
+processing
+94
+remove
+criticized
+guests
+sang
+chemistry
+##vin
+legislature
+disney
+##bridge
+uniform
+escaped
+integrated
+proposal
+purple
+denied
+liquid
+karl
+influential
+morris
+nights
+stones
+intense
+experimental
+twisted
+71
+84
+##ld
+pace
+nazi
+mitchell
+ny
+blind
+reporter
+newspapers
+14th
+centers
+burn
+basin
+forgotten
+surviving
+filed
+collections
+monastery
+losses
+manual
+couch
+description
+appropriate
+merely
+tag
+missions
+sebastian
+restoration
+replacing
+triple
+73
+elder
+julia
+warriors
+benjamin
+julian
+convinced
+stronger
+amazing
+declined
+versus
+merchant
+happens
+output
+finland
+bare
+barbara
+absence
+ignored
+dawn
+injuries
+##port
+producers
+##ram
+82
+luis
+##ities
+kw
+admit
+expensive
+electricity
+nba
+exception
+symbol
+##ving
+ladies
+shower
+sheriff
+characteristics
+##je
+aimed
+button
+ratio
+effectively
+summit
+angle
+jury
+bears
+foster
+vessels
+pants
+executed
+evans
+dozen
+advertising
+kicked
+patrol
+1889
+competitions
+lifetime
+principles
+athletics
+##logy
+birmingham
+sponsored
+89
+rob
+nomination
+1893
+acoustic
+##sm
+creature
+longest
+##tra
+credits
+harbor
+dust
+josh
+##so
+territories
+milk
+infrastructure
+completion
+thailand
+indians
+leon
+archbishop
+##sy
+assist
+pitch
+blake
+arrangement
+girlfriend
+serbian
+operational
+hence
+sad
+scent
+fur
+dj
+sessions
+hp
+refer
+rarely
+##ora
+exists
+1892
+##ten
+scientists
+dirty
+penalty
+burst
+portrait
+seed
+79
+pole
+limits
+rival
+1894
+stable
+alpha
+grave
+constitutional
+alcohol
+arrest
+flower
+mystery
+devil
+architectural
+relationships
+greatly
+habitat
+##istic
+larry
+progressive
+remote
+cotton
+##ics
+##ok
+preserved
+reaches
+##ming
+cited
+86
+vast
+scholarship
+decisions
+cbs
+joy
+teach
+1885
+editions
+knocked
+eve
+searching
+partly
+participation
+gap
+animated
+fate
+excellent
+##ett
+na
+87
+alternate
+saints
+youngest
+##ily
+climbed
+##ita
+##tors
+suggest
+##ct
+discussion
+staying
+choir
+lakes
+jacket
+revenue
+nevertheless
+peaked
+instrument
+wondering
+annually
+managing
+neil
+1891
+signing
+terry
+##ice
+apply
+clinical
+brooklyn
+aim
+catherine
+fuck
+farmers
+figured
+ninth
+pride
+hugh
+evolution
+ordinary
+involvement
+comfortable
+shouted
+tech
+encouraged
+taiwan
+representation
+sharing
+##lia
+##em
+panic
+exact
+cargo
+competing
+fat
+cried
+83
+1920s
+occasions
+pa
+cabin
+borders
+utah
+marcus
+##isation
+badly
+muscles
+##ance
+victorian
+transition
+warner
+bet
+permission
+##rin
+slave
+terrible
+similarly
+shares
+seth
+uefa
+possession
+medals
+benefits
+colleges
+lowered
+perfectly
+mall
+transit
+##ye
+##kar
+publisher
+##ened
+harrison
+deaths
+elevation
+##ae
+asleep
+machines
+sigh
+ash
+hardly
+argument
+occasion
+parent
+leo
+decline
+1888
+contribution
+##ua
+concentration
+1000
+opportunities
+hispanic
+guardian
+extent
+emotions
+hips
+mason
+volumes
+bloody
+controversy
+diameter
+steady
+mistake
+phoenix
+identify
+violin
+##sk
+departure
+richmond
+spin
+funeral
+enemies
+1864
+gear
+literally
+connor
+random
+sergeant
+grab
+confusion
+1865
+transmission
+informed
+op
+leaning
+sacred
+suspended
+thinks
+gates
+portland
+luck
+agencies
+yours
+hull
+expert
+muscle
+layer
+practical
+sculpture
+jerusalem
+latest
+lloyd
+statistics
+deeper
+recommended
+warrior
+arkansas
+mess
+supports
+greg
+eagle
+1880
+recovered
+rated
+concerts
+rushed
+##ano
+stops
+eggs
+files
+premiere
+keith
+##vo
+delhi
+turner
+pit
+affair
+belief
+paint
+##zing
+mate
+##ach
+##ev
+victim
+##ology
+withdrew
+bonus
+styles
+fled
+##ud
+glasgow
+technologies
+funded
+nbc
+adaptation
+##ata
+portrayed
+cooperation
+supporters
+judges
+bernard
+justin
+hallway
+ralph
+##ick
+graduating
+controversial
+distant
+continental
+spider
+bite
+##ho
+recognize
+intention
+mixing
+##ese
+egyptian
+bow
+tourism
+suppose
+claiming
+tiger
+dominated
+participants
+vi
+##ru
+nurse
+partially
+tape
+##rum
+psychology
+##rn
+essential
+touring
+duo
+voting
+civilian
+emotional
+channels
+##king
+apparent
+hebrew
+1887
+tommy
+carrier
+intersection
+beast
+hudson
+##gar
+##zo
+lab
+nova
+bench
+discuss
+costa
+##ered
+detailed
+behalf
+drivers
+unfortunately
+obtain
+##lis
+rocky
+##dae
+siege
+friendship
+honey
+##rian
+1861
+amy
+hang
+posted
+governments
+collins
+respond
+wildlife
+preferred
+operator
+##po
+laura
+pregnant
+videos
+dennis
+suspected
+boots
+instantly
+weird
+automatic
+businessman
+alleged
+placing
+throwing
+ph
+mood
+1862
+perry
+venue
+jet
+remainder
+##lli
+##ci
+passion
+biological
+boyfriend
+1863
+dirt
+buffalo
+ron
+segment
+fa
+abuse
+##era
+genre
+thrown
+stroke
+colored
+stress
+exercise
+displayed
+##gen
+struggled
+##tti
+abroad
+dramatic
+wonderful
+thereafter
+madrid
+component
+widespread
+##sed
+tale
+citizen
+todd
+monday
+1886
+vancouver
+overseas
+forcing
+crying
+descent
+##ris
+discussed
+substantial
+ranks
+regime
+1870
+provinces
+switch
+drum
+zane
+ted
+tribes
+proof
+lp
+cream
+researchers
+volunteer
+manor
+silk
+milan
+donated
+allies
+venture
+principle
+delivery
+enterprise
+##ves
+##ans
+bars
+traditionally
+witch
+reminded
+copper
+##uk
+pete
+inter
+links
+colin
+grinned
+elsewhere
+competitive
+frequent
+##oy
+scream
+##hu
+tension
+texts
+submarine
+finnish
+defending
+defend
+pat
+detail
+1884
+affiliated
+stuart
+themes
+villa
+periods
+tool
+belgian
+ruling
+crimes
+answers
+folded
+licensed
+resort
+demolished
+hans
+lucy
+1881
+lion
+traded
+photographs
+writes
+craig
+##fa
+trials
+generated
+beth
+noble
+debt
+percentage
+yorkshire
+erected
+ss
+viewed
+grades
+confidence
+ceased
+islam
+telephone
+retail
+##ible
+chile
+m²
+roberts
+sixteen
+##ich
+commented
+hampshire
+innocent
+dual
+pounds
+checked
+regulations
+afghanistan
+sung
+rico
+liberty
+assets
+bigger
+options
+angels
+relegated
+tribute
+wells
+attending
+leaf
+##yan
+butler
+romanian
+forum
+monthly
+lisa
+patterns
+gmina
+##tory
+madison
+hurricane
+rev
+##ians
+bristol
+##ula
+elite
+valuable
+disaster
+democracy
+awareness
+germans
+freyja
+##ins
+loop
+absolutely
+paying
+populations
+maine
+sole
+prayer
+spencer
+releases
+doorway
+bull
+##ani
+lover
+midnight
+conclusion
+##sson
+thirteen
+lily
+mediterranean
+##lt
+nhl
+proud
+sample
+##hill
+drummer
+guinea
+##ova
+murphy
+climb
+##ston
+instant
+attributed
+horn
+ain
+railways
+steven
+##ao
+autumn
+ferry
+opponent
+root
+traveling
+secured
+corridor
+stretched
+tales
+sheet
+trinity
+cattle
+helps
+indicates
+manhattan
+murdered
+fitted
+1882
+gentle
+grandmother
+mines
+shocked
+vegas
+produces
+##light
+caribbean
+##ou
+belong
+continuous
+desperate
+drunk
+historically
+trio
+waved
+raf
+dealing
+nathan
+bat
+murmured
+interrupted
+residing
+scientist
+pioneer
+harold
+aaron
+##net
+delta
+attempting
+minority
+mini
+believes
+chorus
+tend
+lots
+eyed
+indoor
+load
+shots
+updated
+jail
+##llo
+concerning
+connecting
+wealth
+##ved
+slaves
+arrive
+rangers
+sufficient
+rebuilt
+##wick
+cardinal
+flood
+muhammad
+whenever
+relation
+runners
+moral
+repair
+viewers
+arriving
+revenge
+punk
+assisted
+bath
+fairly
+breathe
+lists
+innings
+illustrated
+whisper
+nearest
+voters
+clinton
+ties
+ultimate
+screamed
+beijing
+lions
+andre
+fictional
+gathering
+comfort
+radar
+suitable
+dismissed
+hms
+ban
+pine
+wrist
+atmosphere
+voivodeship
+bid
+timber
+##ned
+##nan
+giants
+##ane
+cameron
+recovery
+uss
+identical
+categories
+switched
+serbia
+laughter
+noah
+ensemble
+therapy
+peoples
+touching
+##off
+locally
+pearl
+platforms
+everywhere
+ballet
+tables
+lanka
+herbert
+outdoor
+toured
+derek
+1883
+spaces
+contested
+swept
+1878
+exclusive
+slight
+connections
+##dra
+winds
+prisoner
+collective
+bangladesh
+tube
+publicly
+wealthy
+thai
+##ys
+isolated
+select
+##ric
+insisted
+pen
+fortune
+ticket
+spotted
+reportedly
+animation
+enforcement
+tanks
+110
+decides
+wider
+lowest
+owen
+##time
+nod
+hitting
+##hn
+gregory
+furthermore
+magazines
+fighters
+solutions
+##ery
+pointing
+requested
+peru
+reed
+chancellor
+knights
+mask
+worker
+eldest
+flames
+reduction
+1860
+volunteers
+##tis
+reporting
+##hl
+wire
+advisory
+endemic
+origins
+settlers
+pursue
+knock
+consumer
+1876
+eu
+compound
+creatures
+mansion
+sentenced
+ivan
+deployed
+guitars
+frowned
+involves
+mechanism
+kilometers
+perspective
+shops
+maps
+terminus
+duncan
+alien
+fist
+bridges
+##pers
+heroes
+fed
+derby
+swallowed
+##ros
+patent
+sara
+illness
+characterized
+adventures
+slide
+hawaii
+jurisdiction
+##op
+organised
+##side
+adelaide
+walks
+biology
+se
+##ties
+rogers
+swing
+tightly
+boundaries
+##rie
+prepare
+implementation
+stolen
+##sha
+certified
+colombia
+edwards
+garage
+##mm
+recalled
+##ball
+rage
+harm
+nigeria
+breast
+##ren
+furniture
+pupils
+settle
+##lus
+cuba
+balls
+client
+alaska
+21st
+linear
+thrust
+celebration
+latino
+genetic
+terror
+##cia
+##ening
+lightning
+fee
+witness
+lodge
+establishing
+skull
+##ique
+earning
+hood
+##ei
+rebellion
+wang
+sporting
+warned
+missile
+devoted
+activist
+porch
+worship
+fourteen
+package
+1871
+decorated
+##shire
+housed
+##ock
+chess
+sailed
+doctors
+oscar
+joan
+treat
+garcia
+harbour
+jeremy
+##ire
+traditions
+dominant
+jacques
+##gon
+##wan
+relocated
+1879
+amendment
+sized
+companion
+simultaneously
+volleyball
+spun
+acre
+increases
+stopping
+loves
+belongs
+affect
+drafted
+tossed
+scout
+battles
+1875
+filming
+shoved
+munich
+tenure
+vertical
+romance
+pc
+##cher
+argue
+##ical
+craft
+ranging
+www
+opens
+honest
+tyler
+yesterday
+virtual
+##let
+muslims
+reveal
+snake
+immigrants
+radical
+screaming
+speakers
+firing
+saving
+belonging
+ease
+lighting
+prefecture
+blame
+farmer
+hungry
+grows
+rubbed
+beam
+sur
+subsidiary
+##cha
+armenian
+sao
+dropping
+conventional
+##fer
+microsoft
+reply
+qualify
+spots
+1867
+sweat
+festivals
+##ken
+immigration
+physician
+discover
+exposure
+sandy
+explanation
+isaac
+implemented
+##fish
+hart
+initiated
+connect
+stakes
+presents
+heights
+householder
+pleased
+tourist
+regardless
+slip
+closest
+##ction
+surely
+sultan
+brings
+riley
+preparation
+aboard
+slammed
+baptist
+experiment
+ongoing
+interstate
+organic
+playoffs
+##ika
+1877
+130
+##tar
+hindu
+error
+tours
+tier
+plenty
+arrangements
+talks
+trapped
+excited
+sank
+ho
+athens
+1872
+denver
+welfare
+suburb
+athletes
+trick
+diverse
+belly
+exclusively
+yelled
+1868
+##med
+conversion
+##ette
+1874
+internationally
+computers
+conductor
+abilities
+sensitive
+hello
+dispute
+measured
+globe
+rocket
+prices
+amsterdam
+flights
+tigers
+inn
+municipalities
+emotion
+references
+3d
+##mus
+explains
+airlines
+manufactured
+pm
+archaeological
+1873
+interpretation
+devon
+comment
+##ites
+settlements
+kissing
+absolute
+improvement
+suite
+impressed
+barcelona
+sullivan
+jefferson
+towers
+jesse
+julie
+##tin
+##lu
+grandson
+hi
+gauge
+regard
+rings
+interviews
+trace
+raymond
+thumb
+departments
+burns
+serial
+bulgarian
+scores
+demonstrated
+##ix
+1866
+kyle
+alberta
+underneath
+romanized
+##ward
+relieved
+acquisition
+phrase
+cliff
+reveals
+han
+cuts
+merger
+custom
+##dar
+nee
+gilbert
+graduation
+##nts
+assessment
+cafe
+difficulty
+demands
+swung
+democrat
+jennifer
+commons
+1940s
+grove
+##yo
+completing
+focuses
+sum
+substitute
+bearing
+stretch
+reception
+##py
+reflected
+essentially
+destination
+pairs
+##ched
+survival
+resource
+##bach
+promoting
+doubles
+messages
+tear
+##down
+##fully
+parade
+florence
+harvey
+incumbent
+partial
+framework
+900
+pedro
+frozen
+procedure
+olivia
+controls
+##mic
+shelter
+personally
+temperatures
+##od
+brisbane
+tested
+sits
+marble
+comprehensive
+oxygen
+leonard
+##kov
+inaugural
+iranian
+referring
+quarters
+attitude
+##ivity
+mainstream
+lined
+mars
+dakota
+norfolk
+unsuccessful
+##°
+explosion
+helicopter
+congressional
+##sing
+inspector
+bitch
+seal
+departed
+divine
+##ters
+coaching
+examination
+punishment
+manufacturer
+sink
+columns
+unincorporated
+signals
+nevada
+squeezed
+dylan
+dining
+photos
+martial
+manuel
+eighteen
+elevator
+brushed
+plates
+ministers
+ivy
+congregation
+##len
+slept
+specialized
+taxes
+curve
+restricted
+negotiations
+likes
+statistical
+arnold
+inspiration
+execution
+bold
+intermediate
+significance
+margin
+ruler
+wheels
+gothic
+intellectual
+dependent
+listened
+eligible
+buses
+widow
+syria
+earn
+cincinnati
+collapsed
+recipient
+secrets
+accessible
+philippine
+maritime
+goddess
+clerk
+surrender
+breaks
+playoff
+database
+##ified
+##lon
+ideal
+beetle
+aspect
+soap
+regulation
+strings
+expand
+anglo
+shorter
+crosses
+retreat
+tough
+coins
+wallace
+directions
+pressing
+##oon
+shipping
+locomotives
+comparison
+topics
+nephew
+##mes
+distinction
+honors
+travelled
+sierra
+ibn
+##over
+fortress
+sa
+recognised
+carved
+1869
+clients
+##dan
+intent
+##mar
+coaches
+describing
+bread
+##ington
+beaten
+northwestern
+##ona
+merit
+youtube
+collapse
+challenges
+em
+historians
+objective
+submitted
+virus
+attacking
+drake
+assume
+##ere
+diseases
+marc
+stem
+leeds
+##cus
+##ab
+farming
+glasses
+##lock
+visits
+nowhere
+fellowship
+relevant
+carries
+restaurants
+experiments
+101
+constantly
+bases
+targets
+shah
+tenth
+opponents
+verse
+territorial
+##ira
+writings
+corruption
+##hs
+instruction
+inherited
+reverse
+emphasis
+##vic
+employee
+arch
+keeps
+rabbi
+watson
+payment
+uh
+##ala
+nancy
+##tre
+venice
+fastest
+sexy
+banned
+adrian
+properly
+ruth
+touchdown
+dollar
+boards
+metre
+circles
+edges
+favour
+comments
+ok
+travels
+liberation
+scattered
+firmly
+##ular
+holland
+permitted
+diesel
+kenya
+den
+originated
+##ral
+demons
+resumed
+dragged
+rider
+##rus
+servant
+blinked
+extend
+torn
+##ias
+##sey
+input
+meal
+everybody
+cylinder
+kinds
+camps
+##fe
+bullet
+logic
+##wn
+croatian
+evolved
+healthy
+fool
+chocolate
+wise
+preserve
+pradesh
+##ess
+respective
+1850
+##ew
+chicken
+artificial
+gross
+corresponding
+convicted
+cage
+caroline
+dialogue
+##dor
+narrative
+stranger
+mario
+br
+christianity
+failing
+trent
+commanding
+buddhist
+1848
+maurice
+focusing
+yale
+bike
+altitude
+##ering
+mouse
+revised
+##sley
+veteran
+##ig
+pulls
+theology
+crashed
+campaigns
+legion
+##ability
+drag
+excellence
+customer
+cancelled
+intensity
+excuse
+##lar
+liga
+participating
+contributing
+printing
+##burn
+variable
+##rk
+curious
+bin
+legacy
+renaissance
+##my
+symptoms
+binding
+vocalist
+dancer
+##nie
+grammar
+gospel
+democrats
+ya
+enters
+sc
+diplomatic
+hitler
+##ser
+clouds
+mathematical
+quit
+defended
+oriented
+##heim
+fundamental
+hardware
+impressive
+equally
+convince
+confederate
+guilt
+chuck
+sliding
+##ware
+magnetic
+narrowed
+petersburg
+bulgaria
+otto
+phd
+skill
+##ama
+reader
+hopes
+pitcher
+reservoir
+hearts
+automatically
+expecting
+mysterious
+bennett
+extensively
+imagined
+seeds
+monitor
+fix
+##ative
+journalism
+struggling
+signature
+ranch
+encounter
+photographer
+observation
+protests
+##pin
+influences
+##hr
+calendar
+##all
+cruz
+croatia
+locomotive
+hughes
+naturally
+shakespeare
+basement
+hook
+uncredited
+faded
+theories
+approaches
+dare
+phillips
+filling
+fury
+obama
+##ain
+efficient
+arc
+deliver
+min
+raid
+breeding
+inducted
+leagues
+efficiency
+axis
+montana
+eagles
+##ked
+supplied
+instructions
+karen
+picking
+indicating
+trap
+anchor
+practically
+christians
+tomb
+vary
+occasional
+electronics
+lords
+readers
+newcastle
+faint
+innovation
+collect
+situations
+engagement
+160
+claude
+mixture
+##feld
+peer
+tissue
+logo
+lean
+##ration
+°f
+floors
+##ven
+architects
+reducing
+##our
+##ments
+rope
+1859
+ottawa
+##har
+samples
+banking
+declaration
+proteins
+resignation
+francois
+saudi
+advocate
+exhibited
+armor
+twins
+divorce
+##ras
+abraham
+reviewed
+jo
+temporarily
+matrix
+physically
+pulse
+curled
+##ena
+difficulties
+bengal
+usage
+##ban
+annie
+riders
+certificate
+##pi
+holes
+warsaw
+distinctive
+jessica
+##mon
+mutual
+1857
+customs
+circular
+eugene
+removal
+loaded
+mere
+vulnerable
+depicted
+generations
+dame
+heir
+enormous
+lightly
+climbing
+pitched
+lessons
+pilots
+nepal
+ram
+google
+preparing
+brad
+louise
+renowned
+##₂
+liam
+##ably
+plaza
+shaw
+sophie
+brilliant
+bills
+##bar
+##nik
+fucking
+mainland
+server
+pleasant
+seized
+veterans
+jerked
+fail
+beta
+brush
+radiation
+stored
+warmth
+southeastern
+nate
+sin
+raced
+berkeley
+joke
+athlete
+designation
+trunk
+##low
+roland
+qualification
+archives
+heels
+artwork
+receives
+judicial
+reserves
+##bed
+woke
+installation
+abu
+floating
+fake
+lesser
+excitement
+interface
+concentrated
+addressed
+characteristic
+amanda
+saxophone
+monk
+auto
+##bus
+releasing
+egg
+dies
+interaction
+defender
+ce
+outbreak
+glory
+loving
+##bert
+sequel
+consciousness
+http
+awake
+ski
+enrolled
+##ress
+handling
+rookie
+brow
+somebody
+biography
+warfare
+amounts
+contracts
+presentation
+fabric
+dissolved
+challenged
+meter
+psychological
+lt
+elevated
+rally
+accurate
+##tha
+hospitals
+undergraduate
+specialist
+venezuela
+exhibit
+shed
+nursing
+protestant
+fluid
+structural
+footage
+jared
+consistent
+prey
+##ska
+succession
+reflect
+exile
+lebanon
+wiped
+suspect
+shanghai
+resting
+integration
+preservation
+marvel
+variant
+pirates
+sheep
+rounded
+capita
+sailing
+colonies
+manuscript
+deemed
+variations
+clarke
+functional
+emerging
+boxing
+relaxed
+curse
+azerbaijan
+heavyweight
+nickname
+editorial
+rang
+grid
+tightened
+earthquake
+flashed
+miguel
+rushing
+##ches
+improvements
+boxes
+brooks
+180
+consumption
+molecular
+felix
+societies
+repeatedly
+variation
+aids
+civic
+graphics
+professionals
+realm
+autonomous
+receiver
+delayed
+workshop
+militia
+chairs
+trump
+canyon
+##point
+harsh
+extending
+lovely
+happiness
+##jan
+stake
+eyebrows
+embassy
+wellington
+hannah
+##ella
+sony
+corners
+bishops
+swear
+cloth
+contents
+xi
+namely
+commenced
+1854
+stanford
+nashville
+courage
+graphic
+commitment
+garrison
+##bin
+hamlet
+clearing
+rebels
+attraction
+literacy
+cooking
+ruins
+temples
+jenny
+humanity
+celebrate
+hasn
+freight
+sixty
+rebel
+bastard
+##art
+newton
+##ada
+deer
+##ges
+##ching
+smiles
+delaware
+singers
+##ets
+approaching
+assists
+flame
+##ph
+boulevard
+barrel
+planted
+##ome
+pursuit
+##sia
+consequences
+posts
+shallow
+invitation
+rode
+depot
+ernest
+kane
+rod
+concepts
+preston
+topic
+chambers
+striking
+blast
+arrives
+descendants
+montgomery
+ranges
+worlds
+##lay
+##ari
+span
+chaos
+praise
+##ag
+fewer
+1855
+sanctuary
+mud
+fbi
+##ions
+programmes
+maintaining
+unity
+harper
+bore
+handsome
+closure
+tournaments
+thunder
+nebraska
+linda
+facade
+puts
+satisfied
+argentine
+dale
+cork
+dome
+panama
+##yl
+1858
+tasks
+experts
+##ates
+feeding
+equation
+##las
+##ida
+##tu
+engage
+bryan
+##ax
+um
+quartet
+melody
+disbanded
+sheffield
+blocked
+gasped
+delay
+kisses
+maggie
+connects
+##non
+sts
+poured
+creator
+publishers
+##we
+guided
+ellis
+extinct
+hug
+gaining
+##ord
+complicated
+##bility
+poll
+clenched
+investigate
+##use
+thereby
+quantum
+spine
+cdp
+humor
+kills
+administered
+semifinals
+##du
+encountered
+ignore
+##bu
+commentary
+##maker
+bother
+roosevelt
+140
+plains
+halfway
+flowing
+cultures
+crack
+imprisoned
+neighboring
+airline
+##ses
+##view
+##mate
+##ec
+gather
+wolves
+marathon
+transformed
+##ill
+cruise
+organisations
+carol
+punch
+exhibitions
+numbered
+alarm
+ratings
+daddy
+silently
+##stein
+queens
+colours
+impression
+guidance
+liu
+tactical
+##rat
+marshal
+della
+arrow
+##ings
+rested
+feared
+tender
+owns
+bitter
+advisor
+escort
+##ides
+spare
+farms
+grants
+##ene
+dragons
+encourage
+colleagues
+cameras
+##und
+sucked
+pile
+spirits
+prague
+statements
+suspension
+landmark
+fence
+torture
+recreation
+bags
+permanently
+survivors
+pond
+spy
+predecessor
+bombing
+coup
+##og
+protecting
+transformation
+glow
+##lands
+##book
+dug
+priests
+andrea
+feat
+barn
+jumping
+##chen
+##ologist
+##con
+casualties
+stern
+auckland
+pipe
+serie
+revealing
+ba
+##bel
+trevor
+mercy
+spectrum
+yang
+consist
+governing
+collaborated
+possessed
+epic
+comprises
+blew
+shane
+##ack
+lopez
+honored
+magical
+sacrifice
+judgment
+perceived
+hammer
+mtv
+baronet
+tune
+das
+missionary
+sheets
+350
+neutral
+oral
+threatening
+attractive
+shade
+aims
+seminary
+##master
+estates
+1856
+michel
+wounds
+refugees
+manufacturers
+##nic
+mercury
+syndrome
+porter
+##iya
+##din
+hamburg
+identification
+upstairs
+purse
+widened
+pause
+cared
+breathed
+affiliate
+santiago
+prevented
+celtic
+fisher
+125
+recruited
+byzantine
+reconstruction
+farther
+##mp
+diet
+sake
+au
+spite
+sensation
+##ert
+blank
+separation
+105
+##hon
+vladimir
+armies
+anime
+##lie
+accommodate
+orbit
+cult
+sofia
+archive
+##ify
+##box
+founders
+sustained
+disorder
+honours
+northeastern
+mia
+crops
+violet
+threats
+blanket
+fires
+canton
+followers
+southwestern
+prototype
+voyage
+assignment
+altered
+moderate
+protocol
+pistol
+##eo
+questioned
+brass
+lifting
+1852
+math
+authored
+##ual
+doug
+dimensional
+dynamic
+##san
+1851
+pronounced
+grateful
+quest
+uncomfortable
+boom
+presidency
+stevens
+relating
+politicians
+chen
+barrier
+quinn
+diana
+mosque
+tribal
+cheese
+palmer
+portions
+sometime
+chester
+treasure
+wu
+bend
+download
+millions
+reforms
+registration
+##osa
+consequently
+monitoring
+ate
+preliminary
+brandon
+invented
+ps
+eaten
+exterior
+intervention
+ports
+documented
+log
+displays
+lecture
+sally
+favourite
+##itz
+vermont
+lo
+invisible
+isle
+breed
+##ator
+journalists
+relay
+speaks
+backward
+explore
+midfielder
+actively
+stefan
+procedures
+cannon
+blond
+kenneth
+centered
+servants
+chains
+libraries
+malcolm
+essex
+henri
+slavery
+##hal
+facts
+fairy
+coached
+cassie
+cats
+washed
+cop
+##fi
+announcement
+item
+2000s
+vinyl
+activated
+marco
+frontier
+growled
+curriculum
+##das
+loyal
+accomplished
+leslie
+ritual
+kenny
+##00
+vii
+napoleon
+hollow
+hybrid
+jungle
+stationed
+friedrich
+counted
+##ulated
+platinum
+theatrical
+seated
+col
+rubber
+glen
+1840
+diversity
+healing
+extends
+id
+provisions
+administrator
+columbus
+##oe
+tributary
+te
+assured
+org
+##uous
+prestigious
+examined
+lectures
+grammy
+ronald
+associations
+bailey
+allan
+essays
+flute
+believing
+consultant
+proceedings
+travelling
+1853
+kit
+kerala
+yugoslavia
+buddy
+methodist
+##ith
+burial
+centres
+batman
+##nda
+discontinued
+bo
+dock
+stockholm
+lungs
+severely
+##nk
+citing
+manga
+##ugh
+steal
+mumbai
+iraqi
+robot
+celebrity
+bride
+broadcasts
+abolished
+pot
+joel
+overhead
+franz
+packed
+reconnaissance
+johann
+acknowledged
+introduce
+handled
+doctorate
+developments
+drinks
+alley
+palestine
+##nis
+##aki
+proceeded
+recover
+bradley
+grain
+patch
+afford
+infection
+nationalist
+legendary
+##ath
+interchange
+virtually
+gen
+gravity
+exploration
+amber
+vital
+wishes
+powell
+doctrine
+elbow
+screenplay
+##bird
+contribute
+indonesian
+pet
+creates
+##com
+enzyme
+kylie
+discipline
+drops
+manila
+hunger
+##ien
+layers
+suffer
+fever
+bits
+monica
+keyboard
+manages
+##hood
+searched
+appeals
+##bad
+testament
+grande
+reid
+##war
+beliefs
+congo
+##ification
+##dia
+si
+requiring
+##via
+casey
+1849
+regret
+streak
+rape
+depends
+syrian
+sprint
+pound
+tourists
+upcoming
+pub
+##xi
+tense
+##els
+practiced
+echo
+nationwide
+guild
+motorcycle
+liz
+##zar
+chiefs
+desired
+elena
+bye
+precious
+absorbed
+relatives
+booth
+pianist
+##mal
+citizenship
+exhausted
+wilhelm
+##ceae
+##hed
+noting
+quarterback
+urge
+hectares
+##gue
+ace
+holly
+##tal
+blonde
+davies
+parked
+sustainable
+stepping
+twentieth
+airfield
+galaxy
+nest
+chip
+##nell
+tan
+shaft
+paulo
+requirement
+##zy
+paradise
+tobacco
+trans
+renewed
+vietnamese
+##cker
+##ju
+suggesting
+catching
+holmes
+enjoying
+md
+trips
+colt
+holder
+butterfly
+nerve
+reformed
+cherry
+bowling
+trailer
+carriage
+goodbye
+appreciate
+toy
+joshua
+interactive
+enabled
+involve
+##kan
+collar
+determination
+bunch
+facebook
+recall
+shorts
+superintendent
+episcopal
+frustration
+giovanni
+nineteenth
+laser
+privately
+array
+circulation
+##ovic
+armstrong
+deals
+painful
+permit
+discrimination
+##wi
+aires
+retiring
+cottage
+ni
+##sta
+horizon
+ellen
+jamaica
+ripped
+fernando
+chapters
+playstation
+patron
+lecturer
+navigation
+behaviour
+genes
+georgian
+export
+solomon
+rivals
+swift
+seventeen
+rodriguez
+princeton
+independently
+sox
+1847
+arguing
+entity
+casting
+hank
+criteria
+oakland
+geographic
+milwaukee
+reflection
+expanding
+conquest
+dubbed
+##tv
+halt
+brave
+brunswick
+doi
+arched
+curtis
+divorced
+predominantly
+somerset
+streams
+ugly
+zoo
+horrible
+curved
+buenos
+fierce
+dictionary
+vector
+theological
+unions
+handful
+stability
+chan
+punjab
+segments
+##lly
+altar
+ignoring
+gesture
+monsters
+pastor
+##stone
+thighs
+unexpected
+operators
+abruptly
+coin
+compiled
+associates
+improving
+migration
+pin
+##ose
+compact
+collegiate
+reserved
+##urs
+quarterfinals
+roster
+restore
+assembled
+hurry
+oval
+##cies
+1846
+flags
+martha
+##del
+victories
+sharply
+##rated
+argues
+deadly
+neo
+drawings
+symbols
+performer
+##iel
+griffin
+restrictions
+editing
+andrews
+java
+journals
+arabia
+compositions
+dee
+pierce
+removing
+hindi
+casino
+runway
+civilians
+minds
+nasa
+hotels
+##zation
+refuge
+rent
+retain
+potentially
+conferences
+suburban
+conducting
+##tto
+##tions
+##tle
+descended
+massacre
+##cal
+ammunition
+terrain
+fork
+souls
+counts
+chelsea
+durham
+drives
+cab
+##bank
+perth
+realizing
+palestinian
+finn
+simpson
+##dal
+betty
+##ule
+moreover
+particles
+cardinals
+tent
+evaluation
+extraordinary
+##oid
+inscription
+##works
+wednesday
+chloe
+maintains
+panels
+ashley
+trucks
+##nation
+cluster
+sunlight
+strikes
+zhang
+##wing
+dialect
+canon
+##ap
+tucked
+##ws
+collecting
+##mas
+##can
+##sville
+maker
+quoted
+evan
+franco
+aria
+buying
+cleaning
+eva
+closet
+provision
+apollo
+clinic
+rat
+##ez
+necessarily
+ac
+##gle
+##ising
+venues
+flipped
+cent
+spreading
+trustees
+checking
+authorized
+##sco
+disappointed
+##ado
+notion
+duration
+trumpet
+hesitated
+topped
+brussels
+rolls
+theoretical
+hint
+define
+aggressive
+repeat
+wash
+peaceful
+optical
+width
+allegedly
+mcdonald
+strict
+copyright
+##illa
+investors
+mar
+jam
+witnesses
+sounding
+miranda
+michelle
+privacy
+hugo
+harmony
+##pp
+valid
+lynn
+glared
+nina
+102
+headquartered
+diving
+boarding
+gibson
+##ncy
+albanian
+marsh
+routine
+dealt
+enhanced
+er
+intelligent
+substance
+targeted
+enlisted
+discovers
+spinning
+observations
+pissed
+smoking
+rebecca
+capitol
+visa
+varied
+costume
+seemingly
+indies
+compensation
+surgeon
+thursday
+arsenal
+westminster
+suburbs
+rid
+anglican
+##ridge
+knots
+foods
+alumni
+lighter
+fraser
+whoever
+portal
+scandal
+##ray
+gavin
+advised
+instructor
+flooding
+terrorist
+##ale
+teenage
+interim
+senses
+duck
+teen
+thesis
+abby
+eager
+overcome
+##ile
+newport
+glenn
+rises
+shame
+##cc
+prompted
+priority
+forgot
+bomber
+nicolas
+protective
+360
+cartoon
+katherine
+breeze
+lonely
+trusted
+henderson
+richardson
+relax
+banner
+candy
+palms
+remarkable
+##rio
+legends
+cricketer
+essay
+ordained
+edmund
+rifles
+trigger
+##uri
+##away
+sail
+alert
+1830
+audiences
+penn
+sussex
+siblings
+pursued
+indianapolis
+resist
+rosa
+consequence
+succeed
+avoided
+1845
+##ulation
+inland
+##tie
+##nna
+counsel
+profession
+chronicle
+hurried
+##una
+eyebrow
+eventual
+bleeding
+innovative
+cure
+##dom
+committees
+accounting
+con
+scope
+hardy
+heather
+tenor
+gut
+herald
+codes
+tore
+scales
+wagon
+##oo
+luxury
+tin
+prefer
+fountain
+triangle
+bonds
+darling
+convoy
+dried
+traced
+beings
+troy
+accidentally
+slam
+findings
+smelled
+joey
+lawyers
+outcome
+steep
+bosnia
+configuration
+shifting
+toll
+brook
+performers
+lobby
+philosophical
+construct
+shrine
+aggregate
+boot
+cox
+phenomenon
+savage
+insane
+solely
+reynolds
+lifestyle
+##ima
+nationally
+holdings
+consideration
+enable
+edgar
+mo
+mama
+##tein
+fights
+relegation
+chances
+atomic
+hub
+conjunction
+awkward
+reactions
+currency
+finale
+kumar
+underwent
+steering
+elaborate
+gifts
+comprising
+melissa
+veins
+reasonable
+sunshine
+chi
+solve
+trails
+inhabited
+elimination
+ethics
+huh
+ana
+molly
+consent
+apartments
+layout
+marines
+##ces
+hunters
+bulk
+##oma
+hometown
+##wall
+##mont
+cracked
+reads
+neighbouring
+withdrawn
+admission
+wingspan
+damned
+anthology
+lancashire
+brands
+batting
+forgive
+cuban
+awful
+##lyn
+104
+dimensions
+imagination
+##ade
+dante
+##ship
+tracking
+desperately
+goalkeeper
+##yne
+groaned
+workshops
+confident
+burton
+gerald
+milton
+circus
+uncertain
+slope
+copenhagen
+sophia
+fog
+philosopher
+portraits
+accent
+cycling
+varying
+gripped
+larvae
+garrett
+specified
+scotia
+mature
+luther
+kurt
+rap
+##kes
+aerial
+750
+ferdinand
+heated
+es
+transported
+##shan
+safely
+nonetheless
+##orn
+##gal
+motors
+demanding
+##sburg
+startled
+##brook
+ally
+generate
+caps
+ghana
+stained
+demo
+mentions
+beds
+ap
+afterward
+diary
+##bling
+utility
+##iro
+richards
+1837
+conspiracy
+conscious
+shining
+footsteps
+observer
+cyprus
+urged
+loyalty
+developer
+probability
+olive
+upgraded
+gym
+miracle
+insects
+graves
+1844
+ourselves
+hydrogen
+amazon
+katie
+tickets
+poets
+##pm
+planes
+##pan
+prevention
+witnessed
+dense
+jin
+randy
+tang
+warehouse
+monroe
+bang
+archived
+elderly
+investigations
+alec
+granite
+mineral
+conflicts
+controlling
+aboriginal
+carlo
+##zu
+mechanics
+stan
+stark
+rhode
+skirt
+est
+##berry
+bombs
+respected
+##horn
+imposed
+limestone
+deny
+nominee
+memphis
+grabbing
+disabled
+##als
+amusement
+aa
+frankfurt
+corn
+referendum
+varies
+slowed
+disk
+firms
+unconscious
+incredible
+clue
+sue
+##zhou
+twist
+##cio
+joins
+idaho
+chad
+developers
+computing
+destroyer
+103
+mortal
+tucker
+kingston
+choices
+yu
+carson
+1800
+os
+whitney
+geneva
+pretend
+dimension
+staged
+plateau
+maya
+##une
+freestyle
+##bc
+rovers
+hiv
+##ids
+tristan
+classroom
+prospect
+##hus
+honestly
+diploma
+lied
+thermal
+auxiliary
+feast
+unlikely
+iata
+##tel
+morocco
+pounding
+treasury
+lithuania
+considerably
+1841
+dish
+1812
+geological
+matching
+stumbled
+destroying
+marched
+brien
+advances
+cake
+nicole
+belle
+settling
+measuring
+directing
+##mie
+tuesday
+bassist
+capabilities
+stunned
+fraud
+torpedo
+##list
+##phone
+anton
+wisdom
+surveillance
+ruined
+##ulate
+lawsuit
+healthcare
+theorem
+halls
+trend
+aka
+horizontal
+dozens
+acquire
+lasting
+swim
+hawk
+gorgeous
+fees
+vicinity
+decrease
+adoption
+tactics
+##ography
+pakistani
+##ole
+draws
+##hall
+willie
+burke
+heath
+algorithm
+integral
+powder
+elliott
+brigadier
+jackie
+tate
+varieties
+darker
+##cho
+lately
+cigarette
+specimens
+adds
+##ree
+##ensis
+##inger
+exploded
+finalist
+cia
+murders
+wilderness
+arguments
+nicknamed
+acceptance
+onwards
+manufacture
+robertson
+jets
+tampa
+enterprises
+blog
+loudly
+composers
+nominations
+1838
+ai
+malta
+inquiry
+automobile
+hosting
+viii
+rays
+tilted
+grief
+museums
+strategies
+furious
+euro
+equality
+cohen
+poison
+surrey
+wireless
+governed
+ridiculous
+moses
+##esh
+##room
+vanished
+##ito
+barnes
+attract
+morrison
+istanbul
+##iness
+absent
+rotation
+petition
+janet
+##logical
+satisfaction
+custody
+deliberately
+observatory
+comedian
+surfaces
+pinyin
+novelist
+strictly
+canterbury
+oslo
+monks
+embrace
+ibm
+jealous
+photograph
+continent
+dorothy
+marina
+doc
+excess
+holden
+allegations
+explaining
+stack
+avoiding
+lance
+storyline
+majesty
+poorly
+spike
+dos
+bradford
+raven
+travis
+classics
+proven
+voltage
+pillow
+fists
+butt
+1842
+interpreted
+##car
+1839
+gage
+telegraph
+lens
+promising
+expelled
+casual
+collector
+zones
+##min
+silly
+nintendo
+##kh
+##bra
+downstairs
+chef
+suspicious
+afl
+flies
+vacant
+uganda
+pregnancy
+condemned
+lutheran
+estimates
+cheap
+decree
+saxon
+proximity
+stripped
+idiot
+deposits
+contrary
+presenter
+magnus
+glacier
+im
+offense
+edwin
+##ori
+upright
+##long
+bolt
+##ois
+toss
+geographical
+##izes
+environments
+delicate
+marking
+abstract
+xavier
+nails
+windsor
+plantation
+occurring
+equity
+saskatchewan
+fears
+drifted
+sequences
+vegetation
+revolt
+##stic
+1843
+sooner
+fusion
+opposing
+nato
+skating
+1836
+secretly
+ruin
+lease
+##oc
+edit
+##nne
+flora
+anxiety
+ruby
+##ological
+##mia
+tel
+bout
+taxi
+emmy
+frost
+rainbow
+compounds
+foundations
+rainfall
+assassination
+nightmare
+dominican
+##win
+achievements
+deserve
+orlando
+intact
+armenia
+##nte
+calgary
+valentine
+106
+marion
+proclaimed
+theodore
+bells
+courtyard
+thigh
+gonzalez
+console
+troop
+minimal
+monte
+everyday
+##ence
+##if
+supporter
+terrorism
+buck
+openly
+presbyterian
+activists
+carpet
+##iers
+rubbing
+uprising
+##yi
+cute
+conceived
+legally
+##cht
+millennium
+cello
+velocity
+ji
+rescued
+cardiff
+1835
+rex
+concentrate
+senators
+beard
+rendered
+glowing
+battalions
+scouts
+competitors
+sculptor
+catalogue
+arctic
+ion
+raja
+bicycle
+wow
+glancing
+lawn
+##woman
+gentleman
+lighthouse
+publish
+predicted
+calculated
+##val
+variants
+##gne
+strain
+##ui
+winston
+deceased
+##nus
+touchdowns
+brady
+caleb
+sinking
+echoed
+crush
+hon
+blessed
+protagonist
+hayes
+endangered
+magnitude
+editors
+##tine
+estimate
+responsibilities
+##mel
+backup
+laying
+consumed
+sealed
+zurich
+lovers
+frustrated
+##eau
+ahmed
+kicking
+mit
+treasurer
+1832
+biblical
+refuse
+terrified
+pump
+agrees
+genuine
+imprisonment
+refuses
+plymouth
+##hen
+lou
+##nen
+tara
+trembling
+antarctic
+ton
+learns
+##tas
+crap
+crucial
+faction
+atop
+##borough
+wrap
+lancaster
+odds
+hopkins
+erik
+lyon
+##eon
+bros
+##ode
+snap
+locality
+tips
+empress
+crowned
+cal
+acclaimed
+chuckled
+##ory
+clara
+sends
+mild
+towel
+##fl
+##day
+##а
+wishing
+assuming
+interviewed
+##bal
+##die
+interactions
+eden
+cups
+helena
+##lf
+indie
+beck
+##fire
+batteries
+filipino
+wizard
+parted
+##lam
+traces
+##born
+rows
+idol
+albany
+delegates
+##ees
+##sar
+discussions
+##ex
+notre
+instructed
+belgrade
+highways
+suggestion
+lauren
+possess
+orientation
+alexandria
+abdul
+beats
+salary
+reunion
+ludwig
+alright
+wagner
+intimate
+pockets
+slovenia
+hugged
+brighton
+merchants
+cruel
+stole
+trek
+slopes
+repairs
+enrollment
+politically
+underlying
+promotional
+counting
+boeing
+##bb
+isabella
+naming
+##и
+keen
+bacteria
+listing
+separately
+belfast
+ussr
+450
+lithuanian
+anybody
+ribs
+sphere
+martinez
+cock
+embarrassed
+proposals
+fragments
+nationals
+##fs
+##wski
+premises
+fin
+1500
+alpine
+matched
+freely
+bounded
+jace
+sleeve
+##af
+gaming
+pier
+populated
+evident
+##like
+frances
+flooded
+##dle
+frightened
+pour
+trainer
+framed
+visitor
+challenging
+pig
+wickets
+##fold
+infected
+email
+##pes
+arose
+##aw
+reward
+ecuador
+oblast
+vale
+ch
+shuttle
+##usa
+bach
+rankings
+forbidden
+cornwall
+accordance
+salem
+consumers
+bruno
+fantastic
+toes
+machinery
+resolved
+julius
+remembering
+propaganda
+iceland
+bombardment
+tide
+contacts
+wives
+##rah
+concerto
+macdonald
+albania
+implement
+daisy
+tapped
+sudan
+helmet
+angela
+mistress
+##lic
+crop
+sunk
+finest
+##craft
+hostile
+##ute
+##tsu
+boxer
+fr
+paths
+adjusted
+habit
+ballot
+supervision
+soprano
+##zen
+bullets
+wicked
+sunset
+regiments
+disappear
+lamp
+performs
+app
+##gia
+##oa
+rabbit
+digging
+incidents
+entries
+##cion
+dishes
+##oi
+introducing
+##ati
+##fied
+freshman
+slot
+jill
+tackles
+baroque
+backs
+##iest
+lone
+sponsor
+destiny
+altogether
+convert
+##aro
+consensus
+shapes
+demonstration
+basically
+feminist
+auction
+artifacts
+##bing
+strongest
+twitter
+halifax
+2019
+allmusic
+mighty
+smallest
+precise
+alexandra
+viola
+##los
+##ille
+manuscripts
+##illo
+dancers
+ari
+managers
+monuments
+blades
+barracks
+springfield
+maiden
+consolidated
+electron
+##end
+berry
+airing
+wheat
+nobel
+inclusion
+blair
+payments
+geography
+bee
+cc
+eleanor
+react
+##hurst
+afc
+manitoba
+##yu
+su
+lineup
+fitness
+recreational
+investments
+airborne
+disappointment
+##dis
+edmonton
+viewing
+##row
+renovation
+##cast
+infant
+bankruptcy
+roses
+aftermath
+pavilion
+##yer
+carpenter
+withdrawal
+ladder
+##hy
+discussing
+popped
+reliable
+agreements
+rochester
+##abad
+curves
+bombers
+220
+rao
+reverend
+decreased
+choosing
+107
+stiff
+consulting
+naples
+crawford
+tracy
+ka
+ribbon
+cops
+##lee
+crushed
+deciding
+unified
+teenager
+accepting
+flagship
+explorer
+poles
+sanchez
+inspection
+revived
+skilled
+induced
+exchanged
+flee
+locals
+tragedy
+swallow
+loading
+hanna
+demonstrate
+##ela
+salvador
+flown
+contestants
+civilization
+##ines
+wanna
+rhodes
+fletcher
+hector
+knocking
+considers
+##ough
+nash
+mechanisms
+sensed
+mentally
+walt
+unclear
+##eus
+renovated
+madame
+##cks
+crews
+governmental
+##hin
+undertaken
+monkey
+##ben
+##ato
+fatal
+armored
+copa
+caves
+governance
+grasp
+perception
+certification
+froze
+damp
+tugged
+wyoming
+##rg
+##ero
+newman
+##lor
+nerves
+curiosity
+graph
+115
+##ami
+withdraw
+tunnels
+dull
+meredith
+moss
+exhibits
+neighbors
+communicate
+accuracy
+explored
+raiders
+republicans
+secular
+kat
+superman
+penny
+criticised
+##tch
+freed
+update
+conviction
+wade
+ham
+likewise
+delegation
+gotta
+doll
+promises
+technological
+myth
+nationality
+resolve
+convent
+##mark
+sharon
+dig
+sip
+coordinator
+entrepreneur
+fold
+##dine
+capability
+councillor
+synonym
+blown
+swan
+cursed
+1815
+jonas
+haired
+sofa
+canvas
+keeper
+rivalry
+##hart
+rapper
+speedway
+swords
+postal
+maxwell
+estonia
+potter
+recurring
+##nn
+##ave
+errors
+##oni
+cognitive
+1834
+##²
+claws
+nadu
+roberto
+bce
+wrestler
+ellie
+##ations
+infinite
+ink
+##tia
+presumably
+finite
+staircase
+108
+noel
+patricia
+nacional
+##cation
+chill
+eternal
+tu
+preventing
+prussia
+fossil
+limbs
+##logist
+ernst
+frog
+perez
+rene
+##ace
+pizza
+prussian
+##ios
+##vy
+molecules
+regulatory
+answering
+opinions
+sworn
+lengths
+supposedly
+hypothesis
+upward
+habitats
+seating
+ancestors
+drank
+yield
+hd
+synthesis
+researcher
+modest
+##var
+mothers
+peered
+voluntary
+homeland
+##the
+acclaim
+##igan
+static
+valve
+luxembourg
+alto
+carroll
+fe
+receptor
+norton
+ambulance
+##tian
+johnston
+catholics
+depicting
+jointly
+elephant
+gloria
+mentor
+badge
+ahmad
+distinguish
+remarked
+councils
+precisely
+allison
+advancing
+detection
+crowded
+##10
+cooperative
+ankle
+mercedes
+dagger
+surrendered
+pollution
+commit
+subway
+jeffrey
+lesson
+sculptures
+provider
+##fication
+membrane
+timothy
+rectangular
+fiscal
+heating
+teammate
+basket
+particle
+anonymous
+deployment
+##ple
+missiles
+courthouse
+proportion
+shoe
+sec
+##ller
+complaints
+forbes
+blacks
+abandon
+remind
+sizes
+overwhelming
+autobiography
+natalie
+##awa
+risks
+contestant
+countryside
+babies
+scorer
+invaded
+enclosed
+proceed
+hurling
+disorders
+##cu
+reflecting
+continuously
+cruiser
+graduates
+freeway
+investigated
+ore
+deserved
+maid
+blocking
+phillip
+jorge
+shakes
+dove
+mann
+variables
+lacked
+burden
+accompanying
+que
+consistently
+organizing
+provisional
+complained
+endless
+##rm
+tubes
+juice
+georges
+krishna
+mick
+labels
+thriller
+##uch
+laps
+arcade
+sage
+snail
+##table
+shannon
+fi
+laurence
+seoul
+vacation
+presenting
+hire
+churchill
+surprisingly
+prohibited
+savannah
+technically
+##oli
+170
+##lessly
+testimony
+suited
+speeds
+toys
+romans
+mlb
+flowering
+measurement
+talented
+kay
+settings
+charleston
+expectations
+shattered
+achieving
+triumph
+ceremonies
+portsmouth
+lanes
+mandatory
+loser
+stretching
+cologne
+realizes
+seventy
+cornell
+careers
+webb
+##ulating
+americas
+budapest
+ava
+suspicion
+##ison
+yo
+conrad
+##hai
+sterling
+jessie
+rector
+##az
+1831
+transform
+organize
+loans
+christine
+volcanic
+warrant
+slender
+summers
+subfamily
+newer
+danced
+dynamics
+rhine
+proceeds
+heinrich
+gastropod
+commands
+sings
+facilitate
+easter
+ra
+positioned
+responses
+expense
+fruits
+yanked
+imported
+25th
+velvet
+vic
+primitive
+tribune
+baldwin
+neighbourhood
+donna
+rip
+hay
+pr
+##uro
+1814
+espn
+welcomed
+##aria
+qualifier
+glare
+highland
+timing
+##cted
+shells
+eased
+geometry
+louder
+exciting
+slovakia
+##sion
+##iz
+##lot
+savings
+prairie
+##ques
+marching
+rafael
+tonnes
+##lled
+curtain
+preceding
+shy
+heal
+greene
+worthy
+##pot
+detachment
+bury
+sherman
+##eck
+reinforced
+seeks
+bottles
+contracted
+duchess
+outfit
+walsh
+##sc
+mickey
+##ase
+geoffrey
+archer
+squeeze
+dawson
+eliminate
+invention
+##enberg
+neal
+##eth
+stance
+dealer
+coral
+maple
+retire
+polo
+simplified
+##ht
+1833
+hid
+watts
+backwards
+jules
+##oke
+genesis
+mt
+frames
+rebounds
+burma
+woodland
+moist
+santos
+whispers
+drained
+subspecies
+##aa
+streaming
+ulster
+burnt
+correspondence
+maternal
+gerard
+denis
+stealing
+##load
+genius
+duchy
+##oria
+inaugurated
+momentum
+suits
+placement
+sovereign
+clause
+thames
+##hara
+confederation
+reservation
+sketch
+yankees
+lets
+rotten
+charm
+hal
+verses
+ultra
+commercially
+dot
+salon
+citation
+adopt
+winnipeg
+mist
+allocated
+cairo
+##boy
+jenkins
+interference
+objectives
+##wind
+1820
+portfolio
+armoured
+sectors
+##eh
+initiatives
+##world
+integrity
+exercises
+robe
+tap
+ab
+gazed
+##tones
+distracted
+rulers
+111
+favorable
+jerome
+tended
+cart
+factories
+##eri
+diplomat
+valued
+gravel
+charitable
+##try
+calvin
+exploring
+chang
+shepherd
+terrace
+pdf
+pupil
+##ural
+reflects
+ups
+##rch
+governors
+shelf
+depths
+##nberg
+trailed
+crest
+tackle
+##nian
+##ats
+hatred
+##kai
+clare
+makers
+ethiopia
+longtime
+detected
+embedded
+lacking
+slapped
+rely
+thomson
+anticipation
+iso
+morton
+successive
+agnes
+screenwriter
+straightened
+philippe
+playwright
+haunted
+licence
+iris
+intentions
+sutton
+112
+logical
+correctly
+##weight
+branded
+licked
+tipped
+silva
+ricky
+narrator
+requests
+##ents
+greeted
+supernatural
+cow
+##wald
+lung
+refusing
+employer
+strait
+gaelic
+liner
+##piece
+zoe
+sabha
+##mba
+driveway
+harvest
+prints
+bates
+reluctantly
+threshold
+algebra
+ira
+wherever
+coupled
+240
+assumption
+picks
+##air
+designers
+raids
+gentlemen
+##ean
+roller
+blowing
+leipzig
+locks
+screw
+dressing
+strand
+##lings
+scar
+dwarf
+depicts
+##nu
+nods
+##mine
+differ
+boris
+##eur
+yuan
+flip
+##gie
+mob
+invested
+questioning
+applying
+##ture
+shout
+##sel
+gameplay
+blamed
+illustrations
+bothered
+weakness
+rehabilitation
+##of
+##zes
+envelope
+rumors
+miners
+leicester
+subtle
+kerry
+##ico
+ferguson
+##fu
+premiership
+ne
+##cat
+bengali
+prof
+catches
+remnants
+dana
+##rily
+shouting
+presidents
+baltic
+ought
+ghosts
+dances
+sailors
+shirley
+fancy
+dominic
+##bie
+madonna
+##rick
+bark
+buttons
+gymnasium
+ashes
+liver
+toby
+oath
+providence
+doyle
+evangelical
+nixon
+cement
+carnegie
+embarked
+hatch
+surroundings
+guarantee
+needing
+pirate
+essence
+##bee
+filter
+crane
+hammond
+projected
+immune
+percy
+twelfth
+##ult
+regent
+doctoral
+damon
+mikhail
+##ichi
+lu
+critically
+elect
+realised
+abortion
+acute
+screening
+mythology
+steadily
+##fc
+frown
+nottingham
+kirk
+wa
+minneapolis
+##rra
+module
+algeria
+mc
+nautical
+encounters
+surprising
+statues
+availability
+shirts
+pie
+alma
+brows
+munster
+mack
+soup
+crater
+tornado
+sanskrit
+cedar
+explosive
+bordered
+dixon
+planets
+stamp
+exam
+happily
+##bble
+carriers
+kidnapped
+##vis
+accommodation
+emigrated
+##met
+knockout
+correspondent
+violation
+profits
+peaks
+lang
+specimen
+agenda
+ancestry
+pottery
+spelling
+equations
+obtaining
+ki
+linking
+1825
+debris
+asylum
+##20
+buddhism
+teddy
+##ants
+gazette
+##nger
+##sse
+dental
+eligibility
+utc
+fathers
+averaged
+zimbabwe
+francesco
+coloured
+hissed
+translator
+lynch
+mandate
+humanities
+mackenzie
+uniforms
+lin
+##iana
+##gio
+asset
+mhz
+fitting
+samantha
+genera
+wei
+rim
+beloved
+shark
+riot
+entities
+expressions
+indo
+carmen
+slipping
+owing
+abbot
+neighbor
+sidney
+##av
+rats
+recommendations
+encouraging
+squadrons
+anticipated
+commanders
+conquered
+##oto
+donations
+diagnosed
+##mond
+divide
+##iva
+guessed
+decoration
+vernon
+auditorium
+revelation
+conversations
+##kers
+##power
+herzegovina
+dash
+alike
+protested
+lateral
+herman
+accredited
+mg
+##gent
+freeman
+mel
+fiji
+crow
+crimson
+##rine
+livestock
+##pped
+humanitarian
+bored
+oz
+whip
+##lene
+##ali
+legitimate
+alter
+grinning
+spelled
+anxious
+oriental
+wesley
+##nin
+##hole
+carnival
+controller
+detect
+##ssa
+bowed
+educator
+kosovo
+macedonia
+##sin
+occupy
+mastering
+stephanie
+janeiro
+para
+unaware
+nurses
+noon
+135
+cam
+hopefully
+ranger
+combine
+sociology
+polar
+rica
+##eer
+neill
+##sman
+holocaust
+##ip
+doubled
+lust
+1828
+109
+decent
+cooling
+unveiled
+##card
+1829
+nsw
+homer
+chapman
+meyer
+##gin
+dive
+mae
+reagan
+expertise
+##gled
+darwin
+brooke
+sided
+prosecution
+investigating
+comprised
+petroleum
+genres
+reluctant
+differently
+trilogy
+johns
+vegetables
+corpse
+highlighted
+lounge
+pension
+unsuccessfully
+elegant
+aided
+ivory
+beatles
+amelia
+cain
+dubai
+sunny
+immigrant
+babe
+click
+##nder
+underwater
+pepper
+combining
+mumbled
+atlas
+horns
+accessed
+ballad
+physicians
+homeless
+gestured
+rpm
+freak
+louisville
+corporations
+patriots
+prizes
+rational
+warn
+modes
+decorative
+overnight
+din
+troubled
+phantom
+##ort
+monarch
+sheer
+##dorf
+generals
+guidelines
+organs
+addresses
+##zon
+enhance
+curling
+parishes
+cord
+##kie
+linux
+caesar
+deutsche
+bavaria
+##bia
+coleman
+cyclone
+##eria
+bacon
+petty
+##yama
+##old
+hampton
+diagnosis
+1824
+throws
+complexity
+rita
+disputed
+##₃
+pablo
+##sch
+marketed
+trafficking
+##ulus
+examine
+plague
+formats
+##oh
+vault
+faithful
+##bourne
+webster
+##ox
+highlights
+##ient
+##ann
+phones
+vacuum
+sandwich
+modeling
+##gated
+bolivia
+clergy
+qualities
+isabel
+##nas
+##ars
+wears
+screams
+reunited
+annoyed
+bra
+##ancy
+##rate
+differential
+transmitter
+tattoo
+container
+poker
+##och
+excessive
+resides
+cowboys
+##tum
+augustus
+trash
+providers
+statute
+retreated
+balcony
+reversed
+void
+storey
+preceded
+masses
+leap
+laughs
+neighborhoods
+wards
+schemes
+falcon
+santo
+battlefield
+pad
+ronnie
+thread
+lesbian
+venus
+##dian
+beg
+sandstone
+daylight
+punched
+gwen
+analog
+stroked
+wwe
+acceptable
+measurements
+dec
+toxic
+##kel
+adequate
+surgical
+economist
+parameters
+varsity
+##sberg
+quantity
+ella
+##chy
+##rton
+countess
+generating
+precision
+diamonds
+expressway
+ga
+##ı
+1821
+uruguay
+talents
+galleries
+expenses
+scanned
+colleague
+outlets
+ryder
+lucien
+##ila
+paramount
+##bon
+syracuse
+dim
+fangs
+gown
+sweep
+##sie
+toyota
+missionaries
+websites
+##nsis
+sentences
+adviser
+val
+trademark
+spells
+##plane
+patience
+starter
+slim
+##borg
+toe
+incredibly
+shoots
+elliot
+nobility
+##wyn
+cowboy
+endorsed
+gardner
+tendency
+persuaded
+organisms
+emissions
+kazakhstan
+amused
+boring
+chips
+themed
+##hand
+llc
+constantinople
+chasing
+systematic
+guatemala
+borrowed
+erin
+carey
+##hard
+highlands
+struggles
+1810
+##ifying
+##ced
+wong
+exceptions
+develops
+enlarged
+kindergarten
+castro
+##ern
+##rina
+leigh
+zombie
+juvenile
+##most
+consul
+##nar
+sailor
+hyde
+clarence
+intensive
+pinned
+nasty
+useless
+jung
+clayton
+stuffed
+exceptional
+ix
+apostolic
+230
+transactions
+##dge
+exempt
+swinging
+cove
+religions
+##ash
+shields
+dairy
+bypass
+190
+pursuing
+bug
+joyce
+bombay
+chassis
+southampton
+chat
+interact
+redesignated
+##pen
+nascar
+pray
+salmon
+rigid
+regained
+malaysian
+grim
+publicity
+constituted
+capturing
+toilet
+delegate
+purely
+tray
+drift
+loosely
+striker
+weakened
+trinidad
+mitch
+itv
+defines
+transmitted
+ming
+scarlet
+nodding
+fitzgerald
+fu
+narrowly
+sp
+tooth
+standings
+virtue
+##₁
+##wara
+##cting
+chateau
+gloves
+lid
+##nel
+hurting
+conservatory
+##pel
+sinclair
+reopened
+sympathy
+nigerian
+strode
+advocated
+optional
+chronic
+discharge
+##rc
+suck
+compatible
+laurel
+stella
+shi
+fails
+wage
+dodge
+128
+informal
+sorts
+levi
+buddha
+villagers
+##aka
+chronicles
+heavier
+summoned
+gateway
+3000
+eleventh
+jewelry
+translations
+accordingly
+seas
+##ency
+fiber
+pyramid
+cubic
+dragging
+##ista
+caring
+##ops
+android
+contacted
+lunar
+##dt
+kai
+lisbon
+patted
+1826
+sacramento
+theft
+madagascar
+subtropical
+disputes
+ta
+holidays
+piper
+willow
+mare
+cane
+itunes
+newfoundland
+benny
+companions
+dong
+raj
+observe
+roar
+charming
+plaque
+tibetan
+fossils
+enacted
+manning
+bubble
+tina
+tanzania
+##eda
+##hir
+funk
+swamp
+deputies
+cloak
+ufc
+scenario
+par
+scratch
+metals
+anthem
+guru
+engaging
+specially
+##boat
+dialects
+nineteen
+cecil
+duet
+disability
+messenger
+unofficial
+##lies
+defunct
+eds
+moonlight
+drainage
+surname
+puzzle
+honda
+switching
+conservatives
+mammals
+knox
+broadcaster
+sidewalk
+cope
+##ried
+benson
+princes
+peterson
+##sal
+bedford
+sharks
+eli
+wreck
+alberto
+gasp
+archaeology
+lgbt
+teaches
+securities
+madness
+compromise
+waving
+coordination
+davidson
+visions
+leased
+possibilities
+eighty
+jun
+fernandez
+enthusiasm
+assassin
+sponsorship
+reviewer
+kingdoms
+estonian
+laboratories
+##fy
+##nal
+applies
+verb
+celebrations
+##zzo
+rowing
+lightweight
+sadness
+submit
+mvp
+balanced
+dude
+##vas
+explicitly
+metric
+magnificent
+mound
+brett
+mohammad
+mistakes
+irregular
+##hing
+##ass
+sanders
+betrayed
+shipped
+surge
+##enburg
+reporters
+termed
+georg
+pity
+verbal
+bulls
+abbreviated
+enabling
+appealed
+##are
+##atic
+sicily
+sting
+heel
+sweetheart
+bart
+spacecraft
+brutal
+monarchy
+##tter
+aberdeen
+cameo
+diane
+##ub
+survivor
+clyde
+##aries
+complaint
+##makers
+clarinet
+delicious
+chilean
+karnataka
+coordinates
+1818
+panties
+##rst
+pretending
+ar
+dramatically
+kiev
+bella
+tends
+distances
+113
+catalog
+launching
+instances
+telecommunications
+portable
+lindsay
+vatican
+##eim
+angles
+aliens
+marker
+stint
+screens
+bolton
+##rne
+judy
+wool
+benedict
+plasma
+europa
+spark
+imaging
+filmmaker
+swiftly
+##een
+contributor
+##nor
+opted
+stamps
+apologize
+financing
+butter
+gideon
+sophisticated
+alignment
+avery
+chemicals
+yearly
+speculation
+prominence
+professionally
+##ils
+immortal
+institutional
+inception
+wrists
+identifying
+tribunal
+derives
+gains
+##wo
+papal
+preference
+linguistic
+vince
+operative
+brewery
+##ont
+unemployment
+boyd
+##ured
+##outs
+albeit
+prophet
+1813
+bi
+##rr
+##face
+##rad
+quarterly
+asteroid
+cleaned
+radius
+temper
+##llen
+telugu
+jerk
+viscount
+menu
+##ote
+glimpse
+##aya
+yacht
+hawaiian
+baden
+##rl
+laptop
+readily
+##gu
+monetary
+offshore
+scots
+watches
+##yang
+##arian
+upgrade
+needle
+xbox
+lea
+encyclopedia
+flank
+fingertips
+##pus
+delight
+teachings
+confirm
+roth
+beaches
+midway
+winters
+##iah
+teasing
+daytime
+beverly
+gambling
+bonnie
+##backs
+regulated
+clement
+hermann
+tricks
+knot
+##shing
+##uring
+##vre
+detached
+ecological
+owed
+specialty
+byron
+inventor
+bats
+stays
+screened
+unesco
+midland
+trim
+affection
+##ander
+##rry
+jess
+thoroughly
+feedback
+##uma
+chennai
+strained
+heartbeat
+wrapping
+overtime
+pleaded
+##sworth
+mon
+leisure
+oclc
+##tate
+##ele
+feathers
+angelo
+thirds
+nuts
+surveys
+clever
+gill
+commentator
+##dos
+darren
+rides
+gibraltar
+##nc
+##mu
+dissolution
+dedication
+shin
+meals
+saddle
+elvis
+reds
+chaired
+taller
+appreciation
+functioning
+niece
+favored
+advocacy
+robbie
+criminals
+suffolk
+yugoslav
+passport
+constable
+congressman
+hastings
+vera
+##rov
+consecrated
+sparks
+ecclesiastical
+confined
+##ovich
+muller
+floyd
+nora
+1822
+paved
+1827
+cumberland
+ned
+saga
+spiral
+##flow
+appreciated
+yi
+collaborative
+treating
+similarities
+feminine
+finishes
+##ib
+jade
+import
+##nse
+##hot
+champagne
+mice
+securing
+celebrities
+helsinki
+attributes
+##gos
+cousins
+phases
+ache
+lucia
+gandhi
+submission
+vicar
+spear
+shine
+tasmania
+biting
+detention
+constitute
+tighter
+seasonal
+##gus
+terrestrial
+matthews
+##oka
+effectiveness
+parody
+philharmonic
+##onic
+1816
+strangers
+encoded
+consortium
+guaranteed
+regards
+shifts
+tortured
+collision
+supervisor
+inform
+broader
+insight
+theaters
+armour
+emeritus
+blink
+incorporates
+mapping
+##50
+##ein
+handball
+flexible
+##nta
+substantially
+generous
+thief
+##own
+carr
+loses
+1793
+prose
+ucla
+romeo
+generic
+metallic
+realization
+damages
+mk
+commissioners
+zach
+default
+##ther
+helicopters
+lengthy
+stems
+spa
+partnered
+spectators
+rogue
+indication
+penalties
+teresa
+1801
+sen
+##tric
+dalton
+##wich
+irving
+photographic
+##vey
+dell
+deaf
+peters
+excluded
+unsure
+##vable
+patterson
+crawled
+##zio
+resided
+whipped
+latvia
+slower
+ecole
+pipes
+employers
+maharashtra
+comparable
+va
+textile
+pageant
+##gel
+alphabet
+binary
+irrigation
+chartered
+choked
+antoine
+offs
+waking
+supplement
+##wen
+quantities
+demolition
+regain
+locate
+urdu
+folks
+alt
+114
+##mc
+scary
+andreas
+whites
+##ava
+classrooms
+mw
+aesthetic
+publishes
+valleys
+guides
+cubs
+johannes
+bryant
+conventions
+affecting
+##itt
+drain
+awesome
+isolation
+prosecutor
+ambitious
+apology
+captive
+downs
+atmospheric
+lorenzo
+aisle
+beef
+foul
+##onia
+kidding
+composite
+disturbed
+illusion
+natives
+##ffer
+emi
+rockets
+riverside
+wartime
+painters
+adolf
+melted
+##ail
+uncertainty
+simulation
+hawks
+progressed
+meantime
+builder
+spray
+breach
+unhappy
+regina
+russians
+##urg
+determining
+##tation
+tram
+1806
+##quin
+aging
+##12
+1823
+garion
+rented
+mister
+diaz
+terminated
+clip
+1817
+depend
+nervously
+disco
+owe
+defenders
+shiva
+notorious
+disbelief
+shiny
+worcester
+##gation
+##yr
+trailing
+undertook
+islander
+belarus
+limitations
+watershed
+fuller
+overlooking
+utilized
+raphael
+1819
+synthetic
+breakdown
+klein
+##nate
+moaned
+memoir
+lamb
+practicing
+##erly
+cellular
+arrows
+exotic
+##graphy
+witches
+117
+charted
+rey
+hut
+hierarchy
+subdivision
+freshwater
+giuseppe
+aloud
+reyes
+qatar
+marty
+sideways
+utterly
+sexually
+jude
+prayers
+mccarthy
+softball
+blend
+damien
+##gging
+##metric
+wholly
+erupted
+lebanese
+negro
+revenues
+tasted
+comparative
+teamed
+transaction
+labeled
+maori
+sovereignty
+parkway
+trauma
+gran
+malay
+121
+advancement
+descendant
+2020
+buzz
+salvation
+inventory
+symbolic
+##making
+antarctica
+mps
+##gas
+##bro
+mohammed
+myanmar
+holt
+submarines
+tones
+##lman
+locker
+patriarch
+bangkok
+emerson
+remarks
+predators
+kin
+afghan
+confession
+norwich
+rental
+emerge
+advantages
+##zel
+rca
+##hold
+shortened
+storms
+aidan
+##matic
+autonomy
+compliance
+##quet
+dudley
+atp
+##osis
+1803
+motto
+documentation
+summary
+professors
+spectacular
+christina
+archdiocese
+flashing
+innocence
+remake
+##dell
+psychic
+reef
+scare
+employ
+rs
+sticks
+meg
+gus
+leans
+##ude
+accompany
+bergen
+tomas
+##iko
+doom
+wages
+pools
+##nch
+##bes
+breasts
+scholarly
+alison
+outline
+brittany
+breakthrough
+willis
+realistic
+##cut
+##boro
+competitor
+##stan
+pike
+picnic
+icon
+designing
+commercials
+washing
+villain
+skiing
+micro
+costumes
+auburn
+halted
+executives
+##hat
+logistics
+cycles
+vowel
+applicable
+barrett
+exclaimed
+eurovision
+eternity
+ramon
+##umi
+##lls
+modifications
+sweeping
+disgust
+##uck
+torch
+aviv
+ensuring
+rude
+dusty
+sonic
+donovan
+outskirts
+cu
+pathway
+##band
+##gun
+##lines
+disciplines
+acids
+cadet
+paired
+##40
+sketches
+##sive
+marriages
+##⁺
+folding
+peers
+slovak
+implies
+admired
+##beck
+1880s
+leopold
+instinct
+attained
+weston
+megan
+horace
+##ination
+dorsal
+ingredients
+evolutionary
+##its
+complications
+deity
+lethal
+brushing
+levy
+deserted
+institutes
+posthumously
+delivering
+telescope
+coronation
+motivated
+rapids
+luc
+flicked
+pays
+volcano
+tanner
+weighed
+##nica
+crowds
+frankie
+gifted
+addressing
+granddaughter
+winding
+##rna
+constantine
+gomez
+##front
+landscapes
+rudolf
+anthropology
+slate
+werewolf
+##lio
+astronomy
+circa
+rouge
+dreaming
+sack
+knelt
+drowned
+naomi
+prolific
+tracked
+freezing
+herb
+##dium
+agony
+randall
+twisting
+wendy
+deposit
+touches
+vein
+wheeler
+##bbled
+##bor
+batted
+retaining
+tire
+presently
+compare
+specification
+daemon
+nigel
+##grave
+merry
+recommendation
+czechoslovakia
+sandra
+ng
+roma
+##sts
+lambert
+inheritance
+sheikh
+winchester
+cries
+examining
+##yle
+comeback
+cuisine
+nave
+##iv
+ko
+retrieve
+tomatoes
+barker
+polished
+defining
+irene
+lantern
+personalities
+begging
+tract
+swore
+1809
+175
+##gic
+omaha
+brotherhood
+##rley
+haiti
+##ots
+exeter
+##ete
+##zia
+steele
+dumb
+pearson
+210
+surveyed
+elisabeth
+trends
+##ef
+fritz
+##rf
+premium
+bugs
+fraction
+calmly
+viking
+##birds
+tug
+inserted
+unusually
+##ield
+confronted
+distress
+crashing
+brent
+turks
+resign
+##olo
+cambodia
+gabe
+sauce
+##kal
+evelyn
+116
+extant
+clusters
+quarry
+teenagers
+luna
+##lers
+##ister
+affiliation
+drill
+##ashi
+panthers
+scenic
+libya
+anita
+strengthen
+inscriptions
+##cated
+lace
+sued
+judith
+riots
+##uted
+mint
+##eta
+preparations
+midst
+dub
+challenger
+##vich
+mock
+cf
+displaced
+wicket
+breaths
+enables
+schmidt
+analyst
+##lum
+ag
+highlight
+automotive
+axe
+josef
+newark
+sufficiently
+resembles
+50th
+##pal
+flushed
+mum
+traits
+##ante
+commodore
+incomplete
+warming
+titular
+ceremonial
+ethical
+118
+celebrating
+eighteenth
+cao
+lima
+medalist
+mobility
+strips
+snakes
+##city
+miniature
+zagreb
+barton
+escapes
+umbrella
+automated
+doubted
+differs
+cooled
+georgetown
+dresden
+cooked
+fade
+wyatt
+rna
+jacobs
+carlton
+abundant
+stereo
+boost
+madras
+inning
+##hia
+spur
+ip
+malayalam
+begged
+osaka
+groan
+escaping
+charging
+dose
+vista
+##aj
+bud
+papa
+communists
+advocates
+edged
+tri
+##cent
+resemble
+peaking
+necklace
+fried
+montenegro
+saxony
+goose
+glances
+stuttgart
+curator
+recruit
+grocery
+sympathetic
+##tting
+##fort
+127
+lotus
+randolph
+ancestor
+##rand
+succeeding
+jupiter
+1798
+macedonian
+##heads
+hiking
+1808
+handing
+fischer
+##itive
+garbage
+node
+##pies
+prone
+singular
+papua
+inclined
+attractions
+italia
+pouring
+motioned
+grandma
+garnered
+jacksonville
+corp
+ego
+ringing
+aluminum
+##hausen
+ordering
+##foot
+drawer
+traders
+synagogue
+##play
+##kawa
+resistant
+wandering
+fragile
+fiona
+teased
+var
+hardcore
+soaked
+jubilee
+decisive
+exposition
+mercer
+poster
+valencia
+hale
+kuwait
+1811
+##ises
+##wr
+##eed
+tavern
+gamma
+122
+johan
+##uer
+airways
+amino
+gil
+##ury
+vocational
+domains
+torres
+##sp
+generator
+folklore
+outcomes
+##keeper
+canberra
+shooter
+fl
+beams
+confrontation
+##lling
+##gram
+feb
+aligned
+forestry
+pipeline
+jax
+motorway
+conception
+decay
+##tos
+coffin
+##cott
+stalin
+1805
+escorted
+minded
+##nam
+sitcom
+purchasing
+twilight
+veronica
+additions
+passive
+tensions
+straw
+123
+frequencies
+1804
+refugee
+cultivation
+##iate
+christie
+clary
+bulletin
+crept
+disposal
+##rich
+##zong
+processor
+crescent
+##rol
+bmw
+emphasized
+whale
+nazis
+aurora
+##eng
+dwelling
+hauled
+sponsors
+toledo
+mega
+ideology
+theatres
+tessa
+cerambycidae
+saves
+turtle
+cone
+suspects
+kara
+rusty
+yelling
+greeks
+mozart
+shades
+cocked
+participant
+##tro
+shire
+spit
+freeze
+necessity
+##cos
+inmates
+nielsen
+councillors
+loaned
+uncommon
+omar
+peasants
+botanical
+offspring
+daniels
+formations
+jokes
+1794
+pioneers
+sigma
+licensing
+##sus
+wheelchair
+polite
+1807
+liquor
+pratt
+trustee
+##uta
+forewings
+balloon
+##zz
+kilometre
+camping
+explicit
+casually
+shawn
+foolish
+teammates
+nm
+hassan
+carrie
+judged
+satisfy
+vanessa
+knives
+selective
+cnn
+flowed
+##lice
+eclipse
+stressed
+eliza
+mathematician
+cease
+cultivated
+##roy
+commissions
+browns
+##ania
+destroyers
+sheridan
+meadow
+##rius
+minerals
+##cial
+downstream
+clash
+gram
+memoirs
+ventures
+baha
+seymour
+archie
+midlands
+edith
+fare
+flynn
+invite
+canceled
+tiles
+stabbed
+boulder
+incorporate
+amended
+camden
+facial
+mollusk
+unreleased
+descriptions
+yoga
+grabs
+550
+raises
+ramp
+shiver
+##rose
+coined
+pioneering
+tunes
+qing
+warwick
+tops
+119
+melanie
+giles
+##rous
+wandered
+##inal
+annexed
+nov
+30th
+unnamed
+##ished
+organizational
+airplane
+normandy
+stoke
+whistle
+blessing
+violations
+chased
+holders
+shotgun
+##ctic
+outlet
+reactor
+##vik
+tires
+tearing
+shores
+fortified
+mascot
+constituencies
+nc
+columnist
+productive
+tibet
+##rta
+lineage
+hooked
+oct
+tapes
+judging
+cody
+##gger
+hansen
+kashmir
+triggered
+##eva
+solved
+cliffs
+##tree
+resisted
+anatomy
+protesters
+transparent
+implied
+##iga
+injection
+mattress
+excluding
+##mbo
+defenses
+helpless
+devotion
+##elli
+growl
+liberals
+weber
+phenomena
+atoms
+plug
+##iff
+mortality
+apprentice
+howe
+convincing
+aaa
+swimmer
+barber
+leone
+promptly
+sodium
+def
+nowadays
+arise
+##oning
+gloucester
+corrected
+dignity
+norm
+erie
+##ders
+elders
+evacuated
+sylvia
+compression
+##yar
+hartford
+pose
+backpack
+reasoning
+accepts
+24th
+wipe
+millimetres
+marcel
+##oda
+dodgers
+albion
+1790
+overwhelmed
+aerospace
+oaks
+1795
+showcase
+acknowledge
+recovering
+nolan
+ashe
+hurts
+geology
+fashioned
+disappearance
+farewell
+swollen
+shrug
+marquis
+wimbledon
+124
+rue
+1792
+commemorate
+reduces
+experiencing
+inevitable
+calcutta
+intel
+##court
+murderer
+sticking
+fisheries
+imagery
+bloom
+280
+brake
+##inus
+gustav
+hesitation
+memorable
+po
+viral
+beans
+accidents
+tunisia
+antenna
+spilled
+consort
+treatments
+aye
+perimeter
+##gard
+donation
+hostage
+migrated
+banker
+addiction
+apex
+lil
+trout
+##ously
+conscience
+##nova
+rams
+sands
+genome
+passionate
+troubles
+##lets
+##set
+amid
+##ibility
+##ret
+higgins
+exceed
+vikings
+##vie
+payne
+##zan
+muscular
+##ste
+defendant
+sucking
+##wal
+ibrahim
+fuselage
+claudia
+vfl
+europeans
+snails
+interval
+##garh
+preparatory
+statewide
+tasked
+lacrosse
+viktor
+##lation
+angola
+##hra
+flint
+implications
+employs
+teens
+patrons
+stall
+weekends
+barriers
+scrambled
+nucleus
+tehran
+jenna
+parsons
+lifelong
+robots
+displacement
+5000
+##bles
+precipitation
+##gt
+knuckles
+clutched
+1802
+marrying
+ecology
+marx
+accusations
+declare
+scars
+kolkata
+mat
+meadows
+bermuda
+skeleton
+finalists
+vintage
+crawl
+coordinate
+affects
+subjected
+orchestral
+mistaken
+##tc
+mirrors
+dipped
+relied
+260
+arches
+candle
+##nick
+incorporating
+wildly
+fond
+basilica
+owl
+fringe
+rituals
+whispering
+stirred
+feud
+tertiary
+slick
+goat
+honorable
+whereby
+skip
+ricardo
+stripes
+parachute
+adjoining
+submerged
+synthesizer
+##gren
+intend
+positively
+ninety
+phi
+beaver
+partition
+fellows
+alexis
+prohibition
+carlisle
+bizarre
+fraternity
+##bre
+doubts
+icy
+cbc
+aquatic
+sneak
+sonny
+combines
+airports
+crude
+supervised
+spatial
+merge
+alfonso
+##bic
+corrupt
+scan
+undergo
+##ams
+disabilities
+colombian
+comparing
+dolphins
+perkins
+##lish
+reprinted
+unanimous
+bounced
+hairs
+underworld
+midwest
+semester
+bucket
+paperback
+miniseries
+coventry
+demise
+##leigh
+demonstrations
+sensor
+rotating
+yan
+##hler
+arrange
+soils
+##idge
+hyderabad
+labs
+##dr
+brakes
+grandchildren
+##nde
+negotiated
+rover
+ferrari
+continuation
+directorate
+augusta
+stevenson
+counterpart
+gore
+##rda
+nursery
+rican
+ave
+collectively
+broadly
+pastoral
+repertoire
+asserted
+discovering
+nordic
+styled
+fiba
+cunningham
+harley
+middlesex
+survives
+tumor
+tempo
+zack
+aiming
+lok
+urgent
+##rade
+##nto
+devils
+##ement
+contractor
+turin
+##wl
+##ool
+bliss
+repaired
+simmons
+moan
+astronomical
+cr
+negotiate
+lyric
+1890s
+lara
+bred
+clad
+angus
+pbs
+##ience
+engineered
+posed
+##lk
+hernandez
+possessions
+elbows
+psychiatric
+strokes
+confluence
+electorate
+lifts
+campuses
+lava
+alps
+##ep
+##ution
+##date
+physicist
+woody
+##page
+##ographic
+##itis
+juliet
+reformation
+sparhawk
+320
+complement
+suppressed
+jewel
+##½
+floated
+##kas
+continuity
+sadly
+##ische
+inability
+melting
+scanning
+paula
+flour
+judaism
+safer
+vague
+##lm
+solving
+curb
+##stown
+financially
+gable
+bees
+expired
+miserable
+cassidy
+dominion
+1789
+cupped
+145
+robbery
+facto
+amos
+warden
+resume
+tallest
+marvin
+ing
+pounded
+usd
+declaring
+gasoline
+##aux
+darkened
+270
+650
+sophomore
+##mere
+erection
+gossip
+televised
+risen
+dial
+##eu
+pillars
+##link
+passages
+profound
+##tina
+arabian
+ashton
+silicon
+nail
+##ead
+##lated
+##wer
+##hardt
+fleming
+firearms
+ducked
+circuits
+blows
+waterloo
+titans
+##lina
+atom
+fireplace
+cheshire
+financed
+activation
+algorithms
+##zzi
+constituent
+catcher
+cherokee
+partnerships
+sexuality
+platoon
+tragic
+vivian
+guarded
+whiskey
+meditation
+poetic
+##late
+##nga
+##ake
+porto
+listeners
+dominance
+kendra
+mona
+chandler
+factions
+22nd
+salisbury
+attitudes
+derivative
+##ido
+##haus
+intake
+paced
+javier
+illustrator
+barrels
+bias
+cockpit
+burnett
+dreamed
+ensuing
+##anda
+receptors
+someday
+hawkins
+mattered
+##lal
+slavic
+1799
+jesuit
+cameroon
+wasted
+tai
+wax
+lowering
+victorious
+freaking
+outright
+hancock
+librarian
+sensing
+bald
+calcium
+myers
+tablet
+announcing
+barack
+shipyard
+pharmaceutical
+##uan
+greenwich
+flush
+medley
+patches
+wolfgang
+pt
+speeches
+acquiring
+exams
+nikolai
+##gg
+hayden
+kannada
+##type
+reilly
+##pt
+waitress
+abdomen
+devastated
+capped
+pseudonym
+pharmacy
+fulfill
+paraguay
+1796
+clicked
+##trom
+archipelago
+syndicated
+##hman
+lumber
+orgasm
+rejection
+clifford
+lorraine
+advent
+mafia
+rodney
+brock
+##ght
+##used
+##elia
+cassette
+chamberlain
+despair
+mongolia
+sensors
+developmental
+upstream
+##eg
+##alis
+spanning
+165
+trombone
+basque
+seeded
+interred
+renewable
+rhys
+leapt
+revision
+molecule
+##ages
+chord
+vicious
+nord
+shivered
+23rd
+arlington
+debts
+corpus
+sunrise
+bays
+blackburn
+centimetres
+##uded
+shuddered
+gm
+strangely
+gripping
+cartoons
+isabelle
+orbital
+##ppa
+seals
+proving
+##lton
+refusal
+strengthened
+bust
+assisting
+baghdad
+batsman
+portrayal
+mara
+pushes
+spears
+og
+##cock
+reside
+nathaniel
+brennan
+1776
+confirmation
+caucus
+##worthy
+markings
+yemen
+nobles
+ku
+lazy
+viewer
+catalan
+encompasses
+sawyer
+##fall
+sparked
+substances
+patents
+braves
+arranger
+evacuation
+sergio
+persuade
+dover
+tolerance
+penguin
+cum
+jockey
+insufficient
+townships
+occupying
+declining
+plural
+processed
+projection
+puppet
+flanders
+introduces
+liability
+##yon
+gymnastics
+antwerp
+taipei
+hobart
+candles
+jeep
+wes
+observers
+126
+chaplain
+bundle
+glorious
+##hine
+hazel
+flung
+sol
+excavations
+dumped
+stares
+sh
+bangalore
+triangular
+icelandic
+intervals
+expressing
+turbine
+##vers
+songwriting
+crafts
+##igo
+jasmine
+ditch
+rite
+##ways
+entertaining
+comply
+sorrow
+wrestlers
+basel
+emirates
+marian
+rivera
+helpful
+##some
+caution
+downward
+networking
+##atory
+##tered
+darted
+genocide
+emergence
+replies
+specializing
+spokesman
+convenient
+unlocked
+fading
+augustine
+concentrations
+resemblance
+elijah
+investigator
+andhra
+##uda
+promotes
+bean
+##rrell
+fleeing
+wan
+simone
+announcer
+##ame
+##bby
+lydia
+weaver
+132
+residency
+modification
+##fest
+stretches
+##ast
+alternatively
+nat
+lowe
+lacks
+##ented
+pam
+tile
+concealed
+inferior
+abdullah
+residences
+tissues
+vengeance
+##ided
+moisture
+peculiar
+groove
+zip
+bologna
+jennings
+ninja
+oversaw
+zombies
+pumping
+batch
+livingston
+emerald
+installations
+1797
+peel
+nitrogen
+rama
+##fying
+##star
+schooling
+strands
+responding
+werner
+##ost
+lime
+casa
+accurately
+targeting
+##rod
+underway
+##uru
+hemisphere
+lester
+##yard
+occupies
+2d
+griffith
+angrily
+reorganized
+##owing
+courtney
+deposited
+##dd
+##30
+estadio
+##ifies
+dunn
+exiled
+##ying
+checks
+##combe
+##о
+##fly
+successes
+unexpectedly
+blu
+assessed
+##flower
+##ه
+observing
+sacked
+spiders
+kn
+##tail
+mu
+nodes
+prosperity
+audrey
+divisional
+155
+broncos
+tangled
+adjust
+feeds
+erosion
+paolo
+surf
+directory
+snatched
+humid
+admiralty
+screwed
+gt
+reddish
+##nese
+modules
+trench
+lamps
+bind
+leah
+bucks
+competes
+##nz
+##form
+transcription
+##uc
+isles
+violently
+clutching
+pga
+cyclist
+inflation
+flats
+ragged
+unnecessary
+##hian
+stubborn
+coordinated
+harriet
+baba
+disqualified
+330
+insect
+wolfe
+##fies
+reinforcements
+rocked
+duel
+winked
+embraced
+bricks
+##raj
+hiatus
+defeats
+pending
+brightly
+jealousy
+##xton
+##hm
+##uki
+lena
+gdp
+colorful
+##dley
+stein
+kidney
+##shu
+underwear
+wanderers
+##haw
+##icus
+guardians
+m³
+roared
+habits
+##wise
+permits
+gp
+uranium
+punished
+disguise
+bundesliga
+elise
+dundee
+erotic
+partisan
+pi
+collectors
+float
+individually
+rendering
+behavioral
+bucharest
+ser
+hare
+valerie
+corporal
+nutrition
+proportional
+##isa
+immense
+##kis
+pavement
+##zie
+##eld
+sutherland
+crouched
+1775
+##lp
+suzuki
+trades
+endurance
+operas
+crosby
+prayed
+priory
+rory
+socially
+##urn
+gujarat
+##pu
+walton
+cube
+pasha
+privilege
+lennon
+floods
+thorne
+waterfall
+nipple
+scouting
+approve
+##lov
+minorities
+voter
+dwight
+extensions
+assure
+ballroom
+slap
+dripping
+privileges
+rejoined
+confessed
+demonstrating
+patriotic
+yell
+investor
+##uth
+pagan
+slumped
+squares
+##cle
+##kins
+confront
+bert
+embarrassment
+##aid
+aston
+urging
+sweater
+starr
+yuri
+brains
+williamson
+commuter
+mortar
+structured
+selfish
+exports
+##jon
+cds
+##him
+unfinished
+##rre
+mortgage
+destinations
+##nagar
+canoe
+solitary
+buchanan
+delays
+magistrate
+fk
+##pling
+motivation
+##lier
+##vier
+recruiting
+assess
+##mouth
+malik
+antique
+1791
+pius
+rahman
+reich
+tub
+zhou
+smashed
+airs
+galway
+xii
+conditioning
+honduras
+discharged
+dexter
+##pf
+lionel
+129
+debates
+lemon
+tiffany
+volunteered
+dom
+dioxide
+procession
+devi
+sic
+tremendous
+advertisements
+colts
+transferring
+verdict
+hanover
+decommissioned
+utter
+relate
+pac
+racism
+##top
+beacon
+limp
+similarity
+terra
+occurrence
+ant
+##how
+becky
+capt
+updates
+armament
+richie
+pal
+##graph
+halloween
+mayo
+##ssen
+##bone
+cara
+serena
+fcc
+dolls
+obligations
+##dling
+violated
+lafayette
+jakarta
+exploitation
+##ime
+infamous
+iconic
+##lah
+##park
+kitty
+moody
+reginald
+dread
+spill
+crystals
+olivier
+modeled
+bluff
+equilibrium
+separating
+notices
+ordnance
+extinction
+onset
+cosmic
+attachment
+sammy
+expose
+privy
+anchored
+##bil
+abbott
+admits
+bending
+baritone
+emmanuel
+policeman
+vaughan
+winged
+climax
+dresses
+denny
+polytechnic
+mohamed
+burmese
+authentic
+nikki
+genetics
+grandparents
+homestead
+gaza
+postponed
+metacritic
+una
+##sby
+##bat
+unstable
+dissertation
+##rial
+##cian
+curls
+obscure
+uncovered
+bronx
+praying
+disappearing
+##hoe
+prehistoric
+coke
+turret
+mutations
+nonprofit
+pits
+monaco
+##ي
+##usion
+prominently
+dispatched
+podium
+##mir
+uci
+##uation
+133
+fortifications
+birthplace
+kendall
+##lby
+##oll
+preacher
+rack
+goodman
+##rman
+persistent
+##ott
+countless
+jaime
+recorder
+lexington
+persecution
+jumps
+renewal
+wagons
+##11
+crushing
+##holder
+decorations
+##lake
+abundance
+wrath
+laundry
+£1
+garde
+##rp
+jeanne
+beetles
+peasant
+##sl
+splitting
+caste
+sergei
+##rer
+##ema
+scripts
+##ively
+rub
+satellites
+##vor
+inscribed
+verlag
+scrapped
+gale
+packages
+chick
+potato
+slogan
+kathleen
+arabs
+##culture
+counterparts
+reminiscent
+choral
+##tead
+rand
+retains
+bushes
+dane
+accomplish
+courtesy
+closes
+##oth
+slaughter
+hague
+krakow
+lawson
+tailed
+elias
+ginger
+##ttes
+canopy
+betrayal
+rebuilding
+turf
+##hof
+frowning
+allegiance
+brigades
+kicks
+rebuild
+polls
+alias
+nationalism
+td
+rowan
+audition
+bowie
+fortunately
+recognizes
+harp
+dillon
+horrified
+##oro
+renault
+##tics
+ropes
+##α
+presumed
+rewarded
+infrared
+wiping
+accelerated
+illustration
+##rid
+presses
+practitioners
+badminton
+##iard
+detained
+##tera
+recognizing
+relates
+misery
+##sies
+##tly
+reproduction
+piercing
+potatoes
+thornton
+esther
+manners
+hbo
+##aan
+ours
+bullshit
+ernie
+perennial
+sensitivity
+illuminated
+rupert
+##jin
+##iss
+##ear
+rfc
+nassau
+##dock
+staggered
+socialism
+##haven
+appointments
+nonsense
+prestige
+sharma
+haul
+##tical
+solidarity
+gps
+##ook
+##rata
+igor
+pedestrian
+##uit
+baxter
+tenants
+wires
+medication
+unlimited
+guiding
+impacts
+diabetes
+##rama
+sasha
+pas
+clive
+extraction
+131
+continually
+constraints
+##bilities
+sonata
+hunted
+sixteenth
+chu
+planting
+quote
+mayer
+pretended
+abs
+spat
+##hua
+ceramic
+##cci
+curtains
+pigs
+pitching
+##dad
+latvian
+sore
+dayton
+##sted
+##qi
+patrols
+slice
+playground
+##nted
+shone
+stool
+apparatus
+inadequate
+mates
+treason
+##ija
+desires
+##liga
+##croft
+somalia
+laurent
+mir
+leonardo
+oracle
+grape
+obliged
+chevrolet
+thirteenth
+stunning
+enthusiastic
+##ede
+accounted
+concludes
+currents
+basil
+##kovic
+drought
+##rica
+mai
+##aire
+shove
+posting
+##shed
+pilgrimage
+humorous
+packing
+fry
+pencil
+wines
+smells
+144
+marilyn
+aching
+newest
+clung
+bon
+neighbours
+sanctioned
+##pie
+mug
+##stock
+drowning
+##mma
+hydraulic
+##vil
+hiring
+reminder
+lilly
+investigators
+##ncies
+sour
+##eous
+compulsory
+packet
+##rion
+##graphic
+##elle
+cannes
+##inate
+depressed
+##rit
+heroic
+importantly
+theresa
+##tled
+conway
+saturn
+marginal
+rae
+##xia
+corresponds
+royce
+pact
+jasper
+explosives
+packaging
+aluminium
+##ttered
+denotes
+rhythmic
+spans
+assignments
+hereditary
+outlined
+originating
+sundays
+lad
+reissued
+greeting
+beatrice
+##dic
+pillar
+marcos
+plots
+handbook
+alcoholic
+judiciary
+avant
+slides
+extract
+masculine
+blur
+##eum
+##force
+homage
+trembled
+owens
+hymn
+trey
+omega
+signaling
+socks
+accumulated
+reacted
+attic
+theo
+lining
+angie
+distraction
+primera
+talbot
+##key
+1200
+ti
+creativity
+billed
+##hey
+deacon
+eduardo
+identifies
+proposition
+dizzy
+gunner
+hogan
+##yam
+##pping
+##hol
+ja
+##chan
+jensen
+reconstructed
+##berger
+clearance
+darius
+##nier
+abe
+harlem
+plea
+dei
+circled
+emotionally
+notation
+fascist
+neville
+exceeded
+upwards
+viable
+ducks
+##fo
+workforce
+racer
+limiting
+shri
+##lson
+possesses
+1600
+kerr
+moths
+devastating
+laden
+disturbing
+locking
+##cture
+gal
+fearing
+accreditation
+flavor
+aide
+1870s
+mountainous
+##baum
+melt
+##ures
+motel
+texture
+servers
+soda
+##mb
+herd
+##nium
+erect
+puzzled
+hum
+peggy
+examinations
+gould
+testified
+geoff
+ren
+devised
+sacks
+##law
+denial
+posters
+grunted
+cesar
+tutor
+ec
+gerry
+offerings
+byrne
+falcons
+combinations
+ct
+incoming
+pardon
+rocking
+26th
+avengers
+flared
+mankind
+seller
+uttar
+loch
+nadia
+stroking
+exposing
+##hd
+fertile
+ancestral
+instituted
+##has
+noises
+prophecy
+taxation
+eminent
+vivid
+pol
+##bol
+dart
+indirect
+multimedia
+notebook
+upside
+displaying
+adrenaline
+referenced
+geometric
+##iving
+progression
+##ddy
+blunt
+announce
+##far
+implementing
+##lav
+aggression
+liaison
+cooler
+cares
+headache
+plantations
+gorge
+dots
+impulse
+thickness
+ashamed
+averaging
+kathy
+obligation
+precursor
+137
+fowler
+symmetry
+thee
+225
+hears
+##rai
+undergoing
+ads
+butcher
+bowler
+##lip
+cigarettes
+subscription
+goodness
+##ically
+browne
+##hos
+##tech
+kyoto
+donor
+##erty
+damaging
+friction
+drifting
+expeditions
+hardened
+prostitution
+152
+fauna
+blankets
+claw
+tossing
+snarled
+butterflies
+recruits
+investigative
+coated
+healed
+138
+communal
+hai
+xiii
+academics
+boone
+psychologist
+restless
+lahore
+stephens
+mba
+brendan
+foreigners
+printer
+##pc
+ached
+explode
+27th
+deed
+scratched
+dared
+##pole
+cardiac
+1780
+okinawa
+proto
+commando
+compelled
+oddly
+electrons
+##base
+replica
+thanksgiving
+##rist
+sheila
+deliberate
+stafford
+tidal
+representations
+hercules
+ou
+##path
+##iated
+kidnapping
+lenses
+##tling
+deficit
+samoa
+mouths
+consuming
+computational
+maze
+granting
+smirk
+razor
+fixture
+ideals
+inviting
+aiden
+nominal
+##vs
+issuing
+julio
+pitt
+ramsey
+docks
+##oss
+exhaust
+##owed
+bavarian
+draped
+anterior
+mating
+ethiopian
+explores
+noticing
+##nton
+discarded
+convenience
+hoffman
+endowment
+beasts
+cartridge
+mormon
+paternal
+probe
+sleeves
+interfere
+lump
+deadline
+##rail
+jenks
+bulldogs
+scrap
+alternating
+justified
+reproductive
+nam
+seize
+descending
+secretariat
+kirby
+coupe
+grouped
+smash
+panther
+sedan
+tapping
+##18
+lola
+cheer
+germanic
+unfortunate
+##eter
+unrelated
+##fan
+subordinate
+##sdale
+suzanne
+advertisement
+##ility
+horsepower
+##lda
+cautiously
+discourse
+luigi
+##mans
+##fields
+noun
+prevalent
+mao
+schneider
+everett
+surround
+governorate
+kira
+##avia
+westward
+##take
+misty
+rails
+sustainability
+134
+unused
+##rating
+packs
+toast
+unwilling
+regulate
+thy
+suffrage
+nile
+awe
+assam
+definitions
+travelers
+affordable
+##rb
+conferred
+sells
+undefeated
+beneficial
+torso
+basal
+repeating
+remixes
+##pass
+bahrain
+cables
+fang
+##itated
+excavated
+numbering
+statutory
+##rey
+deluxe
+##lian
+forested
+ramirez
+derbyshire
+zeus
+slamming
+transfers
+astronomer
+banana
+lottery
+berg
+histories
+bamboo
+##uchi
+resurrection
+posterior
+bowls
+vaguely
+##thi
+thou
+preserving
+tensed
+offence
+##inas
+meyrick
+callum
+ridden
+watt
+langdon
+tying
+lowland
+snorted
+daring
+truman
+##hale
+##girl
+aura
+overly
+filing
+weighing
+goa
+infections
+philanthropist
+saunders
+eponymous
+##owski
+latitude
+perspectives
+reviewing
+mets
+commandant
+radial
+##kha
+flashlight
+reliability
+koch
+vowels
+amazed
+ada
+elaine
+supper
+##rth
+##encies
+predator
+debated
+soviets
+cola
+##boards
+##nah
+compartment
+crooked
+arbitrary
+fourteenth
+##ctive
+havana
+majors
+steelers
+clips
+profitable
+ambush
+exited
+packers
+##tile
+nude
+cracks
+fungi
+##е
+limb
+trousers
+josie
+shelby
+tens
+frederic
+##ος
+definite
+smoothly
+constellation
+insult
+baton
+discs
+lingering
+##nco
+conclusions
+lent
+staging
+becker
+grandpa
+shaky
+##tron
+einstein
+obstacles
+sk
+adverse
+elle
+economically
+##moto
+mccartney
+thor
+dismissal
+motions
+readings
+nostrils
+treatise
+##pace
+squeezing
+evidently
+prolonged
+1783
+venezuelan
+je
+marguerite
+beirut
+takeover
+shareholders
+##vent
+denise
+digit
+airplay
+norse
+##bbling
+imaginary
+pills
+hubert
+blaze
+vacated
+eliminating
+##ello
+vine
+mansfield
+##tty
+retrospective
+barrow
+borne
+clutch
+bail
+forensic
+weaving
+##nett
+##witz
+desktop
+citadel
+promotions
+worrying
+dorset
+ieee
+subdivided
+##iating
+manned
+expeditionary
+pickup
+synod
+chuckle
+185
+barney
+##rz
+##ffin
+functionality
+karachi
+litigation
+meanings
+uc
+lick
+turbo
+anders
+##ffed
+execute
+curl
+oppose
+ankles
+typhoon
+##د
+##ache
+##asia
+linguistics
+compassion
+pressures
+grazing
+perfection
+##iting
+immunity
+monopoly
+muddy
+backgrounds
+136
+namibia
+francesca
+monitors
+attracting
+stunt
+tuition
+##ии
+vegetable
+##mates
+##quent
+mgm
+jen
+complexes
+forts
+##ond
+cellar
+bites
+seventeenth
+royals
+flemish
+failures
+mast
+charities
+##cular
+peruvian
+capitals
+macmillan
+ipswich
+outward
+frigate
+postgraduate
+folds
+employing
+##ouse
+concurrently
+fiery
+##tai
+contingent
+nightmares
+monumental
+nicaragua
+##kowski
+lizard
+mal
+fielding
+gig
+reject
+##pad
+harding
+##ipe
+coastline
+##cin
+##nos
+beethoven
+humphrey
+innovations
+##tam
+##nge
+norris
+doris
+solicitor
+huang
+obey
+141
+##lc
+niagara
+##tton
+shelves
+aug
+bourbon
+curry
+nightclub
+specifications
+hilton
+##ndo
+centennial
+dispersed
+worm
+neglected
+briggs
+sm
+font
+kuala
+uneasy
+plc
+##nstein
+##bound
+##aking
+##burgh
+awaiting
+pronunciation
+##bbed
+##quest
+eh
+optimal
+zhu
+raped
+greens
+presided
+brenda
+worries
+##life
+venetian
+marxist
+turnout
+##lius
+refined
+braced
+sins
+grasped
+sunderland
+nickel
+speculated
+lowell
+cyrillic
+communism
+fundraising
+resembling
+colonists
+mutant
+freddie
+usc
+##mos
+gratitude
+##run
+mural
+##lous
+chemist
+wi
+reminds
+28th
+steals
+tess
+pietro
+##ingen
+promoter
+ri
+microphone
+honoured
+rai
+sant
+##qui
+feather
+##nson
+burlington
+kurdish
+terrorists
+deborah
+sickness
+##wed
+##eet
+hazard
+irritated
+desperation
+veil
+clarity
+##rik
+jewels
+xv
+##gged
+##ows
+##cup
+berkshire
+unfair
+mysteries
+orchid
+winced
+exhaustion
+renovations
+stranded
+obe
+infinity
+##nies
+adapt
+redevelopment
+thanked
+registry
+olga
+domingo
+noir
+tudor
+ole
+##atus
+commenting
+behaviors
+##ais
+crisp
+pauline
+probable
+stirling
+wigan
+##bian
+paralympics
+panting
+surpassed
+##rew
+luca
+barred
+pony
+famed
+##sters
+cassandra
+waiter
+carolyn
+exported
+##orted
+andres
+destructive
+deeds
+jonah
+castles
+vacancy
+suv
+##glass
+1788
+orchard
+yep
+famine
+belarusian
+sprang
+##forth
+skinny
+##mis
+administrators
+rotterdam
+zambia
+zhao
+boiler
+discoveries
+##ride
+##physics
+lucius
+disappointing
+outreach
+spoon
+##frame
+qualifications
+unanimously
+enjoys
+regency
+##iidae
+stade
+realism
+veterinary
+rodgers
+dump
+alain
+chestnut
+castile
+censorship
+rumble
+gibbs
+##itor
+communion
+reggae
+inactivated
+logs
+loads
+##houses
+homosexual
+##iano
+ale
+informs
+##cas
+phrases
+plaster
+linebacker
+ambrose
+kaiser
+fascinated
+850
+limerick
+recruitment
+forge
+mastered
+##nding
+leinster
+rooted
+threaten
+##strom
+borneo
+##hes
+suggestions
+scholarships
+propeller
+documentaries
+patronage
+coats
+constructing
+invest
+neurons
+comet
+entirety
+shouts
+identities
+annoying
+unchanged
+wary
+##antly
+##ogy
+neat
+oversight
+##kos
+phillies
+replay
+constance
+##kka
+incarnation
+humble
+skies
+minus
+##acy
+smithsonian
+##chel
+guerrilla
+jar
+cadets
+##plate
+surplus
+audit
+##aru
+cracking
+joanna
+louisa
+pacing
+##lights
+intentionally
+##iri
+diner
+nwa
+imprint
+australians
+tong
+unprecedented
+bunker
+naive
+specialists
+ark
+nichols
+railing
+leaked
+pedal
+##uka
+shrub
+longing
+roofs
+v8
+captains
+neural
+tuned
+##ntal
+##jet
+emission
+medina
+frantic
+codex
+definitive
+sid
+abolition
+intensified
+stocks
+enrique
+sustain
+genoa
+oxide
+##written
+clues
+cha
+##gers
+tributaries
+fragment
+venom
+##rity
+##ente
+##sca
+muffled
+vain
+sire
+laos
+##ingly
+##hana
+hastily
+snapping
+surfaced
+sentiment
+motive
+##oft
+contests
+approximate
+mesa
+luckily
+dinosaur
+exchanges
+propelled
+accord
+bourne
+relieve
+tow
+masks
+offended
+##ues
+cynthia
+##mmer
+rains
+bartender
+zinc
+reviewers
+lois
+##sai
+legged
+arrogant
+rafe
+rosie
+comprise
+handicap
+blockade
+inlet
+lagoon
+copied
+drilling
+shelley
+petals
+##inian
+mandarin
+obsolete
+##inated
+onward
+arguably
+productivity
+cindy
+praising
+seldom
+busch
+discusses
+raleigh
+shortage
+ranged
+stanton
+encouragement
+firstly
+conceded
+overs
+temporal
+##uke
+cbe
+##bos
+woo
+certainty
+pumps
+##pton
+stalked
+##uli
+lizzie
+periodic
+thieves
+weaker
+##night
+gases
+shoving
+chooses
+wc
+##chemical
+prompting
+weights
+##kill
+robust
+flanked
+sticky
+hu
+tuberculosis
+##eb
+##eal
+christchurch
+resembled
+wallet
+reese
+inappropriate
+pictured
+distract
+fixing
+fiddle
+giggled
+burger
+heirs
+hairy
+mechanic
+torque
+apache
+obsessed
+chiefly
+cheng
+logging
+##tag
+extracted
+meaningful
+numb
+##vsky
+gloucestershire
+reminding
+##bay
+unite
+##lit
+breeds
+diminished
+clown
+glove
+1860s
+##ن
+##ug
+archibald
+focal
+freelance
+sliced
+depiction
+##yk
+organism
+switches
+sights
+stray
+crawling
+##ril
+lever
+leningrad
+interpretations
+loops
+anytime
+reel
+alicia
+delighted
+##ech
+inhaled
+xiv
+suitcase
+bernie
+vega
+licenses
+northampton
+exclusion
+induction
+monasteries
+racecourse
+homosexuality
+##right
+##sfield
+##rky
+dimitri
+michele
+alternatives
+ions
+commentators
+genuinely
+objected
+pork
+hospitality
+fencing
+stephan
+warships
+peripheral
+wit
+drunken
+wrinkled
+quentin
+spends
+departing
+chung
+numerical
+spokesperson
+##zone
+johannesburg
+caliber
+killers
+##udge
+assumes
+neatly
+demographic
+abigail
+bloc
+##vel
+mounting
+##lain
+bentley
+slightest
+xu
+recipients
+##jk
+merlin
+##writer
+seniors
+prisons
+blinking
+hindwings
+flickered
+kappa
+##hel
+80s
+strengthening
+appealing
+brewing
+gypsy
+mali
+lashes
+hulk
+unpleasant
+harassment
+bio
+treaties
+predict
+instrumentation
+pulp
+troupe
+boiling
+mantle
+##ffe
+ins
+##vn
+dividing
+handles
+verbs
+##onal
+coconut
+senegal
+340
+thorough
+gum
+momentarily
+##sto
+cocaine
+panicked
+destined
+##turing
+teatro
+denying
+weary
+captained
+mans
+##hawks
+##code
+wakefield
+bollywood
+thankfully
+##16
+cyril
+##wu
+amendments
+##bahn
+consultation
+stud
+reflections
+kindness
+1787
+internally
+##ovo
+tex
+mosaic
+distribute
+paddy
+seeming
+143
+##hic
+piers
+##15
+##mura
+##verse
+popularly
+winger
+kang
+sentinel
+mccoy
+##anza
+covenant
+##bag
+verge
+fireworks
+suppress
+thrilled
+dominate
+##jar
+swansea
+##60
+142
+reconciliation
+##ndi
+stiffened
+cue
+dorian
+##uf
+damascus
+amor
+ida
+foremost
+##aga
+porsche
+unseen
+dir
+##had
+##azi
+stony
+lexi
+melodies
+##nko
+angular
+integer
+podcast
+ants
+inherent
+jaws
+justify
+persona
+##olved
+josephine
+##nr
+##ressed
+customary
+flashes
+gala
+cyrus
+glaring
+backyard
+ariel
+physiology
+greenland
+html
+stir
+avon
+atletico
+finch
+methodology
+ked
+##lent
+mas
+catholicism
+townsend
+branding
+quincy
+fits
+containers
+1777
+ashore
+aragon
+##19
+forearm
+poisoning
+##sd
+adopting
+conquer
+grinding
+amnesty
+keller
+finances
+evaluate
+forged
+lankan
+instincts
+##uto
+guam
+bosnian
+photographed
+workplace
+desirable
+protector
+##dog
+allocation
+intently
+encourages
+willy
+##sten
+bodyguard
+electro
+brighter
+##ν
+bihar
+##chev
+lasts
+opener
+amphibious
+sal
+verde
+arte
+##cope
+captivity
+vocabulary
+yields
+##tted
+agreeing
+desmond
+pioneered
+##chus
+strap
+campaigned
+railroads
+##ович
+emblem
+##dre
+stormed
+501
+##ulous
+marijuana
+northumberland
+##gn
+##nath
+bowen
+landmarks
+beaumont
+##qua
+danube
+##bler
+attorneys
+th
+ge
+flyers
+critique
+villains
+cass
+mutation
+acc
+##0s
+colombo
+mckay
+motif
+sampling
+concluding
+syndicate
+##rell
+neon
+stables
+ds
+warnings
+clint
+mourning
+wilkinson
+##tated
+merrill
+leopard
+evenings
+exhaled
+emil
+sonia
+ezra
+discrete
+stove
+farrell
+fifteenth
+prescribed
+superhero
+##rier
+worms
+helm
+wren
+##duction
+##hc
+expo
+##rator
+hq
+unfamiliar
+antony
+prevents
+acceleration
+fiercely
+mari
+painfully
+calculations
+cheaper
+ign
+clifton
+irvine
+davenport
+mozambique
+##np
+pierced
+##evich
+wonders
+##wig
+##cate
+##iling
+crusade
+ware
+##uel
+enzymes
+reasonably
+mls
+##coe
+mater
+ambition
+bunny
+eliot
+kernel
+##fin
+asphalt
+headmaster
+torah
+aden
+lush
+pins
+waived
+##care
+##yas
+joao
+substrate
+enforce
+##grad
+##ules
+alvarez
+selections
+epidemic
+tempted
+##bit
+bremen
+translates
+ensured
+waterfront
+29th
+forrest
+manny
+malone
+kramer
+reigning
+cookies
+simpler
+absorption
+205
+engraved
+##ffy
+evaluated
+1778
+haze
+146
+comforting
+crossover
+##abe
+thorn
+##rift
+##imo
+##pop
+suppression
+fatigue
+cutter
+##tr
+201
+wurttemberg
+##orf
+enforced
+hovering
+proprietary
+gb
+samurai
+syllable
+ascent
+lacey
+tick
+lars
+tractor
+merchandise
+rep
+bouncing
+defendants
+##yre
+huntington
+##ground
+##oko
+standardized
+##hor
+##hima
+assassinated
+nu
+predecessors
+rainy
+liar
+assurance
+lyrical
+##uga
+secondly
+flattened
+ios
+parameter
+undercover
+##mity
+bordeaux
+punish
+ridges
+markers
+exodus
+inactive
+hesitate
+debbie
+nyc
+pledge
+savoy
+nagar
+offset
+organist
+##tium
+hesse
+marin
+converting
+##iver
+diagram
+propulsion
+pu
+validity
+reverted
+supportive
+##dc
+ministries
+clans
+responds
+proclamation
+##inae
+##ø
+##rea
+ein
+pleading
+patriot
+sf
+birch
+islanders
+strauss
+hates
+##dh
+brandenburg
+concession
+rd
+##ob
+1900s
+killings
+textbook
+antiquity
+cinematography
+wharf
+embarrassing
+setup
+creed
+farmland
+inequality
+centred
+signatures
+fallon
+370
+##ingham
+##uts
+ceylon
+gazing
+directive
+laurie
+##tern
+globally
+##uated
+##dent
+allah
+excavation
+threads
+##cross
+148
+frantically
+icc
+utilize
+determines
+respiratory
+thoughtful
+receptions
+##dicate
+merging
+chandra
+seine
+147
+builders
+builds
+diagnostic
+dev
+visibility
+goddamn
+analyses
+dhaka
+cho
+proves
+chancel
+concurrent
+curiously
+canadians
+pumped
+restoring
+1850s
+turtles
+jaguar
+sinister
+spinal
+traction
+declan
+vows
+1784
+glowed
+capitalism
+swirling
+install
+universidad
+##lder
+##oat
+soloist
+##genic
+##oor
+coincidence
+beginnings
+nissan
+dip
+resorts
+caucasus
+combustion
+infectious
+##eno
+pigeon
+serpent
+##itating
+conclude
+masked
+salad
+jew
+##gr
+surreal
+toni
+##wc
+harmonica
+151
+##gins
+##etic
+##coat
+fishermen
+intending
+bravery
+##wave
+klaus
+titan
+wembley
+taiwanese
+ransom
+40th
+incorrect
+hussein
+eyelids
+jp
+cooke
+dramas
+utilities
+##etta
+##print
+eisenhower
+principally
+granada
+lana
+##rak
+openings
+concord
+##bl
+bethany
+connie
+morality
+sega
+##mons
+##nard
+earnings
+##kara
+##cine
+wii
+communes
+##rel
+coma
+composing
+softened
+severed
+grapes
+##17
+nguyen
+analyzed
+warlord
+hubbard
+heavenly
+behave
+slovenian
+##hit
+##ony
+hailed
+filmmakers
+trance
+caldwell
+skye
+unrest
+coward
+likelihood
+##aging
+bern
+sci
+taliban
+honolulu
+propose
+##wang
+1700
+browser
+imagining
+cobra
+contributes
+dukes
+instinctively
+conan
+violinist
+##ores
+accessories
+gradual
+##amp
+quotes
+sioux
+##dating
+undertake
+intercepted
+sparkling
+compressed
+139
+fungus
+tombs
+haley
+imposing
+rests
+degradation
+lincolnshire
+retailers
+wetlands
+tulsa
+distributor
+dungeon
+nun
+greenhouse
+convey
+atlantis
+aft
+exits
+oman
+dresser
+lyons
+##sti
+joking
+eddy
+judgement
+omitted
+digits
+##cts
+##game
+juniors
+##rae
+cents
+stricken
+une
+##ngo
+wizards
+weir
+breton
+nan
+technician
+fibers
+liking
+royalty
+##cca
+154
+persia
+terribly
+magician
+##rable
+##unt
+vance
+cafeteria
+booker
+camille
+warmer
+##static
+consume
+cavern
+gaps
+compass
+contemporaries
+foyer
+soothing
+graveyard
+maj
+plunged
+blush
+##wear
+cascade
+demonstrates
+ordinance
+##nov
+boyle
+##lana
+rockefeller
+shaken
+banjo
+izzy
+##ense
+breathless
+vines
+##32
+##eman
+alterations
+chromosome
+dwellings
+feudal
+mole
+153
+catalonia
+relics
+tenant
+mandated
+##fm
+fridge
+hats
+honesty
+patented
+raul
+heap
+cruisers
+accusing
+enlightenment
+infants
+wherein
+chatham
+contractors
+zen
+affinity
+hc
+osborne
+piston
+156
+traps
+maturity
+##rana
+lagos
+##zal
+peering
+##nay
+attendant
+dealers
+protocols
+subset
+prospects
+biographical
+##cre
+artery
+##zers
+insignia
+nuns
+endured
+##eration
+recommend
+schwartz
+serbs
+berger
+cromwell
+crossroads
+##ctor
+enduring
+clasped
+grounded
+##bine
+marseille
+twitched
+abel
+choke
+https
+catalyst
+moldova
+italians
+##tist
+disastrous
+wee
+##oured
+##nti
+wwf
+nope
+##piration
+##asa
+expresses
+thumbs
+167
+##nza
+coca
+1781
+cheating
+##ption
+skipped
+sensory
+heidelberg
+spies
+satan
+dangers
+semifinal
+202
+bohemia
+whitish
+confusing
+shipbuilding
+relies
+surgeons
+landings
+ravi
+baku
+moor
+suffix
+alejandro
+##yana
+litre
+upheld
+##unk
+rajasthan
+##rek
+coaster
+insists
+posture
+scenarios
+etienne
+favoured
+appoint
+transgender
+elephants
+poked
+greenwood
+defences
+fulfilled
+militant
+somali
+1758
+chalk
+potent
+##ucci
+migrants
+wink
+assistants
+nos
+restriction
+activism
+niger
+##ario
+colon
+shaun
+##sat
+daphne
+##erated
+swam
+congregations
+reprise
+considerations
+magnet
+playable
+xvi
+##р
+overthrow
+tobias
+knob
+chavez
+coding
+##mers
+propped
+katrina
+orient
+newcomer
+##suke
+temperate
+##pool
+farmhouse
+interrogation
+##vd
+committing
+##vert
+forthcoming
+strawberry
+joaquin
+macau
+ponds
+shocking
+siberia
+##cellular
+chant
+contributors
+##nant
+##ologists
+sped
+absorb
+hail
+1782
+spared
+##hore
+barbados
+karate
+opus
+originates
+saul
+##xie
+evergreen
+leaped
+##rock
+correlation
+exaggerated
+weekday
+unification
+bump
+tracing
+brig
+afb
+pathways
+utilizing
+##ners
+mod
+mb
+disturbance
+kneeling
+##stad
+##guchi
+100th
+pune
+##thy
+decreasing
+168
+manipulation
+miriam
+academia
+ecosystem
+occupational
+rbi
+##lem
+rift
+##14
+rotary
+stacked
+incorporation
+awakening
+generators
+guerrero
+racist
+##omy
+cyber
+derivatives
+culminated
+allie
+annals
+panzer
+sainte
+wikipedia
+pops
+zu
+austro
+##vate
+algerian
+politely
+nicholson
+mornings
+educate
+tastes
+thrill
+dartmouth
+##gating
+db
+##jee
+regan
+differing
+concentrating
+choreography
+divinity
+##media
+pledged
+alexandre
+routing
+gregor
+madeline
+##idal
+apocalypse
+##hora
+gunfire
+culminating
+elves
+fined
+liang
+lam
+programmed
+tar
+guessing
+transparency
+gabrielle
+##gna
+cancellation
+flexibility
+##lining
+accession
+shea
+stronghold
+nets
+specializes
+##rgan
+abused
+hasan
+sgt
+ling
+exceeding
+##₄
+admiration
+supermarket
+##ark
+photographers
+specialised
+tilt
+resonance
+hmm
+perfume
+380
+sami
+threatens
+garland
+botany
+guarding
+boiled
+greet
+puppy
+russo
+supplier
+wilmington
+vibrant
+vijay
+##bius
+paralympic
+grumbled
+paige
+faa
+licking
+margins
+hurricanes
+##gong
+fest
+grenade
+ripping
+##uz
+counseling
+weigh
+##sian
+needles
+wiltshire
+edison
+costly
+##not
+fulton
+tramway
+redesigned
+staffordshire
+cache
+gasping
+watkins
+sleepy
+candidacy
+##group
+monkeys
+timeline
+throbbing
+##bid
+##sos
+berth
+uzbekistan
+vanderbilt
+bothering
+overturned
+ballots
+gem
+##iger
+sunglasses
+subscribers
+hooker
+compelling
+ang
+exceptionally
+saloon
+stab
+##rdi
+carla
+terrifying
+rom
+##vision
+coil
+##oids
+satisfying
+vendors
+31st
+mackay
+deities
+overlooked
+ambient
+bahamas
+felipe
+olympia
+whirled
+botanist
+advertised
+tugging
+##dden
+disciples
+morales
+unionist
+rites
+foley
+morse
+motives
+creepy
+##₀
+soo
+##sz
+bargain
+highness
+frightening
+turnpike
+tory
+reorganization
+##cer
+depict
+biographer
+##walk
+unopposed
+manifesto
+##gles
+institut
+emile
+accidental
+kapoor
+##dam
+kilkenny
+cortex
+lively
+##13
+romanesque
+jain
+shan
+cannons
+##ood
+##ske
+petrol
+echoing
+amalgamated
+disappears
+cautious
+proposes
+sanctions
+trenton
+##ر
+flotilla
+aus
+contempt
+tor
+canary
+cote
+theirs
+##hun
+conceptual
+deleted
+fascinating
+paso
+blazing
+elf
+honourable
+hutchinson
+##eiro
+##outh
+##zin
+surveyor
+tee
+amidst
+wooded
+reissue
+intro
+##ono
+cobb
+shelters
+newsletter
+hanson
+brace
+encoding
+confiscated
+dem
+caravan
+marino
+scroll
+melodic
+cows
+imam
+##adi
+##aneous
+northward
+searches
+biodiversity
+cora
+310
+roaring
+##bers
+connell
+theologian
+halo
+compose
+pathetic
+unmarried
+dynamo
+##oot
+az
+calculation
+toulouse
+deserves
+humour
+nr
+forgiveness
+tam
+undergone
+martyr
+pamela
+myths
+whore
+counselor
+hicks
+290
+heavens
+battleship
+electromagnetic
+##bbs
+stellar
+establishments
+presley
+hopped
+##chin
+temptation
+90s
+wills
+nas
+##yuan
+nhs
+##nya
+seminars
+##yev
+adaptations
+gong
+asher
+lex
+indicator
+sikh
+tobago
+cites
+goin
+##yte
+satirical
+##gies
+characterised
+correspond
+bubbles
+lure
+participates
+##vid
+eruption
+skate
+therapeutic
+1785
+canals
+wholesale
+defaulted
+sac
+460
+petit
+##zzled
+virgil
+leak
+ravens
+256
+portraying
+##yx
+ghetto
+creators
+dams
+portray
+vicente
+##rington
+fae
+namesake
+bounty
+##arium
+joachim
+##ota
+##iser
+aforementioned
+axle
+snout
+depended
+dismantled
+reuben
+480
+##ibly
+gallagher
+##lau
+##pd
+earnest
+##ieu
+##iary
+inflicted
+objections
+##llar
+asa
+gritted
+##athy
+jericho
+##sea
+##was
+flick
+underside
+ceramics
+undead
+substituted
+195
+eastward
+undoubtedly
+wheeled
+chimney
+##iche
+guinness
+cb
+##ager
+siding
+##bell
+traitor
+baptiste
+disguised
+inauguration
+149
+tipperary
+choreographer
+perched
+warmed
+stationary
+eco
+##ike
+##ntes
+bacterial
+##aurus
+flores
+phosphate
+##core
+attacker
+invaders
+alvin
+intersects
+a1
+indirectly
+immigrated
+businessmen
+cornelius
+valves
+narrated
+pill
+sober
+ul
+nationale
+monastic
+applicants
+scenery
+##jack
+161
+motifs
+constitutes
+cpu
+##osh
+jurisdictions
+sd
+tuning
+irritation
+woven
+##uddin
+fertility
+gao
+##erie
+antagonist
+impatient
+glacial
+hides
+boarded
+denominations
+interception
+##jas
+cookie
+nicola
+##tee
+algebraic
+marquess
+bahn
+parole
+buyers
+bait
+turbines
+paperwork
+bestowed
+natasha
+renee
+oceans
+purchases
+157
+vaccine
+215
+##tock
+fixtures
+playhouse
+integrate
+jai
+oswald
+intellectuals
+##cky
+booked
+nests
+mortimer
+##isi
+obsession
+sept
+##gler
+##sum
+440
+scrutiny
+simultaneous
+squinted
+##shin
+collects
+oven
+shankar
+penned
+remarkably
+##я
+slips
+luggage
+spectral
+1786
+collaborations
+louie
+consolidation
+##ailed
+##ivating
+420
+hoover
+blackpool
+harness
+ignition
+vest
+tails
+belmont
+mongol
+skinner
+##nae
+visually
+mage
+derry
+##tism
+##unce
+stevie
+transitional
+##rdy
+redskins
+drying
+prep
+prospective
+##21
+annoyance
+oversee
+##loaded
+fills
+##books
+##iki
+announces
+fda
+scowled
+respects
+prasad
+mystic
+tucson
+##vale
+revue
+springer
+bankrupt
+1772
+aristotle
+salvatore
+habsburg
+##geny
+dal
+natal
+nut
+pod
+chewing
+darts
+moroccan
+walkover
+rosario
+lenin
+punjabi
+##ße
+grossed
+scattering
+wired
+invasive
+hui
+polynomial
+corridors
+wakes
+gina
+portrays
+##cratic
+arid
+retreating
+erich
+irwin
+sniper
+##dha
+linen
+lindsey
+maneuver
+butch
+shutting
+socio
+bounce
+commemorative
+postseason
+jeremiah
+pines
+275
+mystical
+beads
+bp
+abbas
+furnace
+bidding
+consulted
+assaulted
+empirical
+rubble
+enclosure
+sob
+weakly
+cancel
+polly
+yielded
+##emann
+curly
+prediction
+battered
+70s
+vhs
+jacqueline
+render
+sails
+barked
+detailing
+grayson
+riga
+sloane
+raging
+##yah
+herbs
+bravo
+##athlon
+alloy
+giggle
+imminent
+suffers
+assumptions
+waltz
+##itate
+accomplishments
+##ited
+bathing
+remixed
+deception
+prefix
+##emia
+deepest
+##tier
+##eis
+balkan
+frogs
+##rong
+slab
+##pate
+philosophers
+peterborough
+grains
+imports
+dickinson
+rwanda
+##atics
+1774
+dirk
+lan
+tablets
+##rove
+clone
+##rice
+caretaker
+hostilities
+mclean
+##gre
+regimental
+treasures
+norms
+impose
+tsar
+tango
+diplomacy
+variously
+complain
+192
+recognise
+arrests
+1779
+celestial
+pulitzer
+##dus
+bing
+libretto
+##moor
+adele
+splash
+##rite
+expectation
+lds
+confronts
+##izer
+spontaneous
+harmful
+wedge
+entrepreneurs
+buyer
+##ope
+bilingual
+translate
+rugged
+conner
+circulated
+uae
+eaton
+##gra
+##zzle
+lingered
+lockheed
+vishnu
+reelection
+alonso
+##oom
+joints
+yankee
+headline
+cooperate
+heinz
+laureate
+invading
+##sford
+echoes
+scandinavian
+##dham
+hugging
+vitamin
+salute
+micah
+hind
+trader
+##sper
+radioactive
+##ndra
+militants
+poisoned
+ratified
+remark
+campeonato
+deprived
+wander
+prop
+##dong
+outlook
+##tani
+##rix
+##eye
+chiang
+darcy
+##oping
+mandolin
+spice
+statesman
+babylon
+182
+walled
+forgetting
+afro
+##cap
+158
+giorgio
+buffer
+##polis
+planetary
+##gis
+overlap
+terminals
+kinda
+centenary
+##bir
+arising
+manipulate
+elm
+ke
+1770
+ak
+##tad
+chrysler
+mapped
+moose
+pomeranian
+quad
+macarthur
+assemblies
+shoreline
+recalls
+stratford
+##rted
+noticeable
+##evic
+imp
+##rita
+##sque
+accustomed
+supplying
+tents
+disgusted
+vogue
+sipped
+filters
+khz
+reno
+selecting
+luftwaffe
+mcmahon
+tyne
+masterpiece
+carriages
+collided
+dunes
+exercised
+flare
+remembers
+muzzle
+##mobile
+heck
+##rson
+burgess
+lunged
+middleton
+boycott
+bilateral
+##sity
+hazardous
+lumpur
+multiplayer
+spotlight
+jackets
+goldman
+liege
+porcelain
+rag
+waterford
+benz
+attracts
+hopeful
+battling
+ottomans
+kensington
+baked
+hymns
+cheyenne
+lattice
+levine
+borrow
+polymer
+clashes
+michaels
+monitored
+commitments
+denounced
+##25
+##von
+cavity
+##oney
+hobby
+akin
+##holders
+futures
+intricate
+cornish
+patty
+##oned
+illegally
+dolphin
+##lag
+barlow
+yellowish
+maddie
+apologized
+luton
+plagued
+##puram
+nana
+##rds
+sway
+fanny
+łodz
+##rino
+psi
+suspicions
+hanged
+##eding
+initiate
+charlton
+##por
+nak
+competent
+235
+analytical
+annex
+wardrobe
+reservations
+##rma
+sect
+162
+fairfax
+hedge
+piled
+buckingham
+uneven
+bauer
+simplicity
+snyder
+interpret
+accountability
+donors
+moderately
+byrd
+continents
+##cite
+##max
+disciple
+hr
+jamaican
+ping
+nominees
+##uss
+mongolian
+diver
+attackers
+eagerly
+ideological
+pillows
+miracles
+apartheid
+revolver
+sulfur
+clinics
+moran
+163
+##enko
+ile
+katy
+rhetoric
+##icated
+chronology
+recycling
+##hrer
+elongated
+mughal
+pascal
+profiles
+vibration
+databases
+domination
+##fare
+##rant
+matthias
+digest
+rehearsal
+polling
+weiss
+initiation
+reeves
+clinging
+flourished
+impress
+ngo
+##hoff
+##ume
+buckley
+symposium
+rhythms
+weed
+emphasize
+transforming
+##taking
+##gence
+##yman
+accountant
+analyze
+flicker
+foil
+priesthood
+voluntarily
+decreases
+##80
+##hya
+slater
+sv
+charting
+mcgill
+##lde
+moreno
+##iu
+besieged
+zur
+robes
+##phic
+admitting
+api
+deported
+turmoil
+peyton
+earthquakes
+##ares
+nationalists
+beau
+clair
+brethren
+interrupt
+welch
+curated
+galerie
+requesting
+164
+##ested
+impending
+steward
+viper
+##vina
+complaining
+beautifully
+brandy
+foam
+nl
+1660
+##cake
+alessandro
+punches
+laced
+explanations
+##lim
+attribute
+clit
+reggie
+discomfort
+##cards
+smoothed
+whales
+##cene
+adler
+countered
+duffy
+disciplinary
+widening
+recipe
+reliance
+conducts
+goats
+gradient
+preaching
+##shaw
+matilda
+quasi
+striped
+meridian
+cannabis
+cordoba
+certificates
+##agh
+##tering
+graffiti
+hangs
+pilgrims
+repeats
+##ych
+revive
+urine
+etat
+##hawk
+fueled
+belts
+fuzzy
+susceptible
+##hang
+mauritius
+salle
+sincere
+beers
+hooks
+##cki
+arbitration
+entrusted
+advise
+sniffed
+seminar
+junk
+donnell
+processors
+principality
+strapped
+celia
+mendoza
+everton
+fortunes
+prejudice
+starving
+reassigned
+steamer
+##lund
+tuck
+evenly
+foreman
+##ffen
+dans
+375
+envisioned
+slit
+##xy
+baseman
+liberia
+rosemary
+##weed
+electrified
+periodically
+potassium
+stride
+contexts
+sperm
+slade
+mariners
+influx
+bianca
+subcommittee
+##rane
+spilling
+icao
+estuary
+##nock
+delivers
+iphone
+##ulata
+isa
+mira
+bohemian
+dessert
+##sbury
+welcoming
+proudly
+slowing
+##chs
+musee
+ascension
+russ
+##vian
+waits
+##psy
+africans
+exploit
+##morphic
+gov
+eccentric
+crab
+peck
+##ull
+entrances
+formidable
+marketplace
+groom
+bolted
+metabolism
+patton
+robbins
+courier
+payload
+endure
+##ifier
+andes
+refrigerator
+##pr
+ornate
+##uca
+ruthless
+illegitimate
+masonry
+strasbourg
+bikes
+adobe
+##³
+apples
+quintet
+willingly
+niche
+bakery
+corpses
+energetic
+##cliffe
+##sser
+##ards
+177
+centimeters
+centro
+fuscous
+cretaceous
+rancho
+##yde
+andrei
+telecom
+tottenham
+oasis
+ordination
+vulnerability
+presiding
+corey
+cp
+penguins
+sims
+##pis
+malawi
+piss
+##48
+correction
+##cked
+##ffle
+##ryn
+countdown
+detectives
+psychiatrist
+psychedelic
+dinosaurs
+blouse
+##get
+choi
+vowed
+##oz
+randomly
+##pol
+49ers
+scrub
+blanche
+bruins
+dusseldorf
+##using
+unwanted
+##ums
+212
+dominique
+elevations
+headlights
+om
+laguna
+##oga
+1750
+famously
+ignorance
+shrewsbury
+##aine
+ajax
+breuning
+che
+confederacy
+greco
+overhaul
+##screen
+paz
+skirts
+disagreement
+cruelty
+jagged
+phoebe
+shifter
+hovered
+viruses
+##wes
+mandy
+##lined
+##gc
+landlord
+squirrel
+dashed
+##ι
+ornamental
+gag
+wally
+grange
+literal
+spurs
+undisclosed
+proceeding
+yin
+##text
+billie
+orphan
+spanned
+humidity
+indy
+weighted
+presentations
+explosions
+lucian
+##tary
+vaughn
+hindus
+##anga
+##hell
+psycho
+171
+daytona
+protects
+efficiently
+rematch
+sly
+tandem
+##oya
+rebranded
+impaired
+hee
+metropolis
+peach
+godfrey
+diaspora
+ethnicity
+prosperous
+gleaming
+dar
+grossing
+playback
+##rden
+stripe
+pistols
+##tain
+births
+labelled
+##cating
+172
+rudy
+alba
+##onne
+aquarium
+hostility
+##gb
+##tase
+shudder
+sumatra
+hardest
+lakers
+consonant
+creeping
+demos
+homicide
+capsule
+zeke
+liberties
+expulsion
+pueblo
+##comb
+trait
+transporting
+##ddin
+##neck
+##yna
+depart
+gregg
+mold
+ledge
+hangar
+oldham
+playboy
+termination
+analysts
+gmbh
+romero
+##itic
+insist
+cradle
+filthy
+brightness
+slash
+shootout
+deposed
+bordering
+##truct
+isis
+microwave
+tumbled
+sheltered
+cathy
+werewolves
+messy
+andersen
+convex
+clapped
+clinched
+satire
+wasting
+edo
+vc
+rufus
+##jak
+mont
+##etti
+poznan
+##keeping
+restructuring
+transverse
+##rland
+azerbaijani
+slovene
+gestures
+roommate
+choking
+shear
+##quist
+vanguard
+oblivious
+##hiro
+disagreed
+baptism
+##lich
+coliseum
+##aceae
+salvage
+societe
+cory
+locke
+relocation
+relying
+versailles
+ahl
+swelling
+##elo
+cheerful
+##word
+##edes
+gin
+sarajevo
+obstacle
+diverted
+##nac
+messed
+thoroughbred
+fluttered
+utrecht
+chewed
+acquaintance
+assassins
+dispatch
+mirza
+##wart
+nike
+salzburg
+swell
+yen
+##gee
+idle
+ligue
+samson
+##nds
+##igh
+playful
+spawned
+##cise
+tease
+##case
+burgundy
+##bot
+stirring
+skeptical
+interceptions
+marathi
+##dies
+bedrooms
+aroused
+pinch
+##lik
+preferences
+tattoos
+buster
+digitally
+projecting
+rust
+##ital
+kitten
+priorities
+addison
+pseudo
+##guard
+dusk
+icons
+sermon
+##psis
+##iba
+bt
+##lift
+##xt
+ju
+truce
+rink
+##dah
+##wy
+defects
+psychiatry
+offences
+calculate
+glucose
+##iful
+##rized
+##unda
+francaise
+##hari
+richest
+warwickshire
+carly
+1763
+purity
+redemption
+lending
+##cious
+muse
+bruises
+cerebral
+aero
+carving
+##name
+preface
+terminology
+invade
+monty
+##int
+anarchist
+blurred
+##iled
+rossi
+treats
+guts
+shu
+foothills
+ballads
+undertaking
+premise
+cecilia
+affiliates
+blasted
+conditional
+wilder
+minors
+drone
+rudolph
+buffy
+swallowing
+horton
+attested
+##hop
+rutherford
+howell
+primetime
+livery
+penal
+##bis
+minimize
+hydro
+wrecked
+wrought
+palazzo
+##gling
+cans
+vernacular
+friedman
+nobleman
+shale
+walnut
+danielle
+##ection
+##tley
+sears
+##kumar
+chords
+lend
+flipping
+streamed
+por
+dracula
+gallons
+sacrifices
+gamble
+orphanage
+##iman
+mckenzie
+##gible
+boxers
+daly
+##balls
+##ان
+208
+##ific
+##rative
+##iq
+exploited
+slated
+##uity
+circling
+hillary
+pinched
+goldberg
+provost
+campaigning
+lim
+piles
+ironically
+jong
+mohan
+successors
+usaf
+##tem
+##ught
+autobiographical
+haute
+preserves
+##ending
+acquitted
+comparisons
+203
+hydroelectric
+gangs
+cypriot
+torpedoes
+rushes
+chrome
+derive
+bumps
+instability
+fiat
+pets
+##mbe
+silas
+dye
+reckless
+settler
+##itation
+info
+heats
+##writing
+176
+canonical
+maltese
+fins
+mushroom
+stacy
+aspen
+avid
+##kur
+##loading
+vickers
+gaston
+hillside
+statutes
+wilde
+gail
+kung
+sabine
+comfortably
+motorcycles
+##rgo
+169
+pneumonia
+fetch
+##sonic
+axel
+faintly
+parallels
+##oop
+mclaren
+spouse
+compton
+interdisciplinary
+miner
+##eni
+181
+clamped
+##chal
+##llah
+separates
+versa
+##mler
+scarborough
+labrador
+##lity
+##osing
+rutgers
+hurdles
+como
+166
+burt
+divers
+##100
+wichita
+cade
+coincided
+##erson
+bruised
+mla
+##pper
+vineyard
+##ili
+##brush
+notch
+mentioning
+jase
+hearted
+kits
+doe
+##acle
+pomerania
+##ady
+ronan
+seizure
+pavel
+problematic
+##zaki
+domenico
+##ulin
+catering
+penelope
+dependence
+parental
+emilio
+ministerial
+atkinson
+##bolic
+clarkson
+chargers
+colby
+grill
+peeked
+arises
+summon
+##aged
+fools
+##grapher
+faculties
+qaeda
+##vial
+garner
+refurbished
+##hwa
+geelong
+disasters
+nudged
+bs
+shareholder
+lori
+algae
+reinstated
+rot
+##ades
+##nous
+invites
+stainless
+183
+inclusive
+##itude
+diocesan
+til
+##icz
+denomination
+##xa
+benton
+floral
+registers
+##ider
+##erman
+##kell
+absurd
+brunei
+guangzhou
+hitter
+retaliation
+##uled
+##eve
+blanc
+nh
+consistency
+contamination
+##eres
+##rner
+dire
+palermo
+broadcasters
+diaries
+inspire
+vols
+brewer
+tightening
+ky
+mixtape
+hormone
+##tok
+stokes
+##color
+##dly
+##ssi
+pg
+##ometer
+##lington
+sanitation
+##tility
+intercontinental
+apps
+##adt
+¹⁄₂
+cylinders
+economies
+favourable
+unison
+croix
+gertrude
+odyssey
+vanity
+dangling
+##logists
+upgrades
+dice
+middleweight
+practitioner
+##ight
+206
+henrik
+parlor
+orion
+angered
+lac
+python
+blurted
+##rri
+sensual
+intends
+swings
+angled
+##phs
+husky
+attain
+peerage
+precinct
+textiles
+cheltenham
+shuffled
+dai
+confess
+tasting
+bhutan
+##riation
+tyrone
+segregation
+abrupt
+ruiz
+##rish
+smirked
+blackwell
+confidential
+browning
+amounted
+##put
+vase
+scarce
+fabulous
+raided
+staple
+guyana
+unemployed
+glider
+shay
+##tow
+carmine
+troll
+intervene
+squash
+superstar
+##uce
+cylindrical
+len
+roadway
+researched
+handy
+##rium
+##jana
+meta
+lao
+declares
+##rring
+##tadt
+##elin
+##kova
+willem
+shrubs
+napoleonic
+realms
+skater
+qi
+volkswagen
+##ł
+tad
+hara
+archaeologist
+awkwardly
+eerie
+##kind
+wiley
+##heimer
+##24
+titus
+organizers
+cfl
+crusaders
+lama
+usb
+vent
+enraged
+thankful
+occupants
+maximilian
+##gaard
+possessing
+textbooks
+##oran
+collaborator
+quaker
+##ulo
+avalanche
+mono
+silky
+straits
+isaiah
+mustang
+surged
+resolutions
+potomac
+descend
+cl
+kilograms
+plato
+strains
+saturdays
+##olin
+bernstein
+##ype
+holstein
+ponytail
+##watch
+belize
+conversely
+heroine
+perpetual
+##ylus
+charcoal
+piedmont
+glee
+negotiating
+backdrop
+prologue
+##jah
+##mmy
+pasadena
+climbs
+ramos
+sunni
+##holm
+##tner
+##tri
+anand
+deficiency
+hertfordshire
+stout
+##avi
+aperture
+orioles
+##irs
+doncaster
+intrigued
+bombed
+coating
+otis
+##mat
+cocktail
+##jit
+##eto
+amir
+arousal
+sar
+##proof
+##act
+##ories
+dixie
+pots
+##bow
+whereabouts
+159
+##fted
+drains
+bullying
+cottages
+scripture
+coherent
+fore
+poe
+appetite
+##uration
+sampled
+##ators
+##dp
+derrick
+rotor
+jays
+peacock
+installment
+##rro
+advisors
+##coming
+rodeo
+scotch
+##mot
+##db
+##fen
+##vant
+ensued
+rodrigo
+dictatorship
+martyrs
+twenties
+##н
+towed
+incidence
+marta
+rainforest
+sai
+scaled
+##cles
+oceanic
+qualifiers
+symphonic
+mcbride
+dislike
+generalized
+aubrey
+colonization
+##iation
+##lion
+##ssing
+disliked
+lublin
+salesman
+##ulates
+spherical
+whatsoever
+sweating
+avalon
+contention
+punt
+severity
+alderman
+atari
+##dina
+##grant
+##rop
+scarf
+seville
+vertices
+annexation
+fairfield
+fascination
+inspiring
+launches
+palatinate
+regretted
+##rca
+feral
+##iom
+elk
+nap
+olsen
+reddy
+yong
+##leader
+##iae
+garment
+transports
+feng
+gracie
+outrage
+viceroy
+insides
+##esis
+breakup
+grady
+organizer
+softer
+grimaced
+222
+murals
+galicia
+arranging
+vectors
+##rsten
+bas
+##sb
+##cens
+sloan
+##eka
+bitten
+ara
+fender
+nausea
+bumped
+kris
+banquet
+comrades
+detector
+persisted
+##llan
+adjustment
+endowed
+cinemas
+##shot
+sellers
+##uman
+peek
+epa
+kindly
+neglect
+simpsons
+talon
+mausoleum
+runaway
+hangul
+lookout
+##cic
+rewards
+coughed
+acquainted
+chloride
+##ald
+quicker
+accordion
+neolithic
+##qa
+artemis
+coefficient
+lenny
+pandora
+tx
+##xed
+ecstasy
+litter
+segunda
+chairperson
+gemma
+hiss
+rumor
+vow
+nasal
+antioch
+compensate
+patiently
+transformers
+##eded
+judo
+morrow
+penis
+posthumous
+philips
+bandits
+husbands
+denote
+flaming
+##any
+##phones
+langley
+yorker
+1760
+walters
+##uo
+##kle
+gubernatorial
+fatty
+samsung
+leroy
+outlaw
+##nine
+unpublished
+poole
+jakob
+##ᵢ
+##ₙ
+crete
+distorted
+superiority
+##dhi
+intercept
+crust
+mig
+claus
+crashes
+positioning
+188
+stallion
+301
+frontal
+armistice
+##estinal
+elton
+aj
+encompassing
+camel
+commemorated
+malaria
+woodward
+calf
+cigar
+penetrate
+##oso
+willard
+##rno
+##uche
+illustrate
+amusing
+convergence
+noteworthy
+##lma
+##rva
+journeys
+realise
+manfred
+##sable
+410
+##vocation
+hearings
+fiance
+##posed
+educators
+provoked
+adjusting
+##cturing
+modular
+stockton
+paterson
+vlad
+rejects
+electors
+selena
+maureen
+##tres
+uber
+##rce
+swirled
+##num
+proportions
+nanny
+pawn
+naturalist
+parma
+apostles
+awoke
+ethel
+wen
+##bey
+monsoon
+overview
+##inating
+mccain
+rendition
+risky
+adorned
+##ih
+equestrian
+germain
+nj
+conspicuous
+confirming
+##yoshi
+shivering
+##imeter
+milestone
+rumours
+flinched
+bounds
+smacked
+token
+##bei
+lectured
+automobiles
+##shore
+impacted
+##iable
+nouns
+nero
+##leaf
+ismail
+prostitute
+trams
+##lace
+bridget
+sud
+stimulus
+impressions
+reins
+revolves
+##oud
+##gned
+giro
+honeymoon
+##swell
+criterion
+##sms
+##uil
+libyan
+prefers
+##osition
+211
+preview
+sucks
+accusation
+bursts
+metaphor
+diffusion
+tolerate
+faye
+betting
+cinematographer
+liturgical
+specials
+bitterly
+humboldt
+##ckle
+flux
+rattled
+##itzer
+archaeologists
+odor
+authorised
+marshes
+discretion
+##ов
+alarmed
+archaic
+inverse
+##leton
+explorers
+##pine
+drummond
+tsunami
+woodlands
+##minate
+##tland
+booklet
+insanity
+owning
+insert
+crafted
+calculus
+##tore
+receivers
+##bt
+stung
+##eca
+##nched
+prevailing
+travellers
+eyeing
+lila
+graphs
+##borne
+178
+julien
+##won
+morale
+adaptive
+therapist
+erica
+cw
+libertarian
+bowman
+pitches
+vita
+##ional
+crook
+##ads
+##entation
+caledonia
+mutiny
+##sible
+1840s
+automation
+##ß
+flock
+##pia
+ironic
+pathology
+##imus
+remarried
+##22
+joker
+withstand
+energies
+##att
+shropshire
+hostages
+madeleine
+tentatively
+conflicting
+mateo
+recipes
+euros
+ol
+mercenaries
+nico
+##ndon
+albuquerque
+augmented
+mythical
+bel
+freud
+##child
+cough
+##lica
+365
+freddy
+lillian
+genetically
+nuremberg
+calder
+209
+bonn
+outdoors
+paste
+suns
+urgency
+vin
+restraint
+tyson
+##cera
+##selle
+barrage
+bethlehem
+kahn
+##par
+mounts
+nippon
+barony
+happier
+ryu
+makeshift
+sheldon
+blushed
+castillo
+barking
+listener
+taped
+bethel
+fluent
+headlines
+pornography
+rum
+disclosure
+sighing
+mace
+doubling
+gunther
+manly
+##plex
+rt
+interventions
+physiological
+forwards
+emerges
+##tooth
+##gny
+compliment
+rib
+recession
+visibly
+barge
+faults
+connector
+exquisite
+prefect
+##rlin
+patio
+##cured
+elevators
+brandt
+italics
+pena
+173
+wasp
+satin
+ea
+botswana
+graceful
+respectable
+##jima
+##rter
+##oic
+franciscan
+generates
+##dl
+alfredo
+disgusting
+##olate
+##iously
+sherwood
+warns
+cod
+promo
+cheryl
+sino
+##ة
+##escu
+twitch
+##zhi
+brownish
+thom
+ortiz
+##dron
+densely
+##beat
+carmel
+reinforce
+##bana
+187
+anastasia
+downhill
+vertex
+contaminated
+remembrance
+harmonic
+homework
+##sol
+fiancee
+gears
+olds
+angelica
+loft
+ramsay
+quiz
+colliery
+sevens
+##cape
+autism
+##hil
+walkway
+##boats
+ruben
+abnormal
+ounce
+khmer
+##bbe
+zachary
+bedside
+morphology
+punching
+##olar
+sparrow
+convinces
+##35
+hewitt
+queer
+remastered
+rods
+mabel
+solemn
+notified
+lyricist
+symmetric
+##xide
+174
+encore
+passports
+wildcats
+##uni
+baja
+##pac
+mildly
+##ease
+bleed
+commodity
+mounds
+glossy
+orchestras
+##omo
+damian
+prelude
+ambitions
+##vet
+awhile
+remotely
+##aud
+asserts
+imply
+##iques
+distinctly
+modelling
+remedy
+##dded
+windshield
+dani
+xiao
+##endra
+audible
+powerplant
+1300
+invalid
+elemental
+acquisitions
+##hala
+immaculate
+libby
+plata
+smuggling
+ventilation
+denoted
+minh
+##morphism
+430
+differed
+dion
+kelley
+lore
+mocking
+sabbath
+spikes
+hygiene
+drown
+runoff
+stylized
+tally
+liberated
+aux
+interpreter
+righteous
+aba
+siren
+reaper
+pearce
+millie
+##cier
+##yra
+gaius
+##iso
+captures
+##ttering
+dorm
+claudio
+##sic
+benches
+knighted
+blackness
+##ored
+discount
+fumble
+oxidation
+routed
+##ς
+novak
+perpendicular
+spoiled
+fracture
+splits
+##urt
+pads
+topology
+##cats
+axes
+fortunate
+offenders
+protestants
+esteem
+221
+broadband
+convened
+frankly
+hound
+prototypes
+isil
+facilitated
+keel
+##sher
+sahara
+awaited
+bubba
+orb
+prosecutors
+186
+hem
+520
+##xing
+relaxing
+remnant
+romney
+sorted
+slalom
+stefano
+ulrich
+##active
+exemption
+folder
+pauses
+foliage
+hitchcock
+epithet
+204
+criticisms
+##aca
+ballistic
+brody
+hinduism
+chaotic
+youths
+equals
+##pala
+pts
+thicker
+analogous
+capitalist
+improvised
+overseeing
+sinatra
+ascended
+beverage
+##tl
+straightforward
+##kon
+curran
+##west
+bois
+325
+induce
+surveying
+emperors
+sax
+unpopular
+##kk
+cartoonist
+fused
+##mble
+unto
+##yuki
+localities
+##cko
+##ln
+darlington
+slain
+academie
+lobbying
+sediment
+puzzles
+##grass
+defiance
+dickens
+manifest
+tongues
+alumnus
+arbor
+coincide
+184
+appalachian
+mustafa
+examiner
+cabaret
+traumatic
+yves
+bracelet
+draining
+heroin
+magnum
+baths
+odessa
+consonants
+mitsubishi
+##gua
+kellan
+vaudeville
+##fr
+joked
+null
+straps
+probation
+##ław
+ceded
+interfaces
+##pas
+##zawa
+blinding
+viet
+224
+rothschild
+museo
+640
+huddersfield
+##vr
+tactic
+##storm
+brackets
+dazed
+incorrectly
+##vu
+reg
+glazed
+fearful
+manifold
+benefited
+irony
+##sun
+stumbling
+##rte
+willingness
+balkans
+mei
+wraps
+##aba
+injected
+##lea
+gu
+syed
+harmless
+##hammer
+bray
+takeoff
+poppy
+timor
+cardboard
+astronaut
+purdue
+weeping
+southbound
+cursing
+stalls
+diagonal
+##neer
+lamar
+bryce
+comte
+weekdays
+harrington
+##uba
+negatively
+##see
+lays
+grouping
+##cken
+##henko
+affirmed
+halle
+modernist
+##lai
+hodges
+smelling
+aristocratic
+baptized
+dismiss
+justification
+oilers
+##now
+coupling
+qin
+snack
+healer
+##qing
+gardener
+layla
+battled
+formulated
+stephenson
+gravitational
+##gill
+##jun
+1768
+granny
+coordinating
+suites
+##cd
+##ioned
+monarchs
+##cote
+##hips
+sep
+blended
+apr
+barrister
+deposition
+fia
+mina
+policemen
+paranoid
+##pressed
+churchyard
+covert
+crumpled
+creep
+abandoning
+tr
+transmit
+conceal
+barr
+understands
+readiness
+spire
+##cology
+##enia
+##erry
+610
+startling
+unlock
+vida
+bowled
+slots
+##nat
+##islav
+spaced
+trusting
+admire
+rig
+##ink
+slack
+##70
+mv
+207
+casualty
+##wei
+classmates
+##odes
+##rar
+##rked
+amherst
+furnished
+evolve
+foundry
+menace
+mead
+##lein
+flu
+wesleyan
+##kled
+monterey
+webber
+##vos
+wil
+##mith
+##на
+bartholomew
+justices
+restrained
+##cke
+amenities
+191
+mediated
+sewage
+trenches
+ml
+mainz
+##thus
+1800s
+##cula
+##inski
+caine
+bonding
+213
+converts
+spheres
+superseded
+marianne
+crypt
+sweaty
+ensign
+historia
+##br
+spruce
+##post
+##ask
+forks
+thoughtfully
+yukon
+pamphlet
+ames
+##uter
+karma
+##yya
+bryn
+negotiation
+sighs
+incapable
+##mbre
+##ntial
+actresses
+taft
+##mill
+luce
+prevailed
+##amine
+1773
+motionless
+envoy
+testify
+investing
+sculpted
+instructors
+provence
+kali
+cullen
+horseback
+##while
+goodwin
+##jos
+gaa
+norte
+##ldon
+modify
+wavelength
+abd
+214
+skinned
+sprinter
+forecast
+scheduling
+marries
+squared
+tentative
+##chman
+boer
+##isch
+bolts
+swap
+fisherman
+assyrian
+impatiently
+guthrie
+martins
+murdoch
+194
+tanya
+nicely
+dolly
+lacy
+med
+##45
+syn
+decks
+fashionable
+millionaire
+##ust
+surfing
+##ml
+##ision
+heaved
+tammy
+consulate
+attendees
+routinely
+197
+fuse
+saxophonist
+backseat
+malaya
+##lord
+scowl
+tau
+##ishly
+193
+sighted
+steaming
+##rks
+303
+911
+##holes
+##hong
+ching
+##wife
+bless
+conserved
+jurassic
+stacey
+unix
+zion
+chunk
+rigorous
+blaine
+198
+peabody
+slayer
+dismay
+brewers
+nz
+##jer
+det
+##glia
+glover
+postwar
+int
+penetration
+sylvester
+imitation
+vertically
+airlift
+heiress
+knoxville
+viva
+##uin
+390
+macon
+##rim
+##fighter
+##gonal
+janice
+##orescence
+##wari
+marius
+belongings
+leicestershire
+196
+blanco
+inverted
+preseason
+sanity
+sobbing
+##due
+##elt
+##dled
+collingwood
+regeneration
+flickering
+shortest
+##mount
+##osi
+feminism
+##lat
+sherlock
+cabinets
+fumbled
+northbound
+precedent
+snaps
+##mme
+researching
+##akes
+guillaume
+insights
+manipulated
+vapor
+neighbour
+sap
+gangster
+frey
+f1
+stalking
+scarcely
+callie
+barnett
+tendencies
+audi
+doomed
+assessing
+slung
+panchayat
+ambiguous
+bartlett
+##etto
+distributing
+violating
+wolverhampton
+##hetic
+swami
+histoire
+##urus
+liable
+pounder
+groin
+hussain
+larsen
+popping
+surprises
+##atter
+vie
+curt
+##station
+mute
+relocate
+musicals
+authorization
+richter
+##sef
+immortality
+tna
+bombings
+##press
+deteriorated
+yiddish
+##acious
+robbed
+colchester
+cs
+pmid
+ao
+verified
+balancing
+apostle
+swayed
+recognizable
+oxfordshire
+retention
+nottinghamshire
+contender
+judd
+invitational
+shrimp
+uhf
+##icient
+cleaner
+longitudinal
+tanker
+##mur
+acronym
+broker
+koppen
+sundance
+suppliers
+##gil
+4000
+clipped
+fuels
+petite
+##anne
+landslide
+helene
+diversion
+populous
+landowners
+auspices
+melville
+quantitative
+##xes
+ferries
+nicky
+##llus
+doo
+haunting
+roche
+carver
+downed
+unavailable
+##pathy
+approximation
+hiroshima
+##hue
+garfield
+valle
+comparatively
+keyboardist
+traveler
+##eit
+congestion
+calculating
+subsidiaries
+##bate
+serb
+modernization
+fairies
+deepened
+ville
+averages
+##lore
+inflammatory
+tonga
+##itch
+co₂
+squads
+##hea
+gigantic
+serum
+enjoyment
+retailer
+verona
+35th
+cis
+##phobic
+magna
+technicians
+##vati
+arithmetic
+##sport
+levin
+##dation
+amtrak
+chow
+sienna
+##eyer
+backstage
+entrepreneurship
+##otic
+learnt
+tao
+##udy
+worcestershire
+formulation
+baggage
+hesitant
+bali
+sabotage
+##kari
+barren
+enhancing
+murmur
+pl
+freshly
+putnam
+syntax
+aces
+medicines
+resentment
+bandwidth
+##sier
+grins
+chili
+guido
+##sei
+framing
+implying
+gareth
+lissa
+genevieve
+pertaining
+admissions
+geo
+thorpe
+proliferation
+sato
+bela
+analyzing
+parting
+##gor
+awakened
+##isman
+huddled
+secrecy
+##kling
+hush
+gentry
+540
+dungeons
+##ego
+coasts
+##utz
+sacrificed
+##chule
+landowner
+mutually
+prevalence
+programmer
+adolescent
+disrupted
+seaside
+gee
+trusts
+vamp
+georgie
+##nesian
+##iol
+schedules
+sindh
+##market
+etched
+hm
+sparse
+bey
+beaux
+scratching
+gliding
+unidentified
+216
+collaborating
+gems
+jesuits
+oro
+accumulation
+shaping
+mbe
+anal
+##xin
+231
+enthusiasts
+newscast
+##egan
+janata
+dewey
+parkinson
+179
+ankara
+biennial
+towering
+dd
+inconsistent
+950
+##chet
+thriving
+terminate
+cabins
+furiously
+eats
+advocating
+donkey
+marley
+muster
+phyllis
+leiden
+##user
+grassland
+glittering
+iucn
+loneliness
+217
+memorandum
+armenians
+##ddle
+popularized
+rhodesia
+60s
+lame
+##illon
+sans
+bikini
+header
+orbits
+##xx
+##finger
+##ulator
+sharif
+spines
+biotechnology
+strolled
+naughty
+yates
+##wire
+fremantle
+milo
+##mour
+abducted
+removes
+##atin
+humming
+wonderland
+##chrome
+##ester
+hume
+pivotal
+##rates
+armand
+grams
+believers
+elector
+rte
+apron
+bis
+scraped
+##yria
+endorsement
+initials
+##llation
+eps
+dotted
+hints
+buzzing
+emigration
+nearer
+##tom
+indicators
+##ulu
+coarse
+neutron
+protectorate
+##uze
+directional
+exploits
+pains
+loire
+1830s
+proponents
+guggenheim
+rabbits
+ritchie
+305
+hectare
+inputs
+hutton
+##raz
+verify
+##ako
+boilers
+longitude
+##lev
+skeletal
+yer
+emilia
+citrus
+compromised
+##gau
+pokemon
+prescription
+paragraph
+eduard
+cadillac
+attire
+categorized
+kenyan
+weddings
+charley
+##bourg
+entertain
+monmouth
+##lles
+nutrients
+davey
+mesh
+incentive
+practised
+ecosystems
+kemp
+subdued
+overheard
+##rya
+bodily
+maxim
+##nius
+apprenticeship
+ursula
+##fight
+lodged
+rug
+silesian
+unconstitutional
+patel
+inspected
+coyote
+unbeaten
+##hak
+34th
+disruption
+convict
+parcel
+##cl
+##nham
+collier
+implicated
+mallory
+##iac
+##lab
+susannah
+winkler
+##rber
+shia
+phelps
+sediments
+graphical
+robotic
+##sner
+adulthood
+mart
+smoked
+##isto
+kathryn
+clarified
+##aran
+divides
+convictions
+oppression
+pausing
+burying
+##mt
+federico
+mathias
+eileen
+##tana
+kite
+hunched
+##acies
+189
+##atz
+disadvantage
+liza
+kinetic
+greedy
+paradox
+yokohama
+dowager
+trunks
+ventured
+##gement
+gupta
+vilnius
+olaf
+##thest
+crimean
+hopper
+##ej
+progressively
+arturo
+mouthed
+arrondissement
+##fusion
+rubin
+simulcast
+oceania
+##orum
+##stra
+##rred
+busiest
+intensely
+navigator
+cary
+##vine
+##hini
+##bies
+fife
+rowe
+rowland
+posing
+insurgents
+shafts
+lawsuits
+activate
+conor
+inward
+culturally
+garlic
+265
+##eering
+eclectic
+##hui
+##kee
+##nl
+furrowed
+vargas
+meteorological
+rendezvous
+##aus
+culinary
+commencement
+##dition
+quota
+##notes
+mommy
+salaries
+overlapping
+mule
+##iology
+##mology
+sums
+wentworth
+##isk
+##zione
+mainline
+subgroup
+##illy
+hack
+plaintiff
+verdi
+bulb
+differentiation
+engagements
+multinational
+supplemented
+bertrand
+caller
+regis
+##naire
+##sler
+##arts
+##imated
+blossom
+propagation
+kilometer
+viaduct
+vineyards
+##uate
+beckett
+optimization
+golfer
+songwriters
+seminal
+semitic
+thud
+volatile
+evolving
+ridley
+##wley
+trivial
+distributions
+scandinavia
+jiang
+##ject
+wrestled
+insistence
+##dio
+emphasizes
+napkin
+##ods
+adjunct
+rhyme
+##ricted
+##eti
+hopeless
+surrounds
+tremble
+32nd
+smoky
+##ntly
+oils
+medicinal
+padded
+steer
+wilkes
+219
+255
+concessions
+hue
+uniquely
+blinded
+landon
+yahoo
+##lane
+hendrix
+commemorating
+dex
+specify
+chicks
+##ggio
+intercity
+1400
+morley
+##torm
+highlighting
+##oting
+pang
+oblique
+stalled
+##liner
+flirting
+newborn
+1769
+bishopric
+shaved
+232
+currie
+##ush
+dharma
+spartan
+##ooped
+favorites
+smug
+novella
+sirens
+abusive
+creations
+espana
+##lage
+paradigm
+semiconductor
+sheen
+##rdo
+##yen
+##zak
+nrl
+renew
+##pose
+##tur
+adjutant
+marches
+norma
+##enity
+ineffective
+weimar
+grunt
+##gat
+lordship
+plotting
+expenditure
+infringement
+lbs
+refrain
+av
+mimi
+mistakenly
+postmaster
+1771
+##bara
+ras
+motorsports
+tito
+199
+subjective
+##zza
+bully
+stew
+##kaya
+prescott
+1a
+##raphic
+##zam
+bids
+styling
+paranormal
+reeve
+sneaking
+exploding
+katz
+akbar
+migrant
+syllables
+indefinitely
+##ogical
+destroys
+replaces
+applause
+##phine
+pest
+##fide
+218
+articulated
+bertie
+##thing
+##cars
+##ptic
+courtroom
+crowley
+aesthetics
+cummings
+tehsil
+hormones
+titanic
+dangerously
+##ibe
+stadion
+jaenelle
+auguste
+ciudad
+##chu
+mysore
+partisans
+##sio
+lucan
+philipp
+##aly
+debating
+henley
+interiors
+##rano
+##tious
+homecoming
+beyonce
+usher
+henrietta
+prepares
+weeds
+##oman
+ely
+plucked
+##pire
+##dable
+luxurious
+##aq
+artifact
+password
+pasture
+juno
+maddy
+minsk
+##dder
+##ologies
+##rone
+assessments
+martian
+royalist
+1765
+examines
+##mani
+##rge
+nino
+223
+parry
+scooped
+relativity
+##eli
+##uting
+##cao
+congregational
+noisy
+traverse
+##agawa
+strikeouts
+nickelodeon
+obituary
+transylvania
+binds
+depictions
+polk
+trolley
+##yed
+##lard
+breeders
+##under
+dryly
+hokkaido
+1762
+strengths
+stacks
+bonaparte
+connectivity
+neared
+prostitutes
+stamped
+anaheim
+gutierrez
+sinai
+##zzling
+bram
+fresno
+madhya
+##86
+proton
+##lena
+##llum
+##phon
+reelected
+wanda
+##anus
+##lb
+ample
+distinguishing
+##yler
+grasping
+sermons
+tomato
+bland
+stimulation
+avenues
+##eux
+spreads
+scarlett
+fern
+pentagon
+assert
+baird
+chesapeake
+ir
+calmed
+distortion
+fatalities
+##olis
+correctional
+pricing
+##astic
+##gina
+prom
+dammit
+ying
+collaborate
+##chia
+welterweight
+33rd
+pointer
+substitution
+bonded
+umpire
+communicating
+multitude
+paddle
+##obe
+federally
+intimacy
+##insky
+betray
+ssr
+##lett
+##lean
+##lves
+##therapy
+airbus
+##tery
+functioned
+ud
+bearer
+biomedical
+netflix
+##hire
+##nca
+condom
+brink
+ik
+##nical
+macy
+##bet
+flap
+gma
+experimented
+jelly
+lavender
+##icles
+##ulia
+munro
+##mian
+##tial
+rye
+##rle
+60th
+gigs
+hottest
+rotated
+predictions
+fuji
+bu
+##erence
+##omi
+barangay
+##fulness
+##sas
+clocks
+##rwood
+##liness
+cereal
+roe
+wight
+decker
+uttered
+babu
+onion
+xml
+forcibly
+##df
+petra
+sarcasm
+hartley
+peeled
+storytelling
+##42
+##xley
+##ysis
+##ffa
+fibre
+kiel
+auditor
+fig
+harald
+greenville
+##berries
+geographically
+nell
+quartz
+##athic
+cemeteries
+##lr
+crossings
+nah
+holloway
+reptiles
+chun
+sichuan
+snowy
+660
+corrections
+##ivo
+zheng
+ambassadors
+blacksmith
+fielded
+fluids
+hardcover
+turnover
+medications
+melvin
+academies
+##erton
+ro
+roach
+absorbing
+spaniards
+colton
+##founded
+outsider
+espionage
+kelsey
+245
+edible
+##ulf
+dora
+establishes
+##sham
+##tries
+contracting
+##tania
+cinematic
+costello
+nesting
+##uron
+connolly
+duff
+##nology
+mma
+##mata
+fergus
+sexes
+gi
+optics
+spectator
+woodstock
+banning
+##hee
+##fle
+differentiate
+outfielder
+refinery
+226
+312
+gerhard
+horde
+lair
+drastically
+##udi
+landfall
+##cheng
+motorsport
+odi
+##achi
+predominant
+quay
+skins
+##ental
+edna
+harshly
+complementary
+murdering
+##aves
+wreckage
+##90
+ono
+outstretched
+lennox
+munitions
+galen
+reconcile
+470
+scalp
+bicycles
+gillespie
+questionable
+rosenberg
+guillermo
+hostel
+jarvis
+kabul
+volvo
+opium
+yd
+##twined
+abuses
+decca
+outpost
+##cino
+sensible
+neutrality
+##64
+ponce
+anchorage
+atkins
+turrets
+inadvertently
+disagree
+libre
+vodka
+reassuring
+weighs
+##yal
+glide
+jumper
+ceilings
+repertory
+outs
+stain
+##bial
+envy
+##ucible
+smashing
+heightened
+policing
+hyun
+mixes
+lai
+prima
+##ples
+celeste
+##bina
+lucrative
+intervened
+kc
+manually
+##rned
+stature
+staffed
+bun
+bastards
+nairobi
+priced
+##auer
+thatcher
+##kia
+tripped
+comune
+##ogan
+##pled
+brasil
+incentives
+emanuel
+hereford
+musica
+##kim
+benedictine
+biennale
+##lani
+eureka
+gardiner
+rb
+knocks
+sha
+##ael
+##elled
+##onate
+efficacy
+ventura
+masonic
+sanford
+maize
+leverage
+##feit
+capacities
+santana
+##aur
+novelty
+vanilla
+##cter
+##tour
+benin
+##oir
+##rain
+neptune
+drafting
+tallinn
+##cable
+humiliation
+##boarding
+schleswig
+fabian
+bernardo
+liturgy
+spectacle
+sweeney
+pont
+routledge
+##tment
+cosmos
+ut
+hilt
+sleek
+universally
+##eville
+##gawa
+typed
+##dry
+favors
+allegheny
+glaciers
+##rly
+recalling
+aziz
+##log
+parasite
+requiem
+auf
+##berto
+##llin
+illumination
+##breaker
+##issa
+festivities
+bows
+govern
+vibe
+vp
+333
+sprawled
+larson
+pilgrim
+bwf
+leaping
+##rts
+##ssel
+alexei
+greyhound
+hoarse
+##dler
+##oration
+seneca
+##cule
+gaping
+##ulously
+##pura
+cinnamon
+##gens
+##rricular
+craven
+fantasies
+houghton
+engined
+reigned
+dictator
+supervising
+##oris
+bogota
+commentaries
+unnatural
+fingernails
+spirituality
+tighten
+##tm
+canadiens
+protesting
+intentional
+cheers
+sparta
+##ytic
+##iere
+##zine
+widen
+belgarath
+controllers
+dodd
+iaaf
+navarre
+##ication
+defect
+squire
+steiner
+whisky
+##mins
+560
+inevitably
+tome
+##gold
+chew
+##uid
+##lid
+elastic
+##aby
+streaked
+alliances
+jailed
+regal
+##ined
+##phy
+czechoslovak
+narration
+absently
+##uld
+bluegrass
+guangdong
+quran
+criticizing
+hose
+hari
+##liest
+##owa
+skier
+streaks
+deploy
+##lom
+raft
+bose
+dialed
+huff
+##eira
+haifa
+simplest
+bursting
+endings
+ib
+sultanate
+##titled
+franks
+whitman
+ensures
+sven
+##ggs
+collaborators
+forster
+organising
+ui
+banished
+napier
+injustice
+teller
+layered
+thump
+##otti
+roc
+battleships
+evidenced
+fugitive
+sadie
+robotics
+##roud
+equatorial
+geologist
+##iza
+yielding
+##bron
+##sr
+internationale
+mecca
+##diment
+sbs
+skyline
+toad
+uploaded
+reflective
+undrafted
+lal
+leafs
+bayern
+##dai
+lakshmi
+shortlisted
+##stick
+##wicz
+camouflage
+donate
+af
+christi
+lau
+##acio
+disclosed
+nemesis
+1761
+assemble
+straining
+northamptonshire
+tal
+##asi
+bernardino
+premature
+heidi
+42nd
+coefficients
+galactic
+reproduce
+buzzed
+sensations
+zionist
+monsieur
+myrtle
+##eme
+archery
+strangled
+musically
+viewpoint
+antiquities
+bei
+trailers
+seahawks
+cured
+pee
+preferring
+tasmanian
+lange
+sul
+##mail
+##working
+colder
+overland
+lucivar
+massey
+gatherings
+haitian
+##smith
+disapproval
+flaws
+##cco
+##enbach
+1766
+npr
+##icular
+boroughs
+creole
+forums
+techno
+1755
+dent
+abdominal
+streetcar
+##eson
+##stream
+procurement
+gemini
+predictable
+##tya
+acheron
+christoph
+feeder
+fronts
+vendor
+bernhard
+jammu
+tumors
+slang
+##uber
+goaltender
+twists
+curving
+manson
+vuelta
+mer
+peanut
+confessions
+pouch
+unpredictable
+allowance
+theodor
+vascular
+##factory
+bala
+authenticity
+metabolic
+coughing
+nanjing
+##cea
+pembroke
+##bard
+splendid
+36th
+ff
+hourly
+##ahu
+elmer
+handel
+##ivate
+awarding
+thrusting
+dl
+experimentation
+##hesion
+##46
+caressed
+entertained
+steak
+##rangle
+biologist
+orphans
+baroness
+oyster
+stepfather
+##dridge
+mirage
+reefs
+speeding
+##31
+barons
+1764
+227
+inhabit
+preached
+repealed
+##tral
+honoring
+boogie
+captives
+administer
+johanna
+##imate
+gel
+suspiciously
+1767
+sobs
+##dington
+backbone
+hayward
+garry
+##folding
+##nesia
+maxi
+##oof
+##ppe
+ellison
+galileo
+##stand
+crimea
+frenzy
+amour
+bumper
+matrices
+natalia
+baking
+garth
+palestinians
+##grove
+smack
+conveyed
+ensembles
+gardening
+##manship
+##rup
+##stituting
+1640
+harvesting
+topography
+jing
+shifters
+dormitory
+##carriage
+##lston
+ist
+skulls
+##stadt
+dolores
+jewellery
+sarawak
+##wai
+##zier
+fences
+christy
+confinement
+tumbling
+credibility
+fir
+stench
+##bria
+##plication
+##nged
+##sam
+virtues
+##belt
+marjorie
+pba
+##eem
+##made
+celebrates
+schooner
+agitated
+barley
+fulfilling
+anthropologist
+##pro
+restrict
+novi
+regulating
+##nent
+padres
+##rani
+##hesive
+loyola
+tabitha
+milky
+olson
+proprietor
+crambidae
+guarantees
+intercollegiate
+ljubljana
+hilda
+##sko
+ignorant
+hooded
+##lts
+sardinia
+##lidae
+##vation
+frontman
+privileged
+witchcraft
+##gp
+jammed
+laude
+poking
+##than
+bracket
+amazement
+yunnan
+##erus
+maharaja
+linnaeus
+264
+commissioning
+milano
+peacefully
+##logies
+akira
+rani
+regulator
+##36
+grasses
+##rance
+luzon
+crows
+compiler
+gretchen
+seaman
+edouard
+tab
+buccaneers
+ellington
+hamlets
+whig
+socialists
+##anto
+directorial
+easton
+mythological
+##kr
+##vary
+rhineland
+semantic
+taut
+dune
+inventions
+succeeds
+##iter
+replication
+branched
+##pired
+jul
+prosecuted
+kangaroo
+penetrated
+##avian
+middlesbrough
+doses
+bleak
+madam
+predatory
+relentless
+##vili
+reluctance
+##vir
+hailey
+crore
+silvery
+1759
+monstrous
+swimmers
+transmissions
+hawthorn
+informing
+##eral
+toilets
+caracas
+crouch
+kb
+##sett
+295
+cartel
+hadley
+##aling
+alexia
+yvonne
+##biology
+cinderella
+eton
+superb
+blizzard
+stabbing
+industrialist
+maximus
+##gm
+##orus
+groves
+maud
+clade
+oversized
+comedic
+##bella
+rosen
+nomadic
+fulham
+montane
+beverages
+galaxies
+redundant
+swarm
+##rot
+##folia
+##llis
+buckinghamshire
+fen
+bearings
+bahadur
+##rom
+gilles
+phased
+dynamite
+faber
+benoit
+vip
+##ount
+##wd
+booking
+fractured
+tailored
+anya
+spices
+westwood
+cairns
+auditions
+inflammation
+steamed
+##rocity
+##acion
+##urne
+skyla
+thereof
+watford
+torment
+archdeacon
+transforms
+lulu
+demeanor
+fucked
+serge
+##sor
+mckenna
+minas
+entertainer
+##icide
+caress
+originate
+residue
+##sty
+1740
+##ilised
+##org
+beech
+##wana
+subsidies
+##ghton
+emptied
+gladstone
+ru
+firefighters
+voodoo
+##rcle
+het
+nightingale
+tamara
+edmond
+ingredient
+weaknesses
+silhouette
+285
+compatibility
+withdrawing
+hampson
+##mona
+anguish
+giggling
+##mber
+bookstore
+##jiang
+southernmost
+tilting
+##vance
+bai
+economical
+rf
+briefcase
+dreadful
+hinted
+projections
+shattering
+totaling
+##rogate
+analogue
+indicted
+periodical
+fullback
+##dman
+haynes
+##tenberg
+##ffs
+##ishment
+1745
+thirst
+stumble
+penang
+vigorous
+##ddling
+##kor
+##lium
+octave
+##ove
+##enstein
+##inen
+##ones
+siberian
+##uti
+cbn
+repeal
+swaying
+##vington
+khalid
+tanaka
+unicorn
+otago
+plastered
+lobe
+riddle
+##rella
+perch
+##ishing
+croydon
+filtered
+graeme
+tripoli
+##ossa
+crocodile
+##chers
+sufi
+mined
+##tung
+inferno
+lsu
+##phi
+swelled
+utilizes
+£2
+cale
+periodicals
+styx
+hike
+informally
+coop
+lund
+##tidae
+ala
+hen
+qui
+transformations
+disposed
+sheath
+chickens
+##cade
+fitzroy
+sas
+silesia
+unacceptable
+odisha
+1650
+sabrina
+pe
+spokane
+ratios
+athena
+massage
+shen
+dilemma
+##drum
+##riz
+##hul
+corona
+doubtful
+niall
+##pha
+##bino
+fines
+cite
+acknowledging
+bangor
+ballard
+bathurst
+##resh
+huron
+mustered
+alzheimer
+garments
+kinase
+tyre
+warship
+##cp
+flashback
+pulmonary
+braun
+cheat
+kamal
+cyclists
+constructions
+grenades
+ndp
+traveller
+excuses
+stomped
+signalling
+trimmed
+futsal
+mosques
+relevance
+##wine
+wta
+##23
+##vah
+##lter
+hoc
+##riding
+optimistic
+##´s
+deco
+sim
+interacting
+rejecting
+moniker
+waterways
+##ieri
+##oku
+mayors
+gdansk
+outnumbered
+pearls
+##ended
+##hampton
+fairs
+totals
+dominating
+262
+notions
+stairway
+compiling
+pursed
+commodities
+grease
+yeast
+##jong
+carthage
+griffiths
+residual
+amc
+contraction
+laird
+sapphire
+##marine
+##ivated
+amalgamation
+dissolve
+inclination
+lyle
+packaged
+altitudes
+suez
+canons
+graded
+lurched
+narrowing
+boasts
+guise
+wed
+enrico
+##ovsky
+rower
+scarred
+bree
+cub
+iberian
+protagonists
+bargaining
+proposing
+trainers
+voyages
+vans
+fishes
+##aea
+##ivist
+##verance
+encryption
+artworks
+kazan
+sabre
+cleopatra
+hepburn
+rotting
+supremacy
+mecklenburg
+##brate
+burrows
+hazards
+outgoing
+flair
+organizes
+##ctions
+scorpion
+##usions
+boo
+234
+chevalier
+dunedin
+slapping
+##34
+ineligible
+pensions
+##38
+##omic
+manufactures
+emails
+bismarck
+238
+weakening
+blackish
+ding
+mcgee
+quo
+##rling
+northernmost
+xx
+manpower
+greed
+sampson
+clicking
+##ange
+##horpe
+##inations
+##roving
+torre
+##eptive
+##moral
+symbolism
+38th
+asshole
+meritorious
+outfits
+splashed
+biographies
+sprung
+astros
+##tale
+302
+737
+filly
+raoul
+nw
+tokugawa
+linden
+clubhouse
+##apa
+tracts
+romano
+##pio
+putin
+tags
+##note
+chained
+dickson
+gunshot
+moe
+gunn
+rashid
+##tails
+zipper
+##bas
+##nea
+contrasted
+##ply
+##udes
+plum
+pharaoh
+##pile
+aw
+comedies
+ingrid
+sandwiches
+subdivisions
+1100
+mariana
+nokia
+kamen
+hz
+delaney
+veto
+herring
+##words
+possessive
+outlines
+##roup
+siemens
+stairwell
+rc
+gallantry
+messiah
+palais
+yells
+233
+zeppelin
+##dm
+bolivar
+##cede
+smackdown
+mckinley
+##mora
+##yt
+muted
+geologic
+finely
+unitary
+avatar
+hamas
+maynard
+rees
+bog
+contrasting
+##rut
+liv
+chico
+disposition
+pixel
+##erate
+becca
+dmitry
+yeshiva
+narratives
+##lva
+##ulton
+mercenary
+sharpe
+tempered
+navigate
+stealth
+amassed
+keynes
+##lini
+untouched
+##rrie
+havoc
+lithium
+##fighting
+abyss
+graf
+southward
+wolverine
+balloons
+implements
+ngos
+transitions
+##icum
+ambushed
+concacaf
+dormant
+economists
+##dim
+costing
+csi
+rana
+universite
+boulders
+verity
+##llon
+collin
+mellon
+misses
+cypress
+fluorescent
+lifeless
+spence
+##ulla
+crewe
+shepard
+pak
+revelations
+##م
+jolly
+gibbons
+paw
+##dro
+##quel
+freeing
+##test
+shack
+fries
+palatine
+##51
+##hiko
+accompaniment
+cruising
+recycled
+##aver
+erwin
+sorting
+synthesizers
+dyke
+realities
+sg
+strides
+enslaved
+wetland
+##ghan
+competence
+gunpowder
+grassy
+maroon
+reactors
+objection
+##oms
+carlson
+gearbox
+macintosh
+radios
+shelton
+##sho
+clergyman
+prakash
+254
+mongols
+trophies
+oricon
+228
+stimuli
+twenty20
+cantonese
+cortes
+mirrored
+##saurus
+bhp
+cristina
+melancholy
+##lating
+enjoyable
+nuevo
+##wny
+downfall
+schumacher
+##ind
+banging
+lausanne
+rumbled
+paramilitary
+reflex
+ax
+amplitude
+migratory
+##gall
+##ups
+midi
+barnard
+lastly
+sherry
+##hp
+##nall
+keystone
+##kra
+carleton
+slippery
+##53
+coloring
+foe
+socket
+otter
+##rgos
+mats
+##tose
+consultants
+bafta
+bison
+topping
+##km
+490
+primal
+abandonment
+transplant
+atoll
+hideous
+mort
+pained
+reproduced
+tae
+howling
+##turn
+unlawful
+billionaire
+hotter
+poised
+lansing
+##chang
+dinamo
+retro
+messing
+nfc
+domesday
+##mina
+blitz
+timed
+##athing
+##kley
+ascending
+gesturing
+##izations
+signaled
+tis
+chinatown
+mermaid
+savanna
+jameson
+##aint
+catalina
+##pet
+##hers
+cochrane
+cy
+chatting
+##kus
+alerted
+computation
+mused
+noelle
+majestic
+mohawk
+campo
+octagonal
+##sant
+##hend
+241
+aspiring
+##mart
+comprehend
+iona
+paralyzed
+shimmering
+swindon
+rhone
+##eley
+reputed
+configurations
+pitchfork
+agitation
+francais
+gillian
+lipstick
+##ilo
+outsiders
+pontifical
+resisting
+bitterness
+sewer
+rockies
+##edd
+##ucher
+misleading
+1756
+exiting
+galloway
+##nging
+risked
+##heart
+246
+commemoration
+schultz
+##rka
+integrating
+##rsa
+poses
+shrieked
+##weiler
+guineas
+gladys
+jerking
+owls
+goldsmith
+nightly
+penetrating
+##unced
+lia
+##33
+ignited
+betsy
+##aring
+##thorpe
+follower
+vigorously
+##rave
+coded
+kiran
+knit
+zoology
+tbilisi
+##28
+##bered
+repository
+govt
+deciduous
+dino
+growling
+##bba
+enhancement
+unleashed
+chanting
+pussy
+biochemistry
+##eric
+kettle
+repression
+toxicity
+nrhp
+##arth
+##kko
+##bush
+ernesto
+commended
+outspoken
+242
+mca
+parchment
+sms
+kristen
+##aton
+bisexual
+raked
+glamour
+navajo
+a2
+conditioned
+showcased
+##hma
+spacious
+youthful
+##esa
+usl
+appliances
+junta
+brest
+layne
+conglomerate
+enchanted
+chao
+loosened
+picasso
+circulating
+inspect
+montevideo
+##centric
+##kti
+piazza
+spurred
+##aith
+bari
+freedoms
+poultry
+stamford
+lieu
+##ect
+indigo
+sarcastic
+bahia
+stump
+attach
+dvds
+frankenstein
+lille
+approx
+scriptures
+pollen
+##script
+nmi
+overseen
+##ivism
+tides
+proponent
+newmarket
+inherit
+milling
+##erland
+centralized
+##rou
+distributors
+credentials
+drawers
+abbreviation
+##lco
+##xon
+downing
+uncomfortably
+ripe
+##oes
+erase
+franchises
+##ever
+populace
+##bery
+##khar
+decomposition
+pleas
+##tet
+daryl
+sabah
+##stle
+##wide
+fearless
+genie
+lesions
+annette
+##ogist
+oboe
+appendix
+nair
+dripped
+petitioned
+maclean
+mosquito
+parrot
+rpg
+hampered
+1648
+operatic
+reservoirs
+##tham
+irrelevant
+jolt
+summarized
+##fp
+medallion
+##taff
+##−
+clawed
+harlow
+narrower
+goddard
+marcia
+bodied
+fremont
+suarez
+altering
+tempest
+mussolini
+porn
+##isms
+sweetly
+oversees
+walkers
+solitude
+grimly
+shrines
+hk
+ich
+supervisors
+hostess
+dietrich
+legitimacy
+brushes
+expressive
+##yp
+dissipated
+##rse
+localized
+systemic
+##nikov
+gettysburg
+##js
+##uaries
+dialogues
+muttering
+251
+housekeeper
+sicilian
+discouraged
+##frey
+beamed
+kaladin
+halftime
+kidnap
+##amo
+##llet
+1754
+synonymous
+depleted
+instituto
+insulin
+reprised
+##opsis
+clashed
+##ctric
+interrupting
+radcliffe
+insisting
+medici
+1715
+ejected
+playfully
+turbulent
+##47
+starvation
+##rini
+shipment
+rebellious
+petersen
+verification
+merits
+##rified
+cakes
+##charged
+1757
+milford
+shortages
+spying
+fidelity
+##aker
+emitted
+storylines
+harvested
+seismic
+##iform
+cheung
+kilda
+theoretically
+barbie
+lynx
+##rgy
+##tius
+goblin
+mata
+poisonous
+##nburg
+reactive
+residues
+obedience
+##евич
+conjecture
+##rac
+401
+hating
+sixties
+kicker
+moaning
+motown
+##bha
+emancipation
+neoclassical
+##hering
+consoles
+ebert
+professorship
+##tures
+sustaining
+assaults
+obeyed
+affluent
+incurred
+tornadoes
+##eber
+##zow
+emphasizing
+highlanders
+cheated
+helmets
+##ctus
+internship
+terence
+bony
+executions
+legislators
+berries
+peninsular
+tinged
+##aco
+1689
+amplifier
+corvette
+ribbons
+lavish
+pennant
+##lander
+worthless
+##chfield
+##forms
+mariano
+pyrenees
+expenditures
+##icides
+chesterfield
+mandir
+tailor
+39th
+sergey
+nestled
+willed
+aristocracy
+devotees
+goodnight
+raaf
+rumored
+weaponry
+remy
+appropriations
+harcourt
+burr
+riaa
+##lence
+limitation
+unnoticed
+guo
+soaking
+swamps
+##tica
+collapsing
+tatiana
+descriptive
+brigham
+psalm
+##chment
+maddox
+##lization
+patti
+caliph
+##aja
+akron
+injuring
+serra
+##ganj
+basins
+##sari
+astonished
+launcher
+##church
+hilary
+wilkins
+sewing
+##sf
+stinging
+##fia
+##ncia
+underwood
+startup
+##ition
+compilations
+vibrations
+embankment
+jurist
+##nity
+bard
+juventus
+groundwater
+kern
+palaces
+helium
+boca
+cramped
+marissa
+soto
+##worm
+jae
+princely
+##ggy
+faso
+bazaar
+warmly
+##voking
+229
+pairing
+##lite
+##grate
+##nets
+wien
+freaked
+ulysses
+rebirth
+##alia
+##rent
+mummy
+guzman
+jimenez
+stilled
+##nitz
+trajectory
+tha
+woken
+archival
+professions
+##pts
+##pta
+hilly
+shadowy
+shrink
+##bolt
+norwood
+glued
+migrate
+stereotypes
+devoid
+##pheus
+625
+evacuate
+horrors
+infancy
+gotham
+knowles
+optic
+downloaded
+sachs
+kingsley
+parramatta
+darryl
+mor
+##onale
+shady
+commence
+confesses
+kan
+##meter
+##placed
+marlborough
+roundabout
+regents
+frigates
+io
+##imating
+gothenburg
+revoked
+carvings
+clockwise
+convertible
+intruder
+##sche
+banged
+##ogo
+vicky
+bourgeois
+##mony
+dupont
+footing
+##gum
+pd
+##real
+buckle
+yun
+penthouse
+sane
+720
+serviced
+stakeholders
+neumann
+bb
+##eers
+comb
+##gam
+catchment
+pinning
+rallies
+typing
+##elles
+forefront
+freiburg
+sweetie
+giacomo
+widowed
+goodwill
+worshipped
+aspirations
+midday
+##vat
+fishery
+##trick
+bournemouth
+turk
+243
+hearth
+ethanol
+guadalajara
+murmurs
+sl
+##uge
+afforded
+scripted
+##hta
+wah
+##jn
+coroner
+translucent
+252
+memorials
+puck
+progresses
+clumsy
+##race
+315
+candace
+recounted
+##27
+##slin
+##uve
+filtering
+##mac
+howl
+strata
+heron
+leveled
+##ays
+dubious
+##oja
+##т
+##wheel
+citations
+exhibiting
+##laya
+##mics
+##pods
+turkic
+##lberg
+injunction
+##ennial
+##mit
+antibodies
+##44
+organise
+##rigues
+cardiovascular
+cushion
+inverness
+##zquez
+dia
+cocoa
+sibling
+##tman
+##roid
+expanse
+feasible
+tunisian
+algiers
+##relli
+rus
+bloomberg
+dso
+westphalia
+bro
+tacoma
+281
+downloads
+##ours
+konrad
+duran
+##hdi
+continuum
+jett
+compares
+legislator
+secession
+##nable
+##gues
+##zuka
+translating
+reacher
+##gley
+##ła
+aleppo
+##agi
+tc
+orchards
+trapping
+linguist
+versatile
+drumming
+postage
+calhoun
+superiors
+##mx
+barefoot
+leary
+##cis
+ignacio
+alfa
+kaplan
+##rogen
+bratislava
+mori
+##vot
+disturb
+haas
+313
+cartridges
+gilmore
+radiated
+salford
+tunic
+hades
+##ulsive
+archeological
+delilah
+magistrates
+auditioned
+brewster
+charters
+empowerment
+blogs
+cappella
+dynasties
+iroquois
+whipping
+##krishna
+raceway
+truths
+myra
+weaken
+judah
+mcgregor
+##horse
+mic
+refueling
+37th
+burnley
+bosses
+markus
+premio
+query
+##gga
+dunbar
+##economic
+darkest
+lyndon
+sealing
+commendation
+reappeared
+##mun
+addicted
+ezio
+slaughtered
+satisfactory
+shuffle
+##eves
+##thic
+##uj
+fortification
+warrington
+##otto
+resurrected
+fargo
+mane
+##utable
+##lei
+##space
+foreword
+ox
+##aris
+##vern
+abrams
+hua
+##mento
+sakura
+##alo
+uv
+sentimental
+##skaya
+midfield
+##eses
+sturdy
+scrolls
+macleod
+##kyu
+entropy
+##lance
+mitochondrial
+cicero
+excelled
+thinner
+convoys
+perceive
+##oslav
+##urable
+systematically
+grind
+burkina
+287
+##tagram
+ops
+##aman
+guantanamo
+##cloth
+##tite
+forcefully
+wavy
+##jou
+pointless
+##linger
+##tze
+layton
+portico
+superficial
+clerical
+outlaws
+##hism
+burials
+muir
+##inn
+creditors
+hauling
+rattle
+##leg
+calais
+monde
+archers
+reclaimed
+dwell
+wexford
+hellenic
+falsely
+remorse
+##tek
+dough
+furnishings
+##uttered
+gabon
+neurological
+novice
+##igraphy
+contemplated
+pulpit
+nightstand
+saratoga
+##istan
+documenting
+pulsing
+taluk
+##firmed
+busted
+marital
+##rien
+disagreements
+wasps
+##yes
+hodge
+mcdonnell
+mimic
+fran
+pendant
+dhabi
+musa
+##nington
+congratulations
+argent
+darrell
+concussion
+losers
+regrets
+thessaloniki
+reversal
+donaldson
+hardwood
+thence
+achilles
+ritter
+##eran
+demonic
+jurgen
+prophets
+goethe
+eki
+classmate
+buff
+##cking
+yank
+irrational
+##inging
+perished
+seductive
+qur
+sourced
+##crat
+##typic
+mustard
+ravine
+barre
+horizontally
+characterization
+phylogenetic
+boise
+##dit
+##runner
+##tower
+brutally
+intercourse
+seduce
+##bbing
+fay
+ferris
+ogden
+amar
+nik
+unarmed
+##inator
+evaluating
+kyrgyzstan
+sweetness
+##lford
+##oki
+mccormick
+meiji
+notoriety
+stimulate
+disrupt
+figuring
+instructional
+mcgrath
+##zoo
+groundbreaking
+##lto
+flinch
+khorasan
+agrarian
+bengals
+mixer
+radiating
+##sov
+ingram
+pitchers
+nad
+tariff
+##cript
+tata
+##codes
+##emi
+##ungen
+appellate
+lehigh
+##bled
+##giri
+brawl
+duct
+texans
+##ciation
+##ropolis
+skipper
+speculative
+vomit
+doctrines
+stresses
+253
+davy
+graders
+whitehead
+jozef
+timely
+cumulative
+haryana
+paints
+appropriately
+boon
+cactus
+##ales
+##pid
+dow
+legions
+##pit
+perceptions
+1730
+picturesque
+##yse
+periphery
+rune
+wr
+##aha
+celtics
+sentencing
+whoa
+##erin
+confirms
+variance
+425
+moines
+mathews
+spade
+rave
+m1
+fronted
+fx
+blending
+alleging
+reared
+##gl
+237
+##paper
+grassroots
+eroded
+##free
+##physical
+directs
+ordeal
+##sław
+accelerate
+hacker
+rooftop
+##inia
+lev
+buys
+cebu
+devote
+##lce
+specialising
+##ulsion
+choreographed
+repetition
+warehouses
+##ryl
+paisley
+tuscany
+analogy
+sorcerer
+hash
+huts
+shards
+descends
+exclude
+nix
+chaplin
+gaga
+ito
+vane
+##drich
+causeway
+misconduct
+limo
+orchestrated
+glands
+jana
+##kot
+u2
+##mple
+##sons
+branching
+contrasts
+scoop
+longed
+##virus
+chattanooga
+##75
+syrup
+cornerstone
+##tized
+##mind
+##iaceae
+careless
+precedence
+frescoes
+##uet
+chilled
+consult
+modelled
+snatch
+peat
+##thermal
+caucasian
+humane
+relaxation
+spins
+temperance
+##lbert
+occupations
+lambda
+hybrids
+moons
+mp3
+##oese
+247
+rolf
+societal
+yerevan
+ness
+##ssler
+befriended
+mechanized
+nominate
+trough
+boasted
+cues
+seater
+##hom
+bends
+##tangle
+conductors
+emptiness
+##lmer
+eurasian
+adriatic
+tian
+##cie
+anxiously
+lark
+propellers
+chichester
+jock
+ev
+2a
+##holding
+credible
+recounts
+tori
+loyalist
+abduction
+##hoot
+##redo
+nepali
+##mite
+ventral
+tempting
+##ango
+##crats
+steered
+##wice
+javelin
+dipping
+laborers
+prentice
+looming
+titanium
+##ː
+badges
+emir
+tensor
+##ntation
+egyptians
+rash
+denies
+hawthorne
+lombard
+showers
+wehrmacht
+dietary
+trojan
+##reus
+welles
+executing
+horseshoe
+lifeboat
+##lak
+elsa
+infirmary
+nearing
+roberta
+boyer
+mutter
+trillion
+joanne
+##fine
+##oked
+sinks
+vortex
+uruguayan
+clasp
+sirius
+##block
+accelerator
+prohibit
+sunken
+byu
+chronological
+diplomats
+ochreous
+510
+symmetrical
+1644
+maia
+##tology
+salts
+reigns
+atrocities
+##ия
+hess
+bared
+issn
+##vyn
+cater
+saturated
+##cycle
+##isse
+sable
+voyager
+dyer
+yusuf
+##inge
+fountains
+wolff
+##39
+##nni
+engraving
+rollins
+atheist
+ominous
+##ault
+herr
+chariot
+martina
+strung
+##fell
+##farlane
+horrific
+sahib
+gazes
+saetan
+erased
+ptolemy
+##olic
+flushing
+lauderdale
+analytic
+##ices
+530
+navarro
+beak
+gorilla
+herrera
+broom
+guadalupe
+raiding
+sykes
+311
+bsc
+deliveries
+1720
+invasions
+carmichael
+tajikistan
+thematic
+ecumenical
+sentiments
+onstage
+##rians
+##brand
+##sume
+catastrophic
+flanks
+molten
+##arns
+waller
+aimee
+terminating
+##icing
+alternately
+##oche
+nehru
+printers
+outraged
+##eving
+empires
+template
+banners
+repetitive
+za
+##oise
+vegetarian
+##tell
+guiana
+opt
+cavendish
+lucknow
+synthesized
+##hani
+##mada
+finalized
+##ctable
+fictitious
+mayoral
+unreliable
+##enham
+embracing
+peppers
+rbis
+##chio
+##neo
+inhibition
+slashed
+togo
+orderly
+embroidered
+safari
+salty
+236
+barron
+benito
+totaled
+##dak
+pubs
+simulated
+caden
+devin
+tolkien
+momma
+welding
+sesame
+##ept
+gottingen
+hardness
+630
+shaman
+temeraire
+620
+adequately
+pediatric
+##kit
+ck
+assertion
+radicals
+composure
+cadence
+seafood
+beaufort
+lazarus
+mani
+warily
+cunning
+kurdistan
+249
+cantata
+##kir
+ares
+##41
+##clusive
+nape
+townland
+geared
+insulted
+flutter
+boating
+violate
+draper
+dumping
+malmo
+##hh
+##romatic
+firearm
+alta
+bono
+obscured
+##clave
+exceeds
+panorama
+unbelievable
+##train
+preschool
+##essed
+disconnected
+installing
+rescuing
+secretaries
+accessibility
+##castle
+##drive
+##ifice
+##film
+bouts
+slug
+waterway
+mindanao
+##buro
+##ratic
+halves
+##ل
+calming
+liter
+maternity
+adorable
+bragg
+electrification
+mcc
+##dote
+roxy
+schizophrenia
+##body
+munoz
+kaye
+whaling
+239
+mil
+tingling
+tolerant
+##ago
+unconventional
+volcanoes
+##finder
+deportivo
+##llie
+robson
+kaufman
+neuroscience
+wai
+deportation
+masovian
+scraping
+converse
+##bh
+hacking
+bulge
+##oun
+administratively
+yao
+580
+amp
+mammoth
+booster
+claremont
+hooper
+nomenclature
+pursuits
+mclaughlin
+melinda
+##sul
+catfish
+barclay
+substrates
+taxa
+zee
+originals
+kimberly
+packets
+padma
+##ality
+borrowing
+ostensibly
+solvent
+##bri
+##genesis
+##mist
+lukas
+shreveport
+veracruz
+##ь
+##lou
+##wives
+cheney
+tt
+anatolia
+hobbs
+##zyn
+cyclic
+radiant
+alistair
+greenish
+siena
+dat
+independents
+##bation
+conform
+pieter
+hyper
+applicant
+bradshaw
+spores
+telangana
+vinci
+inexpensive
+nuclei
+322
+jang
+nme
+soho
+spd
+##ign
+cradled
+receptionist
+pow
+##43
+##rika
+fascism
+##ifer
+experimenting
+##ading
+##iec
+##region
+345
+jocelyn
+maris
+stair
+nocturnal
+toro
+constabulary
+elgin
+##kker
+msc
+##giving
+##schen
+##rase
+doherty
+doping
+sarcastically
+batter
+maneuvers
+##cano
+##apple
+##gai
+##git
+intrinsic
+##nst
+##stor
+1753
+showtime
+cafes
+gasps
+lviv
+ushered
+##thed
+fours
+restart
+astonishment
+transmitting
+flyer
+shrugs
+##sau
+intriguing
+cones
+dictated
+mushrooms
+medial
+##kovsky
+##elman
+escorting
+gaped
+##26
+godfather
+##door
+##sell
+djs
+recaptured
+timetable
+vila
+1710
+3a
+aerodrome
+mortals
+scientology
+##orne
+angelina
+mag
+convection
+unpaid
+insertion
+intermittent
+lego
+##nated
+endeavor
+kota
+pereira
+##lz
+304
+bwv
+glamorgan
+insults
+agatha
+fey
+##cend
+fleetwood
+mahogany
+protruding
+steamship
+zeta
+##arty
+mcguire
+suspense
+##sphere
+advising
+urges
+##wala
+hurriedly
+meteor
+gilded
+inline
+arroyo
+stalker
+##oge
+excitedly
+revered
+##cure
+earle
+introductory
+##break
+##ilde
+mutants
+puff
+pulses
+reinforcement
+##haling
+curses
+lizards
+stalk
+correlated
+##fixed
+fallout
+macquarie
+##unas
+bearded
+denton
+heaving
+802
+##ocation
+winery
+assign
+dortmund
+##lkirk
+everest
+invariant
+charismatic
+susie
+##elling
+bled
+lesley
+telegram
+sumner
+bk
+##ogen
+##к
+wilcox
+needy
+colbert
+duval
+##iferous
+##mbled
+allotted
+attends
+imperative
+##hita
+replacements
+hawker
+##inda
+insurgency
+##zee
+##eke
+casts
+##yla
+680
+ives
+transitioned
+##pack
+##powering
+authoritative
+baylor
+flex
+cringed
+plaintiffs
+woodrow
+##skie
+drastic
+ape
+aroma
+unfolded
+commotion
+nt
+preoccupied
+theta
+routines
+lasers
+privatization
+wand
+domino
+ek
+clenching
+nsa
+strategically
+showered
+bile
+handkerchief
+pere
+storing
+christophe
+insulting
+316
+nakamura
+romani
+asiatic
+magdalena
+palma
+cruises
+stripping
+405
+konstantin
+soaring
+##berman
+colloquially
+forerunner
+havilland
+incarcerated
+parasites
+sincerity
+##utus
+disks
+plank
+saigon
+##ining
+corbin
+homo
+ornaments
+powerhouse
+##tlement
+chong
+fastened
+feasibility
+idf
+morphological
+usable
+##nish
+##zuki
+aqueduct
+jaguars
+keepers
+##flies
+aleksandr
+faust
+assigns
+ewing
+bacterium
+hurled
+tricky
+hungarians
+integers
+wallis
+321
+yamaha
+##isha
+hushed
+oblivion
+aviator
+evangelist
+friars
+##eller
+monograph
+ode
+##nary
+airplanes
+labourers
+charms
+##nee
+1661
+hagen
+tnt
+rudder
+fiesta
+transcript
+dorothea
+ska
+inhibitor
+maccabi
+retorted
+raining
+encompassed
+clauses
+menacing
+1642
+lineman
+##gist
+vamps
+##ape
+##dick
+gloom
+##rera
+dealings
+easing
+seekers
+##nut
+##pment
+helens
+unmanned
+##anu
+##isson
+basics
+##amy
+##ckman
+adjustments
+1688
+brutality
+horne
+##zell
+sui
+##55
+##mable
+aggregator
+##thal
+rhino
+##drick
+##vira
+counters
+zoom
+##01
+##rting
+mn
+montenegrin
+packard
+##unciation
+##♭
+##kki
+reclaim
+scholastic
+thugs
+pulsed
+##icia
+syriac
+quan
+saddam
+banda
+kobe
+blaming
+buddies
+dissent
+##lusion
+##usia
+corbett
+jaya
+delle
+erratic
+lexie
+##hesis
+435
+amiga
+hermes
+##pressing
+##leen
+chapels
+gospels
+jamal
+##uating
+compute
+revolving
+warp
+##sso
+##thes
+armory
+##eras
+##gol
+antrim
+loki
+##kow
+##asian
+##good
+##zano
+braid
+handwriting
+subdistrict
+funky
+pantheon
+##iculate
+concurrency
+estimation
+improper
+juliana
+##his
+newcomers
+johnstone
+staten
+communicated
+##oco
+##alle
+sausage
+stormy
+##stered
+##tters
+superfamily
+##grade
+acidic
+collateral
+tabloid
+##oped
+##rza
+bladder
+austen
+##ellant
+mcgraw
+##hay
+hannibal
+mein
+aquino
+lucifer
+wo
+badger
+boar
+cher
+christensen
+greenberg
+interruption
+##kken
+jem
+244
+mocked
+bottoms
+cambridgeshire
+##lide
+sprawling
+##bbly
+eastwood
+ghent
+synth
+##buck
+advisers
+##bah
+nominally
+hapoel
+qu
+daggers
+estranged
+fabricated
+towels
+vinnie
+wcw
+misunderstanding
+anglia
+nothin
+unmistakable
+##dust
+##lova
+chilly
+marquette
+truss
+##edge
+##erine
+reece
+##lty
+##chemist
+##connected
+272
+308
+41st
+bash
+raion
+waterfalls
+##ump
+##main
+labyrinth
+queue
+theorist
+##istle
+bharatiya
+flexed
+soundtracks
+rooney
+leftist
+patrolling
+wharton
+plainly
+alleviate
+eastman
+schuster
+topographic
+engages
+immensely
+unbearable
+fairchild
+1620
+dona
+lurking
+parisian
+oliveira
+ia
+indictment
+hahn
+bangladeshi
+##aster
+vivo
+##uming
+##ential
+antonia
+expects
+indoors
+kildare
+harlan
+##logue
+##ogenic
+##sities
+forgiven
+##wat
+childish
+tavi
+##mide
+##orra
+plausible
+grimm
+successively
+scooted
+##bola
+##dget
+##rith
+spartans
+emery
+flatly
+azure
+epilogue
+##wark
+flourish
+##iny
+##tracted
+##overs
+##oshi
+bestseller
+distressed
+receipt
+spitting
+hermit
+topological
+##cot
+drilled
+subunit
+francs
+##layer
+eel
+##fk
+##itas
+octopus
+footprint
+petitions
+ufo
+##say
+##foil
+interfering
+leaking
+palo
+##metry
+thistle
+valiant
+##pic
+narayan
+mcpherson
+##fast
+gonzales
+##ym
+##enne
+dustin
+novgorod
+solos
+##zman
+doin
+##raph
+##patient
+##meyer
+soluble
+ashland
+cuffs
+carole
+pendleton
+whistling
+vassal
+##river
+deviation
+revisited
+constituents
+rallied
+rotate
+loomed
+##eil
+##nting
+amateurs
+augsburg
+auschwitz
+crowns
+skeletons
+##cona
+bonnet
+257
+dummy
+globalization
+simeon
+sleeper
+mandal
+differentiated
+##crow
+##mare
+milne
+bundled
+exasperated
+talmud
+owes
+segregated
+##feng
+##uary
+dentist
+piracy
+props
+##rang
+devlin
+##torium
+malicious
+paws
+##laid
+dependency
+##ergy
+##fers
+##enna
+258
+pistons
+rourke
+jed
+grammatical
+tres
+maha
+wig
+512
+ghostly
+jayne
+##achal
+##creen
+##ilis
+##lins
+##rence
+designate
+##with
+arrogance
+cambodian
+clones
+showdown
+throttle
+twain
+##ception
+lobes
+metz
+nagoya
+335
+braking
+##furt
+385
+roaming
+##minster
+amin
+crippled
+##37
+##llary
+indifferent
+hoffmann
+idols
+intimidating
+1751
+261
+influenza
+memo
+onions
+1748
+bandage
+consciously
+##landa
+##rage
+clandestine
+observes
+swiped
+tangle
+##ener
+##jected
+##trum
+##bill
+##lta
+hugs
+congresses
+josiah
+spirited
+##dek
+humanist
+managerial
+filmmaking
+inmate
+rhymes
+debuting
+grimsby
+ur
+##laze
+duplicate
+vigor
+##tf
+republished
+bolshevik
+refurbishment
+antibiotics
+martini
+methane
+newscasts
+royale
+horizons
+levant
+iain
+visas
+##ischen
+paler
+##around
+manifestation
+snuck
+alf
+chop
+futile
+pedestal
+rehab
+##kat
+bmg
+kerman
+res
+fairbanks
+jarrett
+abstraction
+saharan
+##zek
+1746
+procedural
+clearer
+kincaid
+sash
+luciano
+##ffey
+crunch
+helmut
+##vara
+revolutionaries
+##tute
+creamy
+leach
+##mmon
+1747
+permitting
+nes
+plight
+wendell
+##lese
+contra
+ts
+clancy
+ipa
+mach
+staples
+autopsy
+disturbances
+nueva
+karin
+pontiac
+##uding
+proxy
+venerable
+haunt
+leto
+bergman
+expands
+##helm
+wal
+##pipe
+canning
+celine
+cords
+obesity
+##enary
+intrusion
+planner
+##phate
+reasoned
+sequencing
+307
+harrow
+##chon
+##dora
+marred
+mcintyre
+repay
+tarzan
+darting
+248
+harrisburg
+margarita
+repulsed
+##hur
+##lding
+belinda
+hamburger
+novo
+compliant
+runways
+bingham
+registrar
+skyscraper
+ic
+cuthbert
+improvisation
+livelihood
+##corp
+##elial
+admiring
+##dened
+sporadic
+believer
+casablanca
+popcorn
+##29
+asha
+shovel
+##bek
+##dice
+coiled
+tangible
+##dez
+casper
+elsie
+resin
+tenderness
+rectory
+##ivision
+avail
+sonar
+##mori
+boutique
+##dier
+guerre
+bathed
+upbringing
+vaulted
+sandals
+blessings
+##naut
+##utnant
+1680
+306
+foxes
+pia
+corrosion
+hesitantly
+confederates
+crystalline
+footprints
+shapiro
+tirana
+valentin
+drones
+45th
+microscope
+shipments
+texted
+inquisition
+wry
+guernsey
+unauthorized
+resigning
+760
+ripple
+schubert
+stu
+reassure
+felony
+##ardo
+brittle
+koreans
+##havan
+##ives
+dun
+implicit
+tyres
+##aldi
+##lth
+magnolia
+##ehan
+##puri
+##poulos
+aggressively
+fei
+gr
+familiarity
+##poo
+indicative
+##trust
+fundamentally
+jimmie
+overrun
+395
+anchors
+moans
+##opus
+britannia
+armagh
+##ggle
+purposely
+seizing
+##vao
+bewildered
+mundane
+avoidance
+cosmopolitan
+geometridae
+quartermaster
+caf
+415
+chatter
+engulfed
+gleam
+purge
+##icate
+juliette
+jurisprudence
+guerra
+revisions
+##bn
+casimir
+brew
+##jm
+1749
+clapton
+cloudy
+conde
+hermitage
+278
+simulations
+torches
+vincenzo
+matteo
+##rill
+hidalgo
+booming
+westbound
+accomplishment
+tentacles
+unaffected
+##sius
+annabelle
+flopped
+sloping
+##litz
+dreamer
+interceptor
+vu
+##loh
+consecration
+copying
+messaging
+breaker
+climates
+hospitalized
+1752
+torino
+afternoons
+winfield
+witnessing
+##teacher
+breakers
+choirs
+sawmill
+coldly
+##ege
+sipping
+haste
+uninhabited
+conical
+bibliography
+pamphlets
+severn
+edict
+##oca
+deux
+illnesses
+grips
+##pl
+rehearsals
+sis
+thinkers
+tame
+##keepers
+1690
+acacia
+reformer
+##osed
+##rys
+shuffling
+##iring
+##shima
+eastbound
+ionic
+rhea
+flees
+littered
+##oum
+rocker
+vomiting
+groaning
+champ
+overwhelmingly
+civilizations
+paces
+sloop
+adoptive
+##tish
+skaters
+##vres
+aiding
+mango
+##joy
+nikola
+shriek
+##ignon
+pharmaceuticals
+##mg
+tuna
+calvert
+gustavo
+stocked
+yearbook
+##urai
+##mana
+computed
+subsp
+riff
+hanoi
+kelvin
+hamid
+moors
+pastures
+summons
+jihad
+nectar
+##ctors
+bayou
+untitled
+pleasing
+vastly
+republics
+intellect
+##η
+##ulio
+##tou
+crumbling
+stylistic
+sb
+##ی
+consolation
+frequented
+h₂o
+walden
+widows
+##iens
+404
+##ignment
+chunks
+improves
+288
+grit
+recited
+##dev
+snarl
+sociological
+##arte
+##gul
+inquired
+##held
+bruise
+clube
+consultancy
+homogeneous
+hornets
+multiplication
+pasta
+prick
+savior
+##grin
+##kou
+##phile
+yoon
+##gara
+grimes
+vanishing
+cheering
+reacting
+bn
+distillery
+##quisite
+##vity
+coe
+dockyard
+massif
+##jord
+escorts
+voss
+##valent
+byte
+chopped
+hawke
+illusions
+workings
+floats
+##koto
+##vac
+kv
+annapolis
+madden
+##onus
+alvaro
+noctuidae
+##cum
+##scopic
+avenge
+steamboat
+forte
+illustrates
+erika
+##trip
+570
+dew
+nationalities
+bran
+manifested
+thirsty
+diversified
+muscled
+reborn
+##standing
+arson
+##lessness
+##dran
+##logram
+##boys
+##kushima
+##vious
+willoughby
+##phobia
+286
+alsace
+dashboard
+yuki
+##chai
+granville
+myspace
+publicized
+tricked
+##gang
+adjective
+##ater
+relic
+reorganisation
+enthusiastically
+indications
+saxe
+##lassified
+consolidate
+iec
+padua
+helplessly
+ramps
+renaming
+regulars
+pedestrians
+accents
+convicts
+inaccurate
+lowers
+mana
+##pati
+barrie
+bjp
+outta
+someplace
+berwick
+flanking
+invoked
+marrow
+sparsely
+excerpts
+clothed
+rei
+##ginal
+wept
+##straße
+##vish
+alexa
+excel
+##ptive
+membranes
+aquitaine
+creeks
+cutler
+sheppard
+implementations
+ns
+##dur
+fragrance
+budge
+concordia
+magnesium
+marcelo
+##antes
+gladly
+vibrating
+##rral
+##ggles
+montrose
+##omba
+lew
+seamus
+1630
+cocky
+##ament
+##uen
+bjorn
+##rrick
+fielder
+fluttering
+##lase
+methyl
+kimberley
+mcdowell
+reductions
+barbed
+##jic
+##tonic
+aeronautical
+condensed
+distracting
+##promising
+huffed
+##cala
+##sle
+claudius
+invincible
+missy
+pious
+balthazar
+ci
+##lang
+butte
+combo
+orson
+##dication
+myriad
+1707
+silenced
+##fed
+##rh
+coco
+netball
+yourselves
+##oza
+clarify
+heller
+peg
+durban
+etudes
+offender
+roast
+blackmail
+curvature
+##woods
+vile
+309
+illicit
+suriname
+##linson
+overture
+1685
+bubbling
+gymnast
+tucking
+##mming
+##ouin
+maldives
+##bala
+gurney
+##dda
+##eased
+##oides
+backside
+pinto
+jars
+racehorse
+tending
+##rdial
+baronetcy
+wiener
+duly
+##rke
+barbarian
+cupping
+flawed
+##thesis
+bertha
+pleistocene
+puddle
+swearing
+##nob
+##tically
+fleeting
+prostate
+amulet
+educating
+##mined
+##iti
+##tler
+75th
+jens
+respondents
+analytics
+cavaliers
+papacy
+raju
+##iente
+##ulum
+##tip
+funnel
+271
+disneyland
+##lley
+sociologist
+##iam
+2500
+faulkner
+louvre
+menon
+##dson
+276
+##ower
+afterlife
+mannheim
+peptide
+referees
+comedians
+meaningless
+##anger
+##laise
+fabrics
+hurley
+renal
+sleeps
+##bour
+##icle
+breakout
+kristin
+roadside
+animator
+clover
+disdain
+unsafe
+redesign
+##urity
+firth
+barnsley
+portage
+reset
+narrows
+268
+commandos
+expansive
+speechless
+tubular
+##lux
+essendon
+eyelashes
+smashwords
+##yad
+##bang
+##claim
+craved
+sprinted
+chet
+somme
+astor
+wrocław
+orton
+266
+bane
+##erving
+##uing
+mischief
+##amps
+##sund
+scaling
+terre
+##xious
+impairment
+offenses
+undermine
+moi
+soy
+contiguous
+arcadia
+inuit
+seam
+##tops
+macbeth
+rebelled
+##icative
+##iot
+590
+elaborated
+frs
+uniformed
+##dberg
+259
+powerless
+priscilla
+stimulated
+980
+qc
+arboretum
+frustrating
+trieste
+bullock
+##nified
+enriched
+glistening
+intern
+##adia
+locus
+nouvelle
+ollie
+ike
+lash
+starboard
+ee
+tapestry
+headlined
+hove
+rigged
+##vite
+pollock
+##yme
+thrive
+clustered
+cas
+roi
+gleamed
+olympiad
+##lino
+pressured
+regimes
+##hosis
+##lick
+ripley
+##ophone
+kickoff
+gallon
+rockwell
+##arable
+crusader
+glue
+revolutions
+scrambling
+1714
+grover
+##jure
+englishman
+aztec
+263
+contemplating
+coven
+ipad
+preach
+triumphant
+tufts
+##esian
+rotational
+##phus
+328
+falkland
+##brates
+strewn
+clarissa
+rejoin
+environmentally
+glint
+banded
+drenched
+moat
+albanians
+johor
+rr
+maestro
+malley
+nouveau
+shaded
+taxonomy
+v6
+adhere
+bunk
+airfields
+##ritan
+1741
+encompass
+remington
+tran
+##erative
+amelie
+mazda
+friar
+morals
+passions
+##zai
+breadth
+vis
+##hae
+argus
+burnham
+caressing
+insider
+rudd
+##imov
+##mini
+##rso
+italianate
+murderous
+textual
+wainwright
+armada
+bam
+weave
+timer
+##taken
+##nh
+fra
+##crest
+ardent
+salazar
+taps
+tunis
+##ntino
+allegro
+gland
+philanthropic
+##chester
+implication
+##optera
+esq
+judas
+noticeably
+wynn
+##dara
+inched
+indexed
+crises
+villiers
+bandit
+royalties
+patterned
+cupboard
+interspersed
+accessory
+isla
+kendrick
+entourage
+stitches
+##esthesia
+headwaters
+##ior
+interlude
+distraught
+draught
+1727
+##basket
+biased
+sy
+transient
+triad
+subgenus
+adapting
+kidd
+shortstop
+##umatic
+dimly
+spiked
+mcleod
+reprint
+nellie
+pretoria
+windmill
+##cek
+singled
+##mps
+273
+reunite
+##orous
+747
+bankers
+outlying
+##omp
+##ports
+##tream
+apologies
+cosmetics
+patsy
+##deh
+##ocks
+##yson
+bender
+nantes
+serene
+##nad
+lucha
+mmm
+323
+##cius
+##gli
+cmll
+coinage
+nestor
+juarez
+##rook
+smeared
+sprayed
+twitching
+sterile
+irina
+embodied
+juveniles
+enveloped
+miscellaneous
+cancers
+dq
+gulped
+luisa
+crested
+swat
+donegal
+ref
+##anov
+##acker
+hearst
+mercantile
+##lika
+doorbell
+ua
+vicki
+##alla
+##som
+bilbao
+psychologists
+stryker
+sw
+horsemen
+turkmenistan
+wits
+##national
+anson
+mathew
+screenings
+##umb
+rihanna
+##agne
+##nessy
+aisles
+##iani
+##osphere
+hines
+kenton
+saskatoon
+tasha
+truncated
+##champ
+##itan
+mildred
+advises
+fredrik
+interpreting
+inhibitors
+##athi
+spectroscopy
+##hab
+##kong
+karim
+panda
+##oia
+##nail
+##vc
+conqueror
+kgb
+leukemia
+##dity
+arrivals
+cheered
+pisa
+phosphorus
+shielded
+##riated
+mammal
+unitarian
+urgently
+chopin
+sanitary
+##mission
+spicy
+drugged
+hinges
+##tort
+tipping
+trier
+impoverished
+westchester
+##caster
+267
+epoch
+nonstop
+##gman
+##khov
+aromatic
+centrally
+cerro
+##tively
+##vio
+billions
+modulation
+sedimentary
+283
+facilitating
+outrageous
+goldstein
+##eak
+##kt
+ld
+maitland
+penultimate
+pollard
+##dance
+fleets
+spaceship
+vertebrae
+##nig
+alcoholism
+als
+recital
+##bham
+##ference
+##omics
+m2
+##bm
+trois
+##tropical
+##в
+commemorates
+##meric
+marge
+##raction
+1643
+670
+cosmetic
+ravaged
+##ige
+catastrophe
+eng
+##shida
+albrecht
+arterial
+bellamy
+decor
+harmon
+##rde
+bulbs
+synchronized
+vito
+easiest
+shetland
+shielding
+wnba
+##glers
+##ssar
+##riam
+brianna
+cumbria
+##aceous
+##rard
+cores
+thayer
+##nsk
+brood
+hilltop
+luminous
+carts
+keynote
+larkin
+logos
+##cta
+##ا
+##mund
+##quay
+lilith
+tinted
+277
+wrestle
+mobilization
+##uses
+sequential
+siam
+bloomfield
+takahashi
+274
+##ieving
+presenters
+ringo
+blazed
+witty
+##oven
+##ignant
+devastation
+haydn
+harmed
+newt
+therese
+##peed
+gershwin
+molina
+rabbis
+sudanese
+001
+innate
+restarted
+##sack
+##fus
+slices
+wb
+##shah
+enroll
+hypothetical
+hysterical
+1743
+fabio
+indefinite
+warped
+##hg
+exchanging
+525
+unsuitable
+##sboro
+gallo
+1603
+bret
+cobalt
+homemade
+##hunter
+mx
+operatives
+##dhar
+terraces
+durable
+latch
+pens
+whorls
+##ctuated
+##eaux
+billing
+ligament
+succumbed
+##gly
+regulators
+spawn
+##brick
+##stead
+filmfare
+rochelle
+##nzo
+1725
+circumstance
+saber
+supplements
+##nsky
+##tson
+crowe
+wellesley
+carrot
+##9th
+##movable
+primate
+drury
+sincerely
+topical
+##mad
+##rao
+callahan
+kyiv
+smarter
+tits
+undo
+##yeh
+announcements
+anthologies
+barrio
+nebula
+##islaus
+##shaft
+##tyn
+bodyguards
+2021
+assassinate
+barns
+emmett
+scully
+##mah
+##yd
+##eland
+##tino
+##itarian
+demoted
+gorman
+lashed
+prized
+adventist
+writ
+##gui
+alla
+invertebrates
+##ausen
+1641
+amman
+1742
+align
+healy
+redistribution
+##gf
+##rize
+insulation
+##drop
+adherents
+hezbollah
+vitro
+ferns
+yanking
+269
+php
+registering
+uppsala
+cheerleading
+confines
+mischievous
+tully
+##ross
+49th
+docked
+roam
+stipulated
+pumpkin
+##bry
+prompt
+##ezer
+blindly
+shuddering
+craftsmen
+frail
+scented
+katharine
+scramble
+shaggy
+sponge
+helix
+zaragoza
+279
+##52
+43rd
+backlash
+fontaine
+seizures
+posse
+cowan
+nonfiction
+telenovela
+wwii
+hammered
+undone
+##gpur
+encircled
+irs
+##ivation
+artefacts
+oneself
+searing
+smallpox
+##belle
+##osaurus
+shandong
+breached
+upland
+blushing
+rankin
+infinitely
+psyche
+tolerated
+docking
+evicted
+##col
+unmarked
+##lving
+gnome
+lettering
+litres
+musique
+##oint
+benevolent
+##jal
+blackened
+##anna
+mccall
+racers
+tingle
+##ocene
+##orestation
+introductions
+radically
+292
+##hiff
+##باد
+1610
+1739
+munchen
+plead
+##nka
+condo
+scissors
+##sight
+##tens
+apprehension
+##cey
+##yin
+hallmark
+watering
+formulas
+sequels
+##llas
+aggravated
+bae
+commencing
+##building
+enfield
+prohibits
+marne
+vedic
+civilized
+euclidean
+jagger
+beforehand
+blasts
+dumont
+##arney
+##nem
+740
+conversions
+hierarchical
+rios
+simulator
+##dya
+##lellan
+hedges
+oleg
+thrusts
+shadowed
+darby
+maximize
+1744
+gregorian
+##nded
+##routed
+sham
+unspecified
+##hog
+emory
+factual
+##smo
+##tp
+fooled
+##rger
+ortega
+wellness
+marlon
+##oton
+##urance
+casket
+keating
+ley
+enclave
+##ayan
+char
+influencing
+jia
+##chenko
+412
+ammonia
+erebidae
+incompatible
+violins
+cornered
+##arat
+grooves
+astronauts
+columbian
+rampant
+fabrication
+kyushu
+mahmud
+vanish
+##dern
+mesopotamia
+##lete
+ict
+##rgen
+caspian
+kenji
+pitted
+##vered
+999
+grimace
+roanoke
+tchaikovsky
+twinned
+##analysis
+##awan
+xinjiang
+arias
+clemson
+kazakh
+sizable
+1662
+##khand
+##vard
+plunge
+tatum
+vittorio
+##nden
+cholera
+##dana
+##oper
+bracing
+indifference
+projectile
+superliga
+##chee
+realises
+upgrading
+299
+porte
+retribution
+##vies
+nk
+stil
+##resses
+ama
+bureaucracy
+blackberry
+bosch
+testosterone
+collapses
+greer
+##pathic
+ioc
+fifties
+malls
+##erved
+bao
+baskets
+adolescents
+siegfried
+##osity
+##tosis
+mantra
+detecting
+existent
+fledgling
+##cchi
+dissatisfied
+gan
+telecommunication
+mingled
+sobbed
+6000
+controversies
+outdated
+taxis
+##raus
+fright
+slams
+##lham
+##fect
+##tten
+detectors
+fetal
+tanned
+##uw
+fray
+goth
+olympian
+skipping
+mandates
+scratches
+sheng
+unspoken
+hyundai
+tracey
+hotspur
+restrictive
+##buch
+americana
+mundo
+##bari
+burroughs
+diva
+vulcan
+##6th
+distinctions
+thumping
+##ngen
+mikey
+sheds
+fide
+rescues
+springsteen
+vested
+valuation
+##ece
+##ely
+pinnacle
+rake
+sylvie
+##edo
+almond
+quivering
+##irus
+alteration
+faltered
+##wad
+51st
+hydra
+ticked
+##kato
+recommends
+##dicated
+antigua
+arjun
+stagecoach
+wilfred
+trickle
+pronouns
+##pon
+aryan
+nighttime
+##anian
+gall
+pea
+stitch
+##hei
+leung
+milos
+##dini
+eritrea
+nexus
+starved
+snowfall
+kant
+parasitic
+cot
+discus
+hana
+strikers
+appleton
+kitchens
+##erina
+##partisan
+##itha
+##vius
+disclose
+metis
+##channel
+1701
+tesla
+##vera
+fitch
+1735
+blooded
+##tila
+decimal
+##tang
+##bai
+cyclones
+eun
+bottled
+peas
+pensacola
+basha
+bolivian
+crabs
+boil
+lanterns
+partridge
+roofed
+1645
+necks
+##phila
+opined
+patting
+##kla
+##lland
+chuckles
+volta
+whereupon
+##nche
+devout
+euroleague
+suicidal
+##dee
+inherently
+involuntary
+knitting
+nasser
+##hide
+puppets
+colourful
+courageous
+southend
+stills
+miraculous
+hodgson
+richer
+rochdale
+ethernet
+greta
+uniting
+prism
+umm
+##haya
+##itical
+##utation
+deterioration
+pointe
+prowess
+##ropriation
+lids
+scranton
+billings
+subcontinent
+##koff
+##scope
+brute
+kellogg
+psalms
+degraded
+##vez
+stanisław
+##ructured
+ferreira
+pun
+astonishing
+gunnar
+##yat
+arya
+prc
+gottfried
+##tight
+excursion
+##ographer
+dina
+##quil
+##nare
+huffington
+illustrious
+wilbur
+gundam
+verandah
+##zard
+naacp
+##odle
+constructive
+fjord
+kade
+##naud
+generosity
+thrilling
+baseline
+cayman
+frankish
+plastics
+accommodations
+zoological
+##fting
+cedric
+qb
+motorized
+##dome
+##otted
+squealed
+tackled
+canucks
+budgets
+situ
+asthma
+dail
+gabled
+grasslands
+whimpered
+writhing
+judgments
+##65
+minnie
+pv
+##carbon
+bananas
+grille
+domes
+monique
+odin
+maguire
+markham
+tierney
+##estra
+##chua
+libel
+poke
+speedy
+atrium
+laval
+notwithstanding
+##edly
+fai
+kala
+##sur
+robb
+##sma
+listings
+luz
+supplementary
+tianjin
+##acing
+enzo
+jd
+ric
+scanner
+croats
+transcribed
+##49
+arden
+cv
+##hair
+##raphy
+##lver
+##uy
+357
+seventies
+staggering
+alam
+horticultural
+hs
+regression
+timbers
+blasting
+##ounded
+montagu
+manipulating
+##cit
+catalytic
+1550
+troopers
+##meo
+condemnation
+fitzpatrick
+##oire
+##roved
+inexperienced
+1670
+castes
+##lative
+outing
+314
+dubois
+flicking
+quarrel
+ste
+learners
+1625
+iq
+whistled
+##class
+282
+classify
+tariffs
+temperament
+355
+folly
+liszt
+##yles
+immersed
+jordanian
+ceasefire
+apparel
+extras
+maru
+fished
+##bio
+harta
+stockport
+assortment
+craftsman
+paralysis
+transmitters
+##cola
+blindness
+##wk
+fatally
+proficiency
+solemnly
+##orno
+repairing
+amore
+groceries
+ultraviolet
+##chase
+schoolhouse
+##tua
+resurgence
+nailed
+##otype
+##×
+ruse
+saliva
+diagrams
+##tructing
+albans
+rann
+thirties
+1b
+antennas
+hilarious
+cougars
+paddington
+stats
+##eger
+breakaway
+ipod
+reza
+authorship
+prohibiting
+scoffed
+##etz
+##ttle
+conscription
+defected
+trondheim
+##fires
+ivanov
+keenan
+##adan
+##ciful
+##fb
+##slow
+locating
+##ials
+##tford
+cadiz
+basalt
+blankly
+interned
+rags
+rattling
+##tick
+carpathian
+reassured
+sync
+bum
+guildford
+iss
+staunch
+##onga
+astronomers
+sera
+sofie
+emergencies
+susquehanna
+##heard
+duc
+mastery
+vh1
+williamsburg
+bayer
+buckled
+craving
+##khan
+##rdes
+bloomington
+##write
+alton
+barbecue
+##bians
+justine
+##hri
+##ndt
+delightful
+smartphone
+newtown
+photon
+retrieval
+peugeot
+hissing
+##monium
+##orough
+flavors
+lighted
+relaunched
+tainted
+##games
+##lysis
+anarchy
+microscopic
+hopping
+adept
+evade
+evie
+##beau
+inhibit
+sinn
+adjustable
+hurst
+intuition
+wilton
+cisco
+44th
+lawful
+lowlands
+stockings
+thierry
+##dalen
+##hila
+##nai
+fates
+prank
+tb
+maison
+lobbied
+provocative
+1724
+4a
+utopia
+##qual
+carbonate
+gujarati
+purcell
+##rford
+curtiss
+##mei
+overgrown
+arenas
+mediation
+swallows
+##rnik
+respectful
+turnbull
+##hedron
+##hope
+alyssa
+ozone
+##ʻi
+ami
+gestapo
+johansson
+snooker
+canteen
+cuff
+declines
+empathy
+stigma
+##ags
+##iner
+##raine
+taxpayers
+gui
+volga
+##wright
+##copic
+lifespan
+overcame
+tattooed
+enactment
+giggles
+##ador
+##camp
+barrington
+bribe
+obligatory
+orbiting
+peng
+##enas
+elusive
+sucker
+##vating
+cong
+hardship
+empowered
+anticipating
+estrada
+cryptic
+greasy
+detainees
+planck
+sudbury
+plaid
+dod
+marriott
+kayla
+##ears
+##vb
+##zd
+mortally
+##hein
+cognition
+radha
+319
+liechtenstein
+meade
+richly
+argyle
+harpsichord
+liberalism
+trumpets
+lauded
+tyrant
+salsa
+tiled
+lear
+promoters
+reused
+slicing
+trident
+##chuk
+##gami
+##lka
+cantor
+checkpoint
+##points
+gaul
+leger
+mammalian
+##tov
+##aar
+##schaft
+doha
+frenchman
+nirvana
+##vino
+delgado
+headlining
+##eron
+##iography
+jug
+tko
+1649
+naga
+intersections
+##jia
+benfica
+nawab
+##suka
+ashford
+gulp
+##deck
+##vill
+##rug
+brentford
+frazier
+pleasures
+dunne
+potsdam
+shenzhen
+dentistry
+##tec
+flanagan
+##dorff
+##hear
+chorale
+dinah
+prem
+quezon
+##rogated
+relinquished
+sutra
+terri
+##pani
+flaps
+##rissa
+poly
+##rnet
+homme
+aback
+##eki
+linger
+womb
+##kson
+##lewood
+doorstep
+orthodoxy
+threaded
+westfield
+##rval
+dioceses
+fridays
+subsided
+##gata
+loyalists
+##biotic
+##ettes
+letterman
+lunatic
+prelate
+tenderly
+invariably
+souza
+thug
+winslow
+##otide
+furlongs
+gogh
+jeopardy
+##runa
+pegasus
+##umble
+humiliated
+standalone
+tagged
+##roller
+freshmen
+klan
+##bright
+attaining
+initiating
+transatlantic
+logged
+viz
+##uance
+1723
+combatants
+intervening
+stephane
+chieftain
+despised
+grazed
+317
+cdc
+galveston
+godzilla
+macro
+simulate
+##planes
+parades
+##esses
+960
+##ductive
+##unes
+equator
+overdose
+##cans
+##hosh
+##lifting
+joshi
+epstein
+sonora
+treacherous
+aquatics
+manchu
+responsive
+##sation
+supervisory
+##christ
+##llins
+##ibar
+##balance
+##uso
+kimball
+karlsruhe
+mab
+##emy
+ignores
+phonetic
+reuters
+spaghetti
+820
+almighty
+danzig
+rumbling
+tombstone
+designations
+lured
+outset
+##felt
+supermarkets
+##wt
+grupo
+kei
+kraft
+susanna
+##blood
+comprehension
+genealogy
+##aghan
+##verted
+redding
+##ythe
+1722
+bowing
+##pore
+##roi
+lest
+sharpened
+fulbright
+valkyrie
+sikhs
+##unds
+swans
+bouquet
+merritt
+##tage
+##venting
+commuted
+redhead
+clerks
+leasing
+cesare
+dea
+hazy
+##vances
+fledged
+greenfield
+servicemen
+##gical
+armando
+blackout
+dt
+sagged
+downloadable
+intra
+potion
+pods
+##4th
+##mism
+xp
+attendants
+gambia
+stale
+##ntine
+plump
+asteroids
+rediscovered
+buds
+flea
+hive
+##neas
+1737
+classifications
+debuts
+##eles
+olympus
+scala
+##eurs
+##gno
+##mute
+hummed
+sigismund
+visuals
+wiggled
+await
+pilasters
+clench
+sulfate
+##ances
+bellevue
+enigma
+trainee
+snort
+##sw
+clouded
+denim
+##rank
+##rder
+churning
+hartman
+lodges
+riches
+sima
+##missible
+accountable
+socrates
+regulates
+mueller
+##cr
+1702
+avoids
+solids
+himalayas
+nutrient
+pup
+##jevic
+squat
+fades
+nec
+##lates
+##pina
+##rona
+##ου
+privateer
+tequila
+##gative
+##mpton
+apt
+hornet
+immortals
+##dou
+asturias
+cleansing
+dario
+##rries
+##anta
+etymology
+servicing
+zhejiang
+##venor
+##nx
+horned
+erasmus
+rayon
+relocating
+£10
+##bags
+escalated
+promenade
+stubble
+2010s
+artisans
+axial
+liquids
+mora
+sho
+yoo
+##tsky
+bundles
+oldies
+##nally
+notification
+bastion
+##ths
+sparkle
+##lved
+1728
+leash
+pathogen
+highs
+##hmi
+immature
+880
+gonzaga
+ignatius
+mansions
+monterrey
+sweets
+bryson
+##loe
+polled
+regatta
+brightest
+pei
+rosy
+squid
+hatfield
+payroll
+addict
+meath
+cornerback
+heaviest
+lodging
+##mage
+capcom
+rippled
+##sily
+barnet
+mayhem
+ymca
+snuggled
+rousseau
+##cute
+blanchard
+284
+fragmented
+leighton
+chromosomes
+risking
+##md
+##strel
+##utter
+corinne
+coyotes
+cynical
+hiroshi
+yeomanry
+##ractive
+ebook
+grading
+mandela
+plume
+agustin
+magdalene
+##rkin
+bea
+femme
+trafford
+##coll
+##lun
+##tance
+52nd
+fourier
+upton
+##mental
+camilla
+gust
+iihf
+islamabad
+longevity
+##kala
+feldman
+netting
+##rization
+endeavour
+foraging
+mfa
+orr
+##open
+greyish
+contradiction
+graz
+##ruff
+handicapped
+marlene
+tweed
+oaxaca
+spp
+campos
+miocene
+pri
+configured
+cooks
+pluto
+cozy
+pornographic
+##entes
+70th
+fairness
+glided
+jonny
+lynne
+rounding
+sired
+##emon
+##nist
+remade
+uncover
+##mack
+complied
+lei
+newsweek
+##jured
+##parts
+##enting
+##pg
+293
+finer
+guerrillas
+athenian
+deng
+disused
+stepmother
+accuse
+gingerly
+seduction
+521
+confronting
+##walker
+##going
+gora
+nostalgia
+sabres
+virginity
+wrenched
+##minated
+syndication
+wielding
+eyre
+##56
+##gnon
+##igny
+behaved
+taxpayer
+sweeps
+##growth
+childless
+gallant
+##ywood
+amplified
+geraldine
+scrape
+##ffi
+babylonian
+fresco
+##rdan
+##kney
+##position
+1718
+restricting
+tack
+fukuoka
+osborn
+selector
+partnering
+##dlow
+318
+gnu
+kia
+tak
+whitley
+gables
+##54
+##mania
+mri
+softness
+immersion
+##bots
+##evsky
+1713
+chilling
+insignificant
+pcs
+##uis
+elites
+lina
+purported
+supplemental
+teaming
+##americana
+##dding
+##inton
+proficient
+rouen
+##nage
+##rret
+niccolo
+selects
+##bread
+fluffy
+1621
+gruff
+knotted
+mukherjee
+polgara
+thrash
+nicholls
+secluded
+smoothing
+thru
+corsica
+loaf
+whitaker
+inquiries
+##rrier
+##kam
+indochina
+289
+marlins
+myles
+peking
+##tea
+extracts
+pastry
+superhuman
+connacht
+vogel
+##ditional
+##het
+##udged
+##lash
+gloss
+quarries
+refit
+teaser
+##alic
+##gaon
+20s
+materialized
+sling
+camped
+pickering
+tung
+tracker
+pursuant
+##cide
+cranes
+soc
+##cini
+##typical
+##viere
+anhalt
+overboard
+workout
+chores
+fares
+orphaned
+stains
+##logie
+fenton
+surpassing
+joyah
+triggers
+##itte
+grandmaster
+##lass
+##lists
+clapping
+fraudulent
+ledger
+nagasaki
+##cor
+##nosis
+##tsa
+eucalyptus
+tun
+##icio
+##rney
+##tara
+dax
+heroism
+ina
+wrexham
+onboard
+unsigned
+##dates
+moshe
+galley
+winnie
+droplets
+exiles
+praises
+watered
+noodles
+##aia
+fein
+adi
+leland
+multicultural
+stink
+bingo
+comets
+erskine
+modernized
+canned
+constraint
+domestically
+chemotherapy
+featherweight
+stifled
+##mum
+darkly
+irresistible
+refreshing
+hasty
+isolate
+##oys
+kitchener
+planners
+##wehr
+cages
+yarn
+implant
+toulon
+elects
+childbirth
+yue
+##lind
+##lone
+cn
+rightful
+sportsman
+junctions
+remodeled
+specifies
+##rgh
+291
+##oons
+complimented
+##urgent
+lister
+ot
+##logic
+bequeathed
+cheekbones
+fontana
+gabby
+##dial
+amadeus
+corrugated
+maverick
+resented
+triangles
+##hered
+##usly
+nazareth
+tyrol
+1675
+assent
+poorer
+sectional
+aegean
+##cous
+296
+nylon
+ghanaian
+##egorical
+##weig
+cushions
+forbid
+fusiliers
+obstruction
+somerville
+##scia
+dime
+earrings
+elliptical
+leyte
+oder
+polymers
+timmy
+atm
+midtown
+piloted
+settles
+continual
+externally
+mayfield
+##uh
+enrichment
+henson
+keane
+persians
+1733
+benji
+braden
+pep
+324
+##efe
+contenders
+pepsi
+valet
+##isches
+298
+##asse
+##earing
+goofy
+stroll
+##amen
+authoritarian
+occurrences
+adversary
+ahmedabad
+tangent
+toppled
+dorchester
+1672
+modernism
+marxism
+islamist
+charlemagne
+exponential
+racks
+unicode
+brunette
+mbc
+pic
+skirmish
+##bund
+##lad
+##powered
+##yst
+hoisted
+messina
+shatter
+##ctum
+jedi
+vantage
+##music
+##neil
+clemens
+mahmoud
+corrupted
+authentication
+lowry
+nils
+##washed
+omnibus
+wounding
+jillian
+##itors
+##opped
+serialized
+narcotics
+handheld
+##arm
+##plicity
+intersecting
+stimulating
+##onis
+crate
+fellowships
+hemingway
+casinos
+climatic
+fordham
+copeland
+drip
+beatty
+leaflets
+robber
+brothel
+madeira
+##hedral
+sphinx
+ultrasound
+##vana
+valor
+forbade
+leonid
+villas
+##aldo
+duane
+marquez
+##cytes
+disadvantaged
+forearms
+kawasaki
+reacts
+consular
+lax
+uncles
+uphold
+##hopper
+concepcion
+dorsey
+lass
+##izan
+arching
+passageway
+1708
+researches
+tia
+internationals
+##graphs
+##opers
+distinguishes
+javanese
+divert
+##uven
+plotted
+##listic
+##rwin
+##erik
+##tify
+affirmative
+signifies
+validation
+##bson
+kari
+felicity
+georgina
+zulu
+##eros
+##rained
+##rath
+overcoming
+##dot
+argyll
+##rbin
+1734
+chiba
+ratification
+windy
+earls
+parapet
+##marks
+hunan
+pristine
+astrid
+punta
+##gart
+brodie
+##kota
+##oder
+malaga
+minerva
+rouse
+##phonic
+bellowed
+pagoda
+portals
+reclamation
+##gur
+##odies
+##⁄₄
+parentheses
+quoting
+allergic
+palette
+showcases
+benefactor
+heartland
+nonlinear
+##tness
+bladed
+cheerfully
+scans
+##ety
+##hone
+1666
+girlfriends
+pedersen
+hiram
+sous
+##liche
+##nator
+1683
+##nery
+##orio
+##umen
+bobo
+primaries
+smiley
+##cb
+unearthed
+uniformly
+fis
+metadata
+1635
+ind
+##oted
+recoil
+##titles
+##tura
+##ια
+406
+hilbert
+jamestown
+mcmillan
+tulane
+seychelles
+##frid
+antics
+coli
+fated
+stucco
+##grants
+1654
+bulky
+accolades
+arrays
+caledonian
+carnage
+optimism
+puebla
+##tative
+##cave
+enforcing
+rotherham
+seo
+dunlop
+aeronautics
+chimed
+incline
+zoning
+archduke
+hellenistic
+##oses
+##sions
+candi
+thong
+##ople
+magnate
+rustic
+##rsk
+projective
+slant
+##offs
+danes
+hollis
+vocalists
+##ammed
+congenital
+contend
+gesellschaft
+##ocating
+##pressive
+douglass
+quieter
+##cm
+##kshi
+howled
+salim
+spontaneously
+townsville
+buena
+southport
+##bold
+kato
+1638
+faerie
+stiffly
+##vus
+##rled
+297
+flawless
+realising
+taboo
+##7th
+bytes
+straightening
+356
+jena
+##hid
+##rmin
+cartwright
+berber
+bertram
+soloists
+411
+noses
+417
+coping
+fission
+hardin
+inca
+##cen
+1717
+mobilized
+vhf
+##raf
+biscuits
+curate
+##85
+##anial
+331
+gaunt
+neighbourhoods
+1540
+##abas
+blanca
+bypassed
+sockets
+behold
+coincidentally
+##bane
+nara
+shave
+splinter
+terrific
+##arion
+##erian
+commonplace
+juris
+redwood
+waistband
+boxed
+caitlin
+fingerprints
+jennie
+naturalized
+##ired
+balfour
+craters
+jody
+bungalow
+hugely
+quilt
+glitter
+pigeons
+undertaker
+bulging
+constrained
+goo
+##sil
+##akh
+assimilation
+reworked
+##person
+persuasion
+##pants
+felicia
+##cliff
+##ulent
+1732
+explodes
+##dun
+##inium
+##zic
+lyman
+vulture
+hog
+overlook
+begs
+northwards
+ow
+spoil
+##urer
+fatima
+favorably
+accumulate
+sargent
+sorority
+corresponded
+dispersal
+kochi
+toned
+##imi
+##lita
+internacional
+newfound
+##agger
+##lynn
+##rigue
+booths
+peanuts
+##eborg
+medicare
+muriel
+nur
+##uram
+crates
+millennia
+pajamas
+worsened
+##breakers
+jimi
+vanuatu
+yawned
+##udeau
+carousel
+##hony
+hurdle
+##ccus
+##mounted
+##pod
+rv
+##eche
+airship
+ambiguity
+compulsion
+recapture
+##claiming
+arthritis
+##osomal
+1667
+asserting
+ngc
+sniffing
+dade
+discontent
+glendale
+ported
+##amina
+defamation
+rammed
+##scent
+fling
+livingstone
+##fleet
+875
+##ppy
+apocalyptic
+comrade
+lcd
+##lowe
+cessna
+eine
+persecuted
+subsistence
+demi
+hoop
+reliefs
+710
+coptic
+progressing
+stemmed
+perpetrators
+1665
+priestess
+##nio
+dobson
+ebony
+rooster
+itf
+tortricidae
+##bbon
+##jian
+cleanup
+##jean
+##øy
+1721
+eighties
+taxonomic
+holiness
+##hearted
+##spar
+antilles
+showcasing
+stabilized
+##nb
+gia
+mascara
+michelangelo
+dawned
+##uria
+##vinsky
+extinguished
+fitz
+grotesque
+£100
+##fera
+##loid
+##mous
+barges
+neue
+throbbed
+cipher
+johnnie
+##a1
+##mpt
+outburst
+##swick
+spearheaded
+administrations
+c1
+heartbreak
+pixels
+pleasantly
+##enay
+lombardy
+plush
+##nsed
+bobbie
+##hly
+reapers
+tremor
+xiang
+minogue
+substantive
+hitch
+barak
+##wyl
+kwan
+##encia
+910
+obscene
+elegance
+indus
+surfer
+bribery
+conserve
+##hyllum
+##masters
+horatio
+##fat
+apes
+rebound
+psychotic
+##pour
+iteration
+##mium
+##vani
+botanic
+horribly
+antiques
+dispose
+paxton
+##hli
+##wg
+timeless
+1704
+disregard
+engraver
+hounds
+##bau
+##version
+looted
+uno
+facilitates
+groans
+masjid
+rutland
+antibody
+disqualification
+decatur
+footballers
+quake
+slacks
+48th
+rein
+scribe
+stabilize
+commits
+exemplary
+tho
+##hort
+##chison
+pantry
+traversed
+##hiti
+disrepair
+identifiable
+vibrated
+baccalaureate
+##nnis
+csa
+interviewing
+##iensis
+##raße
+greaves
+wealthiest
+343
+classed
+jogged
+£5
+##58
+##atal
+illuminating
+knicks
+respecting
+##uno
+scrubbed
+##iji
+##dles
+kruger
+moods
+growls
+raider
+silvia
+chefs
+kam
+vr
+cree
+percival
+##terol
+gunter
+counterattack
+defiant
+henan
+ze
+##rasia
+##riety
+equivalence
+submissions
+##fra
+##thor
+bautista
+mechanically
+##heater
+cornice
+herbal
+templar
+##mering
+outputs
+ruining
+ligand
+renumbered
+extravagant
+mika
+blockbuster
+eta
+insurrection
+##ilia
+darkening
+ferocious
+pianos
+strife
+kinship
+##aer
+melee
+##anor
+##iste
+##may
+##oue
+decidedly
+weep
+##jad
+##missive
+##ppel
+354
+puget
+unease
+##gnant
+1629
+hammering
+kassel
+ob
+wessex
+##lga
+bromwich
+egan
+paranoia
+utilization
+##atable
+##idad
+contradictory
+provoke
+##ols
+##ouring
+##tangled
+knesset
+##very
+##lette
+plumbing
+##sden
+##¹
+greensboro
+occult
+sniff
+338
+zev
+beaming
+gamer
+haggard
+mahal
+##olt
+##pins
+mendes
+utmost
+briefing
+gunnery
+##gut
+##pher
+##zh
+##rok
+1679
+khalifa
+sonya
+##boot
+principals
+urbana
+wiring
+##liffe
+##minating
+##rrado
+dahl
+nyu
+skepticism
+np
+townspeople
+ithaca
+lobster
+somethin
+##fur
+##arina
+##−1
+freighter
+zimmerman
+biceps
+contractual
+##herton
+amend
+hurrying
+subconscious
+##anal
+336
+meng
+clermont
+spawning
+##eia
+##lub
+dignitaries
+impetus
+snacks
+spotting
+twigs
+##bilis
+##cz
+##ouk
+libertadores
+nic
+skylar
+##aina
+##firm
+gustave
+asean
+##anum
+dieter
+legislatures
+flirt
+bromley
+trolls
+umar
+##bbies
+##tyle
+blah
+parc
+bridgeport
+crank
+negligence
+##nction
+46th
+constantin
+molded
+bandages
+seriousness
+00pm
+siegel
+carpets
+compartments
+upbeat
+statehood
+##dner
+##edging
+marko
+730
+platt
+##hane
+paving
+##iy
+1738
+abbess
+impatience
+limousine
+nbl
+##talk
+441
+lucille
+mojo
+nightfall
+robbers
+##nais
+karel
+brisk
+calves
+replicate
+ascribed
+telescopes
+##olf
+intimidated
+##reen
+ballast
+specialization
+##sit
+aerodynamic
+caliphate
+rainer
+visionary
+##arded
+epsilon
+##aday
+##onte
+aggregation
+auditory
+boosted
+reunification
+kathmandu
+loco
+robyn
+402
+acknowledges
+appointing
+humanoid
+newell
+redeveloped
+restraints
+##tained
+barbarians
+chopper
+1609
+italiana
+##lez
+##lho
+investigates
+wrestlemania
+##anies
+##bib
+690
+##falls
+creaked
+dragoons
+gravely
+minions
+stupidity
+volley
+##harat
+##week
+musik
+##eries
+##uously
+fungal
+massimo
+semantics
+malvern
+##ahl
+##pee
+discourage
+embryo
+imperialism
+1910s
+profoundly
+##ddled
+jiangsu
+sparkled
+stat
+##holz
+sweatshirt
+tobin
+##iction
+sneered
+##cheon
+##oit
+brit
+causal
+smyth
+##neuve
+diffuse
+perrin
+silvio
+##ipes
+##recht
+detonated
+iqbal
+selma
+##nism
+##zumi
+roasted
+##riders
+tay
+##ados
+##mament
+##mut
+##rud
+840
+completes
+nipples
+cfa
+flavour
+hirsch
+##laus
+calderon
+sneakers
+moravian
+##ksha
+1622
+rq
+294
+##imeters
+bodo
+##isance
+##pre
+##ronia
+anatomical
+excerpt
+##lke
+dh
+kunst
+##tablished
+##scoe
+biomass
+panted
+unharmed
+gael
+housemates
+montpellier
+##59
+coa
+rodents
+tonic
+hickory
+singleton
+##taro
+451
+1719
+aldo
+breaststroke
+dempsey
+och
+rocco
+##cuit
+merton
+dissemination
+midsummer
+serials
+##idi
+haji
+polynomials
+##rdon
+gs
+enoch
+prematurely
+shutter
+taunton
+£3
+##grating
+##inates
+archangel
+harassed
+##asco
+326
+archway
+dazzling
+##ecin
+1736
+sumo
+wat
+##kovich
+1086
+honneur
+##ently
+##nostic
+##ttal
+##idon
+1605
+403
+1716
+blogger
+rents
+##gnan
+hires
+##ikh
+##dant
+howie
+##rons
+handler
+retracted
+shocks
+1632
+arun
+duluth
+kepler
+trumpeter
+##lary
+peeking
+seasoned
+trooper
+##mara
+laszlo
+##iciencies
+##rti
+heterosexual
+##inatory
+##ssion
+indira
+jogging
+##inga
+##lism
+beit
+dissatisfaction
+malice
+##ately
+nedra
+peeling
+##rgeon
+47th
+stadiums
+475
+vertigo
+##ains
+iced
+restroom
+##plify
+##tub
+illustrating
+pear
+##chner
+##sibility
+inorganic
+rappers
+receipts
+watery
+##kura
+lucinda
+##oulos
+reintroduced
+##8th
+##tched
+gracefully
+saxons
+nutritional
+wastewater
+rained
+favourites
+bedrock
+fisted
+hallways
+likeness
+upscale
+##lateral
+1580
+blinds
+prequel
+##pps
+##tama
+deter
+humiliating
+restraining
+tn
+vents
+1659
+laundering
+recess
+rosary
+tractors
+coulter
+federer
+##ifiers
+##plin
+persistence
+##quitable
+geschichte
+pendulum
+quakers
+##beam
+bassett
+pictorial
+buffet
+koln
+##sitor
+drills
+reciprocal
+shooters
+##57
+##cton
+##tees
+converge
+pip
+dmitri
+donnelly
+yamamoto
+aqua
+azores
+demographics
+hypnotic
+spitfire
+suspend
+wryly
+roderick
+##rran
+sebastien
+##asurable
+mavericks
+##fles
+##200
+himalayan
+prodigy
+##iance
+transvaal
+demonstrators
+handcuffs
+dodged
+mcnamara
+sublime
+1726
+crazed
+##efined
+##till
+ivo
+pondered
+reconciled
+shrill
+sava
+##duk
+bal
+cad
+heresy
+jaipur
+goran
+##nished
+341
+lux
+shelly
+whitehall
+##hre
+israelis
+peacekeeping
+##wled
+1703
+demetrius
+ousted
+##arians
+##zos
+beale
+anwar
+backstroke
+raged
+shrinking
+cremated
+##yck
+benign
+towing
+wadi
+darmstadt
+landfill
+parana
+soothe
+colleen
+sidewalks
+mayfair
+tumble
+hepatitis
+ferrer
+superstructure
+##gingly
+##urse
+##wee
+anthropological
+translators
+##mies
+closeness
+hooves
+##pw
+mondays
+##roll
+##vita
+landscaping
+##urized
+purification
+sock
+thorns
+thwarted
+jalan
+tiberius
+##taka
+saline
+##rito
+confidently
+khyber
+sculptors
+##ij
+brahms
+hammersmith
+inspectors
+battista
+fivb
+fragmentation
+hackney
+##uls
+arresting
+exercising
+antoinette
+bedfordshire
+##zily
+dyed
+##hema
+1656
+racetrack
+variability
+##tique
+1655
+austrians
+deteriorating
+madman
+theorists
+aix
+lehman
+weathered
+1731
+decreed
+eruptions
+1729
+flaw
+quinlan
+sorbonne
+flutes
+nunez
+1711
+adored
+downwards
+fable
+rasped
+1712
+moritz
+mouthful
+renegade
+shivers
+stunts
+dysfunction
+restrain
+translit
+327
+pancakes
+##avio
+##cision
+##tray
+351
+vial
+##lden
+bain
+##maid
+##oxide
+chihuahua
+malacca
+vimes
+##rba
+##rnier
+1664
+donnie
+plaques
+##ually
+337
+bangs
+floppy
+huntsville
+loretta
+nikolay
+##otte
+eater
+handgun
+ubiquitous
+##hett
+eras
+zodiac
+1634
+##omorphic
+1820s
+##zog
+cochran
+##bula
+##lithic
+warring
+##rada
+dalai
+excused
+blazers
+mcconnell
+reeling
+bot
+este
+##abi
+geese
+hoax
+taxon
+##bla
+guitarists
+##icon
+condemning
+hunts
+inversion
+moffat
+taekwondo
+##lvis
+1624
+stammered
+##rest
+##rzy
+sousa
+fundraiser
+marylebone
+navigable
+uptown
+cabbage
+daniela
+salman
+shitty
+whimper
+##kian
+##utive
+programmers
+protections
+rm
+##rmi
+##rued
+forceful
+##enes
+fuss
+##tao
+##wash
+brat
+oppressive
+reykjavik
+spartak
+ticking
+##inkles
+##kiewicz
+adolph
+horst
+maui
+protege
+straighten
+cpc
+landau
+concourse
+clements
+resultant
+##ando
+imaginative
+joo
+reactivated
+##rem
+##ffled
+##uising
+consultative
+##guide
+flop
+kaitlyn
+mergers
+parenting
+somber
+##vron
+supervise
+vidhan
+##imum
+courtship
+exemplified
+harmonies
+medallist
+refining
+##rrow
+##ка
+amara
+##hum
+780
+goalscorer
+sited
+overshadowed
+rohan
+displeasure
+secretive
+multiplied
+osman
+##orth
+engravings
+padre
+##kali
+##veda
+miniatures
+mis
+##yala
+clap
+pali
+rook
+##cana
+1692
+57th
+antennae
+astro
+oskar
+1628
+bulldog
+crotch
+hackett
+yucatan
+##sure
+amplifiers
+brno
+ferrara
+migrating
+##gree
+thanking
+turing
+##eza
+mccann
+ting
+andersson
+onslaught
+gaines
+ganga
+incense
+standardization
+##mation
+sentai
+scuba
+stuffing
+turquoise
+waivers
+alloys
+##vitt
+regaining
+vaults
+##clops
+##gizing
+digger
+furry
+memorabilia
+probing
+##iad
+payton
+rec
+deutschland
+filippo
+opaque
+seamen
+zenith
+afrikaans
+##filtration
+disciplined
+inspirational
+##merie
+banco
+confuse
+grafton
+tod
+##dgets
+championed
+simi
+anomaly
+biplane
+##ceptive
+electrode
+##para
+1697
+cleavage
+crossbow
+swirl
+informant
+##lars
+##osta
+afi
+bonfire
+spec
+##oux
+lakeside
+slump
+##culus
+##lais
+##qvist
+##rrigan
+1016
+facades
+borg
+inwardly
+cervical
+xl
+pointedly
+050
+stabilization
+##odon
+chests
+1699
+hacked
+ctv
+orthogonal
+suzy
+##lastic
+gaulle
+jacobite
+rearview
+##cam
+##erted
+ashby
+##drik
+##igate
+##mise
+##zbek
+affectionately
+canine
+disperse
+latham
+##istles
+##ivar
+spielberg
+##orin
+##idium
+ezekiel
+cid
+##sg
+durga
+middletown
+##cina
+customized
+frontiers
+harden
+##etano
+##zzy
+1604
+bolsheviks
+##66
+coloration
+yoko
+##bedo
+briefs
+slabs
+debra
+liquidation
+plumage
+##oin
+blossoms
+dementia
+subsidy
+1611
+proctor
+relational
+jerseys
+parochial
+ter
+##ici
+esa
+peshawar
+cavalier
+loren
+cpi
+idiots
+shamrock
+1646
+dutton
+malabar
+mustache
+##endez
+##ocytes
+referencing
+terminates
+marche
+yarmouth
+##sop
+acton
+mated
+seton
+subtly
+baptised
+beige
+extremes
+jolted
+kristina
+telecast
+##actic
+safeguard
+waldo
+##baldi
+##bular
+endeavors
+sloppy
+subterranean
+##ensburg
+##itung
+delicately
+pigment
+tq
+##scu
+1626
+##ound
+collisions
+coveted
+herds
+##personal
+##meister
+##nberger
+chopra
+##ricting
+abnormalities
+defective
+galician
+lucie
+##dilly
+alligator
+likened
+##genase
+burundi
+clears
+complexion
+derelict
+deafening
+diablo
+fingered
+champaign
+dogg
+enlist
+isotope
+labeling
+mrna
+##erre
+brilliance
+marvelous
+##ayo
+1652
+crawley
+ether
+footed
+dwellers
+deserts
+hamish
+rubs
+warlock
+skimmed
+##lizer
+870
+buick
+embark
+heraldic
+irregularities
+##ajan
+kiara
+##kulam
+##ieg
+antigen
+kowalski
+##lge
+oakley
+visitation
+##mbit
+vt
+##suit
+1570
+murderers
+##miento
+##rites
+chimneys
+##sling
+condemn
+custer
+exchequer
+havre
+##ghi
+fluctuations
+##rations
+dfb
+hendricks
+vaccines
+##tarian
+nietzsche
+biking
+juicy
+##duced
+brooding
+scrolling
+selangor
+##ragan
+352
+annum
+boomed
+seminole
+sugarcane
+##dna
+departmental
+dismissing
+innsbruck
+arteries
+ashok
+batavia
+daze
+kun
+overtook
+##rga
+##tlan
+beheaded
+gaddafi
+holm
+electronically
+faulty
+galilee
+fractures
+kobayashi
+##lized
+gunmen
+magma
+aramaic
+mala
+eastenders
+inference
+messengers
+bf
+##qu
+407
+bathrooms
+##vere
+1658
+flashbacks
+ideally
+misunderstood
+##jali
+##weather
+mendez
+##grounds
+505
+uncanny
+##iii
+1709
+friendships
+##nbc
+sacrament
+accommodated
+reiterated
+logistical
+pebbles
+thumped
+##escence
+administering
+decrees
+drafts
+##flight
+##cased
+##tula
+futuristic
+picket
+intimidation
+winthrop
+##fahan
+interfered
+339
+afar
+francoise
+morally
+uta
+cochin
+croft
+dwarfs
+##bruck
+##dents
+##nami
+biker
+##hner
+##meral
+nano
+##isen
+##ometric
+##pres
+##ан
+brightened
+meek
+parcels
+securely
+gunners
+##jhl
+##zko
+agile
+hysteria
+##lten
+##rcus
+bukit
+champs
+chevy
+cuckoo
+leith
+sadler
+theologians
+welded
+##section
+1663
+jj
+plurality
+xander
+##rooms
+##formed
+shredded
+temps
+intimately
+pau
+tormented
+##lok
+##stellar
+1618
+charred
+ems
+essen
+##mmel
+alarms
+spraying
+ascot
+blooms
+twinkle
+##abia
+##apes
+internment
+obsidian
+##chaft
+snoop
+##dav
+##ooping
+malibu
+##tension
+quiver
+##itia
+hays
+mcintosh
+travers
+walsall
+##ffie
+1623
+beverley
+schwarz
+plunging
+structurally
+m3
+rosenthal
+vikram
+##tsk
+770
+ghz
+##onda
+##tiv
+chalmers
+groningen
+pew
+reckon
+unicef
+##rvis
+55th
+##gni
+1651
+sulawesi
+avila
+cai
+metaphysical
+screwing
+turbulence
+##mberg
+augusto
+samba
+56th
+baffled
+momentary
+toxin
+##urian
+##wani
+aachen
+condoms
+dali
+steppe
+##3d
+##app
+##oed
+##year
+adolescence
+dauphin
+electrically
+inaccessible
+microscopy
+nikita
+##ega
+atv
+##cel
+##enter
+##oles
+##oteric
+##ы
+accountants
+punishments
+wrongly
+bribes
+adventurous
+clinch
+flinders
+southland
+##hem
+##kata
+gough
+##ciency
+lads
+soared
+##ה
+undergoes
+deformation
+outlawed
+rubbish
+##arus
+##mussen
+##nidae
+##rzburg
+arcs
+##ingdon
+##tituted
+1695
+wheelbase
+wheeling
+bombardier
+campground
+zebra
+##lices
+##oj
+##bain
+lullaby
+##ecure
+donetsk
+wylie
+grenada
+##arding
+##ης
+squinting
+eireann
+opposes
+##andra
+maximal
+runes
+##broken
+##cuting
+##iface
+##ror
+##rosis
+additive
+britney
+adultery
+triggering
+##drome
+detrimental
+aarhus
+containment
+jc
+swapped
+vichy
+##ioms
+madly
+##oric
+##rag
+brant
+##ckey
+##trix
+1560
+1612
+broughton
+rustling
+##stems
+##uder
+asbestos
+mentoring
+##nivorous
+finley
+leaps
+##isan
+apical
+pry
+slits
+substitutes
+##dict
+intuitive
+fantasia
+insistent
+unreasonable
+##igen
+##vna
+domed
+hannover
+margot
+ponder
+##zziness
+impromptu
+jian
+lc
+rampage
+stemming
+##eft
+andrey
+gerais
+whichever
+amnesia
+appropriated
+anzac
+clicks
+modifying
+ultimatum
+cambrian
+maids
+verve
+yellowstone
+##mbs
+conservatoire
+##scribe
+adherence
+dinners
+spectra
+imperfect
+mysteriously
+sidekick
+tatar
+tuba
+##aks
+##ifolia
+distrust
+##athan
+##zle
+c2
+ronin
+zac
+##pse
+celaena
+instrumentalist
+scents
+skopje
+##mbling
+comical
+compensated
+vidal
+condor
+intersect
+jingle
+wavelengths
+##urrent
+mcqueen
+##izzly
+carp
+weasel
+422
+kanye
+militias
+postdoctoral
+eugen
+gunslinger
+##ɛ
+faux
+hospice
+##for
+appalled
+derivation
+dwarves
+##elis
+dilapidated
+##folk
+astoria
+philology
+##lwyn
+##otho
+##saka
+inducing
+philanthropy
+##bf
+##itative
+geek
+markedly
+sql
+##yce
+bessie
+indices
+rn
+##flict
+495
+frowns
+resolving
+weightlifting
+tugs
+cleric
+contentious
+1653
+mania
+rms
+##miya
+##reate
+##ruck
+##tucket
+bien
+eels
+marek
+##ayton
+##cence
+discreet
+unofficially
+##ife
+leaks
+##bber
+1705
+332
+dung
+compressor
+hillsborough
+pandit
+shillings
+distal
+##skin
+381
+##tat
+##you
+nosed
+##nir
+mangrove
+undeveloped
+##idia
+textures
+##inho
+##500
+##rise
+ae
+irritating
+nay
+amazingly
+bancroft
+apologetic
+compassionate
+kata
+symphonies
+##lovic
+airspace
+##lch
+930
+gifford
+precautions
+fulfillment
+sevilla
+vulgar
+martinique
+##urities
+looting
+piccolo
+tidy
+##dermott
+quadrant
+armchair
+incomes
+mathematicians
+stampede
+nilsson
+##inking
+##scan
+foo
+quarterfinal
+##ostal
+shang
+shouldered
+squirrels
+##owe
+344
+vinegar
+##bner
+##rchy
+##systems
+delaying
+##trics
+ars
+dwyer
+rhapsody
+sponsoring
+##gration
+bipolar
+cinder
+starters
+##olio
+##urst
+421
+signage
+##nty
+aground
+figurative
+mons
+acquaintances
+duets
+erroneously
+soyuz
+elliptic
+recreated
+##cultural
+##quette
+##ssed
+##tma
+##zcz
+moderator
+scares
+##itaire
+##stones
+##udence
+juniper
+sighting
+##just
+##nsen
+britten
+calabria
+ry
+bop
+cramer
+forsyth
+stillness
+##л
+airmen
+gathers
+unfit
+##umber
+##upt
+taunting
+##rip
+seeker
+streamlined
+##bution
+holster
+schumann
+tread
+vox
+##gano
+##onzo
+strive
+dil
+reforming
+covent
+newbury
+predicting
+##orro
+decorate
+tre
+##puted
+andover
+ie
+asahi
+dept
+dunkirk
+gills
+##tori
+buren
+huskies
+##stis
+##stov
+abstracts
+bets
+loosen
+##opa
+1682
+yearning
+##glio
+##sir
+berman
+effortlessly
+enamel
+napoli
+persist
+##peration
+##uez
+attache
+elisa
+b1
+invitations
+##kic
+accelerating
+reindeer
+boardwalk
+clutches
+nelly
+polka
+starbucks
+##kei
+adamant
+huey
+lough
+unbroken
+adventurer
+embroidery
+inspecting
+stanza
+##ducted
+naia
+taluka
+##pone
+##roids
+chases
+deprivation
+florian
+##jing
+##ppet
+earthly
+##lib
+##ssee
+colossal
+foreigner
+vet
+freaks
+patrice
+rosewood
+triassic
+upstate
+##pkins
+dominates
+ata
+chants
+ks
+vo
+##400
+##bley
+##raya
+##rmed
+555
+agra
+infiltrate
+##ailing
+##ilation
+##tzer
+##uppe
+##werk
+binoculars
+enthusiast
+fujian
+squeak
+##avs
+abolitionist
+almeida
+boredom
+hampstead
+marsden
+rations
+##ands
+inflated
+334
+bonuses
+rosalie
+patna
+##rco
+329
+detachments
+penitentiary
+54th
+flourishing
+woolf
+##dion
+##etched
+papyrus
+##lster
+##nsor
+##toy
+bobbed
+dismounted
+endelle
+inhuman
+motorola
+tbs
+wince
+wreath
+##ticus
+hideout
+inspections
+sanjay
+disgrace
+infused
+pudding
+stalks
+##urbed
+arsenic
+leases
+##hyl
+##rrard
+collarbone
+##waite
+##wil
+dowry
+##bant
+##edance
+genealogical
+nitrate
+salamanca
+scandals
+thyroid
+necessitated
+##!
+##"
+###
+##$
+##%
+##&
+##'
+##(
+##)
+##*
+##+
+##,
+##-
+##.
+##/
+##:
+##;
+##<
+##=
+##>
+##?
+##@
+##[
+##\
+##]
+##^
+##_
+##`
+##{
+##|
+##}
+##~
+##¡
+##¢
+##£
+##¤
+##¥
+##¦
+##§
+##¨
+##©
+##ª
+##«
+##¬
+##®
+##±
+##´
+##µ
+##¶
+##·
+##º
+##»
+##¼
+##¾
+##¿
+##æ
+##ð
+##÷
+##þ
+##đ
+##ħ
+##ŋ
+##œ
+##ƒ
+##ɐ
+##ɑ
+##ɒ
+##ɔ
+##ɕ
+##ə
+##ɡ
+##ɣ
+##ɨ
+##ɪ
+##ɫ
+##ɬ
+##ɯ
+##ɲ
+##ɴ
+##ɹ
+##ɾ
+##ʀ
+##ʁ
+##ʂ
+##ʃ
+##ʉ
+##ʊ
+##ʋ
+##ʌ
+##ʎ
+##ʐ
+##ʑ
+##ʒ
+##ʔ
+##ʰ
+##ʲ
+##ʳ
+##ʷ
+##ʸ
+##ʻ
+##ʼ
+##ʾ
+##ʿ
+##ˈ
+##ˡ
+##ˢ
+##ˣ
+##ˤ
+##β
+##γ
+##δ
+##ε
+##ζ
+##θ
+##κ
+##λ
+##μ
+##ξ
+##ο
+##π
+##ρ
+##σ
+##τ
+##υ
+##φ
+##χ
+##ψ
+##ω
+##б
+##г
+##д
+##ж
+##з
+##м
+##п
+##с
+##у
+##ф
+##х
+##ц
+##ч
+##ш
+##щ
+##ъ
+##э
+##ю
+##ђ
+##є
+##і
+##ј
+##љ
+##њ
+##ћ
+##ӏ
+##ա
+##բ
+##գ
+##դ
+##ե
+##թ
+##ի
+##լ
+##կ
+##հ
+##մ
+##յ
+##ն
+##ո
+##պ
+##ս
+##վ
+##տ
+##ր
+##ւ
+##ք
+##־
+##א
+##ב
+##ג
+##ד
+##ו
+##ז
+##ח
+##ט
+##י
+##ך
+##כ
+##ל
+##ם
+##מ
+##ן
+##נ
+##ס
+##ע
+##ף
+##פ
+##ץ
+##צ
+##ק
+##ר
+##ש
+##ת
+##،
+##ء
+##ب
+##ت
+##ث
+##ج
+##ح
+##خ
+##ذ
+##ز
+##س
+##ش
+##ص
+##ض
+##ط
+##ظ
+##ع
+##غ
+##ـ
+##ف
+##ق
+##ك
+##و
+##ى
+##ٹ
+##پ
+##چ
+##ک
+##گ
+##ں
+##ھ
+##ہ
+##ے
+##अ
+##आ
+##उ
+##ए
+##क
+##ख
+##ग
+##च
+##ज
+##ट
+##ड
+##ण
+##त
+##थ
+##द
+##ध
+##न
+##प
+##ब
+##भ
+##म
+##य
+##र
+##ल
+##व
+##श
+##ष
+##स
+##ह
+##ा
+##ि
+##ी
+##ो
+##।
+##॥
+##ং
+##অ
+##আ
+##ই
+##উ
+##এ
+##ও
+##ক
+##খ
+##গ
+##চ
+##ছ
+##জ
+##ট
+##ড
+##ণ
+##ত
+##থ
+##দ
+##ধ
+##ন
+##প
+##ব
+##ভ
+##ম
+##য
+##র
+##ল
+##শ
+##ষ
+##স
+##হ
+##া
+##ি
+##ী
+##ে
+##க
+##ச
+##ட
+##த
+##ந
+##ன
+##ப
+##ம
+##ய
+##ர
+##ல
+##ள
+##வ
+##ா
+##ி
+##ு
+##ே
+##ை
+##ನ
+##ರ
+##ಾ
+##ක
+##ය
+##ර
+##ල
+##ව
+##ා
+##ก
+##ง
+##ต
+##ท
+##น
+##พ
+##ม
+##ย
+##ร
+##ล
+##ว
+##ส
+##อ
+##า
+##เ
+##་
+##།
+##ག
+##ང
+##ད
+##ན
+##པ
+##བ
+##མ
+##འ
+##ར
+##ལ
+##ས
+##မ
+##ა
+##ბ
+##გ
+##დ
+##ე
+##ვ
+##თ
+##ი
+##კ
+##ლ
+##მ
+##ნ
+##ო
+##რ
+##ს
+##ტ
+##უ
+##ᄀ
+##ᄂ
+##ᄃ
+##ᄅ
+##ᄆ
+##ᄇ
+##ᄉ
+##ᄊ
+##ᄋ
+##ᄌ
+##ᄎ
+##ᄏ
+##ᄐ
+##ᄑ
+##ᄒ
+##ᅡ
+##ᅢ
+##ᅥ
+##ᅦ
+##ᅧ
+##ᅩ
+##ᅪ
+##ᅭ
+##ᅮ
+##ᅯ
+##ᅲ
+##ᅳ
+##ᅴ
+##ᅵ
+##ᆨ
+##ᆫ
+##ᆯ
+##ᆷ
+##ᆸ
+##ᆼ
+##ᴬ
+##ᴮ
+##ᴰ
+##ᴵ
+##ᴺ
+##ᵀ
+##ᵃ
+##ᵇ
+##ᵈ
+##ᵉ
+##ᵍ
+##ᵏ
+##ᵐ
+##ᵒ
+##ᵖ
+##ᵗ
+##ᵘ
+##ᵣ
+##ᵤ
+##ᵥ
+##ᶜ
+##ᶠ
+##‐
+##‑
+##‒
+##–
+##—
+##―
+##‖
+##‘
+##’
+##‚
+##“
+##”
+##„
+##†
+##‡
+##•
+##…
+##‰
+##′
+##″
+##›
+##‿
+##⁄
+##⁰
+##ⁱ
+##⁴
+##⁵
+##⁶
+##⁷
+##⁸
+##⁹
+##⁻
+##ⁿ
+##₅
+##₆
+##₇
+##₈
+##₉
+##₊
+##₍
+##₎
+##ₐ
+##ₑ
+##ₒ
+##ₓ
+##ₕ
+##ₖ
+##ₗ
+##ₘ
+##ₚ
+##ₛ
+##ₜ
+##₤
+##₩
+##€
+##₱
+##₹
+##ℓ
+##№
+##ℝ
+##™
+##⅓
+##⅔
+##←
+##↑
+##→
+##↓
+##↔
+##↦
+##⇄
+##⇌
+##⇒
+##∂
+##∅
+##∆
+##∇
+##∈
+##∗
+##∘
+##√
+##∞
+##∧
+##∨
+##∩
+##∪
+##≈
+##≡
+##≤
+##≥
+##⊂
+##⊆
+##⊕
+##⊗
+##⋅
+##─
+##│
+##■
+##▪
+##●
+##★
+##☆
+##☉
+##♠
+##♣
+##♥
+##♦
+##♯
+##⟨
+##⟩
+##ⱼ
+##⺩
+##⺼
+##⽥
+##、
+##。
+##〈
+##〉
+##《
+##》
+##「
+##」
+##『
+##』
+##〜
+##あ
+##い
+##う
+##え
+##お
+##か
+##き
+##く
+##け
+##こ
+##さ
+##し
+##す
+##せ
+##そ
+##た
+##ち
+##っ
+##つ
+##て
+##と
+##な
+##に
+##ぬ
+##ね
+##の
+##は
+##ひ
+##ふ
+##へ
+##ほ
+##ま
+##み
+##む
+##め
+##も
+##や
+##ゆ
+##よ
+##ら
+##り
+##る
+##れ
+##ろ
+##を
+##ん
+##ァ
+##ア
+##ィ
+##イ
+##ウ
+##ェ
+##エ
+##オ
+##カ
+##キ
+##ク
+##ケ
+##コ
+##サ
+##シ
+##ス
+##セ
+##タ
+##チ
+##ッ
+##ツ
+##テ
+##ト
+##ナ
+##ニ
+##ノ
+##ハ
+##ヒ
+##フ
+##ヘ
+##ホ
+##マ
+##ミ
+##ム
+##メ
+##モ
+##ャ
+##ュ
+##ョ
+##ラ
+##リ
+##ル
+##レ
+##ロ
+##ワ
+##ン
+##・
+##ー
+##一
+##三
+##上
+##下
+##不
+##世
+##中
+##主
+##久
+##之
+##也
+##事
+##二
+##五
+##井
+##京
+##人
+##亻
+##仁
+##介
+##代
+##仮
+##伊
+##会
+##佐
+##侍
+##保
+##信
+##健
+##元
+##光
+##八
+##公
+##内
+##出
+##分
+##前
+##劉
+##力
+##加
+##勝
+##北
+##区
+##十
+##千
+##南
+##博
+##原
+##口
+##古
+##史
+##司
+##合
+##吉
+##同
+##名
+##和
+##囗
+##四
+##国
+##國
+##土
+##地
+##坂
+##城
+##堂
+##場
+##士
+##夏
+##外
+##大
+##天
+##太
+##夫
+##奈
+##女
+##子
+##学
+##宀
+##宇
+##安
+##宗
+##定
+##宣
+##宮
+##家
+##宿
+##寺
+##將
+##小
+##尚
+##山
+##岡
+##島
+##崎
+##川
+##州
+##巿
+##帝
+##平
+##年
+##幸
+##广
+##弘
+##張
+##彳
+##後
+##御
+##德
+##心
+##忄
+##志
+##忠
+##愛
+##成
+##我
+##戦
+##戸
+##手
+##扌
+##政
+##文
+##新
+##方
+##日
+##明
+##星
+##春
+##昭
+##智
+##曲
+##書
+##月
+##有
+##朝
+##木
+##本
+##李
+##村
+##東
+##松
+##林
+##森
+##楊
+##樹
+##橋
+##歌
+##止
+##正
+##武
+##比
+##氏
+##民
+##水
+##氵
+##氷
+##永
+##江
+##沢
+##河
+##治
+##法
+##海
+##清
+##漢
+##瀬
+##火
+##版
+##犬
+##王
+##生
+##田
+##男
+##疒
+##発
+##白
+##的
+##皇
+##目
+##相
+##省
+##真
+##石
+##示
+##社
+##神
+##福
+##禾
+##秀
+##秋
+##空
+##立
+##章
+##竹
+##糹
+##美
+##義
+##耳
+##良
+##艹
+##花
+##英
+##華
+##葉
+##藤
+##行
+##街
+##西
+##見
+##訁
+##語
+##谷
+##貝
+##貴
+##車
+##軍
+##辶
+##道
+##郎
+##郡
+##部
+##都
+##里
+##野
+##金
+##鈴
+##镇
+##長
+##門
+##間
+##阝
+##阿
+##陳
+##陽
+##雄
+##青
+##面
+##風
+##食
+##香
+##馬
+##高
+##龍
+##龸
+##fi
+##fl
+##!
+##(
+##)
+##,
+##-
+##.
+##/
+##:
+##?
+##~
diff --git a/data/skills/art_skills/2D_90s_japanese_anime/README.md b/data/skills/art_skills/2D_90s_japanese_anime/README.md
new file mode 100644
index 0000000..d50b9fb
--- /dev/null
+++ b/data/skills/art_skills/2D_90s_japanese_anime/README.md
@@ -0,0 +1,33 @@
+# 90年代日式动画风格说明
+
+本风格专为"90年代日式动画质感"题材打造,所有美术提示词、规范和生成内容均严格限定于:
+
+- **90年代动画世界观**:以90年代日式生活为背景,涵盖学校、车站、街道、咖啡馆、住宅等,体现日式生活气息。
+- **手绘平涂质感**:所有角色、场景、道具均以90年代手绘动画为标准,强调线条清晰度、上色均匀度、光影层次感。
+- **怀旧治愈美学**:在平涂基础上追求电影感氛围,画面色调柔和温暖,细节丰富,整体氛围温暖治愈、怀旧感人。
+- **情感表达**:适合展现温柔、治愈、浪漫的日式恋爱故事,强调东方美学下的情感表达。
+
+## 适用范围
+
+- 90年代日式动画题材的AI美术生成(角色、场景、道具、分镜等)
+- 需要极致手绘质感、细腻线条、温馨治愈氛围的视觉创作
+
+## 严禁内容
+
+- 现代日系动画风格、3D渲染、CG动画
+- 现代元素、现代建筑、现代服饰
+- 高饱和荧光色、霓虹色
+- 过度阴影、黑暗暴力、成人向内容
+
+## 风格体验
+
+在本风格下,您将体验到:
+
+- 角色面容精致、气质温柔或清亮,服饰、妆容、发型均为90年代日式动画风格
+- 场景空间层次丰富,线条清晰流畅,氛围真实且富有诗意
+- 道具、日常物品、环境细节均为日式造型,工艺精细,质感细腻
+- 分镜与画面均以手绘平涂为基础,强调叙事与情感表达
+
+---
+
+本风格仅适用于"90年代日式动画"相关项目。如需其他风格(如现代动画、CG、插画、现代等),请勿使用本套提示词。
\ No newline at end of file
diff --git a/data/skills/art_skills/2D_90s_japanese_anime/art_prompt/art_character.md b/data/skills/art_skills/2D_90s_japanese_anime/art_prompt/art_character.md
new file mode 100644
index 0000000..0dd56d4
--- /dev/null
+++ b/data/skills/art_skills/2D_90s_japanese_anime/art_prompt/art_character.md
@@ -0,0 +1,203 @@
+# 90年代复古日系动画风格 - 人物基础形象生成 · 约束手册
+
+---
+
+## 一、基础形象原则
+
+1. **线条即灵魂** — 手绘流畅线条为角色核心,避免数字化锐利边缘
+2. **平涂上色** — 基础服装+素颜,后续服化为叠加层(女性:白色背心+内裤;男性:白色内裤)
+3. **四视图一致** — 面容/体型/发型/基础服装跨视图高度统一
+4. **情感克制冷静** — 无妆状态需体现角色气质(温柔/忧郁/淡然)
+
+---
+
+## 二、面容约束
+
+### 女性面容
+
+| 部位 | 约束 | 提示词 |
+|---|---|---|
+| 脸型 | 鹅蛋脸、下巴圆润、线条柔和 | 鹅蛋脸、圆润脸型 |
+| 眼型 | 大眼、单眼皮/内双、瞳孔有柔光 | 大眼、单眼皮、柔光瞳孔 |
+| 眉型 | 自然弯眉、颜色深棕 | 自然弯眉、深棕色 |
+| 鼻型 | 小鼻、鼻梁线条简洁 | 小巧鼻、简洁线条 |
+| 唇型 | 樱桃唇、自然粉色 | 樱桃唇、自然粉色 |
+| 气质 | 温柔/忧郁/古典、怀旧感 | 温柔忧郁、怀旧气质 |
+
+### 男性面容
+
+| 部位 | 约束 | 提示词 |
+|---|---|---|
+| 脸型 | 棱角分明、下颌线清晰 | 棱角分明、清晰下颌 |
+| 眼型 | 狭长眼、眼神清澈 | 狭长眼、清澈眼神 |
+| 眉型 | 剑眉、自然浓密 | 剑眉、自然浓密 |
+| 鼻型 | 高挺鼻梁、线条分明 | 高挺鼻梁、分明线条 |
+| 唇型 | 薄唇、自然唇色 | 薄唇、自然唇色 |
+| 气质 | 清冷/阳光/温柔 | 清冷俊逸/阳光少年、怀旧感 |
+
+---
+
+## 三、肤感约束
+
+### 女性
+
+| 项目 | 约束 | 提示词 |
+|---|---|---|
+| 肤色 | 冷白皮、暖调米白 | 冷白皮、暖调米白 |
+| 光泽 | 平涂上色、柔和光泽 | 平涂上色、柔和光泽 |
+| 质感 | 手绘质感、无数字化痕迹 | 手绘质感、无数字化痕迹 |
+| 露肤 | 面部/颈部/手部 | 锁骨可见、颈线清晰 |
+
+### 男性
+
+| 项目 | 约束 | 提示词 |
+|---|---|---|
+| 肤色 | 健康肤色、暖调自然 | 健康肤色、暖调自然 |
+| 光泽 | 平涂上色、自然光泽 | 平涂上色、自然光泽 |
+| 质感 | 手绘质感、简单纹理 | 手绘质感、简单纹理 |
+
+---
+
+## 四、体型约束
+
+### 女性
+
+| 项目 | 约束 | 提示词 |
+|---|---|---|
+| 身高 | 由角色设定指定,默认155-165cm | {身高}cm、{身高描述} |
+| 头身比 | 六头身至六头半、90年代常见比例 | 6-6.5 heads tall、90年代比例 |
+| 肩颈 | 纤细、肩线柔和 | 纤细肩部、柔美颈线 |
+| 手部 | 纤细、指节分明 | 纤细玉手、手指修长 |
+| 体态 | 优雅/温柔、体态轻盈 | 体态轻盈、身姿优雅 |
+
+### 男性
+
+| 项目 | 约束 | 提示词 |
+|---|---|---|
+| 身高 | 由角色设定指定,默认170-180cm | {身高}cm、{身高描述} |
+| 头身比 | 六头半至七头半 | 6.5-7.5 heads tall、90年代比例 |
+| 肩颈 | 宽肩、颈线有力 | 宽肩、颈部有力 |
+| 手部 | 骨节分明、手掌比例协调 | 手指骨节分明 |
+| 体态 | 挺拔/健壮、体态自然 | 身姿挺拔、体态健壮 |
+
+---
+
+## 五、基础发型约束
+
+> 仅定义自然散发/简单束发,发饰在衍生环节叠加。
+
+### 女性
+
+| 项目 | 约束 | 提示词 |
+|---|---|---|
+| 发色 | 自然发色(黑/棕/金) | 黑发、棕发、金发 |
+| 发长 | 及肩或更长 | 长发、及肩发 |
+| 发质 | 手绘质感、线条流畅 | 发丝流畅、手绘质感 |
+| 造型 | 自然散发、无发饰 | 长发自然散落、无发饰 |
+
+### 男性
+
+| 项目 | 约束 | 提示词 |
+|---|---|---|
+| 发色 | 自然发色(黑/棕/灰) | 黑发、棕发、银发 |
+| 发长 | 中长至长发 | 中长发、长发 |
+| 发质 | 手绘质感、线条流畅 | 发丝流畅、手绘质感 |
+| 造型 | 自然散发或半束、无发冠 | 长发自然散落、半束发 |
+
+---
+
+## 六、基础服装约束
+
+> 基础服装无特殊约束,女性为白色背心+内裤,男性为白色内裤。正式服饰在衍生环节叠加。
+
+### 女性基础服装
+
+白色背心和内裤,颜色统一为暖白色,无花纹装饰。
+
+### 男性基础服装
+
+白色内裤,颜色统一为暖白色,无花纹装饰。
+
+### 着装统一规则
+
+- 服装风格统一,确保后续服饰叠加无色彩干扰
+- 除面部/手部/颈部外基本覆盖
+- 四视图服装款式完全一致
+- 基础服装仅为安全打底,焦点在面容与体态
+
+---
+
+## 七、四视图设定图规范
+
+### 视图定义
+
+| 位置 | 视图 | 角度 | 景别 | 要求 | 提示词 |
+|---|---|---|---|---|---|
+| 左一 | 人像特写 | 正面平视 | 头顶至锁骨 | 从头顶到锁骨完整展示,面部占60%+ | portrait closeup、face detail |
+| 左二 | 正视图 | 正面 0° | 全身立像 | 面对镜头、双臂自然、从头到脚完整 | front view、full body head to toe |
+| 右二 | 侧视图 | 右侧 90° | 全身立像 | 纯侧面轮廓清晰、从头到脚完整 | side view、profile、full body head to toe |
+| 右一 | 后视图 | 后方 180° | 全身立像 | 后脑/背部/发尾/脚部清晰 | back view、rear view、full body head to toe |
+
+### 画面规范
+
+| 项目 | 约束 |
+|---|---|
+| 布局 | 同一画面从左至右并排四视图 |
+| 背景 | 暖调米白 #F8F4E8 |
+| 站姿 | 自然站立、双脚平行微分、双臂自然下垂 |
+| 全身展示 | 从头到脚完整入画,严禁裁切头顶或脚部 |
+| 特写展示 | 从头顶到锁骨完整入画,严禁裁切头顶 |
+| 表情 | 中性微表情,符合角色气质 |
+| 光线 | 柔和电影光,前方主光 + 双侧补光 |
+| 一致性 | 四视图的肤色/体型/发型/面容/基础服装完全一致 |
+| 画面比例 | 建议 4:1 或 3:1 |
+
+---
+
+## 八、提示词模板
+
+```
+{性别}角色四视图设定图,90s anime style,复古日系动画风格,手绘平涂上色,柔和暖色调,精细流畅线条,电影感光影,
+character design sheet,character turnaround,
+{脸型},{眼型},{鼻型},{唇型},{整体气质},素颜无妆,
+{肤色},平涂上色,手绘质感,皮肤细腻,
+{身高描述,如:165cm tall、slender woman},{头身比,如:6.5 heads tall proportion},{身材描述},{体态描述},
+{发色}{发长},发丝流畅,{基础造型},无发饰,
+(女性:白色背心和内裤 / 男性:仅白色内裤),暖白色,无花纹,
+同一画面左至右并排:人像特写+正视图+侧视图+后视图,
+人像特写从头顶到锁骨完整展示,head to collarbone complete,
+全身立像从头顶到脚底完整展示,full body head to toe,不裁切头顶和脚部,
+自然站立,纯净中性灰背景,柔和电影光,无硬阴影,
+四视图一致性,面容细腻渲染,发丝细腻渲染
+图中不要有任何文字
+```
+
+---
+
+## 九、约束规则
+
+### 必守
+
+| 编号 | 规则 |
+|---|---|
+| R1 | 必须为「素颜无妆」状态 |
+| R2 | 必须声明基础服装(女性:白色背心+内裤;男性:白色内裤) |
+| R3 | 必须声明「无发饰、无配饰」 |
+| R4 | 必须指定「暖调米白背景 #F8F4E8」 |
+| R5 | 必须指定「四视图一致性」 |
+| R6 | 全身立像必须从头到脚完整展示,严禁裁切 |
+| R7 | 必须指定角色身高并通过头身比换算约束全身比例(女性默认155-165cm/6-6.5头身,男性默认170-180cm/6.5-7.5头身) |
+| R8 | 人像特写必须从头顶到锁骨完整展示,严禁裁切头顶 |
+
+### 严禁
+
+| 编号 | 严禁 |
+|---|---|
+| X1 | 基础服装以外的任何服装/配饰/妆容 |
+| X2 | 数字化锐利边缘、过饱和色彩 |
+| X3 | 过度美白至无血色 |
+| X4 | 复杂场景背景(必须暖色调背景) |
+| X5 | 夸张表情/动态姿势 |
+| X6 | 全身立像裁切头顶或脚底,必须从头到脚完整入画 |
+| X7 | 人像特写裁切头顶,必须从头顶到锁骨完整入画 |
+| X8 | 忽略身高和头身比约束 |
\ No newline at end of file
diff --git a/data/skills/art_skills/2D_90s_japanese_anime/art_prompt/art_character_derivative.md b/data/skills/art_skills/2D_90s_japanese_anime/art_prompt/art_character_derivative.md
new file mode 100644
index 0000000..151036d
--- /dev/null
+++ b/data/skills/art_skills/2D_90s_japanese_anime/art_prompt/art_character_derivative.md
@@ -0,0 +1,273 @@
+# 90年代复古日系动画风格 - 人物衍生资产生成 · 约束手册
+
+---
+
+## 一、叠加原则
+
+1. **面容不变** — 叠加后五官必须与底模完全一致,禁止面容偏移
+2. **姿态不变** — 保持底模自然站立姿态,禁止任何姿态/动作/体态变化
+3. **逐层可控** — 每层独立描述,便于按层替换(换装不换妆)
+4. **风格统一** — 所有服化元素服从90年代复古手绘平涂美学体系
+5. **质感不降** — 叠加后手绘质感标准不低于底模
+6. **纯服化范畴** — 仅叠加妆容/发型/服饰/配饰,禁止引入道具、场景、环境、动作
+
+---
+
+## 二、叠加层级
+
+| 层级 | 内容 | 说明 |
+|---|---|---|
+| L0 | 底模 | 基础形象底模,不修改 |
+| L1 | 妆容(决策层) | 根据用户线索分析妆造强度 |
+| L2 | 发型造型 | 发髻/束发/编发 + 发饰 |
+| L3 | 中衣/内搭 | 替换白色基础中衣 |
+| L4 | 外衣/主服 | 和服/现代装/复古装等 |
+| L5 | 配饰 | 头饰/耳饰/项饰/腰饰/手饰 |
+
+> **范畴边界**:人物衍生资产仅包含 L0–L5 层级,不包含道具、场景环境、姿态动作。
+
+---
+
+## 三、妆容约束(L1)
+
+### 底模到衍生妆造策略(关键)
+
+> 角色底模为素颜,但衍生资产默认进入妆造流程。系统应根据用户线索分析妆容需求,在基础妆/轻妆/正式妆之间决策强度。
+
+### 线索到妆容映射
+
+| 线索类型 | 典型线索 | L1 决策 |
+|---|---|---|
+| 无明显面部强调线索 | 仅服饰/发型变化 | 基础妆 |
+| 轻微面部线索 | 含笑、气色微提 | 轻妆 |
+| 明确病弱线索 | 面色苍白、唇色极淡 | 病弱妆 |
+| 明确正式仪式线索 | 盛装、典礼 | 正式妆 |
+
+### 女性妆容风格矩阵
+
+| 风格 | 适用场景 | 核心提示词 |
+|---|---|---|
+| 日常淡妆 | 日常、初遇 | 淡妆、自然妆容、怀旧感 |
+| 约会妆 | 约会、约会 | 甜美妆、暖粉色、气色好 |
+| 正式妆 | 宴会、典礼 | 精致妆容、眼妆明显 |
+| 病弱妆 | 受伤、虚弱 | 面色苍白、唇色淡、眼妆轻 |
+| 复古妆 | 怀旧场景、经典 | 复古妆容、90年代风格 |
+
+### 通用底肤
+
+| 项目 | 约束 | 提示词 |
+|---|---|---|
+| 质感 | 平涂上色、均匀色调 | 平涂上色、皮肤均匀 |
+| 白度 | 暖白皮、柔和不刺眼 | 暖白皮、柔和白皙 |
+| 内透光 | 平涂中保留柔光感 | 皮肤通透、柔和光泽 |
+| 禁止 | 过度数字化/油光/厚重感 | — |
+
+### 男性妆容
+
+| 项目 | 约束 | 提示词 |
+|---|---|---|
+| 底肤 | 健康肤色、平涂上色 | 健康肤色、平涂上色 |
+| 原则 | 伪素颜——看着没化妆但皮肤好 | 伪素颜、天生好皮 |
+| 眉毛 | 自然浓眉、不画眉 | 剑眉自然、眉形英挺 |
+| 唇色 | 自然血色、微润 | 唇色自然、血色感 |
+
+---
+
+## 四、发型造型约束(L2)
+
+### 女性造型类型
+
+| 造型 | 描述 | 适用 | 提示词 |
+|---|---|---|---|
+| 双马尾 | 两侧马尾、90年代常见 | 少女、日常 | 双马尾、90年代风格 |
+| 高马尾 | 头顶马尾、干练 | 运动、行动 | 高马尾、干练 |
+| 长发披散 | 长发全散、温柔 | 温柔、日常 | 长发披散、柔顺 |
+| 侧马尾 | 一侧马尾、不对称 | 俏皮、个性 | 侧马尾、俏皮 |
+| 编发 | 辫子造型、精致 | 正式、场合 | 编发、精致发型 |
+| 丸子头 | 头顶丸子、可爱 | 可爱、日常 | 丸子头、可爱 |
+
+### 女性发饰
+
+| 项目 | 约束 | 提示词 |
+|---|---|---|
+| 风格 | 90年代常见、与服饰配套 | 90年代发饰、复古风格 |
+| 材质 | 丝带/珠玉/金属 | 丝带发饰、珠玉发饰 |
+| 工艺 | 手绘质感、符合90年代 | 手绘发饰、90年代风格 |
+
+### 男性造型类型
+
+| 造型 | 适用 | 提示词 |
+|---|---|---|
+| 短发 | 日常、干练 | 短发、干练 |
+| 中长发 | 日常、文雅 | 中长发、文雅 |
+| 长发束起 | 正式、战斗 | 长发束起、帅气 |
+| 散发披肩 | 休闲、温柔 | 散发披肩、温柔 |
+
+---
+
+## 五、服饰约束(L3+L4)
+
+### 女性服饰矩阵
+
+| 风格 | 款式 | 适用 | 提示词 |
+|---|---|---|---|
+| 日常休闲装 | T恤/牛仔裤/连衣裙 | 日常、校园 | 休闲装、舒适 |
+| 和服/汉服 | 传统服饰 | 场合、主题 | 和服、汉服 |
+| 运动装 | 运动服、卫衣 | 运动、休闲 | 运动装、活力 |
+| 礼服 | 礼服裙、90年代风格 | 宴会、正式 | 礼服、优雅 |
+| 制服 | 校服、90年代制服 | 校园、职场 | 制服、整洁 |
+
+### 女性服饰通用约束
+
+| 项目 | 约束 | 提示词 |
+|---|---|---|
+| 主色 | 暖色调、怀旧色彩 | 暖色调、怀旧色彩 |
+| 材质 | 布料质感清晰 | 布料纹理清晰、平涂上色 |
+| 质感 | 线条流畅、色彩柔和 | 线条流畅、色彩柔和 |
+| 层次 | 层次分明、细节丰富 | 层次分明、细节清晰 |
+
+### 男性服饰矩阵
+
+| 风格 | 适用 | 提示词 |
+|---|---|---|
+| 日常休闲装 | T恤/牛仔裤 | 日常、休闲 |
+| 制服 | 校服、90年代制服 | 制服、整洁 |
+| 西装 | 正装、正式 | 西装、正式 |
+| 运动装 | 运动服、卫衣 | 运动、活力 |
+| 和服/汉服 | 传统、场合 | 和服、汉服 |
+
+---
+
+## 六、配饰约束(L5)
+
+### 女性配饰
+
+| 类型 | 约束 | 提示词 |
+|---|---|---|
+| 头饰 | 发箍/发夹/蝴蝶结 | 发饰、精致 |
+| 耳饰 | 耳环/耳钉 | 耳环、小巧 |
+| 项饰 | 项链/吊坠 | 项链、精致 |
+| 手饰 | 手镯/手环 | 手镯、纤细 |
+| 包饰 | 包包、挎包 | 包包、时尚 |
+
+### 男性配饰
+
+| 类型 | 约束 | 提示词 |
+|---|---|---|
+| 眼镜 | 眼镜/墨镜 | 眼镜、时尚 |
+| 手表 | 手表 | 手表、精致 |
+| 戒指 | 戒指 | 戒指、简约 |
+| 围巾 | 围巾 | 围巾、保暖 |
+
+---
+
+## 七、服化组合速查
+
+| 场景 | 妆容 | 发型 | 服饰 | 配饰 |
+|---|---|---|---|---|
+| 日常校园 | 日常淡妆 | 双马尾/长发披散 | 制服/日常休闲装 | 简约 |
+| 初次相遇 | 日常淡妆 | 长发披散/侧马尾 | 日常休闲装 | 中等 |
+| 甜蜜约会 | 约会妆 | 侧马尾/丸子头 | 休闲/和服 | 中偏多 |
+| 正式场合 | 正式妆 | 编发/高马尾 | 礼服/正式服 | 较繁 |
+| 温柔私密 | 日常淡妆 | 长发披散 | 日常休闲装 | 简约 |
+| 激烈行动 | 日常淡妆(极淡) | 高马尾 | 运动装 | 简 |
+| 复古场景 | 复古妆 | 编发/双马尾 | 和服/复古装 | 中等 |
+
+> **🔍 未覆盖场景推断规则**
+>
+> 当用户描述的场景/情境不在上表时,根据本风格核心基因自行推断:
+>
+> | 推断维度 | 90年代复古日系动画基因 |
+> |---|---|
+> | 妆容强度 | 默认日常淡妆(平涂上色、怀旧感);正式/典礼→正式妆;约会/心动→约会妆;复古主题→复古妆 |
+> | 发型 | 日常/少女→双马尾或长发披散;运动/行动→高马尾;正式→编发;俏皮/个性→侧马尾;可爱→丸子头 |
+> | 服饰 | 90年代风格为锚(校服/制服/休闲装/和服);暖色调、怀旧色彩优先;线条流畅、布料纹理清晰 |
+> | 配饰繁度 | 日常→简约(90年代风格发饰+基础配饰);正式→中等偏繁;行动/运动→简或无 |
+> | 质感基准 | 手绘平涂上色始终锁定;线条流畅、色彩柔和暖调;禁止数字感/3D渲染/现代CG质感 |
+
+---
+
+## 八、四视图设定图规范
+
+### 视图定义
+
+| 位置 | 视图 | 角度 | 景别 | 要求 | 提示词 |
+|---|---|---|---|---|---|
+| 左一 | 人像特写 | 正面平视 | 面部至锁骨 | 面部占60%+,五官/妆容清晰 | portrait closeup、face detail |
+| 左二 | 正视图 | 正面 0° | 全身立像 | 面对镜头、服饰正面全貌 | front view、full body |
+| 右二 | 侧视图 | 右侧 90° | 全身立像 | 纯侧面轮廓、服饰侧面层次 | side view、profile |
+| 右一 | 后视图 | 后方 180° | 全身立像 | 后脑发饰/背部服饰清晰 | back view、rear view |
+
+### 画面规范
+
+| 项目 | 约束 |
+|---|---|
+| 布局 | 同一画面从左至右并排四视图 |
+| 背景 | 暖调米白 #F8F4E8 |
+| 站姿 | 自然站立、双脚平行微分(**禁止任何姿态变化**) |
+| 表情 | 符合妆容风格的微表情(如淡妆→自然、正式妆→微笑) |
+| 光线 | 柔和电影光,均匀柔光,无硬阴影 |
+| 一致性 | 四视图的面容/妆容/发型/发饰/服饰/配饰完全一致 |
+| 画面比例 | 建议 4:1 或 3:1 |
+
+---
+
+## 八、提示词模板
+
+```
+以角色基础形象图为底图,img2img叠加服化妆造,
+90s anime style,复古日系动画风格,{性别}角色四视图设定图,手绘平涂上色,柔和暖色调,电影感光影,
+character design sheet,character turnaround,
+保持基础形象面容不变,{整体气质},
+【L1·妆容】{基础妆/轻妆/正式妆};使用 {妆容风格},皮肤均匀,{眉妆},{眼妆},{唇妆},
+【L2·发型】{造型类型},发丝流畅,{发饰描述},
+【L3+L4·服饰】{主色}{款式},{材质},{装饰工艺},衣服线条流畅,纹理清晰,
+【L5·配饰】{头饰},{耳饰},{项饰},{腰饰},
+同一画面左至右并排:人像特写+正视图+侧视图+后视图,
+自然站立,纯净中性灰背景,柔和电影光,无硬阴影,
+四视图一致性,面容细腻渲染,发丝细腻渲染,纹理细节清晰
+图中不要有任何文字
+```
+
+---
+
+## 九、约束规则
+
+### 必守
+
+| 编号 | 规则 |
+|---|---|
+| R1 | 叠加后面容必须与底模一致 |
+| R2 | 服饰必须用「衣服线条流畅 + 纹理清晰」 |
+| R3 | 女性配饰必须「90年代风格、与服饰配套」 |
+| R4 | 妆容/发型/服饰/配饰风格统一 |
+| R5 | 必须输出四视图设定图(人像特写+正视图+侧视图+后视图) |
+| R6 | 必须指定「暖调米白背景 #F8F4E8」 |
+| R7 | 必须指定「四视图一致性」 |
+| R8 | **仅输出提示词**——禁止输出表格/方案/解释/变体等 |
+| R9 | **禁止包含场景描述**——不包含场景/环境/天气描述 |
+| R10 | **禁止道具交互**——不包含任何手持物/交互物 |
+| R11 | **姿态保持不变**——必须保持底模自然站立姿态 |
+| R12 | **L1 先分析再决策**——先解析用户面部线索,再确定妆容强度 |
+| R13 | **所有衍生资产均需妆造**——至少使用基础妆 |
+| R14 | **上妆强度受控**——不得出现过度夸张的妆容 |
+| R15 | **道具/场景/动作不作强度升级依据**——仅凭这些信息不得把基础妆抬高 |
+
+### 严禁
+
+| 编号 | 严禁 |
+|---|---|
+| X1 | 叠加后面容偏移 |
+| X2 | 配饰过于简单/现代化(女性) |
+| X3 | 妆容/服饰风格互相冲突 |
+| X4 | 复杂场景背景(必须暖色调背景) |
+| X5 | 四视图间服化妆造不一致 |
+| X6 | 输出提示词以外的任何内容 |
+| X7 | 在人物衍生资产中加入场景描述 |
+| X8 | 输出「速查表」「方案」「建议」等章节 |
+| X9 | 加入任何道具交互 |
+| X10 | 改变底模姿态 |
+| X11 | 加入表情与姿态联动描述 |
+| X12 | 未分析用户线索就直接套用固定妆容 |
+| X13 | 错误保持素颜,导致缺少应有妆造 |
+| X14 | 仅因道具/场景/动作词而误把妆容升级 |
\ No newline at end of file
diff --git a/data/skills/art_skills/2D_90s_japanese_anime/art_prompt/art_prop.md b/data/skills/art_skills/2D_90s_japanese_anime/art_prompt/art_prop.md
new file mode 100644
index 0000000..f25ab76
--- /dev/null
+++ b/data/skills/art_skills/2D_90s_japanese_anime/art_prompt/art_prop.md
@@ -0,0 +1,127 @@
+# 90年代复古日系动画风格 - 道具图像生成 · 约束手册
+
+---
+
+## 一、道具设计原则
+
+1. **功能可读** — 道具用途一目了然,造型服务于功能
+2. **质感极致** — 材质纹理必须清晰可辨(金属/玉石/木/布/纸)
+3. **年代风格** — 所有道具符合90年代世界观,风格统一
+4. **尺度明确** — 通过参照物或标注暗示道具真实尺寸
+5. **纯道具独立展示** — 画面中只能出现道具本身,严禁出现任何人物、手部、肢体,道具不可处于被持有/佩戴/握持状态,必须以静物陈列方式独立呈现
+
+---
+
+## 二、道具分类与美学约束
+
+### 2.1 兵器类
+
+| 项目 | 约束 | 提示词 |
+|---|---|---|
+| 类型 | 剑/刀/弓/长枪/镰刀 | {兵器类型},90年代兵器 |
+| 材质 | 金属+宝石装饰+丝带 | 金属光泽、宝石装饰 |
+| 装饰 | 雕花、流苏、复古纹样 | 雕花精致、复古纹样 |
+| 光泽 | 金属光泽、宝石反光 | 金属光泽、宝石璀璨 |
+| 提示词 | 90年代{兵器},金属锻造,宝石装饰 | — |
+
+### 2.2 饰品类
+
+| 项目 | 约束 | 提示词 |
+|---|---|---|
+| 类型 | 发饰/项链/手镯/戒指 | {饰品类型},90年代首饰 |
+| 材质 | 金属/宝石/丝带/珍珠 | 金属光泽、宝石透明 |
+| 工艺 | 手绘质感、复古风格 | 精细工艺、90年代风格 |
+| 光泽 | 宝石光泽/金属光泽 | 宝石璀璨、金属光泽 |
+| 提示词 | 90年代{饰品},{材质},精细工艺 | — |
+
+### 2.3 生活器物类
+
+| 项目 | 约束 | 提示词 |
+|---|---|---|
+| 类型 | 茶具/书本/乐器/文具 | {器物类型},90年代器物 |
+| 材质 | 金属/木/纸/陶瓷 | 材质质感清晰 |
+| 质感 | 线条流畅、色彩柔和 | 线条流畅、质感清晰 |
+| 风格 | 简约/华丽按场景切换 | 简约精致 / 华丽精致 |
+| 提示词 | 90年代{器物},{材质}质感,线条流畅 | — |
+
+### 2.4 信物/关键道具类
+
+| 项目 | 约束 | 提示词 |
+|---|---|---|
+| 类型 | 信物/令牌/卷轴/药瓶/魔法道具 | {道具类型},90年代道具 |
+| 特殊性 | 需有辨识度、叙事象征意义 | 独特造型、象征意义 |
+| 状态 | 可按剧情需要添加使用感 | 古旧 / 崭新 |
+| 提示词 | 90年代{道具},{材质},{状态},独特造型 | — |
+
+---
+
+## 三、多角度设定图规范
+
+### 视图定义
+
+| 位置 | 视图 | 角度 | 要求 | 提示词 |
+|---|---|---|---|---|
+| 左上 | 正面图 | 正面 0° | 道具完整正面形态 | front view |
+| 右上 | 侧面图 | 侧面 90° | 厚度/轮廓/结构清晰 | side view |
+| 左下 | 背面图 | 背面 180° | 道具背部结构/装饰 | back view |
+| 右下 | 细节特写 | 局部放大 | 材质纹理/工艺细节 | detail closeup |
+
+### 画面规范
+
+| 项目 | 约束 |
+|---|---|
+| 布局 | 同一画面四宫格(2×2),上下左右四视角 |
+| 背景 | 暖调米白 #F8F4E8 |
+| 光线 | 柔和电影光,均匀柔光,无硬阴影 |
+| 比例 | 每格道具占格内主体 70%+ |
+| 投影 | 允许自然地面微投影 |
+| 画面比例 | 建议 1:1 |
+
+---
+
+## 四、材质渲染约束
+
+| 材质 | 渲染要求 | 提示词 |
+|---|---|---|
+| 金属 | 光泽清晰、线条分明 | 金属质感、光泽清晰 |
+| 玉石 | 透明感、温润感 | 玉质通透、温润 |
+| 木质 | 纹理清晰、线条分明 | 木纹清晰、质感自然 |
+| 陶瓷 | 光滑表面、光泽均匀 | 陶瓷光泽、表面光滑 |
+| 布/纸 | 纤维质感、边缘清晰 | 布料纹理、纸质清晰 |
+| 宝石 | 透明感、折射感 | 宝石透明、折射感 |
+
+---
+
+## 五、提示词模板
+```
+90年代复古日系动画风格道具设定图,手绘平涂上色,柔和暖色调,精细流畅线条,电影感光影,
+{道具类型},{材质描述},{工艺/装饰描述},{状态描述},
+纯道具静物展示,道具独立陈列,无人持有,无人佩戴,
+同一画面四宫格(2×2):左上正面图+右上侧面图+左下背面图+右下细节特写,
+暖调米白背景,柔和电影光,均匀柔光,无硬阴影,
+材质纹理超清晰,手绘质感,{材质光泽描述}
+图中不要有任何文字,
+画面中不能出现任何人物、手部、手指、肢体,道具不可处于被握持或佩戴状态
+```
+
+---
+
+## 六、约束规则
+
+### 必守
+
+| 编号 | 规则 |
+|---|---|
+| R1 | 必须指定「暖调米白背景 #F8F4E8」 |
+| R2 | 必须明确道具材质与工艺 |
+| R3 | 道具造型必须符合90年代世界观风格 |
+
+### 严禁
+
+| 编号 | 严禁 |
+|---|---|
+| X1 | 复杂场景背景 |
+| X2 | 道具与人物同画面 |
+| X3 | 出现任何人物形象 |
+| X4 | 道具处于被持有、握持、佩戴、使用中的状态 |
+| X5 | 出现暗示人物存在的元素 |
\ No newline at end of file
diff --git a/data/skills/art_skills/2D_90s_japanese_anime/art_prompt/art_prop_derivative.md b/data/skills/art_skills/2D_90s_japanese_anime/art_prompt/art_prop_derivative.md
new file mode 100644
index 0000000..ac5076f
--- /dev/null
+++ b/data/skills/art_skills/2D_90s_japanese_anime/art_prompt/art_prop_derivative.md
@@ -0,0 +1,117 @@
+# 90年代复古日系动画风格 - 道具衍生状态生成 · 约束手册
+
+---
+
+## 一、衍生原则
+
+1. **造型锚定** — 道具核心造型/轮廓在所有状态中可识别
+2. **状态可读** — 状态差异必须一目了然
+3. **叙事服务** — 每种状态变体服务于特定剧情节点
+4. **渐进退化** — 损伤/老化状态应有合理的物理逻辑
+5. **纯道具独立展示** — 画面中只能出现道具本身,严禁出现任何人物、手部、肢体
+
+---
+
+## 二、状态类型
+
+### 2.1 使用状态
+
+| 状态 | 描述 | 适用道具 | 提示词 |
+|---|---|---|---|
+| 崭新 | 完好无损、光泽如新 | 所有道具 | 崭新、完好无损 |
+| 日常使用 | 微磨损、自然包浆 | 兵器/器物/饰品 | 日常使用痕迹、轻微磨损 |
+| 陈旧 | 明显年代感、色泽暗淡 | 器物/信物/卷轴 | 古旧、年代感 |
+
+### 2.2 损伤状态
+
+| 状态 | 描述 | 适用道具 | 提示词 |
+|---|---|---|---|
+| 微损 | 小裂纹/小缺口/轻微磨损 | 瓷器/玉佩/兵器 | 细微裂纹、轻微缺口 |
+| 破损 | 明显裂缝/断裂/破碎 | 瓷器/饰品/兵器 | 裂缝明显、碎裂 |
+| 残片 | 仅剩部分/碎片 | 瓷器/玉佩/信物 | 残片、碎片 |
+
+### 2.3 特殊状态
+
+| 状态 | 描述 | 适用道具 | 提示词 |
+|---|---|---|---|
+| 染血 | 血迹附着 | 兵器/信物 | 血迹、染血 |
+| 浸水/湿润 | 水渍、湿润反光 | 卷轴/信物/衣物 | 浸水、湿润 |
+| 燃烧/焦损 | 焦黑边缘、火烧痕迹 | 卷轴/信物/木质品 | 边缘焦黑、火烧痕迹 |
+| 发光/激活 | 内在能量、光芒四射 | 信物/法器/玉石 | 微微发光、内蕴光华 |
+| 包裹/封存 | 用布/盒子包裹 | 信物/饰品/秘物 | 包裹、封存 |
+
+---
+
+## 三、状态变体画面规范
+
+### 单状态图
+
+| 项目 | 约束 |
+|---|---|
+| 背景 | 暖调米白 #F8F4E8(与设定图一致) |
+| 光线 | 柔和电影光,均匀照明,无硬阴影 |
+| 角度 | 与原设定图正面图一致 |
+| 比例 | 道具占画面主体 70%+ |
+
+### 状态对比图
+
+| 项目 | 约束 |
+|---|---|
+| 布局 | 同一画面并排展示 2-3 种状态 |
+| 标注 | 每种状态下方标注状态名 |
+| 一致性 | 角度/光线/背景完全一致,仅状态不同 |
+
+---
+
+## 四、材质状态变化规则
+
+| 材质 | 崭新 → 日常 | 日常 → 陈旧 | 损伤表现 |
+|---|---|---|---|
+| 金属 | 亮光泽 → 微包浆 | 包浆 → 锈蚀斑点 | 缺口/卷刃/断裂 |
+| 玉石 | 通透温润 → 微磨损 | 磨损 → 表面微裂 | 裂纹/碎裂/缺角 |
+| 木质 | 新木纹理 → 自然包浆 | 包浆 → 色泽暗沉 | 开裂/断裂/虫蛀 |
+| 瓷器 | 釉面光泽 → 微划痕 | 划痕 → 釉面暗淡 | 裂纹/碎裂/缺口 |
+| 布/纸 | 崭新平整 → 微皱折 | 皱折 → 发黄变脆 | 撕裂/焦损 |
+
+---
+
+## 五、提示词模板
+
+### 单状态变体
+
+```
+基于{道具名}设定图,90年代复古日系动画风格,手绘平涂上色,柔和暖色调,
+{道具类型},{材质描述},
+当前状态:{状态名},{状态视觉描述},
+{材质表面变化描述},
+纯道具静物展示,道具独立陈列,无人持有,无人佩戴,
+同一画面四宫格(2×2):左上正面图(front view)+右上侧面图(side view)+左下背面图(back view)+右下细节特写(detail closeup),
+暖调米白背景,柔和电影光,均匀柔光,无硬阴影,
+材质纹理超清晰,手绘质感,状态细节可辨
+图中不要有任何文字,
+画面中不能出现任何人物、手部、手指、肢体,道具不可处于被握持或佩戴状态
+```
+
+---
+
+## 六、约束规则
+
+### 必守
+
+| 编号 | 规则 |
+|---|---|
+| R1 | 道具核心造型/轮廓在所有状态中可识别 |
+| R2 | 状态变化须符合物理逻辑 |
+| R3 | 必须使用四宫格(2×2)布局 |
+| R4 | 必须指定「暖调米白背景」,柔和电影光 |
+
+### 严禁
+
+| 编号 | 严禁 |
+|---|---|
+| X1 | 状态变化后道具不可识别 |
+| X2 | 违反物理逻辑的损伤 |
+| X3 | 过度血腥/恐怖的损伤描绘 |
+| X4 | 出现任何人物形象 |
+| X5 | 道具处于被持有、握持、佩戴、使用中的状态 |
+| X6 | 出现暗示人物存在的元素 |
\ No newline at end of file
diff --git a/data/skills/art_skills/2D_90s_japanese_anime/art_prompt/art_scene.md b/data/skills/art_skills/2D_90s_japanese_anime/art_prompt/art_scene.md
new file mode 100644
index 0000000..90cc282
--- /dev/null
+++ b/data/skills/art_skills/2D_90s_japanese_anime/art_prompt/art_scene.md
@@ -0,0 +1,152 @@
+# 90年代复古日系动画风格 - 场景图生成 · 约束手册
+
+---
+
+## 一、场景美学原则
+
+1. **空间叙事** — 场景承载情绪与叙事功能,不是纯背景板
+2. **层次纵深** — 所有场景必须具备前/中/后景,杜绝扁平
+3. **质感至上** — 线条/色彩/光影等材质表现必须清晰
+4. **90年代为锚** — 一切画面以90年代复古日系动画为标准,拒绝现代CG/3D渲染;追求手绘线条特征(流畅线条、块面阴影)与电影感光影(柔和暖光、体积光)
+
+---
+
+## 二、季节色调映射
+
+| 季节 | 主色调 | 辅色调 | 提示词 |
+|---|---|---|---|
+| 春 | 粉色+嫩绿 | 浅黄、淡紫 | 春日粉色、樱花盛开 |
+| 夏 | 碧绿+蓝色 | 浅蓝、白色 | 夏日碧绿、蓝天白云 |
+| 秋 | 金黄+橙红 | 棕色、深绿 | 秋日金黄、枫叶变红 |
+| 冬 | 白色+灰色 | 深蓝、浅蓝 | 冬日白色、雪花飘落 |
+
+---
+
+## 三、室内场景
+
+### 空间规范
+
+| 维度 | 约束 | 提示词 |
+|---|---|---|
+| 风格 | 90年代日式房间/西式房间 | {风格}风格 |
+| 材质 | 木质/石材/布料/玻璃为主 | 木质家具、布艺装饰 |
+| 色调 | 低饱和暖色调/柔和冷色调 | 暖色调/冷色调 |
+| 纵深 | 前/中/后景层次 | 前景{元素}、中景{元素}、后景{元素} |
+| 质感 | 线条流畅、色彩柔和 | 线条流畅、色彩柔和 |
+| 光照 | 自然光/灯光,柔和电影光 | 自然光照、柔和电影光 |
+| 线条感 | 轮廓线清晰、块面阴影 | 清晰线条、块面阴影 |
+| 瑕疵感 | 墙面有使用痕迹、家具自然磨损 | 使用痕迹、自然磨损 |
+
+### 室内类型速查
+
+| 类型 | 核心元素 | 氛围词 |
+|---|---|---|
+| 卧室/闺房 | 床/衣柜/梳妆台 | 温馨私密、舒适 |
+| 书房/书斋 | 书架/书桌/椅子 | 宁静、书卷气 |
+| 客厅/正厅 | 沙发/茶几/装饰 | 舒适、温馨 |
+| 走廊/阳台 | 栏杆/植物/装饰 | 通透、开阔 |
+| 厨房/餐厅 | 餐桌/厨具 | 温馨、烟火气 |
+
+---
+
+## 四、室外场景
+
+### 空间规范
+
+| 维度 | 约束 | 提示词 |
+|---|---|---|
+| 类型 | 庭院/山林/街道/广场 | {场景},{季节},{时间} |
+| 天候 | 晴/阴/雨/雪 | 晴天、雨天、雪天 |
+| 植被 | 树/花/草(须符合季节) | 树木、花草 |
+| 建筑 | 90年代建筑/日式建筑 | 90年代建筑/日式建筑 |
+| 空气感 | 必须有空气透视,远处偏灰 | 空气透视、远景模糊 |
+| 光照 | 自然光为唯一光源,柔和电影光 | 自然光照、柔和电影光 |
+| 线条感 | 轮廓线清晰、块面阴影 | 清晰线条、块面阴影 |
+| 瑕疵感 | 墙面有使用痕迹、地面有磨损 | 使用痕迹、磨损痕迹 |
+
+### 室外类型速查
+
+| 类型 | 核心元素 | 氛围词 |
+|---|---|---|
+| 庭院花园 | 植物/小桥/水池 | 宁静、优美 |
+| 山林/公园 | 树木/山石/道路 | 自然、开阔 |
+| 街道/市场 | 建筑/摊位/行人 | 热闹、生活气息 |
+| 河边/湖边 | 水面/桥梁/树木 | 宁静、优美 |
+| 屋顶/天台 | 栏杆/天空/远景 | 开阔、自由 |
+
+---
+
+## 五、四视图设定图规范
+
+### 视图定义
+
+> 摄像机固定于场景中心点,分别朝前/后/左/右四个方向拍摄,形成 360° 环视。
+
+| 位置 | 视图 | 视角方向 | 要求 | 提示词 |
+|---|---|---|---|---|
+| 左上 | 前视图 | 从中心点向前方平视(0°) | 展示场景正面主体结构与纵深层次 | front view、eye level |
+| 右上 | 右视图 | 从中心点向右方平视(90°) | 展示场景右侧空间延伸与侧面结构 | right side view、eye level |
+| 左下 | 后视图 | 从中心点向后方平视(180°) | 展示场景背面结构与空间纵深 | back view、eye level |
+| 右下 | 左视图 | 从中心点向左方平视(270°) | 展示场景左侧空间延伸与侧面结构 | left side view、eye level |
+
+### 画面规范
+
+| 项目 | 约束 |
+|---|---|
+| 布局 | 同一画面 2×2 网格排列 |
+| 人物 | **严禁出现任何人物、人影、人体轮廓** |
+| 视点 | 四视图均从同一中心点出发,视线高度一致 |
+| 一致性 | 四视图的建筑结构/材质/色调/光线完全一致 |
+| 光线 | 四视图光源方向统一,保持光影逻辑一致 |
+| 画面比例 | 建议 1:1(2×2 网格) |
+
+---
+
+## 六、提示词模板
+```
+90年代复古日系动画风格场景四视图设定图,
+90s anime style,手绘平涂上色,柔和暖色调,精细流畅线条,电影感光影,
+scene design sheet,environment concept art,no people,no characters,no human figures,
+90年代复古风格,怀旧治愈氛围,
+{室内/室外},{场景类型},{季节+时间},
+前景:{元素},中景:{元素},后景:{元素},
+{色调描述},{天候/氛围元素},
+{材质描述},空气透视,线条细节超清晰,
+线条流畅、块面阴影、使用痕迹,
+柔和电影光、背景光晕、自然光照,
+同一画面2×2网格排列:从场景中心点环视,前视图+右视图+后视图+左视图,
+四视图均从同一中心点平视拍摄,建筑结构一致,材质色调一致,光影逻辑一致,
+画面中无任何人物
+图中不要有任何文字
+```
+
+---
+
+## 七、约束规则
+
+### 必守
+
+| 编号 | 规则 |
+|---|---|
+| R1 | 场景必须有「前中后景层次」 |
+| R2 | 室外必须包含「空气透视」 |
+| R3 | 场景图必须为「四视图设定图」 |
+| R4 | 四视图的建筑结构/材质/色调/光线必须完全一致 |
+| R5 | 场景图中**严禁出现任何人物** |
+| R6 | 必须包含90年代关键词(90s anime style / hand-drawn / warm tone) |
+| R7 | 必须包含线条特征(流畅线条、块面阴影 至少一项) |
+| R8 | 材质必须带有使用痕迹,禁止全新无瑕的"CG 感" |
+
+### 严禁
+
+| 编号 | 严禁 |
+|---|---|
+| X1 | 背景纯白/纯黑/无场景 |
+| X2 | 极端天候(暴风雨/雷电/暴雪,除非剧情需要) |
+| X3 | 场景无纵深/无层次 |
+| X4 | 植被/天候与季节矛盾 |
+| X5 | 出现任何人物、人影、人体剪影 |
+| X6 | 四视图之间建筑结构/材质/色调不一致 |
+| X7 | 3D 渲染/CG 动画/现代风格质感 |
+| X8 | 材质过于干净完美、无任何使用痕迹 |
+| X9 | 光照过于均匀平坦、无柔和电影光 |
diff --git a/data/skills/art_skills/2D_90s_japanese_anime/art_prompt/art_scene_derivative.md b/data/skills/art_skills/2D_90s_japanese_anime/art_prompt/art_scene_derivative.md
new file mode 100644
index 0000000..e884342
--- /dev/null
+++ b/data/skills/art_skills/2D_90s_japanese_anime/art_prompt/art_scene_derivative.md
@@ -0,0 +1,159 @@
+# 90年代复古日系动画风格 - 场景衍生资产生成 · 约束手册
+
+---
+
+## 一、衍生原则
+
+1. **空间一致** — 建筑结构/布局/材质在所有变体中保持一致
+2. **景别驱动** — 同一场景通过不同景别展示不同叙事功能
+3. **时段切换** — 同一空间在不同时间段呈现不同光影氛围
+4. **天候变化** — 同一空间在不同天气下呈现不同情绪
+5. **90年代为锚** — 所有变体必须保持90年代复古风格,拒绝现代CG/3D渲染
+
+---
+
+## 二、景别变体
+
+### 景别定义
+
+| 景别 | 范围 | 叙事功能 | 提示词 |
+|---|---|---|---|
+| 大全景 | 场景全貌 + 周围环境 | 建立空间感、定位 | extreme wide shot |
+| 全景 | 场景完整呈现 | 展示空间结构 | wide shot |
+| 中景 | 场景局部区域 | 聚焦功能区 | medium shot |
+| 近景 | 场景细部 | 材质/氛围道具特写 | close shot |
+| 特写 | 极局部细节 | 材质纹理/关键道具 | extreme closeup |
+
+### 景别衍生规范
+
+| 从基准图衍生 | 保持不变 | 允许变化 |
+|---|---|---|
+| 大全景 → 全景 | 建筑外观、整体布局 | 视角收窄、前景增加 |
+| 全景 → 中景 | 材质、色调、光线 | 裁切聚焦、景深变化 |
+| 中景 → 近景 | 材质、色调 | 景深浅、背景虚化 |
+| 近景 → 特写 | 材质纹理 | 极浅景深、微距感 |
+
+---
+
+## 三、时段变体
+
+### 时段定义
+
+| 时段 | 视觉特征 | 提示词 |
+|---|---|---|
+| 清晨 | 薄雾柔光、色调偏冷 | 晨光、清晨薄雾 |
+| 正午 | 明亮、阴影短、色彩鲜明 | 正午阳光、光线明亮 |
+| 黄昏 | 金色色调、长影、天空渐变 | 黄昏、golden hour |
+| 夜间(月光) | 冷蓝色调、幽静清冷 | 月光、月夜 |
+| 夜间(灯火) | 暖黄点缀、明暗对比 | 夜晚、灯火 |
+
+### 时段衍生规范
+
+| 从基准时段衍生 | 保持不变 | 变化项 |
+|---|---|---|
+| 日间 → 黄昏 | 建筑/布局/材质 | 天空色调暖化、影子拉长 |
+| 日间 → 夜间 | 建筑/布局/材质 | 整体变暗、增加灯火/月色 |
+| 室内日间 → 室内夜间 | 空间结构、家具 | 整体色调暖化、增加光源 |
+
+---
+
+## 四、天候变体
+
+### 天候定义
+
+| 天候 | 视觉特征 | 提示词 |
+|---|---|---|
+| 晴天 | 明亮、阴影清晰 | 晴天、阳光明媚 |
+| 阴天 | 光线均匀、无硬影 | 阴天、柔和光线 |
+| 薄雾 | 能见度降低、空气朦胧 | 薄雾、雾气缭绕 |
+| 细雨 | 水珠、湿润反光 | 细雨、雨丝 |
+| 飞雪 | 白色覆盖、雪花飘落 | 飞雪、雪花 |
+
+### 天候衍生规范
+
+| 从基准天候衍生 | 保持不变 | 变化项 |
+|---|---|---|
+| 晴 → 薄雾 | 建筑/布局 | 增加雾气层、远景模糊 |
+| 晴 → 细雨 | 建筑/布局 | 增加雨丝、地面反光 |
+| 晴 → 飞雪 | 建筑/布局 | 增加积雪、雪花 |
+| 植被需随天候逻辑适配 | — | 雨中植物湿润、雪中植物挂霜 |
+
+---
+
+## 五、四视图设定图规范
+
+### 视图定义
+
+> 摄像机固定于场景中心点,分别朝前/后/左/右四个方向拍摄。
+
+| 位置 | 视图 | 视角方向 | 要求 | 提示词 |
+|---|---|---|---|---|
+| 左上 | 前视图 | 从中心点向前方平视(0°) | 展示场景正面主体结构与纵深层次 | front view、eye level |
+| 右上 | 右视图 | 从中心点向右方平视(90°) | 展示场景右侧空间延伸与侧面结构 | right side view、eye level |
+| 左下 | 后视图 | 从中心点向后方平视(180°) | 展示场景背面结构与空间纵深 | back view、eye level |
+| 右下 | 左视图 | 从中心点向左方平视(270°) | 展示场景左侧空间延伸与侧面结构 | left side view、eye level |
+
+### 画面规范
+
+| 项目 | 约束 |
+|---|---|
+| 布局 | 同一画面四宫格(2×2) |
+| 人物 | **严禁出现任何人物、人影、人体轮廓** |
+| 视点 | 四视图均从同一中心点出发,视线高度一致 |
+| 一致性 | 四视图的建筑结构/材质/色调/光线完全一致 |
+| 光线 | 四视图光源方向统一,保持光影逻辑一致 |
+| 画面比例 | 建议 1:1(2×2 网格) |
+
+---
+
+## 六、提示词模板
+```
+90年代复古日系动画风格场景衍生四视图设定图,基于{场景名}概念图,
+90s anime style,手绘平涂上色,柔和暖色调,精细流畅线条,电影感光影,
+scene derivative design sheet,environment concept art,no people,no characters,no human figures,
+保持场景空间结构一致,
+{景别视角(如有)},{时段描述(如有)},{天候描述(如有)},
+{前景},{中景},{后景},
+{色调描述},{景深描述(如有)},{天空色调变化(如有)},{氛围调整(如有)},
+{天候视觉特征(如有)},{材质表面变化(如有)},{植被适配描述(如有)},
+线条流畅、块面阴影、使用痕迹,
+柔和电影光、背景光晕、自然光照,
+同一画面四宫格(2×2):从场景中心点环视,前视图+右视图+后视图+左视图,
+四视图均从同一中心点平视拍摄,建筑结构一致,材质色调一致,光影逻辑一致,
+画面中无任何人物
+图中不要有任何文字
+```
+
+> **使用说明**:根据用户提供的信息自行判断需要应用的变化维度(景别/时段/天候),未提及的维度对应字段留空省略即可。无需为每种变体单独生成模板。
+
+---
+
+## 七、约束规则
+
+### 必守
+
+| 编号 | 规则 |
+|---|---|
+| R1 | 场景空间结构在所有变体中保持一致 |
+| R2 | 时段变体必须调整天空色调与氛围 |
+| R3 | 天候变体必须适配植被/材质表面 |
+| R4 | 必须为「四视图设定图」 |
+| R5 | 四视图的建筑结构/材质/色调/光线必须完全一致 |
+| R6 | 场景图中**严禁出现任何人物** |
+| R7 | 根据用户提供的信息自行判断变化维度 |
+| R8 | 必须包含90年代关键词(90s anime style / hand-drawn / warm tone) |
+| R9 | 必须包含线条特征(流畅线条、块面阴影 至少一项) |
+| R10 | 材质必须带有使用痕迹,禁止全新无瑕的"CG 感" |
+
+### 严禁
+
+| 编号 | 严禁 |
+|---|---|
+| X1 | 变体间建筑结构/布局不一致 |
+| X2 | 天候与季节矛盾 |
+| X3 | 变体间材质/风格突变 |
+| X4 | 出现任何人物、人影、人体剪影 |
+| X5 | 四视图之间建筑结构/材质/色调不一致 |
+| X6 | 3D 渲染/CG 动画/现代风格质感 |
+| X7 | 材质过于干净完美、无任何使用痕迹 |
+| X8 | 光照过于均匀平坦、无柔和电影光 |
\ No newline at end of file
diff --git a/data/skills/art_skills/2D_90s_japanese_anime/art_prompt/art_storyboard_video.md b/data/skills/art_skills/2D_90s_japanese_anime/art_prompt/art_storyboard_video.md
new file mode 100644
index 0000000..8c4f062
--- /dev/null
+++ b/data/skills/art_skills/2D_90s_japanese_anime/art_prompt/art_storyboard_video.md
@@ -0,0 +1,11 @@
+# 视频提示词 · 视觉风格约束
+
+生成视频提示词时,必须注入以下视觉风格标签:
+
+| 模式 | 风格标签 |
+|------|----------|
+| **通用多参模式(英文)** | `90s Japanese anime, hand-drawn cel animation, soft warm tones, cinematic, clean line art, nostalgic aesthetic` |
+| **通用首尾帧模式(英文)** | `90s Japanese anime, hand-drawn cel animation, soft warm tones, cinematic, clean line art, nostalgic aesthetic, shallow depth of field` |
+| **Seedance 2.0(中文)** | `90年代日式动画,手绘赛璐璐,柔和暖调,电影风格,清晰线条,怀旧质感` |
+
+
diff --git a/data/skills/art_skills/2D_90s_japanese_anime/driector_skills/director_planning_style.md b/data/skills/art_skills/2D_90s_japanese_anime/driector_skills/director_planning_style.md
new file mode 100644
index 0000000..6e885b6
--- /dev/null
+++ b/data/skills/art_skills/2D_90s_japanese_anime/driector_skills/director_planning_style.md
@@ -0,0 +1,88 @@
+---
+name: director_planning_style
+description: 日式动画约束 — 定义90年代日式动画在色调体系、光影方案、质感方向、场景空间元素、乐器选择与环境音上的全局约束。适用于任何叙事类型。
+metaData: director_skills
+---
+
+# 日式动画约束 · 90年代日式动画 · 技法参考
+
+---
+
+## 一、色调体系与画面基调
+
+- **色调基底** — 全片以暖黄(C1)、樱花粉(C3)、天空蓝(C6)为基底色,整体色温偏暖(4800-5200K),饱和度中低(50-70%),呈现90年代手绘动画的温暖怀旧感。全片保持柔和暖色调基底,局部点缀冷色(浅蓝 C6、淡紫 C7)增加层次
+- **冷暖叙事对比** — 冷色(浅蓝 C6、淡紫 C7)作为叙事转折的视觉信号,用于夜晚或情绪转折段落局部点缀。冷暖切换应与故事弧线同步,而非随意混用
+- **色盘先行原则** — 段落规划需先绑定情绪场景(日常/心动/离别/重逢等),再确定主色+辅色与光影方案,避免"剧情对了但情绪不对色"
+- **禁用色域** — 高饱和荧光色、霓虹色、现代CG渲染色彩体系均与本风格不兼容
+
+---
+
+## 二、光影方案体系
+
+- **光影即叙事** — 6 套光影方案对应不同情绪段落,导演规划阶段应在段落层面确定光影基调方向,而非逐镜指定
+- **光源角度** — 默认 30-45°斜侧光,模拟自然光效果
+
+| 情绪段落 | 光影方向 | 色调倾向 | 适用阶段 |
+|---|---|---|---|
+| 日常温馨 | A·柔和漫射 | 暖黄底 + 均匀柔和光 | 全片 |
+| 心动瞬间 | B·暖调侧光 | 樱花粉 + 暖橙局部 | 升温段 |
+| 办公室/学校 | C·顶光+环境光 | 中性暖 + 柔和冷白 | 工作/学习段 |
+| 黄昏浪漫 | D·逆光暖调 | 琥珀暖主导 + 冷蓝背景 | 甜蜜段 |
+| 夜晚月色 | E·月光冷调 | 淡蓝主调 + 暖色局部点缀 | 夜晚段 |
+| 回忆/闪回 | F·柔焦暖光 | 暖黄主调 + 雾化效果 | 回忆段 |
+
+- **冷暖光分配** — 暖色调贯穿全片可用,根据场景需要灵活调整;冷色调(淡蓝主调)仅在夜晚或情绪转折后使用
+- **氛围方向映射** — 每场戏的氛围方向应能映射到上述光影方案(A-F)的某一方向,确保视觉一致性
+
+---
+
+## 三、质感方向
+
+- **平涂纪实感** — 90年代手绘动画的核心:线条清晰流畅、上色均匀、光影层次分明
+- **清晰线稿 + 细腻上色** — 这是画面质感的锚点。不是模糊晕染,不是现代CG渲染
+- **平涂不等于简陋** — 本风格强调90年代手绘动画的质感表达(清晰线稿、平涂上色、光影层次),通过构图与情绪设计放大感染力,而非依赖复杂特效
+- **手绘不等于粗糙** — 90年代日式动画强调手绘质感的影像表达(自然光位、柔和色彩、细腻表情),通过镜头与情绪设计放大感染力,而非依赖奇观特效
+
+---
+
+## 四、日式场景空间元素
+
+90年代日式动画特有的场景元素及其视觉叙事功能:
+
+- **窗框/门框/走廊** — 天然的框架式构图道具,制造"看不透"的层次感与空间纵深
+- **教室/屋顶/街道** — 青春感的天然载体,景即情:教室窗边阳光 = 青春、黄昏街道长影 = 怀旧、居家暖光餐桌 = 家庭温暖
+- **樱花/落叶/雨幕** — 留白构图的天然载体,景即情:满树樱花 = 心动、落叶纷飞 = 离愁、雨中独行 = 孤寂
+- **夕阳/月色/路灯** — 日式动画的光源载体,夕阳 = 暖/浪漫(方案D)、月色 = 冷/孤寂(方案E)、路灯 = 夜晚日常
+- **段落间用场景空镜过渡** — 本风格有丰富的场景资产(不同时段/天候/天气变体),段落衔接建议用场景空镜做情绪缓冲,不要硬切
+- **转折点用视觉而非台词** — 优先使用画面手段(光影突变、景别跳切、空镜隐喻)而非依赖对白解释
+
+---
+
+## 五、日式动画乐器与环境音
+
+90年代日式动画世界观下的声音元素约束:
+
+### 乐器选择
+
+- **钢琴** — 日常/温馨/回忆段落的核心乐器,最能表现90年代动画的质感
+- **吉他** — 轻松/浪漫/街头段落,扫弦的温柔感适合日常氛围
+- **弦乐铺底** — 情感升华/离别段落,拉弦的细腻感适合情绪过渡
+- **八音盒/风铃** — 回忆/梦幻段落,清脆音色适合怀旧氛围
+
+### 乐器组合策略
+
+| 情绪阶段 | 乐器组合 |
+|---|---|
+| 平稳/开场/收尾 | 八音盒独奏 或 风铃独奏 |
+| 日常温馨 | 钢琴 + 轻吉他 |
+| 情绪升华/浪漫 | 弦乐 + 钢琴 |
+| 回忆/梦幻 | 八音盒 + 钢琴 |
+
+### 日式环境音
+
+- **典型环境音层次** — 蝉鸣虫唱 / 电车轨道声 / 风吹过树叶 / 雨滴檐廊 / 市井人声 / 鸟鸣 / 风声
+- **每场戏标注 1-2 个核心环境音**,帮助后续音效设计。环境音层次越丰富,日式场景越有沉浸感
+- **留白比配乐更重要** — 关键情感瞬间(对视、转身、离别)优先考虑去掉配乐,只留环境音(风声、蝉鸣、电车声),让观众自己感受情绪
+- **避免满配** — 全片配乐覆盖率建议不超过 50%。留白段落的"无声"与配乐段落形成呼吸感,突出真实情感
+
+---
diff --git a/data/skills/art_skills/2D_90s_japanese_anime/driector_skills/director_storyboard.md b/data/skills/art_skills/2D_90s_japanese_anime/driector_skills/director_storyboard.md
new file mode 100644
index 0000000..36d5d63
--- /dev/null
+++ b/data/skills/art_skills/2D_90s_japanese_anime/driector_skills/director_storyboard.md
@@ -0,0 +1,189 @@
+---
+name: director_storyboard
+description: 导演分镜提示词技法 · 90年代日式动画质感
+metaData: director_skills
+---
+
+# 分镜提示词 · 90年代日式动画 · 风格专属技法
+
+---
+
+## 适用范围
+
+本 Skill 专用于**90年代日式动画质感**风格的分镜提示词生成。
+
+---
+
+## 情绪 → 面容/眼神词映射
+
+| 情绪输入 | 面容词 | 眼神词 | 微表情补充 |
+|----------|--------|--------|-----------|
+| 心动 / 欣喜 | 嘴角微扬,脸颊微红 | 眼神明亮,目光温柔 | 眼睛弯月形,表情含蓄 |
+| 悲伤 / 失落 | 神情低落,眼眶微红 | 眼神黯淡,目光游离 | 眉心轻蹙,表情内敛 |
+| 惊讶 / 震惊 | 神情微愣,眼睛放大 | 眼神惊讶,目光集中 | 眉毛上扬,表情生动 |
+| 温柔 / 深情 | 神情柔和,眉眼温润 | 眼神专注,目光深情 | 嘴角轻扬,表情克制温暖 |
+| 坚定 / 决绝 | 神情严肃,眼神坚定 | 目光清澈,眼神专注 | 表情坚定,气质清亮 |
+| 害羞 / 羞涩 | 脸颊泛红,眼神躲闪 | 目光低垂,不敢直视 | 手指轻触脸颊,表情自然 |
+| 温暖 / 感动 | 表情柔和,眼角带笑 | 眼神温暖,目光柔和 | 嘴角上扬,表情真诚 |
+| 孤独 / 怀念 | 神情安静,眼神悠远 | 目光放空,若有所思 | 表情平静,气质安静 |
+| 快乐 / 雀跃 | 笑容灿烂,眼睛弯月 | 眼神明亮,表情生动 | 双手张开,动作轻快 |
+| 紧张 / 不安 | 表情略显僵硬,眉头微皱 | 眼神游离,目光不确定 | 手指轻捏衣角,动作自然 |
+
+---
+
+## 光影氛围词库(90年代日式动画)
+
+### 时间段光线
+
+| 时间段 | 主光词 | 色调词 | 气氛词 |
+|--------|--------|--------|---------|
+| 清晨 | 柔和晨光,散射光线 | 暖黄调 + 淡蓝点缀 | 清新感,光线透过树叶 |
+| 午后 | 柔和斜侧光,漫射光线 | 暖调为主 | 光影斑驳,温暖感 |
+| 黄昏/日落 | 逆光暖调,橙色余晖 | 琥珀暖 + 粉色点缀 | 长影拉伸,怀旧感 |
+| 夜间 | 月光冷调,局部暖光 | 淡蓝主调 + 暖色点缀 | 静谧感,光影层次 |
+| 雨天 | 漫射冷光,均匀柔和 | 灰蓝调 + 暖色局部 | 湿润感,清新感 |
+| 回忆/闪回 | 柔焦暖光,雾化效果 | 暖黄为主,轻微褪色 | 怀旧感,模糊边缘 |
+
+### 情绪光影
+
+| 情绪基调 | 光线类型 | 补充约束 |
+|----------|----------|---------|
+| 心动/温情 | 柔和侧光,暖调漫射 | 浅景深,背景轻微虚化 |
+| 悲伤/失落 | 冷调侧光,低调打光 | 面部局部暗部留存 |
+| 怀旧/回忆 | 柔焦暖光,雾化效果 | 边缘轻微模糊,整体柔和 |
+| 浪漫/甜蜜 | 逆光暖调,轮廓光 | 暖色光晕,背景轻微过曝 |
+| 日常/温馨 | 均匀漫射光,中性暖调 | 光线柔和,无明显阴影 |
+| 夜晚/静谧 | 月光冷调,局部暖光 | 明暗对比,层次清晰 |
+
+---
+
+## 场景质感约束词(按场景类型)
+
+| 场景类型 | 必加约束词 |
+|----------|-----------|
+| 日式学校 | 木质地板纹理,黑板粉笔字,窗外绿树,教室窗户格子 |
+| 日式住宅 | 榻榻米纹理,拉门木质边框,暖色灯光,和室布局 |
+| 街道/广场 | 石板路面,电线杆,便利店招牌,自行车停放 |
+| 咖啡馆/餐厅 | 木质桌椅,暖色吊灯,窗外街景,咖啡杯细节 |
+| 公园/绿地 | 草地纹理,树木阴影,长椅,远处建筑 |
+| 电车/车厢 | 座椅布料,车窗反光,窗外风景,拉手细节 |
+| 卧室/私密空间 | 床铺褶皱,台灯暖光,书桌文具,生活气息 |
+| 神社/寺庙 | 鸟居木柱,石板路,枫叶/樱花,香炉烟雾 |
+
+---
+
+## 固定风格锚定词(所有输出必须包含)
+
+**90年代动画锚定(必选):**
+
+90年代日式动画风格,手绘质感,平涂上色,清晰流畅线条,柔和暖色调
+
+**线条质感(所有输出必选):**
+
+精细流畅线条,轮廓线清晰,线条均匀一致,无断线无粗糙边缘
+
+**上色质感(含人物镜头时必选):**
+
+平涂上色,色彩均匀,无明显渐变,色彩饱和适中
+
+**光影层次(含光影场景时必选):**
+
+电影感光影层次,明暗对比清晰,光效柔和自然
+
+**氛围锚定(必选):**
+
+怀旧治愈氛围,日式动画美学,温馨情感表达
+
+**画质锁定词(所有输出必须包含,置于风格收尾之后):**
+
+模式A(中文)——默认:
+高清画质,线条清晰,上色均匀,色彩柔和,画面无杂色无噪点
+
+模式A(中文)——画内文字场景(画面描述中含招牌/标识等道具文字时):
+高清画质,线条清晰,上色均匀,色彩柔和,画面无杂色无噪点,招牌/标识等道具文字清晰可读
+
+模式B(英文)——默认:
+high-quality 90s anime style, clear line art, even flat coloring, soft warm tones, no noise, no grain, no digital artifacts
+
+模式B(英文)——画内文字场景:
+high-quality 90s anime style, clear line art, even flat coloring, soft warm tones, no noise, no grain, no digital artifacts, legible text on signs and props
+
+**负向词模板(模式B 必须包含,置于提示词末尾):**
+
+> ⚠️ Seedream(模式A)**不支持负向提示词**,负向词仅适用于模式B。模式A 通过正向词中的质感锚定和画质锁定来保证画面质量。
+
+模式B(英文):
+no modern anime style, no digital 3D rendering, no CG animation, no cel-shading, no heavy shading, no gradient fills, no plastic look, no oversaturated colors, no neon colors, no cyberpunk, no sci-fi elements, no futuristic design
+
+---
+
+## 美学禁止项(生成时严格规避)
+
+以下词汇/风格不得出现于输出提示词中:
+
+- ❌ 现代日系动画风格(如新海诚后期、MAPPA风格)
+- ❌ 3D渲染/CG动画/数字绘画相关词
+- ❌ 高饱和荧光色/霓虹色系
+- ❌ 现代服饰/现代建筑元素
+- ❌ 重阴影/过度对比/暗调风格
+- ❌ 卡通比例、大眼睛、Q版等变形描述
+- ❌ 赛博朋克/蒸汽朋克/架空西幻元素
+- ❌ 画外叠加文字(字幕、水印、标题卡、旁白叠字等 UI 层文字,画面必须为纯视觉画面)
+
+> 💡 **例外**:故事世界内的道具文字(招牌、路牌、标识、书籍等场景中自然存在的文字)**不属于禁止范围**。当分镜画面描述中包含此类内容时,应如实描写其存在并要求文字清晰。
+
+---
+
+## 完整生成示例
+
+> 以下为同一输入分别使用模式A和模式B的对照展示,实际使用时**仅输出其中一种**。
+
+### 输入(分镜表行数据)
+
+| 序号 | 画面描述 | 场景 | 关联资产名称 | 时长 | 景别 | 运镜 | 角色动作 | 情绪 | 光影氛围 |
+|------|---------|------|-------------|------|------|------|---------|------|----------|
+| 1 | 浅草站台上,夕阳余晖洒在女孩身上 | 车站 | 浅草站 | 5s | 中景 | 缓推 | 手提书包,侧身微笑望向远方 | 期待 / 温暖 | 黄昏逆光暖调 |
+
+### 示例输出A(模式A · Seedream)
+
+[Prompt]
+90年代日式动画风格,手绘质感,平涂上色,清晰流畅线条,柔和暖色调,中景构图,人物半身入镜,精细流畅线条,轮廓线清晰,线条均匀一致,无断线无粗糙边缘,平涂上色,色彩均匀,无明显渐变,色彩饱和适中,女孩立于浅草站台上,手提书包,侧身微笑望向远方,眼神期待又温暖,黄昏逆光暖调,长影拉伸,怀旧氛围,木质站台纹理清晰,电线杆在背景中,电影感光影层次,明暗对比清晰,光效柔和自然,怀旧治愈氛围,日式动画美学,温馨情感表达,高清画质,线条清晰,上色均匀,色彩柔和,画面无杂色无噪点。
+Based on the reference image of 女孩, maintain consistent: face features, hairstyle, costume details. Generate a new scene: standing on a train station platform at sunset, holding a school bag, smiling at the distance. Keep character appearance identical to reference.
+
+### 示例输出B(模式B · Nanobanana)
+
+```xml
+
+You are a 90s anime storyboard artist.
+Maintain strict visual continuity across all shots.
+
+
+Image [1]: 女孩 — black long hair in twin tails, gentle eyes, school uniform, slim body shape
+
+
+- Same wardrobe, hairstyle, face features across ALL shots
+- Same environment, lighting style, color grade
+- Only framing, angle, action, expression may change
+- Do NOT introduce new characters not in reference images
+
+
+Medium shot, character standing on a train station platform at sunset, holding a school bag with one hand, smiling gently at the distance, eyes filled with expectation and warmth, warm sunset backlight, long shadows, nostalgic atmosphere, wooden platform texture visible, electric poles in background, cinematic lighting layers, clear contrast between light and dark, soft natural light effects, healing anime aesthetic, high-quality 90s anime style, clear line art, even flat coloring, soft warm tones, no noise, no grain, no digital artifacts.
+
+
+no modern anime style, no digital 3D rendering, no CG animation, no cel-shading, no heavy shading, no gradient fills, no plastic look, no oversaturated colors, no neon colors, no cyberpunk, no sci-fi elements, no futuristic design
+
+```
+
+## 快速参考卡
+
+### 情绪 → 画面词速查
+
+| 情绪 | 面容关键词 | 光线匹配 |
+|------|-----------|---------|
+| 心动 | 脸颊微红,眼睛弯月 | 柔和侧光暖调 |
+| 悲伤 | 神情低落,眼眶微红 | 冷调侧光低调 |
+| 温柔 | 神情柔和,眉眼温润 | 均匀漫射暖光 |
+| 怀旧 | 表情平静,目光悠远 | 柔焦暖光雾化 |
+| 感动 | 眼角带笑,表情真诚 | 逆光暖调光晕 |
+| 孤独 | 神情安静,眼神放空 | 冷调侧光暗部 |
+| 快乐 | 笑容灿烂,眼睛明亮 | 均匀漫射暖光 |
\ No newline at end of file
diff --git a/data/skills/art_skills/2D_90s_japanese_anime/driector_skills/director_storyboard_table_style.md b/data/skills/art_skills/2D_90s_japanese_anime/driector_skills/director_storyboard_table_style.md
new file mode 100644
index 0000000..4848149
--- /dev/null
+++ b/data/skills/art_skills/2D_90s_japanese_anime/driector_skills/director_storyboard_table_style.md
@@ -0,0 +1,47 @@
+---
+name: director_storyboard_table_style
+description: 分镜表日式动画约束 — 定义90年代日式动画在分镜表中的光影氛围规范、光源角度、动作节奏、环境动态、运镜禁忌与转场禁忌。适用于任何叙事类型。
+metaData: director_skills
+---
+
+# 分镜表日式动画约束 · 90年代日式动画 · 技法参考
+
+---
+
+## 一、分镜表定位
+
+分镜表是导演将剧本转化为镜头语言的核心工具。以下仅提供90年代日式动画风格在分镜表层面的约束规范。
+
+---
+
+## 二、光影与氛围
+
+- **同场戏光影统一** — 一场戏内不应出现两种以上光影方案,除非有明确的叙事转折(如关台灯→月光冷辉)
+- **情绪色盘绑定** — 每场戏至少绑定 1 个情绪场景(如相遇心动/日常温馨/离别感伤),并在镜头组内保持主色+辅色连续性
+- **光源角度规范** — 默认 30-45°斜侧光,模拟自然光效果。描述光影时须区分正给/侧给的角度差异
+- **冷暖色调与叙事阶段匹配** — 前半段(日常/工作/学习)保持暖色调,冷色调(冷蓝+暖色对比)在夜晚或情绪转折后使用
+- **光影转场是高级手段** — 从自然光(A)渐变到室内暖光(B)= 日转夜的时间流逝。在分镜表中标注光影变化点
+
+---
+
+## 三、环境动态
+
+- **环境动态增加画面呼吸感** — 树叶飘动、云层流动、电车驶过、雨滴落下、烛光摇曳。每 3-4 个镜头至少安排一个有环境动态的镜头,避免画面"死"掉
+- **日式环境元素优先** — 环境动态应选用日式动画世界观内的元素:樱花飘落、树叶飘动、云层流动、电车驶过、雨滴落下,禁止出现与90年代日式动画风格冲突的元素
+
+---
+
+## 四、动画动作节奏
+
+- **动画动作要自然** — 所有人物动作默认自然节奏。起身、转身、抬手都应标注"自然"或"轻缓"
+- **表情细节** — 90年代日式动画的微表情是重要的情感表达手段,可在画面描述中加入细微的表情变化(微笑、眼神闪动、轻微低头),增加画面的"活"感
+- **含蓄内敛** — 日式动画人物的举止应含蓄内敛,情感表达靠细节而非夸张动作
+
+---
+
+## 五、运镜禁忌
+
+- **禁用快速运镜** — 甩镜、急推、手持晃动与90年代日式动画的气质冲突(除非是转场或强调)
+- **禁用花式转场** — 划屏、旋转、百叶窗等与本风格不兼容
+
+---
diff --git a/data/skills/art_skills/2D_90s_japanese_anime/images/1.png b/data/skills/art_skills/2D_90s_japanese_anime/images/1.png
new file mode 100644
index 0000000..cb66151
Binary files /dev/null and b/data/skills/art_skills/2D_90s_japanese_anime/images/1.png differ
diff --git a/data/skills/art_skills/2D_90s_japanese_anime/images/场景原始.png b/data/skills/art_skills/2D_90s_japanese_anime/images/场景原始.png
new file mode 100644
index 0000000..8667618
Binary files /dev/null and b/data/skills/art_skills/2D_90s_japanese_anime/images/场景原始.png differ
diff --git a/data/skills/art_skills/2D_90s_japanese_anime/images/场景衍生.png b/data/skills/art_skills/2D_90s_japanese_anime/images/场景衍生.png
new file mode 100644
index 0000000..9880073
Binary files /dev/null and b/data/skills/art_skills/2D_90s_japanese_anime/images/场景衍生.png differ
diff --git a/data/skills/art_skills/2D_90s_japanese_anime/images/女生原始.png b/data/skills/art_skills/2D_90s_japanese_anime/images/女生原始.png
new file mode 100644
index 0000000..491d52c
Binary files /dev/null and b/data/skills/art_skills/2D_90s_japanese_anime/images/女生原始.png differ
diff --git a/data/skills/art_skills/2D_90s_japanese_anime/images/女生衍生.png b/data/skills/art_skills/2D_90s_japanese_anime/images/女生衍生.png
new file mode 100644
index 0000000..b4dae97
Binary files /dev/null and b/data/skills/art_skills/2D_90s_japanese_anime/images/女生衍生.png differ
diff --git a/data/skills/art_skills/2D_90s_japanese_anime/prefix.md b/data/skills/art_skills/2D_90s_japanese_anime/prefix.md
new file mode 100644
index 0000000..48c2f86
--- /dev/null
+++ b/data/skills/art_skills/2D_90s_japanese_anime/prefix.md
@@ -0,0 +1,117 @@
+# 全局美学基础 · 90年代日式动画
+
+---
+严格遵循下方风格约束与全局规则,依据提示词模板格式生成提示词。仅输出提示词本身,不附加任何解释、说明或额外文本。
+## 一、风格基因
+
+| 维度 | 定义 |
+|---|---|
+| **一级风格** | 90年代日式动画(90s Anime Aesthetic) |
+| **二级风格** | 手绘平涂 · 电影感光影层次 |
+| **情感基调** | 怀旧治愈 · 温柔细腻 |
+| **质感锚词** | 清晰流畅线条、平涂上色、柔和暖调 |
+
+---
+
+## 二、全局色彩盘(风格基线,不是硬锁)
+
+> 目标:统一审美而非限制创作。除「硬约束色」外,其余颜色默认优先使用,可在合理范围内偏移。
+
+### 色彩使用层级
+
+| 层级 | 约束强度 | 说明 |
+|---|---|---|
+| L1 硬约束 | 高 | 仅锁定角色识别核心:肤色、发色、主服底色的审美方向 |
+| L2 软约束 | 中 | 场景色、配饰色、点缀色优先参考色盘,可按镜头与剧情微调 |
+| L3 例外机制 | 低 | 回忆/高潮/特殊场景可临时突破局部色彩,但需保留整体暖调逻辑 |
+
+| 序号 | 色名 | 色值 | 用途 |
+|---|---|---|---|
+| C1 | 暖黄 | #F5E6D0 | 肤色基底、暖光、夕阳 |
+| C2 | 樱花粉 | #F4D5D5 | 脸颊红晕、春日、浪漫 |
+| C3 | 天空蓝 | #87AEC9 | 天空、服装、冷调点缀 |
+| C4 | 深棕发 | #4A3728 | 发色、眼瞳 |
+| C5 | 高级灰 | #8A8A8A | 建筑、阴影、中性色 |
+| C6 | 淡紫 | #D0C4D6 | 夜晚、梦幻、回忆 |
+| C7 | 琥珀暖 | #C9A96E | 黄昏、灯光、温暖感 |
+| C8 | 橄榄绿 | #8A9A5B | 植物、自然、环境 |
+| C9 | 米白 | #F5F0E8 | 墙面、服装、背景 |
+| C10 | 暖橙 | #E8C890 | 夕阳、火光、温馨感 |
+
+### 硬约束色(默认锁定)
+
+| 色项 | 对应色 | 规则 |
+|---|---|---|
+| 肤色基准 | C1 暖黄 | 默认优先,允许小幅明度/暖度微调 |
+| 发色/瞳色基准 | C4 深棕发 | 默认优先,允许深棕/深褐轻微偏移 |
+
+### 软约束色(推荐优先)
+
+> C2/C3/C5/C6/C7/C8/C9/C10 为推荐色域,用于服装、装饰、背景、暖光、环境等。可根据镜头氛围做同色相邻近调整。
+
+### 情绪色盘(导演对齐版)
+
+| 情绪场景 | 主色 | 辅色 | 光效与对比建议 | 画面关键词 |
+|---|---|---|---|---|
+| 日常温馨 | C1 暖黄 | C9 米白 + C5 高级灰 | 均匀暖调,柔和对比 | 生活感、温暖、平静 |
+| 心动瞬间 | C2 樱花粉 | C1 暖黄 + C10 暖橙 | 中近景提暖,肤色微红 | 羞涩、靠近感、暧昧 |
+| 学校/教室 | C9 米白 | C5 高级灰 + C3 天空蓝 | 明暗层次清晰,中性为主 | 青春、日常、自然 |
+| 黄昏浪漫 | C7 琥珀暖 | C10 暖橙 + C2 樱花粉 | 逆光暖调,轮廓光 | 怀旧、浪漫、情感 |
+| 夜晚月色 | C3 天空蓝 | C6 淡紫 + C1 暖黄 | 冷调为主,暖色点缀 | 静谧、思考、独处 |
+| 回忆/闪回 | C1 暖黄 | C6 淡紫 + C5 高级灰 | 柔焦雾化,轻微褪色 | 怀旧、旧忆、梦幻 |
+| 离别感伤 | C5 高级灰 | C3 天空蓝 + C1 暖黄 | 降饱和,拉大冷暖反差 | 距离感、克制、静压 |
+| 重逢释怀 | C1 暖黄 | C7 琥珀暖 + C2 樱花粉 | 先冷后暖,面部暖光渐进 | 回温、释然、治愈 |
+
+### 情绪色盘使用规则
+
+| 编号 | 规则 |
+|---|---|
+| E1 | 每条提示词至少指定 1 个「情绪场景」并绑定主色+辅色组合 |
+| E2 | 单镜头主色不超过 2 个,避免颜色叙事失焦 |
+| E3 | 情绪切换时优先调整光比与色温,再调整饱和度 |
+| E4 | 治愈向默认遵循「暖底 + 冷暖对比」:暖色铺底,冷色用于背景/阴影 |
+| E5 | 若与剧情冲突,以情绪色盘优先于通用推荐色,但不得突破严禁项 |
+
+### 色温约束
+
+| 参数 | 值 | 说明 |
+|---|---|---|
+| 整体色温 | 偏暖 4800-5200K(推荐) | 温暖怀旧主基调 |
+| 肤色色温 | 微暖 5000-5400K(推荐) | 暖黄但有生命感 |
+| 对比度 | 中等(建议保持) | 明暗层次清晰,但不过分强烈 |
+| 饱和度 | 中低 50-70%(建议区间) | 90年代动画高级色调 |
+
+### 容差与例外
+
+| 项目 | 建议容差 |
+|---|---|
+| 色相偏移 | ±8° |
+| 饱和度偏移 | ±10% |
+| 明度偏移 | ±12% |
+
+> 例外场景:回忆、黄昏、情绪高潮镜头可使用更暖或更高饱和局部色块;但禁止高饱和荧光色与现代色彩语言入镜。
+
+---
+
+## 三、全局约束规则
+
+### 必守规则(所有技能继承)
+
+| 编号 | 规则 |
+|---|---|
+| R1 | 必须包含「90年代日式动画风格」风格锚定词 |
+| R2 | 必须声明「手绘质感 + 平涂上色」 |
+| R3 | 面部必须使用「精细流畅线条 + 柔和暖色调」 |
+| R4 | 发丝必须使用「清晰流畅线条 + 自然阴影」 |
+| R5 | 光影必须声明「电影感光影层次」 |
+
+### 严禁项(所有技能继承)
+
+| 编号 | 严禁内容 |
+|---|---|
+| X1 | 严禁「现代日系动画风格/新海诚后期/MAPPA风格」 |
+| X2 | 严禁「3D渲染/CG动画/数字绘画」 |
+| X3 | 严禁「高饱和荧光色/霓虹色」 |
+| X4 | 严禁「面部变形/比例失调/肢体异常」倾向词 |
+| X5 | 严禁「过度阴影/重对比/暗调黑暗」 |
+| X6 | 严禁「现代元素/现代建筑/现代服饰」 |
\ No newline at end of file
diff --git a/data/skills/art_skills/2D_chinese_guofeng/README.md b/data/skills/art_skills/2D_chinese_guofeng/README.md
new file mode 100644
index 0000000..c2db928
--- /dev/null
+++ b/data/skills/art_skills/2D_chinese_guofeng/README.md
@@ -0,0 +1,33 @@
+# 国风二次元新国潮风格说明
+
+本风格专为"国风二次元新国潮"题材打造,所有美术提示词、规范和生成内容均严格限定于:
+
+- **国风二次元动画**:以中国古风文化为背景的二次元动画风格,涵盖仙侠、武侠、宫廷等题材
+- **新国潮美学**:传统东方元素与现代审美结合,古典韵味与时尚感并存
+- **日式动画渲染技法**:现代日式动画的上色与光影技术,赛璐璐平涂结合数字渲染
+- **东方古韵**:诗意氛围、留白构图、意境深远的东方美学表达
+- **细腻笔触**:清晰的线条、精细的细节、精致的角色与场景设计
+- **国风二次元电影质感**:电影级构图、光影层次、动态张力、情绪氛围
+
+## 适用范围
+
+- 国风二次元题材的AI美术生成(角色、场景、道具、分镜等)
+- 需要新国潮美学、日式动画渲染、国风意境的视觉创作
+- 国风动画、游戏美术、概念设计、插画创作
+
+## 严禁内容
+
+- 完全写实摄影/3D写实渲染
+- 西方奇幻/哥特/维多利亚风格
+- 赛博朋克/科幻/过度现代元素
+- 粗劣线条/模糊画质/低精度建模
+- 色彩混乱/风格不统一/审美崩坏
+
+## 风格体验
+
+在本风格下,您将体验到:
+
+- 角色造型二次元比例,古风服饰精致,线条细腻流畅
+- 场景充满东方意境,传统建筑细节丰富,光影渲染精致
+- 道具器物考究,材质质感清晰,色彩和谐统一
+- 分镜与渲染均强调电影质感、新国潮审美、日式动画技法
\ No newline at end of file
diff --git a/data/skills/art_skills/2D_chinese_guofeng/art_prompt/art_character.md b/data/skills/art_skills/2D_chinese_guofeng/art_prompt/art_character.md
new file mode 100644
index 0000000..a16e089
--- /dev/null
+++ b/data/skills/art_skills/2D_chinese_guofeng/art_prompt/art_character.md
@@ -0,0 +1,207 @@
+---
+name: art_character
+description: 人物基础形象生成 · 约束手册
+metaData: art_skills
+---
+
+# 人物基础形象生成 · 约束手册
+
+---
+
+## 一、基础形象原则
+
+1. **造型即灵魂** — 角色造型是核心锚点,国风二次元造型,线条流畅
+2. **底模即基础** — 基础打底服装 + 素颜,后续服化均为叠加层
+3. **四视图一致** — 面容/体型/发型/基础服装跨视图高度统一
+4. **古典气质** — 无妆状态仍需体现角色气质(典雅/温婉/英气)
+
+---
+
+## 二、面容约束
+
+### 女性面容
+
+| 部位 | 约束 | 提示词 |
+|---|---|---|
+| 脸型 | 鹅蛋脸、线条柔和、下巴圆润 | 鹅蛋脸、柔和线条、圆润下巴 |
+| 眼型 | 大眼睛、眼神清澈、双眼皮明显 | 大眼睛、清澈眼神、明显双眼皮 |
+| 眉型 | 柳叶眉、眉形柔和、自然眉色 | 柳叶眉、柔和眉形、自然眉色 |
+| 鼻型 | 小巧鼻梁、鼻头圆润 | 小巧鼻梁、圆润鼻头 |
+| 唇型 | 樱桃小口、唇色自然红 | 樱桃小口、自然红唇色 |
+| 气质 | 典雅温婉、国风二次元 | 典雅温婉、国风二次元、古典气质 |
+
+### 男性面容
+
+| 部位 | 约束 | 提示词 |
+|---|---|---|
+| 脸型 | 国字脸、线条硬朗 | 国字脸、线条硬朗、下颌分明 |
+| 眼型 | 剑眉星目、眼神清亮 | 剑眉星目、清亮眼神 |
+| 眉型 | 剑眉、眉形英挺、自然眉色 | 剑眉、英挺眉形、自然眉色 |
+| 鼻型 | 挺直鼻梁、鼻翼适中 | 挺直鼻梁、适中鼻翼 |
+| 唇型 | 唇形清晰、唇色自然 | 唇形清晰、自然唇色 |
+| 气质 | 儒雅英气、国风二次元 | 儒雅英气、国风二次元、古典气质 |
+
+---
+
+## 三、肤感约束
+
+### 女性
+
+| 项目 | 约束 | 提示词 |
+|---|---|---|
+| 肤色 | 粉白基调、全身均匀、白皙透亮 | 粉白基调、白皙透亮、二次元肤色 |
+| 光泽 | 赛璐璐平涂、自然光泽、非哑光 | 赛璐璐平涂、自然光泽、柔和质感 |
+| 质感 | 细腻线条、色彩均匀、边缘柔和 | 细腻线条、色彩均匀、边缘柔和 |
+| 露肤 | 面部/颈部/手部 | 手部细腻、颈部线条柔和 |
+
+### 男性
+
+| 项目 | 约束 | 提示词 |
+|---|---|---|
+| 肤色 | 白皙基调、全身均匀、健康质感 | 白皙基调、健康质感、二次元肤色 |
+| 光泽 | 赛璐璐平涂、自然光泽 | 赛璐璐平涂、自然光泽、柔和质感 |
+| 质感 | 细腻线条、干净利落 | 细腻线条、赛璐璐平涂、柔和 |
+
+---
+
+## 四、体型约束
+
+### 女性
+
+| 项目 | 约束 | 提示词 |
+|---|---|---|
+| 身高 | 由角色设定指定,默认范围 160-170cm | {身高}cm tall、{身高描述如:tall elegant woman} |
+| 头身比 | 六头身至七头身,二次元古典比例 | 6-7 heads tall proportion、二次元古典比例 |
+| 肩颈 | 天鹅颈、肩颈线优美 | 天鹅颈、肩颈优美 |
+| 手部 | 纤长白皙、手指自然 | 纤长白皙、自然手指 |
+| 体态 | 古典气质、优雅挺拔 | 体态优雅、身姿挺拔 |
+
+### 男性
+
+| 项目 | 约束 | 提示词 |
+|---|---|---|
+| 身高 | 由角色设定指定,默认范围 175-185cm | {身高}cm tall、{身高描述如:tall imposing man} |
+| 头身比 | 六头身至七头身,二次元古典比例 | 6-7 heads tall proportion、二次元古典比例 |
+| 肩颈 | 宽阔肩部、颈部有力 | 宽阔肩部、颈部有力 |
+| 手部 | 骨节分明、手指自然 | 骨节分明、自然手指 |
+| 体态 | 儒雅英气、挺拔端正 | 体态英气、身姿挺拔 |
+
+---
+
+## 五、基础发型约束
+
+> 仅定义自然发型,发饰在服化衍生环节叠加。
+
+### 女性
+
+| 项目 | 约束 | 提示词 |
+|---|---|---|
+| 发色 | 墨黑、禁其他颜色 | 墨黑长发、青丝如瀑 |
+| 发长 | 长发及腰 | 长发及腰、长发 |
+| 发质 | 细腻线条、发丝清晰 | 细腻线条、清晰发丝 |
+| 造型 | 自然散发、无发饰 | 长发自然散落、无发饰 |
+
+### 男性
+
+| 项目 | 约束 | 提示词 |
+|---|---|---|
+| 发色 | 墨黑、禁其他颜色 | 墨黑长发、青丝如墨 |
+| 发长 | 长发及肩或束发 | 长发及肩、束发 |
+| 发质 | 细腻线条、发丝清晰 | 细腻线条、清晰发丝 |
+| 造型 | 自然散发或半束、无发冠 | 长发自然散落、半束长发 |
+
+---
+
+## 六、基础服装约束
+
+> 基础服装无特殊约束,女性为素色古装长裙,男性为素色古装长衫。正式服饰在服化衍生环节叠加。
+
+### 女性基础服装
+
+素色古装长裙,颜色以基础色为主,无花纹装饰。
+
+### 男性基础服装
+
+素色古装长衫,颜色以基础色为主,无花纹装饰。
+
+### 着装统一规则
+
+- 服装风格统一,确保后续服饰叠加无色彩干扰
+- 除面部/手部/颈部外基本覆盖
+- 四视图服装款式完全一致
+- 基础服装仅为安全打底,焦点在面容与体态
+
+---
+
+## 七、四视图设定图规范
+
+### 视图定义
+
+| 位置 | 视图 | 角度 | 景别 | 要求 | 提示词 |
+|---|---|---|---|---|---|
+| 左一 | 人像特写 | 正面平视 | 头顶至锁骨 | 从头顶到锁骨完整展示,面部占60%+,五官清晰 | portrait closeup、face detail |
+| 左二 | 正视图 | 正面 0° | 全身立像 | 面对镜头、双臂自然、从头顶到脚底完整展示 | front view、full body |
+| 右二 | 侧视图 | 右侧 90° | 全身立像 | 纯侧面轮廓清晰、从头顶到脚底完整展示 | side view、profile、full body |
+| 右一 | 后视图 | 后方 180° | 全身立像 | 后脑/背部/发尾/脚部清晰、从头顶到脚底完整展示 | back view、rear view、full body |
+
+### 画面规范
+
+| 项目 | 约束 |
+|---|---|
+| 布局 | 同一画面从左至右并排四视图 |
+| 背景 | 月白纯色 #E8EAF5 |
+| 站姿 | 自然站立、双脚平行微分、双臂自然下垂 |
+| 全身展示 | 全身立像必须从头顶到脚底完整入画,严禁裁切 |
+| 特写展示 | 人像特写必须从头顶到锁骨完整入画,严禁裁切 |
+| 表情 | 中性微表情,符合角色气质 |
+| 光线 | 均匀柔光,前方主光 + 双侧补光,无硬阴影 |
+| 一致性 | 四视图的肤色/体型/发型/面容/基础服装完全一致 |
+| 画面比例 | 建议 4:1 或 3:1 |
+
+---
+
+## 八、提示词模板
+
+{性别}角色四视图设定图,国风二次元,新国潮美学,日式动画渲染,赛璐璐平涂,细腻笔触,
+character design sheet, character turnaround,
+{脸型}, {眼型}, {鼻型}, {唇型}, {整体气质}, 素颜状态,
+{肤色}, 赛璐璐平涂, 皮肤通透发光, 细腻线条, 光影层次丰富,
+{身高描述, 如:165cm tall, tall elegant woman}, {头身比, 如:6.5 heads tall proportion}, {身材描述}, {体态描述},
+{发色}{发长}, 细腻发丝清晰, {基础造型}, 无发饰,
+(女性: 素色古装长裙 / 男性: 素色古装长衫), 基础色, 无花纹装饰,
+同一画面左至右并排:人像特写+正视图+侧视图+后视图,
+人像特写从头顶到锁骨完整展示, 不裁切头顶, head to collarbone complete,
+全身立像从头顶到脚底完整展示, full body head to toe, 不裁切头顶和脚部,
+自然站立, 月白纯色背景, 均匀柔光, 无硬阴影,
+四视图一致性, 国风二次元造型清晰, 细腻线条清晰,
+图中不要有任何文字
+
+---
+
+## 九、约束规则
+
+### 必守
+
+| 编号 | 规则 |
+|---|---|
+| R1 | 必须为「素颜状态」 |
+| R2 | 必须声明基础服装(女性:素色古装长裙;男性:素色古装长衫) |
+| R3 | 必须声明「无发饰、无配饰」 |
+| R4 | 必须指定「月白纯色背景」 |
+| R5 | 必须指定「四视图一致性」 |
+| R6 | 全身立像必须从头顶到脚底完整展示,严禁裁切 |
+| R7 | 必须声明角色身高并通过头身比换算约束全身比例(女性默认 160-170cm/6-7头身,男性默认 175-185cm/6-7头身) |
+| R8 | 人像特写必须从头顶到锁骨完整展示,严禁裁切头顶 |
+
+### 严禁
+
+| 编号 | 严禁 |
+|---|---|
+| X1 | 基础服装以外的任何服装/配饰/妆容 |
+| X2 | 正顶硬光/正底光/冷色光 |
+| X3 | 过度美白至无血色 / 肤色发灰 |
+| X4 | 复杂场景背景(必须纯色) |
+| X5 | 夸张表情/动态姿势 |
+| X6 | 全身立像裁切头顶或脚底,必须从头到脚完整入画 |
+| X7 | 人像特写裁切头顶,必须从头顶到锁骨完整入画 |
+| X8 | 忽略身高和头身比约束,身高必须明确声明并通过头身比换算体现全身比例 |
\ No newline at end of file
diff --git a/data/skills/art_skills/2D_chinese_guofeng/art_prompt/art_character_derivative.md b/data/skills/art_skills/2D_chinese_guofeng/art_prompt/art_character_derivative.md
new file mode 100644
index 0000000..42f77f8
--- /dev/null
+++ b/data/skills/art_skills/2D_chinese_guofeng/art_prompt/art_character_derivative.md
@@ -0,0 +1,315 @@
+---
+name: art_character_derivative
+description: 人物衍生资产生成 · 约束手册
+metaData: art_skills
+---
+
+# 人物衍生资产生成 · 约束手册
+
+---
+
+## 一、叠加原则
+
+1. **面容不变** — 叠加后五官必须与底模完全一致,禁止面容偏移
+2. **姿态不变** — 保持底模自然站立姿态,禁止任何姿态/动作/体态变化
+3. **逐层可控** — 每层独立描述,便于按层替换(换装不换妆)
+4. **风格统一** — 所有服化元素服从同一美学体系
+5. **质感不降** — 叠加后质感标准不低于底模
+6. **纯服化范畴** — 仅叠加妆容/发型/服饰/配饰,禁止引入道具、场景、环境、动作
+
+---
+
+## 二、叠加层级
+
+| 层级 | 内容 | 说明 |
+|---|---|---|
+| L0 | 底模 | 基础形象底模,不修改 |
+| L1 | 妆容(决策层) | 先分析用户线索,再决策「基础妆 / 轻妆 / 正式妆」强度 |
+| L2 | 发型造型 | 发髻/束发/编发 + 发饰 |
+| L3 | 中衣/内搭 | 替换白色基础中衣 |
+| L4 | 外衣/主服 | 古风华服/礼服/常服等 |
+| L5 | 配饰 | 头饰/耳饰/项饰/腰饰/手饰 |
+
+> **范畴边界**:人物衍生资产仅包含 L0–L5 层级(服化妆造),不包含道具(伞/剑/扇/书/灯笼等手持物)、场景环境(室内/室外/天气等)、姿态动作(行走/回眸/举手等)。这些属于其他资产类型的范畴。
+
+---
+
+## 三、妆容约束(L1)
+
+### 底模到衍生妆造策略(关键)
+
+> 角色底模虽为素颜,但衍生资产默认进入妆造流程。系统应根据用户提供的线索分析妆造需求,并在基础妆、轻妆、正式妆之间决策强度,而不是保持素颜。
+
+### L1 线索分析与妆容决策
+
+| 步骤 | 处理内容 | 决策结果 |
+|---|---|---|
+| S1 | 提取用户线索:面部状态词、情绪词、强度词 | 形成妆容需求摘要 |
+| S2 | 过滤非妆容线索:道具/场景/动作/姿态词不作为上妆依据 | 防止误判 |
+| S3 | 匹配妆容风格矩阵并给出强度档 | 基础妆 / 轻妆 / 正式妆 |
+| S4 | 生成最终 L1 提示词 | 只输出结论,不输出分析过程 |
+
+### 线索到妆容映射(执行口径)
+
+| 线索类型 | 典型线索 | L1 决策 |
+|---|---|---|
+| 无明显面部强调线索 | 仅服饰/发型变化,未强调情绪与状态 | 基础妆 |
+| 轻微面部线索 | 轻柔、含笑、睫毛轻颤、气色微提 | 轻妆(极淡) |
+| 明确日常线索 | 日常、外出、休闲 | 基础妆(自然清透) |
+| 明确正式仪式线索 | 大婚、典礼、重要场合 | 正式妆(精致华贵) |
+
+> 判定原则:所有衍生资产都要有妆造;先看面部线索决定强度与风格,道具、场景、姿态变化不得单独抬高妆容强度。
+
+### 女性妆容风格矩阵
+
+| 风格 | 适用场景 | 核心提示词 |
+|---|---|---|
+| 清雅素妆 | 日常、初遇、闺中 | 妆容清雅、淡扫蛾眉、素妆清颜 |
+| 宫廷贵气妆 | 宫廷、正式、权力 | 妆容精致、眉形锋利、唇色红润 |
+| 浪漫桃花妆 | 约会、心动、甜蜜 | 桃花妆、眼尾微红、唇色水润 |
+| 大婚盛妆 | 大婚、典礼 | 浓妆华美、朱唇凤眼 |
+| 节日庆典 | 庆典、聚会 | 色彩明亮、粉彩妆容 |
+
+### 通用底肤(所有妆容共享)
+
+| 项目 | 约束 | 提示词 |
+|---|---|---|
+| 质感 | 赛璐璐平涂、自然透亮 | 赛璐璐质感、自然光泽、柔和质感 |
+| 白度 | 粉白基调、通透不惨白 | 粉白基调、白皙透亮 |
+| 内透光 | 从内向外柔光感 | 内透光感、皮肤通透发光 |
+| 禁止 | 哑光/死白/蜡感/油光/过曝 | — |
+
+### 基础妆细化(默认档)
+
+| 项目 | 约束 | 提示词 |
+|---|---|---|
+| 眉部 | 顺着底模眉形轻修,不改变眉型 | 自然修眉、眉形干净 |
+| 眼部 | 极淡眼部修饰,强调清透与有神 | 眼部清透、极淡眼影 |
+| 面颊 | 极淡气色提亮,粉彩腮红 | 面颊气色自然、粉彩腮红 |
+| 唇部 | 浅粉或朱红润色,保持克制 | 唇色自然润泽、浅粉唇色 |
+| 整体 | 看得出有妆造,但妆感非常轻 | 基础妆、自然妆感、柔和质感 |
+
+### 男性妆容
+
+| 项目 | 约束 | 提示词 |
+|---|---|---|
+| 底肤 | 赛璐璐平涂、白皙透亮、清爽自然 | 赛璐璐质感、白皙透亮、自然光泽 |
+| 原则 | 伪素颜——看着没化妆但皮肤极好 | 伪素颜、天生好皮 |
+| 眉毛 | 自然浓眉、不画眉 | 剑眉自然、眉形英挺 |
+| 唇色 | 自然血色、微润 | 唇色自然、血色感 |
+
+---
+
+## 四、发型造型约束(L2)
+
+### 女性造型类型
+
+| 造型 | 描述 | 适用 | 提示词 |
+|---|---|---|---|
+| 高髻云鬓 | 高髻盘发 + 发饰 | 宫廷、正式 | 高髻云鬓、精致盘发 |
+| 双环髻 | 双环对称、少女 | 年轻角色 | 双环髻、少女风格 |
+| 堕马髻 | 侧偏低髻、慵懒 | 日常、休闲 | 堕马髻、慵懒侧髻 |
+| 披发 | 长发全散、自然 | 闺中、私密 | 长发散落、自然垂落 |
+| 束发高马尾 | 高束干练 | 习武、行动 | 高束马尾、干练利落 |
+| 半扎发 | 发顶半扎 + 后方垂发 | 日常、出行 | 半扎云髻、自然垂发 |
+
+### 女性发饰
+
+| 项目 | 约束 | 提示词 |
+|---|---|---|
+| 风格 | 华丽精致、与服饰配套 | 华丽发饰、精致工艺 |
+| 材质 | 金银 + 珠玉 + 流苏 | 金银发簪、珠翠满头 |
+| 工艺 | 细腻线条、细节清晰 | 精细工艺、细腻雕刻 |
+
+### 男性造型类型
+
+| 造型 | 适用 | 提示词 |
+|---|---|---|
+| 束发半冠 | 日常、文人 | 束发半冠、玉簪束发 |
+| 全冠高束 | 正式、朝堂 | 全冠高束、玉冠束发 |
+| 散发披肩 | 私密、受伤 | 散发披肩、长发如墨 |
+| 束发高马尾 | 战斗、习武 | 高束战发、马尾利落 |
+
+---
+
+## 五、服饰约束(L3+L4)
+
+### 女性服饰矩阵
+
+| 风格 | 款式 | 适用 | 提示词 |
+|---|---|---|---|
+| 古装长裙 | 长裙、飘逸 | 日常、闺中 | 古装长裙、飘逸衣裙 |
+| 宫廷礼服 | 礼服、华丽 | 宫廷、正式 | 宫廷礼服、华贵裙装 |
+| 轻便常服 | 短衫、轻便 | 行动、习武 | 轻便常服、短衫 |
+| 寝衣 | 薄纱内衫、素色 | 室内、夜间 | 寝衣、宽松舒适 |
+| 大婚嫁衣 | 凤冠霞帔、层叠红装 | 婚礼 | 凤冠霞帔、层叠红裳 |
+
+### 女性服饰通用约束
+
+| 项目 | 约束 | 提示词 |
+|---|---|---|
+| 主色 | 中国传统色调为默认 | 中国传统色调衣服、精致服饰 |
+| 材质 | 丝绸 + 刺绣 + 珠光面料 | 丝绸质感、刺绣细节 |
+| 质感 | 纹理必须超清晰 | 衣服质感清晰、纹理超清晰 |
+| 肩部 | 披帛/云肩/装饰 | 云肩华美、肩头有装饰 |
+| 层次 | 多层叠穿、层次分明 | 多层叠穿、层次分明 |
+
+### 男性服饰矩阵
+
+| 风格 | 适用 | 提示词 |
+|---|---|---|
+| 文人士子装 | 日常、书房 | 文人士子装、长衫 |
+| 武将劲装 | 战斗、练武 | 武将劲装、战袍 |
+| 朝服 | 朝堂、典礼 | 朝服、正式礼服 |
+| 常服便装 | 休闲、私密 | 常服便装、简约风格 |
+| 礼服 | 正式、庆典 | 礼服、华贵精致 |
+
+---
+
+## 六、配饰约束(L5)
+
+### 女性配饰
+
+| 类型 | 约束 | 提示词 |
+|---|---|---|
+| 头饰 | 华丽精致、不单薄 | 华丽头饰、珠翠满头 |
+| 耳饰 | 垂坠流苏/玉珰 | 流苏耳环、玉珰垂坠 |
+| 项饰 | 璎珞/项圈 | 璎珞华美、精致项圈 |
+| 腰饰 | 宫绦/玉佩 | 宫绦飘逸、腰间玉佩 |
+| 手饰 | 玉镯/臂钏 | 玉镯通透、臂钏精致 |
+
+### 男性配饰
+
+| 类型 | 约束 | 提示词 |
+|---|---|---|
+| 发冠 | 玉冠/金冠、精致 | 玉冠束发 |
+| 腰封 | 宽腰封/革带 | 宽腰封、质感分明 |
+| 玉佩 | 通透温润 | 腰间玉佩 |
+| 兵器 | 佩剑/扇/笛(可选) | 长剑在侧、折扇半掩 |
+
+---
+
+## 七、服化组合速查
+
+| 场景 | 妆容 | 发型 | 服饰 | 配饰 |
+|---|---|---|---|---|
+| 闺中日常 | 清雅素妆 | 披发/半扎发 | 古装长裙 | 中等 |
+| 初次相遇 | 清雅素妆 | 半扎发/堕马髻 | 古装长裙 | 中偏多 |
+| 浪漫互动 | 浪漫桃花妆 | 半扎发/堕马髻 | 古装长裙/轻便 | 中等 |
+| 正式亮相 | 宫廷贵气妆 | 高髻云鬓 | 宫廷礼服 | 极繁 |
+| 夜间私密 | 清雅/桃花妆 | 披发/堕马髻 | 寝衣 | 极简 |
+| 大婚典礼 | 大婚盛妆 | 高髻云鬓 | 嫁衣 | 极繁 |
+| 习武行动 | 素妆(极淡) | 束发马尾 | 轻便常服 | 简 |
+
+---
+
+> **🔍 未覆盖场景推断规则**
+>
+> 当用户描述的场景/情境不在上表时,根据本风格核心基因自行推断:
+>
+> | 推断维度 | 国风二次元基因 |
+> |---|---|
+> | 妆容强度 | 默认清雅素妆;有节日/仪式/正式关键词→宫廷贵气妆;有甜宠/心动词→桃花妆 |
+> | 发型 | 日常/闺中→半扎发或堕马髻;正式/亮相→高髻云鬓;私密/夜晚→披发;行动→束发马尾 |
+> | 服饰 | 情感戏/日常→古装长裙(轻柔飘逸);权力/正式→宫廷礼服;行动/武斗→轻便常服 |
+> | 配饰繁度 | 日常→中等;正式→极繁(珠翠发饰+璎珞+腰饰);私密/休闲→简;行动→简 |
+> | 色调倾向 | 中国传统色为锚(霜白/月白/朱砂/靛蓝);夜景/私密→降饱和;喜庆→暖红+金 |
+
+## 八、四视图设定图规范
+
+> 衍生服化叠加后仍需输出四视图设定图,确保服化妆造在各角度的一致性。
+
+### 视图定义
+
+| 位置 | 视图 | 角度 | 景别 | 要求 | 提示词 |
+|---|---|---|---|---|---|
+| 左一 | 人像特写 | 正面平视 | 面部至锁骨 | 面部占60%+,五官/妆容清晰 | portrait closeup、face detail、makeup detail |
+| 左二 | 正视图 | 正面 0° | 全身立像 | 面对镜头、服饰正面全貌 | front view、height mark |
+| 右二 | 侧视图 | 右侧 90° | 全身立像 | 纯侧面轮廓、服饰侧面层次 | side view、profile、height mark |
+| 右一 | 后视图 | 后方 180° | 全身立像 | 后脑发饰/背部服饰/发尾清晰 | back view、rear view、height mark |
+
+### 画面规范
+
+| 项目 | 约束 |
+|---|---|
+| 布局 | 同一画面从左至右并排四视图 |
+| 背景 | 月白纯色 #E8EAF5 |
+| 站姿 | 自然站立、双脚平行微分、双臂自然下垂或微展(**禁止任何姿态变化**) |
+| 表情 | 符合妆容风格的微表情(如清雅素妆→淡然、桃花妆→含笑),仅限面部微表情,不涉及肢体动作 |
+| 光线 | 均匀柔光,前方主光 + 双侧补光,无硬阴影 |
+| 一致性 | 四视图的面容/妆容/发型/发饰/服饰/配饰完全一致 |
+| 画面比例 | 建议 4:1 或 3:1 |
+
+---
+
+## 九、提示词模板
+
+### 输出格式约束
+
+| 项目 | 约束 |
+|---|---|
+| 输出内容 | **仅输出提示词文本**,不输出任何其他内容 |
+| 禁止输出 | 速查表、分层构建方案、视觉约束表、禁止事项表、衍生方案、输出建议、核心要素表等一切非提示词内容 |
+| 禁止场景 | 人物衍生资产**不包含场景/环境描述**,不输出任何场景/环境/天气/背景叙事内容(场景属于场景资产范畴) |
+| 禁止道具 | **不包含任何道具交互**,不输出伞/剑/扇/书/灯笼/酒杯等手持物或交互物(道具属于道具资产范畴) |
+| 禁止姿态变化 | **不改变底模姿态**,不输出行走/回眸/举手/侧身/奔跑等任何动作或体态变化,保持自然站立 |
+| 格式 | 直接输出可用的提示词代码块,无需标题、表格、解释、方案对比 |
+
+### 完整服化叠加(四视图)
+
+以角色基础形象图为底图,img2img叠加服化妆造,
+国风二次元,新国潮美学,日式动画渲染,赛璐璐平涂,细腻笔触,
+古风{性别}角色四视图设定图,国风二次元,赛璐璐上色,8K,超保真
+character design sheet, character turnaround,
+保持基础形象面容不变,{整体气质},
+【L1·妆容】根据用户线索决策:{基础妆/轻妆/正式妆};使用 {妆容风格}, 赛璐璐平涂, {眉妆}, {眼妆}, {唇妆},
+【L2·发型】{造型类型}, 细腻发丝清晰, {发饰描述},
+【L3+L4·服饰】{主色}{款式}, {材质}, {装饰工艺}, 衣服质感清晰, 赛璐璐平涂,
+【L5·配饰】{头饰}, {耳饰}, {项饰}, {腰饰},
+同一画面左至右并排:人像特写+正视图+侧视图+后视图,
+自然站立, 月白纯色背景, 均匀柔光, 无硬阴影,
+四视图一致性, 国风二次元造型清晰, 细腻线条清晰,
+图中不要有任何文字
+
+---
+
+## 十、约束规则
+
+### 必守
+
+| 编号 | 规则 |
+|---|---|
+| R1 | 叠加后面容必须与底模一致 |
+| R2 | 服饰必须用「衣服质感清晰 + 赛璐璐平涂」 |
+| R3 | 女性配饰必须「华丽精致 + 工艺精细」 |
+| R4 | 妆容/发型/服饰/配饰风格统一 |
+| R5 | 必须输出四视图设定图(人像特写+正视图+侧视图+后视图) |
+| R6 | 必须指定「月白纯色背景」 |
+| R7 | 必须指定「四视图一致性」 |
+| R8 | **仅输出提示词**——禁止输出速查表/分层方案/视觉约束/禁止事项/衍生方案/输出建议等任何非提示词内容 |
+| R9 | **禁止包含场景描述**——人物衍生资产不涉及场景/环境/天气/背景叙事,场景属于独立资产类型 |
+| R10 | **禁止道具交互**——不包含任何手持物/交互物(伞/剑/扇/书等),道具属于独立资产类型 |
+| R11 | **姿态保持不变**——必须保持底模自然站立姿态,禁止任何动作/体态/姿势变化 |
+| R12 | **L1 必须先分析再决策**——先解析用户面部线索,再确定基础妆/轻妆/正式妆 |
+| R13 | **所有衍生资产均需妆造**——正常情况不保持素颜,至少使用基础妆 |
+| R14 | **上妆强度受控**——即使上妆也需克制,不得出现现代浓妆/夸张彩妆效果 |
+| R15 | **道具/场景/动作不作强度升级依据**——仅凭道具,环境,动作等信息不得把基础妆抬高为更强妆容 |
+
+### 严禁
+
+| 编号 | 严禁 |
+|---|---|
+| X1 | 叠加后面容偏移 |
+| X2 | 配饰过于简单/现代化(女性) |
+| X3 | 妆容/服饰风格互相冲突 |
+| X4 | 复杂场景背景(必须纯色) |
+| X5 | 四视图间服化妆造不一致 |
+| X6 | 输出提示词以外的任何内容(表格/方案/建议/解释/变体等) |
+| X7 | 在人物衍生资产中加入场景描述(街景/雨景/室内/街道/天气等环境元素) |
+| X8 | 输出「核心要素速查」「分层构建方案」「视觉约束」「禁止事项」「衍生方案」等章节 |
+| X9 | 加入任何道具交互(手持伞/剑/扇/书/灯笼/酒杯等物品) |
+| X10 | 改变底模姿态(行走/回眸/举手/侧身/奔跑/低头/仰望等动作描述) |
+| X11 | 加入表情与姿态联动描述(如「侧身45°行走嘴角浅弯」等叙事性描写) |
+| X12 | 未分析用户线索就直接套用固定妆容 |
+| X13 | 错误保持素颜,导致衍生资产缺少应有妆造 |
+| X14 | 仅因道具/场景/动作词而误把妆容升级,导致妆造强度决策错误 |
\ No newline at end of file
diff --git a/data/skills/art_skills/2D_chinese_guofeng/art_prompt/art_prop.md b/data/skills/art_skills/2D_chinese_guofeng/art_prompt/art_prop.md
new file mode 100644
index 0000000..0aa8a5c
--- /dev/null
+++ b/data/skills/art_skills/2D_chinese_guofeng/art_prompt/art_prop.md
@@ -0,0 +1,156 @@
+---
+name: art_prop
+description: 道具图像生成 · 约束手册
+metaData: art_skills
+---
+
+# 道具图像生成 · 约束手册
+
+---
+
+## 一、道具设计原则
+
+1. **功能可读** — 道具用途一目了然,造型服务于功能
+2. **质感极致** — 材质纹理必须清晰可辨(金属/玉石/木/布/纸/瓷)
+3. **年代一致** — 所有道具必须符合古风世界观,禁止现代元素
+4. **尺度明确** — 通过参照物或标注暗示道具真实尺寸
+5. **纯道具独立展示** — 画面中只能出现道具本身,严禁出现任何人物、手部、肢体,道具不可处于被持有/佩戴/握持状态,必须以静物陈列方式独立呈现
+
+---
+
+## 二、道具分类与美学约束
+
+### 2.1 兵器类
+
+| 项目 | 约束 | 提示词 |
+|---|---|---|
+| 类型 | 剑/刀/弓/枪/扇 | {兵器类型},古风兵器 |
+| 材质 | 精钢/玄铁 + 宝石镶嵌 + 丝绸剑穗 | 精钢锻造、宝石镶嵌 |
+| 装饰 | 剑鞘/刀柄雕花、流苏、暗纹 | 雕花精致、流苏垂坠 |
+| 光泽 | 金属冷光泽、刃口反光 | 冷光泽、金属质感 |
+| 风格 | 国风二次元 | 新国潮风格、二次元渲染 |
+
+### 2.2 饰品类
+
+| 项目 | 约束 | 提示词 |
+|---|---|---|
+| 类型 | 簪/钗/璎珞/玉佩/手镯/耳坠 | {饰品类型},古风首饰 |
+| 材质 | 金/银/玉/珍珠/宝石 | 金丝编织、玉质通透 |
+| 工艺 | 极致精细、花丝/掐丝/镶嵌 | 工艺精细、精雕细琢 |
+| 光泽 | 珠光/玉润/金属光泽 | 珠光莹润、金属光泽 |
+| 风格 | 国风二次元 | 精致华丽、新国潮 |
+
+### 2.3 生活器物类
+
+| 项目 | 约束 | 提示词 |
+|---|---|---|
+| 类型 | 茶具/酒具/香炉/棋盘/书卷/灯笼 | {器物类型},古风器物 |
+| 材质 | 瓷/铜/竹/木/纸 | 青瓷温润、紫铜古朴 |
+| 质感 | 釉面/木纹/竹节清晰 | 釉面光泽、木纹清晰 |
+| 风格 | 新中式 | 素雅古朴 / 华贵精致 |
+| 渲染 | 赛璐璐平涂 | 二次元质感、细腻笔触 |
+
+### 2.4 信物/关键道具类
+
+| 项目 | 约束 | 提示词 |
+|---|---|---|
+| 类型 | 信物/令牌/卷轴/药瓶/玉印 | {道具类型},古风道具 |
+| 特殊性 | 需有辨识度、叙事象征意义 | 独特造型、寓意深远 |
+| 做旧感 | 可按剧情需要添加年代感 | 古旧斑驳 / 崭新精致 |
+| 风格 | 国风二次元 | 新国潮风格、动漫感 |
+
+### 2.5 文房四宝类(新增)
+
+| 项目 | 约束 | 提示词 |
+|---|---|---|
+| 类型 | 笔/墨/纸/砚 | {文房类型},文房四宝 |
+| 材质 | 竹/木/玉/陶瓷 | 竹制笔杆、瓷质砚台 |
+| 质感 | 木纹/釉面/笔毫清晰 | 笔毫细腻、砚台温润 |
+| 风格 | 文人雅致 | 古风雅韵、细腻笔触 |
+
+### 2.6 节庆道具类(新增)
+
+| 项目 | 约束 | 提示词 |
+|---|---|---|
+| 类型 | 灯笼/烟花/春联/福字 | {节庆类型},节庆道具 |
+| 材质 | 纸/布/竹/绸缎 | 丝绸灯笼、纸质春联 |
+| 质感 | 纸纹/布料纹理清晰 | 纹理清晰、质感细腻 |
+| 风格 | 喜庆热闹 | 色彩明亮、热闹氛围 |
+
+---
+
+## 三、多角度设定图规范
+
+### 视图定义
+
+| 位置 | 视图 | 角度 | 要求 | 提示词 |
+|---|---|---|---|---|
+| 左上 | 正面图 | 正面 0° | 道具完整正面形态 | front view |
+| 右上 | 侧面图 | 侧面 90° | 厚度/轮廓/结构清晰 | side view |
+| 左下 | 背面图 | 背面 180° | 道具背部结构/装饰 | back view |
+| 右下 | 细节特写 | 局部放大 | 材质纹理/工艺细节 | detail closeup |
+
+### 画面规范
+
+| 项目 | 约束 |
+|---|---|
+| 布局 | 同一画面四宫格(2×2),上下左右四视角 |
+| 背景 | 月白纯色 #E8EAF5 |
+| 光线 | 均匀柔光,无硬阴影 |
+| 比例 | 每格道具占格内主体 70%+ |
+| 投影 | 允许自然地面微投影 |
+| 画面比例 | 建议 1:1 |
+
+---
+
+## 四、材质渲染约束
+
+| 材质 | 渲染要求 | 提示词 |
+|---|---|---|
+| 金属 | 反光/高光/冷光泽、划痕微可见 | 金属质感、冷光泽、反光清晰 |
+| 玉石 | 内透光、温润、微通透 | 玉质通透、温润如脂 |
+| 木质 | 木纹清晰、年轮可见 | 木纹清晰、质感温润 |
+| 瓷器 | 釉面光泽、色泽均匀 | 釉面光泽、瓷质温润 |
+| 布/纸 | 纤维质感、边缘自然 | 布料纹理、纸质古朴 |
+| 宝石 | 折射/内部光线、切面清晰 | 宝石璀璨、光芒折射 |
+| 赛璐璐质感 | 平涂均匀、线条清晰 | 赛璐璐平涂、细腻笔触 |
+
+---
+
+## 五、提示词模板
+
+国风二次元道具设定图,
+国风二次元,新国潮美学,日式动画渲染,赛璐璐平涂,细腻笔触,电影质感,
+{道具类型},{材质描述},{工艺/装饰描述},{状态描述},
+纯道具静物展示,道具独立陈列,无人持有,无人佩戴,
+同一画面四宫格(2×2):左上正面图+右上侧面图+左下背面图+右下细节特写,
+月白纯色背景,均匀柔光,无硬阴影,
+材质纹理超清晰,质感细腻,{材质光泽描述}
+国风二次元高清渲染,高细节,细腻线条,赛璐璐平涂感,
+画面无字幕、无水印、无标题叠字,
+画面中不能出现任何人物、手部、手指、肢体,道具不可处于被握持或佩戴状态
+
+---
+
+## 六、约束规则
+
+### 必守
+
+| 编号 | 规则 |
+|---|---|
+| R1 | 必须指定「月白纯色背景」 |
+| R2 | 必须明确道具材质与工艺 |
+| R3 | 道具造型必须符合古风世界观 |
+| R4 | 必须为「四宫格」布局:正面 + 侧面 + 背面 + 特写 |
+| R5 | 必须包含「国风二次元 + 赛璐璐平涂」关键词 |
+
+### 严禁
+
+| 编号 | 严禁 |
+|---|---|
+| X1 | 复杂场景背景 |
+| X2 | 道具与人物同画面(本环节为纯道具图) |
+| X3 | 出现任何人物形象,包括全身、半身、局部(手、手指、手臂等肢体) |
+| X4 | 道具处于被持有、握持、佩戴、使用中的状态 |
+| X5 | 出现暗示人物存在的元素(如手持痕迹、佩戴视角、使用姿态) |
+| X6 | 现代元素出现在古风道具中 |
\ No newline at end of file
diff --git a/data/skills/art_skills/2D_chinese_guofeng/art_prompt/art_prop_derivative.md b/data/skills/art_skills/2D_chinese_guofeng/art_prompt/art_prop_derivative.md
new file mode 100644
index 0000000..7cb6f99
--- /dev/null
+++ b/data/skills/art_skills/2D_chinese_guofeng/art_prompt/art_prop_derivative.md
@@ -0,0 +1,133 @@
+---
+name: art_prop_derivative
+description: 道具衍生状态生成 · 约束手册
+metaData: art_skills
+---
+
+# 道具衍生状态生成 · 约束手册
+
+---
+
+## 一、衍生原则
+
+1. **造型锚定** — 道具核心造型/轮廓在所有状态中可识别
+2. **状态可读** — 状态差异必须一目了然,观众能立即区分
+3. **叙事服务** — 每种状态变体服务于特定剧情节点
+4. **渐进退化** — 损伤/老化状态应有合理的物理逻辑
+5. **纯道具独立展示** — 画面中只能出现道具本身,严禁出现任何人物、手部、肢体,道具不可处于被持有/佩戴/握持状态,必须以静物陈列方式独立呈现
+
+---
+
+## 二、状态类型
+
+### 2.1 使用状态
+
+| 状态 | 描述 | 适用道具 | 提示词 |
+|---|---|---|---|
+| 崭新 | 完好无损、光泽如新 | 所有道具 | 崭新、完好无损、光泽如新 |
+| 日常使用 | 微磨损、自然包浆 | 兵器/器物/饰品 | 日常使用痕迹、自然包浆 |
+| 陈旧 | 明显年代感、色泽暗淡 | 器物/信物/卷轴 | 古旧斑驳、年代感、色泽暗沉 |
+
+### 2.2 损伤状态
+
+| 状态 | 描述 | 适用道具 | 提示词 |
+|---|---|---|---|
+| 微损 | 小裂纹/小缺口/轻微磨损 | 瓷器/玉佩/兵器 | 细微裂纹、轻微缺口 |
+| 破损 | 明显裂缝/断裂/破碎 | 瓷器/饰品/兵器 | 裂缝明显、碎裂、断裂 |
+| 残片 | 仅剩部分/碎片 | 瓷器/玉佩/信物 | 残片、碎片、仅存半块 |
+
+### 2.3 特殊状态
+
+| 状态 | 描述 | 适用道具 | 提示词 |
+|---|---|---|---|
+| 染血 | 血迹附着 | 兵器/信物/卷轴 | 血迹斑驳、染血、二次元渲染 |
+| 浸水/湿润 | 水渍、湿润反光 | 卷轴/信物/纸张 | 浸水、纸张湿润、墨迹晕染 |
+| 燃烧/焦损 | 焦黑边缘、火烧痕迹 | 卷轴/信物/木质品 | 边缘焦黑、火烧痕迹、炭化 |
+| 发光/激活 | 内在能量、光芒四射 | 信物/法器/玉石 | 微微发光、内蕴光华、赛璐璐光效 |
+| 包裹/封存 | 用布/盒子包裹 | 信物/饰品/秘物 | 锦布包裹、木盒封存、古风包装 |
+
+### 2.4 环境适应状态(新增)
+
+| 状态 | 描述 | 适用道具 | 提示词 |
+|---|---|---|---|
+| 雪覆 | 积雪覆盖 | 兵器/器物/信物 | 雪花覆盖、积雪、冬日感 |
+| 雨湿 | 雨水湿润 | 纸张/布/木质品 | 雨水湿润、水渍、潮湿感 |
+| 风蚀 | 风沙磨损 | 户外器物/兵器 | 风沙痕迹、磨损、年代感 |
+| 锈蚀 | 金属氧化 | 兵器/金属饰品 | 锈迹斑斑、氧化、岁月感 |
+
+---
+
+## 三、状态变体画面规范
+
+### 单状态图
+
+| 项目 | 约束 |
+|---|---|
+| 背景 | 月白纯色 #E8EAF5(与设定图一致) |
+| 光线 | 均匀照明,无硬阴影 |
+| 角度 | 与原设定图正面图一致 |
+| 比例 | 道具占画面主体 70%+ |
+
+### 状态对比图
+
+| 项目 | 约束 |
+|---|---|
+| 布局 | 同一画面并排展示 2-3 种状态 |
+| 标注 | 每种状态下方标注状态名 |
+| 一致性 | 角度/光线/背景完全一致,仅状态不同 |
+
+---
+
+## 四、材质状态变化规则
+
+| 材质 | 崭新 → 日常 | 日常 → 陈旧 | 损伤表现 |
+|---|---|---|---|
+| 金属 | 亮光泽 → 微包浆 | 包浆 → 锈蚀斑点 | 缺口/卷刃/断裂 |
+| 玉石 | 通透温润 → 微磨损 | 磨损 → 表面微裂 | 裂纹/碎裂/缺角 |
+| 木质 | 新木纹理 → 自然包浆 | 包浆 → 色泽暗沉 | 开裂/断裂/虫蛀 |
+| 瓷器 | 釉面光泽 → 微划痕 | 划痕 → 釉面暗淡 | 裂纹/碎裂/缺口 |
+| 布/纸 | 崭新平整 → 微皱折 | 皱折 → 发黄变脆 | 撕裂/焦损/墨迹晕染 |
+
+---
+
+## 五、提示词模板
+
+### 单状态变体
+
+基于{道具名}设定图,国风二次元道具衍生状态,
+国风二次元,新国潮美学,日式动画渲染,赛璐璐平涂,细腻笔触,
+{道具类型},{材质描述},
+当前状态:{状态名},{状态视觉描述},
+{材质表面变化描述},
+纯道具静物展示,道具独立陈列,无人持有,无人佩戴,
+同一画面四宫格(2×2):左上正面图(front view)+右上侧面图(side view)+左下背面图(back view)+右下细节特写(detail closeup),
+月白纯色背景,均匀柔光,无硬阴影,
+材质纹理超清晰,质感细腻,状态细节可辨,
+国风二次元高清渲染,高细节,细腻线条,赛璐璐平涂感,
+画面无字幕、无水印、无标题叠字,
+画面中不能出现任何人物、手部、手指、肢体,道具不可处于被握持或佩戴状态
+
+---
+
+## 六、约束规则
+
+### 必守
+
+| 编号 | 规则 |
+|---|---|
+| R1 | 道具核心造型/轮廓在所有状态中可识别 |
+| R2 | 状态变化须符合物理逻辑 |
+| R3 | 必须使用四宫格(2×2)布局:正面 + 侧面 + 背面 + 特写 |
+| R4 | 必须指定「月白纯色背景」,均匀柔光,无硬阴影 |
+| R5 | 必须包含「国风二次元 + 赛璐璐平涂」关键词 |
+
+### 严禁
+
+| 编号 | 严禁 |
+|---|---|
+| X1 | 状态变化后道具不可识别 |
+| X2 | 违反物理逻辑的损伤(玉石生锈等) |
+| X3 | 过度血腥/恐怖的损伤描绘 |
+| X4 | 出现任何人物形象,包括全身、半身、局部(手、手指、手臂等肢体) |
+| X5 | 道具处于被持有、握持、佩戴、使用中的状态 |
+| X6 | 出现暗示人物存在的元素(如手持痕迹、佩戴视角、使用姿态) |
\ No newline at end of file
diff --git a/data/skills/art_skills/2D_chinese_guofeng/art_prompt/art_scene.md b/data/skills/art_skills/2D_chinese_guofeng/art_prompt/art_scene.md
new file mode 100644
index 0000000..088c9ae
--- /dev/null
+++ b/data/skills/art_skills/2D_chinese_guofeng/art_prompt/art_scene.md
@@ -0,0 +1,160 @@
+---
+name: art_scene
+description: 场景图生成 · 约束手册
+metaData: art_skills
+---
+
+# 场景图生成 · 约束手册
+
+---
+
+## 一、场景美学原则
+
+1. **空间叙事** — 场景承载情绪与叙事功能,不是纯背景板
+2. **层次纵深** — 所有场景必须具备前/中/后景,杜绝扁平
+3. **质感至上** — 木质/石质/布料/水面等材质纹理必须超清晰
+4. **二次元为锚** — 一切画面以国风二次元为标准,拒绝3D写实/CG动画质感;追求细腻线条、赛璐璐平涂、日式渲染
+
+---
+
+## 二、季节色调映射
+
+| 季节 | 主色调 | 辅色调 | 提示词 |
+|---|---|---|---|
+| 春 | 青绿 + 朱红 | 月白、藤黄 | 春色青翠、桃花灼灼 |
+| 夏 | 青绿 + 靛蓝 | 月白、青绿 | 夏荷碧绿、浓荫蔽日 |
+| 秋 | 赭石 + 金黄 | 朱红、赭石 | 秋枫赤红、金叶飘零 |
+| 冬 | 月白 + 靛蓝 | 墨黑、青绿 | 冬雪素白、枯枝霜挂 |
+
+---
+
+## 三、室内场景
+
+### 空间规范
+
+| 维度 | 约束 | 提示词 |
+|---|---|---|
+| 风格 | 古代宅邸/宫殿/书房/闺阁,明清至唐宋 | 古代{朝代}风格 |
+| 材质 | 木质为主、石/玉/绢/纱为辅 | 檀木家具、玉石屏风、绢纱帷幔 |
+| 色调 | 中国传统色调 + 月白纱幔 + 朱红木漆 | 暖木色调、素雅陈设 |
+| 纵深 | 前/中/后景层次 | 前景{元素}、中景{元素}、后景{元素} |
+| 质感 | 木纹/布料垂感/瓷器光泽可辨 | 纹理清晰、质感细腻 |
+| 光照 | 自然光源为主(窗光/烛光),柔和光影 | 自然光漫射、烛光摇曳、柔和光影 |
+| 镜头感 | 赛璐璐平涂虚化前后景、线条清晰 | cel shading wash, clear lines |
+| 瑕疵感 | 木面有使用痕迹、石面有风化纹、布料有自然褶皱 | 岁月痕迹、自然磨损、布料自然垂褶 |
+
+### 室内类型速查
+
+| 类型 | 核心元素 | 氛围词 |
+|---|---|---|
+| 闺阁/卧房 | 纱帐、梳妆台、铜镜、花瓶 | 温馨私密、纱幔轻垂 |
+| 书房/书斋 | 书架、卷轴、笔墨、棋盘 | 幽静雅致、墨香四溢 |
+| 大殿/正厅 | 高柱、匾额、帷幕、烛台 | 庄严华美、气势恢宏 |
+| 庭院回廊 | 廊柱、石栏、花木、灯笼 | 曲径通幽、灯影摇曳 |
+| 厨房/膳堂 | 灶台、蒸笼、食器 | 烟火气息、温馨日常 |
+
+---
+
+## 四、室外场景
+
+### 空间规范
+
+| 维度 | 约束 | 提示词 |
+|---|---|---|
+| 类型 | 庭院/山林/溪畔/古桥/集市 | {场景},{季节},{时间} |
+| 天候 | 晴/阴/薄雾/细雨/飞雪 | 薄雾弥漫、细雨如丝 |
+| 植被 | 梅/竹/松/桃花/柳/荷(须符合季节) | 桃花灼灼、翠竹成林 |
+| 水体 | 溪/湖/瀑布需有光影反射 | 溪水潺潺、湖面如镜 |
+| 建筑 | 飞檐斗拱、青瓦白墙、石桥木亭 | 飞檐翘角、石拱桥 |
+| 空气感 | 必须有空气透视,远景模糊 | 远山如黛、空气透视 |
+| 光照 | 自然光为唯一光源,日光/月光需有日式渲染效果 | 自然光照、日式渲染、柔和光影 |
+| 镜头感 | 赛璐璐平涂虚化、线条清晰 | cel shading wash, clear lines |
+| 瑕疵感 | 石面青苔/风化、木面包浆、瓦片残缺 | 青苔斑驳、风化痕迹、岁月包浆 |
+
+### 室外类型速查
+
+| 类型 | 核心元素 | 氛围词 |
+|---|---|---|
+| 庭院花园 | 假山、池塘、花木、石径 | 花影扶疏、曲径通幽 |
+| 山林竹海 | 古木、竹林、山石、云雾 | 层峦叠嶂、云雾缥缈 |
+| 溪畔湖边 | 溪流、卵石、垂柳、荷花 | 溪水潺潺、柳影婆娑 |
+| 古桥长亭 | 石拱桥、长亭、柳树 | 长亭古道、杨柳依依 |
+| 集市街道 | 酒旗、摊贩、灯笼 | 热闹市井、烟火人间 |
+| 屋顶天台 | 瓦片、飞檐、夜空 | 月下独酌、清风徐来 |
+
+---
+
+## 五、四视图设定图规范
+
+### 视图定义
+
+> 摄像机固定于场景中心点,分别朝前/后/左/右四个方向拍摄,形成 360° 环视。
+
+| 位置 | 视图 | 视角方向 | 要求 | 提示词 |
+|---|---|---|---|---|
+| 左上 | 前视图 | 从中心点向前方平视(0°) | 展示场景正面主体结构与纵深层次 | front view、eye level、looking forward |
+| 右上 | 右视图 | 从中心点向右方平视(90°) | 展示场景右侧空间延伸与侧面结构 | right side view、eye level、looking right |
+| 左下 | 后视图 | 从中心点向后方平视(180°) | 展示场景背面结构与空间纵深 | back view、eye level、looking backward |
+| 右下 | 左视图 | 从中心点向左方平视(270°) | 展示场景左侧空间延伸与侧面结构 | left view、eye level、looking left |
+
+### 画面规范
+
+| 项目 | 约束 |
+|---|---|
+| 布局 | 同一画面 2×2 网格排列:上排(前视图 + 右视图),下排(后视图 + 左视图),形成从中心点环视的四方向视图 |
+| 人物 | **严禁出现任何人物、人影、人体轮廓** |
+| 视点 | 四视图均从同一中心点出发,视线高度一致(人眼平视高度) |
+| 一致性 | 四视图的建筑结构/材质/色调/光线/季节/天候完全一致 |
+| 光线 | 四视图光源方向统一,保持光影逻辑一致 |
+| 画面比例 | 建议 1:1(2×2 网格) |
+
+---
+
+## 六、提示词模板
+
+国风二次元场景四视图设定图,
+国风二次元,新国潮美学,日式动画渲染,赛璐璐平涂,细腻笔触,
+Japanese anime style, cel shading, fine brushstrokes,
+赛璐璐平涂,细腻线条,自然光照,日式渲染,
+scene design sheet, environment concept art, no people, no characters, no human figures,
+{室内/室外},{场景类型},{朝代风格},{季节+时间},
+前景:{元素}, 中景:{元素}, 后景:{元素},
+{色调描述}, {天候/氛围元素},
+{材质描述}, 空气透视, 纹理细节超清晰,
+材质自然磨损痕迹,岁月包浆,布料自然垂褶,
+柔和光影,日式渲染,自然光漫射,细腻质感,
+同一画面2×2网格排列:从场景中心点环视,前视图+右视图+后视图+左视图,
+四视图均从同一中心点平视拍摄,建筑结构一致,材质色调一致,光影逻辑一致,
+画面中无任何人物
+图中不要有任何文字
+
+---
+
+## 七、约束规则
+
+### 必守
+
+| 编号 | 规则 |
+|---|---|
+| R1 | 场景必须有「前中后景层次」 |
+| R2 | 室外必须包含「空气透视」 |
+| R3 | 场景图必须为「四视图设定图」(从中心点环视:前视图 + 右视图 + 后视图 + 左视图) |
+| R4 | 四视图的建筑结构/材质/色调/光线/季节/天候必须完全一致 |
+| R5 | 场景图中**严禁出现任何人物** |
+| R6 | 必须包含国风二次元关键词(Chinese style anime / cel shading / fine brushstrokes) |
+| R7 | 必须包含镜头光学特征(赛璐璐平涂 / 细腻线条 / 日式渲染) |
+| R8 | 材质必须带有自然磨损/岁月痕迹,禁止全新无瑕的"CG 感" |
+
+### 严禁
+
+| 编号 | 严禁 |
+|---|---|
+| X1 | 背景纯白/纯黑/无场景 |
+| X2 | 极端天候(暴风雨/雷电/暴雪,除非剧情需要) |
+| X3 | 场景无纵深/无层次 |
+| X4 | 植被/天候与季节矛盾 |
+| X5 | 出现任何人物、人影、人体剪影或人体轮廓 |
+| X6 | 四视图之间建筑结构/材质/色调不一致,或视点中心不统一 |
+| X7 | 3D 写实/CG 动画/卡通/游戏引擎质感(禁用 3D render、CGI、Unreal Engine、Unity 等词) |
+| X8 | 材质过于干净完美、无任何使用痕迹与岁月感(避免"塑料感") |
+| X9 | 光照过于均匀平坦、无景深虚化、无镜头光学特征 |
diff --git a/data/skills/art_skills/2D_chinese_guofeng/art_prompt/art_scene_derivative.md b/data/skills/art_skills/2D_chinese_guofeng/art_prompt/art_scene_derivative.md
new file mode 100644
index 0000000..d5dc6b7
--- /dev/null
+++ b/data/skills/art_skills/2D_chinese_guofeng/art_prompt/art_scene_derivative.md
@@ -0,0 +1,165 @@
+---
+name: art_scene_derivative
+description: 场景衍生资产生成 · 约束手册
+metaData: art_skills
+---
+
+# 场景衍生资产生成 · 约束手册
+
+---
+
+## 一、衍生原则
+
+1. **空间一致** — 建筑结构/布局/材质在所有变体中保持一致
+2. **景别驱动** — 同一场景通过不同景别展示不同叙事功能
+3. **时段切换** — 同一空间在不同时间段呈现不同光影氛围
+4. **天候变化** — 同一空间在不同天气下呈现不同情绪
+5. **二次元为锚** — 所有变体必须保持国风二次元质感,拒绝3D写实/CG动画感;保留细腻线条、赛璐璐平涂、日式渲染
+
+---
+
+## 二、景别变体
+
+### 景别定义
+
+| 景别 | 范围 | 叙事功能 | 提示词 |
+|---|---|---|---|
+| 大全景 | 场景全貌 + 周围环境 | 建立空间感、定位 | extreme wide shot、大全景 |
+| 全景 | 场景完整呈现 | 展示空间结构 | wide shot、全景 |
+| 中景 | 场景局部区域 | 聚焦功能区 | medium shot、中景 |
+| 近景 | 场景细部 | 材质/氛围道具特写 | close shot、近景 |
+| 特写 | 极局部细节 | 材质纹理/关键道具 | extreme closeup、特写 |
+
+### 景别衍生规范
+
+| 从基准图衍生 | 保持不变 | 允许变化 |
+|---|---|---|
+| 大全景 → 全景 | 建筑外观、整体布局 | 视角收窄、前景增加 |
+| 全景 → 中景 | 材质、色调、光线 | 裁切聚焦、景深变化 |
+| 中景 → 近景 | 材质、色调 | 景深浅、背景虚化 |
+| 近景 → 特写 | 材质纹理 | 极浅景深、微距感 |
+
+---
+
+## 三、时段变体
+
+### 时段定义
+
+| 时段 | 视觉特征 | 提示词 |
+|---|---|---|
+| 清晨 | 薄雾柔光、色调偏冷暖交织 | 晨光微熹、清晨薄雾 |
+| 正午 | 明亮、阴影短、色彩鲜明 | 正午阳光、光线明亮 |
+| 黄昏 | 金色色调、长影、天空渐变 | 暮色金辉、golden hour |
+| 夜间(月光) | 冷蓝色调、幽静清冷 | 月光清辉、moonlight |
+| 夜间(灯火) | 暖黄点缀、明暗对比 | 灯火阑珊、烛光点点 |
+
+### 时段衍生规范
+
+| 从基准时段衍生 | 保持不变 | 变化项 |
+|---|---|---|
+| 日间 → 黄昏 | 建筑/布局/材质 | 天空色调暖化、影子拉长 |
+| 日间 → 夜间 | 建筑/布局/材质 | 整体变暗、增加灯火/月色氛围 |
+| 室内日间 → 室内夜间 | 空间结构、家具 | 整体色调暖化、增加烛火/灯笼元素 |
+
+---
+
+## 四、天候变体
+
+### 天候定义
+
+| 天候 | 视觉特征 | 提示词 |
+|---|---|---|
+| 晴天 | 明亮、阴影清晰 | 晴空万里、阳光明媚 |
+| 阴天 | 光线均匀、无硬影 | 阴天柔光、overcast |
+| 薄雾 | 能见度降低、空气朦胧 | 薄雾弥漫、雾气缭绕 |
+| 细雨 | 水珠、湿润反光、雨丝 | 细雨如丝、雨幕轻纱 |
+| 飞雪 | 白色覆盖、雪花飘落 | 飞雪纷纷、银装素裹 |
+
+### 天候衍生规范
+
+| 从基准天候衍生 | 保持不变 | 变化项 |
+|---|---|---|
+| 晴 → 薄雾 | 建筑/布局 | 增加雾气层、远景模糊、饱和度降低 |
+| 晴 → 细雨 | 建筑/布局 | 增加雨丝、地面反光、色调偏冷 |
+| 晴 → 飞雪 | 建筑/布局 | 增加积雪、雪花、色调偏白 |
+| 植被需随天候逻辑适配 | — | 雨中花瓣湿润、雪中枯枝挂霜 |
+
+---
+
+## 五、四视图设定图规范
+
+### 视图定义
+
+> 摄像机固定于场景中心点,分别朝前/后/左/右四个方向拍摄,形成 360° 环视。
+
+| 位置 | 视图 | 视角方向 | 要求 | 提示词 |
+|---|---|---|---|---|
+| 左上 | 前视图 | 从中心点向前方平视(0°) | 展示场景正面主体结构与纵深层次 | front view、eye level、looking forward |
+| 右上 | 右视图 | 从中心点向右方平视(90°) | 展示场景右侧空间延伸与侧面结构 | right side view、eye level、looking right |
+| 左下 | 后视图 | 从中心点向后方平视(180°) | 展示场景背面结构与空间纵深 | back view、eye level、looking backward |
+| 右下 | 左视图 | 从中心点向左方平视(270°) | 展示场景左侧空间延伸与侧面结构 | left view、eye level、looking left |
+
+### 画面规范
+
+| 项目 | 约束 |
+|---|---|
+| 布局 | 同一画面四宫格(2×2),左上前视图+右上右视图+左下后视图+右下左视图,形成从中心点环视的四方向视图 |
+| 人物 | **严禁出现任何人物、人影、人体轮廓** |
+| 视点 | 四视图均从同一中心点出发,视线高度一致(人眼平视高度) |
+| 一致性 | 四视图的建筑结构/材质/色调/光线/季节/天候完全一致 |
+| 光线 | 四视图光源方向统一,保持光影逻辑一致 |
+| 画面比例 | 建议 1:1(2×2 网格) |
+
+---
+
+## 六、提示词模板
+
+国风二次元场景衍生四视图设定图,基于{场景名}概念图,
+国风二次元,新国潮美学,日式动画渲染,赛璐璐平涂,细腻笔触,
+Japanese anime style, cel shading, fine brushstrokes,
+保持场景空间结构一致,
+{景别视角(如有)}, {时段描述(如有)}, {天候描述(如有)},
+{前景}, {中景}, {后景},
+{色调描述}, {景深描述(如有)}, {天空色调变化(如有)}, {氛围调整(如有)},
+{天候视觉特征(如有)}, {材质表面变化(如有)}, {植被适配描述(如有)},
+材质自然磨损痕迹,岁月包浆,布料自然垂褶,
+柔和光影,日式渲染,自然光漫射,细腻质感,
+国风二次元高清渲染,高细节,细腻线条,赛璐璐平涂感,
+同一画面四宫格(2×2):从场景中心点环视,前视图+右视图+后视图+左视图,
+四视图均从同一中心点平视拍摄,建筑结构一致,材质色调一致,光影逻辑一致,
+画面中无任何人物
+图中不要有任何文字
+
+> **使用说明**:根据用户提供的信息自行判断需要应用的变化维度(景别/时段/天候),未提及的维度对应字段留空省略即可。无需为每种变体单独生成模板。
+
+---
+
+## 七、约束规则
+
+### 必守
+
+| 编号 | 规则 |
+|---|---|
+| R1 | 场景空间结构在所有变体中保持一致 |
+| R2 | 时段变体必须调整天空色调与氛围 |
+| R3 | 天候变体必须适配植被/材质表面 |
+| R4 | 必须为「四视图设定图」(从中心点环视:前视图 + 右视图 + 后视图 + 左视图) |
+| R5 | 四视图的建筑结构/材质/色调/光线/季节/天候必须完全一致 |
+| R6 | 场景图中**严禁出现任何人物** |
+| R7 | 根据用户提供的信息自行判断变化维度,无需拆分为独立模板 |
+| R8 | 必须包含国风二次元关键词(Chinese style anime / cel shading / fine brushstrokes) |
+| R9 | 必须包含镜头光学特征(赛璐璐平涂 / 细腻线条 / 日式渲染) |
+| R10 | 材质必须带有自然磨损/岁月痕迹,禁止全新无瑕的"CG 感" |
+
+### 严禁
+
+| 编号 | 严禁 |
+|---|---|
+| X1 | 变体间建筑结构/布局不一致 |
+| X2 | 天候与季节矛盾(夏天飞雪等) |
+| X3 | 变体间材质/风格突变 |
+| X4 | 出现任何人物、人影、人体剪影或人体轮廓 |
+| X5 | 四视图之间建筑结构/材质/色调不一致,或视点中心不统一 |
+| X6 | 3D 写实/CG 动画/卡通/游戏引擎质感(禁用 3D render、CGI、Unreal Engine、Unity 等词) |
+| X7 | 材质过于干净完美、无任何使用痕迹与岁月感(避免"塑料感") |
+| X8 | 光照过于均匀平坦、无景深虚化、无镜头光学特征 |
diff --git a/data/skills/art_skills/2D_chinese_guofeng/art_prompt/art_storyboard_video.md b/data/skills/art_skills/2D_chinese_guofeng/art_prompt/art_storyboard_video.md
new file mode 100644
index 0000000..f215d6d
--- /dev/null
+++ b/data/skills/art_skills/2D_chinese_guofeng/art_prompt/art_storyboard_video.md
@@ -0,0 +1,11 @@
+# 视频提示词 · 视觉风格约束
+
+生成视频提示词时,必须注入以下视觉风格标签:
+
+| 模式 | 风格标签 |
+|------|----------|
+| **通用多参模式(英文)** | `Chinese style anime, cel-shaded, neo-chic oriental aesthetic, cinematic, vivid colors, detailed brushwork` |
+| **通用首尾帧模式(英文)** | `Chinese style anime, cel-shaded, neo-chic oriental aesthetic, cinematic, vivid colors, detailed brushwork, shallow depth of field` |
+| **Seedance 2.0(中文)** | `国风二次元动画,赛璐璐平涂,新国潮东方美学,电影风格,色彩鲜明,细腻笔触` |
+
+
diff --git a/data/skills/art_skills/2D_chinese_guofeng/driector_skills/director_planning_style.md b/data/skills/art_skills/2D_chinese_guofeng/driector_skills/director_planning_style.md
new file mode 100644
index 0000000..6166330
--- /dev/null
+++ b/data/skills/art_skills/2D_chinese_guofeng/driector_skills/director_planning_style.md
@@ -0,0 +1,94 @@
+---
+name: director_planning_style
+description: 国风二次元约束 — 定义国风二次元新国潮在色调体系、光影方案、质感方向、场景空间元素、乐器选择与环境音上的全局约束。适用于任何叙事类型。
+metaData: director_skills
+---
+
+# 国风二次元约束 · 国风二次元新国潮 · 技法参考
+
+---
+
+## 一、色调体系与画面基调
+
+- **色调基底** — 全片以核心色盘为基底:月白(C1 #E8EAF5)、青绿(C2 #4A9B8A)、朱红(C3 #C93752)、靛蓝(C4 #2B4C7E)、金黄(C5 #D4AF37)、墨黑(C6 #1A1A2E)、胭脂(C7 #A94A5F)、赭石(C8 #965E3E)、藤黄(C9 #F5E375)、灰紫(C10 #7B6C85),整体色温偏中性(5000-5600K),饱和度中高(55-70%),呈现新国潮色盘饱满的东方古韵画面
+- **冷暖叙事对比** — 暖色(朱红 C3、金黄 C5、胭脂 C7、藤黄 C9)作为正向情感/华贵/喜庆的视觉信号;冷色(靛蓝 C4、墨黑 C6、青绿 C2)作为冲突/肃杀/孤寂的视觉信号。冷暖切换应与故事弧线同步,而非随意混用
+- **冷暖分配策略** — 武侠肃杀/悲戚孤绝段落使用冷色调(靛蓝 + 墨黑 + 青绿),禁用朱红/金黄暖光;仙侠飘逸/少女日常段落使用柔和暖调(月白 + 胭脂 + 藤黄);宫廷华贵/节日庆典段落使用朱红 + 金黄高光
+- **色盘先行原则** — 段落规划需先绑定情绪场景(仙侠飘逸/宫廷华贵/武侠肃杀/少女日常/月夜诗意/节日庆典等),再确定主色+辅色与光影方案,避免"剧情对了但情绪不对色"
+- **禁用色域** — 高饱和荧光色、霓虹色、数码感强色彩均与本风格不兼容。色相偏移容差 ±8°,饱和度偏移 ±10%,明度偏移 ±12%
+
+---
+
+## 二、光影方案体系
+
+- **光影即叙事** — 7 套光影方案对应不同情绪段落,导演规划阶段应在段落层面确定光影基调方向,而非逐镜指定
+- **赛璐璐光影为锚** — 所有光影方案必须保持赛璐璐平涂质感,阴影使用同色系加深,禁止黑色硬阴影,允许体积光/景深虚化等日式渲染技法
+- **光源角度** — 正给镜头默认 38.5° 斜射柔光(赛璐璐平涂质感),侧给镜头可适当调整
+
+| 光影方案 | 方案名 | 色调倾向 | 适用情绪 |
+|---|---|---|---|
+| A | 柔光清透 | 月白底 + 胭脂微暖肤光 | 少女日常、温馨甜蜜、治愈清新 |
+| B | 仙气飘逸 | 月白 + 青绿 + 金黄边缘光 | 仙侠飘逸、空灵意境、惊艳登场 |
+| C | 烛光暖影 | 赭石暖主导 + 墨黑暗部 | 夜间暧昧、亲密升温、暖意绵绵 |
+| D | 月光冷辉 | 靛蓝 + 月白冷光 | 月夜诗意、思念独处、宁静清冷 |
+| E | 窗纱透光 | 月白底 + 侧光斑驳 | 闺阁室内、书房日常、日间静谧 |
+| F | 宫廷华辉 | 朱红 + 金黄高光 + 墨黑暗部 | 宫廷华贵、庆典盛大、正式庄严 |
+| G | 冷调肃杀 | 靛蓝 + 墨黑 + 38.5°侧射冷光,无暖色 | 武侠对决、悲戚孤绝、氛围紧张 |
+
+- **冷暖光分配** — 暖色光(赭石暖/朱红/金黄)适用于正向情感/华贵段落;武侠肃杀/悲戚段落一律冷光。导演可根据叙事需要调整冷暖切换点
+- **氛围方向映射** — 每场戏的氛围方向应能映射到上述光影方案(A-G)的某一方向,确保视觉一致性
+
+---
+
+## 三、质感方向
+
+- **赛璐璐平涂为锚** — 国风二次元的核心:细腻线条、赛璐璐平涂、日式动画渲染、色块平滑渐变、禁止色块断层/色彩溢出
+- **细腻笔触 + 电影质感** — 这是画面质感的锚点。不是写实摄影,不是 3D CG,是二次元日式动画渲染加国风美学的融合
+- **材质二次元化** — 所有服化道的材质必须以赛璐璐平涂呈现:丝绸的光泽用平滑色块、金属的反光用冷光泽线条、玉石的润感用内透光色块。禁止"3D 感"和"写实摄影感"
+- **皮肤质感** — 粉白基调、赛璐璐平涂、自然光泽、柔和质感、内透光感、皮肤通透发光。禁止哑光/死白/蜡感/油光/过曝
+- **二次元不等于扁平** — 国风二次元新国潮强调在赛璐璐平涂基础上通过光影层次、景深虚化、体积光等手段增加空间感与电影感,而非扁平无纵深的卡通风格
+
+---
+
+## 四、国风二次元场景空间元素
+
+国风世界观特有的场景元素及其视觉叙事功能:
+
+- **纱帘/屏风/门框/雕花窗棂** — 天然的框架式构图道具,制造"看不透"的层次感与空间纵深,以赛璐璐线条呈现精致雕花细节
+- **庭院/花树/雨幕/青绿山水** — 留白构图的天然载体,景即情:满庭花开 = 释然、独坐雨中 = 孤寂、落叶纷飞 = 离愁、云雾缥缈 = 仙意空灵
+- **烛火/月色/窗光/灯笼** — 国风世界的光源载体,烛光 = 暖/私密(方案C)、月色 = 冷/孤寂(方案D)、窗光 = 日常/静谧(方案E)、灯笼 = 庆典/市井(方案F)
+- **飞檐斗拱/朱红宫墙/石拱桥/古典家具** — 建筑元素以新国潮美学呈现,细节丰富、赛璐璐线条清晰,材质带自然磨损/岁月包浆感,禁止全新无瑕的"塑料感"
+- **段落间用场景空镜过渡** — 本风格有丰富的场景资产(不同时段/天候/景别变体),段落衔接建议用场景空镜做情绪缓冲,不要硬切
+- **转折点用视觉而非台词** — 优先使用画面手段(光影突变、景别跳切、空镜隐喻)而非依赖对白解释
+- **前中后景层次** — 所有场景必须具备前/中/后景,杜绝扁平,室外必须包含空气透视(远山如黛)
+
+---
+
+## 五、古风乐器与环境音
+
+古风世界观下的声音元素约束:
+
+### 乐器选择
+
+- **箫** — 凄凉、孤寂、悲戚段落的核心乐器,与月夜诗意/仙侠飘逸氛围高度适配
+- **二胡** — 情感激荡、悲痛、思念段落,拉弦的哭腔感适合情绪爆发
+- **唢呐** — 情感波动剧烈段落(大悲大喜、命运转折、高潮),慎用但一用即核弹
+- **古琴** — 开场定调 / 平稳段落 / 仙侠意境,与箫搭配使用
+- **琵琶** — 紧张、急促段落的点缀,武侠对决场景的节奏推动器,不作主导
+- 弦乐铺底可增加电影感但不宜喧宾夺主
+
+### 乐器组合策略
+
+| 情绪阶段 | 乐器组合 |
+|---|---|
+| 平稳/开场/收尾 | 古琴独奏 或 古琴 + 箫 |
+| 仙侠/空灵/意境 | 箫 + 古琴 + 轻铃 |
+| 悲戚渐浓 | 箫 + 二胡 |
+| 情绪爆发/命运转折 | 唢呐独奏 或 唢呐 + 二胡 |
+| 紧张/急促/武侠 | 琵琶点缀 + 鼓点 + 弦乐衬底 |
+| 少女日常/甜蜜 | 古筝 + 竹笛 |
+| 宫廷/庆典/盛大 | 编钟 + 古筝 + 弦乐铺底 |
+
+### 古风环境音
+
+- **典型环境音层次** — 蝉鸣虫唱 / 溪水潺潺 / 风过竹林 / 市井叫卖 / 夜雨滴檐 / 衣料摩擦 / 风铃轻响 / 落花飘零 / 萤火虫光点微响
+- **每场戏标注 1-2 个核心环境音**,帮助后续音效设计。环境音层次越丰富,国风场景越有沉浸感
diff --git a/data/skills/art_skills/2D_chinese_guofeng/driector_skills/director_storyboard.md b/data/skills/art_skills/2D_chinese_guofeng/driector_skills/director_storyboard.md
new file mode 100644
index 0000000..fa7ba91
--- /dev/null
+++ b/data/skills/art_skills/2D_chinese_guofeng/driector_skills/director_storyboard.md
@@ -0,0 +1,202 @@
+---
+name: director_storyboard
+description: 导演分镜提示词技法 · 国风二次元新国潮
+metaData: director_skills
+---
+
+# 分镜提示词 · 国风二次元新国潮 · 风格专属技法
+
+---
+
+## 适用范围
+
+本 Skill 专用于**国风二次元新国潮**风格的分镜提示词生成。
+
+---
+
+## 情绪 → 面容/眼神词映射
+
+| 情绪输入 | 面容词 | 眼神词 | 微表情补充 |
+|----------|--------|--------|-----------|
+| 温柔 / 深情 | 神情温柔,眉目含情 | 眼神专注柔和,目光温暖 | 嘴角微扬,表情治愈 |
+| 坚定 / 勇敢 | 神情认真,目光清亮 | 眼神坚定,目光向前 | 下巴微抬,表情果敢 |
+| 羞涩 / 腼腆 | 脸颊泛红,眼神躲闪 | 眼神羞涩,目光低垂 | 嘴角轻抿,表情可爱 |
+| 凌厉 / 肃杀 | 神情冷峻,目光如刀 | 眼神锐利,目光坚定 | 下颌收紧,表情威严 |
+| 喜悦 / 欢快 | 表情灿烂,眼睛弯月 | 眼神明亮,目光灵动 | 脸颊微红,表情生动 |
+| 忧伤 / 哀婉 | 神情哀婉,眼神黯淡 | 眼神含泪,目光低垂 | 嘴角下沉,表情哀伤 |
+| 惊讶 / 惊喜 | 眼睛微睁,表情生动 | 眼神明亮,目光聚焦 | 嘴巴微张,表情意外 |
+| 沉思 / 内省 | 神情淡淡,目光悠远 | 眼神放空,目光失焦 | 表情平静,气质内敛 |
+| 疲惫 / 倦怠 | 眼神朦胧,表情柔和 | 目光略显疲惫,眼神柔和 | 微微打哈欠,表情慵懒 |
+| 期待 / 盼望 | 眼神发光,表情鲜活 | 眼神期待,目光闪烁 | 嘴角上扬,表情生动 |
+
+---
+
+## 光影氛围词库(国风二次元新国潮)
+
+### 时间段光线
+
+| 时间段 | 主光词 | 色调词 | 气氛词 |
+|--------|--------|--------|--------|
+| 清晨 | 柔和晨光,暖色侧射 | 月白 + 青绿 | 薄雾弥漫,空气清新 |
+| 正午 | 明亮阳光,直射柔光 | 朱红 + 金黄高光 | 光影清晰,色彩鲜明 |
+| 傍晚/黄昏 | 逆光剪影,暖色渐变 | 朱红 + 靛蓝渐变 | 夕阳余晖,轮廓光 |
+| 夜间 | 冷色背景 + 暖光点缀 | 靛蓝主调 + 暖黄光点 | 宁静温馨,灯光柔和 |
+| 雨天 | 漫射冷光,无主光源 | 青绿 + 月白 | 空气湿润,低对比 |
+
+### 情绪光影
+
+| 情绪基调 | 光线类型 | 补充约束 |
+|----------|----------|----------|
+| 仙侠飘逸 | 柔光漫射,飘逸动态 | 青绿色调,景深虚化,赛璐璐平涂 |
+| 宫廷华贵 | 暖光照明,局部高光 | 朱红色调,高光强调,景深层次 |
+| 少女日常 | 局部柔光,柔和阴影 | 胭脂色调,近景特写,清新氛围 |
+| 武侠肃杀 | 冷调阴影,硬光对比 | 靛蓝 + 墨黑,低饱和度,紧张氛围 |
+| 月夜诗意 | 月光照明,冷暖对比 | 靛蓝背景,暖光点缀,唯美氛围 |
+
+---
+
+## 场景质感约束词(按场景类型)
+
+| 场景类型 | 必加约束词 |
+|----------|-----------|
+| 仙侠场景 | 云雾缭绕、飞檐亭台、飘逸衣袂、青绿山水、赛璐璐平涂 |
+| 宫廷场景 | 朱红宫墙、金顶琉璃、雕梁画栋、汉白玉栏杆、新国潮装饰 |
+| 闺阁室内 | 屏风格扇、雕花窗棂、纱幔帐帘、古典家具、细腻笔触 |
+| 武侠场景 | 竹林/雪地/山崖、冷色调、氛围压抑、线条凌厉、新国潮风格 |
+| 节日庆典 | 灯笼/彩带/烟花、高饱和暖色、氛围热闹、人群熙攘 |
+| 夜晚街景 | 灯笼/街灯/店铺、暖光点缀、冷色背景、倒影反射、日式渲染 |
+
+---
+
+## 固定风格锚定词(所有输出必须包含)
+
+**国风二次元锚定(必选):**
+
+国风二次元,新国潮美学,日式动画渲染,赛璐璐平涂,细腻笔触
+
+**人物质感(含人物镜头时必选):**
+
+二次元国风造型,线条清晰,赛璐璐上色,服饰细节精致,光影层次丰富
+
+**场景质感(含场景镜头时必选):**
+
+国风二次元场景,传统建筑细节丰富,日式渲染技术,光影质感细腻
+
+**一致性锚定(参考图模式必选):**
+
+保持人物造型与参考图一致,保持场景风格与参考图一致,保持光影色彩基调统一
+
+**风格收尾(固定):**
+
+国风二次元电影质感,东方古韵,新国潮风格,日式动画渲染技法
+
+**画质锁定词(所有输出必须包含,置于风格收尾之后):**
+
+模式A(中文)——默认(画面无画内文字需求时):
+国风二次元高清渲染,高细节,细腻线条,赛璐璐平涂感,电影质感,画面无字幕、无水印、无标题叠字
+
+模式A(中文)——画内文字场景(画面描述中含牌匾/对联/书籍等道具文字时):
+国风二次元高清渲染,高细节,细腻线条,赛璐璐平涂感,电影质感,画面无字幕、无水印、无标题叠字,牌匾/对联等场景道具上的文字清晰可辨
+
+模式B(英文)——默认:
+Chinese style anime, neo-chic aesthetic, Japanese animation rendering technique, cel shading, fine brushstrokes, cinematic quality, high detail, no subtitles, no captions, no watermark, no title overlay
+
+模式B(英文)——画内文字场景:
+Chinese style anime, neo-chic aesthetic, Japanese animation rendering technique, cel shading, fine brushstrokes, cinematic quality, high detail, no subtitles, no captions, no watermark, no title overlay, legible text on in-scene props such as plaques and couplets
+
+**负向词模板(模式B 必须包含,置于提示词末尾):**
+
+> ⚠️ Seedream(模式A)**不支持负向提示词**,负向词仅适用于模式B。模式A 通过正向词中的质感锚定和画质锁定来保证画面质量。
+
+模式B(英文):
+no photorealistic, no realistic photography, no 3D render, no low-poly, no rough modeling, no plastic texture, no harsh lines, no western fantasy, no cyberpunk, no sci-fi, no modern elements, no cartoon style without anime quality, no subtitles, no captions, no watermark, no title overlay, no UI text
+
+---
+
+## 美学禁止项(生成时严格规避)
+
+以下词汇/风格不得出现于输出提示词中:
+
+- ❌ 写实摄影/3D写实渲染/照片级真实感词
+- ❌ 高饱和荧光色/霓虹色/数码感强
+- ❌ 西方奇幻/赛博朋克/过度现代元素
+- ❌ 粗劣线条/模糊画质/低精度建模
+- ❌ 卡通/动漫/二次元风格但无精致感
+- ❌ 扁平设计/无二次元纵深感
+- ❌ 色彩混乱/光影错误/透视错误
+- ❌ 现代建筑/现代服饰元素
+
+> 💡 **例外**:某些现代渲染技术(如体积光、景深虚化)可以合理使用,但应保持国风二次元美学基调。
+
+---
+
+## 完整生成示例
+
+> 以下为同一输入分别使用模式A和模式B的对照展示,实际使用时**仅输出其中一种**。
+
+### 输入(分镜表行数据)
+
+| 序号 | 画面描述 | 场景 | 关联资产名称 | 时长 | 景别 | 运镜 | 角色动作 | 情绪 | 光影氛围 |
+|------|---------|------|-------------|------|------|------|---------|------|----------|
+| 1 | 古装少女站在宫殿前,手持花枝,眼神温柔 | 宫殿 | 古装少女 | 6s | 中景 | 缓推 | 侧身持花,眼神温柔 | 温婉 / 典雅 | 暖光照明 |
+
+### 示例输出A(模式A · Seedream)
+
+[Prompt]
+国风二次元,新国潮美学,日式动画渲染,赛璐璐平涂,细腻笔触,二次元国风造型,线条清晰,赛璐璐上色,服饰细节精致,光影层次丰富,中景构图,古装少女站在宫殿前,手持花枝侧身而立,神情温柔,眼神温柔,朱红宫墙背景,金黄高光点缀,体积光氛围,景深虚化,国风二次元电影质感,东方古韵,新国潮风格,日式动画渲染技法,国风二次元高清渲染,高细节,细腻线条,赛璐璐平涂感,电影质感,画面无字幕、无水印、无标题叠字。
+Based on the reference image of 古装少女,maintain consistent: face features, hairstyle, costume details. Generate a new scene: standing in front of palace at dusk, holding flower branch. Keep visual style identical to reference.
+
+
+### 示例输出B(模式B · Nanobanana)
+
+```xml
+
+You are an anime storyboard artist.
+Maintain strict visual continuity across all shots.
+
+
+Image [1]: 古装少女 — 国风二次元造型,典雅服饰,新国潮美学
+
+
+- Same outfit, hairstyle, face features across ALL shots
+- Same cel shading style, Japanese animation rendering
+- Same scene lighting, Chinese anime aesthetic
+- Do NOT introduce photorealistic or western fantasy elements
+
+
+Medium shot, ancient Chinese girl in elegant traditional attire standing before palace, holding flower branch, gentle expression, soft gaze, cinematic lighting, volumetric fog, depth of field blur, cel shading with fine brushstrokes, Chinese style anime, neo-chic aesthetic, Japanese animation rendering technique, high detail, no subtitles, no captions, no watermark, no title overlay.
+
+
+no photorealistic, no realistic photography, no 3D render, no low-poly, no rough modeling, no plastic texture, no harsh lines, no western fantasy, no cyberpunk, no sci-fi, no modern elements, no cartoon style without anime quality, no subtitles, no captions, no watermark, no title overlay, no UI text
+
+```
+
+## 快速参考卡
+
+### 情绪 → 画面词速查
+
+| 情绪 | 面容关键词 | 光线匹配 |
+|------|-----------|---------|
+| 温柔 | 神情温柔,眼神专注 | 柔光漫射 + 暖光 |
+| 坚定 | 神情认真,目光清亮 | 暖光侧射 + 清晰轮廓 |
+| 羞涩 | 脸颊泛红,眼神躲闪 | 暖光侧射 + 腮红 |
+| 凌厉 | 神情冷峻,目光如刀 | 冷调阴影 + 硬光 |
+| 喜悦 | 表情灿烂,眼睛弯月 | 暖光照明 + 高饱和 |
+| 忧伤 | 神情哀婉,眼神黯淡 | 冷调阴影 + 低对比 |
+| 疲惫 | 眼神朦胧,表情柔和 | 柔和光线 + 低对比 |
+| 沉思 | 神情淡淡,目光悠远 | 体积光 + 雾气 |
+| 期待 | 眼神发光,表情鲜活 | 暖光侧射 + 高亮 |
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/data/skills/art_skills/2D_chinese_guofeng/driector_skills/director_storyboard_table_style.md b/data/skills/art_skills/2D_chinese_guofeng/driector_skills/director_storyboard_table_style.md
new file mode 100644
index 0000000..019b7cb
--- /dev/null
+++ b/data/skills/art_skills/2D_chinese_guofeng/driector_skills/director_storyboard_table_style.md
@@ -0,0 +1,68 @@
+---
+name: director_storyboard_table_style
+description: 分镜表国风二次元约束 — 定义国风二次元新国潮在分镜表中的赛璐璐光影规范、色调绑定、动作节奏、环境动态、运镜禁忌与转场禁忌。适用于任何叙事类型。
+metaData: director_skills
+---
+
+# 分镜表国风二次元约束 · 国风二次元新国潮 · 技法参考
+
+---
+
+## 一、分镜表定位
+
+分镜表是导演将剧本转化为镜头语言的核心工具。以下仅提供国风二次元新国潮风格在分镜表层面的约束规范。
+
+---
+
+## 二、光影与氛围
+
+- **赛璐璐光影统一** — 一场戏内光影方案必须保持赛璐璐平涂一致性,阴影使用同色系加深(禁止黑色硬阴影),除非有明确的叙事转折(如烛光熄灭→月光冷辉)
+- **情绪色盘绑定** — 每场戏至少绑定 1 个情绪场景(如仙侠飘逸/宫廷华贵/武侠肃杀/少女日常/月夜诗意/节日庆典),并在镜头组内保持主色+辅色连续性,色彩取自核心色盘(月白 #E8EAF5 / 青绿 #4A9B8A / 朱红 #C93752 / 靛蓝 #2B4C7E / 金黄 #D4AF37 / 墨黑 #1A1A2E / 胭脂 #A94A5F / 赭石 #965E3E / 藤黄 #F5E375 / 灰紫 #7B6C85)
+- **光源角度规范** — 正给镜头光源默认 38.5° 斜射柔光(赛璐璐平涂质感),侧给镜头根据画面需要调整。描述光影时须区分正给/侧给的角度差异,光影渲染始终保持日式动画质感
+- **冷暖色调与叙事阶段匹配** — 武侠肃杀/忧伤哀婉段落使用冷色调(靛蓝 + 墨黑 + 青绿),禁用暖橙/朱红暖光;仙侠飘逸/少女日常段落使用柔和暖调(月白 + 胭脂 + 藤黄);宫廷华贵段落使用朱红 + 金黄高光
+- **光影转场是高级手段** — 从窗纱透光渐变到烛光暖影 = 日转夜的时间流逝。在分镜表中标注光影变化点,转场过程中赛璐璐色块必须平滑渐变,禁止色块断层/色彩溢出
+- **日式渲染光效** — 允许合理使用体积光(volumetric light)、景深虚化、轮廓光等现代渲染技法,但必须保持国风二次元赛璐璐平涂的美学基调,禁止 3D 写实/CG 动画光效
+
+---
+
+## 三、环境动态
+
+- **环境动态增加画面呼吸感** — 花瓣飘落、云雾缭绕、水波荡漾、纱帘飘动、衣袂飘逸。每 3-4 个镜头至少安排一个有环境动态的镜头,避免画面"死"掉
+- **国风二次元环境元素优先** — 环境动态应选用国风世界观内的元素:落花、飞絮、轻烟、流水、风过竹林、烛火摇曳、云雾流动、萤火虫光点、雪花飘落,禁止出现现代元素
+- **赛璐璐动态质感** — 环境动态元素(花瓣/烟雾/水波等)必须保持赛璐璐平涂质感与细腻线条,禁止出现 3D 粒子特效或写实流体效果
+
+---
+
+## 四、国风二次元动作节奏
+
+- **动作优雅且带动画感** — 人物动作默认缓慢优雅,但可在关键帧上做二次元夸张处理(如武侠对决中的凌厉线条、少女回眸时的发丝飘动),起身、转身、抬手应标注"缓慢/优雅"
+- **服饰动态是核心画面资产** — 国风二次元服饰(宽袖、裙摆、披帛、飘带)的飘动是天然的动态资产,可在画面描述中加入衣袂/裙摆/飘带的动态,赛璐璐渲染下的服饰飘动应线条清晰、层次分明
+- **仪态约束** — 国风人物的举止应符合古典气质:行走稳缓、举手投足含蓄内敛、不出现现代化的肢体语言(如耸肩、摊手)。二次元角色可在微表情上略有夸张(眼睛弯月、脸颊泛红),但肢体动作仍需古典克制
+- **头身比一致** — 动作设计中角色必须保持 6-7 头身的二次元古典比例,禁止因动态姿势而破坏头身比
+
+---
+
+## 五、材质与质感约束
+
+- **赛璐璞平涂为锚** — 所有镜头中人物/服饰/道具/场景的渲染必须保持赛璐璞平涂质感,线条细腻清晰,色块平滑,禁止 3D 写实/CG 动画/照片级渲染
+- **服饰材质** — 丝绸 + 刺绣 + 珠光面料的质感用赛璐璞平涂表现,纹理必须超清晰,衣服质感清晰
+- **道具材质** — 金属冷光泽、玉质通透、木纹清晰、瓷质温润,均以赛璐璞平涂 + 细腻笔触呈现,禁止写实材质渲染
+- **场景材质** — 木面有使用痕迹、石面有风化纹、布料有自然褶皱,材质带有岁月感但以国风二次元笔触呈现,禁止"塑料感"的全新无瑕材质
+
+---
+
+## 六、色彩约束
+
+- **核心色盘锁定** — 分镜表中所有镜头的色彩必须取自核心色盘(C1-C10),色相偏移容差 ±8°,饱和度偏移 ±10%,明度偏移 ±12%
+- **禁止荧光色** — 严禁高饱和荧光色/霓虹色/数码感强的色彩出现
+- **线条颜色** — 墨黑或深棕,禁止纯黑粗线条
+- **阴影色** — 同色系加深,禁止黑色硬阴影
+- **整体色温** — 偏中性 5000-5600K 自然光基调,对比度 45-65%,饱和度 55-70%(新国潮色盘饱满)
+
+---
+
+## 七、运镜禁忌
+
+- **禁用快速运镜** — 甩镜、急推、手持晃动与国风二次元新国潮的优雅气质冲突,武侠对决场景可适度加快运镜节奏但仍需保持画面清晰
+- **禁用花式转场** — 划屏、旋转、百叶窗等与本风格不兼容
+- **禁用写实镜头语言** — 手持摇晃/纪录片式跟拍/鱼眼镜头等与二次元美学冲突,破坏赛璐璞平涂的画面纯净感
diff --git a/data/skills/art_skills/2D_chinese_guofeng/images/1.png b/data/skills/art_skills/2D_chinese_guofeng/images/1.png
new file mode 100644
index 0000000..f88fa5a
Binary files /dev/null and b/data/skills/art_skills/2D_chinese_guofeng/images/1.png differ
diff --git a/data/skills/art_skills/2D_chinese_guofeng/images/场景原始.png b/data/skills/art_skills/2D_chinese_guofeng/images/场景原始.png
new file mode 100644
index 0000000..c3a22ee
Binary files /dev/null and b/data/skills/art_skills/2D_chinese_guofeng/images/场景原始.png differ
diff --git a/data/skills/art_skills/2D_chinese_guofeng/images/场景衍生.png b/data/skills/art_skills/2D_chinese_guofeng/images/场景衍生.png
new file mode 100644
index 0000000..ae43acb
Binary files /dev/null and b/data/skills/art_skills/2D_chinese_guofeng/images/场景衍生.png differ
diff --git a/data/skills/art_skills/2D_chinese_guofeng/images/女性原始.png b/data/skills/art_skills/2D_chinese_guofeng/images/女性原始.png
new file mode 100644
index 0000000..f31b8ad
Binary files /dev/null and b/data/skills/art_skills/2D_chinese_guofeng/images/女性原始.png differ
diff --git a/data/skills/art_skills/2D_chinese_guofeng/images/女性衍生.png b/data/skills/art_skills/2D_chinese_guofeng/images/女性衍生.png
new file mode 100644
index 0000000..6fb9cad
Binary files /dev/null and b/data/skills/art_skills/2D_chinese_guofeng/images/女性衍生.png differ
diff --git a/data/skills/art_skills/2D_chinese_guofeng/prefix.md b/data/skills/art_skills/2D_chinese_guofeng/prefix.md
new file mode 100644
index 0000000..44e71d6
--- /dev/null
+++ b/data/skills/art_skills/2D_chinese_guofeng/prefix.md
@@ -0,0 +1,99 @@
+# 全局美学基础 · 国风二次元新国潮
+
+---
+
+## 一、风格基因
+
+| 维度 | 定义 |
+|---|---|
+| **一级风格** | 国风二次元新国潮(Chinese Style Anime Neo-Chic) |
+| **二级风格** | 二次元动画 · 赛璐璐平涂 + 日式渲染 |
+| **情感基调** | 东方古韵、新国潮时尚、电影质感、意境深远 |
+| **质感锚词** | 赛璐璐上色、细腻笔触、现代渲染、电影构图 |
+
+---
+
+## 二、全局色彩盘(风格基线)
+
+### 色彩使用层级
+
+| 层级 | 约束强度 | 说明 |
+|---|---|---|
+| L1 硬约束 | 高 | 中国传统色基线、二次元配色、日式渲染 |
+| L2 软约束 | 中 | 场景色、服饰色、点缀色可按情绪微调 |
+| L3 例外机制 | 低 | 特殊场景/高光时刻可临时突破局部色彩 |
+
+### 核心色盘
+
+| 序号 | 色名 | 色值 | 用途 |
+|---|---|---|---|
+| C1 | 月白 | #E8EAF5 | 天空、云雾、衣物底色 |
+| C2 | 青绿 | #4A9B8A | 山水、植被、青绿山水 |
+| C3 | 朱红 | #C93752 | 建筑、服饰、喜庆场景 |
+| C4 | 靛蓝 | #2B4C7E | 夜空、冷色调、忧郁氛围 |
+| C5 | 金黄 | #D4AF37 | 装饰、纹样、高光点缀 |
+| C6 | 墨黑 | #1A1A2E | 线条、轮廓、暗部阴影 |
+| C7 | 胭脂 | #A94A5F | 人物肤色、腮红、唇色 |
+| C8 | 赭石 | #965E3E | 木质建筑、地面、暖调 |
+| C9 | 藤黄 | #F5E375 | 花饰、暖光、点缀色 |
+| C10 | 灰紫 | #7B6C85 | 阴影、过渡、氛围色 |
+
+### 硬约束色(默认锁定)
+
+| 色项 | 对应色 | 规则 |
+|---|---|---|
+| 整体色调 | 中国传统色 + 动漫配色 | 禁止高饱和荧光色 |
+| 线条颜色 | 墨黑或深棕 | 禁止纯黑粗线条 |
+| 阴影 | 同色系加深 | 禁止黑色硬阴影 |
+| 赛璐璐色块 | 平滑渐变 | 禁止色块断层/色彩溢出 |
+
+### 情绪色盘
+
+| 情绪场景 | 主色 | 辅色 | 光效与对比建议 | 画面关键词 |
+|---|---|---|---|---|
+| 仙侠飘逸 | C1 月白 + C2 青绿 | C5 金黄 + C7 胭脂 | 柔和光线,飘逸动态,赛璐璐质感 | 飘逸、仙气、空灵 |
+| 宫廷华贵 | C3 朱红 + C5 金黄 | C1 月白 + C6 墨黑 | 暖光照明,高光强调,景深层次 | 华丽、庄严、气派 |
+| 武侠对决 | C6 墨黑 + C4 靛蓝 | C2 青绿 + C8 赭石 | 冷调阴影,硬光对比,氛围紧张 | 冷峻、凌厉、肃杀 |
+| 少女日常 | C7 胭脂 + C1 月白 | C9 藤黄 + C10 灰紫 | 柔和暖光,近景特写,清新氛围 | 甜美、清新、治愈 |
+| 节日庆典 | C3 朱红 + C9 藤黄 | C5 金黄 + C7 胭脂 | 高饱和暖光,全局高亮,色彩丰富 | 热闹、欢快、盛大 |
+| 月夜诗意 | C4 靛蓝 + C1 月白 | C6 墨黑 + C5 金黄点缀 | 冷色调月光,局部暖光,明暗对比 | 宁静、清冷、唯美 |
+
+### 色温约束
+
+| 参数 | 值 | 说明 |
+|---|---|---|
+| 整体色温 | 偏中性 5000-5600K(推荐) | 自然光主基调 |
+| 对比度 | 中 45-65%(建议区间) | 丰富层次感 |
+| 饱和度 | 中高 55-70%(建议区间) | 新国潮色盘饱满 |
+
+### 容差与例外
+
+| 项目 | 建议容差 |
+|---|---|
+| 色相偏移 | ±8° |
+| 饱和度偏移 | ±10% |
+| 明度偏移 | ±12% |
+
+---
+
+## 三、全局约束规则
+
+### 必守规则(所有技能继承)
+
+| 编号 | 规则 |
+|---|---|
+| R1 | 必须包含「国风二次元」风格锚定词 |
+| R2 | 必须声明「赛璐璐平涂 + 日式动画渲染」 |
+| R3 | 必须声明「新国潮美学 + 东方古韵」 |
+| R4 | 必须声明「细腻笔触 + 电影质感」 |
+| R5 | 必须声明「国风二次元电影风格」 |
+
+### 严禁项(所有技能继承)
+
+| 编号 | 严禁内容 |
+|---|---|
+| X1 | 严禁「写实摄影/3D写实渲染/照片级真实感」 |
+| X2 | 严禁「高饱和荧光色/霓虹色/数码感强」 |
+| X3 | 严禁「西方奇幻/赛博朋克/过度现代元素」 |
+| X4 | 严禁「粗劣线条/模糊画质/低精度」 |
+| X5 | 严禁「色彩混乱/风格不统一/审美崩坏」 |
\ No newline at end of file
diff --git a/data/skills/art_skills/2D_flat_design/README.md b/data/skills/art_skills/2D_flat_design/README.md
new file mode 100644
index 0000000..f1cb3fe
--- /dev/null
+++ b/data/skills/art_skills/2D_flat_design/README.md
@@ -0,0 +1,33 @@
+# 2D扁平风(Flat Design)风格说明
+
+本风格专为"2D扁平风(Flat Design)"题材打造,所有美术提示词、规范和生成内容均严格限定于:
+
+- **扁平设计风格**:以扁平设计(Flat Design)为核心,涵盖UI设计、信息图表、插画等,体现现代简约美学。
+- **纯色色块质感**:所有角色、场景、道具均以2D扁平风格为标准,强调纯色填充、无阴影无渐变、简洁线条。
+- **简约现代美学**:在扁平风格基础上追求清晰表达,画面色调明快简洁,细节简化,整体氛围简约现代、舒适宜人。
+- **情感表达**:适合展现温柔、治愈、浪漫的扁平风格内容,强调现代简约美学下的情感表达。
+
+## 适用范围
+
+- 2D扁平风题材的AI美术生成(角色、场景、道具、分镜等)
+- 需要极致扁平质感、简洁线条、现代简约氛围的视觉创作
+
+## 严禁内容
+
+- 写实渲染、3D渲染、照片级真实感
+- 阴影、渐变、纹理、光影
+- 复杂细节、精细纹理、写实背景
+- 黑暗暴力、成人向内容
+
+## 风格体验
+
+在本风格下,您将体验到:
+
+- 角色面容简约、气质清新,造型、服饰均为2D扁平设计风格
+- 场景空间层次简洁,线条清晰流畅,氛围真实且富有现代感
+- 道具、日常物品、环境细节均为扁平化造型,工艺简洁,质感清爽
+- 分镜与画面均以2D扁平为基础,强调叙事与情感表达
+
+---
+
+本风格仅适用于"2D扁平风(Flat Design)"相关项目。如需其他风格(如写实3D、插画、现代3D等),请勿使用本套提示词。
\ No newline at end of file
diff --git a/data/skills/art_skills/2D_flat_design/art_prompt/art_character_derivative_flat.md b/data/skills/art_skills/2D_flat_design/art_prompt/art_character_derivative_flat.md
new file mode 100644
index 0000000..b4b195a
--- /dev/null
+++ b/data/skills/art_skills/2D_flat_design/art_prompt/art_character_derivative_flat.md
@@ -0,0 +1,300 @@
+# 人物衍生资产生成 · 扁平风约束手册
+
+---
+
+## 一、叠加原则
+
+1. **轮廓不变** — 叠加后线条轮廓必须与底模完全一致,禁止轮廓偏移
+2. **姿态不变** — 保持底模自然站立姿态,禁止任何姿态/动作/体态变化
+3. **逐层可控** — 每层独立描述,便于按层替换(换装不换妆)
+4. **风格统一** — 所有服化元素服从同一扁平美学体系
+5. **色块不降** — 叠加后色块标准不低于底模
+6. **纯服化范畴** — 仅叠加妆容/发型/服饰/配饰,禁止引入道具、场景、环境、动作
+
+---
+
+## 二、叠加层级
+
+| 层级 | 内容 | 说明 |
+|---|---|---|
+| L0 | 底模 | 基础形象底模,不修改 |
+| L1 | 妆容(决策层) | 先分析用户线索,再决策「基础妆 / 轻妆 / 正式妆」强度 |
+| L2 | 发型造型 | 发髻/束发/编发 + 发饰 |
+| L3 | 中衣/内搭 | 替换白色基础中衣 |
+| L4 | 外衣/主服 | 大袖衫/直裾/大氅等 |
+| L5 | 配饰 | 头饰/耳饰/项饰/腰饰/手饰 |
+
+---
+
+## 三、妆容约束(L1)
+
+### 底模到衍生妆造策略(关键)
+
+> 角色底模虽为素颜,但衍生资产默认进入妆造流程。系统应根据用户提供的线索分析妆造需求,并在基础妆、轻妆、正式妆之间决策强度,而不是保持素颜。
+
+### L1 线索分析与妆容决策
+
+| 步骤 | 处理内容 | 决策结果 |
+|---|---|---|
+| S1 | 提取用户线索:面部状态词、情绪词、强度词 | 形成妆容需求摘要 |
+| S2 | 过滤非妆容线索:道具/场景/动作/姿态词不作为上妆依据 | 防止误判 |
+| S3 | 匹配妆容风格矩阵并给出强度档 | 基础妆 / 轻妆 / 正式妆 |
+| S4 | 生成最终 L1 提示词 | 只输出结论,不输出分析过程 |
+
+### 线索到妆容映射(执行口径)
+
+| 线索类型 | 典型线索 | L1 决策 |
+|---|---|---|
+| 无明显面部强调线索 | 仅服饰/发型变化,未强调情绪与状态 | 基础妆 |
+| 轻微面部线索 | 轻柔、含笑、气色微提 | 轻妆(极淡) |
+| 明确病弱线索 | 面色苍白、唇色极淡 | 病弱梨妆(轻妆) |
+| 明确正式仪式线索 | 盛装、典礼、华贵亮相 | 正式妆(受控) |
+
+### 女性妆容风格矩阵
+
+| 风格 | 适用场景 | 核心提示词 |
+|---|---|---|
+| 清雅素妆 | 日常、初遇、闺中 | 扁平妆容、淡雅色块、简约化妆 |
+| 冷艳霜妆 | 正式、对峙、权力 | 扁平冷妆、简洁线条、色块妆容 |
+| 柔媚桃妆 | 甜宠、暧昧、心动 | 扁平桃妆、粉色调色、色块表达 |
+| 病弱梨妆 | 受伤、虚弱 | 扁平病妆、苍白肤色、淡色唇 |
+| 华贵凤妆 | 大婚、盛装 | 扁平浓妆、色块浓郁、精致线条 |
+
+### 通用底肤(所有妆容共享)
+
+| 项目 | 约束 | 提示词 |
+|---|---|---|
+| 质感 | 单色填充、无渐变 | 单色皮肤、扁平肌肤、solid skin |
+| 白度 | 浅色单色、均匀 | 浅肤色、单色肤色 |
+| 内透光 | 无内透光、纯平面 | 无光泽、无透光 |
+| 禁止 | 渐变/阴影/立体感 | — |
+
+### 基础妆细化(默认档)
+
+| 项目 | 约束 | 提示词 |
+|---|---|---|
+| 眉部 | 线条勾勒、单色填充 | 线条眉、扁平眉形 |
+| 眼部 | 简化色块、无瞳孔细节 | 扁平眼、色块眼部 |
+| 面颊 | 极淡色块、不可明显堆色 | 极淡腮红、色块提气 |
+| 唇部 | 单色润色、保持克制 | 单色唇、扁平唇 |
+| 整体 | 看得出有妆造,但色块非常轻 | 基础扁平妆、伪素颜扁平 |
+
+---
+
+## 四、发型造型约束(L2)
+
+### 女性造型类型
+
+| 造型 | 描述 | 适用 | 提示词 |
+|---|---|---|---|
+| 半挽云髻 | 发顶挽髻+后方垂发 | 日常、出行 | 扁平云髻、简约发髻 |
+| 飞仙髻 | 高髻飞挑、简洁线条 | 仙境、亮相 | 扁平飞髻、线条高髻 |
+| 堕马髻 | 侧偏低髻、慵懒线条 | 私密、暧昧 | 扁平堕髻、线条侧髻 |
+| 双环髻 | 双髻对称、少女线条 | 年轻角色 | 扁平双髻、简单双环 |
+| 全散发 | 长发全散、配简单发饰 | 受伤、落魄 | 扁平散发、线条长发 |
+| 束发马尾 | 高束干练、简洁线条 | 习武、行动 | 扁平马尾、线条束发 |
+
+### 女性发饰
+
+| 项目 | 约束 | 提示词 |
+|---|---|---|
+| 风格 | 扁平化装饰、几何形 | 扁平发饰、几何装饰 |
+| 材质 | 线条勾勒、单色填充 | 线条饰品、色块发饰 |
+| 工艺 | 简洁线条、极简工艺 | 简洁线条、扁平工艺 |
+
+### 男性造型类型
+
+| 造型 | 适用 | 提示词 |
+|---|---|---|
+| 束发半冠 | 日常、文人 | 扁平束发、线条冠 |
+| 全冠高束 | 正式、朝堂 | 扁平全冠、线条束发 |
+| 散发披肩 | 私密、受伤 | 扁平散发、线条长发 |
+| 战束马尾 | 战斗、习武 | 扁平战发、线条马尾 |
+
+---
+
+## 五、服饰约束(L3+L4)
+
+### 女性服饰矩阵
+
+| 风格 | 款式 | 适用 | 提示词 |
+|---|---|---|---|
+| 简约飘逸装 | 多层大袖衫、扁平线条 | 日常、仙境 | 扁平大袖、线条衣衫 |
+| 端庄礼服 | 曲裾深衣/襦裙、几何线条 | 朝堂、宴会 | 扁平曲裾、简约深衣 |
+| 轻便常服 | 窄袖襦裙/短衫、简洁线条 | 行动、习武 | 扁平窄袖、简洁短衫 |
+| 寝衣 | 薄纱内衫、素色扁平 | 室内、夜间 | 扁平寝衣、素色衣物 |
+| 大婚嫁衣 | 凤冠霞帔、层叠色块 | 婚礼 | 扁平嫁衣、多层色块 |
+
+### 女性服饰通用约束
+
+| 项目 | 约束 | 提示词 |
+|---|---|---|
+| 主色 | 白色/月白/银灰为默认 | 白色扁平衣服、简约衣物 |
+| 材质 | 纯色色块、无纹理 | 纯色衣物、无纹理 |
+| 质感 | 线条必须清晰 | 线条清晰、色块分明 |
+| 肩部 | 肩饰/披帛/云肩线条 | 线条肩饰、扁平云肩 |
+| 层次 | 多层叠穿、色块分明 | 多层叠穿、扁平层次 |
+
+### 男性服饰矩阵
+
+| 风格 | 适用 | 提示词 |
+|---|---|---|
+| 文人雅装 | 日常、书房 | 扁平长衫、简约衣衫 |
+| 武将劲装 | 战斗、练武 | 扁平劲装、简洁战服 |
+| 玄衣大氅 | 出场、夜行 | 扁平大氅、线条披风 |
+| 常服便装 | 休闲、私密 | 扁平常服、简约便装 |
+| 礼服朝服 | 朝堂、典礼 | 扁平朝服、简约礼袍 |
+
+---
+
+## 六、配饰约束(L5)
+
+### 女性配饰
+
+| 类型 | 约束 | 提示词 |
+|---|---|---|
+| 头饰 | 扁平化、几何形 | 扁平头饰、几何发饰 |
+| 耳饰 | 线条流苏/玉珰 | 线条耳环、扁平珰 |
+| 项饰 | 线条璎珞/项圈 | 线条璎珞、扁平项圈 |
+| 腰饰 | 线条宫绦/玉佩 | 线条宫绦、扁平玉佩 |
+| 手饰 | 线条玉镯/臂钏 | 线条手镯、扁平钏 |
+
+### 男性配饰
+
+| 类型 | 约束 | 提示词 |
+|---|---|---|
+| 发冠 | 扁平冠、简洁线条 | 扁平冠、线条冠 |
+| 腰封 | 线条腰封、扁平色块 | 线条腰封、扁平带 |
+| 玉佩 | 扁平玉佩、简洁造型 | 扁平玉佩、线条佩 |
+| 兵器 | 佩剑/扇/笛(可选) | 扁平剑、线条扇 |
+
+---
+
+## 七、服化组合速查
+
+| 场景 | 妆容 | 发型 | 服饰 | 配饰 |
+|---|---|---|---|---|
+| 日常闺中 | 清雅素妆 | 半挽云髻 | 简约飘逸装 | 扁平中等 |
+| 初次相遇 | 清雅素妆 | 半挽/飞仙 | 简约飘逸装 | 扁平中偏多 |
+| 甜宠互动 | 柔媚桃妆 | 半挽/堕马 | 简约/轻便 | 扁平中等 |
+| 正式亮相 | 冷艳霜妆 | 飞仙髻 | 端庄礼服 | 扁平极繁 |
+| 夜间密谈 | 清雅/桃妆 | 全散/堕马 | 寝衣 | 扁平极简 |
+| 受伤落魄 | 病弱梨妆 | 全散(乱) | 破损常服 | 扁平极简/无 |
+| 大婚典礼 | 华贵凤妆 | 飞仙髻 | 嫁衣 | 扁平极繁 |
+| 习武行动 | 素妆(极淡) | 束发马尾 | 轻便常服 | 扁平简 |
+
+---
+
+> **🔍 未覆盖场景推断规则**
+>
+> 当用户描述的场景/情境不在上表时,根据本风格核心基因自行推断:
+>
+> | 推断维度 | 扁平古风基因 |
+> |---|---|
+> | 妆容强度 | 默认清雅素妆(色块极简);正式/亮相→冷艳霜妆;甜宠/约会→柔媚桃妆;弱化/虚弱→病弱梨妆 |
+> | 发型 | 日常→半挽云髻或堕马髻;正式→飞仙髻;私密/夜晚→全散发;行动→束发马尾 |
+> | 服饰 | 所有服饰必须转化为扁平色块表达;纹样极度简化;多层叠穿保留轮廓感即可 |
+> | 配饰繁度 | 扁平化处理优先;正式→扁平极繁(简化为色块头饰+腰饰轮廓);日常→扁平中等 |
+> | 色调倾向 | 低饱和古风色系(茶白/竹青/藕粉/砖红);无渐变;明确边界线 |
+
+## 八、四视图设定图规范
+
+### 视图定义
+
+| 位置 | 视图 | 角度 | 景别 | 要求 | 提示词 |
+|---|---|---|---|---|---|
+| 左一 | 人像特写 | 正面平视 | 面部至锁骨 | 面部占60%+,五官/妆容清晰 | portrait closeup、face detail、makeup detail |
+| 左二 | 正视图 | 正面 0° | 全身立像 | 面对镜头、服饰正面全貌 | front view、height mark |
+| 右二 | 侧视图 | 右侧 90° | 全身立像 | 纯侧面轮廓、服饰侧面层次 | side view、profile、height mark |
+| 右一 | 后视图 | 后方 180° | 全身立像 | 后脑发饰/背部服饰/发尾清晰 | back view、rear view、height mark |
+
+### 画面规范
+
+| 项目 | 约束 |
+|---|---|
+| 布局 | 同一画面从左至右并排四视图 |
+| 背景 | 纯净中性灰 #E8E8E8 |
+| 站姿 | 自然站立、双脚平行微分、双臂自然下垂或微展(**禁止任何姿态变化**) |
+| 表情 | 符合妆容风格的微表情(如清雅素妆→淡然、桃妆→含笑),仅限面部微表情,不涉及肢体动作 |
+| 光线 | 无光影,纯平涂色块 |
+| 一致性 | 四视图的面容/妆容/发型/发饰/服饰/配饰完全一致 |
+| 画面比例 | 建议 4:1 或 3:1 |
+
+---
+
+## 九、提示词模板
+
+### 输出格式约束
+
+| 项目 | 约束 |
+|---|---|
+| 输出内容 | **仅输出提示词文本**,不输出任何其他内容 |
+| 禁止输出 | 速查表、分层构建方案、视觉约束表、禁止事项表、衍生方案、输出建议、核心要素表等一切非提示词内容 |
+| 禁止场景 | 人物衍生资产**不包含场景/环境描述**,不输出任何场景/环境/天气/背景叙事内容(场景属于场景资产范畴) |
+| 禁止道具 | **不包含任何道具交互**,不输出伞/剑/扇/书/灯笼/酒杯等手持物或交互物(道具属于道具资产范畴) |
+| 禁止姿态变化 | **不改变底模姿态**,不输出行走/回眸/举手/侧身/奔跑等任何动作或体态变化,保持自然站立 |
+| 格式 | 直接输出可用的提示词代码块,无需标题、表格、解释、方案对比 |
+
+### 完整服化叠加(四视图)
+
+
+```
+以角色基础形象图为底图,img2img叠加服化妆造,
+扁平古风{性别}角色四视图设定图,
+2d flat design,vector art,flat illustration,
+minimalist,clean lines,solid colors,
+保持基础形象轮廓不变,{整体气质},
+【L1·妆容】根据用户线索决策:{基础妆/轻妆/正式妆};使用 {妆容风格},单色皮肤,扁平肤色,{眉妆},{眼妆},{唇妆},
+【L2·发型】{造型类型},线条发型,{发饰描述},
+【L3+L4·服饰】{主色}{款式},{材质},{装饰工艺},线条清晰,色块分明,
+【L5·配饰】{头饰},{耳饰},{项饰},{腰饰},
+同一画面左至右并排:人像特写+正视图+侧视图+后视图,
+自然站立,纯净中性灰背景,无光影,无渐变,
+四视图一致性,线条简洁,色块填充,
+图中不要有任何文字
+```
+
+
+---
+
+## 十、约束规则
+
+### 必守
+
+| 编号 | 规则 |
+|---|---|
+| R1 | 叠加后轮廓必须与底模一致 |
+| R2 | 服饰必须用「线条清晰 + 色块分明」 |
+| R3 | 女性配饰必须「扁平化 + 几何形」 |
+| R4 | 妆容/发型/服饰/配饰风格统一 |
+| R5 | 必须输出四视图设定图(人像特写+正视图+侧视图+后视图) |
+| R6 | 必须指定「纯净中性灰背景」 |
+| R7 | 必须指定「四视图一致性」 |
+| R8 | **仅输出提示词**——禁止输出速查表/分层方案/视觉约束/禁止事项/衍生方案/输出建议等任何非提示词内容 |
+| R9 | **禁止包含场景描述**——人物衍生资产不涉及场景/环境/天气/背景叙事,场景属于独立资产类型 |
+| R10 | **禁止道具交互**——不包含任何手持物/交互物(伞/剑/扇/书等),道具属于独立资产类型 |
+| R11 | **姿态保持不变**——必须保持底模自然站立姿态,禁止任何动作/体态/姿势变化 |
+| R12 | **L1 必须先分析再决策**——先解析用户面部线索,再确定基础妆/轻妆/正式妆 |
+| R13 | **所有衍生资产均需妆造**——正常情况不保持素颜,至少使用基础妆 |
+| R14 | **上妆强度受控**——即使上妆也需克制,不得出现现代扁平浓妆/夸张彩妆效果 |
+| R15 | **道具/场景/动作不作强度升级依据**——仅凭道具,环境,动作等信息不得把基础妆抬高为更强妆容 |
+
+### 严禁
+
+| 编号 | 严禁 |
+|---|---|
+| X1 | 叠加后轮廓偏移 |
+| X2 | 配饰过于简单/现代化(女性) |
+| X3 | 妆容/服饰风格互相冲突 |
+| X4 | 复杂场景背景(必须纯灰底) |
+| X5 | 四视图间服化妆造不一致 |
+| X6 | 输出提示词以外的任何内容(表格/方案/建议/解释/变体等) |
+| X7 | 在人物衍生资产中加入场景描述(山道/雨景/室内/街道/天气等环境元素) |
+| X8 | 输出「核心要素速查」「分层构建方案」「视觉约束」「禁止事项」「衍生方案」等章节 |
+| X9 | 加入任何道具交互(手持伞/剑/扇/书/灯笼/酒杯等物品) |
+| X10 | 改变底模姿态(行走/回眸/举手/侧身/奔跑/低头/仰望等动作描述) |
+| X11 | 加入表情与姿态联动描述(如「侧身45°行走嘴角浅弯」等叙事性描写) |
+| X12 | 未分析用户线索就直接套用固定妆容 |
+| X13 | 错误保持素颜,导致衍生资产缺少应有妆造 |
+| X14 | 仅因道具/场景/动作词而误把妆容升级,导致妆造强度决策错误 |
+| X15 | 添加渐变/阴影/高光/立体感效果 |
\ No newline at end of file
diff --git a/data/skills/art_skills/2D_flat_design/art_prompt/art_character_flat.md b/data/skills/art_skills/2D_flat_design/art_prompt/art_character_flat.md
new file mode 100644
index 0000000..cbda1d7
--- /dev/null
+++ b/data/skills/art_skills/2D_flat_design/art_prompt/art_character_flat.md
@@ -0,0 +1,204 @@
+# 人物基础形象生成 · 扁平风约束手册
+
+---
+
+## 一、基础形象原则
+
+1. **轮廓即灵魂** — 线条是角色唯一锚点,扁平色块分层构建
+2. **底模即基础** — 基础打底服装 + 素颜,后续服化均为叠加层(女性:运动背心+四角短裤;男性:四角短裤)
+3. **四视图一致** — 轮廓/体型/发型/基础服装跨视图高度统一
+4. **色块表达** — 无阴影渐变,靠色块对比表达层次
+
+---
+
+## 二、面容约束
+
+### 女性面容
+
+| 部位 | 约束 | 提示词 |
+|---|---|---|
+| 脸型 | 简洁线条、几何化修饰 | 简洁脸型、流畅轮廓、几何化线条 |
+| 眼型 | 简化眼型、色块表达、无瞳孔细节 | 扁平眼型、色块眼部、简化轮廓 |
+| 眉型 | 线条化、单色填充 | 线条眉、扁平眉型 |
+| 鼻型 | 线条勾勒、无阴影 | 线条鼻型、扁平鼻 |
+| 唇型 | 色块嘴唇、无渐变 | 扁平唇、纯色唇 |
+| 气质 | 简洁线条表达、无面部细节 | 线条简洁、扁平风格、色块表达 |
+
+### 男性面容
+
+| 部位 | 约束 | 提示词 |
+|---|---|---|
+| 脸型 | 简洁线条、几何化修饰 | 简洁脸型、硬朗轮廓、几何化线条 |
+| 眼型 | 简化眼型、色块表达、无瞳孔细节 | 扁平眼型、线条眼型、简化轮廓 |
+| 眉型 | 线条化、单色填充 | 线条眉、扁平眉型 |
+| 鼻型 | 线条勾勒、无阴影 | 线条鼻型、扁平鼻 |
+| 唇型 | 色块嘴唇、无渐变 | 扁平唇、纯色唇 |
+| 气质 | 简洁线条表达、无面部细节 | 线条简洁、扁平风格、色块表达 |
+
+---
+
+## 三、肤感约束
+
+### 女性
+
+| 项目 | 约束 | 提示词 |
+|---|---|---|
+| 肤色 | 单色填充、无渐变 | 单色皮肤、扁平肤色、solid skin color |
+| 光泽 | 无高光、无反光 | 无光泽、哑光扁平、matte finish |
+| 质感 | 色块填充、无纹理 | 色块填充、平面质感、no texture |
+| 露肤 | 面部/颈部/锁骨/手部 | 色块肤色、扁平肤表 |
+
+### 男性
+
+| 项目 | 约束 | 提示词 |
+|---|---|---|
+| 肤色 | 单色填充、无渐变 | 单色皮肤、扁平肤色、solid skin color |
+| 光泽 | 无高光、无反光 | 无光泽、哑光扁平、matte finish |
+| 质感 | 色块填充、无纹理 | 色块填充、平面质感、no texture |
+
+---
+
+## 四、体型约束
+
+### 女性
+
+| 项目 | 约束 | 提示词 |
+|---|---|---|
+| 身高 | 由角色设定指定,默认范围 160-170cm,通过头身比体现 | {身高}cm tall、tall slender woman |
+| 头身比 | 七头身至八头身,严格约束全身比例 | 7-8 heads tall proportion、身材修长 |
+| 肩颈 | 简洁线条、色块表达 | 简洁线条、扁平肩颈 |
+| 手部 | 简化的手部轮廓 | 简化手部、色块手部 |
+| 体态 | 简洁体态、无动态 | 简洁体态、正面站姿 |
+
+### 男性
+
+| 项目 | 约束 | 提示词 |
+|---|---|---|
+| 身高 | 由角色设定指定,默认范围 175-185cm,通过头身比体现 | {身高}cm tall、tall imposing man |
+| 头身比 | 七头半身至八头半身,严格约束全身比例 | 7.5-8.5 heads tall proportion、身材高挑 |
+| 肩颈 | 简洁线条、色块表达 | 简洁线条、扁平肩颈 |
+| 手部 | 简化的手部轮廓 | 简化手部、色块手部 |
+| 体态 | 简洁体态、无动态 | 简洁体态、正面站姿 |
+
+---
+
+## 五、基础发型约束
+
+> 仅定义自然散发/简单束发,发饰在服化衍生环节叠加。
+
+### 女性
+
+| 项目 | 约束 | 提示词 |
+|---|---|---|
+| 发色 | 纯黑单色、无渐变 | 黑色头发、纯色发色 |
+| 发长 | 及腰或更长 | 长发、及腰长发 |
+| 发质 | 线条勾勒、无发丝细节 | 线条发型、扁平发色、no hair strands |
+| 造型 | 自然散发、中分/偏分、无发饰 | 长发自然散落、简单发色 |
+
+### 男性
+
+| 项目 | 约束 | 提示词 |
+|---|---|---|
+| 发色 | 纯黑或墨色单色 | 黑色头发、墨色发色 |
+| 发长 | 中长至长发 | 长发、及肩长发 |
+| 发质 | 线条勾勒、无发丝细节 | 线条发型、扁平发色、no hair strands |
+| 造型 | 自然散发或半束、无发冠 | 长发自然散落、简单发型 |
+
+---
+
+## 六、基础服装约束
+
+> 基础服装无特殊约束,女性为运动背心和四角短裤,男性为四角短裤。正式服饰在服化衍生环节叠加。
+
+### 女性基础服装
+
+运动背心和四角短裤,颜色以基础色为主,无花纹装饰。
+
+### 男性基础服装
+
+四角短裤,颜色以基础色为主,无花纹装饰。
+
+### 着装统一规则
+
+- 服装风格统一,确保后续服饰叠加无色彩干扰
+- 除面部/手部/颈部外基本覆盖
+- 四视图服装款式完全一致
+- 基础服装仅为安全打底,焦点在面容与体态
+
+---
+
+## 七、四视图设定图规范
+
+### 视图定义
+
+| 位置 | 视图 | 角度 | 景别 | 要求 | 提示词 |
+|---|---|---|---|---|---|
+| 左一 | 人像特写 | 正面平视 | 头顶至锁骨 | 从头顶到锁骨完整展示不裁切,面部占60%+,五官清晰 | portrait closeup、face detail、head to collarbone complete、no crop |
+| 左二 | 正视图 | 正面 0° | 全身立像 | 面对镜头、双臂自然、从头顶到脚底完整展示 | front view、full body head to toe、height mark |
+| 右二 | 侧视图 | 右侧 90° | 全身立像 | 纯侧面轮廓清晰、从头顶到脚底完整展示 | side view、profile、full body head to toe、height mark |
+| 右一 | 后视图 | 后方 180° | 全身立像 | 后脑/背部/发尾/脚部清晰、从头顶到脚底完整展示 | back view、rear view、full body head to toe、height mark |
+
+### 画面规范
+
+| 项目 | 约束 |
+|---|---|
+| 布局 | 同一画面从左至右并排四视图 |
+| 背景 | 纯净中性灰 #E8E8E8 |
+| 站姿 | 自然站立、双脚平行微分、双臂自然下垂或微展 |
+| 全身展示 | 全身立像必须从头顶到脚底完整入画,严禁裁切头顶或脚部 |
+| 特写展示 | 人像特写必须从头顶到锁骨完整入画,严禁裁切头顶,头发、额头、下巴均需完整 |
+| 表情 | 中性微表情,符合角色气质 |
+| 光线 | 无光影,纯平涂色块 |
+| 一致性 | 四视图的肤色/体型/发型/面容/基础服装完全一致 |
+| 画面比例 | 建议 4:1 或 3:1 |
+
+---
+
+## 八、提示词模板
+
+```
+{性别}角色四视图扁平风格设定图,
+2d flat design,vector art,flat illustration,
+minimalist,clean lines,solid colors,
+{脸型},{眼型},{鼻型},{唇型},{整体气质},素颜无妆,
+{肤色},单色皮肤,扁平肤色,solid skin color,
+{身高描述,如:170cm tall、tall slender woman},{头身比,如:7.5 heads tall proportion},{身材描述},{体态描述},
+{发色}{发长},线条发型,{基础造型},无发饰,
+(女性:运动背心和四角短裤 / 男性:仅四角短裤),基础色,无花纹装饰,
+同一画面左至右并排:人像特写+正视图+侧视图+后视图,
+人像特写从头顶到锁骨完整展示,不裁切头顶,head to collarbone complete,
+全身立像从头顶到脚底完整展示,full body head to toe,不裁切头顶和脚部,
+自然站立,纯净中性灰背景,无光影,无渐变,
+四视图一致性,线条简洁,色块填充,
+图中不要有任何文字
+```
+
+---
+
+## 九、约束规则
+
+### 必守
+
+| 编号 | 规则 |
+|---|---|
+| R1 | 必须为「素颜无妆」状态 |
+| R2 | 必须声明基础服装(女性:运动背心+四角短裤;男性:四角短裤) |
+| R3 | 必须声明「无发饰、无配饰」 |
+| R4 | 必须指定「纯净中性灰背景」 |
+| R5 | 必须指定「四视图一致性」 |
+| R6 | 全身立像必须从头顶到脚底完整展示,严禁裁切 |
+| R7 | 必须指定角色身高并通过头身比换算约束全身比例(女性默认160-170cm/7-8头身,男性默认175-185cm/7.5-8.5头身) |
+| R8 | 人像特写必须从头顶到锁骨完整展示,严禁裁切头顶 |
+
+### 严禁
+
+| 编号 | 严禁 |
+|---|---|
+| X1 | 基础服装以外的任何服装/配饰/妆容 |
+| X2 | 光影/阴影/渐变效果 |
+| X3 | 3D渲染/CG质感 |
+| X4 | 复杂场景背景(必须纯灰底) |
+| X5 | 夸张表情/动态姿势 |
+| X6 | 全身立像裁切头顶或脚底,必须从头到脚完整入画 |
+| X7 | 人像特写裁切头顶,必须从头顶到锁骨完整入画 |
+| X8 | 忽略身高和头身比约束,身高必须明确声明并通过头身比换算体现全身比例 |
\ No newline at end of file
diff --git a/data/skills/art_skills/2D_flat_design/art_prompt/art_prop_derivative_flat.md b/data/skills/art_skills/2D_flat_design/art_prompt/art_prop_derivative_flat.md
new file mode 100644
index 0000000..0a156df
--- /dev/null
+++ b/data/skills/art_skills/2D_flat_design/art_prompt/art_prop_derivative_flat.md
@@ -0,0 +1,122 @@
+# 道具衍生状态生成 · 扁平风约束手册
+
+---
+
+## 一、衍生原则
+
+1. **轮廓锚定** — 道具核心造型/轮廓在所有状态中可识别
+2. **状态可读** — 状态差异必须一目了然,观众能立即区分
+3. **叙事服务** — 每种状态变体服务于特定剧情节点
+4. **渐进退化** — 损伤/老化状态应有合理的物理逻辑
+5. **纯道具独立展示** — 画面中只能出现道具本身,严禁出现任何人物、手部、肢体,道具不可处于被持有/佩戴/握持状态,必须以静物陈列方式独立呈现
+
+---
+
+## 二、状态类型
+
+### 2.1 使用状态
+
+| 状态 | 描述 | 适用道具 | 提示词 |
+|---|---|---|---|
+| 崭新 | 完好无损、纯色如新 | 所有道具 | 扁平崭新、完好无损、纯色如新 |
+| 日常使用 | 微磨损、简单色块变化 | 兵器/器物/饰品 | 扁平使用痕迹、简单磨损 |
+| 陈旧 | 明显年代感、颜色暗淡 | 器物/信物/卷轴 | 扁平陈旧、年代感、颜色暗沉 |
+
+### 2.2 损伤状态
+
+| 状态 | 描述 | 适用道具 | 提示词 |
+|---|---|---|---|
+| 微损 | 小裂纹/小缺口/轻微磨损 | 瓷器/玉佩/兵器 | 扁平微损、简单裂纹 |
+| 破损 | 明显裂缝/断裂/破碎 | 瓷器/饰品/兵器 | 扁平破损、简单断裂 |
+| 残片 | 仅剩部分/碎片 | 瓷器/玉佩/信物 | 扁平残片、简单碎片 |
+
+### 2.3 特殊状态
+
+| 状态 | 描述 | 适用道具 | 提示词 |
+|---|---|---|---|
+| 染血 | 红色色块附着 | 兵器/衣物/信物 | 扁平染血、红色痕迹 |
+| 浸水/湿润 | 颜色晕染、湿润感 | 卷轴/信物/衣物 | 扁平浸水、颜色晕染 |
+| 燃烧/焦损 | 黑色边缘、扁平火烧痕迹 | 卷轴/信物/木质品 | 扁平焦黑、简单火烧 |
+| 发光/激活 | 简单发光色块、简单光芒 | 信物/法器/玉石 | 扁平发光、简单光芒 |
+| 包裹/封存 | 用布/盒子包裹 | 信物/饰品/秘物 | 扁平包裹、简单封装 |
+
+---
+
+## 三、状态变体画面规范
+
+### 单状态图
+
+| 项目 | 约束 |
+|---|---|
+| 背景 | 纯净中性灰 #E8E8E8(与设定图一致) |
+| 光线 | 无光影,纯平涂色块 |
+| 角度 | 与原设定图正面图一致 |
+| 比例 | 道具占画面主体 70%+ |
+
+### 状态对比图
+
+| 项目 | 约束 |
+|---|---|
+| 布局 | 同一画面并排展示 2-3 种状态 |
+| 标注 | 每种状态下方标注状态名 |
+| 一致性 | 角度/光线/背景完全一致,仅状态不同 |
+
+---
+
+## 四、材质状态变化规则
+
+| 材质 | 崭新 → 日常 | 日常 → 陈旧 | 损伤表现 |
+|---|---|---|---|
+| 金属 | 纯色 → 简单包浆色块 | 包浆 → 简单锈蚀色块 | 简单缺口/卷刃/断裂 |
+| 玉石 | 纯色 → 简单磨损色块 | 磨损 → 表面简单裂纹 | 简单裂纹/碎裂/缺角 |
+| 木质 | 纯色 → 简单包浆色块 | 包浆 → 色泽暗沉 | 简单开裂/断裂/虫蛀 |
+| 瓷器 | 纯色 → 简单划痕色块 | 划痕 → 釉面暗淡色块 | 简单裂纹/碎裂/缺口 |
+| 布/纸 | 纯色平整 → 简单皱折色块 | 皱折 → 发黄变脆色块 | 简单撕裂/焦损/晕染 |
+
+---
+
+## 五、提示词模板
+
+### 单状态变体
+
+```
+基于{道具名}设定图,
+2d flat design,vector art,flat illustration,
+minimalist,clean lines,solid colors,
+{道具类型},{材质描述},
+当前状态:{状态名},{状态视觉描述},
+{材质表面变化描述},
+纯道具静物展示,道具独立陈列,无人持有,无人佩戴,
+同一画面四宫格(2×2):左上正面图(front view)+右上侧面图(side view)+左下背面图(back view)+右下细节特写(detail closeup),
+纯净中性灰背景,无光影,无渐变,
+线条清晰,色块分明,状态细节可辨
+图中不要有任何文字,
+画面中不能出现任何人物、手部、手指、肢体,道具不可处于被握持或佩戴状态
+```
+
+
+---
+
+## 六、约束规则
+
+### 必守
+
+| 编号 | 规则 |
+|---|---|
+| R1 | 道具核心造型/轮廓在所有状态中可识别 |
+| R2 | 状态变化须符合物理逻辑 |
+| R3 | 必须使用四宫格(2×2)布局:左上正面图+右上侧面图+左下背面图+右下细节特写 |
+| R4 | 必须指定「纯净中性灰背景」,无光影,无渐变 |
+
+### 严禁
+
+| 编号 | 严禁 |
+|---|---|
+| X1 | 状态变化后道具不可识别 |
+| X2 | 违反物理逻辑的损伤(玉石生锈等) |
+| X3 | 过度血腥/恐怖的损伤描绘 |
+| X4 | 出现任何人物形象,包括全身、半身、局部(手、手指、手臂等肢体) |
+| X5 | 道具处于被持有、握持、佩戴、使用中的状态 |
+| X6 | 出现暗示人物存在的元素(如手持痕迹、佩戴视角、使用姿态) |
+| X7 | 添加渐变/阴影/高光/立体感效果 |
+| X8 | 状态变化过于复杂、色块区分不清 |
diff --git a/data/skills/art_skills/2D_flat_design/art_prompt/art_prop_flat.md b/data/skills/art_skills/2D_flat_design/art_prompt/art_prop_flat.md
new file mode 100644
index 0000000..4f8c4d2
--- /dev/null
+++ b/data/skills/art_skills/2D_flat_design/art_prompt/art_prop_flat.md
@@ -0,0 +1,133 @@
+# 道具图像生成 · 扁平风约束手册
+
+---
+
+## 一、道具设计原则
+
+1. **功能可读** — 道具用途一目了然,造型服务于功能
+2. **色块极简** — 材质纹理必须色块区分,禁止复杂细节
+3. **年代一致** — 所有道具必须符合古风世界观,禁止现代元素
+4. **尺度明确** — 通过参照物或标注暗示道具真实尺寸
+5. **纯道具独立展示** — 画面中只能出现道具本身,严禁出现任何人物、手部、肢体,道具不可处于被持有/佩戴/握持状态,必须以静物陈列方式独立呈现
+
+---
+
+## 二、道具分类与美学约束
+
+### 2.1 兵器类
+
+| 项目 | 约束 | 提示词 |
+|---|---|---|
+| 类型 | 剑/刀/弓/枪/扇 | {兵器类型},扁平古风兵器 |
+| 材质 | 纯色色块、线条勾勒 | 扁平剑、线条兵器、solid color sword |
+| 装饰 | 线条雕花、色块装饰 | 线条装饰、扁平雕花 |
+| 光泽 | 无光泽、纯色填充 | 无光泽、扁平兵器、matte sword |
+| 提示词 | 扁平古风{兵器},纯色兵器,线条装饰 | — |
+
+### 2.2 饰品类
+
+| 项目 | 约束 | 提示词 |
+|---|---|---|
+| 类型 | 簪/钗/璎珞/玉佩/手镯/耳坠 | {饰品类型},扁平古风首饰 |
+| 材质 | 纯色色块、单色填充 | 扁平首饰、色块首饰、solid color jewelry |
+| 工艺 | 简洁线条、极简工艺 | 扁平工艺、线条首饰 |
+| 光泽 | 无光泽、无反光 | 无光泽、扁平首饰、matte finish |
+| 提示词 | 扁平古风{饰品},{材质},简洁工艺,线条首饰 | — |
+
+### 2.3 生活器物类
+
+| 项目 | 约束 | 提示词 |
+|---|---|---|
+| 类型 | 茶具/酒具/香炉/棋盘/书卷/灯笼 | {器物类型},扁平古风器物 |
+| 材质 | 纯色色块、线条勾勒 | 扁平器物、色块器物、solid color object |
+| 质感 | 色块区分、无纹理 | 扁平质感、无纹理、flat texture |
+| 风格 | 素雅/华贵按场景切换 | 扁平素雅 / 扁平华贵 |
+| 提示词 | 扁平古风{器物},{材质}色块,线条清晰 | — |
+
+### 2.4 信物/关键道具类
+
+| 项目 | 约束 | 提示词 |
+|---|---|---|
+| 类型 | 信物/令牌/卷轴/药瓶/玉印 | {道具类型},扁平古风道具 |
+| 特殊性 | 扁平化造型、简洁辨识度 | 扁平造型、简洁道具 |
+| 状态 | 可添加扁平做旧 | 扁平旧物 / 扁平新物 |
+| 提示词 | 扁平古风{道具},{材质}色块,扁平状态,简洁造型 | — |
+
+---
+
+## 三、多角度设定图规范
+
+### 视图定义
+
+| 位置 | 视图 | 角度 | 要求 | 提示词 |
+|---|---|---|---|---|
+| 左上 | 正面图 | 正面 0° | 道具完整正面形态 | front view |
+| 右上 | 侧面图 | 侧面 90° | 厚度/轮廓/结构清晰 | side view |
+| 左下 | 背面图 | 背面 180° | 道具背部结构/装饰 | back view |
+| 右下 | 细节特写 | 局部放大 | 线条/色块细节 | detail closeup |
+
+### 画面规范
+
+| 项目 | 约束 |
+|---|---|
+| 布局 | 同一画面四宫格(2×2),上下左右四视角 |
+| 背景 | 纯净中性灰 #E8E8E8 |
+| 光线 | 无光影,纯平涂色块 |
+| 比例 | 每格道具占格内主体 70%+ |
+| 投影 | 无投影、纯平面 |
+| 画面比例 | 建议 1:1 |
+
+---
+
+## 四、材质渲染约束
+
+| 材质 | 渲染要求 | 提示词 |
+|---|---|---|
+| 金属 | 纯色填充、无反光 | 扁平金属、纯色金属、solid metal |
+| 玉石 | 纯色填充、无通透 | 扁平玉石、纯色玉石、solid jade |
+| 木质 | 纯色填充、无木纹 | 扁平木质、纯色木质、solid wood |
+| 瓷器 | 纯色填充、无釉面 | 扁平瓷器、纯色瓷器、solid porcelain |
+| 布/纸 | 纯色填充、无纤维 | 扁平布料、纯色布料、solid fabric |
+| 宝石 | 纯色填充、无折射 | 扁平宝石、纯色宝石、solid gem |
+
+---
+
+## 五、提示词模板
+
+```
+扁平古风道具设定图,
+2d flat design,vector art,flat illustration,
+minimalist,clean lines,solid colors,
+{道具类型},{材质描述},{工艺/装饰描述},{状态描述},
+纯道具静物展示,道具独立陈列,无人持有,无人佩戴,
+同一画面四宫格(2×2):左上正面图+右上侧面图+左下背面图+右下细节特写,
+纯净中性灰背景,无光影,无渐变,
+线条清晰,色块分明,{材质光泽描述}
+图中不要有任何文字,
+画面中不能出现任何人物、手部、手指、肢体,道具不可处于被握持或佩戴状态
+```
+
+---
+
+## 六、约束规则
+
+### 必守
+
+| 编号 | 规则 |
+|---|---|
+| R1 | 必须指定「纯净中性灰背景」 |
+| R2 | 必须明确道具材质与工艺(扁平化表述) |
+| R3 | 道具造型必须符合古风世界观 |
+
+### 严禁
+
+| 编号 | 严禁 |
+|---|---|
+| X1 | 复杂场景背景 |
+| X2 | 道具与人物同画面(本环节为纯道具图) |
+| X3 | 出现任何人物形象,包括全身、半身、局部(手、手指、手臂等肢体) |
+| X4 | 道具处于被持有、握持、佩戴、使用中的状态 |
+| X5 | 出现暗示人物存在的元素(如手持痕迹、佩戴视角、使用姿态) |
+| X6 | 添加渐变/阴影/高光/立体感效果 |
+| X7 | 材质过于复杂、色块区分不清 |
+| X8 | 现代元素、非古风设计 |
\ No newline at end of file
diff --git a/data/skills/art_skills/2D_flat_design/art_prompt/art_scene_derivative_flat.md b/data/skills/art_skills/2D_flat_design/art_prompt/art_scene_derivative_flat.md
new file mode 100644
index 0000000..cf124c3
--- /dev/null
+++ b/data/skills/art_skills/2D_flat_design/art_prompt/art_scene_derivative_flat.md
@@ -0,0 +1,162 @@
+# 场景衍生资产生成 · 扁平风约束手册
+
+---
+
+## 一、衍生原则
+
+1. **空间一致** — 建筑结构/布局/材质在所有变体中保持一致
+2. **景别驱动** — 同一场景通过不同景别展示不同叙事功能
+3. **时段切换** — 同一空间在不同时间段呈现不同色调色块
+4. **天候变化** — 同一空间在不同天气下呈现不同色彩氛围
+5. **扁平为锚** — 所有变体必须保持扁平矢量插画质感,拒绝 3D 渲染/CG 动画感;保持简洁线条、纯色填充
+
+---
+
+## 二、景别变体
+
+### 景别定义
+
+| 景别 | 范围 | 叙事功能 | 提示词 |
+|---|---|---|---|
+| 大全景 | 场景全貌 + 周围环境 | 建立空间感、定位 | extreme wide shot、大全景、flat extreme wide |
+| 全景 | 场景完整呈现 | 展示空间结构 | wide shot、全景、flat wide |
+| 中景 | 场景局部区域 | 聚焦功能区 | medium shot、中景、flat medium |
+| 近景 | 场景细部 | 色块/氛围道具特写 | close shot、近景、flat close |
+| 特写 | 极局部细节 | 色块纹理/关键道具 | extreme closeup、特写、flat extreme close |
+
+### 景别衍生规范
+
+| 从基准图衍生 | 保持不变 | 允许变化 |
+|---|---|---|
+| 大全景 → 全景 | 建筑外观、整体布局 | 视角收窄、前景增加色块 |
+| 全景 → 中景 | 材质、色调、光线 | 裁切聚焦、纯色变化 |
+| 中景 → 近景 | 材质、色调 | 纯色聚焦、背景色块 |
+| 近景 → 特写 | 色块纹理 | 纯色聚焦、微距色块 |
+
+---
+
+## 三、时段变体
+
+### 时段定义
+
+| 时段 | 视觉特征 | 提示词 |
+|---|---|---|
+| 清晨 | 扁平色调、浅色色块 | 扁平清晨、浅色晨色 |
+| 正午 | 扁平明亮、纯色色块 | 扁平正午、纯色明亮 |
+| 黄昏 | 扁平金色、暖色色块 | 扁平黄昏、暖色金辉 |
+| 夜间(月光) | 扁平冷蓝、深色色块 | 扁平月光、冷蓝月色 |
+| 夜间(灯火) | 扁平暖黄、深色背景 | 扁平灯火、暖黄暗底 |
+
+### 时段衍生规范
+
+| 从基准时段衍生 | 保持不变 | 变化项 |
+|---|---|---|
+| 日间 → 黄昏 | 建筑/布局/材质 | 天空色块暖化、阴影色块 |
+| 日间 → 夜间 | 建筑/布局/材质 | 整体色块变暗、增加灯火/月色色块 |
+| 室内日间 → 室内夜间 | 空间结构、家具 | 整体色块暖化、增加烛火/灯笼色块 |
+
+---
+
+## 四、天候变体
+
+### 天候定义
+
+| 天候 | 视觉特征 | 提示词 |
+|---|---|---|
+| 晴天 | 扁平明亮、纯色色块 | 扁平晴天、纯色晴日 |
+| 阴天 | 扁平均匀、灰色色块 | 扁平阴天、灰色柔光 |
+| 薄雾 | 扁平朦胧、低饱和色块 | 扁平薄雾、朦胧色块 |
+| 细雨 | 扁平雨丝、湿润色块 | 扁平细雨、湿润色块 |
+| 飞雪 | 扁平白色、覆盖色块 | 扁平飞雪、白色覆盖 |
+
+### 天候衍生规范
+
+| 从基准天候衍生 | 保持不变 | 变化项 |
+|---|---|---|
+| 晴 → 薄雾 | 建筑/布局 | 增加扁平雾层、远景色块模糊、饱和度降低 |
+| 晴 → 细雨 | 建筑/布局 | 增加扁平雨丝、地面色块、色调偏冷 |
+| 晴 → 飞雪 | 建筑/布局 | 增加扁平积雪、雪花色块、色调偏白 |
+| 植被需随天候逻辑适配 | — | 扁平雨色、扁平雪色 |
+
+---
+
+## 五、四视图设定图规范
+
+### 视图定义
+
+> 摄像机固定于场景中心点,分别朝前/后/左/右四个方向拍摄,形成 360° 环视。
+
+| 位置 | 视图 | 视角方向 | 要求 | 提示词 |
+|---|---|---|---|---|
+| 左上 | 前视图 | 从中心点向前方平视(0°) | 展示场景正面主体结构与色块层次 | front view、eye level、looking forward |
+| 右上 | 右视图 | 从中心点向右方平视(90°) | 展示场景右侧空间延伸与侧面色块 | right side view、eye level、looking right |
+| 左下 | 后视图 | 从中心点向后方平视(180°) | 展示场景背面结构与空间色块 | back view、eye level、looking backward |
+| 右下 | 左视图 | 从中心点向左方平视(270°) | 展示场景左侧空间延伸与侧面色块 | left side view、eye level、looking left |
+
+### 画面规范
+
+| 项目 | 约束 |
+|---|---|
+| 布局 | 同一画面四宫格(2×2),左上前视图+右上右视图+左下后视图+右下左视图,形成从中心点环视的四方向视图 |
+| 人物 | **严禁出现任何人物、人影、人体轮廓** |
+| 视点 | 四视图均从同一中心点出发,视线高度一致(人眼平视高度) |
+| 一致性 | 四视图的建筑结构/材质/色调/光线/季节/天候完全一致 |
+| 光线 | 无光照、纯色填充、无光影逻辑 |
+| 画面比例 | 建议 1:1(2×2 网格) |
+
+---
+
+## 六、提示词模板
+
+```
+扁平古风场景衍生四视图设定图,基于{场景名}概念图,
+2d flat design,vector art,flat illustration,
+minimalist,clean lines,solid colors,
+flat scene derivative,environment concept art,no people,no characters,no human figures,
+保持场景空间结构一致,
+{景别视角(如有)},{时段描述(如有)},{天候描述(如有)},
+{前景色块},{中景色块},{后景色块},
+{色调描述},{色块变化(如有)},{天空色块变化(如有)},{氛围调整(如有)},
+{天候视觉特征(如有)},{材质色块变化(如有)},{植被适配描述(如有)},
+无岁月痕迹,无磨损,扁平完美,
+无光照,无阴影,纯色平涂,
+无透视,纯色填充,
+同一画面四宫格(2×2):从场景中心点环视,前视图+右视图+后视图+左视图,
+四视图均从同一中心点平视拍摄,建筑结构一致,材质色调一致,
+画面中无任何人物
+图中不要有任何文字
+```
+
+> **使用说明**:根据用户提供的信息自行判断需要应用的变化维度(景别/时段/天候),未提及的维度对应字段留空省略即可。无需为每种变体单独生成模板。
+
+---
+
+## 七、约束规则
+
+### 必守
+
+| 编号 | 规则 |
+|---|---|
+| R1 | 场景空间结构在所有变体中保持一致 |
+| R2 | 时段变体必须调整色块色调与氛围 |
+| R3 | 天候变体必须适配色块/材质表面 |
+| R4 | 必须为「四视图设定图」(从中心点环视:前视图 + 右视图 + 后视图 + 左视图) |
+| R5 | 四视图的建筑结构/材质/色调/光线/季节/天候必须完全一致 |
+| R6 | 场景图中**严禁出现任何人物** |
+| R7 | 根据用户提供的信息自行判断变化维度,无需拆分为独立模板 |
+| R8 | 必须指定「扁平风格」关键词(2d flat design、vector art) |
+| R9 | 必须指定「无光影无渐变」 |
+| R10 | 材质必须为纯色填充,禁止复杂纹理/岁月感 |
+
+### 严禁
+
+| 编号 | 严禁 |
+|---|---|
+| X1 | 变体间建筑结构/布局不一致 |
+| X2 | 天候与季节矛盾(夏天飞雪等) |
+| X3 | 变体间材质/风格突变 |
+| X4 | 出现任何人物、人影、人体剪影或人体轮廓 |
+| X5 | 四视图之间建筑结构/材质/色调不一致,或视点中心不统一 |
+| X6 | 3D 渲染/CG 动画/卡通/游戏引擎质感(禁用 3D render、CGI、Unreal Engine、Unity 等词) |
+| X7 | 材质过于复杂、色块区分不清 |
+| X8 | 添加光影/阴影/渐变/立体感效果 |
\ No newline at end of file
diff --git a/data/skills/art_skills/2D_flat_design/art_prompt/art_scene_flat.md b/data/skills/art_skills/2D_flat_design/art_prompt/art_scene_flat.md
new file mode 100644
index 0000000..69a18fc
--- /dev/null
+++ b/data/skills/art_skills/2D_flat_design/art_prompt/art_scene_flat.md
@@ -0,0 +1,155 @@
+# 场景图生成 · 扁平风约束手册
+
+---
+
+## 一、场景美学原则
+
+1. **空间叙事** — 场景承载情绪与叙事功能,不是纯背景板
+2. **层次扁平** — 前/中/后景通过色块区分,无纵深透视
+3. **色块至上** — 所有场景必须通过色块表达,拒绝渐变/光影
+4. **扁平为锚** — 一切画面以扁平矢量插画为标准,拒绝 3D 渲染/CG 动画质感;追求简洁线条、纯色填充
+
+---
+
+## 二、季节色调映射
+
+| 季节 | 主色调 | 辅色调 | 提示词 |
+|---|---|---|---|
+| 春 | 青翠 + 桃粉 | 月白、鹅黄 | 扁平春色、青色桃粉 |
+| 夏 | 碧绿 + 荷粉 | 天青、莲白 | 扁平夏荷、碧绿荷粉 |
+| 秋 | 赤红 + 金黄 | 琥珀、暮灰 | 扁平秋枫、赤红金黄 |
+| 冬 | 素白 + 霜银 | 墨玉黑、冰蓝 | 扁平冬雪、素白霜银 |
+
+---
+
+## 三、室内场景
+
+### 空间规范
+
+| 维度 | 约束 | 提示词 |
+|---|---|---|
+| 风格 | 古代宅邸/宫殿/书房/闺阁,魏晋至唐宋 | 古代{朝代}风格、扁平古风 |
+| 材质 | 纯色色块、线条勾勒 | 扁平檀木、扁平玉石、扁平绢纱 |
+| 色调 | 低饱和纯色色块 | 扁平暖色、扁平素雅 |
+| 纵深 | 前/中/后景色块区分 | 前景{色块}、中景{色块}、后景{色块} |
+| 质感 | 无质感、纯色填充 | 无纹理、扁平质感、flat texture |
+| 光照 | 无光照、纯平涂色块 | 无光影、扁平光照、no lighting |
+| 镜头感 | 无景深虚化、纯平面 | 无景深、扁平视角、no depth |
+| 瑕疵感 | 无瑕疵、纯色完美 | 无磨损、扁平完美、no wear |
+
+### 室内类型速查
+
+| 类型 | 核心元素 | 氛围词 |
+|---|---|---|
+| 闺阁/卧房 | 纱帐、梳妆台、铜镜、花瓶 | 扁平温馨、简约私密 |
+| 书房/书斋 | 书架、卷轴、笔墨、棋盘 | 扁平幽静、简约雅致 |
+| 大殿/正厅 | 高柱、匾额、帷幕、烛台 | 扁平庄严、简约华美 |
+| 庭院回廊 | 廊柱、石栏、花木、灯笼 | 扁平曲径、简约灯影 |
+| 厨房/膳堂 | 灶台、蒸笼、食器 | 扁平烟火、简约日常 |
+
+---
+
+## 四、室外场景
+
+### 空间规范
+
+| 维度 | 约束 | 提示词 |
+|---|---|---|
+| 类型 | 庭院/山林/溪畔/古桥/集市 | {场景}、{季节}、{时间}、扁平古风 |
+| 天候 | 晴/阴/薄雾/细雨/飞雪 | 扁平薄雾、扁平细雨 |
+| 植被 | 梅/竹/松/桃花/柳/荷(须符合季节) | 扁平桃花、扁平翠竹 |
+| 水体 | 溪/湖/瀑布需有纯色表现 | 扁平溪流、扁平湖面 |
+| 建筑 | 飞檐斗拱、青瓦白墙、石桥木亭 | 扁平飞檐、扁平石桥 |
+| 空气感 | 无空气透视、纯平面 | 无透视、扁平远景、flat far |
+| 光照 | 无光照、纯平涂色块 | 无光照、扁平日光、no light |
+| 镜头感 | 无景深虚化、纯平面 | 无景深、扁平视角、no depth |
+| 瑕疵感 | 无瑕疵、纯色完美 | 无风化、扁平完美、no weathering |
+
+### 室外类型速查
+
+| 类型 | 核心元素 | 氛围词 |
+|---|---|---|
+| 庭院花园 | 假山、池塘、花木、石径 | 扁平花影、简约曲径 |
+| 山林竹海 | 古木、竹林、山石、云雾 | 扁平层峦、简约云雾 |
+| 溪畔湖边 | 溪流、卵石、垂柳、荷花 | 扁平溪水、简约垂柳 |
+| 古桥长亭 | 石拱桥、长亭、柳树 | 扁平古桥、简约长亭 |
+| 集市街道 | 酒旗、摊贩、灯笼 | 扁平市井、简约热闹 |
+| 屋顶天台 | 瓦片、飞檐、夜空 | 扁平瓦片、简约夜空 |
+
+---
+
+## 五、四视图设定图规范
+
+### 视图定义
+
+> 摄像机固定于场景中心点,分别朝前/后/左/右四个方向拍摄,形成 360° 环视。
+
+| 位置 | 视图 | 视角方向 | 要求 | 提示词 |
+|---|---|---|---|---|
+| 左上 | 前视图 | 从中心点向前方平视(0°) | 展示场景正面主体结构与色块层次 | front view、eye level、looking forward |
+| 右上 | 右视图 | 从中心点向右方平视(90°) | 展示场景右侧空间延伸与侧面色块 | right side view、eye level、looking right |
+| 左下 | 后视图 | 从中心点向后方平视(180°) | 展示场景背面结构与空间色块 | back view、eye level、looking backward |
+| 右下 | 左视图 | 从中心点向左方平视(270°) | 展示场景左侧空间延伸与侧面色块 | left side view、eye level、looking left |
+
+### 画面规范
+
+| 项目 | 约束 |
+|---|---|
+| 布局 | 同一画面 2×2 网格排列:上排(前视图 + 右视图),下排(后视图 + 左视图),形成从中心点环视的四方向视图 |
+| 人物 | **严禁出现任何人物、人影、人体轮廓** |
+| 视点 | 四视图均从同一中心点出发,视线高度一致(人眼平视高度) |
+| 一致性 | 四视图的建筑结构/材质/色调/光线/季节/天候完全一致 |
+| 光线 | 无光照、纯色填充、无光影逻辑 |
+| 画面比例 | 建议 1:1(2×2 网格) |
+
+---
+
+## 六、提示词模板
+
+```
+扁平古风场景四视图设定图,
+2d flat design,vector art,flat illustration,
+minimalist,clean lines,solid colors,
+flat scene,environment design,no people,no characters,no human figures,
+{室内/室外},{场景类型},{朝代风格},{季节+时间},
+前景:{色块元素},中景:{色块元素},后景:{色块元素},
+{色调描述},{天候/氛围元素},
+{材质描述},无透视,纯色填充,
+无岁月痕迹,无磨损,扁平完美,
+无光照,无阴影,纯色平涂,
+同一画面2×2网格排列:从场景中心点环视,前视图+右视图+后视图+左视图,
+四视图均从同一中心点平视拍摄,建筑结构一致,材质色调一致,
+画面中无任何人物
+图中不要有任何文字
+```
+
+---
+
+## 七、约束规则
+
+### 必守
+
+| 编号 | 规则 |
+|---|---|
+| R1 | 场景必须有「前中后景色块层次」 |
+| R2 | 室外必须为「扁平远景」无空气透视 |
+| R3 | 场景图必须为「四视图设定图」(从中心点环视:前视图 + 右视图 + 后视图 + 左视图) |
+| R4 | 四视图的建筑结构/材质/色调/光线/季节/天候必须完全一致 |
+| R5 | 场景图中**严禁出现任何人物** |
+| R6 | 必须指定「扁平风格」关键词(2d flat design、vector art) |
+| R7 | 必须指定「无光影无渐变」 |
+| R8 | 材质必须为纯色填充,禁止复杂纹理/岁月感 |
+
+### 严禁
+
+| 编号 | 严禁 |
+|---|---|
+| X1 | 背景纯白/纯黑/无场景 |
+| X2 | 极端天候(暴风雨/雷电/暴雪,除非剧情需要) |
+| X3 | 场景无层次/无色块区分 |
+| X4 | 植被/天候与季节矛盾 |
+| X5 | 出现任何人物、人影、人体剪影或人体轮廓 |
+| X6 | 四视图之间建筑结构/材质/色调不一致,或视点中心不统一 |
+| X7 | 3D 渲染/CG 动画/卡通/游戏引擎质感(禁用 3D render、CGI、Unreal Engine、Unity 等词) |
+| X8 | 材质过于复杂、色块区分不清 |
+| X9 | 添加光影/阴影/渐变/立体感效果 |
\ No newline at end of file
diff --git a/data/skills/art_skills/2D_flat_design/art_prompt/art_storyboard_video.md b/data/skills/art_skills/2D_flat_design/art_prompt/art_storyboard_video.md
new file mode 100644
index 0000000..e4aeef7
--- /dev/null
+++ b/data/skills/art_skills/2D_flat_design/art_prompt/art_storyboard_video.md
@@ -0,0 +1,11 @@
+# 视频提示词 · 视觉风格约束
+
+生成视频提示词时,必须注入以下视觉风格标签:
+
+| 模式 | 风格标签 |
+|------|----------|
+| **通用多参模式(英文)** | `2D flat design, geometric shapes, solid color blocks, minimal shadows, clean lines, modern aesthetic` |
+| **通用首尾帧模式(英文)** | `2D flat design, geometric shapes, solid color blocks, minimal shadows, clean lines, modern aesthetic, shallow depth of field` |
+| **Seedance 2.0(中文)** | `2D扁平风格,几何造型,纯色色块,无阴影,简洁线条,现代简约` |
+
+
diff --git a/data/skills/art_skills/2D_flat_design/driector_skills/director_planning_style.md b/data/skills/art_skills/2D_flat_design/driector_skills/director_planning_style.md
new file mode 100644
index 0000000..5b466bf
--- /dev/null
+++ b/data/skills/art_skills/2D_flat_design/driector_skills/director_planning_style.md
@@ -0,0 +1,85 @@
+---
+name: director_planning_style
+description: 扁平风约束 — 定义2D扁平风在色调体系、色块方案、质感方向、场景空间元素、乐器选择与环境音上的全局约束。适用于任何叙事类型。
+metaData: director_skills
+---
+
+# 扁平风约束 · 2D扁平风(Flat Design) · 技法参考
+
+---
+
+## 一、色调体系与画面基调
+
+- **色调基底** — 全片以明快蓝(C1)、活力橙(C2)、米白(C9)为基底色,整体色温中性(5500-6500K),饱和度中高(70-90%),呈现现代扁平风的清新简洁感
+- **冷暖叙事对比** — 暖色(活力橙 C2、暖粉 C7)作为情感升温的视觉信号,用于心动、浪漫段落局部强化。冷色(明快蓝 C1、淡紫 C6)用于日常、夜晚段落。冷暖切换应与故事弧线同步,而非随意混用
+- **冷暖分配策略** — 日常/办公段落保持中性偏冷色调基底;暖色仅在情感升温后释放,用冷暖对比做叙事转折
+- **色盘先行原则** — 段落规划需先绑定情绪场景(日常/心动/浪漫/回忆等),再确定主色+辅色与色块方案,避免"剧情对了但情绪不对色"
+- **禁用色域** — 高饱和荧光色、霓虹色、3D 渲染色彩体系均与本风格不兼容
+
+---
+
+## 二、色块方案体系
+
+- **色块即叙事** — 6 套色块方案对应不同情绪段落,导演规划阶段应在段落层面确定色块基调方向,而非逐镜指定
+- **扁平风格无传统光影** — 通过色块明度差异制造"伪光影",不使用光源角度
+
+| 色块方案 | 方案名 | 色调倾向 | 适用情绪 |
+|---|---|---|---|
+| A | 纯色块 | 暖橙 + 米白 + 浅蓝 | 日常温馨 |
+| B | 色块对比 | 暖粉 + 暖橙对比 | 心动瞬间、升温段 |
+| C | 冷色调 | 冷蓝 + 灰色 + 白色 | 办公/学习、冷静段 |
+| D | 暖调主导 | 暖橙 + 暖粉 + 浅黄 | 浪漫场景、甜蜜段 |
+| E | 冷色主导 | 深蓝 + 紫色 + 暖黄点缀 | 夜晚静谧 |
+| F | 低饱和 | 浅黄 + 浅灰 + 暖粉 | 回忆/闪回 |
+
+- **冷暖色分配** — 暖色块(活力橙/暖粉)适用于情感升温段落;冷静/夜晚段落用冷色块。导演可根据叙事需要调整冷暖切换点
+- **氛围方向映射** — 每场戏的氛围方向应能映射到上述色块方案(A-F)的某一方向,确保视觉一致性
+
+---
+
+## 三、质感方向
+
+- **几何极简感** — 扁平设计的核心:纯色色块、清晰轮廓、无阴影无渐变、色块边界明确
+- **简洁线条 + 纯净色彩** — 这是画面质感的锚点。不是写实渲染,不是复杂细节,是几何化的极简表达
+- **禁止写实元素** — 所有视觉元素必须符合扁平风格:无阴影、无渐变、无纹理、无光影。禁止"3D感"和"写实感"
+- **色块对比清晰** — 色块间边界分明,主色与辅色对比明确,避免模糊过渡
+- **扁平不等于单调** — 通过色彩对比与构图设计传递情感,而非依赖写实细节。用色块大小、色相变化制造视觉层次
+
+---
+
+## 四、扁平场景空间元素
+
+扁平风格特有的场景元素及其视觉叙事功能:
+
+- **纯色背景/色块分区** — 天然的构图载体,用色块区域划分空间层次,制造简洁的空间感与画面纵深
+- **几何形状/图标符号** — 扁平风格的表意工具,圆形 = 温暖/完整、三角 = 动态/冲突、方形 = 稳定/日常
+- **留白区域** — 扁平风格的重要情感手段。大面积留白 = 聚焦、满色块 = 充实、局部留白 = 呼吸感
+- **段落间用纯色过渡** — 本风格有丰富的色块资产(不同色相/明度变体),段落衔接建议用纯色块做情绪缓冲,不要硬切
+- **转折点用色块变化** — 优先使用画面手段(明度变化、色相变化、色块对比突变)而非依赖对白解释
+
+---
+
+## 五、扁平风乐器与环境音
+
+扁平风格下的声音元素约束:
+
+### 乐器选择
+
+- **电子合成器** — 日常/温馨/现代段落的核心乐器,最能表现扁平风格的简洁感
+- **钢琴** — 浪漫/情感段落,干净的音色适合简约氛围
+- **轻快节奏** — 明亮/活力段落,适合快节奏场景
+- **弦乐** — 情绪升华段落的铺底,不宜喧宾夺主
+
+### 乐器组合策略
+
+| 情绪阶段 | 乐器组合 |
+|---|---|
+| 平稳/开场/收尾 | 电子音效独奏 |
+| 日常温馨 | 合成器 + 轻钢琴 |
+| 情绪升华/浪漫 | 钢琴 + 弦乐 |
+| 关键情感瞬间 | 纯环境音(去掉配乐) |
+
+### 扁平风环境音
+
+- **典型环境音层次** — 城市交通声 / 办公室键盘声 / 咖啡厅背景音 / 风吹窗帘声 / 人群低语声 / 鼠标点击声
+- **每场戏标注 1-2 个核心环境音**,帮助后续音效设计。环境音层次越丰富,场景越有沉浸感
diff --git a/data/skills/art_skills/2D_flat_design/driector_skills/director_storyboard.md b/data/skills/art_skills/2D_flat_design/driector_skills/director_storyboard.md
new file mode 100644
index 0000000..ed4eaf6
--- /dev/null
+++ b/data/skills/art_skills/2D_flat_design/driector_skills/director_storyboard.md
@@ -0,0 +1,189 @@
+---
+name: director_storyboard
+description: 导演分镜提示词技法 · 2D扁平风(Flat Design)
+metaData: director_skills
+---
+
+# 分镜提示词 · 2D扁平风 · 风格专属技法
+
+---
+
+## 适用范围
+
+本 Skill 专用于**2D扁平风(Flat Design)**风格的分镜提示词生成。
+
+---
+
+## 情绪 → 面容/眼神词映射
+
+| 情绪输入 | 面容词 | 眼神词 | 微表情补充 |
+|----------|--------|--------|-----------|
+| 心动 / 欣喜 | 简洁线条,橙色色块 | 圆形眼睛,眼神明亮 | 简单笑脸,扁平化 |
+| 悲伤 / 失落 | 简洁线条,冷色色调 | 椭圆形眼睛,眼神柔和 | 嘴角下弯,扁平化 |
+| 惊讶 / 好奇 | 圆形眼睛,放大表情 | 眼神集中,目光好奇 | 嘴巴O型,扁平化 |
+| 温柔 / 深情 | 柔和线条,暖色色调 | 眼神专注,目光柔和 | 嘴角上弯,扁平化 |
+| 坚定 / 勇敢 | 直线线条,冷色色调 | 眼神坚定,目光集中 | 表情明确,扁平化 |
+| 害羞 / 羞涩 | 粉色色块,圆润线条 | 眼睛向下,不敢直视 | 脸颊红晕,扁平化 |
+| 温暖 / 感动 | 暖色线条,柔和表情 | 眼神温暖,目光柔和 | 嘴角上扬,扁平化 |
+| 孤独 / 怀念 | 冷色线条,简洁表情 | 眼神放空,若有所思 | 表情平静,扁平化 |
+| 快乐 / 雀跃 | 圆形线条,明亮表情 | 眼睛弯月,表情生动 | 动作轻快,扁平化 |
+| 紧张 / 不安 | 线条变细,眉头符号 | 眼睛变小,目光不确定 | 手位紧张,扁平化 |
+
+---
+
+## 色彩氛围词库(扁平风)
+
+### 色相使用
+
+| 场景类型 | 主色词 | 辅色词 | 氛围词 |
+|--------|--------|--------|---------|
+| 日常生活 | 明快蓝 + 米白 | 暖橙点缀 | 简洁感,现代感 |
+| 办公空间 | 冷灰 + 冷蓝 | 白色 + 浅灰 | 理性,高效感 |
+| 休闲空间 | 暖橙 + 暖粉 | 米白 + 浅黄 | 放松,舒适感 |
+| 浪漫场景 | 暖粉 + 暖橙 | 米白 + 浅紫 | 温馨,甜蜜感 |
+| 夜晚场景 | 深蓝 + 紫色 | 暖黄点缀 | 静谧,神秘感 |
+| 回忆场景 | 浅黄 + 浅灰 | 暖粉点缀 | 怀旧,柔和感 |
+
+### 情绪色块
+
+| 情绪基调 | 色块类型 | 补充约束 |
+|----------|----------|---------|
+| 心动/温情 | 暖色对比色块 | 留白较多,主色突出 |
+| 悲伤/失落 | 冷色单色块 | 饱和度降低,留白更大 |
+| 快乐/活力 | 多色对比色块 | 饱和度高,色彩丰富 |
+| 怀旧/回忆 | 低饱和单色块 | 色调统一,留白更多 |
+| 日常/温馨 | 暖色主色块 | 柔和对比,适度留白 |
+| 夜晚/静谧 | 冷色主色块 | 暖色点缀,层次清晰 |
+
+---
+
+## 场景质感约束词(按场景类型)
+
+| 场景类型 | 必加约束词 |
+|----------|-----------|
+| 扁平人物 | 几何造型,简洁线条,无阴影无渐变,纯色色块填充 |
+| 扁平场景 | 纯色背景,几何形状,简单结构,无纹理无细节 |
+| 办公空间 | 简洁家具,几何形状,冷色调,现代设计感 |
+| 居家空间 | 简约家具,暖色调,几何线条,温馨氛围 |
+| 城市景观 | 简化建筑,几何形状,冷色调,现代都市感 |
+| 自然环境 | 几何树木,纯色草地,简单形状,扁平化自然 |
+| 交通场景 | 简化车辆,几何形状,冷色调,现代交通感 |
+| 室内空间 | 简洁隔断,纯色墙面,几何门窗,现代简约 |
+
+---
+
+## 固定风格锚定词(所有输出必须包含)
+
+**扁平风格锚定(必选):**
+
+2D扁平风,Flat Design,无阴影无渐变,纯色色块,简洁线条
+
+**色块质感(所有输出必选):**
+
+纯色填充,无纹理无渐变,几何造型,扁平化设计
+
+**轮廓线条(所有输出必选):**
+
+清晰轮廓线,线条均匀一致,无断线无粗糙边缘
+
+**色彩层次(所有输出必选):**
+
+色彩饱和适中,色块对比清晰,无复杂光影层次
+
+**氛围锚定(必选):**
+
+简约现代氛围,扁平设计美学,清晰情感表达,现代感视觉
+
+**画质锁定词(所有输出必须包含,置于风格收尾之后):**
+
+模式A(中文)——默认:
+高清画质,线条清晰,色彩纯净,画面无杂色无噪点,无阴影无渐变
+
+模式A(中文)——画内文字场景(画面描述中含招牌/标识等道具文字时):
+高清画质,线条清晰,色彩纯净,画面无杂色无噪点,无阴影无渐变,招牌/标识等道具文字清晰可读
+
+模式B(英文)——默认:
+high-quality 2D flat design, clean lines, pure colors, no shadows, no gradients, no noise, no artifacts
+
+模式B(英文)——画内文字场景:
+high-quality 2D flat design, clean lines, pure colors, no shadows, no gradients, no noise, no artifacts, legible text on signs and props
+
+**负向词模板(模式B 必须包含,置于提示词末尾):**
+
+> ⚠️ Seedream(模式A)**不支持负向提示词**,负向词仅适用于模式B。模式A 通过正向词中的质感锚定和画质锁定来保证画面质量。
+
+模式B(英文):
+no 3D rendering, no photorealism, no shadows, no gradients, no textures, no realistic lighting, no realistic materials, no complex details, no detailed backgrounds, no realistic faces, no realistic hair, no realistic clothing
+
+---
+
+## 美学禁止项(生成时严格规避)
+
+以下词汇/风格不得出现于输出提示词中:
+
+- ❌ 写实渲染/照片级真实感风格
+- ❌ 阴影/渐变/纹理相关词
+- ❌ 高饱和荧光色/过度对比色系
+- ❌ 复杂细节/精细纹理描述
+- ❌ 3D透视/深度感描述
+- ❌ 写实人物/写实服装/写实建筑
+- ❌ 画外叠加文字(字幕、水印、标题卡、旁白叠字等 UI 层文字,画面必须为纯视觉画面)
+
+> 💡 **例外**:故事世界内的道具文字(招牌、路牌、标识、书籍等场景中自然存在的文字)**不属于禁止范围**。当分镜画面描述中包含此类内容时,应如实描写其存在并要求文字清晰。
+
+---
+
+## 完整生成示例
+
+> 以下为同一输入分别使用模式A和模式B的对照展示,实际使用时**仅输出其中一种**。
+
+### 输入(分镜表行数据)
+
+| 序号 | 画面描述 | 场景 | 关联资产名称 | 时长 | 景别 | 运镜 | 角色动作 | 情绪 | 光影氛围 |
+|------|---------|------|-------------|------|------|------|---------|------|----------|
+| 1 | 扁平风格两人相遇,橙色与蓝色色块对比,简洁背景 | 城市 | 角色A/B | 5s | 中景 | 静止 | 对视微笑,简洁线条 | 心动 / 温暖 | 暖色对比 + 留白 |
+
+### 示例输出A(模式A · Seedream)
+
+[Prompt]
+2D扁平风,Flat Design,无阴影无渐变,纯色色块,简洁线条,中景构图,两个扁平角色半身入镜,纯色填充,无纹理无渐变,几何造型,扁平化设计,清晰轮廓线,线条均匀一致,无断线无粗糙边缘,色彩饱和适中,色块对比清晰,无复杂光影层次,扁平风格两人相遇,橙色与蓝色色块对比,简洁背景,对视微笑,线条简洁,眼神明亮,暖色对比,留白较多,简约现代氛围,扁平设计美学,清晰情感表达,现代感视觉,高清画质,线条清晰,色彩纯净,画面无杂色无噪点,无阴影无渐变。
+Based on the reference image of 角色A/B, maintain consistent: face features, hairstyle, costume details. Generate a new scene: two flat characters meeting in city, orange and blue color block contrast, simple background, smiling and looking at each other. Keep character appearance identical to reference.
+
+### 示例输出B(模式B · Nanobanana)
+
+```xml
+
+You are a 2D flat design storyboard artist.
+Maintain strict visual continuity across all shots.
+
+
+Image [1]: 角色A/B — flat design characters, geometric shapes, simple lines, pure colors
+
+
+- Same color palette, face features, hairstyle across ALL shots
+- Same environment, background color, geometric style
+- Only framing, angle, action, expression may change
+- Do NOT introduce new characters not in reference images
+
+
+Medium shot, two flat characters meeting in city, orange and blue color block contrast, simple background, smiling and looking at each other, geometric shapes, simple lines, pure colors, no shadows, no gradients, clean lines, high-quality 2D flat design, no noise, no artifacts.
+
+
+no 3D rendering, no photorealism, no shadows, no gradients, no textures, no realistic lighting, no realistic materials, no complex details, no detailed backgrounds, no realistic faces, no realistic hair, no realistic clothing
+
+```
+
+## 快速参考卡
+
+### 情绪 → 画面词速查
+
+| 情绪 | 面容关键词 | 色彩匹配 |
+|------|-----------|---------|
+| 心动 | 圆润线条,橙色色块 | 暖粉 + 暖橙对比 |
+| 悲伤 | 直线线条,冷色色调 | 冷蓝 + 灰色单色 |
+| 温柔 | 柔和线条,暖色色调 | 暖黄 + 米白柔和 |
+| 浪漫 | 曲线线条,粉色色调 | 暖粉 + 暖橙对比 |
+| 感动 | 上扬线条,暖色色调 | 暖橙 + 暖黄主色 |
+| 孤独 | 冷色线条,简洁表情 | 冷蓝 + 紫色单色 |
+| 快乐 | 圆形线条,明亮表情 | 暖橙 + 黄色对比 |
+
diff --git a/data/skills/art_skills/2D_flat_design/driector_skills/director_storyboard_table_style.md b/data/skills/art_skills/2D_flat_design/driector_skills/director_storyboard_table_style.md
new file mode 100644
index 0000000..3b1cb38
--- /dev/null
+++ b/data/skills/art_skills/2D_flat_design/driector_skills/director_storyboard_table_style.md
@@ -0,0 +1,46 @@
+---
+name: director_storyboard_table_style
+description: 分镜表扁平风约束 — 定义2D扁平风在分镜表中的色彩氛围规范、色块动态、动作节奏、运镜禁忌与转场禁忌。适用于任何叙事类型。
+metaData: director_skills
+---
+
+# 分镜表扁平风约束 · 2D扁平风(Flat Design) · 技法参考
+
+---
+
+## 一、分镜表定位
+
+分镜表是导演将剧本转化为镜头语言的核心工具。以下仅提供2D扁平风风格在分镜表层面的约束规范。
+
+---
+
+## 二、色彩与氛围
+
+- **同场戏色彩统一** — 一场戏内不应出现两种以上色彩方案,除非有明确的叙事转折(如暖色块突然切换为冷色块)
+- **情绪色盘绑定** — 每场戏至少绑定 1 个情绪场景(如日常温馨/心动瞬间/浪漫场景/夜晚静谧),并在镜头组内保持主色+辅色连续性
+- **色彩对比规范** — 默认中对比,描述时须区分高对比/低对比
+- **冷暖色调与叙事阶段匹配** — 日常段落保持暖色调基底,冷色调在夜晚或情绪转折后使用
+- **色彩转场是高级手段** — 从暖色渐变到冷色 = 情绪转变。在分镜表中标注色彩变化点
+
+---
+
+## 三、色块动态
+
+- **色块变化增加画面呼吸感** — 色相变化、明度变化、大小变化。每 3-4 个镜头至少安排一个有色块变化的镜头,避免画面"死"掉
+- **扁平风环境元素优先** — 色块动态应选用扁平风格内的元素:色相渐变、色块位移、明度过渡、几何形状变化,禁止出现写实/3D 元素
+
+---
+
+## 四、扁平动作节奏
+
+- **动作要简洁** — 所有人物动作默认自然节奏。抬手、转身都应标注"简洁"或"平滑"
+- **单镜头动作不超过两个** — "抬手 + 微笑"可以,"抬手 + 微笑 + 转身 + 行走"会崩
+- **甜宠互动用暗示** — 目光交汇、手势示意、物体递送。不要写"拥抱""接吻"等大幅度双人交互
+
+---
+
+## 五、运镜禁忌
+
+- **禁用复杂运镜** — 旋转、扭曲、快速切换与本风格气质冲突
+- **禁用花式转场** — 旋转、扭曲、擦除等与本风格不兼容
+- **默认静止** — 70% 以上镜头应为固定机位,让画面的色块和构图自己说话
diff --git a/data/skills/art_skills/2D_flat_design/images/1.png b/data/skills/art_skills/2D_flat_design/images/1.png
new file mode 100644
index 0000000..060586c
Binary files /dev/null and b/data/skills/art_skills/2D_flat_design/images/1.png differ
diff --git a/data/skills/art_skills/2D_flat_design/images/场景原始.png b/data/skills/art_skills/2D_flat_design/images/场景原始.png
new file mode 100644
index 0000000..dd54d11
Binary files /dev/null and b/data/skills/art_skills/2D_flat_design/images/场景原始.png differ
diff --git a/data/skills/art_skills/2D_flat_design/images/场景衍生.png b/data/skills/art_skills/2D_flat_design/images/场景衍生.png
new file mode 100644
index 0000000..36e4370
Binary files /dev/null and b/data/skills/art_skills/2D_flat_design/images/场景衍生.png differ
diff --git a/data/skills/art_skills/2D_flat_design/images/女生原始.png b/data/skills/art_skills/2D_flat_design/images/女生原始.png
new file mode 100644
index 0000000..05b6f5b
Binary files /dev/null and b/data/skills/art_skills/2D_flat_design/images/女生原始.png differ
diff --git a/data/skills/art_skills/2D_flat_design/images/女生衍生.png b/data/skills/art_skills/2D_flat_design/images/女生衍生.png
new file mode 100644
index 0000000..d59136a
Binary files /dev/null and b/data/skills/art_skills/2D_flat_design/images/女生衍生.png differ
diff --git a/data/skills/art_skills/2D_flat_design/prefix.md b/data/skills/art_skills/2D_flat_design/prefix.md
new file mode 100644
index 0000000..a48c809
--- /dev/null
+++ b/data/skills/art_skills/2D_flat_design/prefix.md
@@ -0,0 +1,117 @@
+# 全局美学基础 · 2D扁平风(Flat Design)
+
+---
+严格遵循下方风格约束与全局规则,依据提示词模板格式生成提示词。仅输出提示词本身,不附加任何解释、说明或额外文本。
+## 一、风格基因
+
+| 维度 | 定义 |
+|---|---|
+| **一级风格** | 2D扁平风(Flat Design) |
+| **二级风格** | 几何造型 · 纯色色块 · 无阴影无渐变 |
+| **情感基调** | 简约现代 · 明快清新 |
+| **质感锚词** | 简洁线条、纯色填充、色块对比 |
+
+---
+
+## 二、全局色彩盘(风格基线,不是硬锁)
+
+> 目标:统一审美而非限制创作。除「硬约束色」外,其余颜色默认优先使用,可在合理范围内偏移。
+
+### 色彩使用层级
+
+| 层级 | 约束强度 | 说明 |
+|---|---|---|
+| L1 硬约束 | 高 | 仅锁定角色识别核心:肤色、发色、主服底色的审美方向 |
+| L2 软约束 | 中 | 场景色、配饰色、点缀色优先参考色盘,可按镜头与剧情微调 |
+| L3 例外机制 | 低 | 浪漫/高潮/特殊场景可临时突破局部色彩,但需保留整体扁平逻辑 |
+
+| 序号 | 色名 | 色值 | 用途 |
+|---|---|---|---|
+| C1 | 明快蓝 | #3B82F6 | 背景、服装、冷调主体 |
+| C2 | 活力橙 | #F59E0B | 暖色点缀、情感高潮 |
+| C3 | 纯净白 | #FFFFFF | 背景、留白、纯净感 |
+| C4 | 深棕发 | #4A3728 | 发色、眼瞳 |
+| C5 | 高级灰 | #8A8A8A | 中性色、次要元素 |
+| C6 | 淡紫 | #C084FC | 夜晚、梦幻、点缀 |
+| C7 | 暖粉 | #FB7185 | 浪漫、心动、点缀 |
+| C8 | 浅黄 | #FDE047 | 温暖、阳光、背景 |
+| C9 | 米白 | #FEF3C7 | 背景、留白、温暖感 |
+| C10 | 薄荷绿 | #5EEAD4 | 自然、清新、环境 |
+
+### 硬约束色(默认锁定)
+
+| 色项 | 对应色 | 规则 |
+|---|---|---|
+| 肤色基准 | C3 纯净白 + C9 米白 | 默认优先,允许明度微调 |
+| 发色/瞳色基准 | C4 深棕发 | 默认优先,允许深棕/深褐偏移 |
+
+### 软约束色(推荐优先)
+
+> C1/C2/C5/C6/C7/C8/C10 为推荐色域,用于服装、装饰、背景、暖光、环境等。可根据镜头氛围做同色相邻近调整。
+
+### 情绪色盘(导演对齐版)
+
+| 情绪场景 | 主色 | 辅色 | 色块对比建议 | 画面关键词 |
+|---|---|---|---|---|
+| 日常温馨 | C9 米白 | C3 纯净白 + C5 高级灰 | 低对比,柔和 | 生活感、温暖、平静 |
+| 心动瞬间 | C7 暖粉 | C2 活力橙 + C9 米白 | 中对比,主色突出 | 羞涩、靠近感、暧昧 |
+| 办公/学习 | C1 明快蓝 | C3 纯净白 + C5 高级灰 | 高对比,理性 | 高效、冷静、专业 |
+| 浪漫场景 | C7 暖粉 | C2 活力橙 + C8 浅黄 | 高对比,浪漫 | 甜蜜、温暖、情感 |
+| 夜晚场景 | C6 淡紫 | C1 明快蓝 + C2 活力橙 | 冷为主,暖点缀 | 静谧、神秘、思考 |
+| 回忆/闪回 | C8 浅黄 | C5 高级灰 + C7 暖粉 | 低对比,柔和 | 怀旧、旧忆、梦幻 |
+| 离别感伤 | C5 高级灰 | C1 明快蓝 + C6 淡紫 | 高对比,冷调 | 距离感、克制、静压 |
+| 重逢释怀 | C9 米白 | C7 暖粉 + C2 活力橙 | 先冷后暖,渐进 | 回温、释然、治愈 |
+
+### 情绪色盘使用规则
+
+| 编号 | 规则 |
+|---|---|
+| E1 | 每条提示词至少指定 1 个「情绪场景」并绑定主色+辅色组合 |
+| E2 | 单镜头主色不超过 2 个,避免颜色叙事失焦 |
+| E3 | 情绪切换时优先调整色相较色温,再调整饱和度 |
+| E4 | 治愈向默认遵循「暖底 + 冷暖对比」:暖色铺底,冷色用于背景/次要元素 |
+| E5 | 若与剧情冲突,以情绪色盘优先于通用推荐色,但不得突破严禁项 |
+
+### 色温约束
+
+| 参数 | 值 | 说明 |
+|---|---|---|
+| 整体色温 | 中性 5500-6500K(推荐) | 简约现代主基调 |
+| 肤色色温 | 微暖 5800-6200K(推荐) | 米白但有生命感 |
+| 对比度 | 中等偏高(建议保持) | 色块对比清晰,但不过分强烈 |
+| 饱和度 | 中高 70-90%(建议区间) | 扁平风格高级色调 |
+
+### 容差与例外
+
+| 项目 | 建议容差 |
+|---|---|
+| 色相偏移 | ±8° |
+| 饱和度偏移 | ±10% |
+| 明度偏移 | ±12% |
+
+> 例外场景:浪漫、高潮、情绪转换镜头可使用更暖或更高饱和局部色块;但禁止高饱和荧光色与现代色彩语言入镜。
+
+---
+
+## 三、全局约束规则
+
+### 必守规则(所有技能继承)
+
+| 编号 | 规则 |
+|---|---|
+| R1 | 必须包含「2D扁平风 + Flat Design」风格锚定词 |
+| R2 | 必须声明「无阴影无渐变 + 纯色色块」 |
+| R3 | 面部必须使用「几何造型 + 简洁线条」 |
+| R4 | 轮廓线必须使用「清晰线条 + 均匀一致」 |
+| R5 | 色彩必须声明「纯色填充 + 色块对比清晰」 |
+
+### 严禁项(所有技能继承)
+
+| 编号 | 严禁内容 |
+|---|---|
+| X1 | 严禁「3D渲染/写实渲染/照片级真实感」 |
+| X2 | 严禁「阴影/渐变/纹理/光影」 |
+| X3 | 严禁「高饱和荧光色/霓虹色」 |
+| X4 | 严禁「面部变形/比例失调/肢体异常」倾向词 |
+| X5 | 严禁「复杂细节/精细纹理/写实背景」 |
+| X6 | 严禁「3D透视/深度感描述」 |
\ No newline at end of file
diff --git a/data/skills/art_skills/2D_mature_urban_romance/README.md b/data/skills/art_skills/2D_mature_urban_romance/README.md
new file mode 100644
index 0000000..ac41ddb
--- /dev/null
+++ b/data/skills/art_skills/2D_mature_urban_romance/README.md
@@ -0,0 +1,34 @@
+# 成熟都市言情二次元动画风格说明
+
+本风格专为**成熟都市言情二次元动画**题材打造,所有美术提示词、规范和生成内容均严格限定于:
+
+- **二次元动画风格**:所有角色、场景、道具均以二次元动画为标准,强调赛璐璐上色、清晰线条、戏剧化低调光影。
+- **现代都市言情背景**:现代都市生活场景,涵盖公寓、办公室、咖啡厅、城市街道等,杜绝古风/奇幻元素。
+- **电影级构图**:画面构图强调电影感,景深虚化、镜头光学特征、空气透视。
+- **低饱和冷色调**:整体色调偏冷,暖色仅作点缀,突出清冷与温柔并存的甜宠氛围。
+
+## 适用范围
+
+- 成熟都市言情题材的AI美术生成(角色、场景、道具、分镜等)
+- 现代小说改编动画风格的视觉创作
+- 需要清晰线条、赛璐璐上色、电影级构图的视觉创作
+
+## 严禁内容
+
+- 真人写实/摄影/3D渲染风格
+- 高饱和荧光色/霓虹色
+- 古风/奇幻/科幻等现代元素以外的风格
+- 暗示性、暴露、透视等不适宜内容
+
+## 风格体验
+
+在本风格下,您将体验到:
+
+- 角色面容精致、气质清冷或温润,服饰、妆容、发型均为现代都市二次元风格
+- 场景空间层次丰富,材质纹理超清晰,氛围真实且富有诗意
+- 道具、装饰、配饰等均为现代都市造型,工艺精细,质感极致
+- 分镜与视频均以二次元动画为基础,强调叙事与情感表达
+
+---
+
+本风格仅适用于"成熟都市言情二次元动画"相关项目。如需其他风格(如真人写实、古风、奇幻等),请勿使用本套提示词。
\ No newline at end of file
diff --git a/data/skills/art_skills/2D_mature_urban_romance/art_prompt/art_character.md b/data/skills/art_skills/2D_mature_urban_romance/art_prompt/art_character.md
new file mode 100644
index 0000000..d56f831
--- /dev/null
+++ b/data/skills/art_skills/2D_mature_urban_romance/art_prompt/art_character.md
@@ -0,0 +1,212 @@
+# 二次元人物基础形象生成 · 约束手册
+
+---
+
+## 一、基础形象原则
+
+1. **面容即灵魂** — 五官是角色唯一锚点,精细度适配动画风格
+2. **底模即基础** — 基础打底服装 + 素颜,后续服化均为叠加层(女性:吊带背心 + 四角短裤;男性:四角短裤)
+3. **四视图一致** — 面容/体型/发型/基础服装跨视图高度统一
+4. **情感传达** — 无妆状态仍需体现角色气质(清冷/温柔/妩媚/冷峻)
+
+---
+
+## 二、面容约束
+
+### 女性面容
+
+| 部位 | 约束 | 提示词 |
+|---|---|---|
+| 脸型 | 标准鹅蛋脸、线条流畅、下颌线清晰 | 鹅蛋脸、脸型流畅 |
+| 眼型 | 大而明亮、眼角微挑、双眼皮明显 | 大眼、凤眼微挑、双眼皮 |
+| 眉型 | 自然眉形、眉色浅棕/黑(裸眉) | 自然眉形、裸眉 |
+| 鼻型 | 小巧挺直、鼻翼窄 | 小鼻、鼻梁精致 |
+| 唇型 | 薄唇或适中、唇色自然裸粉 | 薄唇、唇色裸粉 |
+| 气质 | 清冷、五官精致、素颜无妆 | 面容精致、五官立体、素颜 |
+
+### 男性面容
+
+| 部位 | 约束 | 提示词 |
+|---|---|---|
+| 脸型 | 棱角分明、下颌线清晰、颧骨微显 | 棱角分明、下颌线硬朗 |
+| 眼型 | 细长或标准、眼神深邃克制 | 细眼、眼神清冽 |
+| 鼻型 | 高挺英挺、鼻梁笔直 | 高鼻英挺 |
+| 唇型 | 薄唇微抿、唇色自然 | 薄唇、唇色自然 |
+| 气质 | 清冷疏离 / 温润如玉 | 清冷俊逸 / 温润如玉、素颜 |
+
+---
+
+## 三、肤感约束
+
+### 女性
+
+| 项目 | 约束 | 提示词 |
+|---|---|---|
+| 肤色 | 冷白皮、全身均匀、白得通透 | 冷白皮、白皙肌肤 |
+| 光泽 | 柔和光感、非哑光非油光 | 肌肤柔光、肌肤细腻 |
+| 质感 | 细腻光滑、赛璐璐质感 | 皮肤细腻、肌肤质感 |
+| 露肤 | 面部/颈部/锁骨/手部 | 肩颈线条优美、肌肤白皙 |
+
+### 男性
+
+| 项目 | 约束 | 提示词 |
+|---|---|---|
+| 肤色 | 白皙透亮、带健康感、全身均匀 | 肤色白皙、健康肤色 |
+| 光泽 | 清爽光感、自然光泽 | 肌肤清爽、皮肤透亮 |
+| 质感 | 干净利落、赛璐璐光泽 | 皮肤质感细腻、面容清冽 |
+
+---
+
+## 四、体型约束
+
+### 女性
+
+| 项目 | 约束 | 提示词 |
+|---|---|---|
+| 身高 | 由角色设定指定,默认范围 160-170cm,身高通过头身比换算体现 | `{身高}cm tall`、`{身高描述如:tall slender woman}` |
+| 头身比 | 六头半至七头半,头身比 = 身高 ÷ 头长,严格约束全身比例 | `6.5-7.5 heads tall proportion`、身材修长 |
+| 肩颈 | 纤细肩线、锁骨清晰可见 | 纤细肩线、锁骨清晰 |
+| 手部 | 纤长白皙、指节分明、五指正常 | 纤纤玉手、指节分明 |
+| 体态 | 现代都市女性、自然体态 | 体态自然、身姿优雅 |
+
+### 男性
+
+| 项目 | 约束 | 提示词 |
+|---|---|---|
+| 身高 | 由角色设定指定,默认范围 175-185cm,身高通过头身比换算体现 | `{身高}cm tall`、`{身高描述如:tall imposing man}` |
+| 头身比 | 七头至八头,头身比 = 身高 ÷ 头长,严格约束全身比例 | `7-8 heads tall proportion`、身材高挑 |
+| 肩颈 | 肩部宽阔、颈部有力 | 宽肩窄腰 |
+| 手部 | 骨节分明、手掌宽大、五指正常 | 手指骨节分明 |
+| 体态 | 现代都市男性、自然体态 | 身姿挺拔、体态从容 |
+
+### 身高 - 头身比换算参考
+
+| 身高(cm) | 头身比 | 头长(cm) | 适用描述 |
+|---|---|---|---|
+| 155-160 | 6.5-7.0 | ~22cm | 娇小玲珑 |
+| 160-165 | 7.0-7.5 | ~22cm | 纤细修长 |
+| 165-170 | 7.0-7.5 | ~22cm | 高挑优雅(女性默认) |
+| 170-175 | 7.5-8.0 | ~22cm | 修长挺拔 |
+| 175-180 | 7.5-8.0 | ~22cm | 高大英挺(男性默认) |
+| 180-185 | 8.0 | ~22.5cm | 伟岸挺拔 |
+| 185-190 | 8.0-8.5 | ~22cm | 高大威猛 |
+
+---
+
+## 五、基础发型约束
+
+> 仅定义自然散发/简单束发,发饰在服化衍生环节叠加。
+
+### 女性
+
+| 项目 | 约束 | 提示词 |
+|---|---|---|
+| 发色 | 纯黑、深蓝或深棕,禁挑染 | 黑色长发、深色长发 |
+| 发长 | 及肩、及腰或更长 | 及肩长发、及腰长发 |
+| 发质 | 层次分明、线条清晰 | 发丝层次分明、发丝细腻渲染 |
+| 造型 | 自然散发、中分/偏分、无发饰 | 长发自然散落、柔顺长发 |
+
+### 男性
+
+| 项目 | 约束 | 提示词 |
+|---|---|---|
+| 发色 | 纯黑或深棕 | 黑发、深色短发/中发 |
+| 发长 | 短发至中长发 | 短发、中长发 |
+| 发质 | 层次分明、质感清晰 | 发丝层次分明、发丝细腻渲染 |
+| 造型 | 自然散发或简单侧分、无发冠 | 头发自然散落、侧分发型 |
+
+---
+
+## 六、基础服装约束
+
+> 基础服装无特殊约束,女性为吊带背心和四角短裤,男性为四角短裤。正式服饰在服化衍生环节叠加。
+
+### 女性基础服装
+
+> 吊带背心和四角短裤,颜色以基础色为主,无花纹装饰。
+
+### 男性基础服装
+
+> 四角短裤,颜色以基础色为主,无花纹装饰。
+
+### 着装统一规则
+
+- 服装风格统一,确保后续服饰叠加无色彩干扰
+- 除面部/手部/颈部外基本覆盖
+- 四视图服装款式完全一致
+- 基础服装仅为安全打底,焦点在面容与体态
+
+---
+
+## 七、四视图设定图规范
+
+### 视图定义
+
+| 位置 | 视图 | 角度 | 景别 | 要求 | 提示词 |
+|---|---|---|---|---|---|
+| 左一 | 人像特写 | 正面平视 | 头顶至锁骨 | 从头顶到锁骨完整展示不裁切,面部占60%+,五官清晰 | `portrait closeup`、`face detail`、`head to collarbone complete`、`no crop` |
+| 左二 | 正视图 | 正面 0° | 全身立像 | 面对镜头、双臂自然、从头顶到脚底完整展示 | `front view`、`full body head to toe`、`height mark` |
+| 右二 | 侧视图 | 右侧 90° | 全身立像 | 纯侧面轮廓清晰、从头顶到脚底完整展示 | `side view`、`profile`、`full body head to toe`、`height mark` |
+| 右一 | 后视图 | 后方 180° | 全身立像 | 后脑/背部/发尾/脚部清晰、从头顶到脚底完整展示 | `back view`、`rear view`、`full body head to toe`、`height mark` |
+
+### 画面规范
+
+| 项目 | 约束 |
+|---|---|
+| 布局 | 同一画面从左至右并排四视图 |
+| 背景 | 纯净中性灰 `#E8E8E8` |
+| 站姿 | 自然站立、双脚平行微分、双臂自然下垂或微展 |
+| 全身展示 | 全身立像必须从头顶到脚底完整入画,严禁裁切头顶或脚部 |
+| 特写展示 | 人像特写必须从头顶到锁骨完整入画,严禁裁切头顶,头发、额头、下巴均需完整 |
+| 表情 | 中性微表情,符合角色气质 |
+| 光线 | 均匀柔光,前方主光 + 双侧补光,无硬阴影 |
+| 一致性 | 四视图的肤色/体型/发型/面容/基础服装完全一致 |
+| 画面比例 | 建议 4:1 或 3:1 |
+
+---
+
+## 八、提示词模板
+
+{性别}角色四视图设定图,二次元动画风格,赛璐璐上色,现代都市风格,强对比度,极致细节,
+character design sheet,character turnaround,
+{脸型},{眼型},{鼻型},{唇型},{整体气质},素颜无妆,
+{肤色},肌肤柔光,皮肤细腻,赛璐璐质感,
+{身高描述,如:170cm tall、tall slender woman},{头身比,如:7 heads tall proportion},{身材描述},{体态描述},
+{发色}{发长},发丝层次分明,{基础造型},无发饰,
+(女性:吊带背心和四角短裤 / 男性:仅四角短裤),基础色,无花纹装饰,
+同一画面左至右并排:人像特写+正视图+侧视图+后视图,
+人像特写从头顶到锁骨完整展示,不裁切头顶,head to collarbone complete,
+全身立像从头顶到脚底完整展示,full body head to toe,不裁切头顶和脚部,
+自然站立,纯净中性灰背景,均匀柔光,无硬阴影,
+四视图一致性,面容细腻渲染,发丝细腻渲染
+图中不要有任何文字
+
+---
+
+## 九、约束规则
+
+### 必守
+
+| 编号 | 规则 |
+|---|---|
+| R1 | 必须为「素颜无妆」状态 |
+| R2 | 必须声明基础服装(女性:吊带背心+四角短裤;男性:四角短裤) |
+| R3 | 必须声明「无发饰、无配饰」 |
+| R4 | 必须指定「纯净中性灰背景」 |
+| R5 | 必须指定「四视图一致性」 |
+| R6 | 全身立像必须从头顶到脚底完整展示,严禁裁切 |
+| R7 | 必须声明角色身高并通过头身比换算约束全身比例(女性默认160-170cm/6.5-7.5头身,男性默认175-185cm/7-8头身) |
+| R8 | 人像特写必须从头顶到锁骨完整展示,严禁裁切头顶 |
+
+### 严禁
+
+| 编号 | 严禁 |
+|---|---|
+| X1 | 基础服装以外的任何服装/配饰/妆容 |
+| X2 | 正顶硬光/正底光/彩色光 |
+| X3 | 过度美白至无血色 / 肤色发灰 |
+| X4 | 复杂场景背景(必须纯灰底) |
+| X5 | 夸张表情/动态姿势 |
+| X6 | 全身立像裁切头顶或脚底,必须从头到脚完整入画 |
+| X7 | 人像特写裁切头顶,必须从头顶到锁骨完整入画 |
+| X8 | 忽略身高和头身比约束,身高必须明确声明并通过头身比换算体现全身比例 |
\ No newline at end of file
diff --git a/data/skills/art_skills/2D_mature_urban_romance/art_prompt/art_character_derivative.md b/data/skills/art_skills/2D_mature_urban_romance/art_prompt/art_character_derivative.md
new file mode 100644
index 0000000..357aa84
--- /dev/null
+++ b/data/skills/art_skills/2D_mature_urban_romance/art_prompt/art_character_derivative.md
@@ -0,0 +1,308 @@
+# 二次元人物衍生资产生成 · 约束手册
+
+---
+
+## 一、叠加原则
+
+1. **面容不变** — 叠加后五官必须与底模完全一致,禁止面容偏移
+2. **姿态不变** — 保持底模自然站立姿态,禁止任何姿态/动作/体态变化
+3. **逐层可控** — 每层独立描述,便于按层替换(换装不换妆)
+4. **风格统一** — 所有服化元素服从同一美学体系
+5. **质感不降** — 叠加后质感标准不低于底模
+6. **纯服化范畴** — 仅叠加妆容/发型/服饰/配饰,禁止引入道具、场景、环境、动作
+
+---
+
+## 二、叠加层级
+
+| 层级 | 内容 | 说明 |
+|---|---|---|
+| L0 | 底模 | 基础形象底模,不修改 |
+| L1 | 妆容(决策层) | 先分析用户线索,再决策「基础妆 / 轻妆 / 正式妆」强度 |
+| L2 | 发型造型 | 发髻/束发/编发 + 发饰 |
+| L3 | 中衣/内搭 | 替换白色基础中衣 |
+| L4 | 外衣/主服 | 现代都市服装(衬衫/外套/连衣裙等) |
+| L5 | 配饰 | 首饰/手表/眼镜/包袋等 |
+
+> **范畴边界**:人物衍生资产仅包含 L0–L5 层级(服化妆造),不包含道具(手机/书本/雨伞/咖啡杯等手持物)、场景环境(室内/室外/天气等)、姿态动作(行走/回眸/举手等)。这些属于其他资产类型的范畴。
+
+---
+
+## 三、妆容约束(L1)
+
+### 底模到衍生妆造策略(关键)
+
+> 角色底模虽为素颜,但衍生资产默认进入妆造流程。系统应根据用户提供的线索分析妆造需求,并在基础妆、轻妆、正式妆之间决策强度,而不是保持素颜。
+
+### L1 线索分析与妆容决策
+
+| 步骤 | 处理内容 | 决策结果 |
+|---|---|---|
+| S1 | 提取用户线索:面部状态词、情绪词、强度词 | 形成妆容需求摘要 |
+| S2 | 过滤非妆容线索:道具/场景/动作/姿态词不作为上妆依据 | 防止误判 |
+| S3 | 匹配妆容风格矩阵并给出强度档 | 基础妆 / 轻妆 / 正式妆 |
+| S4 | 生成最终 L1 提示词 | 只输出结论,不输出分析过程 |
+
+### 线索到妆容映射(执行口径)
+
+| 线索类型 | 典型线索 | L1 决策 |
+|---|---|---|
+| 无明显面部强调线索 | 仅服饰/发型变化,未强调情绪与状态 | 基础妆 |
+| 轻微面部线索 | 柔和、含笑、睫毛轻颤、气色微提 | 轻妆(极淡) |
+| 明确病弱线索 | 面色苍白、唇色极淡、眼下微红 | 病弱梨妆(轻妆) |
+| 明确正式仪式线索 | 盛装、典礼、正式场合 | 正式妆(受控) |
+
+> 判定原则:所有衍生资产都要有妆造;先看面部线索决定强度与风格,道具、场景、姿态变化不得单独抬高妆容强度。
+
+### 女性妆容风格矩阵
+
+| 风格 | 适用场景 | 核心提示词 |
+|---|---|---|
+| 清雅素妆 | 日常、初遇、职场 | 妆容清雅、淡扫蛾眉、素妆清颜 |
+| 冷艳霜妆 | 正式、对峙、商务 | 妆容冷艳、眉眼锋利、薄唇冷冽 |
+| 柔媚桃妆 | 甜宠、暧昧、约会 | 桃花妆、眼尾微红、唇色水润 |
+| 病弱梨妆 | 受伤、虚弱 | 面色苍白、唇色极淡、眼下微红 |
+| 华贵晚宴妆 | 派对、宴会 | 浓妆华美、朱唇亮眼 |
+
+### 通用底肤(所有妆容共享)
+
+| 项目 | 约束 | 提示词 |
+|---|---|---|
+| 质感 | 赛璐璐质感、平滑细腻 | 赛璐璐肌理、平滑肌肤 |
+| 白度 | 冷白皮、通透不惨白 | 冷白皮、白皙肌肤 |
+| 内透光 | 从内向外柔光感 | 内透光感、肌肤通透 |
+| 禁止 | 哑光/死白/蜡感/油光/过曝 | — |
+
+### 基础妆细化(默认档)
+
+| 项目 | 约束 | 提示词 |
+|---|---|---|
+| 眉部 | 顺着底模眉形轻修,不改变眉型 | 自然修眉、眉形干净 |
+| 眼部 | 极淡眼部修饰,强调清透与有神 | 眼部清透、极淡内眼线 |
+| 面颊 | 极淡气色提亮,不可明显堆色 | 面颊气色自然、微弱提气色 |
+| 唇部 | 裸粉或浅粉润色,保持克制 | 唇色自然润泽、浅粉唇色 |
+| 整体 | 看得出有妆造,但妆感非常轻 | 基础妆、伪素颜妆感、自然 |
+
+### 男性妆容
+
+| 项目 | 约束 | 提示词 |
+|---|---|---|
+| 底肤 | 赛璐璐质感、清爽自然 | 赛璐璐肌理、清爽肌肤 |
+| 原则 | 伪素颜——看着没化妆但皮肤极好 | 伪素颜、天生好皮 |
+| 眉毛 | 自然浓眉、不画眉 | 自然眉形、眉形英挺 |
+| 唇色 | 自然血色、微润 | 唇色自然、血色感 |
+
+---
+
+## 四、发型造型约束(L2)
+
+### 女性造型类型
+
+| 造型 | 描述 | 适用 | 提示词 |
+|---|---|---|---|
+| 自然披发 | 长发自然垂落 | 日常、职场 | 自然披发、柔顺长发 |
+| 半扎发 | 顶部半扎、下方垂发 | 日常、通勤 | 半扎发、半束发 |
+| 马尾 | 高马尾/低马尾 | 运动、休闲 | 高马尾、低马尾 |
+| 盘发 | 优雅盘发 | 正式场合 | 优雅盘发、盘发 |
+| 双马尾 | 少女双马尾 | 活泼场景 | 双马尾、少女发型 |
+| 全束发 | 发髻/丸子头 | 居家、休闲 | 丸子头、发髻 |
+
+### 女性发饰
+
+| 项目 | 约束 | 提示词 |
+|---|---|---|
+| 风格 | 简约精致,与服饰配套 | 简约发饰、精致发夹 |
+| 材质 | 金属/珠光/布艺 | 金属发夹、珠光发饰 |
+| 工艺 | 精致工艺、清晰细节 | 工艺精致、细节清晰 |
+
+### 男性造型类型
+
+| 造型 | 适用 | 提示词 |
+|---|---|---|
+| 侧分短发 | 日常、商务 | 侧分短发、商务发型 |
+| 凌乱中发 | 休闲、文艺 | 凌乱中发、文艺发型 |
+| 利落短发 | 运动、干练 | 利落短发、清爽发型 |
+| 中长发 | 正式、文艺 | 中长发、文艺发型 |
+
+---
+
+## 五、服饰约束(L3+L4)
+
+### 女性服饰矩阵
+
+| 风格 | 款式 | 适用 | 提示词 |
+|---|---|---|---|
+| 商务正装 | 西装套裙/衬衫+西裤 | 职场、正式 | 商务正装、职业套装 |
+| 休闲日常 | T恤+牛仔裤/连衣裙 | 日常、休闲 | 休闲装、日常服装 |
+| 约会装扮 | 连衣裙/半身裙 | 约会、约会场合 | 约会装、漂亮裙子 |
+| 运动休闲 | 运动服/卫衣/运动裤 | 运动、休闲 | 运动装、休闲运动 |
+| 晚礼服 | 正式晚礼服 | 派对、晚宴 | 晚礼服、正式礼服 |
+
+### 女性服饰通用约束
+
+| 项目 | 约束 | 提示词 |
+|---|---|---|
+| 主色 | 柔和色系为主,低饱和 | 柔和色调、低饱和色 |
+| 材质 | 现代面料质感、纹理清晰 | 现代面料、纹理清晰 |
+| 质感 | 衣物布料质感清晰 | 衣物质感清晰、布料纹理 |
+| 层次 | 服装层次分明、搭配合理 | 服装层次清晰、搭配得当 |
+
+### 男性服饰矩阵
+
+| 风格 | 适用 | 提示词 |
+|---|---|---|
+| 商务正装 | 衬衫/西装/休闲西装 | 商务正装、西装套装 |
+| 休闲日常 | 休闲衬衫/T恤+休闲裤 | 休闲装、日常服装 |
+| 运动休闲 | 运动服/卫衣/运动裤 | 运动装、休闲运动 |
+| 正式礼服 | 正装礼服、西装 | 正式礼服、西装礼服 |
+| 居家便装 | 家居服、休闲装 | 家居服、休闲服装 |
+
+---
+
+## 六、配饰约束(L5)
+
+### 女性配饰
+
+| 类型 | 约束 | 提示词 |
+|---|---|---|
+| 首饰 | 简约精致、不过分夸张 | 简约首饰、精致耳饰 |
+| 手表 | 精致手表、时尚腕表 | 时尚手表、精致腕表 |
+| 包袋 | 单肩包/手提包、质感清晰 | 手提包、质感包袋 |
+| 眼镜 | 时尚眼镜/墨镜(可选) | 时尚眼镜、精致墨镜 |
+| 腰带 | 精致腰带、细节清晰 | 精致腰带、时尚腰带 |
+
+### 男性配饰
+
+| 类型 | 约束 | 提示词 |
+|---|---|---|
+| 手表 | 时尚手表、质感清晰 | 时尚手表、精致腕表 |
+| 眼镜 | 时尚眼镜/墨镜(可选) | 时尚眼镜、精致墨镜 |
+| 腰带 | 精致腰带、细节清晰 | 精致腰带、时尚腰带 |
+| 领带 | 领带/领结(正式场合) | 时尚领带、精致领结 |
+
+---
+
+## 七、服化组合速查
+
+| 场景 | 妆容 | 发型 | 服饰 | 配饰 |
+|---|---|---|---|---|
+| 职场通勤 | 清雅素妆 | 半扎发/盘发 | 商务正装 | 简约首饰/手表 |
+| 初次约会 | 柔媚桃妆 | 自然披发 | 约会装扮 | 精致首饰/包袋 |
+| 日常休闲 | 基础妆 | 马尾/自然披发 | 休闲日常 | 简约配饰 |
+| 正式场合 | 冷艳霜妆 | 盘发/半扎 | 商务正装/晚礼服 | 精致首饰/手表 |
+| 运动休闲 | 基础妆(极淡) | 高马尾/利落短发 | 运动休闲 | 运动手表/运动配件 |
+| 派对聚会 | 正式妆 | 优雅盘发/披发 | 晚礼服/时尚装 | 精致首饰/精致配饰 |
+| 居家休闲 | 素颜/基础妆 | 丸子头/自然披发 | 居家便装 | 无或少配饰 |
+
+---
+
+> **🔍 未覆盖场景推断规则**
+>
+> 当用户描述的场景/情境不在上表时,根据本风格核心基因自行推断:
+>
+> | 推断维度 | 二次元都市言情基因 |
+> |---|---|
+> | 妆容强度 | 默认清雅素妆;有张力/对峙/职权词→冷艳霜妆;甜宠/暧昧/心动→柔媚桃妆;虚弱/受伤→病弱梨妆;晚宴/派对→华贵晚宴妆 |
+> | 发型 | 职场/通勤→半扎发或盘发;日常/恋爱→自然披发;运动/行动→高马尾;正式场合→优雅盘发 |
+> | 服饰 | 现代都市场景优先;情感强度越高→服饰精致度越高;张力场景→商务正装/冷色系 |
+> | 配饰繁度 | 日常→简约;约会→精致首饰+包袋;正式/晚宴→精致首饰+手表;运动→简或无 |
+> | 色调倾向 | 冷白皮+低饱和都市配色;暧昧场景→暖粉调;对峙/张力→冷灰+黑白对比 |
+
+## 八、四视图设定图规范
+
+> 衍生服化叠加后仍需输出四视图设定图,确保服化妆造在各角度的一致性。
+
+### 视图定义
+
+| 位置 | 视图 | 角度 | 景别 | 要求 | 提示词 |
+|---|---|---|---|---|---|
+| 左一 | 人像特写 | 正面平视 | 面部至锁骨 | 面部占60%+,五官/妆容清晰 | `portrait closeup`、`face detail`、`makeup detail` |
+| 左二 | 正视图 | 正面 0° | 全身立像 | 面对镜头、服饰正面全貌 | `front view`、`height mark` |
+| 右二 | 侧视图 | 右侧 90° | 全身立像 | 纯侧面轮廓、服饰侧面层次 | `side view`、`profile`、`height mark` |
+| 右一 | 后视图 | 后方 180° | 全身立像 | 后脑发饰/背部服饰/发尾清晰 | `back view`、`rear view`、`height mark` |
+
+### 画面规范
+
+| 项目 | 约束 |
+|---|---|
+| 布局 | 同一画面从左至右并排四视图 |
+| 背景 | 纯净中性灰 `#E8E8E8` |
+| 站姿 | 自然站立、双脚平行微分、双臂自然下垂或微展(**禁止任何姿态变化**) |
+| 表情 | 符合妆容风格的微表情(如清雅素妆→淡然、桃妆→含笑),仅限面部微表情,不涉及肢体动作 |
+| 光线 | 均匀柔光,前方主光 + 双侧补光,无硬阴影 |
+| 一致性 | 四视图的面容/妆容/发型/发饰/服饰/配饰完全一致 |
+| 画面比例 | 建议 4:1 或 3:1 |
+
+---
+
+## 九、提示词模板
+
+### 输出格式约束
+
+| 项目 | 约束 |
+|---|---|
+| 输出内容 | **仅输出提示词文本**,不输出任何其他内容 |
+| 禁止输出 | 速查表、分层构建方案、视觉约束表、禁止事项表、衍生方案、输出建议、核心要素表等一切非提示词内容 |
+| 禁止场景 | 人物衍生资产**不包含场景/环境描述**,不输出任何场景/环境/天气/背景叙事内容(场景属于场景资产范畴) |
+| 禁止道具 | **不包含任何道具交互**,不输出手机/书本/雨伞/咖啡杯等手持物或交互物(道具属于道具资产范畴) |
+| 禁止姿态变化 | **不改变底模姿态**,不输出行走/回眸/举手/侧身/奔跑等任何动作或体态变化,保持自然站立 |
+| 格式 | 直接输出可用的提示词代码块,无需标题、表格、解释、方案对比 |
+
+### 完整服化叠加(四视图)
+
+以角色基础形象图为底图,img2img叠加服化妆造,
+二次元{性别}角色四视图设定图,赛璐璐上色,现代都市风格,强对比度,极致细节,8K,超保真
+character design sheet,character turnaround,
+保持基础形象面容不变,{整体气质},
+【L1·妆容】根据用户线索决策:{基础妆/轻妆/正式妆};使用 {妆容风格},肌肤柔光,{眉妆},{眼妆},{唇妆},
+【L2·发型】{造型类型},发丝层次分明,{发饰描述},
+【L3+L4·服饰】{主色}{款式},{材质},{装饰工艺},衣服质感清晰,纹理超清晰,
+【L5·配饰】{头饰},{耳饰},{手表},{包袋},
+同一画面左至右并排:人像特写+正视图+侧视图+后视图,
+自然站立,纯净中性灰背景,均匀柔光,无硬阴影,
+四视图一致性,面容细腻渲染,发丝细腻渲染,纹理细节超清晰
+图中不要有任何文字
+
+---
+
+## 十、约束规则
+
+### 必守
+
+| 编号 | 规则 |
+|---|---|
+| R1 | 叠加后面容必须与底模一致 |
+| R2 | 服饰必须用「衣服质感清晰 + 纹理超清晰」 |
+| R3 | 女性配饰必须「简约精致 + 工艺清晰」 |
+| R4 | 妆容/发型/服饰/配饰风格统一 |
+| R5 | 必须输出四视图设定图(人像特写+正视图+侧视图+后视图) |
+| R6 | 必须指定「纯净中性灰背景」 |
+| R7 | 必须指定「四视图一致性」 |
+| R8 | **仅输出提示词**——禁止输出速查表/分层方案/视觉约束/禁止事项/衍生方案/输出建议等任何非提示词内容 |
+| R9 | **禁止包含场景描述**——人物衍生资产不涉及场景/环境/天气/背景叙事,场景属于独立资产类型 |
+| R10 | **禁止道具交互**——不包含任何手持物/交互物(手机/书本/雨伞/咖啡杯等),道具属于独立资产类型 |
+| R11 | **姿态保持不变**——必须保持底模自然站立姿态,禁止任何动作/体态/姿势变化 |
+| R12 | **L1 必须先分析再决策**——先解析用户面部线索,再确定基础妆/轻妆/正式妆 |
+| R13 | **所有衍生资产均需妆造**——正常情况不保持素颜,至少使用基础妆 |
+| R14 | **上妆强度受控**——即使上妆也需克制,不得出现夸张彩妆效果 |
+| R15 | **道具/场景/动作不作强度升级依据**——仅凭道具,环境,动作等信息不得把基础妆抬高为更强妆容 |
+
+### 严禁
+
+| 编号 | 严禁 |
+|---|---|
+| X1 | 叠加后面容偏移 |
+| X2 | 配饰过于简单/夸张 |
+| X3 | 妆容/服饰风格互相冲突 |
+| X4 | 复杂场景背景(必须纯灰底) |
+| X5 | 四视图间服化妆造不一致 |
+| X6 | 输出提示词以外的任何内容(表格/方案/建议/解释/变体等) |
+| X7 | 在人物衍生资产中加入场景描述(现代室内/室外/天气等环境元素) |
+| X8 | 输出「核心要素速查」「分层构建方案」「视觉约束」「禁止事项」「衍生方案」等章节 |
+| X9 | 加入任何道具交互(手持手机/书本/雨伞/咖啡杯等物品) |
+| X10 | 改变底模姿态(行走/回眸/举手/侧身/奔跑/低头/仰望等动作描述) |
+| X11 | 加入表情与姿态联动描述(如「侧身45°行走嘴角浅弯」等叙事性描写) |
+| X12 | 未分析用户线索就直接套用固定妆容 |
+| X13 | 错误保持素颜,导致衍生资产缺少应有妆造 |
+| X14 | 仅因道具/场景/动作词而误把妆容升级,导致妆造强度决策错误 |
+
diff --git a/data/skills/art_skills/2D_mature_urban_romance/art_prompt/art_prop.md b/data/skills/art_skills/2D_mature_urban_romance/art_prompt/art_prop.md
new file mode 100644
index 0000000..1e1a547
--- /dev/null
+++ b/data/skills/art_skills/2D_mature_urban_romance/art_prompt/art_prop.md
@@ -0,0 +1,138 @@
+# 二次元道具图像生成 · 约束手册
+
+---
+
+## 一、道具设计原则
+
+1. **功能可读** — 道具用途一目了然,造型服务于功能
+2. **质感极致** — 材质纹理必须清晰可辨(金属/塑料/木材/玻璃/布料)
+3. **风格统一** — 所有道具必须符合现代都市言情世界观,无违和元素
+4. **尺度明确** — 通过参照物或标注暗示道具真实尺寸
+5. **纯道具独立展示** — 画面中只能出现道具本身,严禁出现任何人物、手部、肢体,道具不可处于被持有/佩戴/握持状态,必须以静物陈列方式独立呈现
+
+---
+
+## 二、道具分类与美学约束
+
+### 2.1 办公用品类
+
+| 项目 | 约束 | 提示词 |
+|---|---|---|
+| 类型 | 笔/笔记本/文件夹/眼镜 | 办公{类型},现代办公用品 |
+| 材质 | 金属/塑料/皮革/纸张 | 金属笔夹、皮革笔记本 |
+| 装饰 | 简约设计、品牌标识(可选) | 简约设计、精致品牌标识 |
+| 光泽 | 哑光/微光/金属反光 | 哑光质感、金属反光 |
+| 提示词 | 现代{道具},简约设计,质感清晰 | — |
+
+### 2.2 饮品器具类
+
+| 项目 | 约束 | 提示词 |
+|---|---|---|
+| 类型 | 咖啡杯/玻璃杯/保温杯 | 咖啡杯,玻璃杯,保温杯 |
+| 材质 | 玻璃/陶瓷/金属/塑料 | 透明玻璃杯、陶瓷咖啡杯 |
+| 装饰 | 品牌标识/图案(可选) | 简约品牌标识、无图案 |
+| 光泽 | 玻璃反光、陶瓷釉光、金属光泽 | 玻璃反光清晰、陶瓷温润 |
+| 提示词 | 现代{道具},材质清晰,赛璐璐质感 | — |
+
+### 2.3 个人物品类
+
+| 项目 | 约束 | 提示词 |
+|---|---|---|
+| 类型 | 手机/手表/眼镜/钥匙 | 现代{道具},个人物品 |
+| 材质 | 金属/玻璃/塑料/皮革 | 玻璃屏幕、金属边框 |
+| 装饰 | 简约设计、品牌标识(可选) | 简约设计、精致标识 |
+| 光泽 | 玻璃反光、金属光泽 | 玻璃清晰反光、金属质感 |
+| 提示词 | 现代{道具},材质清晰,细节精致 | — |
+
+### 2.4 生活器物类
+
+| 项目 | 约束 | 提示词 |
+|---|---|---|
+| 类型 | 书卷/装饰画/香薰/台灯 | 现代{道具},生活器物 |
+| 材质 | 木材/玻璃/金属/布料 | 木质书套、玻璃灯罩 |
+| 质感 | 材质纹理清晰、边缘自然 | 木纹清晰、玻璃通透 |
+| 风格 | 简约现代/温馨居家 | 简约现代、温馨居家 |
+| 提示词 | 现代{道具},材质清晰,氛围协调 | — |
+
+---
+
+## 三、多角度设定图规范
+
+### 视图定义
+
+| 位置 | 视图 | 角度 | 要求 | 提示词 |
+|---|---|---|---|---|
+| 左上 | 正面图 | 正面 0° | 道具完整正面形态 | front view |
+| 右上 | 侧面图 | 侧面 90° | 厚度/轮廓/结构清晰 | side view |
+| 左下 | 背面图 | 背面 180° | 道具背部结构/装饰 | back view |
+| 右下 | 细节特写 | 局部放大 | 材质纹理/工艺细节 | detail closeup |
+
+### 画面规范
+
+| 项目 | 约束 |
+|---|---|
+| 布局 | 同一画面四宫格(2×2),上下左右四视角 |
+| 背景 | 纯净中性灰 `#E8E8E8` |
+| 光线 | 均匀柔光,无硬阴影 |
+| 比例 | 每格道具占格内主体 70%+ |
+| 投影 | 允许自然地面微投影 |
+| 画面比例 | 建议 1:1 |
+
+---
+
+## 四、材质渲染约束
+
+| 材质 | 渲染要求 | 提示词 |
+|---|---|---|
+| 金属 | 反光/高光/光泽、划痕微可见 | 金属质感、反光清晰、划痕微可见 |
+| 玻璃 | 通透、反光、折射效果 | 玻璃通透、反光清晰、折射自然 |
+| 木材 | 木纹清晰、年轮可见 | 木纹清晰、质感自然 |
+| 陶瓷 | 釉面光泽、色泽均匀 | 釉面光滑、色泽均匀 |
+| 塑料 | 哑光/微光、边缘清晰 | 塑料质感、边缘清晰 |
+| 布料 | 纤维质感、边缘自然 | 布料纹理、纤维自然 |
+| 皮革 | 纹理清晰、光泽柔和 | 皮革纹理、光泽自然 |
+
+---
+
+## 五、提示词模板
+
+二次元道具设定图,
+anime style,cel shading,modern urban style,
+cinematic composition,ultra detailed,8K,high quality,
+shallow depth of field,画面颗粒感,镜头暗角,
+赛璐璐动画风格,现代都市风,戏剧化低调光影,
+prop design sheet,item concept art,no people,no characters,no human figures,
+{道具类型},{材质描述},{工艺/装饰描述},{状态描述},
+纯道具静物展示,道具独立陈列,无人持有,无人佩戴,
+同一画面四宫格(2×2):左上正面图+右上侧面图+左下背面图+右下细节特写,
+纯净中性灰背景,均匀柔光,无硬阴影,
+材质纹理超清晰,赛璐璐质感,{材质光泽描述}
+图中不要有任何文字,
+画面中不能出现任何人物、手部、手指、肢体,道具不可处于被握持或佩戴状态
+
+---
+
+## 六、约束规则
+
+### 必守
+
+| 编号 | 规则 |
+|---|---|
+| R1 | 必须指定「纯净中性灰背景」 |
+| R2 | 必须明确道具材质与工艺 |
+| R3 | 道具造型必须符合现代都市言情世界观 |
+| R4 | 必须包含「二次元动画风格」关键词(anime style / cel shading) |
+| R5 | 必须包含景深特征(shallow depth of field / vignette 至少一项),保持动画赛璐璐风格 |
+
+### 严禁
+
+| 编号 | 严禁 |
+|---|---|
+| X1 | 复杂场景背景 |
+| X2 | 道具与人物同画面(本环节为纯道具图) |
+| X3 | 出现任何人物形象,包括全身、半身、局部(手、手指、手臂等肢体) |
+| X4 | 道具处于被持有、握持、佩戴、使用中的状态 |
+| X5 | 出现暗示人物存在的元素(如手持痕迹、佩戴视角、使用姿态) |
+| X6 | 使用真人写实/摄影/3D渲染相关词 |
+| X7 | 高饱和荧光色/霓虹色 |
+| X8 | 古风/奇幻/科幻等与现代都市言情世界观冲突的元素 |
\ No newline at end of file
diff --git a/data/skills/art_skills/2D_mature_urban_romance/art_prompt/art_prop_derivative.md b/data/skills/art_skills/2D_mature_urban_romance/art_prompt/art_prop_derivative.md
new file mode 100644
index 0000000..7c9a96a
--- /dev/null
+++ b/data/skills/art_skills/2D_mature_urban_romance/art_prompt/art_prop_derivative.md
@@ -0,0 +1,125 @@
+# 二次元道具衍生状态生成 · 约束手册
+
+---
+
+## 一、衍生原则
+
+1. **造型锚定** — 道具核心造型/轮廓在所有状态中可识别
+2. **状态可读** — 状态差异必须一目了然,观众能立即区分
+3. **叙事服务** — 每种状态变体服务于特定剧情节点
+4. **渐进退化** — 损伤/老化状态应有合理的物理逻辑
+5. **纯道具独立展示** — 画面中只能出现道具本身,严禁出现任何人物、手部、肢体,道具不可处于被持有/佩戴/握持状态,必须以静物陈列方式独立呈现
+
+---
+
+## 二、状态类型
+
+### 2.1 使用状态
+
+| 状态 | 描述 | 适用道具 | 提示词 |
+|---|---|---|---|
+| 崭新 | 完好无损、光泽如新 | 所有道具 | 崭新、完好无损、光泽如新 |
+| 日常使用 | 微磨损、自然包浆 | 办公用品/器具/个人物品 | 日常使用痕迹、自然磨损 |
+| 陈旧 | 明显年代感、色泽暗淡 | 生活器物/个人物品 | 古旧斑驳、年代感、色泽暗沉 |
+
+### 2.2 损伤状态
+
+| 状态 | 描述 | 适用道具 | 提示词 |
+|---|---|---|---|
+| 微损 | 小裂纹/小缺口/轻微磨损 | 玻璃杯/手机屏幕/笔记本 | 细微裂纹、轻微缺口 |
+| 破损 | 明显裂缝/断裂/破碎 | 玻璃/陶瓷/塑料 | 裂缝明显、碎裂、断裂 |
+| 残片 | 仅剩部分/碎片 | 玻璃/陶瓷/信物 | 残片、碎片、仅存半块 |
+
+### 2.3 特殊状态
+
+| 状态 | 描述 | 适用道具 | 提示词 |
+|---|---|---|---|
+| 污渍 | 污渍附着/液体残留 | 杯子/衣物/纸张 | 污渍残留、液体痕迹 |
+| 指纹 | 手指印、使用痕迹 | 手机屏幕/玻璃杯/金属表面 | 指纹清晰、使用痕迹 |
+| 磨损 | 边角磨损、掉漆 | 电子设备/家具/饰品 | 边角磨损、掉漆痕迹 |
+| 折叠 | 书卷/纸张折叠痕迹 | 书本/纸张/信物 | 折叠痕迹、折痕明显 |
+| 水渍 | 水渍、湿润反光 | 纸张/衣物/布料 | 水渍残留、湿润反光 |
+
+---
+
+## 三、状态变体画面规范
+
+### 单状态图
+
+| 项目 | 约束 |
+|---|---|
+| 背景 | 纯净中性灰 `#E8E8E8`(与设定图一致) |
+| 光线 | 均匀照明,无硬阴影 |
+| 角度 | 与原设定图正面图一致 |
+| 比例 | 道具占画面主体 70%+ |
+
+### 状态对比图
+
+| 项目 | 约束 |
+|---|---|
+| 布局 | 同一画面并排展示 2-3 种状态 |
+| 标注 | 每种状态下方标注状态名 |
+| 一致性 | 角度/光线/背景完全一致,仅状态不同 |
+
+---
+
+## 四、材质状态变化规则
+
+| 材质 | 崭新 → 日常 | 日常 → 陈旧 | 损伤表现 |
+|---|---|---|---|
+| 金属 | 亮光泽 → 微划痕 | 划痕 → 氧化斑点 | 缺口/卷边/断裂 |
+| 玻璃 | 通透清晰 → 微划痕 | 划痕 → 裂纹/碎裂 | 裂纹/碎裂/缺口 |
+| 木材 | 新木纹理 → 自然包浆 | 包浆 → 色泽暗沉 | 开裂/虫蛀/磨损 |
+| 塑料 | 崭新平整 → 微划痕 | 划痕 → 老化变色 | 裂纹/变形/褪色 |
+| 纸张 | 崭新平整 → 微折痕 | 折痕 → 发黄变脆 | 撕裂/焦损/污渍 |
+| 陶瓷 | 釉面光泽 → 微划痕 | 划痕 → 釉面暗淡 | 裂纹/碎裂/缺口 |
+
+---
+
+## 五、提示词模板
+
+### 单状态变体
+
+基于{道具名}设定图,
+anime style,cel shading,modern urban style,
+cinematic composition,ultra detailed,8K,high quality,
+shallow depth of field,画面颗粒感,镜头暗角,
+赛璐璐动画风格,现代都市风,戏剧化低调光影,
+prop derivative design sheet,item concept art,no people,no characters,no human figures,
+{道具类型},{材质描述},
+当前状态:{状态名},{状态视觉描述},
+{材质表面变化描述},
+纯道具静物展示,道具独立陈列,无人持有,无人佩戴,
+同一画面四宫格(2×2):左上正面图(front view)+右上侧面图(side view)+左下背面图(back view)+右下细节特写(detail closeup),
+纯净中性灰背景,均匀柔光,无硬阴影,
+材质纹理超清晰,赛璐璐质感,状态细节可辨
+图中不要有任何文字,
+画面中不能出现任何人物、手部、手指、肢体,道具不可处于被握持或佩戴状态
+
+---
+
+## 六、约束规则
+
+### 必守
+
+| 编号 | 规则 |
+|---|---|
+| R1 | 道具核心造型/轮廓在所有状态中可识别 |
+| R2 | 状态变化须符合物理逻辑 |
+| R3 | 必须使用四宫格(2×2)布局:左上正面图+右上侧面图+左下背面图+右下细节特写 |
+| R4 | 必须指定「纯净中性灰背景」,均匀柔光,无硬阴影 |
+| R5 | 必须包含「二次元动画风格」关键词(anime style / cel shading) |
+| R6 | 必须包含景深特征(shallow depth of field / vignette 至少一项),保持动画赛璐璐风格 |
+
+### 严禁
+
+| 编号 | 严禁 |
+|---|---|
+| X1 | 状态变化后道具不可识别 |
+| X2 | 违反物理逻辑的损伤(金属生锈等不符合材质的变化) |
+| X3 | 过度血腥/恐怖的损伤描绘 |
+| X4 | 出现任何人物形象,包括全身、半身、局部(手、手指、手臂等肢体) |
+| X5 | 道具处于被持有、握持、佩戴、使用中的状态 |
+| X6 | 出现暗示人物存在的元素(如手持痕迹、佩戴视角、使用姿态) |
+| X7 | 使用真人写实/摄影/3D渲染相关词 |
+| X8 | 高饱和荧光色/霓虹色 |
\ No newline at end of file
diff --git a/data/skills/art_skills/2D_mature_urban_romance/art_prompt/art_scene.md b/data/skills/art_skills/2D_mature_urban_romance/art_prompt/art_scene.md
new file mode 100644
index 0000000..98e51ce
--- /dev/null
+++ b/data/skills/art_skills/2D_mature_urban_romance/art_prompt/art_scene.md
@@ -0,0 +1,157 @@
+# 二次元场景图生成 · 约束手册
+
+---
+
+## 一、场景美学原则
+
+1. **空间叙事** — 场景承载情绪与叙事功能,不是纯背景板
+2. **层次纵深** — 所有场景必须具备前/中/后景,杜绝扁平
+3. **质感至上** — 现代材质纹理必须超清晰(玻璃/金属/木材/布料/墙面)
+4. **赛璐璐为锚** — 所有画面以二次元动画风格为标准,强调清晰线条与赛璐璐上色
+5. **戏剧化低调光影** — 光影服务于情绪,保持低饱和冷色调基调
+
+---
+
+## 二、季节色调映射
+
+| 季节 | 主色调 | 辅色调 | 提示词 |
+|---|---|---|---|
+| 春 | 青绿 + 淡粉 | 浅蓝、鹅黄 | 春意青翠、樱花粉嫩 |
+| 夏 | 碧绿 + 蔚蓝 | 天青、雪白 | 夏木葱郁、蓝天如洗 |
+| 秋 | 橙黄 + 棕红 | 赭石、金黄 | 秋叶金黄、枫红似火 |
+| 冬 | 素白 + 冷蓝 | 灰白、淡蓝 | 冬日清冷、雪花皑皑 |
+
+---
+
+## 三、室内场景
+
+### 空间规范
+
+| 维度 | 约束 | 提示词 |
+|---|---|---|
+| 风格 | 现代都市家居/办公室/咖啡厅/公寓 | 现代{场景类型}风格 |
+| 材质 | 现代材质为主、玻璃/金属/木材/布艺为辅 | 现代材质、玻璃反光、木质纹理 |
+| 色调 | 低饱和冷色调为主、暖色点缀 | 冷色调为主、暖光点缀 |
+| 纵深 | 前/中/后景层次 | 前景{元素}、中景{元素}、后景{元素} |
+| 质感 | 玻璃/金属/木材/布料质感清晰 | 材质清晰、质感细腻 |
+| 光照 | 自然光/人造光、光影层次分明 | 自然光、光影层次、室内光 |
+| 镜头感 | 电影级构图、浅景深虚化、镜头光学特征 | `shallow depth of field`、`film grain` |
+| 瑕疵感 | 现代使用痕迹、生活气息 | 生活气息、使用痕迹 |
+
+### 室内类型速查
+
+| 类型 | 核心元素 | 氛围词 |
+|---|---|---|
+| 现代公寓 | 沙发/电视/床/厨房 | 温馨居家、生活气息 |
+| 商务办公室 | 办公桌/电脑/文件/书架 | 专业干练、职场氛围 |
+| 咖啡厅 | 桌椅/咖啡杯/吧台/窗户 | 轻松惬意、都市休闲 |
+| 学校教室 | 课桌/黑板/书架/黑板 | 青春校园、学习气息 |
+| 酒店房间 | 床/浴室/电视/床头柜 | 舒适现代、酒店氛围 |
+
+---
+
+## 四、室外场景
+
+### 空间规范
+
+| 维度 | 约束 | 提示词 |
+|---|---|---|
+| 类型 | 城市街道/公园/校园/商业区 | {场景},{季节},{时间} |
+| 天候 | 晴/阴/薄雾/细雨/降雪 | 薄雾弥漫、细雨如丝 |
+| 植被 | 树木/花草/草坪(须符合季节) | 绿树成荫、花开烂漫 |
+| 水体 | 水池/喷泉/河流需有光影反射 | 水面波光、倒影清晰 |
+| 建筑 | 现代建筑/玻璃幕墙/砖墙 | 现代都市、建筑线条 |
+| 空气感 | 必须有空气透视,远处偏灰偏蓝 | 远山如黛、空气透视 |
+| 光照 | 自然光/人造光、戏剧化低调光影 | 自然光照、体积光、戏剧光影 |
+| 镜头感 | 电影级构图、浅景深虚化、动画镜头特征 | `shallow depth of field`、`vignette`、`anime cinematic` |
+| 瑕疵感 | 城市使用痕迹、岁月痕迹 | 城市痕迹、生活气息 |
+
+### 室外类型速查
+
+| 类型 | 核心元素 | 氛围词 |
+|---|---|---|
+| 城市街道 | 路灯/斑马线/建筑/车辆 | 都市生活、街道气息 |
+| 公园绿地 | 树木/长椅/草坪/小径 | 休闲放松、自然气息 |
+| 商业区 | 商店/广告牌/行人/街道 | 繁华都市、商业氛围 |
+| 校园场景 | 教学楼/操场/树木/长椅 | 青春校园、学习气息 |
+| 天台/阳台 | 栏杆/城市景观/植物 | 开阔视野、都市视角 |
+| 地铁站/公交站 | 站台/列车/行人/标识 | 通勤生活、都市节奏 |
+
+---
+
+## 五、四视图设定图规范
+
+### 视图定义
+
+> 摄像机固定于场景中心点,分别朝前/后/左/右四个方向拍摄,形成 360° 环视。
+
+| 位置 | 视图 | 视角方向 | 要求 | 提示词 |
+|---|---|---|---|---|
+| 左上 | 前视图 | 从中心点向前方平视(0°) | 展示场景正面主体结构与纵深层次 | `front view`、`eye level`、`looking forward` |
+| 右上 | 右视图 | 从中心点向右方平视(90°) | 展示场景右侧空间延伸与侧面结构 | `right side view`、`eye level`、`looking right` |
+| 左下 | 后视图 | 从中心点向后方平视(180°) | 展示场景背面结构与空间纵深 | `back view`、`eye level`、`looking backward` |
+| 右下 | 左视图 | 从中心点向左方平视(270°) | 展示场景左侧空间延伸与侧面结构 | `left side view`、`eye level`、`looking left` |
+
+### 画面规范
+
+| 项目 | 约束 |
+|---|---|
+| 布局 | 同一画面 2×2 网格排列:上排(前视图 + 右视图),下排(后视图 + 左视图),形成从中心点环视的四方向视图 |
+| 人物 | **严禁出现任何人物、人影、人体轮廓** |
+| 视点 | 四视图均从同一中心点出发,视线高度一致(人眼平视高度) |
+| 一致性 | 四视图的建筑结构/材质/色调/光线/季节/天候完全一致 |
+| 光线 | 四视图光源方向统一,保持光影逻辑一致(光源在不同视角下的位置关系正确) |
+| 画面比例 | 建议 1:1(2×2 网格) |
+
+---
+
+## 六、提示词模板
+
+二次元场景四视图设定图,
+anime style,cel shading,modern urban style,
+cinematic composition,dramatic low-key lighting,
+ultra detailed,8K,high quality,
+shallow depth of field,画面颗粒感,镜头暗角,
+赛璐璐动画风格,电影级构图,戏剧化低调光影,
+scene design sheet,environment concept art,no people,no characters,no human figures,
+{室内/室外},{场景类型},{现代风格},{季节+时间},
+前景:{元素},中景:{元素},后景:{元素},
+{色调描述},{天候/氛围元素},
+{材质描述},空气透视,纹理细节超清晰,
+材质现代使用痕迹,生活气息,自然磨损,
+自然光/人造光、戏剧化光影,低饱和冷色调,
+同一画面2×2网格排列:从场景中心点环视,前视图+右视图+后视图+左视图,
+四视图均从同一中心点平视拍摄,建筑结构一致,材质色调一致,光影逻辑一致,
+画面中无任何人物
+图中不要有任何文字
+
+---
+
+## 七、约束规则
+
+### 必守
+
+| 编号 | 规则 |
+|---|---|
+| R1 | 场景必须有「前中后景层次」 |
+| R2 | 室外必须包含「空气透视」 |
+| R3 | 场景图必须为「四视图设定图」(从中心点环视:前视图 + 右视图 + 后视图 + 左视图) |
+| R4 | 四视图的建筑结构/材质/色调/光线/季节/天候必须完全一致 |
+| R5 | 场景图中**严禁出现任何人物** |
+| R6 | 必须包含「二次元动画风格」关键词(anime style / cel shading) |
+| R7 | 必须包含景深特征(shallow depth of field / vignette 至少一项),保持动画赛璐璐风格 |
+| R8 | 材质必须带有现代使用痕迹/生活气息,禁止全新无瑕的"3D渲染感" |
+
+### 严禁
+
+| 编号 | 严禁 |
+|---|---|
+| X1 | 背景纯白/纯黑/无场景 |
+| X2 | 极端天候(暴风雨/雷电/暴雪,除非剧情需要) |
+| X3 | 场景无纵深/无层次 |
+| X4 | 植被/天候与季节矛盾 |
+| X5 | 出现任何人物、人影、人体剪影或人体轮廓 |
+| X6 | 四视图之间建筑结构/材质/色调不一致,或视点中心不统一 |
+| X7 | 3D渲染/CG动画/游戏引擎质感(禁用 3D render、CGI、Unreal Engine、Unity 等词) |
+| X8 | 材质过于干净完美、无任何使用痕迹与岁月感(避免"塑料感") |
+| X9 | 光照过于均匀平坦、无景深虚化、无镜头光学特征 |
\ No newline at end of file
diff --git a/data/skills/art_skills/2D_mature_urban_romance/art_prompt/art_scene_derivative.md b/data/skills/art_skills/2D_mature_urban_romance/art_prompt/art_scene_derivative.md
new file mode 100644
index 0000000..30137a0
--- /dev/null
+++ b/data/skills/art_skills/2D_mature_urban_romance/art_prompt/art_scene_derivative.md
@@ -0,0 +1,163 @@
+# 场景衍生资产生成 · 约束手册
+
+---
+
+## 一、衍生原则
+
+1. **空间一致** — 建筑结构/布局/材质在所有变体中保持一致
+2. **景别驱动** — 同一场景通过不同景别展示不同叙事功能
+3. **时段切换** — 同一空间在不同时间段呈现不同光影氛围
+4. **天候变化** — 同一空间在不同天气下呈现不同情绪
+5. **赛璐璐为锚** — 所有变体必须保持二次元动画风格,保持清晰线条与赛璐璐上色
+
+---
+
+## 二、景别变体
+
+### 景别定义
+
+| 景别 | 范围 | 叙事功能 | 提示词 |
+|---|---|---|---|
+| 大全景 | 场景全貌 + 周围环境 | 建立空间感、定位 | `extreme wide shot`、大全景 |
+| 全景 | 场景完整呈现 | 展示空间结构 | `wide shot`、全景 |
+| 中景 | 场景局部区域 | 聚焦功能区 | `medium shot`、中景 |
+| 近景 | 场景细部 | 材质/氛围道具特写 | `close shot`、近景 |
+| 特写 | 极局部细节 | 材质纹理/关键道具 | `extreme closeup`、特写 |
+
+### 景别衍生规范
+
+| 从基准图衍生 | 保持不变 | 允许变化 |
+|---|---|---|
+| 大全景 → 全景 | 建筑外观、整体布局 | 视角收窄、前景增加 |
+| 全景 → 中景 | 材质、色调、光线 | 裁切聚焦、景深变化 |
+| 中景 → 近景 | 材质、色调 | 景深浅、背景虚化 |
+| 近景 → 特写 | 材质纹理 | 极浅景深、微距感 |
+
+---
+
+## 三、时段变体
+
+### 时段定义
+
+| 时段 | 视觉特征 | 提示词 |
+|---|---|---|
+| 清晨 | 冷白光调、薄雾感 | 晨光微熹、清晨薄雾 |
+| 正午 | 明亮、阴影短、色彩鲜明 | 正午阳光、光线明亮 |
+| 黄昏 | 金色调、长影、天空渐变 | 暮色金辉、golden hour |
+| 夜间(月光) | 冷蓝色调、幽静清冷 | 月光清辉、moonlight |
+| 夜间(灯火) | 暖黄点缀、明暗对比 | 灯火阑珊、灯光氛围 |
+
+### 时段衍生规范
+
+| 从基准时段衍生 | 保持不变 | 变化项 |
+|---|---|---|
+| 日间 → 黄昏 | 建筑/布局/材质 | 天空色调暖化、影子拉长 |
+| 日间 → 夜间 | 建筑/布局/材质 | 整体变暗、增加灯火/月色氛围 |
+| 室内日间 → 室内夜间 | 空间结构、家具 | 整体色调暖化、增加室内灯光 |
+
+---
+
+## 四、天候变体
+
+### 天候定义
+
+| 天候 | 视觉特征 | 提示词 |
+|---|---|---|
+| 晴天 | 明亮、阴影清晰 | 晴空万里、阳光明媚 |
+| 阴天 | 光线均匀、无硬影 | 阴天柔光、overcast |
+| 薄雾 | 能见度降低、空气朦胧 | 薄雾弥漫、雾气缭绕 |
+| 细雨 | 水珠、湿润反光、雨丝 | 细雨如丝、雨幕轻纱 |
+| 飞雪 | 白色覆盖、雪花飘落 | 飞雪纷纷、银装素裹 |
+
+### 天候衍生规范
+
+| 从基准天候衍生 | 保持不变 | 变化项 |
+|---|---|---|
+| 晴 → 薄雾 | 建筑/布局 | 增加雾气层、远景模糊、饱和度降低 |
+| 晴 → 细雨 | 建筑/布局 | 增加雨丝、地面反光、色调偏冷 |
+| 晴 → 飞雪 | 建筑/布局 | 增加积雪、雪花、色调偏白 |
+| 植被需随天候逻辑适配 | — | 雨中花瓣湿润、雪中枯枝挂霜 |
+
+---
+
+## 五、四视图设定图规范
+
+### 视图定义
+
+> 摄像机固定于场景中心点,分别朝前/后/左/右四个方向拍摄,形成 360° 环视。
+
+| 位置 | 视图 | 视角方向 | 要求 | 提示词 |
+|---|---|---|---|---|
+| 左上 | 前视图 | 从中心点向前方平视(0°) | 展示场景正面主体结构与纵深层次 | `front view`、`eye level`、`looking forward` |
+| 右上 | 右视图 | 从中心点向右方平视(90°) | 展示场景右侧空间延伸与侧面结构 | `right side view`、`eye level`、`looking right` |
+| 左下 | 后视图 | 从中心点向后方平视(180°) | 展示场景背面结构与空间纵深 | `back view`、`eye level`、`looking backward` |
+| 右下 | 左视图 | 从中心点向左方平视(270°) | 展示场景左侧空间延伸与侧面结构 | `left side view`、`eye level`、`looking left` |
+
+### 画面规范
+
+| 项目 | 约束 |
+|---|---|
+| 布局 | 同一画面四宫格(2×2),左上前视图+右上右视图+左下后视图+右下左视图,形成从中心点环视的四方向视图 |
+| 人物 | **严禁出现任何人物、人影、人体轮廓** |
+| 视点 | 四视图均从同一中心点出发,视线高度一致(人眼平视高度) |
+| 一致性 | 四视图的建筑结构/材质/色调/光线/季节/天候完全一致 |
+| 光线 | 四视图光源方向统一,保持光影逻辑一致(光源在不同视角下的位置关系正确) |
+| 画面比例 | 建议 1:1(2×2 网格) |
+
+---
+
+## 六、提示词模板
+
+二次元场景衍生四视图设定图,基于{场景名}概念图,
+anime style,cel shading,modern urban style,
+cinematic composition,dramatic low-key lighting,
+ultra detailed,8K,high quality,
+shallow depth of field,画面颗粒感,镜头暗角,
+赛璐璐动画风格,电影级构图,戏剧化低调光影,
+scene derivative design sheet,environment concept art,no people,no characters,no human figures,
+保持场景空间结构一致,
+{景别视角(如有)},{时段描述(如有)},{天候描述(如有)},
+{前景},{中景},{后景},
+{色调描述},{景深描述(如有)},{天空色调变化(如有)},{氛围调整(如有)},
+{天候视觉特征(如有)},{材质表面变化(如有)},{植被适配描述(如有)},
+材质现代使用痕迹,生活气息,自然磨损,
+自然光/人造光、戏剧化光影,低饱和冷色调,
+空气透视,纹理细节超清晰,
+同一画面四宫格(2×2):从场景中心点环视,前视图+右视图+后视图+左视图,
+四视图均从同一中心点平视拍摄,建筑结构一致,材质色调一致,光影逻辑一致,
+画面中无任何人物
+图中不要有任何文字
+
+> **使用说明**:根据用户提供的信息自行判断需要应用的变化维度(景别/时段/天候),未提及的维度对应字段留空省略即可。无需为每种变体单独生成模板。
+
+---
+
+## 七、约束规则
+
+### 必守
+
+| 编号 | 规则 |
+|---|---|
+| R1 | 场景空间结构在所有变体中保持一致 |
+| R2 | 时段变体必须调整天空色调与氛围 |
+| R3 | 天候变体必须适配植被/材质表面 |
+| R4 | 必须为「四视图设定图」(从中心点环视:前视图 + 右视图 + 后视图 + 左视图) |
+| R5 | 四视图的建筑结构/材质/色调/光线/季节/天候必须完全一致 |
+| R6 | 场景图中**严禁出现任何人物** |
+| R7 | 根据用户提供的信息自行判断变化维度,无需拆分为独立模板 |
+| R8 | 必须包含「二次元动画风格」关键词(anime style / cel shading) |
+| R9 | 必须包含景深特征(shallow depth of field / vignette 至少一项),保持动画赛璐璐风格 |
+| R10 | 材质必须带有现代使用痕迹/生活气息,禁止全新无瑕的"3D渲染感" |
+
+### 严禁
+
+| 编号 | 严禁 |
+|---|---|
+| X1 | 变体间建筑结构/布局不一致 |
+| X2 | 天候与季节矛盾(夏天飞雪等) |
+| X3 | 变体间材质/风格突变 |
+| X4 | 出现任何人物、人影、人体剪影或人体轮廓 |
+| X5 | 四视图之间建筑结构/材质/色调不一致,或视点中心不统一 |
+| X6 | 3D渲染/CG动画/游戏引擎质感(禁用 3D render、CGI、Unreal Engine、Unity 等词) |
+| X7 | 材质过于干净完美、无任何使用痕迹与岁月感(避免"塑料感") |
+| X8 | 光照过于均匀平坦、无景深虚化、无镜头光学特征 |
\ No newline at end of file
diff --git a/data/skills/art_skills/2D_mature_urban_romance/art_prompt/art_storyboard_video.md b/data/skills/art_skills/2D_mature_urban_romance/art_prompt/art_storyboard_video.md
new file mode 100644
index 0000000..02abe39
--- /dev/null
+++ b/data/skills/art_skills/2D_mature_urban_romance/art_prompt/art_storyboard_video.md
@@ -0,0 +1,11 @@
+# 视频提示词 · 视觉风格约束
+
+生成视频提示词时,必须注入以下视觉风格标签:
+
+| 模式 | 风格标签 |
+|------|----------|
+| **通用多参模式(英文)** | `mature urban romance anime, cel-shaded, cinematic lighting, cool tones, dramatic low-key shadows, clean line art` |
+| **通用首尾帧模式(英文)** | `mature urban romance anime, cel-shaded, cinematic lighting, cool tones, dramatic low-key shadows, clean line art, shallow depth of field` |
+| **Seedance 2.0(中文)** | `成熟都市言情动画,赛璐璐上色,电影级光影,冷色调,戏剧化低调光影,清晰线条` |
+
+
diff --git a/data/skills/art_skills/2D_mature_urban_romance/driector_skills/director_planning_style.md b/data/skills/art_skills/2D_mature_urban_romance/driector_skills/director_planning_style.md
new file mode 100644
index 0000000..16fbe67
--- /dev/null
+++ b/data/skills/art_skills/2D_mature_urban_romance/driector_skills/director_planning_style.md
@@ -0,0 +1,90 @@
+---
+name: director_planning_style
+description: 都市言情约束 — 定义成熟都市言情二次元动画在色调体系、光影方案、质感方向、场景空间元素、配乐选择与环境音上的全局约束。适用于任何叙事类型。
+metaData: director_skills
+---
+
+# 都市言情约束 · 成熟都市言情二次元动画 · 技法参考
+
+---
+
+## 一、色调体系与画面基调
+
+- **色调基底** — 全片以冷白肤(C1)、浅蓝(C3)、青灰(C6)为基底色,整体色温偏冷(5800-7000K),饱和度中低(30-50%),呈现清冷克制的高级灰调
+- **冷暖叙事对比** — 暖色(琥珀暖 C7、烟霞粉 C5)作为叙事转折的视觉信号,用于情感回暖与暧昧升温段落的局部点缀。冷暖切换应与故事弧线同步,而非随意混用
+- **冷暖分配策略** — 分离/压抑/冷漠段落严格维持冷色调基底(青灰 C6 + 浅蓝 C3),禁用琥珀暖、烟霞粉等暖色调;暖色仅在情感回暖后释放,用冷暖对比做叙事转折
+- **色盘先行原则** — 段落规划需先绑定情绪场景(初见心动/暧昧升温/守护承诺/分离误会/重逢释怀/夜宴灯会等),再确定主色+辅色与光影方案,避免"剧情对了但情绪不对色"
+- **禁用色域** — 高饱和荧光色、霓虹色、现代数码色彩体系均与本风格不兼容
+
+---
+
+## 二、光影方案体系
+
+- **光影即叙事** — 7 套光影方案对应不同情绪段落,导演规划阶段应在段落层面确定光影基调方向,而非逐镜指定
+- **赛璐璐光影特征** — 清晰的明暗分界线、戏剧化低调光影为核心手段;光影必须服务于情绪叙事,保持二次元动画的赛璐璐上色风格
+
+| 光影方案 | 方案名 | 色调倾向 | 适用情绪 |
+|---|---|---|---|
+| A | 柔光侧逆 | 冷白底 + 局部暖光轮廓勾勒 | 心动悸动、温柔深情、日常温馨 |
+| B | 硬侧高反差 | 墨黑 C4 + 银灰 C8 硬光分割 | 对峙压迫、愤怒冷峻、紧张对抗 |
+| C | 漫射冷光 | 青灰 C6 + 浅蓝 C3 低调打光 | 压抑悲伤、分离误会、孤独寂寥 |
+| D | 散射暖光 | 琥珀暖 C7 + 烟霞粉 C5 局部 | 暧昧升温、重逢释怀、亲密甜蜜 |
+| E | 窗光自然 | 素白 C10 + 浅蓝 C3 侧光斑驳 | 室内日间、日常起居、职场通勤 |
+| F | 夜景灯火 | 琥珀暖 C7 点缀 + 青灰 C6 暗部 | 夜宴灯会、城市夜景、浪漫流光 |
+| G | 月光冷蓝 | 浅蓝 C3 + 银灰 C8 冷光 | 夜间孤寂、思念独处、冷漠疏离 |
+
+- **冷暖光分配** — 暖色光(琥珀暖 C7)适用于情感回暖、暧昧亲密段落;冷色光(青灰 C6 + 浅蓝 C3)适用于分离、压抑、冷漠段落。导演可根据叙事需要调整冷暖切换点
+- **氛围方向映射** — 每场戏的氛围方向应能映射到上述光影方案(A-G)的某一方向,确保视觉一致性
+
+---
+
+## 三、质感方向
+
+- **赛璐璐为锚** — 成熟都市言情二次元动画的核心:清晰线条、赛璐璐上色、戏剧化低调光影,呈现电影级二次元动画画面
+- **面容与皮肤** — 面容细腻渲染、皮肤细腻、五官精致;女性冷白肤(C1)通透不惨白,男性暖白肤(C2)清爽自然。肌肤保持赛璐璐质感的平滑细腻
+- **服饰材质** — 衣物布料质感清晰、纹理细节超清晰、布料折痕真实、衣物随动态飘逸。现代都市服饰(西装/衬衫/连衣裙/大衣)的面料质感须可信
+- **场景材质** — 场景材质纹理清晰、空气透视、现代使用痕迹、生活气息。玻璃反光、金属光泽、木质纹理、布艺垂感均需在赛璐璐风格下清晰呈现
+- **赛璐璐不等于扁平** — 成熟都市言情二次元动画强调在赛璐璐上色基础上叠加电影级光影与景深虚化,通过构图与情绪设计放大感染力,而非依赖写实堆砌
+
+---
+
+## 四、都市场景空间元素
+
+现代都市世界观特有的场景元素及其视觉叙事功能:
+
+- **落地窗/玻璃隔断/门框** — 天然的框架式构图道具,制造"看不透"的层次感与空间纵深。玻璃的反光与透射是画面亮点
+- **城市天际线/街道/公园** — 留白构图的天然载体,景即情:繁华街景 = 孤独中的喧嚣、雨中独坐长椅 = 孤寂、落叶飘过街道 = 离愁
+- **灯光/窗光/屏幕光** — 现代都市的光源载体,室内暖灯 = 暖/私密(方案D)、城市夜景 = 冷暖交织(方案F)、自然窗光 = 日常/静谧(方案E)
+- **段落间用场景空镜过渡** — 本风格有丰富的场景资产(不同时段/天候变体),段落衔接建议用场景空镜做情绪缓冲,不要硬切。城市天际线、窗外雨景、空荡的咖啡厅均可作为过渡空镜
+- **转折点用视觉而非台词** — 优先使用画面手段(光影突变、景别跳切、空镜隐喻)而非依赖对白解释
+
+---
+
+## 五、都市配乐与环境音
+
+现代都市言情世界观下的声音元素约束:
+
+### 配乐乐器选择
+
+- **钢琴** — 核心乐器,适用范围最广:独奏用于孤寂/思念/回忆段落,轻快触键用于日常/心动段落
+- **弦乐(小提琴/大提琴/弦乐组)** — 情感铺底与升华,大提琴低沉适合压抑/隐忍,小提琴高音适合心动/悸动,弦乐组适合情绪高潮
+- **吉他(原声/电吉他)** — 原声吉他用于日常温馨/轻松休闲段落,电吉他清音用于都市夜景/微醺氛围
+- **电子氛围音** — 低频电子pad用于城市空镜/孤独段落的氛围铺底,增加现代都市的空间感
+- **长笛/单簧管** — 轻柔段落的点缀,不作主导,用于清晨/公园/日常的氛围衬托
+
+### 配乐组合策略
+
+| 情绪阶段 | 乐器组合 |
+|---|---|
+| 平稳/开场/收尾 | 钢琴独奏 或 钢琴 + 轻弦乐 |
+| 心动/悸动 | 钢琴 + 小提琴 |
+| 暧昧升温/亲密 | 原声吉他 + 轻钢琴 + 弦乐铺底 |
+| 压抑/悲伤/分离 | 大提琴独奏 或 大提琴 + 钢琴 |
+| 情绪爆发/重逢/高潮 | 弦乐组全奏 + 钢琴 |
+| 都市夜景/孤独 | 电子氛围音 + 钢琴 |
+| 日常温馨/休闲 | 原声吉他 + 长笛 + 轻打击乐 |
+
+### 都市环境音
+
+- **典型环境音层次** — 车流远声 / 雨打玻璃窗 / 咖啡机运转声 / 键盘敲击声 / 高跟鞋踏地声 / 电梯提示音 / 城市夜风 / 远处汽车鸣笛 / 公园鸟鸣 / 餐厅轻微嘈杂声
+- **每场戏标注 1-2 个核心环境音**,帮助后续音效设计。环境音层次越丰富,都市场景越有沉浸感
diff --git a/data/skills/art_skills/2D_mature_urban_romance/driector_skills/director_storyboard.md b/data/skills/art_skills/2D_mature_urban_romance/driector_skills/director_storyboard.md
new file mode 100644
index 0000000..8622efd
--- /dev/null
+++ b/data/skills/art_skills/2D_mature_urban_romance/driector_skills/director_storyboard.md
@@ -0,0 +1,180 @@
+# 二次元导演分镜提示词技法 · 成熟都市言情动画
+
+---
+
+## 一、情绪 → 面容/眼神词映射
+
+| 情绪输入 | 面容词 | 眼神词 | 微表情补充 |
+|----------|--------|--------|-----------|
+| 心动 / 悸动 | 面色微红,神情微怔 | 眼神含情,目光流连 | 嘴角微扬,表情克制 |
+| 悲伤 / 压抑 | 面容沉静,神情哀戚 | 眼眶微红,眼神低垂 | 眉头轻锁,神情内敛 |
+| 愤怒 / 压迫 | 眉眼凌厉,神情冷峻 | 目光如刀,眼神强势 | 唇线收紧,气场压迫 |
+| 温柔 / 深情 | 神情温和,眉目含情 | 眼神专注柔和,目光深情 | 嘴角轻扬,表情克制温润 |
+| 坚定 / 决绝 | 神情肃然,面容沉着 | 眼神坚定,目光清冽 | 眉眼沉静,气质凛然 |
+| 惊讶 / 震惊 | 神情微愣,面色微变 | 眼神放大,目光骤聚 | 眉梢轻挑,唇形微开 |
+| 冷漠 / 疏离 | 面容清冷,神情漠然 | 眼神空远,目光冰凉 | 表情几乎凝固,气质禁欲 |
+| 喜悦 / 雀跃 | 神情鲜活,笑意盈盈 | 眼神明亮有神,弯月眼尾 | 嘴角扬起,表情生动自然 |
+| 紧张 / 慌乱 | 表情略带茫然,神态慌张 | 眼神飘忽,目光四顾 | 眉心微蹙,表情生动真实 |
+| 隐忍 / 克制 | 神情内敛,面容沉静 | 眼神深沉,眼底有情绪压抑 | 唇线收紧,喉结微动 |
+
+---
+
+## 二、光影氛围词库(成熟都市言情动画)
+
+### 时间段光线
+
+| 时间段 | 主光词 | 色调词 | 气氛词 |
+|--------|--------|--------|--------|
+| 清晨 | 散射晨光,漫射柔光 | 冷白光调,淡蓝调 | 薄雾弥漫,空气感,晨露质感 |
+| 午后 | 柔和斜侧光,漫射散光 | 中性色调,轻暖调 | 光影斑驳,层次分明 |
+| 傍晚/黄昏 | 冷调侧逆光,斜射余晖 | 冷调为主,局部暖光点缀 | 长影拉伸,光感诗意,轮廓光 |
+| 夜间 | 月光冷蓝,烛光局部暖点 | 冷蓝主调 | 光影幽深,明暗强对比 |
+| 阴雨 | 漫射冷光,无主光源 | 灰冷色调 | 空气潮湿感,低饱和度 |
+
+### 情绪光影
+
+| 情绪基调 | 光线类型 | 补充约束 |
+|----------|----------|----------|
+| 心动/温情 | 柔和侧逆光,散射暖光局部 | 轮廓光勾勒,浅景深柔化背景 |
+| 对峙/压迫 | 硬侧光,高对比度强打光 | 阴影硬朗,明暗分割明显 |
+| 压抑/悲伤 | 漫射冷光,顶光或侧冷光 | 低调打光,面部局部暗部留存 |
+| 神秘/肃穆 | 冷蓝侧光,逆光剪影 | 光晕控制,边缘光精准 |
+| 空灵/意境 | 散射软光,背光过曝微调 | 空气透视感,远景虚淡 |
+
+---
+
+## 三、场景质感约束词(按场景类型)
+
+| 场景类型 | 必加约束词 |
+|----------|-----------|
+| 现代公寓 | 沙发/电视/床/厨房,现代家具质感清晰,地板反光,窗帘垂感 |
+| 商务办公室 | 办公桌/电脑/文件/书架,现代办公材质,玻璃隔断反光 |
+| 咖啡厅 | 桌椅/咖啡杯/吧台/窗户,木质纹理,玻璃杯质感,暖光灯 |
+| 城市街道 | 路灯/斑马线/建筑/车辆,现代都市材质,夜景灯光,空气透视 |
+| 公园绿地 | 树木/长椅/草坪/小径,自然材质,光影斑驳,空气感 |
+| 校园场景 | 教学楼/操场/树木/长椅,校园材质,青春氛围,自然光 |
+| 酒店房间 | 床/浴室/电视/床头柜,酒店材质,舒适现代,暖光氛围 |
+
+---
+
+## 四、固定风格锚定词(所有输出必须包含)
+
+**二次元风格锚定(必选):**
+
+二次元动画风格,赛璐璐上色,清晰线条,电影级构图,戏剧化低调光影,
+
+**人物质感(含人物镜头时必选):**
+
+面容细腻渲染,皮肤细腻,五官精致,发丝层次分明,发丝细腻渲染
+
+**服饰质感(含人物镜头时必选):**
+
+衣物布料质感清晰,纹理细节超清晰,布料折痕真实,衣物随动态飘逸
+
+**场景质感(含场景镜头时必选):**
+
+场景材质纹理清晰,空气透视,现代使用痕迹,生活气息,景深虚化
+
+**一致性锚定(参考图模式必选):**
+
+保持人物面容与参考图一致,保持服饰配色与参考图一致,保持场景光线风格统一
+
+**风格收尾(固定):**
+
+成熟都市言情动画风格,现代小说改编动画,电影级分镜构图
+
+**画质锁定词(所有输出必须包含,置于风格收尾之后):**
+
+### 模式A(中文)
+
+默认(画面无画内文字需求时):
+超清4K画质,高细节,自然锐度,写实清晰感,画面无字幕、无水印、无标题叠字
+
+画内文字场景(画面描述中含书写/书卷/匾额等道具文字时):
+超清4K画质,高细节,自然锐度,写实清晰感,画面无字幕、无水印、无标题叠字,书卷/匾额等场景道具上的文字清晰可辨
+
+### 模式B(英文)
+
+默认:
+ultra-sharp 4K, high detail, crisp textures, naturalistic sharpness, photorealistic clarity, no subtitles, no captions, no watermark, no title overlay
+
+画内文字场景:
+ultra-sharp 4K, high detail, crisp textures, naturalistic sharpness, photorealistic clarity, no subtitles, no captions, no watermark, no title overlay, legible text on in-scene props such as scrolls and plaques
+
+**负向词模板(模式B 必须包含,置于提示词末尾):**
+
+> ⚠️ Seedream(模式A)**不支持负向提示词**,负向词仅适用于模式B。模式A 通过正向词中的质感锚定和画质锁定来保证画面质量。
+
+模式B(英文):
+no plastic skin, no beauty filter, no studio lighting, no centered composition, no oversaturation, no AI generated look, no motion blur, no noise, no blurry, no out of focus, no subtitles, no captions, no watermark, no title overlay, no UI text
+
+---
+
+## 五、美学禁止项(生成时严格规避)
+
+以下词汇/风格不得出现于输出提示词中:
+
+- ❌ 真人写实/摄影/3D渲染相关词(如:photorealistic、real photography、CGI)
+- ❌ 古风/奇幻/科幻等现代元素以外的风格
+- ❌ 高饱和荧光色/霓虹色
+- ❌ 卡通比例、大眼睛、Q版等变形描述(除非特定风格需求)
+- ❌ 现代科技元素入镜(手机屏幕、电脑界面、现代标识等)
+- ❌ 画外叠加文字(字幕、水印、标题卡、旁白叠字、片头字等 UI 层文字,画面必须为纯视觉画面)
+
+> 💡 **例外**:故事世界内的道具文字(角色写字、书卷字迹、匾额、牌匾、书信、药方等场景中自然存在的文字)**不属于禁止范围**。当分镜画面描述中包含此类内容时,应如实描写其存在并要求文字清晰。
+
+---
+
+## 六、完整生成示例
+
+> 以下为同一输入分别使用模式A和模式B的对照展示,实际使用时**仅输出其中一种**。
+
+### 输入(分镜表行数据)
+
+| 序号 | 画面描述 | 场景 | 关联资产名称 | 时长 | 景别 | 运镜 | 角色动作 | 情绪 | 光影氛围 |
+|------|---------|------|-------------|------|------|------|---------|------|----------|
+| 1 | 沈辞独立公寓窗前,远眺城市夜景 | 公寓 | 沈辞 | 4s | 全景 | 静止 | 负手而立,目光凝视窗外 | 温柔 / 深情 | 夜间冷调侧逆光 |
+
+### 示例输出A(模式A · Seedream)
+
+[Prompt]
+二次元动画风格,赛璐璐上色,清晰线条,电影级构图,戏剧化低调光影,全景构图,人物全身入镜,面容细腻渲染,皮肤细腻,五官精致,发丝层次分明,发丝细腻渲染,男性主角立于公寓窗前,双臂自然垂于身侧,目光凝视窗外,神情温和,眼神专注柔和,目光深情,现代公寓材质清晰,沙发/电视/床/厨房,现代家具质感清晰,地板反光,窗帘垂感,夜间冷调侧逆光,月光冷蓝,光影幽深,明暗强对比,成熟都市言情动画风格,现代小说改编动画,电影级分镜构图,超清4K画质,自然锐度,写实清晰感,画面无字幕、无水印、无标题叠字。
+Based on the reference image of 沈辞,maintain consistent: face features, hairstyle, costume details. Generate a new scene: standing by the apartment window at night, gazing out at the city view. Keep character appearance identical to reference.
+
+### 示例输出B(模式B · Nanobanana)
+
+```xml
+
+You are a cinematographer and storyboard artist.
+Maintain strict visual continuity across all shots.
+
+
+Image [1]: 沈辞 — black long hair, calm gentle eyes, modern casual clothing, tall slim body shape
+
+
+- Same wardrobe, hairstyle, face features across ALL shots
+- Same environment, lighting style, color grade
+- Only framing, angle, action, expression may change
+- Do NOT introduce new characters not in reference images
+
+
+Full shot, character standing by the apartment window at night, gazing out at the city view, gentle and composed expression, focused eyes with deep emotion, cold dusk backlight, moonlight ambiance, dark interior with subtle light from outside, mature urban romance anime style, cel shading, ultra-sharp 4K, high detail, crisp textures, photorealistic clarity, no subtitles, no captions, no watermark, no title overlay.
+
+
+no plastic skin, no beauty filter, no studio lighting, no centered composition, no oversaturation, no AI generated look, no motion blur, no noise, no blurry, no out of focus, no subtitles, no captions, no watermark, no title overlay, no UI text
+
+```
+
+## 快速参考卡
+
+### 情绪 → 画面词速查
+
+| 情绪 | 面容关键词 | 光线匹配 |
+|------|-----------|----------|
+| 心动 | 面色微红,眼神含情 | 柔和侧逆光 |
+| 悲伤 | 面容沉静,眼眶微红 | 漫射冷光 |
+| 愤怒 | 眉眼凌厉,目光如刀 | 硬侧光高对比 |
+| 温柔 | 眉目含情,眼神柔和 | 散射暖光局部 |
+| 坚定 | 神情肃然,眼神清冽 | 冷调侧光 |
+| 冷漠 | 面容清冷,眼神空远 | 冷蓝侧光 |
+| 隐忍 | 面容沉静,眼底压抑 | 低调冷光,阴影留存 |
\ No newline at end of file
diff --git a/data/skills/art_skills/2D_mature_urban_romance/driector_skills/director_storyboard_table_style.md b/data/skills/art_skills/2D_mature_urban_romance/driector_skills/director_storyboard_table_style.md
new file mode 100644
index 0000000..b75e687
--- /dev/null
+++ b/data/skills/art_skills/2D_mature_urban_romance/driector_skills/director_storyboard_table_style.md
@@ -0,0 +1,48 @@
+---
+name: director_storyboard_table_style
+description: 分镜表都市言情约束 — 定义成熟都市言情二次元动画在分镜表中的光影氛围规范、赛璐璐质感、动作节奏、环境动态、运镜禁忌与转场禁忌。适用于任何叙事类型。
+metaData: director_skills
+---
+
+# 分镜表都市言情约束 · 成熟都市言情二次元动画 · 技法参考
+
+---
+
+## 一、分镜表定位
+
+分镜表是导演将剧本转化为镜头语言的核心工具。以下仅提供成熟都市言情二次元动画风格在分镜表层面的约束规范。
+
+---
+
+## 二、光影与氛围
+
+- **同场戏光影统一** — 一场戏内不应出现两种以上光影方案,除非有明确的叙事转折(如室内灯光切换→窗外暮色渐深、晴天→突降细雨)
+- **情绪色盘绑定** — 每场戏至少绑定 1 个情绪场景(初见心动/暧昧升温/守护承诺/分离误会/重逢释怀/夜宴灯会),并在镜头组内保持主色+辅色连续性
+- **光源角度规范** — 正给镜头光源默认柔和侧逆光或散射光,侧给镜头根据画面需要调整。描述光影时须区分自然光(窗光/阳光)与人造光(灯光/屏幕光)的差异
+- **冷暖色调与叙事阶段匹配** — 分离/压抑/冷漠段落严格使用冷色光(青灰 C6 + 浅蓝 C3),禁用琥珀暖/烟霞粉等暖色调;暖色调(琥珀暖 C7 + 烟霞粉 C5)仅在情感回暖、暧昧升温段落使用
+- **光影转场是高级手段** — 从窗外自然光渐变到室内暖灯光 = 日转夜的时间流逝;从明亮办公室到昏暗公寓 = 情绪转折。在分镜表中标注光影变化点
+
+---
+
+## 三、环境动态
+
+- **环境动态增加画面呼吸感** — 窗帘轻摆、咖啡杯热气升腾、雨滴滑过玻璃窗、城市灯光明灭、树叶飘落。每 3-4 个镜头至少安排一个有环境动态的镜头,避免画面"死"掉
+- **现代都市环境元素优先** — 环境动态应选用现代都市世界观内的元素:窗帘轻摆、车流光影、雨丝划过玻璃、落叶飘过街道、咖啡热气蒸腾、路灯光晕闪烁,禁止出现古风/奇幻元素
+- **赛璐璐动态表现** — 环境动态应符合二次元动画的表现方式:光影斑驳的手绘质感、布料飘动的线条美感、雨丝与灯光的赛璐璐渲染效果
+
+---
+
+## 四、都市人物动作节奏
+
+- **动作要克制** — 成熟都市言情角色的动作应内敛含蓄,情绪不外放。关键动作(转身、抬手、回眸)标注"缓慢"或"从容"
+- **服饰动态** — 现代都市服饰(西装衣摆、裙摆、围巾、大衣下摆)的微动态是天然的画面资产,可在画面描述中加入衣物随风/随动作的轻微飘动,增加画面的"活"感
+- **仪态约束** — 都市言情角色的举止应符合成熟精英气质:站姿挺拔从容、举手投足优雅克制、不出现夸张的二次元化肢体语言(如夸张手势、Q版变形表情)
+- **微表情优先** — 以面部微表情(嘴角弧度、眉梢轻动、眼神流转)传达情绪,而非依赖大幅度肢体动作
+
+---
+
+## 五、运镜禁忌
+
+- **禁用快速运镜** — 甩镜、急推、手持晃动与成熟都市言情二次元动画的清冷优雅气质冲突
+- **禁用花式转场** — 划屏、旋转、百叶窗、闪白等与本风格不兼容
+- **善用景深与空间** — 可利用现代都市场景的空间纵深做缓慢的推拉/跟随运镜,通过浅景深虚化制造电影感,但须保持沉稳克制的节奏
diff --git a/data/skills/art_skills/2D_mature_urban_romance/images/1.png b/data/skills/art_skills/2D_mature_urban_romance/images/1.png
new file mode 100644
index 0000000..5f6d5a2
Binary files /dev/null and b/data/skills/art_skills/2D_mature_urban_romance/images/1.png differ
diff --git a/data/skills/art_skills/2D_mature_urban_romance/images/2.png b/data/skills/art_skills/2D_mature_urban_romance/images/2.png
new file mode 100644
index 0000000..35ef20d
Binary files /dev/null and b/data/skills/art_skills/2D_mature_urban_romance/images/2.png differ
diff --git a/data/skills/art_skills/2D_mature_urban_romance/images/场合衍生.png b/data/skills/art_skills/2D_mature_urban_romance/images/场合衍生.png
new file mode 100644
index 0000000..89f777e
Binary files /dev/null and b/data/skills/art_skills/2D_mature_urban_romance/images/场合衍生.png differ
diff --git a/data/skills/art_skills/2D_mature_urban_romance/images/场景2原始.png b/data/skills/art_skills/2D_mature_urban_romance/images/场景2原始.png
new file mode 100644
index 0000000..aa45ea0
Binary files /dev/null and b/data/skills/art_skills/2D_mature_urban_romance/images/场景2原始.png differ
diff --git a/data/skills/art_skills/2D_mature_urban_romance/images/场景2衍生.png b/data/skills/art_skills/2D_mature_urban_romance/images/场景2衍生.png
new file mode 100644
index 0000000..31012ab
Binary files /dev/null and b/data/skills/art_skills/2D_mature_urban_romance/images/场景2衍生.png differ
diff --git a/data/skills/art_skills/2D_mature_urban_romance/images/场景原始.png b/data/skills/art_skills/2D_mature_urban_romance/images/场景原始.png
new file mode 100644
index 0000000..6dff713
Binary files /dev/null and b/data/skills/art_skills/2D_mature_urban_romance/images/场景原始.png differ
diff --git a/data/skills/art_skills/2D_mature_urban_romance/images/女生原始.png b/data/skills/art_skills/2D_mature_urban_romance/images/女生原始.png
new file mode 100644
index 0000000..2cfbcc9
Binary files /dev/null and b/data/skills/art_skills/2D_mature_urban_romance/images/女生原始.png differ
diff --git a/data/skills/art_skills/2D_mature_urban_romance/images/女生衍生.png b/data/skills/art_skills/2D_mature_urban_romance/images/女生衍生.png
new file mode 100644
index 0000000..4988b68
Binary files /dev/null and b/data/skills/art_skills/2D_mature_urban_romance/images/女生衍生.png differ
diff --git a/data/skills/art_skills/2D_mature_urban_romance/prefix.md b/data/skills/art_skills/2D_mature_urban_romance/prefix.md
new file mode 100644
index 0000000..07f8b1e
--- /dev/null
+++ b/data/skills/art_skills/2D_mature_urban_romance/prefix.md
@@ -0,0 +1,118 @@
+# 全局美学基础 · 成熟都市言情二次元动画
+
+---
+
+## 一、风格基因
+
+| 维度 | 定义 |
+|---|---|
+| **一级风格** | 成熟都市言情二次元动画(Mature Urban Romance Anime) |
+| **二级风格** | 现代小说改编动画风格 · 电影级质感 |
+| **情感基调** | 甜宠向 — 冷中带暖、疏中见密 |
+| **质感锚词** | 赛璐璐上色、清晰线条、戏剧化低调光影 |
+
+---
+
+## 二、全局色彩盘(风格基线,不是硬锁)
+
+> 目标:统一审美而非限制创作。除「硬约束色」外,其余颜色默认优先使用,可在合理范围内偏移。
+
+### 色彩使用层级
+
+| 层级 | 约束强度 | 说明 |
+|---|---|---|
+| L1 硬约束 | 高 | 仅锁定角色识别核心:肤色、发色、主服底色的审美方向 |
+| L2 软约束 | 中 | 场景色、配饰色、点缀色优先参考色盘,可按镜头与剧情微调 |
+| L3 例外机制 | 低 | 节庆/回忆/高潮戏可临时突破局部色彩,但需保留整体冷暖逻辑 |
+
+| 序号 | 色名 | 色值 | 用途 |
+|---|---|---|---|
+| C1 | 冷白肤 | `#F5EDE8` | 女性肤色基准 |
+| C2 | 暖白肤 | `#F5E6D8` | 男性肤色基准 |
+| C3 | 浅蓝 | `#B8D4E3` | 天空、冷调环境 |
+| C4 | 墨黑 | `#1A1A2E` | 发色、眼瞳、轮廓线 |
+| C5 | 烟霞粉 | `#F2D7D5` | 唇色、腮红、情感点缀 |
+| C6 | 青灰 | `#7A8B99` | 远景建筑、暗部 |
+| C7 | 琥珀暖 | `#C9A96E` | 暖光、灯光、情绪高点 |
+| C8 | 银灰 | `#C0C7CE` | 现代建筑、金属材质 |
+| C9 | 中性灰 | `#E8E8E8` | 设定图背景 |
+| C10 | 素白 | `#F8F6F0` | 室内墙面、基础中衣色 |
+
+### 硬约束色(默认锁定)
+
+| 色项 | 对应色 | 规则 |
+|---|---|---|
+| 女性肤色基准 | C1 冷白肤 | 默认优先,允许小幅明度/暖度微调 |
+| 男性肤色基准 | C2 暖白肤 | 默认优先,避免偏黄或过灰 |
+| 发色/瞳色基准 | C4 墨黑 | 默认优先,允许暗蓝/冷棕轻微偏移 |
+
+### 软约束色(推荐优先)
+
+> C3/C5/C6/C7/C8/C9/C10 为推荐色域,用于天空、情感点缀、远景、暖光、金属材质、背景、墙面等。可根据镜头氛围做同色相邻近调整。
+
+### 情绪色盘(导演对齐版)
+
+| 情绪场景 | 主色 | 辅色 | 光效与对比建议 | 画面关键词 |
+|---|---|---|---|---|
+| 初见心动(克制甜) | C1 冷白肤 | C5 烟霞粉 + C8 银灰 | 冷基底 + 局部柔暖高光,强对比但不过曝 | 清冷、呼吸感、微甜 |
+| 暧昧升温(亲密拉近) | C5 烟霞粉 | C7 琥珀暖 + C10 素白 | 中近景提暖,肤色微升温,背景保持低饱和 | 软焦、耳语感、贴近 |
+| 守护承诺(稳定安全) | C10 素白 | C3 浅蓝 + C4 墨黑 | 明暗层次清晰,银色/蓝色强调安全感 | 安定、仪式感、信任 |
+| 分离误会(冷疏压抑) | C6 青灰 | C1 冷白肤 + C9 中性灰 | 整体降饱和,拉大冷暖反差,阴影加深 | 距离感、克制、静压 |
+| 重逢释怀(泪感回暖) | C1 冷白肤 | C7 琥珀暖 + C5 烟霞粉 | 先冷后暖,人物面部暖光渐进 | 回温、释然、湿润空气 |
+| 大婚喜庆(古典高光) | C7 琥珀暖 | C5 烟霞粉 + C3 浅蓝 | 局部可提高饱和,避免荧光色;金色强调仪式感 | 华贵、庄重、甜喜 |
+| 夜宴灯会(浪漫流光) | C7 琥珀暖 | C6 青灰 + C3 浅蓝 | 暖光源主导,背景冷色托举,保留暗部细节 | 流光、灯影、人潮中对视 |
+| 梦境回忆(写实化) | C1 冷白肤 | C6 青灰 + C3 浅蓝 | 低饱和雾化与真实光位并存,允许轻微偏色但不霓虹 | 空灵、旧忆感、真实可拍 |
+
+### 情绪色盘使用规则
+
+| 编号 | 规则 |
+|---|---|
+| E1 | 每条提示词至少指定 1 个「情绪场景」并绑定主色+辅色组合 |
+| E2 | 单镜头主色不超过 2 个,避免颜色叙事失焦 |
+| E3 | 情绪切换时优先调整光比与色温,再调整饱和度 |
+| E4 | 甜宠向默认遵循「冷底 + 暖点」:冷色铺底,暖色落在人物关系焦点 |
+| E5 | 若与剧情冲突,以情绪色盘优先于通用推荐色,但不得突破严禁项 |
+
+### 色温约束
+
+| 参数 | 值 | 说明 |
+|---|---|---|
+| 整体色温 | 偏冷 5800-7000K(推荐) | 清冷仙气主基调 |
+| 肤色色温 | 微暖 5200-5600K(推荐) | 冷白但有生命感 |
+| 对比度 | 强(建议保持) | 明暗反差鲜明 |
+| 饱和度 | 中低 30-50%(建议区间) | 高级灰调 |
+
+### 容差与例外
+
+| 项目 | 建议容差 |
+|---|---|
+| 色相偏移 | ±8° |
+| 饱和度偏移 | ±10% |
+| 明度偏移 | ±12% |
+
+> 例外场景:婚礼、灯会、回忆、情绪高潮镜头可使用更暖或更高饱和局部色块;但禁止霓虹荧光与现代色彩语言入镜。
+
+---
+
+## 三、全局约束规则
+
+### 必守规则(所有技能继承)
+
+| 编号 | 规则 |
+|---|---|
+| R1 | 必须包含「二次元动画风格」风格锚定词(anime style / cel shading) |
+| R2 | 必须声明「赛璐璐上色 + 清晰线条」 |
+| R3 | 面部必须使用「面容细腻渲染 + 皮肤细腻」 |
+| R4 | 发丝必须使用「层次分明 + 发丝细腻渲染」 |
+| R5 | 纹理必须声明「纹理细节超清晰」 |
+| R6 | 必须声明「电影级构图 + 戏剧化低调光影」 |
+
+### 严禁项(所有技能继承)
+
+| 编号 | 严禁内容 |
+|---|---|
+| X1 | 严禁「真人写实/摄影/3D渲染/CGI」 |
+| X2 | 严禁「高饱和荧光色/霓虹色」 |
+| X3 | 严禁「现代元素入镜」(手机、电脑屏幕、现代标识等) |
+| X4 | 严禁「面部变形/多指/肢体异常」倾向词 |
+| X5 | 严禁「裸体/暴露/透视/暗示性描述」 |
\ No newline at end of file
diff --git a/data/skills/art_skills/3D_anime_render/README.md b/data/skills/art_skills/3D_anime_render/README.md
new file mode 100644
index 0000000..2c49934
--- /dev/null
+++ b/data/skills/art_skills/3D_anime_render/README.md
@@ -0,0 +1,33 @@
+# 3D 动画渲染风格说明
+
+本风格专为"3D 动画渲染"题材打造,所有美术提示词、规范和生成内容均严格限定于:
+
+- **3D 动画世界观**:以现代都市为背景,涵盖街道、咖啡厅、居家、办公室、商场等,体现现代都市生活气息。
+- **赛璐珞质感**:所有角色、场景、道具均以 3D 动画渲染为标准,强调轮廓线清晰度、材质细腻度、光影层次感。
+- **治愈治愈美学**:在 3D 渲染基础上追求电影感氛围,画面色调温暖明亮,细节丰富,整体氛围温暖治愈、明快动人。
+- **情感表达**:适合展现温柔、治愈、浪漫的都市恋爱故事,强调现代都市美学下的情感表达。
+
+## 适用范围
+
+- 3D 动画渲染题材的 AI 美术生成(角色、场景、道具、分镜等)
+- 需要极致 3D 渲染质感、细腻材质、温馨治愈氛围的视觉创作
+
+## 严禁内容
+
+- 写实渲染、照片级真实感
+- 暗调、重阴影、过度对比
+- 高饱和荧光色、霓虹色
+- 现代元素缺失、黑暗暴力、成人向内容
+
+## 风格体验
+
+在本风格下,您将体验到:
+
+- 角色面容精致、气质温柔或清亮,服饰、妆容、发型均为 3D 动画渲染风格
+- 场景空间层次丰富,轮廓线清晰流畅,氛围真实且富有诗意
+- 道具、日常物品、环境细节均为现代造型,工艺精细,质感细腻
+- 分镜与画面均以 3D 渲染为基础,强调叙事与情感表达
+
+---
+
+本风格仅适用于"3D 动画渲染"相关项目。如需其他风格(如写实 3D、CG、插画、现代等),请勿使用本套提示词。
\ No newline at end of file
diff --git a/data/skills/art_skills/3D_anime_render/art_prompt/art_character.md b/data/skills/art_skills/3D_anime_render/art_prompt/art_character.md
new file mode 100644
index 0000000..ba785f9
--- /dev/null
+++ b/data/skills/art_skills/3D_anime_render/art_prompt/art_character.md
@@ -0,0 +1,218 @@
+# art_character_3d.md
+# 3D动画角色基础形象生成 · 约束手册
+
+---
+
+## 一、基础形象原则
+
+1. **面容即灵魂** — 五官是角色唯一锚点,赛璐珞级精细渲染
+2. **底模即基础** — 基础打底服装 + 素颜,后续服化均为叠加层(女性:运动背心+四角短裤;男性:四角短裤)
+3. **四视图一致** — 面容/体型/发型/基础服装跨视图高度统一
+4. **暖萌治愈** — 无妆状态仍需体现角色气质(开朗/温柔/元气)
+
+---
+
+## 二、面容约束
+
+### 女性面容
+
+| 部位 | 约束 | 提示词 |
+|---|---|---|
+| 脸型 | 圆润流畅、下颌柔和、鹅蛋脸 | 圆润脸型、鹅蛋脸、柔和下颌 |
+| 眼型 | 大眼、圆瞳、眼尾上扬 | 大圆眼、明亮眼瞳、凤眼微挑 |
+| 眉型 | 自然弯眉、眉色浅棕 | 自然弯眉、浅棕眉色 |
+| 鼻型 | 小巧挺鼻、鼻翼圆润 | 小巧鼻梁、精致鼻翼 |
+| 唇型 | 饱满唇、唇色珊瑚粉 | 饱满嘴唇、珊瑚粉色 |
+| 气质 | 温暖、元气、治愈 | 面容温暖、元气满满、治愈系 |
+
+### 男性面容
+
+| 部位 | 约束 | 提示词 |
+|---|---|---|
+| 脸型 | 方圆脸、下颌线柔和 | 方圆脸型、线条柔和 |
+| 眼型 | 圆眼、眼神清澈明亮 | 清澈圆眼、明亮眼神 |
+| 鼻型 | 圆润鼻头、鼻梁适中 | 圆鼻头、鼻梁适中 |
+| 唇型 | 饱满唇色、微上扬 | 饱满嘴唇、唇色上扬 |
+| 气质 | 阳光开朗 / 温柔内敛 | 阳光俊朗 / 温润如玉、素颜 |
+
+---
+
+## 三、肤感约束
+
+### 女性
+
+| 项目 | 约束 | 提示词 |
+|---|---|---|
+| 肤色 | 暖白皮、全身均匀、透亮感 | 暖白皮、蜜桃肌、peach skin |
+| 光泽 | 柔光肌、内透光感、非哑光 | 柔光肌肤、inner glow、soft glow |
+| 质感 | 细腻光滑、赛璐珞渲染质感 | 皮肤细腻、赛璐珞质感 |
+| 露肤 | 面部/颈部/锁骨/手部 | 肩颈线条优美、肌肤暖白透亮 |
+
+### 男性
+
+| 项目 | 约束 | 提示词 |
+|---|---|---|
+| 肤色 | 暖调米色、带健康感、全身均匀 | 暖调米色、健康肤色 |
+| 光泽 | 清爽柔光、自然光泽 | 柔光肌、皮肤透亮清爽 |
+| 质感 | 干净细腻、赛璐珞光泽 | 皮肤质感细腻、面容清爽 |
+
+---
+
+## 四、体型约束
+
+### 女性
+
+| 项目 | 约束 | 提示词 |
+|---|---|---|
+| 身高 | 由角色设定指定,默认范围 155-165cm | {身高}cm tall、{身高描述如:petite girl} |
+| 头身比 | 六头身至七头身,头身比 = 身高 ÷ 头长 | 6-7 heads tall proportion、身材娇小 |
+| 身高换算 | 头长 = 身高 ÷ 头身比(如160cm ÷ 6.5 = 24.6cm头长) | 比例可爱、头身比协调 |
+| 肩颈 | 柔滑肩颈、线条流畅 | 柔滑肩线、颈部优美 |
+| 手部 | 小巧圆润、指节柔和 | 圆润小手、指节分明 |
+| 体态 | 元气少女、轻盈体态 | 体态轻盈、身姿灵动 |
+
+### 男性
+
+| 项目 | 约束 | 提示词 |
+|---|---|---|
+| 身高 | 由角色设定指定,默认范围 170-180cm | {身高}cm tall、{身高描述如:tall cute boy} |
+| 头身比 | 六头半至七头半,头身比 = 身高 ÷ 头长 | 6.5-7.5 heads tall proportion、身材匀称 |
+| 身高换算 | 头长 = 身高 ÷ 头身比(如175cm ÷ 7 = 25cm头长) | 比例可爱、头身比协调 |
+| 肩颈 | 圆润肩部、颈部自然 | 圆润肩膀、颈线自然 |
+| 手部 | 圆润手掌、指节柔和 | 圆润手掌、指节分明 |
+| 体态 | 阳光少年/温柔学长(按角色) | 身姿挺拔、体态阳光 |
+
+### 身高-头身比换算参考
+
+| 身高(cm) | 头身比 | 头长(cm) | 适用描述 |
+|---|---|---|---|
+| 150-155 | 6.0 | ~25cm | 娇小可爱 |
+| 155-160 | 6.0-6.5 | ~25cm | 甜美娇小 |
+| 160-165 | 6.5 | ~24.6cm | 清新少女(女性默认) |
+| 165-170 | 6.5-7.0 | ~25cm | 修长少女 |
+| 170-175 | 7.0 | ~25cm | 清秀少年 |
+| 175-180 | 7.0-7.5 | ~25cm | 阳光男孩(男性默认) |
+| 180-185 | 7.5 | ~25cm | 帅气高挑 |
+
+---
+
+## 五、基础发型约束
+
+> 仅定义自然散发/简单束发,发饰在服化衍生环节叠加。
+
+### 女性
+
+| 项目 | 约束 | 提示词 |
+|---|---|---|
+| 发色 | 暖棕色/浅栗色/巧克力色 | 暖棕长发、栗色如金 |
+| 发长 | 及肩或长发 | 长发及肩 |
+| 发质 | 根根分明、丝缕清晰、赛璐珞质感 | 发丝根根分明、发丝细腻渲染 |
+| 造型 | 自然散发、中分/偏分、无发饰 | 长发自然散落、柔顺如瀑 |
+
+### 男性
+
+| 项目 | 约束 | 提示词 |
+|---|---|---|
+| 发色 | 暖棕色/深咖啡色 | 深棕短发、咖啡色头发 |
+| 发长 | 短发至中长发 | 短发、及耳短发 |
+| 发质 | 根根分明、质感清晰 | 发丝根根分明、发丝细腻渲染 |
+| 造型 | 自然散发或侧分、无发饰 | 短发自然散落、侧分发型 |
+
+---
+
+## 六、基础服装约束
+
+> 基础服装无特殊约束,女性为运动背心和四角短裤,男性为四角短裤。正式服饰在服化衍生环节叠加。
+
+### 女性基础服装
+
+运动背心和四角短裤,颜色以基础色为主,无花纹装饰。
+
+### 男性基础服装
+
+四角短裤,颜色以基础色为主,无花纹装饰。
+
+### 着装统一规则
+
+- 服装风格统一,确保后续服饰叠加无色彩干扰
+- 除面部/手部/颈部外基本覆盖
+- 四视图服装款式完全一致
+- 基础服装仅为安全打底,焦点在面容与体态
+
+---
+
+## 七、四视图设定图规范
+
+### 视图定义
+
+| 位置 | 视图 | 角度 | 景别 | 要求 | 提示词 |
+|---|---|---|---|---|---|
+| 左一 | 人像特写 | 正面平视 | 头顶至锁骨 | 从头顶到锁骨完整展示不裁切,面部占60%+,五官清晰 | portrait closeup、face detail、head to collarbone complete、no crop |
+| 左二 | 正视图 | 正面 0° | 全身立像 | 面对镜头、双臂自然、从头顶到脚底完整展示 | front view、full body head to toe、height mark |
+| 右二 | 侧视图 | 右侧 90° | 全身立像 | 纯侧面轮廓清晰、从头顶到脚底完整展示 | side view、profile、full body head to toe、height mark |
+| 右一 | 后视图 | 后方 180° | 全身立像 | 后脑/背部/发尾/脚部清晰、从头顶到脚底完整展示 | back view、rear view、full body head to toe、height mark |
+
+### 画面规范
+
+| 项目 | 约束 |
+|---|---|
+| 布局 | 同一画面从左至右并排四视图 |
+| 背景 | 纯净中性灰 #E8E8E8 |
+| 站姿 | 自然站立、双脚平行微分、双臂自然下垂或微展 |
+| 全身展示 | 全身立像必须从头顶到脚底完整入画,严禁裁切头顶或脚部 |
+| 特写展示 | 人像特写必须从头顶到锁骨完整入画,严禁裁切头顶,头发、额头、下巴均需完整 |
+| 表情 | 中性微表情,符合角色气质 |
+| 光线 | 均匀柔光,前方主光 + 双侧补光,无硬阴影 |
+| 一致性 | 四视图的肤色/体型/发型/面容/基础服装完全一致 |
+| 画面比例 | 建议 4:1 或 3:1 |
+
+---
+
+## 八、提示词模板
+
+```
+{性别}角色四视图设定图,3D 动画渲染,电影级打光,活力赛璐珞质感,高细节材质,愉悦治愈氛围,卡通都市风,高细节卡通材质,适度卡通比例,暖色调配色,8K 超高清,电影级构图,柔和光影层次,明快卡通渲染风格,温馨治愈,
+character design sheet,character turnaround,
+{脸型},{眼型},{鼻型},{唇型},{整体气质},素颜无妆,
+{肤色},柔光肌,皮肤通透发光,皮肤细腻,赛璐珞质感,
+{身高描述,如:165cm tall、petite cute girl},{头身比,如:6.5 heads tall proportion},{身材描述},{体态描述},
+{发色}{发长},发丝根根分明,{基础造型},无发饰,
+(女性:运动背心和四角短裤 / 男性:仅四角短裤),基础色,无花纹装饰,
+同一画面左至右并排:人像特写+正视图+侧视图+后视图,
+人像特写从头顶到锁骨完整展示,不裁切头顶,head to collarbone complete,
+全身立像从头顶到脚底完整展示,full body head to toe,不裁切头顶和脚部,
+自然站立,纯净中性灰背景,均匀柔光,无硬阴影,
+四视图一致性,面容细腻渲染,发丝细腻渲染
+图中不要有任何文字
+```
+
+
+---
+
+## 九、约束规则
+
+### 必守
+
+| 编号 | 规则 |
+|---|---|
+| R1 | 必须为「素颜无妆」状态 |
+| R2 | 必须声明基础服装(女性:运动背心+四角短裤;男性:四角短裤) |
+| R3 | 必须声明「无发饰、无配饰」 |
+| R4 | 必须指定「纯净中性灰背景」 |
+| R5 | 必须指定「四视图一致性」 |
+| R6 | 全身立像必须从头顶到脚底完整展示,严禁裁切 |
+| R7 | 必须声明角色身高并通过头身比换算约束全身比例(女性默认155-165cm/6-7头身,男性默认170-180cm/6.5-7.5头身) |
+| R8 | 人像特写必须从头顶到锁骨完整展示,严禁裁切头顶 |
+
+### 严禁
+
+| 编号 | 严禁 |
+|---|---|
+| X1 | 基础服装以外的任何服装/配饰/妆容 |
+| X2 | 正顶硬光/正底光/彩色光 |
+| X3 | 过度美白至无血色 / 肤色发灰 |
+| X4 | 复杂场景背景(必须纯灰底) |
+| X5 | 夸张表情/动态姿势 |
+| X6 | 全身立像裁切头顶或脚底,必须从头到脚完整入画 |
+| X7 | 人像特写裁切头顶,必须从头顶到锁骨完整入画 |
+| X8 | 忽略身高和头身比约束,身高必须明确声明并通过头身比换算体现全身比例 |
\ No newline at end of file
diff --git a/data/skills/art_skills/3D_anime_render/art_prompt/art_character_derivative.md b/data/skills/art_skills/3D_anime_render/art_prompt/art_character_derivative.md
new file mode 100644
index 0000000..46bfe18
--- /dev/null
+++ b/data/skills/art_skills/3D_anime_render/art_prompt/art_character_derivative.md
@@ -0,0 +1,329 @@
+# 3D动画渲染都市角色衍生资产生成 · 约束手册
+
+---
+
+## 一、叠加原则
+
+1. **面容不变** — 叠加后五官必须与底模完全一致,禁止面容偏移
+2. **姿态不变** — 保持底模自然站立姿态,禁止任何姿态/动作/体态变化
+3. **逐层可控** — 每层独立描述,便于按层替换(换装不换妆)
+4. **风格统一** — 所有服化元素服从同一都市动画美学体系
+5. **质感不降** — 叠加后质感标准不低于底模
+6. **纯服化范畴** — 仅叠加妆容/发型/服饰/配饰,禁止引入道具、场景、环境、动作
+
+---
+
+## 二、叠加层级
+
+| 层级 | 内容 | 说明 |
+|---|---|---|
+| L0 | 底模 | 基础形象底模,不修改 |
+| L1 | 妆容(决策层) | 先分析用户线索,再决策「基础妆 / 轻妆 / 正式妆」强度 |
+| L2 | 发型造型 | 散发/马尾/盘发/半扎 + 发饰 |
+| L3 | 中衣/内搭 | 替换白色基础中衣 |
+| L4 | 外衣/主服 | 现代都市服饰 |
+| L5 | 配饰 | 头饰/耳饰/项饰/腰饰/手饰 |
+
+> **范畴边界**:人物衍生资产仅包含 L0–L5 层级(服化妆造),不包含道具(伞/手机/电脑/咖啡等手持物)、场景环境(室内/室外/天气等)、姿态动作(行走/回眸/举手等)。这些属于其他资产类型的范畴。
+
+---
+
+## 三、妆容约束(L1)
+
+### 底模到衍生妆造策略(关键)
+
+> 角色底模虽为素颜,但衍生资产默认进入妆造流程。系统应根据用户提供的线索分析妆造需求,并在基础妆、轻妆、正式妆之间决策强度,而不是保持素颜。
+
+### L1 线索分析与妆容决策
+
+| 步骤 | 处理内容 | 决策结果 |
+|---|---|---|
+| S1 | 提取用户线索:面部状态词、情绪词、强度词 | 形成妆容需求摘要 |
+| S2 | 过滤非妆容线索:道具/场景/动作/姿态词不作为上妆依据 | 防止误判 |
+| S3 | 匹配妆容风格矩阵并给出强度档 | 基础妆 / 轻妆 / 正式妆 |
+| S4 | 生成最终 L1 提示词 | 只输出结论,不输出分析过程 |
+
+### 线索到妆容映射(执行口径)
+
+| 线索类型 | 典型线索 | L1 决策 |
+|---|---|---|
+| 无明显面部强调线索 | 仅服饰/发型变化,未强调情绪与状态 | 基础妆 |
+| 轻微面部线索 | 轻柔、含笑、睫毛轻颤、气色微提 | 轻妆(极淡) |
+| 明确病弱线索 | 面色苍白、唇色极淡、眼下微红 | 病弱梨妆(轻妆) |
+| 明确正式仪式线索 | 盛装、典礼、华贵亮相 | 正式妆(受控) |
+
+> 判定原则:所有衍生资产都要有妆造;先看面部线索决定强度与风格,道具、场景、姿态变化不得单独抬高妆容强度。
+
+### 女性妆容风格矩阵
+
+| 风格 | 适用场景 | 核心提示词 |
+|---|---|---|
+| 清雅素妆 | 日常、初遇、上班 | 妆容清雅、淡扫蛾眉、素妆清颜 |
+| 冷艳霜妆 | 正式、对峙、权力 | 妆容冷艳、眉眼锋利、薄唇冷冽 |
+| 柔媚桃妆 | 甜宠、暧昧、心动 | 桃花妆、眼尾微红、唇色水润 |
+| 病弱梨妆 | 受伤、虚弱 | 面色苍白、唇色极淡、眼下微红 |
+| 华贵晚宴妆 | 正式晚宴、盛装出席 | 浓妆精致、唇色亮眼 |
+
+### 通用底肤(所有妆容共享)
+
+| 项目 | 约束 | 提示词 |
+|---|---|---|
+| 质感 | 赛璐珞渲染、柔和光泽 | 卡通肌肤、柔和皮肤质感 |
+| 白度 | 冷白皮、通透不惨白 | 牛奶肌、milky white skin |
+| 内透光 | 从内向外柔光感 | 内透光感、皮肤通透发光 |
+| 禁止 | 哑光/死白/蜡感/油光/过曝 | — |
+
+### 基础妆细化(默认档)
+
+| 项目 | 约束 | 提示词 |
+|---|---|---|
+| 眉部 | 顺着底模眉形轻修,不改变眉型 | 自然修眉、眉形干净 |
+| 眼部 | 极淡眼部修饰,强调清透与有神 | 眼部清透、极淡内眼线 |
+| 面颊 | 极淡气色提亮,不可明显堆色 | 面颊气色自然、微弱提气色 |
+| 唇部 | 裸粉或浅粉润色,保持克制 | 唇色自然润泽、浅粉唇色 |
+| 整体 | 看得出有妆造,但妆感非常轻 | 基础妆、伪素颜妆感、自然精修 |
+
+### 分部位(以清雅素妆为例)
+
+| 部位 | 约束 | 提示词 |
+|---|---|---|
+| 底妆 | 轻薄通透、水光微光泽 | 底妆轻薄、水光奶油肌 |
+| 眉妆 | 远山眉/柳叶眉、灰棕淡扫 | 远山黛眉、淡扫蛾眉 |
+| 眼妆 | 极淡眼影、内眼线、睫毛纤长 | 眼妆清透、睫毛纤长 |
+| 腮红 | 极淡薄粉、苹果肌微扫 | 腮红极淡、薄粉微醺 |
+| 唇妆 | 水润浅粉、微光泽 | 唇色水润浅粉 |
+
+### 男性妆容
+
+| 项目 | 约束 | 提示词 |
+|---|---|---|
+| 底肤 | 赛璐珞渲染、白皙透亮、清爽自然 | 卡通肌肤、奶油肌、luminous skin |
+| 原则 | 伪素颜——看着没化妆但皮肤极好 | 伪素颜、天生好皮 |
+| 眉毛 | 自然浓眉、不画眉 | 剑眉自然、眉形英挺 |
+| 唇色 | 自然血色、微润 | 唇色自然、血色感 |
+
+---
+
+## 四、发型造型约束(L2)
+
+### 女性造型类型
+
+| 造型 | 描述 | 适用 | 提示词 |
+|---|---|---|---|
+| 自然散发 | 长发自然垂落、柔顺有光泽 | 日常、休闲 | 自然散发、柔顺长发 |
+| 高马尾 | 高束马尾、活力干练 | 运动、通勤 | 高马尾、活力马尾 |
+| 低马尾 | 低束马尾、优雅简洁 | 日常、商务 | 低马尾、优雅马尾 |
+| 半扎发 | 上方半扎+下方自然垂落 | 日常、约会 | 半扎发、半束发型 |
+| 双马尾 | 两侧马尾、青春活泼 | 活泼场景 | 双马尾、活泼发型 |
+| 优雅盘发 | 盘发/丸子头、正式感 | 正式场合 | 优雅盘发、低发髻 |
+
+### 女性发饰
+
+| 项目 | 约束 | 提示词 |
+|---|---|---|
+| 风格 | 现代都市风、简约精致、与服饰配套 | 现代发饰、都市风格 |
+| 材质 | 金属/布艺/亚克力 | 金属发夹、布艺发饰 |
+| 工艺 | 精致工艺、卡通化呈现 | 精细工艺、精致装饰 |
+
+### 男性造型类型
+
+| 造型 | 适用 | 提示词 |
+|---|---|---|
+| 清爽短发 | 日常、商务 | 清爽短发、整洁发型 |
+| 侧分中分 | 正式、通勤 | 侧分发型、中分发型 |
+| 蓬松凌乱 | 休闲、文艺 | 蓬松发型、凌乱随意 |
+| 中长自然 | 休闲、文艺 | 中长发、自然垂落 |
+
+---
+
+## 五、服饰约束(L3+L4)
+
+### 女性服饰矩阵
+
+| 风格 | 款式 | 适用 | 提示词 |
+|---|---|---|---|
+| 都市通勤装 | 衬衫/西装/半身裙 | 上班、日常 | 通勤服装、都市职业装 |
+| 休闲常服 | T恤/牛仔裤/卫衣 | 日常、休闲 | 休闲服装、舒适穿搭 |
+| 晚礼服 | 连衣裙/礼服裙 | 宴会、约会 | 晚礼服、优雅裙装 |
+| 运动装 | 运动套装/运动背心 | 运动、健身 | 运动服装、活力穿搭 |
+| 正式礼服 | 高级定制礼服 | 正式场合 | 正式礼服、华贵裙装 |
+
+### 女性服饰通用约束
+
+| 项目 | 约束 | 提示词 |
+|---|---|---|
+| 主色 | 暖色调为主、符合都市感 | 暖色调服装、都市配色 |
+| 材质 | 真实材质感 + 赛璐珞渲染 | 衣服质感清晰、赛璐珞材质 |
+| 质感 | 纹理清晰但不过度写实 | 衣服纹理清晰、卡通质感 |
+| 肩部 | 自然肩部、装饰适量 | 自然肩部、适量装饰 |
+| 层次 | 适度层次、不过于繁复 | 适度层次、简洁分明 |
+
+### 男性服饰矩阵
+
+| 风格 | 适用 | 提示词 |
+|---|---|---|
+| 都市休闲装 | 衬衫/牛仔裤/休闲外套 | 日常、休闲 | 休闲服装、都市风格 |
+| 商务正装 | 西装/衬衫/领带 | 上班、正式 | 商务正装、职业造型 |
+| 运动套装 | 运动服/运动套装 | 运动、健身 | 运动服装、活力穿搭 |
+| 日常便装 | T恤/牛仔裤/卫衣 | 休闲、私密 | 日常便装、舒适穿搭 |
+| 正式礼服 | 高级定制西装/礼服 | 正式场合 | 正式礼服、华贵造型 |
+
+---
+
+## 六、配饰约束(L5)
+
+### 女性配饰
+
+| 类型 | 约束 | 提示词 |
+|---|---|---|
+| 头饰 | 现代都市风、不单薄 | 现代发饰、精致头饰 |
+| 耳饰 | 精致耳钉/垂坠耳环 | 精致耳环、都市风格 |
+| 项饰 | 精致项链/项圈 | 精致项链、简约设计 |
+| 腰饰 | 简约腰带/装饰带 | 简约腰带、都市配饰 |
+| 手饰 | 精致手镯/手表 | 精致手表、都市配饰 |
+
+### 男性配饰
+
+| 类型 | 约束 | 提示词 |
+|---|---|---|
+| 眼镜 | 现代眼镜/墨镜 | 现代眼镜、时尚配饰 |
+| 腰带 | 简约腰带/皮带 | 简约腰带、都市风格 |
+| 手表 | 精致手表/运动表 | 精致手表、都市配饰 |
+| 背包 | 都市背包/公文包 | 都市背包、实用配饰 |
+| 钥匙扣 | 简约钥匙扣 | 简约钥匙扣、都市细节 |
+
+---
+
+## 七、服化组合速查
+
+| 场景 | 妆容 | 发型 | 服饰 | 配饰 |
+|---|---|---|---|---|
+| 日常通勤 | 清雅素妆 | 半扎发/马尾 | 都市通勤装 | 简约 |
+| 休闲约会 | 柔媚桃妆 | 半扎发/散发 | 休闲常服 | 中等 |
+| 商务会议 | 冷艳霜妆 | 半扎发/束发 | 商务正装 | 精致 |
+| 运动健身 | 轻妆 | 马尾/束发 | 运动装 | 简 |
+| 正式晚宴 | 华贵晚宴妆 | 盘发/半扎发 | 晚礼服 | 极繁 |
+| 周末逛街 | 轻妆 | 散发/半扎发 | 休闲常服 | 中等 |
+| 运动比赛 | 轻妆 | 马尾/束发 | 运动装 | 简 |
+
+---
+
+> **🔍 未覆盖场景推断规则**
+>
+> 当用户描述的场景/情境不在上表时,根据本风格核心基因自行推断:
+>
+> | 推断维度 | 3D动画渲染都市基因 |
+> |---|---|
+> | 妆容强度 | 默认清雅素妆;正式/商务→冷艳霜妆;甜宠/约会→柔媚桃妆;虚弱/受伤→病弱梨妆;晚宴/盛装→华贵晚宴妆 |
+> | 发型 | 日常/通勤→半扎发或马尾;休闲/约会→自然散发;正式→盘发;运动→高马尾;双马尾用于青春活泼场景 |
+> | 服饰 | 都市场景全覆盖;场合正式度决定服饰精致度(通勤<日常<约会<晚宴);3D赛璐珞材质始终保持 |
+> | 配饰繁度 | 运动→简;日常/通勤→简约;约会→中等精致;正式晚宴→极繁 |
+> | 质感基准 | 赛璐珞渲染+柔和光影始终锁定;禁止滑向写实摄影或平面二次元质感 |
+
+## 八、四视图设定图规范
+
+> 衍生服化叠加后仍需输出四视图设定图,确保服化妆造在各角度的一致性。
+
+### 视图定义
+
+| 位置 | 视图 | 角度 | 景别 | 要求 | 提示词 |
+|---|---|---|---|---|---|
+| 左一 | 人像特写 | 正面平视 | 面部至锁骨 | 面部占60%+,五官/妆容清晰 | portrait closeup、face detail、makeup detail |
+| 左二 | 正视图 | 正面 0° | 全身立像 | 面对镜头、服饰正面全貌 | front view、height mark |
+| 右二 | 侧视图 | 右侧 90° | 全身立像 | 纯侧面轮廓、服饰侧面层次 | side view、profile、height mark |
+| 右一 | 后视图 | 后方 180° | 全身立像 | 后脑发饰/背部服饰/发尾清晰 | back view、rear view、height mark |
+
+### 画面规范
+
+| 项目 | 约束 |
+|---|---|
+| 布局 | 同一画面从左至右并排四视图 |
+| 背景 | 纯净中性灰 #E8E8E8 |
+| 站姿 | 自然站立、双脚平行微分、双臂自然下垂或微展(**禁止任何姿态变化**) |
+| 表情 | 符合妆容风格的微表情(如清雅素妆→淡然、桃妆→含笑),仅限面部微表情,不涉及肢体动作 |
+| 光线 | 均匀柔光,前方主光 + 双侧补光,无硬阴影 |
+| 一致性 | 四视图的面容/妆容/发型/发饰/服饰/配饰完全一致 |
+| 画面比例 | 建议 4:1 或 3:1 |
+
+---
+
+## 九、提示词模板
+
+### 输出格式约束
+
+| 项目 | 约束 |
+|---|---|
+| 输出内容 | **仅输出提示词文本**,不输出任何其他内容 |
+| 禁止输出 | 速查表、分层构建方案、视觉约束表、禁止事项表、衍生方案、输出建议、核心要素表等一切非提示词内容 |
+| 禁止场景 | 人物衍生资产**不包含场景/环境描述**,不输出任何场景/环境/天气/背景叙事内容(场景属于场景资产范畴) |
+| 禁止道具 | **不包含任何道具交互**,不输出伞/手机/电脑/咖啡等手持物或交互物(道具属于道具资产范畴) |
+| 禁止姿态变化 | **不改变底模姿态**,不输出行走/回眸/举手/侧身/奔跑等任何动作或体态变化,保持自然站立 |
+| 格式 | 直接输出可用的提示词代码块,无需标题、表格、解释、方案对比 |
+
+### 完整服化叠加(四视图)
+
+```
+以角色基础形象图为底图,img2img叠加服化妆造,
+3D 动画渲染,电影级打光,活力赛璐珞质感,高细节材质,愉悦治愈氛围,卡通都市风,高细节卡通材质,适度卡通比例,暖色调配色,8K 超高清,电影级构图,柔和光影层次,明快卡通渲染风格,温馨治愈,{性别}角色四视图设定图,
+anime style, cel-shaded, 3D animation render, film lighting,
+character design sheet, character turnaround,
+保持基础形象面容不变,{整体气质},
+【L1·妆容】根据用户线索决策:{基础妆/轻妆/正式妆};使用 {妆容风格},赛璐珞肌肤,{眉妆},{眼妆},{唇妆},
+【L2·发型】{造型类型},发丝流畅渲染,{发饰描述},
+【L3+L4·服饰】{主色}{款式},{材质},{装饰工艺},衣服质感清晰、赛璐珞材质,
+【L5·配饰】{头饰},{耳饰},{项饰},{腰饰},
+同一画面左至右并排:人像特写+正视图+侧视图+后视图,
+自然站立,纯净中性灰背景,均匀柔光,无硬阴影,
+四视图一致性,面容细腻渲染,发丝细腻渲染,纹理细节清晰,
+赛璐珞渲染风格,柔和光影,适度卡通比例,写实材质结合,
+8K 超高清,电影级构图,
+图中不要有任何文字
+```
+
+---
+
+## 十、约束规则
+
+### 必守
+
+| 编号 | 规则 |
+|---|---|
+| R1 | 叠加后面容必须与底模一致 |
+| R2 | 服饰必须用「衣服质感清晰 + 赛璐珞材质」 |
+| R3 | 女性配饰必须「现代都市风 + 精致工艺」 |
+| R4 | 妆容/发型/服饰/配饰风格统一 |
+| R5 | 必须输出四视图设定图(人像特写+正视图+侧视图+后视图) |
+| R6 | 必须指定「纯净中性灰背景」 |
+| R7 | 必须指定「四视图一致性」 |
+| R8 | **仅输出提示词**——禁止输出速查表/分层方案/视觉约束/禁止事项/衍生方案/输出建议等任何非提示词内容 |
+| R9 | **禁止包含场景描述**——人物衍生资产不涉及场景/环境/天气/背景叙事,场景属于独立资产类型 |
+| R10 | **禁止道具交互**——不包含任何手持物/交互物(伞/手机/电脑等),道具属于独立资产类型 |
+| R11 | **姿态保持不变**——必须保持底模自然站立姿态,禁止任何动作/体态/姿势变化 |
+| R12 | **L1 必须先分析再决策**——先解析用户面部线索,再确定基础妆/轻妆/正式妆 |
+| R13 | **所有衍生资产均需妆造**——正常情况不保持素颜,至少使用基础妆 |
+| R14 | **上妆强度受控**——即使上妆也需克制,不得出现现代浓妆/夸张彩妆效果 |
+| R15 | **道具/场景/动作不作强度升级依据**——仅凭道具,环境,动作等信息不得把基础妆抬高为更强妆容 |
+| R16 | 必须包含3D动画渲染关键词(cel-shaded, 3D animation render, anime style) |
+| R17 | 必须包含8K超高清、电影级构图关键词 |
+| R18 | 必须包含电影级打光关键词(film lighting) |
+
+### 严禁
+
+| 编号 | 严禁 |
+|---|---|
+| X1 | 叠加后面容偏移 |
+| X2 | 配饰过于简单/现代化(女性) |
+| X3 | 妆容/服饰风格互相冲突 |
+| X4 | 复杂场景背景(必须纯灰底) |
+| X5 | 四视图间服化妆造不一致 |
+| X6 | 输出提示词以外的任何内容(表格/方案/建议/解释/变体等) |
+| X7 | 在人物衍生资产中加入场景描述(山道/雨景/室内/街道/天气等环境元素) |
+| X8 | 输出「核心要素速查」「分层构建方案」「视觉约束」「禁止事项」「衍生方案」等章节 |
+| X9 | 加入任何道具交互(手持手机/电脑/咖啡/包包等物品) |
+| X10 | 改变底模姿态(行走/回眸/举手/侧身/奔跑/低头/仰望等动作描述) |
+| X11 | 加入表情与姿态联动描述(如「侧身45°行走嘴角浅弯」等叙事性描写) |
+| X12 | 未分析用户线索就直接套用固定妆容 |
+| X13 | 错误保持素颜,导致衍生资产缺少应有妆造 |
+| X14 | 仅因道具/场景/动作词而误把妆容升级,导致妆造强度决策错误 |
+| X15 | 使用写实摄影术语(如real photography, photorealistic, RAW photo等) |
+| X16 | 赛璐珞质感过度或不足,需保持适度 |
\ No newline at end of file
diff --git a/data/skills/art_skills/3D_anime_render/art_prompt/art_prop.md b/data/skills/art_skills/3D_anime_render/art_prompt/art_prop.md
new file mode 100644
index 0000000..ee31cc8
--- /dev/null
+++ b/data/skills/art_skills/3D_anime_render/art_prompt/art_prop.md
@@ -0,0 +1,136 @@
+# 3D动画渲染都市道具图像生成 · 约束手册
+
+---
+
+## 一、道具设计原则
+
+1. **功能可读** — 道具用途一目了然,造型服务于功能
+2. **质感极致** — 材质纹理必须清晰可辨(金属/玻璃/塑料/木/布),但赛璐珞渲染适度简化
+3. **年代一致** — 所有道具必须符合现代都市世界观,禁止古代/未来元素
+4. **尺度明确** — 通过参照物或标注暗示道具真实尺寸
+5. **纯道具独立展示** — 画面中只能出现道具本身,严禁出现任何人物、手部、肢体,道具不可处于被持有/佩戴/握持状态,必须以静物陈列方式独立呈现
+
+---
+
+## 二、道具分类与美学约束
+
+### 2.1 办公用品类
+
+| 项目 | 约束 | 提示词 |
+|---|---|---|
+| 类型 | 笔记本/钢笔/文件夹/计算器 | {道具类型},都市办公用品 |
+| 材质 | 塑料/金属/纸张 | 现代材质、都市质感 |
+| 装饰 | 简约设计、品牌标识 | 简约设计、都市风格 |
+| 光泽 | 适度光泽、清晰反光 | 适度光泽、清晰反光 |
+| 提示词 | 3D动画渲染都市{道具},现代材质,简约设计 | — |
+
+### 2.2 生活器物类
+
+| 项目 | 约束 | 提示词 |
+|---|---|---|
+| 类型 | 咖啡杯/水杯/餐具/灯具 | {器物类型},都市生活器物 |
+| 材质 | 玻璃/陶瓷/金属/塑料 | 玻璃质感、现代设计 |
+| 质感 | 表面光滑、材质清晰 | 表面光滑、材质清晰 |
+| 风格 | 简约/现代按场景切换 | 简约现代 / 都市风格 |
+| 提示词 | 3D动画渲染都市{器物},{材质}质感,纹理清晰 | — |
+
+### 2.3 电子设备类
+
+| 项目 | 约束 | 提示词 |
+|---|---|---|
+| 类型 | 手机/平板/耳机/相机 | {设备类型},都市电子设备 |
+| 材质 | 金属/玻璃/塑料 | 现代设备材质、光滑质感 |
+| 工艺 | 精致工艺、品牌设计 | 精致工艺、品牌设计 |
+| 光泽 | 适度反光、屏幕发光效果 | 适度反光、屏幕发光 |
+| 提示词 | 3D动画渲染都市{设备},现代材质,屏幕发光效果 | — |
+
+### 2.4 服饰配件类
+
+| 项目 | 约束 | 提示词 |
+|---|---|---|
+| 类型 | 眼镜/手表/包包/钥匙扣 | {配件类型},都市服饰配件 |
+| 材质 | 金属/皮革/织物/玻璃 | 皮革质感、金属质感 |
+| 工艺 | 品牌工艺、精致设计 | 品牌工艺、精致设计 |
+| 光泽 | 适度光泽、品牌标识清晰 | 适度光泽、品牌标识清晰 |
+| 提示词 | 3D动画渲染都市{配件},{材质},品牌设计 | — |
+
+---
+
+## 三、多角度设定图规范
+
+### 视图定义
+
+| 位置 | 视图 | 角度 | 要求 | 提示词 |
+|---|---|---|---|---|
+| 左上 | 正面图 | 正面 0° | 道具完整正面形态 | front view |
+| 右上 | 侧面图 | 侧面 90° | 厚度/轮廓/结构清晰 | side view |
+| 左下 | 背面图 | 背面 180° | 道具背部结构/装饰 | back view |
+| 右下 | 细节特写 | 局部放大 | 材质纹理/工艺细节 | detail closeup |
+
+### 画面规范
+
+| 项目 | 约束 |
+|---|---|
+| 布局 | 同一画面四宫格(2×2),上下左右四视角 |
+| 背景 | 纯净中性灰 #E8E8E8 |
+| 光线 | 均匀柔光,无硬阴影 |
+| 比例 | 每格道具占格内主体 70%+ |
+| 投影 | 允许自然地面微投影(赛璐珞处理) |
+| 画面比例 | 建议 1:1 |
+
+---
+
+## 四、材质渲染约束
+
+| 材质 | 渲染要求 | 提示词 |
+|---|---|---|
+| 金属 | 反光/高光/冷光泽(赛璐珞处理)、划痕微可见 | 金属质感、赛璐珞光泽、反光清晰 |
+| 玻璃 | 透明度/折射/光晕(赛璐珞简化) | 玻璃质感、透明度清晰 |
+| 塑料 | 光滑表面/轻微反光 | 塑料质感、光滑表面 |
+| 皮革 | 纹理清晰/自然褶皱 | 皮革质感、自然纹理 |
+| 纸张 | 表面纹理/轻微褶皱 | 纸张质感、表面纹理 |
+| 织物 | 纤维质感/自然褶皱 | 织物质感、自然纹理 |
+
+---
+
+## 五、提示词模板
+
+```
+3D 动画渲染,电影级打光,活力赛璐珞质感,高细节材质,愉悦治愈氛围,卡通都市风,高细节卡通材质,适度卡通比例,暖色调配色,8K 超高清,电影级构图,柔和光影层次,明快卡通渲染风格,温馨治愈,道具设定图,
+anime style, cel-shaded, 3D animation render,
+{道具类型},{材质描述},{工艺/装饰描述},{状态描述},
+纯道具静物展示,道具独立陈列,无人持有,无人佩戴,
+同一画面四宫格(2×2):左上正面图+右上侧面图+左下背面图+右下细节特写,
+纯净中性灰背景,均匀柔光,无硬阴影,
+材质纹理清晰,赛璐珞渲染,{材质光泽描述},现代卡通都市风格,
+8K 超高清,电影级构图,
+图中不要有任何文字,
+画面中不能出现任何人物、手部、手指、肢体,道具不可处于被握持或佩戴状态
+```
+
+---
+
+## 六、约束规则
+
+### 必守
+
+| 编号 | 规则 |
+|---|---|
+| R1 | 必须指定「纯净中性灰背景」 |
+| R2 | 必须明确道具材质与工艺 |
+| R3 | 道具造型必须符合现代都市世界观 |
+| R4 | 必须包含3D动画渲染关键词(cel-shaded, 3D animation render, anime style) |
+| R5 | 必须包含8K超高清、电影级构图关键词 |
+
+### 严禁
+
+| 编号 | 严禁 |
+|---|---|
+| X1 | 复杂场景背景 |
+| X2 | 道具与人物同画面(本环节为纯道具图) |
+| X3 | 出现任何人物形象,包括全身、半身、局部(手、手指、手臂等肢体) |
+| X4 | 道具处于被持有、握持、佩戴、使用中的状态 |
+| X5 | 出现暗示人物存在的元素(如手持痕迹、佩戴视角、使用姿态) |
+| X6 | 使用写实摄影术语(如real photography, photorealistic, RAW photo等) |
+| X7 | 过度写实材质纹理、破坏赛璐珞风格一致性 |
+| X8 | 古代/未来元素、非现代都市风格 |
\ No newline at end of file
diff --git a/data/skills/art_skills/3D_anime_render/art_prompt/art_prop_derivative.md b/data/skills/art_skills/3D_anime_render/art_prompt/art_prop_derivative.md
new file mode 100644
index 0000000..0471c2f
--- /dev/null
+++ b/data/skills/art_skills/3D_anime_render/art_prompt/art_prop_derivative.md
@@ -0,0 +1,124 @@
+# 3D动画渲染都市道具衍生状态生成 · 约束手册
+
+---
+
+## 一、衍生原则
+
+1. **造型锚定** — 道具核心造型/轮廓在所有状态中可识别
+2. **状态可读** — 状态差异必须一目了然,观众能立即区分
+3. **叙事服务** — 每种状态变体服务于特定剧情节点
+4. **渐进退化** — 损伤/老化状态应有合理的物理逻辑(赛璐珞呈现)
+5. **纯道具独立展示** — 画面中只能出现道具本身,严禁出现任何人物、手部、肢体,道具不可处于被持有/佩戴/握持状态,必须以静物陈列方式独立呈现
+
+---
+
+## 二、状态类型
+
+### 2.1 使用状态
+
+| 状态 | 描述 | 适用道具 | 提示词 |
+|---|---|---|---|
+| 崭新 | 完好无损、光泽如新 | 所有道具 | 崭新、完好无损、光泽如新 |
+| 日常使用 | 微磨损、自然使用痕迹(赛璐珞化) | 所有道具 | 日常使用痕迹、轻微磨损 |
+| 陈旧 | 明显使用感、色泽暗淡(赛璐珞化) | 器物/配件/电子 | 使用痕迹、岁月感、色泽暗淡 |
+
+### 2.2 损伤状态
+
+| 状态 | 描述 | 适用道具 | 提示词 |
+|---|---|---|---|
+| 微损 | 小裂纹/小缺口/轻微磨损(赛璐珞化) | 玻璃/陶瓷/电子设备 | 细微裂纹、轻微缺口 |
+| 破损 | 明显裂缝/断裂/破碎(赛璐珞化) | 玻璃/陶瓷/电子设备 | 裂缝明显、碎裂、断裂 |
+| 残片 | 仅剩部分/碎片(赛璐珞化) | 玻璃/陶瓷/电子设备 | 残片、碎片、仅存半块 |
+
+### 2.3 特殊状态
+
+| 状态 | 描述 | 适用道具 | 提示词 |
+|---|---|---|---|
+| 充电/工作 | 屏幕亮起/指示灯(赛璐珞化) | 电子设备 | 屏幕亮起、工作指示灯 |
+| 浸水/湿润 | 水渍、湿润反光(赛璐珞化) | 电子设备/纸张 | 浸水、表面湿润、反光 |
+| 屏幕损坏 | 屏幕裂纹/显示异常 | 电子设备 | 屏幕裂纹、显示异常 |
+| 电池耗尽 | 指示灯熄灭/电量图标 | 电子设备 | 电量耗尽、指示灯熄灭 |
+| 收纳/携带 | 收纳袋/收纳盒 | 配件/电子设备 | 收纳袋、收纳盒 |
+
+---
+
+## 三、状态变体画面规范
+
+### 单状态图
+
+| 项目 | 约束 |
+|---|---|
+| 背景 | 纯净中性灰 #E8E8E8(与设定图一致) |
+| 光线 | 均匀照明,无硬阴影 |
+| 角度 | 与原设定图正面图一致 |
+| 比例 | 道具占画面主体 70%+ |
+
+### 状态对比图
+
+| 项目 | 约束 |
+|---|---|
+| 布局 | 同一画面并排展示 2-3 种状态 |
+| 标注 | 每种状态下方标注状态名 |
+| 一致性 | 角度/光线/背景完全一致,仅状态不同 |
+
+---
+
+## 四、材质状态变化规则
+
+| 材质 | 崭新 → 日常 | 日常 → 陈旧 | 损伤表现(赛璐珞化) |
+|---|---|---|---|
+| 金属 | 亮光泽 → 微划痕 | 划痕 → 色泽暗沉 | 缺口/卷刃/断裂(赛璐珞处理) |
+| 玻璃 | 透明度 → 微划痕 | 划痕 → 表面磨损 | 裂纹/碎裂/缺角(赛璐珞处理) |
+| 塑料 | 光滑 → 轻微划痕 | 划痕 → 色泽暗淡 | 开裂/断裂/磨损(赛璐珞处理) |
+| 皮革 | 光滑 → 自然褶皱 | 褶皱 → 色泽暗淡 | 磨损/裂纹/褪色(赛璐珞处理) |
+| 纸张 | 平整 → 轻微皱折 | 皱折 → 发黄 | 撕裂/磨损/墨迹晕染(赛璐珞处理) |
+
+---
+
+## 五、提示词模板
+
+### 单状态变体
+
+```
+基于{道具名}设定图,3D 动画渲染,电影级打光,活力赛璐珞质感,高细节材质,愉悦治愈氛围,卡通都市风,高细节卡通材质,适度卡通比例,暖色调配色,8K 超高清,电影级构图,柔和光影层次,明快卡通渲染风格,温馨治愈,
+anime style, cel-shaded, 3D animation render,
+{道具类型},{材质描述},
+当前状态:{状态名},{状态视觉描述},
+{材质表面变化描述},(赛璐珞化处理)
+纯道具静物展示,道具独立陈列,无人持有,无人佩戴,
+同一画面四宫格(2×2):左上正面图(front view)+右上侧面图(side view)+左下背面图(back view)+右下细节特写(detail closeup),
+纯净中性灰背景,均匀柔光,无硬阴影,
+材质纹理清晰,赛璐珞渲染,状态细节可辨,赛璐珞化处理,
+8K 超高清,电影级构图,
+图中不要有任何文字,
+画面中不能出现任何人物、手部、手指、肢体,道具不可处于被握持或佩戴状态
+```
+
+---
+
+## 六、约束规则
+
+### 必守
+
+| 编号 | 规则 |
+|---|---|
+| R1 | 道具核心造型/轮廓在所有状态中可识别 |
+| R2 | 状态变化须符合物理逻辑(赛璐珞化) |
+| R3 | 必须使用四宫格(2×2)布局:左上正面图+右上侧面图+左下背面图+右下细节特写 |
+| R4 | 必须指定「纯净中性灰背景」,均匀柔光,无硬阴影 |
+| R5 | 必须包含3D动画渲染关键词(cel-shaded, 3D animation render, anime style) |
+| R6 | 必须包含8K超高清、电影级构图关键词 |
+
+### 严禁
+
+| 编号 | 严禁 |
+|---|---|
+| X1 | 状态变化后道具不可识别 |
+| X2 | 违反物理逻辑的损伤(电子产品生锈等) |
+| X3 | 过度血腥/恐怖的损伤描绘(赛璐珞化限度内) |
+| X4 | 出现任何人物形象,包括全身、半身、局部(手、手指、手臂等肢体) |
+| X5 | 道具处于被持有、握持、佩戴、使用中的状态 |
+| X6 | 出现暗示人物存在的元素(如手持痕迹、佩戴视角、使用姿态) |
+| X7 | 使用写实摄影术语(如real photography, photorealistic, RAW photo等) |
+| X8 | 过度写实损伤纹理、破坏赛璐珞风格一致性 |
+| X9 | 古代/未来元素、非现代都市风格 |
\ No newline at end of file
diff --git a/data/skills/art_skills/3D_anime_render/art_prompt/art_scene.md b/data/skills/art_skills/3D_anime_render/art_prompt/art_scene.md
new file mode 100644
index 0000000..dd36522
--- /dev/null
+++ b/data/skills/art_skills/3D_anime_render/art_prompt/art_scene.md
@@ -0,0 +1,164 @@
+# 3D动画渲染都市场景图生成 · 约束手册
+
+---
+
+## 一、场景美学原则
+
+1. **空间叙事** — 场景承载情绪与叙事功能,不是纯背景板
+2. **层次纵深** — 所有场景必须具备前/中/后景,杜绝扁平
+3. **质感至上** — 木纹/石质/布料/水面等材质纹理清晰,但赛璐珞渲染简化
+4. **赛璐珞为锚** — 一切画面以3D动画渲染+赛璐珞为标准,拒绝写实摄影/CG 动画质感;保持动画风格一致性与镜头特征
+5. **都市氛围** — 现代都市景观、建筑风格、色调统一
+
+---
+
+## 二、季节色调映射
+
+| 季节 | 主色调 | 辅色调 | 提示词 |
+|---|---|---|---|
+| 春 | 青翠 + 桃粉 | 浅蓝、鹅黄 | 春色青翠、花开满枝 |
+| 夏 | 碧绿 + 荷粉 | 天青、白色 | 夏意盎然、绿树成荫 |
+| 秋 | 赤红 + 金黄 | 琥珀、浅灰 | 秋意浓、红叶飘落 |
+| 冬 | 素白 + 霜银 | 深蓝、浅灰 | 冬雪覆盖、冬日宁静 |
+
+---
+
+## 三、城市建筑
+
+### 空间规范
+
+| 维度 | 约束 | 提示词 |
+|---|---|---|
+| 风格 | 现代都市、写字楼/住宅/商业区 | 现代都市建筑 |
+| 材质 | 玻璃/混凝土/金属为主(赛璐珞化) | 现代材质、赛璐珞渲染 |
+| 色调 | 暖色调为主、黄昏霞光氛围 | 暖色调、黄昏氛围 |
+| 纵深 | 前/中/后景层次(赛璐珞纵深) | 前景{元素}、中景{元素}、后景{元素} |
+| 质感 | 建筑纹理清晰(赛璐珞化) | 纹理清晰、赛璐珞质感 |
+| 光照 | 自然光为主(窗光/路灯),光线柔和 | 自然光、柔和光照 |
+| 镜头感 | 浅景深虚化前后景、赛璐珞镜头效果 | shallow depth of field、赛璐珞镜头 |
+| 瑕疵感 | 建筑有使用痕迹、自然磨损(赛璐珞化) | 自然磨损、赛璐珞处理 |
+
+### 城市类型速查
+
+| 类型 | 核心元素 | 氛围词 |
+|---|---|---|
+| 商业街区 | 高楼大厦/商铺/广告牌 | 繁华热闹、现代都市 |
+| 住宅区 | 公寓楼/花园/街道 | 温馨生活、宁静社区 |
+| 办公区 | 写字楼/停车场/咖啡区 | 职场氛围、商务气息 |
+| 公园绿地 | 树木/步道/长椅 | 休闲放松、绿意盎然 |
+| 交通枢纽 | 地铁站/公交站/人行天桥 | 繁忙交通、都市脉搏 |
+| 河滨/湖畔 | 水域/步道/灯光 | 浪漫氛围、水景优美 |
+
+---
+
+## 四、室内外场景
+
+### 室内空间规范
+
+| 维度 | 约束 | 提示词 |
+|---|---|---|
+| 风格 | 办公室/咖啡厅/公寓/便利店 | 现代室内风格 |
+| 材质 | 地板/墙面/家具(赛璐珞化) | 现代材质、赛璐珞渲染 |
+| 色调 | 暖色调为主、黄昏氛围 | 暖色调、温馨氛围 |
+| 纵深 | 前/中/后景层次 | 前景{元素}、中景{元素}、后景{元素} |
+| 质感 | 材质纹理清晰(赛璐珞化) | 纹理清晰、赛璐珞质感 |
+| 光照 | 自然光+室内灯光,光线柔和 | 自然光、室内灯光、柔和 |
+| 镜头感 | 浅景深虚化前后景 | shallow depth of field、室内镜头 |
+| 瑕疵感 | 家具有使用痕迹、自然磨损 | 自然磨损、赛璐珞处理 |
+
+### 室内类型速查
+
+| 类型 | 核心元素 | 氛围词 |
+|---|---|---|
+| 办公室 | 办公桌/电脑/文件/椅子 | 职场氛围、商务气息 |
+| 咖啡厅 | 咖啡桌/座椅/吧台/装饰 | 温馨惬意、休闲氛围 |
+| 公寓 | 沙发/床/书架/装饰 | 居家温馨、舒适空间 |
+| 便利店 | 货架/收银台/饮料 | 生活便利、日常感 |
+| 餐厅 | 餐桌/椅子/厨房 | 餐饮氛围、温馨就餐 |
+| 健身房 | 跑步机/器械/镜子 | 运动氛围、活力空间 |
+
+---
+
+## 五、四视图设定图规范
+
+### 视图定义
+
+> 摄像机固定于场景中心点,分别朝前/后/左/右四个方向拍摄,形成 360° 环视。
+
+| 位置 | 视图 | 视角方向 | 要求 | 提示词 |
+|---|---|---|---|---|
+| 左上 | 前视图 | 从中心点向前方平视(0°) | 展示场景正面主体结构与纵深层次 | front view、eye level、looking forward |
+| 右上 | 右视图 | 从中心点向右方平视(90°) | 展示场景右侧空间延伸与侧面结构 | right side view、eye level、looking right |
+| 左下 | 后视图 | 从中心点向后方平视(180°) | 展示场景背面结构与空间纵深 | back view、eye level、looking backward |
+| 右下 | 左视图 | 从中心点向左方平视(270°) | 展示场景左侧空间延伸与侧面结构 | left side view、eye level、looking left |
+
+### 画面规范
+
+| 项目 | 约束 |
+|---|---|
+| 布局 | 同一画面 2×2 网格排列:上排(前视图 + 右视图),下排(后视图 + 左视图),形成从中心点环视的四方向视图 |
+| 人物 | **严禁出现任何人物、人影、人体轮廓** |
+| 视点 | 四视图均从同一中心点出发,视线高度一致(人眼平视高度) |
+| 一致性 | 四视图的建筑结构/材质/色调/光线/季节/天候完全一致 |
+| 光线 | 四视图光源方向统一,保持光影逻辑一致(光源在不同视角下的位置关系正确,赛璐珞化处理) |
+| 画面比例 | 建议 1:1(2×2 网格) |
+
+---
+
+## 六、提示词模板
+```
+3D 动画渲染,电影级打光,活力赛璐珞质感,高细节材质,愉悦治愈氛围,卡通都市风,高细节卡通材质,适度卡通比例,暖色调配色,8K 超高清,电影级构图,柔和光影层次,明快卡通渲染风格,温馨治愈,都市场景四视图设定图,
+anime style, cel-shaded, 3D animation render,
+film lighting, warm sunset lighting,
+scene design sheet, environment concept art, no people, no characters, no human figures,
+{室内/室外},{场景类型},{建筑风格},{季节+时间},
+前景:{元素},中景:{元素},后景:{元素},
+{色调描述},{天候/氛围元素},
+{材质描述},空气透视,纹理清晰,赛璐珞化处理,
+材质自然使用痕迹,生活感磨损,布料自然垂褶(赛璐珞化),
+自然光漫射,体积光,赛璐珞光效,赛璐珞投影,
+同一画面2×2网格排列:从场景中心点环视,前视图+右视图+后视图+左视图,
+四视图均从同一中心点平视拍摄,建筑结构一致,材质色调一致,光影逻辑一致,
+画面中无任何人物,
+赛璐珞渲染风格,柔和光影,适度卡通比例,高细节卡通材质,
+暖色调配色,黄昏霞光氛围,愉悦治愈氛围,
+8K 超高清,电影级构图,
+图中不要有任何文字
+```
+
+---
+
+## 七、约束规则
+
+### 必守
+
+| 编号 | 规则 |
+|---|---|
+| R1 | 场景必须有「前中后景层次」 |
+| R2 | 室外必须包含「空气透视」 |
+| R3 | 场景图必须为「四视图设定图」(从中心点环视:前视图 + 右视图 + 后视图 + 左视图) |
+| R4 | 四视图的建筑结构/材质/色调/光线/季节/天候必须完全一致 |
+| R5 | 场景图中**严禁出现任何人物** |
+| R6 | 必须包含3D动画渲染关键词(cel-shaded, 3D animation render, anime style) |
+| R7 | 必须包含镜头光学特征(shallow depth of field / lens vignette / bokeh 至少一项,赛璐珞化处理) |
+| R8 | 材质必须带有自然磨损/岁月痕迹,禁止全新无瑕的"CG 感",但赛璐珞化呈现 |
+| R9 | 必须保持赛璐珞渲染风格一致性,不得混搭写实元素 |
+| R10 | 必须包含暖色调配色、黄昏霞光氛围关键词 |
+| R11 | 必须包含8K超高清、电影级构图关键词 |
+
+### 严禁
+
+| 编号 | 严禁 |
+|---|---|
+| X1 | 背景纯白/纯黑/无场景 |
+| X2 | 极端天候(暴风雨/雷电/暴雪,除非剧情需要,且需赛璐珞化) |
+| X3 | 场景无纵深/无层次 |
+| X4 | 植被/天候与季节矛盾 |
+| X5 | 出现任何人物、人影、人体剪影或人体轮廓 |
+| X6 | 四视图之间建筑结构/材质/色调不一致,或视点中心不统一 |
+| X7 | 3D 渲染/CG 动画/游戏引擎质感(禁用 3D render、CGI、Unreal Engine、Unity 等词),但需明确赛璐珞动画渲染 |
+| X8 | 材质过于干净完美、无任何使用痕迹与岁月感(避免"塑料感"),需赛璐珞化处理 |
+| X9 | 光照过于均匀平坦、无景深虚化、无镜头光学特征 |
+| X10 | 使用写实摄影术语(如real photography, photorealistic, RAW photo等) |
+| X11 | 古代/未来元素、非现代都市风格 |
+| X12 | 冷色调/夜间主色调、非暖色调/黄昏氛围 |
\ No newline at end of file
diff --git a/data/skills/art_skills/3D_anime_render/art_prompt/art_scene_derivative.md b/data/skills/art_skills/3D_anime_render/art_prompt/art_scene_derivative.md
new file mode 100644
index 0000000..2a6975d
--- /dev/null
+++ b/data/skills/art_skills/3D_anime_render/art_prompt/art_scene_derivative.md
@@ -0,0 +1,173 @@
+# 3D动画渲染都市场景衍生资产生成 · 约束手册
+
+---
+
+## 一、衍生原则
+
+1. **空间一致** — 建筑结构/布局/材质在所有变体中保持一致
+2. **景别驱动** — 同一场景通过不同景别展示不同叙事功能
+3. **时段切换** — 同一空间在不同时间段呈现不同光影氛围
+4. **天候变化** — 同一空间在不同天气下呈现不同情绪
+5. **赛璐珞为锚** — 所有变体必须保持3D动画渲染+赛璐珞风格,拒绝写实摄影/CG 动画感;保持镜头特征与光影一致性
+6. **都市氛围统一** — 所有变体需保持现代都市风格、暖色调配色
+
+---
+
+## 二、景别变体
+
+### 景别定义
+
+| 景别 | 范围 | 叙事功能 | 提示词 |
+|---|---|---|---|
+| 大全景 | 场景全貌 + 周围环境 | 建立空间感、定位 | extreme wide shot、大全景 |
+| 全景 | 场景完整呈现 | 展示空间结构 | wide shot、全景 |
+| 中景 | 场景局部区域 | 聚焦功能区 | medium shot、中景 |
+| 近景 | 场景细部 | 材质/氛围道具特写 | close shot、近景 |
+| 特写 | 极局部细节 | 材质纹理/关键道具 | extreme closeup、特写 |
+
+### 景别衍生规范
+
+| 从基准图衍生 | 保持不变 | 允许变化 |
+|---|---|---|
+| 大全景 → 全景 | 建筑外观、整体布局 | 视角收窄、前景增加 |
+| 全景 → 中景 | 材质、色调、光线 | 裁切聚焦、景深变化 |
+| 中景 → 近景 | 材质、色调 | 景深浅、背景虚化 |
+| 近景 → 特写 | 材质纹理 | 极浅景深、微距感 |
+
+---
+
+## 三、时段变体
+
+### 时段定义
+
+| 时段 | 视觉特征 | 提示词 |
+|---|---|---|
+| 清晨 | 薄雾柔光、色调偏冷暖交织(赛璐珞化) | 晨光微熹、清晨薄雾 |
+| 正午 | 明亮、阴影短、色彩鲜明(赛璐珞化) | 正午阳光、光线明亮 |
+| 黄昏 | 金色色调、长影、天空渐变(赛璐珞化) | 暮色金辉、golden hour |
+| 夜间(月光) | 冷蓝色调、幽静清冷(赛璐珞化) | 月光清辉、moonlight |
+| 夜间(灯火) | 暖黄点缀、明暗对比(赛璐珞化) | 灯火阑珊、烛光点点 |
+
+### 时段衍生规范
+
+| 从基准时段衍生 | 保持不变 | 变化项 |
+|---|---|---|
+| 日间 → 黄昏 | 建筑/布局/材质 | 天空色调暖化、影子拉长(赛璐珞化) |
+| 日间 → 夜间 | 建筑/布局/材质 | 整体变暗、增加灯火/月色氛围(赛璐珞化) |
+| 室内日间 → 室内夜间 | 空间结构、家具 | 整体色调暖化、增加烛火/灯笼元素(赛璐珞化) |
+
+---
+
+## 四、天候变体
+
+### 天候定义
+
+| 天候 | 视觉特征 | 提示词 |
+|---|---|---|
+| 晴天 | 明亮、阴影清晰(赛璐珞化) | 晴空万里、阳光明媚 |
+| 阴天 | 光线均匀、无硬影(赛璐珞化) | 阴天柔光、overcast |
+| 薄雾 | 能见度降低、空气朦胧(赛璐珞化) | 薄雾弥漫、雾气缭绕 |
+| 细雨 | 水珠、湿润反光、雨丝(赛璐珞化) | 细雨如丝、雨幕轻纱 |
+| 飞雪 | 白色覆盖、雪花飘落(赛璐珞化) | 飞雪纷纷、银装素裹 |
+
+### 天候衍生规范
+
+| 从基准天候衍生 | 保持不变 | 变化项 |
+|---|---|---|
+| 晴 → 薄雾 | 建筑/布局 | 增加雾气层、远景模糊、饱和度降低(赛璐珞化) |
+| 晴 → 细雨 | 建筑/布局 | 增加雨丝、地面反光、色调偏冷(赛璐珞化) |
+| 晴 → 飞雪 | 建筑/布局 | 增加积雪、雪花、色调偏白(赛璐珞化) |
+| 植被需随天候逻辑适配 | — | 雨中花瓣湿润、雪中枯枝挂霜(赛璐珞化) |
+
+---
+
+## 五、四视图设定图规范
+
+### 视图定义
+
+> 摄像机固定于场景中心点,分别朝前/后/左/右四个方向拍摄,形成 360° 环视。
+
+| 位置 | 视图 | 视角方向 | 要求 | 提示词 |
+|---|---|---|---|---|
+| 左上 | 前视图 | 从中心点向前方平视(0°) | 展示场景正面主体结构与纵深层次 | front view、eye level、looking forward |
+| 右上 | 右视图 | 从中心点向右方平视(90°) | 展示场景右侧空间延伸与侧面结构 | right side view、eye level、looking right |
+| 左下 | 后视图 | 从中心点向后方平视(180°) | 展示场景背面结构与空间纵深 | back view、eye level、looking backward |
+| 右下 | 左视图 | 从中心点向左方平视(270°) | 展示场景左侧空间延伸与侧面结构 | left side view、eye level、looking left |
+
+### 画面规范
+
+| 项目 | 约束 |
+|---|---|
+| 布局 | 同一画面四宫格(2×2),左上前视图+右上右视图+左下后视图+右下左视图,形成从中心点环视的四方向视图 |
+| 人物 | **严禁出现任何人物、人影、人体轮廓** |
+| 视点 | 四视图均从同一中心点出发,视线高度一致(人眼平视高度) |
+| 一致性 | 四视图的建筑结构/材质/色调/光线/季节/天候完全一致 |
+| 光线 | 四视图光源方向统一,保持光影逻辑一致(光源在不同视角下的位置关系正确,赛璐珞化处理) |
+| 画面比例 | 建议 1:1(2×2 网格) |
+
+---
+
+## 六、提示词模板
+```
+3D 动画渲染,电影级打光,活力赛璐珞质感,高细节材质,愉悦治愈氛围,卡通都市风,高细节卡通材质,适度卡通比例,暖色调配色,8K 超高清,电影级构图,柔和光影层次,明快卡通渲染风格,温馨治愈,衍生四视图设定图,基于{场景名}概念图,
+anime style, cel-shaded, 3D animation render,
+film lighting, warm sunset lighting,
+scene derivative design sheet, environment concept art, no people, no characters, no human figures,
+保持场景空间结构一致,
+{景别视角(如有)},{时段描述(如有)},{天候描述(如有)},
+{前景},{中景},{后景},
+{色调描述},{景深描述(如有)},{天空色调变化(如有)},{氛围调整(如有)},
+{天候视觉特征(如有)},{材质表面变化(如有)},{植被适配描述(如有)},
+材质自然使用痕迹,生活感磨损,布料自然垂褶(赛璐珞化),
+自然光漫射,体积光,赛璐珞光效,赛璐珞投影,
+空气透视,纹理清晰,赛璐珞化处理,
+同一画面四宫格(2×2):从场景中心点环视,前视图+右视图+后视图+左视图,
+四视图均从同一中心点平视拍摄,建筑结构一致,材质色调一致,光影逻辑一致,
+画面中无任何人物,
+赛璐珞渲染风格,柔和光影,适度卡通比例,高细节卡通材质,
+暖色调配色,黄昏霞光氛围,愉悦治愈氛围,
+8K 超高清,电影级构图,
+图中不要有任何文字
+```
+
+> **使用说明**:根据用户提供的信息自行判断需要应用的变化维度(景别/时段/天候),未提及的维度对应字段留空省略即可。无需为每种变体单独生成模板。
+
+---
+
+## 七、约束规则
+
+### 必守
+
+| 编号 | 规则 |
+|---|---|
+| R1 | 场景空间结构在所有变体中保持一致 |
+| R2 | 时段变体必须调整天空色调与氛围(赛璐珞化) |
+| R3 | 天候变体必须适配植被/材质表面(赛璐珞化) |
+| R4 | 必须为「四视图设定图」(从中心点环视:前视图 + 右视图 + 后视图 + 左视图) |
+| R5 | 四视图的建筑结构/材质/色调/光线/季节/天候必须完全一致 |
+| R6 | 场景图中**严禁出现任何人物** |
+| R7 | 根据用户提供的信息自行判断变化维度,无需拆分为独立模板 |
+| R8 | 必须包含3D动画渲染关键词(cel-shaded, 3D animation render, anime style) |
+| R9 | 必须包含镜头光学特征(shallow depth of field / lens vignette / bokeh 至少一项,赛璐珞化处理) |
+| R10 | 材质必须带有自然磨损/岁月痕迹,禁止全新无瑕的"CG 感",但赛璐珞化呈现 |
+| R11 | 必须保持赛璐珞渲染风格一致性,不得混搭写实元素 |
+| R12 | 必须包含暖色调配色、黄昏霞光氛围关键词 |
+| R13 | 必须包含8K超高清、电影级构图关键词 |
+| R14 | 必须包含电影级打光、愉悦治愈氛围关键词 |
+
+### 严禁
+
+| 编号 | 严禁 |
+|---|---|
+| X1 | 变体间建筑结构/布局不一致 |
+| X2 | 天候与季节矛盾(夏天飞雪等,赛璐珞化限度内) |
+| X3 | 变体间材质/风格突变 |
+| X4 | 出现任何人物、人影、人体剪影或人体轮廓 |
+| X5 | 四视图之间建筑结构/材质/色调不一致,或视点中心不统一 |
+| X6 | 3D 渲染/CG 动画/卡通/游戏引擎质感(禁用 3D render、CGI、Unreal Engine、Unity 等词),但需明确赛璐珞动画渲染 |
+| X7 | 材质过于干净完美、无任何使用痕迹与岁月感(避免"塑料感"),需赛璐珞化处理 |
+| X8 | 光照过于均匀平坦、无景深虚化、无镜头光学特征 |
+| X9 | 使用写实摄影术语(如real photography, photorealistic, RAW photo等) |
+| X10 | 古代/未来元素、非现代都市风格 |
+| X11 | 冷色调/夜间主色调、非暖色调/黄昏氛围 |
+| X12 | 缺少愉悦治愈氛围关键词 |
\ No newline at end of file
diff --git a/data/skills/art_skills/3D_anime_render/art_prompt/art_storyboard_video.md b/data/skills/art_skills/3D_anime_render/art_prompt/art_storyboard_video.md
new file mode 100644
index 0000000..0964981
--- /dev/null
+++ b/data/skills/art_skills/3D_anime_render/art_prompt/art_storyboard_video.md
@@ -0,0 +1,11 @@
+# 视频提示词 · 视觉风格约束
+
+生成视频提示词时,必须注入以下视觉风格标签:
+
+| 模式 | 风格标签 |
+|------|----------|
+| **通用多参模式(英文)** | `3D anime render, cel-shaded 3D, cinematic lighting, warm tones, high-detail textures, clear outlines` |
+| **通用首尾帧模式(英文)** | `3D anime render, cel-shaded 3D, cinematic lighting, warm tones, high-detail textures, clear outlines, shallow depth of field` |
+| **Seedance 2.0(中文)** | `3D动画渲染,赛璐珞质感,电影级光影,温暖色调,高细节材质,清晰轮廓线` |
+
+
diff --git a/data/skills/art_skills/3D_anime_render/driector_skills/director_planning_style.md b/data/skills/art_skills/3D_anime_render/driector_skills/director_planning_style.md
new file mode 100644
index 0000000..e03208c
--- /dev/null
+++ b/data/skills/art_skills/3D_anime_render/driector_skills/director_planning_style.md
@@ -0,0 +1,85 @@
+---
+name: director_planning_style
+description: 3D动画渲染约束 — 定义3D卡通渲染在色调体系、光影方案、质感方向、都市场景空间元素、乐器选择与环境音上的全局约束。适用于任何叙事类型。
+metaData: director_skills
+---
+
+# 3D动画渲染约束 · 3D卡通渲染 · 技法参考
+
+---
+
+## 一、色调体系与画面基调
+
+- **色调基底** — 全片以暖橙(C1)、天空蓝(C3)、樱花粉(C5)为基底色,整体色温偏暖(4800-5200K),饱和度中高(65-80%),呈现明快 3D 动画的温暖治愈感
+- **冷暖叙事对比** — 暖色(暖橙 C1、琥珀暖、暖粉)贯穿全片作为基调,冷色(淡蓝 C3、淡紫 C6)作为局部点缀增加层次感。冷暖切换应与故事弧线同步,而非随意混用
+- **冷暖分配策略** — 全片保持暖调基底,冷色调仅在夜晚或情绪转折段落使用,形成冷暖对比
+- **色盘先行原则** — 段落规划需先绑定情绪场景(相遇/日常/冒险/离别等),再确定主色+辅色与光影方案,避免"剧情对了但情绪不对色"
+- **禁用色域** — 暗沉灰暗色系、过度饱和的脏色、与 3D 动画明快气质不匹配的色彩体系均不兼容
+
+---
+
+## 二、光影方案体系
+
+- **光影即叙事** — 6 套光影方案对应不同情绪段落,导演规划阶段应在段落层面确定光影基调方向,而非逐镜指定
+- **光源角度** — 默认 45° 侧逆光,模拟黄昏霞光效果
+
+| 光影方案 | 方案名 | 色调倾向 | 适用情绪 |
+|---|---|---|---|
+| A | 柔和晨光 | 暖黄底 + 均匀柔和光 | 全片开场、都市清晨 |
+| B | 暖调侧光 | 暖橙主调 + 局部暖光 | 日常温馨、咖啡厅/居家 |
+| C | 顶光 + 环境光 | 中性暖 + 柔和冷白 | 工作/学习段落 |
+| D | 逆光霞光 | 琥珀暖主导 + 暖粉点缀 | 黄昏浪漫、甜蜜段落 |
+| E | 霓虹光晕 | 暖橙 + 冷蓝背景 | 夜晚街景、浪漫段落 |
+| F | 暖光柔焦 | 暖黄主调 + 雾化效果 | 回忆/情感段落 |
+
+- **冷暖光分配** — 暖色调贯穿全片可用,冷色调(冷蓝 + 暖色对比)在夜晚或情绪转折后使用。导演可根据叙事需要调整冷暖切换点
+- **氛围方向映射** — 每场戏的氛围方向应能映射到上述光影方案(A-F)的某一方向,确保视觉一致性
+
+---
+
+## 三、质感方向
+
+- **赛璐珞纪实感** — 3D 动画渲染的核心:轮廓线清晰、上色明快、柔和光影层次
+- **高细节材质 + 柔和光影** — 这是画面质感的锚点。不是过度平滑,不是现代写实渲染,是 3D 动画特有的赛璐珞质感
+- **材质细节丰富** — 所有服化道的材质细节应可信:衣料的褶皱纹理、金属的卡通高光、食物的温暖光泽。禁止"过度写实"和"粗糙低模感"
+- **赛璐珞不等于扁平** — 3D 动画强调赛璐珞质感表达(清晰轮廓线、明快上色、柔和光影层次),通过光影与构图设计放大感染力,而非依赖过度复杂特效
+
+---
+
+## 四、都市场景空间元素
+
+3D 动画都市世界观特有的场景元素及其视觉叙事功能:
+
+- **门窗框/走廊/楼梯** — 天然的框架式构图道具,制造空间纵深与层次感
+- **街道/公园/天空** — 留白构图的天然载体,景即情:黄昏街道的长影 = 浪漫感、咖啡厅暖光 = 安全感、高楼窗景 = 都市距离感
+- **台灯/霓虹/窗光** — 都市世界的光源载体,台灯 = 暖/私密(方案 B)、霓虹 = 活力/浪漫(方案 E)、窗光 = 日常/静谧(方案 A)
+- **段落间用场景空镜过渡** — 本风格有丰富的场景资产(不同时段/天候/天气变体),段落衔接建议用场景空镜做情绪缓冲,不要硬切
+- **转折点用画面 + 动作** — 优先使用画面手段(光影变化、场景转换)配合动作设计,而非依赖对白解释
+
+---
+
+## 五、都市乐器与环境音
+
+3D 动画都市世界观下的声音元素约束:
+
+### 乐器选择
+
+- **钢琴** — 日常/温馨/回忆段落的核心乐器,最能表现 3D 动画的质感
+- **吉他** — 轻松/浪漫/街头段落,扫弦的温柔感适合都市氛围
+- **弦乐铺底** — 情感升华/离别段落,拉弦的细腻感适合情绪过渡
+- **电子音效** — 年轻感/节奏感段落,适合现代都市场景
+- 环境音是重要元素但不宜喧宾夺主
+
+### 乐器组合策略
+
+| 情绪阶段 | 乐器组合 |
+|---|---|
+| 平稳/开场/收尾 | 吉他独奏 或 电子音效 |
+| 日常温馨 | 钢琴 + 轻吉他 |
+| 情绪升华/浪漫 | 弦乐 + 钢琴 |
+| 紧张/急促 | 电子音效 + 弦乐衬底 |
+
+### 都市环境音
+
+- **典型环境音层次** — 城市车流声 / 咖啡店背景音 / 地铁提示音 / 风吹树叶声 / 人群交谈声 / 脚步声 / 电梯声
+- **每场戏标注 1-2 个核心环境音**,帮助后续音效设计。环境音层次越丰富,都市场景越有沉浸感
diff --git a/data/skills/art_skills/3D_anime_render/driector_skills/director_storyboard.md b/data/skills/art_skills/3D_anime_render/driector_skills/director_storyboard.md
new file mode 100644
index 0000000..a8cc96d
--- /dev/null
+++ b/data/skills/art_skills/3D_anime_render/driector_skills/director_storyboard.md
@@ -0,0 +1,194 @@
+---
+name: director_storyboard
+description: 导演分镜提示词技法 · 3D 动画渲染
+metaData: director_skills
+---
+
+# 分镜提示词 · 3D 动画渲染 · 风格专属技法
+
+---
+
+## 适用范围
+
+本 Skill 专用于**3D 动画渲染**风格的分镜提示词生成。
+
+---
+
+## 情绪 → 面容/眼神词映射
+
+| 情绪输入 | 面容词 | 眼神词 | 微表情补充 |
+|----------|--------|--------|-----------|
+| 心动 / 欣喜 | 嘴角微扬,脸颊微红 | 眼神明亮,目光温柔 | 眼睛弯月形,表情生动 |
+| 悲伤 / 失落 | 神情低落,眼眶微红 | 眼神黯淡,目光游离 | 眉心轻蹙,表情内敛 |
+| 惊讶 / 好奇 | 眼睛放大,表情生动 | 眼神集中,目光好奇 | 嘴巴微张,动作自然 |
+| 温柔 / 深情 | 神情柔和,眉眼温润 | 眼神专注,目光深情 | 嘴角微扬,表情克制温暖 |
+| 坚定 / 勇敢 | 神情严肃,眼神坚定 | 目光清澈,眼神专注 | 表情坚定,气质清亮 |
+| 害羞 / 羞涩 | 脸颊泛红,表情自然 | 目光低垂,不敢直视 | 手指轻触脸颊,动作轻柔 |
+| 温暖 / 感动 | 表情柔和,眼角带笑 | 眼神温暖,目光柔和 | 嘴角上扬,表情真诚 |
+| 孤独 / 怀念 | 神情安静,眼神悠远 | 目光放空,若有所思 | 表情平静,气质安静 |
+| 快乐 / 雀跃 | 笑容灿烂,眼睛明亮 | 眼神灵动,表情生动 | 身体前倾,动作轻快 |
+| 紧张 / 不安 | 表情略显僵硬,眉头微皱 | 眼神游离,目光不确定 | 手指捏紧,动作紧张 |
+
+---
+
+## 光影氛围词库(3D 动画渲染)
+
+### 时间段光线
+
+| 时间段 | 主光词 | 色调词 | 气氛词 |
+|--------|--------|--------|---------|
+| 清晨 | 柔和晨光,散射光线 | 暖黄调 + 淡蓝点缀 | 清新感,光线透过窗户 |
+| 午后 | 柔和斜侧光,漫射光线 | 暖调为主 | 光影斑驳,温暖感 |
+| 黄昏/日落 | 逆光霞光,橙色余晖 | 暖橙 + 粉色点缀 | 长影拉伸,浪漫感 |
+| 夜间 | 霓虹光晕,局部暖光 | 暖橙主调 + 冷色点缀 | 都市感,光影层次 |
+| 室内日常 | 暖调侧光,均匀柔和 | 暖黄为主 | 温馨感,家庭氛围 |
+| 城市空景 | 霞光漫射,柔和光晕 | 暖橙主调 | 开阔感,都市美学 |
+
+### 情绪光影
+
+| 情绪基调 | 光线类型 | 补充约束 |
+|----------|----------|---------|
+| 心动/温情 | 柔和侧光,暖调漫射 | 浅景深,背景轻微虚化 |
+| 悲伤/失落 | 冷调侧光,低调打光 | 面部局部暗部留存 |
+| 浪漫/甜蜜 | 逆光霞光,轮廓光 | 暖色光晕,背景轻微过曝 |
+| 怀旧/回忆 | 柔焦暖光,雾化效果 | 边缘轻微模糊,整体柔和 |
+| 日常/温馨 | 均匀漫射光,中性暖调 | 光线柔和,无明显阴影 |
+| 夜晚/都市 | 霓虹光晕,冷暖对比 | 明暗对比,层次清晰 |
+
+---
+
+## 场景质感约束词(按场景类型)
+
+| 场景类型 | 必加约束词 |
+|----------|-----------|
+| 现代都市 | 精细建筑结构,高楼大厦,玻璃幕墙,城市天际线 |
+| 咖啡厅/餐厅 | 木质桌椅,暖色灯光,窗外街景,咖啡杯细节 |
+| 居家空间 | 现代家具,暖色台灯,生活杂物细节,温馨氛围 |
+| 办公室 | 玻璃隔断,办公桌,电脑屏幕,现代办公椅 |
+| 街道/广场 | 柏油路面,路灯,行人,现代建筑 |
+| 商场/室内 | 大理石地面,玻璃橱窗,商业空间,照明灯光 |
+| 公园/绿地 | 草地纹理,树木阴影,长椅,远处建筑 |
+| 车内/公共交通 | 座椅布料,车窗反射,仪表盘光,窗外街景虚化 |
+
+---
+
+## 固定风格锚定词(所有输出必须包含)
+
+**3D 动画锚定(必选):**
+
+3D 动画渲染,赛璐珞质感,电影级打光,高细节材质
+
+**轮廓线条(所有输出必选):**
+
+清晰轮廓线,明快卡通渲染,轮廓线均匀一致,无断线无粗糙边缘
+
+**材质质感(含材质镜头时必选):**
+
+高细节材质,写实材质与卡通比例结合,材质纹理清晰,表面质感细腻
+
+**光影层次(含光影场景时必选):**
+
+柔和光影层次,明暗对比清晰,光效柔和自然,暖色调主导
+
+**氛围锚定(必选):**
+
+愉悦治愈氛围,3D 动画美学,温馨情感表达,现代都市风情
+
+**画质锁定词(所有输出必须包含,置于风格收尾之后):**
+
+模式A(中文)——默认:
+8K 超高清,线条清晰,材质细腻,色彩饱满,画面无杂色无噪点
+
+模式A(中文)——画内文字场景(画面描述中含招牌/标识等道具文字时):
+8K 超高清,线条清晰,材质细腻,色彩饱满,画面无杂色无噪点,招牌/标识等道具文字清晰可读
+
+模式B(英文)——默认:
+8K ultra HD, clear cel-shading, detailed materials, warm tones, no digital artifacts, no grain, no noise
+
+模式B(英文)——画内文字场景:
+
+8K ultra HD, clear cel-shading, detailed materials, warm tones, no digital artifacts, no grain, no noise
+
+模式B(英文)——画内文字场景:
+
+8K ultra HD, clear cel-shading, detailed materials, warm tones, no digital artifacts, no grain, no noise, legible text on signs and props
+
+**负向词模板(模式B 必须包含,置于提示词末尾):**
+
+> ⚠️ Seedream(模式A)**不支持负向提示词**,负向词仅适用于模式B。模式A 通过正向词中的质感锚定和画质锁定来保证画面质量。
+
+模式B(英文):
+no photorealism, no realistic rendering, no CG realism, no dark tones, no heavy shading, no oversaturated colors, no neon colors, no cyberpunk, no sci-fi elements, no futuristic design, no plastic look, no cartoon flat coloring without depth
+
+---
+
+## 美学禁止项(生成时严格规避)
+
+以下词汇/风格不得出现于输出提示词中:
+
+- ❌ 写实渲染/照片级真实感风格
+- ❌ 暗调/重阴影/过度对比风格
+- ❌ 高饱和荧光色/霓虹色系
+- ❌ 现代元素缺失(必须明确现代场景)
+- ❌ 卡通比例、大眼睛、Q版等变形描述
+- ❌ 赛博朋克/蒸汽朋克/架空西幻元素
+- ❌ 画外叠加文字(字幕、水印、标题卡、旁白叠字等 UI 层文字,画面必须为纯视觉画面)
+
+> 💡 **例外**:故事世界内的道具文字(招牌、路牌、标识、书籍等场景中自然存在的文字)**不属于禁止范围**。当分镜画面描述中包含此类内容时,应如实描写其存在并要求文字清晰。
+
+---
+
+## 完整生成示例
+
+> 以下为同一输入分别使用模式A和模式B的对照展示,实际使用时**仅输出其中一种**。
+
+### 输入(分镜表行数据)
+
+| 序号 | 画面描述 | 场景 | 关联资产名称 | 时长 | 景别 | 运镜 | 角色动作 | 情绪 | 光影氛围 |
+|------|---------|------|-------------|------|------|------|---------|------|----------|
+| 1 | 黄昏街道上,女孩站在路口,晚霞洒在发丝上 | 街道 | 女孩 | 5s | 中景 | 缓推 | 手提购物袋,侧身微笑望向远方 | 期待 / 温暖 | 黄昏霞光 + 暖调侧光 |
+
+### 示例输出A(模式A · Seedream)
+
+[Prompt]
+3D 动画渲染,赛璐珞质感,电影级打光,高细节材质,中景构图,人物半身入镜,清晰轮廓线,明快卡通渲染,轮廓线均匀一致,无断线无粗糙边缘,高细节材质,写实材质与卡通比例结合,材质纹理清晰,表面质感细腻,黄昏街道上,女孩站在路口,手提购物袋,侧身微笑望向远方,眼神期待又温暖,晚霞洒在发丝上,逆光霞光,暖橙主调,粉色点缀,柔和光影层次,明暗对比清晰,光效柔和自然,愉悦治愈氛围,3D 动画美学,温馨情感表达,现代都市风情,8K 超高清,线条清晰,材质细腻,色彩饱满,画面无杂色无噪点。
+Based on the reference image of 女孩, maintain consistent: face features, hairstyle, costume details. Generate a new scene: standing on a street corner at sunset, holding a shopping bag, smiling gently at the distance. Keep character appearance identical to reference.
+
+### 示例输出B(模式B · Nanobanana)
+
+```xml
+
+You are a 3D animation storyboard artist.
+Maintain strict visual continuity across all shots.
+
+
+Image [1]: 女孩 — long brown hair, gentle eyes, modern casual outfit, slim body shape
+
+
+- Same wardrobe, hairstyle, face features across ALL shots
+- Same environment, lighting style, color grade
+- Only framing, angle, action, expression may change
+- Do NOT introduce new characters not in reference images
+
+
+Medium shot, character standing on a street corner at sunset, holding a shopping bag with one hand, smiling gently at the distance, eyes filled with expectation and warmth, sunset backlight on hair, warm cel-shading, detailed materials, clear outline lines, cinematic lighting, warm tones, soft shallow depth of field, modern urban aesthetic, healing atmosphere, high-quality 3D animation, 8K ultra HD, clear line art, detailed materials, no digital artifacts, no grain.
+
+
+no photorealism, no realistic rendering, no CG realism, no dark tones, no heavy shading, no oversaturated colors, no neon colors, no cyberpunk, no sci-fi elements, no futuristic design, no plastic look, no cartoon flat coloring without depth
+
+```
+
+## 快速参考卡
+
+### 情绪 → 画面词速查
+
+| 情绪 | 面容关键词 | 光线匹配 |
+|------|-----------|---------|
+| 心动 | 嘴角微扬,脸颊微红 | 逆光霞光暖调 |
+| 悲伤 | 神情低落,眼眶微红 | 冷调侧光低调 |
+| 温柔 | 神情柔和,眉眼温润 | 均匀漫射暖光 |
+| 浪漫 | 眼神专注,目光深情 | 逆光暖调光晕 |
+| 感动 | 眼角带笑,表情真诚 | 暖调侧光柔和 |
+| 孤独 | 神情安静,目光放空 | 冷调侧光暗部 |
+| 快乐 | 笑容灿烂,眼睛明亮 | 暖调漫射光 |
+| 甜蜜 | 眼神明亮,表情生动 | 逆光轮廓光 |
diff --git a/data/skills/art_skills/3D_anime_render/driector_skills/director_storyboard_table_style.md b/data/skills/art_skills/3D_anime_render/driector_skills/director_storyboard_table_style.md
new file mode 100644
index 0000000..3598c18
--- /dev/null
+++ b/data/skills/art_skills/3D_anime_render/driector_skills/director_storyboard_table_style.md
@@ -0,0 +1,45 @@
+---
+name: director_storyboard_table_style
+description: 分镜表3D动画渲染约束 — 定义3D卡通渲染在分镜表中的光影氛围规范、光源角度、动作节奏、环境动态、运镜禁忌与转场禁忌。适用于任何叙事类型。
+metaData: director_skills
+---
+
+# 分镜表3D动画渲染约束 · 3D卡通渲染 · 技法参考
+
+---
+
+## 一、分镜表定位
+
+分镜表是导演将剧本转化为镜头语言的核心工具。以下仅提供 3D 卡通渲染风格在分镜表层面的约束规范。
+
+---
+
+## 二、光影与氛围
+
+- **同场戏光影统一** — 一场戏内不应出现两种以上光影方案,除非有明确的叙事转折(如关台灯→月光冷辉)
+- **情绪色盘绑定** — 每场戏至少绑定 1 个情绪场景(如相遇心动/日常温馨/离别感伤),并在镜头组内保持主色+辅色连续性
+- **光源角度规范** — 默认 45° 侧逆光,模拟黄昏霞光效果。描述光影时须区分正给/侧给的角度差异
+- **冷暖色调与叙事阶段匹配** — 前半段(日常/工作/学习)保持暖色调,冷色调(冷蓝 + 暖色对比)在夜晚或情绪转折后使用
+- **光影转场是高级手段** — 从自然光(A)渐变到室内暖光(B)= 日转夜的时间流逝。在分镜表中标注光影变化点
+
+---
+
+## 三、环境动态
+
+- **环境动态增加画面呼吸感** — 树叶飘动、云层流动、车流经过、雨滴落下、灯光闪烁。每 3-4 个镜头至少安排一个有环境动态的镜头,避免画面"死"掉
+- **都市环境元素优先** — 环境动态应选用都市世界观内的元素:树叶飘动、云层流动、车流经过、霓虹闪烁、窗帘飘动,禁止出现与 3D 动画风格不兼容的元素
+
+---
+
+## 四、3D 动画动作节奏
+
+- **动作要自然** — 所有人物动作默认自然节奏。起身、转身、抬手都应标注"自然"或"轻缓"
+- **甜宠互动用暗示** — 目光交汇、手指轻微触碰、递东西时的指尖接触。不要在分镜表里写大幅度双人交互,拆成暗示性的局部镜头
+- **3D 动画流畅感** — 3D 动画特有的"帧间流畅"风格,动作应连贯自然,避免生硬跳帧
+
+---
+
+## 五、运镜禁忌
+
+- **禁用快速运镜** — 甩镜、急推、快速切换与 3D 卡通渲染的气质冲突(除非是转场或强调)
+- **禁用花式转场** — 划屏、旋转、百叶窗等与本风格不兼容
diff --git a/data/skills/art_skills/3D_anime_render/images/1.png b/data/skills/art_skills/3D_anime_render/images/1.png
new file mode 100644
index 0000000..3c324a8
Binary files /dev/null and b/data/skills/art_skills/3D_anime_render/images/1.png differ
diff --git a/data/skills/art_skills/3D_anime_render/images/场景原始.png b/data/skills/art_skills/3D_anime_render/images/场景原始.png
new file mode 100644
index 0000000..e40f9c0
Binary files /dev/null and b/data/skills/art_skills/3D_anime_render/images/场景原始.png differ
diff --git a/data/skills/art_skills/3D_anime_render/images/场景衍生.png b/data/skills/art_skills/3D_anime_render/images/场景衍生.png
new file mode 100644
index 0000000..cf41e80
Binary files /dev/null and b/data/skills/art_skills/3D_anime_render/images/场景衍生.png differ
diff --git a/data/skills/art_skills/3D_anime_render/images/女生原始.png b/data/skills/art_skills/3D_anime_render/images/女生原始.png
new file mode 100644
index 0000000..ef0e180
Binary files /dev/null and b/data/skills/art_skills/3D_anime_render/images/女生原始.png differ
diff --git a/data/skills/art_skills/3D_anime_render/images/女生衍生.png b/data/skills/art_skills/3D_anime_render/images/女生衍生.png
new file mode 100644
index 0000000..cc6a51e
Binary files /dev/null and b/data/skills/art_skills/3D_anime_render/images/女生衍生.png differ
diff --git a/data/skills/art_skills/3D_anime_render/prefix.md b/data/skills/art_skills/3D_anime_render/prefix.md
new file mode 100644
index 0000000..ff3be92
--- /dev/null
+++ b/data/skills/art_skills/3D_anime_render/prefix.md
@@ -0,0 +1,117 @@
+# 全局美学基础 · 3D 动画渲染
+
+---
+严格遵循下方风格约束与全局规则,依据提示词模板格式生成提示词。仅输出提示词本身,不附加任何解释、说明或额外文本。
+## 一、风格基因
+
+| 维度 | 定义 |
+|---|---|
+| **一级风格** | 3D 动画渲染(3D Animation Rendering) |
+| **二级风格** | 赛璐珞质感 · 电影级光影层次 |
+| **情感基调** | 治愈治愈 · 明快温暖 |
+| **质感锚词** | 清晰轮廓线、高细节材质、柔和暖调 |
+
+---
+
+## 二、全局色彩盘(风格基线,不是硬锁)
+
+> 目标:统一审美而非限制创作。除「硬约束色」外,其余颜色默认优先使用,可在合理范围内偏移。
+
+### 色彩使用层级
+
+| 层级 | 约束强度 | 说明 |
+|---|---|---|
+| L1 硬约束 | 高 | 仅锁定角色识别核心:肤色、发色、主服底色的审美方向 |
+| L2 软约束 | 中 | 场景色、配饰色、点缀色优先参考色盘,可按镜头与剧情微调 |
+| L3 例外机制 | 低 | 浪漫/高潮/特殊场景可临时突破局部色彩,但需保留整体暖调逻辑 |
+
+| 序号 | 色名 | 色值 | 用途 |
+|---|---|---|---|
+| C1 | 暖橙 | #F5A673 | 肤色基底、黄昏、霞光 |
+| C2 | 樱花粉 | #F4D5D5 | 脸颊红晕、浪漫、点缀 |
+| C3 | 天空蓝 | #87AEC9 | 天空、服装、冷调点缀 |
+| C4 | 深棕发 | #4A3728 | 发色、眼瞳 |
+| C5 | 高级灰 | #8A8A8A | 建筑、阴影、中性色 |
+| C6 | 淡紫 | #D0C4D6 | 夜晚、梦幻、回忆 |
+| C7 | 琥珀暖 | #C9A96E | 黄昏、灯光、温暖感 |
+| C8 | 薄荷绿 | #9DC2A5 | 植物、自然、环境 |
+| C9 | 米白 | #F5F0E8 | 墙面、服装、背景 |
+| C10 | 暖黄 | #F5E6D0 | 室内、暖光、温馨感 |
+
+### 硬约束色(默认锁定)
+
+| 色项 | 对应色 | 规则 |
+|---|---|---|
+| 肤色基准 | C1 暖橙 | 默认优先,允许小幅明度/暖度微调 |
+| 发色/瞳色基准 | C4 深棕发 | 默认优先,允许深棕/深褐轻微偏移 |
+
+### 软约束色(推荐优先)
+
+> C2/C3/C5/C6/C7/C8/C9/C10 为推荐色域,用于服装、装饰、背景、暖光、环境等。可根据镜头氛围做同色相邻近调整。
+
+### 情绪色盘(导演对齐版)
+
+| 情绪场景 | 主色 | 辅色 | 光效与对比建议 | 画面关键词 |
+|---|---|---|---|---|
+| 日常温馨 | C10 暖黄 | C9 米白 + C5 高级灰 | 均匀暖调,柔和对比 | 生活感、温暖、平静 |
+| 心动瞬间 | C2 樱花粉 | C1 暖橙 + C10 暖黄 | 中近景提暖,肤色微红 | 羞涩、靠近感、暧昧 |
+| 都市风景 | C9 米白 | C5 高级灰 + C3 天空蓝 | 明暗层次清晰,中性为主 | 都市、开阔、自然 |
+| 黄昏浪漫 | C7 琥珀暖 | C1 暖橙 + C2 樱花粉 | 逆光霞光,轮廓光 | 浪漫、温暖、情感 |
+| 夜晚街景 | C3 天空蓝 | C6 淡紫 + C1 暖橙 | 冷调为主,暖色点缀 | 都市、静谧、活力 |
+| 室内日常 | C10 暖黄 | C9 米白 + C5 高级灰 | 暖光柔焦,温馨感 | 居家、舒适、安全 |
+| 回忆/闪回 | C1 暖橙 | C5 高级灰 + C7 琥珀暖 | 柔焦雾化,轻微褪色 | 怀旧、旧忆、梦幻 |
+| 离别感伤 | C5 高级灰 | C3 天空蓝 + C1 暖橙 | 降饱和,拉大冷暖反差 | 距离感、克制、静压 |
+
+### 情绪色盘使用规则
+
+| 编号 | 规则 |
+|---|---|
+| E1 | 每条提示词至少指定 1 个「情绪场景」并绑定主色 + 辅色组合 |
+| E2 | 单镜头主色不超过 2 个,避免颜色叙事失焦 |
+| E3 | 情绪切换时优先调整光比与色温,再调整饱和度 |
+| E4 | 治愈向默认遵循「暖底 + 冷暖对比」:暖色铺底,冷色用于背景/阴影 |
+| E5 | 若与剧情冲突,以情绪色盘优先于通用推荐色,但不得突破严禁项 |
+
+### 色温约束
+
+| 参数 | 值 | 说明 |
+|---|---|---|
+| 整体色温 | 偏暖 4800-5200K(推荐) | 温暖治愈主基调 |
+| 肤色色温 | 微暖 5000-5400K(推荐) | 暖橙但有生命感 |
+| 对比度 | 中等(建议保持) | 明暗层次清晰,但不过分强烈 |
+| 饱和度 | 中高 65-80%(建议区间) | 3D 动画高级色调 |
+
+### 容差与例外
+
+| 项目 | 建议容差 |
+|---|---|
+| 色相偏移 | ±8° |
+| 饱和度偏移 | ±10% |
+| 明度偏移 | ±12% |
+
+> 例外场景:浪漫、黄昏、情绪高潮镜头可使用更暖或更高饱和局部色块;但禁止高饱和荧光色与现代色彩语言入镜。
+
+---
+
+## 三、全局约束规则
+
+### 必守规则(所有技能继承)
+
+| 编号 | 规则 |
+|---|---|
+| R1 | 必须包含「3D 动画渲染 + 赛璐珞质感」风格锚定词 |
+| R2 | 必须声明「清晰轮廓线 + 高细节材质」 |
+| R3 | 面部必须使用「写实材质与卡通比例结合 + 柔和光影」 |
+| R4 | 发丝必须使用「清晰轮廓线 + 自然光影层次」 |
+| R5 | 光影必须声明「电影级打光 + 柔和光影层次」 |
+
+### 严禁项(所有技能继承)
+
+| 编号 | 严禁内容 |
+|---|---|
+| X1 | 严禁「写实渲染/照片级真实感」 |
+| X2 | 严禁「暗调/重阴影/过度对比」 |
+| X3 | 严禁「高饱和荧光色/霓虹色」 |
+| X4 | 严禁「面部变形/比例失调/肢体异常」倾向词 |
+| X5 | 严禁「现代元素缺失」(必须明确现代场景) |
+| X6 | 严禁「赛博朋克/蒸汽朋克/架空西幻元素」 |
\ No newline at end of file
diff --git a/data/skills/art_skills/3D_chinese_traditional/README.md b/data/skills/art_skills/3D_chinese_traditional/README.md
new file mode 100644
index 0000000..7b79980
--- /dev/null
+++ b/data/skills/art_skills/3D_chinese_traditional/README.md
@@ -0,0 +1,33 @@
+# 国风3D风格说明
+
+本风格专为"国风3D"题材打造,所有美术提示词、规范和生成内容均严格限定于:
+
+- **国风3D渲染**:以三维建模渲染技术呈现中国传统美学,涵盖古风建筑、山水园林、宫廷服饰等
+- **3D精细质感**:高精度模型、PBR材质渲染、光影层次丰富、细节清晰可辨
+- **中国传统色彩**:青绿、朱红、靛蓝、金黄等传统色盘,色彩和谐典雅
+- **东方美学氛围**:意境深远、虚实相生、留白构图、诗意空间
+- **古风人物造型**:3D古风建模、服饰华丽精致、妆容典雅、发型考究
+- **电影级光影**:体积光、环境光遮蔽、全局光照、景深虚化等电影渲染效果
+
+## 适用范围
+
+- 国风3D题材的AI美术生成(角色、场景、道具、分镜等)
+- 需要3D渲染质感、东方美学、古风意境的视觉创作
+- 游戏美术、影视概念设计、国风动画等应用场景
+
+## 严禁内容
+
+- 写实摄影/照片级真实感(除非特别说明)
+- 西方奇幻/哥特/维多利亚风格
+- 赛博朋克/科幻/现代都市元素
+- 低精度模型/粗糙建模/贴图模糊
+- 过度饱和/荧光色/数码感强
+
+## 风格体验
+
+在本风格下,您将体验到:
+
+- 角色造型典雅精致,3D建模细腻,服饰纹理清晰,发丝飘逸
+- 场景气势恢宏,建筑细节丰富,材质质感真实,光影氛围诗意
+- 道具器物考究,材质工艺精细,色彩和谐统一
+- 分镜与渲染均强调3D质感、东方意境、电影级光影
\ No newline at end of file
diff --git a/data/skills/art_skills/3D_chinese_traditional/art_prompt/art_character.md b/data/skills/art_skills/3D_chinese_traditional/art_prompt/art_character.md
new file mode 100644
index 0000000..43f6e7f
--- /dev/null
+++ b/data/skills/art_skills/3D_chinese_traditional/art_prompt/art_character.md
@@ -0,0 +1,208 @@
+---
+name: art_character
+description: 人物基础形象生成 · 约束手册
+metaData: art_skills
+---
+
+# 人物基础形象生成 · 约束手册
+
+---
+
+## 一、基础形象原则
+
+1. **造型即灵魂** — 角色造型是核心锚点,国风3D造型,线条流畅
+2. **底模即基础** — 基础打底服装 + 素颜,后续服化均为叠加层
+3. **四视图一致** — 面容/体型/发型/基础服装跨视图高度统一
+4. **古典气质** — 无妆状态仍需体现角色气质(典雅/温婉/英气)
+
+---
+
+## 二、面容约束
+
+### 女性面容
+
+| 部位 | 约束 | 提示词 |
+|---|---|---|
+| 脸型 | 鹅蛋脸、线条柔和、下巴圆润 | 鹅蛋脸、柔和线条、圆润下巴 |
+| 眼型 | 凤眼、眼角微挑、眼神清澈 | 凤眼、眼角微挑、清澈眼神 |
+| 眉型 | 柳叶眉、眉形柔和、自然眉色 | 柳叶眉、柔和眉形、自然眉色 |
+| 鼻型 | 小巧鼻梁、鼻头圆润 | 小巧鼻梁、圆润鼻头 |
+| 唇型 | 樱桃小口、唇色自然红 | 樱桃小口、自然红唇色 |
+| 气质 | 典雅温婉、3D古风建模 | 典雅温婉、3D古风、古典气质 |
+
+### 男性面容
+
+| 部位 | 约束 | 提示词 |
+|---|---|---|
+| 脸型 | 国字脸、线条硬朗 | 国字脸、线条硬朗、下颌分明 |
+| 眼型 | 剑眉星目、眼神清亮 | 剑眉星目、清亮眼神 |
+| 眉型 | 剑眉、眉形英挺、自然眉色 | 剑眉、英挺眉形、自然眉色 |
+| 鼻型 | 挺直鼻梁、鼻翼适中 | 挺直鼻梁、适中鼻翼 |
+| 唇型 | 唇形清晰、唇色自然 | 唇形清晰、自然唇色 |
+| 气质 | 儒雅英气、3D古风建模 | 儒雅英气、3D古风、古典气质 |
+
+---
+
+## 三、肤感约束
+
+### 女性
+
+| 项目 | 约束 | 提示词 |
+|---|---|---|
+| 肤色 | 粉白基调、全身均匀、白皙透亮 | 粉白基调、白皙透亮、3D建模肤色 |
+| 光泽 | PBR材质渲染、自然光泽、非哑光 | PBR材质渲染、自然光泽、柔和质感 |
+| 质感 | 高精度建模、纹理清晰、边缘柔和 | 高精度建模、纹理清晰、边缘柔和 |
+| 露肤 | 面部/颈部/手部 | 手部细腻、颈部线条柔和 |
+
+### 男性
+
+| 项目 | 约束 | 提示词 |
+|---|---|---|
+| 肤色 | 白皙基调、全身均匀、健康质感 | 白皙基调、健康质感、3D建模肤色 |
+| 光泽 | PBR材质渲染、自然光泽 | PBR材质渲染、自然光泽、柔和质感 |
+| 质感 | 高精度建模、干净利落 | 高精度建模、3D渲染、柔和 |
+
+---
+
+## 四、体型约束
+
+### 女性
+
+| 项目 | 约束 | 提示词 |
+|---|---|---|
+| 身高 | 由角色设定指定,默认范围 160-170cm | {身高}cm tall、{身高描述如:tall elegant woman} |
+| 头身比 | 七头身至七头半身,古典比例 | 7 heads tall proportion、古典比例 |
+| 肩颈 | 天鹅颈、肩颈线优美 | 天鹅颈、肩颈优美 |
+| 手部 | 纤长白皙、手指自然 | 纤长白皙、自然手指 |
+| 体态 | 古典气质、优雅挺拔 | 体态优雅、身姿挺拔 |
+
+### 男性
+
+| 项目 | 约束 | 提示词 |
+|---|---|---|
+| 身高 | 由角色设定指定,默认范围 175-185cm | {身高}cm tall、{身高描述如:tall imposing man} |
+| 头身比 | 七头身至七头半身,古典比例 | 7 heads tall proportion、古典比例 |
+| 肩颈 | 宽阔肩部、颈部有力 | 宽阔肩部、颈部有力 |
+| 手部 | 骨节分明、手指自然 | 骨节分明、自然手指 |
+| 体态 | 儒雅英气、挺拔端正 | 体态英气、身姿挺拔 |
+
+---
+
+## 五、基础发型约束
+
+> 仅定义自然发型,发饰在服化衍生环节叠加。
+
+### 女性
+
+| 项目 | 约束 | 提示词 |
+|---|---|---|
+| 发色 | 墨黑、禁其他颜色 | 墨黑长发、青丝如瀑 |
+| 发长 | 长发及腰 | 长发及腰、长发 |
+| 发质 | 高精度建模、发丝清晰 | 高精度建模、清晰发丝 |
+| 造型 | 自然散发、无发饰 | 长发自然散落、无发饰 |
+
+### 男性
+
+| 项目 | 约束 | 提示词 |
+|---|---|---|
+| 发色 | 墨黑、禁其他颜色 | 墨黑长发、青丝如墨 |
+| 发长 | 长发及肩或束发 | 长发及肩、束发 |
+| 发质 | 高精度建模、发丝清晰 | 高精度建模、清晰发丝 |
+| 造型 | 自然散发或半束、无发冠 | 长发自然散落、半束长发 |
+
+---
+
+## 六、基础服装约束
+
+> 基础服装无特殊约束,女性为素色古装长裙,男性为素色古装长衫。正式服饰在服化衍生环节叠加。
+
+### 女性基础服装
+
+素色古装长裙,颜色以基础色为主,无花纹装饰。
+
+### 男性基础服装
+
+素色古装长衫,颜色以基础色为主,无花纹装饰。
+
+### 着装统一规则
+
+- 服装风格统一,确保后续服饰叠加无色彩干扰
+- 除面部/手部/颈部外基本覆盖
+- 四视图服装款式完全一致
+- 基础服装仅为安全打底,焦点在面容与体态
+
+---
+
+## 七、四视图设定图规范
+
+### 视图定义
+
+| 位置 | 视图 | 角度 | 景别 | 要求 | 提示词 |
+|---|---|---|---|---|---|
+| 左一 | 人像特写 | 正面平视 | 头顶至锁骨 | 从头顶到锁骨完整展示,面部占60%+,五官清晰 | portrait closeup、face detail |
+| 左二 | 正视图 | 正面 0° | 全身立像 | 面对镜头、双臂自然、从头顶到脚底完整展示 | front view、full body |
+| 右二 | 侧视图 | 右侧 90° | 全身立像 | 纯侧面轮廓清晰、从头顶到脚底完整展示 | side view、profile、full body |
+| 右一 | 后视图 | 后方 180° | 全身立像 | 后脑/背部/发尾/脚部清晰、从头顶到脚底完整展示 | back view、rear view、full body |
+
+### 画面规范
+
+| 项目 | 约束 |
+|---|---|
+| 布局 | 同一画面从左至右并排四视图 |
+| 背景 | 素灰纯色 #B8B8B8 |
+| 站姿 | 自然站立、双脚平行微分、双臂自然下垂 |
+| 全身展示 | 全身立像必须从头顶到脚底完整入画,严禁裁切 |
+| 特写展示 | 人像特写必须从头顶到锁骨完整入画,严禁裁切 |
+| 表情 | 中性微表情,符合角色气质 |
+| 光线 | 均匀柔光,前方主光 + 双侧补光,无硬阴影 |
+| 一致性 | 四视图的肤色/体型/发型/面容/基础服装完全一致 |
+| 画面比例 | 建议 4:1 或 3:1 |
+
+---
+
+## 八、提示词模板
+
+{性别}角色四视图设定图,3D渲染风格,高精度建模,PBR材质,国风3D,电影级光影,
+character design sheet, character turnaround,
+{脸型}, {眼型}, {鼻型}, {唇型}, {整体气质}, 素颜状态,
+{肤色}, PBR材质渲染, 3D渲染通透质感, 高精度建模, 光影层次丰富,
+{身高描述, 如:165cm tall, tall elegant woman}, {头身比, 如:7 heads tall proportion}, {身材描述}, {体态描述},
+{发色}{发长}, 高精度发丝清晰, {基础造型}, 无发饰,
+(女性: 素色古装长裙 / 男性: 素色古装长衫), 基础色, 无花纹装饰,
+同一画面左至右并排:人像特写+正视图+侧视图+后视图,
+人像特写从头顶到锁骨完整展示, 不裁切头顶, head to collarbone complete,
+全身立像从头顶到脚底完整展示, full body head to toe, 不裁切头顶和脚部,
+自然站立, 素灰纯色背景, 均匀柔光, 无硬阴影,
+四视图一致性, 3D古风建模清晰, 高精度建模清晰,
+图中不要有任何文字
+
+
+---
+
+## 九、约束规则
+
+### 必守
+
+| 编号 | 规则 |
+|---|---|
+| R1 | 必须为「素颜状态」 |
+| R2 | 必须声明基础服装(女性:素色古装长裙;男性:素色古装长衫) |
+| R3 | 必须声明「无发饰、无配饰」 |
+| R4 | 必须指定「素灰纯色背景」 |
+| R5 | 必须指定「四视图一致性」 |
+| R6 | 全身立像必须从头顶到脚底完整展示,严禁裁切 |
+| R7 | 必须声明角色身高并通过头身比换算约束全身比例(女性默认 160-170cm/7头身,男性默认 175-185cm/7头身) |
+| R8 | 人像特写必须从头顶到锁骨完整展示,严禁裁切头顶 |
+
+### 严禁
+
+| 编号 | 严禁 |
+|---|---|
+| X1 | 基础服装以外的任何服装/配饰/妆容 |
+| X2 | 正顶硬光/正底光/冷色光 |
+| X3 | 过度美白至无血色 / 肤色发灰 |
+| X4 | 复杂场景背景(必须纯色) |
+| X5 | 夸张表情/动态姿势 |
+| X6 | 全身立像裁切头顶或脚底,必须从头到脚完整入画 |
+| X7 | 人像特写裁切头顶,必须从头顶到锁骨完整入画 |
+| X8 | 忽略身高和头身比约束,身高必须明确声明并通过头身比换算体现全身比例 |
\ No newline at end of file
diff --git a/data/skills/art_skills/3D_chinese_traditional/art_prompt/art_character_derivative.md b/data/skills/art_skills/3D_chinese_traditional/art_prompt/art_character_derivative.md
new file mode 100644
index 0000000..7173b9f
--- /dev/null
+++ b/data/skills/art_skills/3D_chinese_traditional/art_prompt/art_character_derivative.md
@@ -0,0 +1,315 @@
+---
+name: art_character_derivative
+description: 人物衍生资产生成 · 约束手册
+metaData: art_skills
+---
+
+# 人物衍生资产生成 · 约束手册
+
+---
+
+## 一、叠加原则
+
+1. **面容不变** — 叠加后五官必须与底模完全一致,禁止面容偏移
+2. **姿态不变** — 保持底模自然站立姿态,禁止任何姿态/动作/体态变化
+3. **逐层可控** — 每层独立描述,便于按层替换(换装不换妆)
+4. **风格统一** — 所有服化元素服从同一美学体系
+5. **质感不降** — 叠加后质感标准不低于底模
+6. **纯服化范畴** — 仅叠加妆容/发型/服饰/配饰,禁止引入道具、场景、环境、动作
+
+---
+
+## 二、叠加层级
+
+| 层级 | 内容 | 说明 |
+|---|---|---|
+| L0 | 底模 | 基础形象底模,不修改 |
+| L1 | 妆容(决策层) | 先分析用户线索,再决策「基础妆 / 轻妆 / 正式妆」强度 |
+| L2 | 发型造型 | 发髻/束发/编发 + 发饰 |
+| L3 | 中衣/内搭 | 替换白色基础中衣 |
+| L4 | 外衣/主服 | 古风华服/礼服/常服等 |
+| L5 | 配饰 | 头饰/耳饰/项饰/腰饰/手饰 |
+
+> **范畴边界**:人物衍生资产仅包含 L0–L5 层级(服化妆造),不包含道具(伞/剑/扇/书/灯笼等手持物)、场景环境(室内/室外/天气等)、姿态动作(行走/回眸/举手等)。这些属于其他资产类型的范畴。
+
+---
+
+## 三、妆容约束(L1)
+
+### 底模到衍生妆造策略(关键)
+
+> 角色底模虽为素颜,但衍生资产默认进入妆造流程。系统应根据用户提供的线索分析妆造需求,并在基础妆、轻妆、正式妆之间决策强度,而不是保持素颜。
+
+### L1 线索分析与妆容决策
+
+| 步骤 | 处理内容 | 决策结果 |
+|---|---|---|
+| S1 | 提取用户线索:面部状态词、情绪词、强度词 | 形成妆容需求摘要 |
+| S2 | 过滤非妆容线索:道具/场景/动作/姿态词不作为上妆依据 | 防止误判 |
+| S3 | 匹配妆容风格矩阵并给出强度档 | 基础妆 / 轻妆 / 正式妆 |
+| S4 | 生成最终 L1 提示词 | 只输出结论,不输出分析过程 |
+
+### 线索到妆容映射(执行口径)
+
+| 线索类型 | 典型线索 | L1 决策 |
+|---|---|---|
+| 无明显面部强调线索 | 仅服饰/发型变化,未强调情绪与状态 | 基础妆 |
+| 轻微面部线索 | 轻柔、含笑、睫毛轻颤、气色微提 | 轻妆(极淡) |
+| 明确日常线索 | 日常、外出、休闲 | 基础妆(自然清透) |
+| 明确正式仪式线索 | 大婚、典礼、重要场合 | 正式妆(精致华贵) |
+
+> 判定原则:所有衍生资产都要有妆造;先看面部线索决定强度与风格,道具、场景、姿态变化不得单独抬高妆容强度。
+
+### 女性妆容风格矩阵
+
+| 风格 | 适用场景 | 核心提示词 |
+|---|---|---|
+| 清雅素妆 | 日常、初遇、闺中 | 妆容清雅、淡扫蛾眉、素妆清颜 |
+| 宫廷贵气妆 | 宫廷、正式、权力 | 妆容精致、眉形锋利、唇色红润 |
+| 浪漫桃花妆 | 约会、心动、甜蜜 | 桃花妆、眼尾微红、唇色水润 |
+| 大婚盛妆 | 大婚、典礼 | 浓妆华美、朱唇凤眼 |
+| 节日庆典 | 庆典、聚会 | 色彩明亮、粉彩妆容 |
+
+### 通用底肤(所有妆容共享)
+
+| 项目 | 约束 | 提示词 |
+|---|---|---|
+| 质感 | PBR材质渲染、自然透亮 | PBR材质、自然光泽、柔和质感 |
+| 白度 | 粉白基调、通透不惨白 | 粉白基调、白皙透亮 |
+| 内透光 | 从内向外柔光感 | 内透光感、皮肤通透发光 |
+| 禁止 | 哑光/死白/蜡感/油光/过曝 | — |
+
+### 基础妆细化(默认档)
+
+| 项目 | 约束 | 提示词 |
+|---|---|---|
+| 眉部 | 顺着底模眉形轻修,不改变眉型 | 自然修眉、眉形干净 |
+| 眼部 | 极淡眼部修饰,强调清透与有神 | 眼部清透、极淡眼影 |
+| 面颊 | 极淡气色提亮,粉彩腮红 | 面颊气色自然、粉彩腮红 |
+| 唇部 | 浅粉或朱红润色,保持克制 | 唇色自然润泽、浅粉唇色 |
+| 整体 | 看得出有妆造,但妆感非常轻 | 基础妆、自然妆感、柔和质感 |
+
+### 男性妆容
+
+| 项目 | 约束 | 提示词 |
+|---|---|---|
+| 底肤 | PBR材质渲染、白皙透亮、清爽自然 | PBR材质、白皙透亮、自然光泽 |
+| 原则 | 伪素颜——看着没化妆但皮肤极好 | 伪素颜、天生好皮 |
+| 眉毛 | 自然浓眉、不画眉 | 剑眉自然、眉形英挺 |
+| 唇色 | 自然血色、微润 | 唇色自然、血色感 |
+
+---
+
+## 四、发型造型约束(L2)
+
+### 女性造型类型
+
+| 造型 | 描述 | 适用 | 提示词 |
+|---|---|---|---|
+| 高髻云鬓 | 高髻盘发 + 发饰 | 宫廷、正式 | 高髻云鬓、精致盘发 |
+| 双环髻 | 双环对称、少女 | 年轻角色 | 双环髻、少女风格 |
+| 堕马髻 | 侧偏低髻、慵懒 | 日常、休闲 | 堕马髻、慵懒侧髻 |
+| 披发 | 长发全散、自然 | 闺中、私密 | 长发散落、自然垂落 |
+| 束发高马尾 | 高束干练 | 习武、行动 | 高束马尾、干练利落 |
+| 半扎发 | 发顶半扎 + 后方垂发 | 日常、出行 | 半扎云髻、自然垂发 |
+
+### 女性发饰
+
+| 项目 | 约束 | 提示词 |
+|---|---|---|
+| 风格 | 华丽精致、与服饰配套 | 华丽发饰、精致工艺 |
+| 材质 | 金银 + 珠玉 + 流苏 | 金银发簪、珠翠满头 |
+| 工艺 | 高精度建模、细节清晰 | 高精度工艺、精细雕刻 |
+
+### 男性造型类型
+
+| 造型 | 适用 | 提示词 |
+|---|---|---|
+| 束发半冠 | 日常、文人 | 束发半冠、玉簪束发 |
+| 全冠高束 | 正式、朝堂 | 全冠高束、玉冠束发 |
+| 散发披肩 | 私密、受伤 | 散发披肩、长发如墨 |
+| 束发高马尾 | 战斗、习武 | 高束战发、马尾利落 |
+
+---
+
+## 五、服饰约束(L3+L4)
+
+### 女性服饰矩阵
+
+| 风格 | 款式 | 适用 | 提示词 |
+|---|---|---|---|
+| 古装长裙 | 长裙、飘逸 | 日常、闺中 | 古装长裙、飘逸衣裙 |
+| 宫廷礼服 | 礼服、华丽 | 宫廷、正式 | 宫廷礼服、华贵裙装 |
+| 轻便常服 | 短衫、轻便 | 行动、习武 | 轻便常服、短衫 |
+| 寝衣 | 薄纱内衫、素色 | 室内、夜间 | 寝衣、宽松舒适 |
+| 大婚嫁衣 | 凤冠霞帔、层叠红装 | 婚礼 | 凤冠霞帔、层叠红裳 |
+
+### 女性服饰通用约束
+
+| 项目 | 约束 | 提示词 |
+|---|---|---|
+| 主色 | 中国传统色调为默认 | 中国传统色调衣服、精致服饰 |
+| 材质 | 丝绸 + 刺绣 + 珠光面料 | 丝绸质感、刺绣细节 |
+| 质感 | 纹理必须超清晰 | 衣服质感清晰、纹理超清晰 |
+| 肩部 | 披帛/云肩/装饰 | 云肩华美、肩头有装饰 |
+| 层次 | 多层叠穿、层次分明 | 多层叠穿、层次分明 |
+
+### 男性服饰矩阵
+
+| 风格 | 适用 | 提示词 |
+|---|---|---|
+| 文人士子装 | 日常、书房 | 文人士子装、长衫 |
+| 武将劲装 | 战斗、练武 | 武将劲装、战袍 |
+| 朝服 | 朝堂、典礼 | 朝服、正式礼服 |
+| 常服便装 | 休闲、私密 | 常服便装、简约风格 |
+| 礼服 | 正式、庆典 | 礼服、华贵精致 |
+
+---
+
+## 六、配饰约束(L5)
+
+### 女性配饰
+
+| 类型 | 约束 | 提示词 |
+|---|---|---|
+| 头饰 | 华丽精致、不单薄 | 华丽头饰、珠翠满头 |
+| 耳饰 | 垂坠流苏/玉珰 | 流苏耳环、玉珰垂坠 |
+| 项饰 | 璎珞/项圈 | 璎珞华美、精致项圈 |
+| 腰饰 | 宫绦/玉佩 | 宫绦飘逸、腰间玉佩 |
+| 手饰 | 玉镯/臂钏 | 玉镯通透、臂钏精致 |
+
+### 男性配饰
+
+| 类型 | 约束 | 提示词 |
+|---|---|---|
+| 发冠 | 玉冠/金冠、精致 | 玉冠束发 |
+| 腰封 | 宽腰封/革带 | 宽腰封、质感分明 |
+| 玉佩 | 通透温润 | 腰间玉佩 |
+| 兵器 | 佩剑/扇/笛(可选) | 长剑在侧、折扇半掩 |
+
+---
+
+## 七、服化组合速查
+
+| 场景 | 妆容 | 发型 | 服饰 | 配饰 |
+|---|---|---|---|---|
+| 闺中日常 | 清雅素妆 | 披发/半扎发 | 古装长裙 | 中等 |
+| 初次相遇 | 清雅素妆 | 半扎发/堕马髻 | 古装长裙 | 中偏多 |
+| 浪漫互动 | 浪漫桃花妆 | 半扎发/堕马髻 | 古装长裙/轻便 | 中等 |
+| 正式亮相 | 宫廷贵气妆 | 高髻云鬓 | 宫廷礼服 | 极繁 |
+| 夜间私密 | 清雅/桃花妆 | 披发/堕马髻 | 寝衣 | 极简 |
+| 大婚典礼 | 大婚盛妆 | 高髻云鬓 | 嫁衣 | 极繁 |
+| 习武行动 | 素妆(极淡) | 束发马尾 | 轻便常服 | 简 |
+
+---
+
+> **🔍 未覆盖场景推断规则**
+>
+> 当用户描述的场景/情境不在上表时,根据本风格核心基因自行推断:
+>
+> | 推断维度 | 国风3D渲染基因 |
+> |---|---|
+> | 妆容强度 | 默认清雅素妆;宫廷/权力/正式→宫廷贵气妆;心动/甜宠→浪漫桃花妆;大婚/典礼→大婚盛妆;节日聚会→节日庆典妆 |
+> | 发型 | 日常/闺中→半扎发或堕马髻;宫廷/正式→高髻云鬓;私密/夜晚→披发;习武/行动→束发马尾 |
+> | 服饰 | 古装为基调;情感场景→飘逸长裙;权力/正式→宫廷礼服;行动→轻便常服;PBR材质始终保持 |
+> | 配饰繁度 | 日常→中等;正式/宫廷→极繁(金银发饰+璎珞+玉佩);私密→极简;行动→简 |
+> | 质感基准 | PBR材质+电影级光影始终锁定;体积感与光泽感优先于平面装饰感 |
+
+## 八、四视图设定图规范
+
+> 衍生服化叠加后仍需输出四视图设定图,确保服化妆造在各角度的一致性。
+
+### 视图定义
+
+| 位置 | 视图 | 角度 | 景别 | 要求 | 提示词 |
+|---|---|---|---|---|---|
+| 左一 | 人像特写 | 正面平视 | 面部至锁骨 | 面部占60%+,五官/妆容清晰 | portrait closeup、face detail、makeup detail |
+| 左二 | 正视图 | 正面 0° | 全身立像 | 面对镜头、服饰正面全貌 | front view、height mark |
+| 右二 | 侧视图 | 右侧 90° | 全身立像 | 纯侧面轮廓、服饰侧面层次 | side view、profile、height mark |
+| 右一 | 后视图 | 后方 180° | 全身立像 | 后脑发饰/背部服饰/发尾清晰 | back view、rear view、height mark |
+
+### 画面规范
+
+| 项目 | 约束 |
+|---|---|
+| 布局 | 同一画面从左至右并排四视图 |
+| 背景 | 素灰纯色 #B8B8B8 |
+| 站姿 | 自然站立、双脚平行微分、双臂自然下垂或微展(**禁止任何姿态变化**) |
+| 表情 | 符合妆容风格的微表情(如清雅素妆→淡然、桃花妆→含笑),仅限面部微表情,不涉及肢体动作 |
+| 光线 | 均匀柔光,前方主光 + 双侧补光,无硬阴影 |
+| 一致性 | 四视图的面容/妆容/发型/发饰/服饰/配饰完全一致 |
+| 画面比例 | 建议 4:1 或 3:1 |
+
+---
+
+## 九、提示词模板
+
+### 输出格式约束
+
+| 项目 | 约束 |
+|---|---|
+| 输出内容 | **仅输出提示词文本**,不输出任何其他内容 |
+| 禁止输出 | 速查表、分层构建方案、视觉约束表、禁止事项表、衍生方案、输出建议、核心要素表等一切非提示词内容 |
+| 禁止场景 | 人物衍生资产**不包含场景/环境描述**,不输出任何场景/环境/天气/背景叙事内容(场景属于场景资产范畴) |
+| 禁止道具 | **不包含任何道具交互**,不输出伞/剑/扇/书/灯笼/酒杯等手持物或交互物(道具属于道具资产范畴) |
+| 禁止姿态变化 | **不改变底模姿态**,不输出行走/回眸/举手/侧身/奔跑等任何动作或体态变化,保持自然站立 |
+| 格式 | 直接输出可用的提示词代码块,无需标题、表格、解释、方案对比 |
+
+### 完整服化叠加(四视图)
+
+以角色基础形象图为底图,img2img叠加服化妆造,
+3D渲染风格,高精度建模,PBR材质,国风3D,电影级光影,
+古风{性别}角色四视图设定图,3D渲染,高精建模,8K,超保真
+character design sheet, character turnaround,
+保持基础形象面容不变,{整体气质},
+【L1·妆容】根据用户线索决策:{基础妆/轻妆/正式妆};使用 {妆容风格}, PBR材质渲染, {眉妆}, {眼妆}, {唇妆},
+【L2·发型】{造型类型}, 高精度发丝清晰, {发饰描述},
+【L3+L4·服饰】{主色}{款式}, {材质}, {装饰工艺}, 衣服质感清晰, PBR材质渲染,
+【L5·配饰】{头饰}, {耳饰}, {项饰}, {腰饰},
+同一画面左至右并排:人像特写+正视图+侧视图+后视图,
+自然站立, 素灰纯色背景, 均匀柔光, 无硬阴影,
+四视图一致性, 3D古风建模清晰, 高精度建模清晰,
+图中不要有任何文字
+
+---
+
+## 十、约束规则
+
+### 必守
+
+| 编号 | 规则 |
+|---|---|
+| R1 | 叠加后面容必须与底模一致 |
+| R2 | 服饰必须用「衣服质感清晰 + PBR材质渲染」 |
+| R3 | 女性配饰必须「华丽精致 + 工艺精细」 |
+| R4 | 妆容/发型/服饰/配饰风格统一 |
+| R5 | 必须输出四视图设定图(人像特写+正视图+侧视图+后视图) |
+| R6 | 必须指定「素灰纯色背景」 |
+| R7 | 必须指定「四视图一致性」 |
+| R8 | **仅输出提示词**——禁止输出速查表/分层方案/视觉约束/禁止事项/衍生方案/输出建议等任何非提示词内容 |
+| R9 | **禁止包含场景描述**——人物衍生资产不涉及场景/环境/天气/背景叙事,场景属于独立资产类型 |
+| R10 | **禁止道具交互**——不包含任何手持物/交互物(伞/剑/扇/书等),道具属于独立资产类型 |
+| R11 | **姿态保持不变**——必须保持底模自然站立姿态,禁止任何动作/体态/姿势变化 |
+| R12 | **L1 必须先分析再决策**——先解析用户面部线索,再确定基础妆/轻妆/正式妆 |
+| R13 | **所有衍生资产均需妆造**——正常情况不保持素颜,至少使用基础妆 |
+| R14 | **上妆强度受控**——即使上妆也需克制,不得出现现代浓妆/夸张彩妆效果 |
+| R15 | **道具/场景/动作不作强度升级依据**——仅凭道具,环境,动作等信息不得把基础妆抬高为更强妆容 |
+
+### 严禁
+
+| 编号 | 严禁 |
+|---|---|
+| X1 | 叠加后面容偏移 |
+| X2 | 配饰过于简单/现代化(女性) |
+| X3 | 妆容/服饰风格互相冲突 |
+| X4 | 复杂场景背景(必须纯色) |
+| X5 | 四视图间服化妆造不一致 |
+| X6 | 输出提示词以外的任何内容(表格/方案/建议/解释/变体等) |
+| X7 | 在人物衍生资产中加入场景描述(街景/雨景/室内/街道/天气等环境元素) |
+| X8 | 输出「核心要素速查」「分层构建方案」「视觉约束」「禁止事项」「衍生方案」等章节 |
+| X9 | 加入任何道具交互(手持伞/剑/扇/书/灯笼/酒杯等物品) |
+| X10 | 改变底模姿态(行走/回眸/举手/侧身/奔跑/低头/仰望等动作描述) |
+| X11 | 加入表情与姿态联动描述(如「侧身45°行走嘴角浅弯」等叙事性描写) |
+| X12 | 未分析用户线索就直接套用固定妆容 |
+| X13 | 错误保持素颜,导致衍生资产缺少应有妆造 |
+| X14 | 仅因道具/场景/动作词而误把妆容升级,导致妆造强度决策错误 |
\ No newline at end of file
diff --git a/data/skills/art_skills/3D_chinese_traditional/art_prompt/art_prop.md b/data/skills/art_skills/3D_chinese_traditional/art_prompt/art_prop.md
new file mode 100644
index 0000000..864fd40
--- /dev/null
+++ b/data/skills/art_skills/3D_chinese_traditional/art_prompt/art_prop.md
@@ -0,0 +1,132 @@
+---
+name: art_prop
+description: 道具图像生成 · 约束手册
+metaData: art_skills
+---
+
+# 道具图像生成 · 约束手册
+
+---
+
+## 一、道具设计原则
+
+1. **功能可读** — 道具用途一目了然,造型服务于功能
+2. **质感极致** — 材质纹理必须清晰可辨(金属/玉石/木/布/纸)
+3. **年代一致** — 所有道具必须符合古风世界观,禁止现代元素
+4. **尺度明确** — 通过参照物或标注暗示道具真实尺寸
+5. **纯道具独立展示** — 画面中只能出现道具本身,严禁出现任何人物、手部、肢体,道具不可处于被持有/佩戴/握持状态,必须以静物陈列方式独立呈现
+
+---
+
+## 二、道具分类与美学约束
+
+### 2.1 兵器类
+
+| 项目 | 约束 | 提示词 |
+|---|---|---|
+| 类型 | 剑/刀/弓/枪/扇 | {兵器类型},古风兵器 |
+| 材质 | 精钢/玄铁 + 宝石镶嵌 + 丝绸剑穗 | 精钢锻造、宝石镶嵌 |
+| 装饰 | 剑鞘/刀柄雕花、流苏、暗纹 | 雕花精致、流苏垂坠 |
+| 光泽 | 金属冷光泽、刃口反光 | 冷光泽、金属质感 |
+| 提示词 | 古风{兵器},精钢锻造,雕花精致 | — |
+
+### 2.2 饰品类
+
+| 项目 | 约束 | 提示词 |
+|---|---|---|
+| 类型 | 簪/钗/璎珞/玉佩/手镯/耳坠 | {饰品类型},古风首饰 |
+| 材质 | 金/银/玉/珍珠/宝石 | 金丝编织、玉质通透 |
+| 工艺 | 极致精细、花丝/掐丝/镶嵌 | 工艺精细、精雕细琢 |
+| 光泽 | 珠光/玉润/金属光泽 | 珠光莹润、金属光泽 |
+| 提示词 | 古风{饰品},{材质},工艺精细,精雕细琢 | — |
+
+### 2.3 生活器物类
+
+| 项目 | 约束 | 提示词 |
+|---|---|---|
+| 类型 | 茶具/酒具/香炉/棋盘/书卷/灯笼 | {器物类型},古风器物 |
+| 材质 | 瓷/铜/竹/木/纸 | 青瓷温润、紫铜古朴 |
+| 质感 | 釉面/木纹/竹节清晰 | 釉面光泽、木纹清晰 |
+| 风格 | 素雅/华贵按场景切换 | 素雅古朴 / 华贵精致 |
+| 提示词 | 古风{器物},{材质}质感,纹理清晰 | — |
+
+### 2.4 信物/关键道具类
+
+| 项目 | 约束 | 提示词 |
+|---|---|---|
+| 类型 | 信物/令牌/卷轴/药瓶/玉印 | {道具类型},古风道具 |
+| 特殊性 | 需有辨识度、叙事象征意义 | 独特造型、寓意深远 |
+| 做旧感 | 可按剧情需要添加年代感 | 古旧斑驳 / 崭新精致 |
+| 提示词 | 古风{道具},{材质},{状态},独特造型 | — |
+
+---
+
+## 三、多角度设定图规范
+
+### 视图定义
+
+| 位置 | 视图 | 角度 | 要求 | 提示词 |
+|---|---|---|---|---|
+| 左上 | 正面图 | 正面 0° | 道具完整正面形态 | front view |
+| 右上 | 侧面图 | 侧面 90° | 厚度/轮廓/结构清晰 | side view |
+| 左下 | 背面图 | 背面 180° | 道具背部结构/装饰 | back view |
+| 右下 | 细节特写 | 局部放大 | 材质纹理/工艺细节 | detail closeup |
+
+### 画面规范
+
+| 项目 | 约束 |
+|---|---|
+| 布局 | 同一画面四宫格(2×2),上下左右四视角 |
+| 背景 | 素灰纯色 #B8B8B8 |
+| 光线 | 均匀柔光,无硬阴影 |
+| 比例 | 每格道具占格内主体 70%+ |
+| 投影 | 允许自然地面微投影 |
+| 画面比例 | 建议 1:1 |
+
+---
+
+## 四、材质渲染约束
+
+| 材质 | 渲染要求 | 提示词 |
+|---|---|---|
+| 金属 | 反光/高光/冷光泽、划痕微可见 | 金属质感、冷光泽、反光清晰 |
+| 玉石 | 内透光、温润、微通透 | 玉质通透、温润如脂 |
+| 木质 | 木纹清晰、年轮可见 | 木纹清晰、质感温润 |
+| 瓷器 | 釉面光泽、色泽均匀 | 釉面光泽、瓷质温润 |
+| 布/纸 | 纤维质感、边缘自然 | 布料纹理、纸质古朴 |
+| 宝石 | 折射/内部光线、切面清晰 | 宝石璀璨、光芒折射 |
+
+---
+
+## 五、提示词模板
+
+古风道具设定图,3D渲染风格,高精度建模,PBR材质,国风3D,电影级光影,
+{道具类型},{材质描述},{工艺/装饰描述},{状态描述},
+纯道具静物展示,道具独立陈列,无人持有,无人佩戴,
+同一画面四宫格(2×2):左上正面图+右上侧面图+左下背面图+右下细节特写,
+素灰纯色背景,均匀柔光,无硬阴影,
+材质纹理超清晰,PBR材质渲染,{材质光泽描述}
+图中不要有任何文字,
+画面中不能出现任何人物、手部、手指、肢体,道具不可处于被握持或佩戴状态
+
+---
+
+## 六、约束规则
+
+### 必守
+
+| 编号 | 规则 |
+|---|---|
+| R1 | 必须指定「素灰纯色背景」 |
+| R2 | 必须明确道具材质与工艺 |
+| R3 | 道具造型必须符合古风世界观 |
+
+### 严禁
+
+| 编号 | 严禁 |
+|---|---|
+| X1 | 复杂场景背景 |
+| X2 | 道具与人物同画面(本环节为纯道具图) |
+| X3 | 出现任何人物形象,包括全身、半身、局部(手、手指、手臂等肢体) |
+| X4 | 道具处于被持有、握持、佩戴、使用中的状态 |
+| X5 | 出现暗示人物存在的元素(如手持痕迹、佩戴视角、使用姿态) |
diff --git a/data/skills/art_skills/3D_chinese_traditional/art_prompt/art_prop_derivative.md b/data/skills/art_skills/3D_chinese_traditional/art_prompt/art_prop_derivative.md
new file mode 100644
index 0000000..8830b49
--- /dev/null
+++ b/data/skills/art_skills/3D_chinese_traditional/art_prompt/art_prop_derivative.md
@@ -0,0 +1,122 @@
+---
+name: art_prop_derivative
+description: 道具衍生状态生成 · 约束手册
+metaData: art_skills
+---
+
+# 道具衍生状态生成 · 约束手册
+
+---
+
+## 一、衍生原则
+
+1. **造型锚定** — 道具核心造型/轮廓在所有状态中可识别
+2. **状态可读** — 状态差异必须一目了然,观众能立即区分
+3. **叙事服务** — 每种状态变体服务于特定剧情节点
+4. **渐进退化** — 损伤/老化状态应有合理的物理逻辑
+5. **纯道具独立展示** — 画面中只能出现道具本身,严禁出现任何人物、手部、肢体,道具不可处于被持有/佩戴/握持状态,必须以静物陈列方式独立呈现
+
+---
+
+## 二、状态类型
+
+### 2.1 使用状态
+
+| 状态 | 描述 | 适用道具 | 提示词 |
+|---|---|---|---|
+| 崭新 | 完好无损、光泽如新 | 所有道具 | 崭新、完好无损、光泽如新 |
+| 日常使用 | 微磨损、自然包浆 | 兵器/器物/饰品 | 日常使用痕迹、自然包浆 |
+| 陈旧 | 明显年代感、色泽暗淡 | 器物/信物/卷轴 | 古旧斑驳、年代感、色泽暗沉 |
+
+### 2.2 损伤状态
+
+| 状态 | 描述 | 适用道具 | 提示词 |
+|---|---|---|---|
+| 微损 | 小裂纹/小缺口/轻微磨损 | 瓷器/玉佩/兵器 | 细微裂纹、轻微缺口 |
+| 破损 | 明显裂缝/断裂/破碎 | 瓷器/饰品/兵器 | 裂缝明显、碎裂、断裂 |
+| 残片 | 仅剩部分/碎片 | 瓷器/玉佩/信物 | 残片、碎片、仅存半块 |
+
+### 2.3 特殊状态
+
+| 状态 | 描述 | 适用道具 | 提示词 |
+|---|---|---|---|
+| 染血 | 血迹附着 | 兵器/衣物/信物 | 血迹斑驳、染血 |
+| 浸水/湿润 | 水渍、湿润反光 | 卷轴/信物/衣物 | 浸水、纸张湿润、墨迹晕染 |
+| 燃烧/焦损 | 焦黑边缘、火烧痕迹 | 卷轴/信物/木质品 | 边缘焦黑、火烧痕迹 |
+| 发光/激活 | 内在能量、光芒四射 | 信物/法器/玉石 | 微微发光、内蕴光华 |
+| 包裹/封存 | 用布/盒子包裹 | 信物/饰品/秘物 | 锦布包裹、木盒封存 |
+
+---
+
+## 三、状态变体画面规范
+
+### 单状态图
+
+| 项目 | 约束 |
+|---|---|
+| 背景 | 素灰纯色 #B8B8B8(与设定图一致) |
+| 光线 | 均匀照明,无硬阴影 |
+| 角度 | 与原设定图正面图一致 |
+| 比例 | 道具占画面主体 70%+ |
+
+### 状态对比图
+
+| 项目 | 约束 |
+|---|---|
+| 布局 | 同一画面并排展示 2-3 种状态 |
+| 标注 | 每种状态下方标注状态名 |
+| 一致性 | 角度/光线/背景完全一致,仅状态不同 |
+
+---
+
+## 四、材质状态变化规则
+
+| 材质 | 崭新 → 日常 | 日常 → 陈旧 | 损伤表现 |
+|---|---|---|---|
+| 金属 | 亮光泽 → 微包浆 | 包浆 → 锈蚀斑点 | 缺口/卷刃/断裂 |
+| 玉石 | 通透温润 → 微磨损 | 磨损 → 表面微裂 | 裂纹/碎裂/缺角 |
+| 木质 | 新木纹理 → 自然包浆 | 包浆 → 色泽暗沉 | 开裂/断裂/虫蛀 |
+| 瓷器 | 釉面光泽 → 微划痕 | 划痕 → 釉面暗淡 | 裂纹/碎裂/缺口 |
+| 布/纸 | 崭新平整 → 微皱折 | 皱折 → 发黄变脆 | 撕裂/焦损/墨迹晕染 |
+
+---
+
+## 五、提示词模板
+
+### 单状态变体
+
+基于{道具名}设定图,3D渲染风格,高精度建模,PBR材质,国风3D,电影级光影,
+{道具类型},{材质描述},
+当前状态:{状态名},{状态视觉描述},
+{材质表面变化描述},
+纯道具静物展示,道具独立陈列,无人持有,无人佩戴,
+同一画面四宫格(2×2):左上正面图(front view)+右上侧面图(side view)+左下背面图(back view)+右下细节特写(detail closeup),
+素灰纯色背景,均匀柔光,无硬阴影,
+材质纹理超清晰,PBR材质渲染,状态细节可辨
+图中不要有任何文字,
+画面中不能出现任何人物、手部、手指、肢体,道具不可处于被握持或佩戴状态
+
+---
+
+## 六、约束规则
+
+### 必守
+
+| 编号 | 规则 |
+|---|---|
+| R1 | 道具核心造型/轮廓在所有状态中可识别 |
+| R2 | 状态变化须符合物理逻辑 |
+| R3 | 必须使用四宫格(2×2)布局:左上正面图+右上侧面图+左下背面图+右下细节特写 |
+| R4 | 必须指定「素灰纯色背景」,均匀柔光,无硬阴影 |
+
+### 严禁
+
+| 编号 | 严禁 |
+|---|---|
+| X1 | 状态变化后道具不可识别 |
+| X2 | 违反物理逻辑的损伤(玉石生锈等) |
+| X3 | 过度血腥/恐怖的损伤描绘 |
+| X4 | 出现任何人物形象,包括全身、半身、局部(手、手指、手臂等肢体) |
+| X5 | 道具处于被持有、握持、佩戴、使用中的状态 |
+| X6 | 出现暗示人物存在的元素(如手持痕迹、佩戴视角、使用姿态) |
+
diff --git a/data/skills/art_skills/3D_chinese_traditional/art_prompt/art_scene.md b/data/skills/art_skills/3D_chinese_traditional/art_prompt/art_scene.md
new file mode 100644
index 0000000..934c5d6
--- /dev/null
+++ b/data/skills/art_skills/3D_chinese_traditional/art_prompt/art_scene.md
@@ -0,0 +1,161 @@
+---
+name: art_scene
+description: 场景图生成 · 约束手册
+metaData: art_skills
+---
+
+# 场景图生成 · 约束手册
+
+---
+
+## 一、场景美学原则
+
+1. **空间叙事** — 场景承载情绪与叙事功能,不是纯背景板
+2. **层次纵深** — 所有场景必须具备前/中/后景,杜绝扁平
+3. **质感至上** — 木质/石质/布料/水面等材质纹理必须超清晰
+4. **3D为锚** — 一切画面以3D渲染为标准,拒绝平面贴图/3D渲染/CG动画质感;追求体积光、环境光遮蔽、景深虚化等电影渲染效果
+
+---
+
+## 二、季节色调映射
+
+| 季节 | 主色调 | 辅色调 | 提示词 |
+|---|---|---|---|
+| 春 | 青绿 + 朱红 | 月白、藤黄 | 春色青翠、桃花灼灼 |
+| 夏 | 青绿 + 靛蓝 | 月白、青绿 | 夏荷碧绿、浓荫蔽日 |
+| 秋 | 赭石 + 金黄 | 朱红、赭石 | 秋枫赤红、金叶飘零 |
+| 冬 | 月白 + 靛蓝 | 墨黑、青绿 | 冬雪素白、枯枝霜挂 |
+
+---
+
+## 三、室内场景
+
+### 空间规范
+
+| 维度 | 约束 | 提示词 |
+|---|---|---|
+| 风格 | 古代宅邸/宫殿/书房/闺阁,明清至唐宋 | 古代{朝代}风格 |
+| 材质 | 木质为主、石/玉/绢/纱为辅 | 檀木家具、玉石屏风、绢纱帷幔 |
+| 色调 | 中国传统色调 + 月白纱幔 + 朱红木漆 | 暖木色调、素雅陈设 |
+| 纵深 | 前/中/后景层次 | 前景{元素}、中景{元素}、后景{元素} |
+| 质感 | 木纹/布料垂感/瓷器光泽可辨 | 纹理清晰、材质质感精细 |
+| 光照 | 自然光源为主(窗光/烛光),体积光,环境光遮蔽 | 自然光漫射、烛光摇曳、体积光 |
+| 镜头感 | 景深虚化前后景、镜头暗角、色散微痕 | depth of field、lens vignette、chromatic aberration |
+| 瑕疵感 | 木面有使用痕迹、石面有风化纹、布料有自然褶皱 | 岁月痕迹、自然磨损、布料自然垂褶 |
+
+### 室内类型速查
+
+| 类型 | 核心元素 | 氛围词 |
+|---|---|---|
+| 闺阁/卧房 | 纱帐、梳妆台、铜镜、花瓶 | 温馨私密、纱幔轻垂 |
+| 书房/书斋 | 书架、卷轴、笔墨、棋盘 | 幽静雅致、墨香四溢 |
+| 大殿/正厅 | 高柱、匾额、帷幕、烛台 | 庄严华美、气势恢宏 |
+| 庭院回廊 | 廊柱、石栏、花木、灯笼 | 曲径通幽、灯影摇曳 |
+| 厨房/膳堂 | 灶台、蒸笼、食器 | 烟火气息、温馨日常 |
+
+---
+
+## 四、室外场景
+
+### 空间规范
+
+| 维度 | 约束 | 提示词 |
+|---|---|---|
+| 类型 | 庭院/山林/溪畔/古桥/集市 | {场景},{季节},{时间} |
+| 天候 | 晴/阴/薄雾/细雨/飞雪 | 薄雾弥漫、细雨如丝 |
+| 植被 | 梅/竹/松/桃花/柳/荷(须符合季节) | 桃花灼灼、翠竹成林 |
+| 水体 | 溪/湖/瀑布需有光影反射 | 溪水潺潺、湖面如镜 |
+| 建筑 | 飞檐斗拱、青瓦白墙、石桥木亭 | 飞檐翘角、石拱桥 |
+| 空气感 | 必须有空气透视,体积光,远景模糊 | 远山如黛、空气透视、体积光 |
+| 光照 | 自然光为唯一光源,日光/月光需有体积光与散射 | 自然光照、体积光、景深虚化 |
+| 镜头感 | 景深虚化、镜头暗角、色散、光斑散景 | depth of field、bokeh、lens flare、vignette |
+| 瑕疵感 | 石面青苔/风化、木面开裂/包浆、瓦片残缺/苔痕 | 青苔斑驳、风化痕迹、岁月包浆 |
+
+### 室外类型速查
+
+| 类型 | 核心元素 | 氛围词 |
+|---|---|---|
+| 庭院花园 | 假山、池塘、花木、石径 | 花影扶疏、曲径通幽 |
+| 山林竹海 | 古木、竹林、山石、云雾 | 层峦叠嶂、云雾缥缈 |
+| 溪畔湖边 | 溪流、卵石、垂柳、荷花 | 溪水潺潺、柳影婆娑 |
+| 古桥长亭 | 石拱桥、长亭、柳树 | 长亭古道、杨柳依依 |
+| 集市街道 | 酒旗、摊贩、灯笼 | 热闹市井、烟火人间 |
+| 屋顶天台 | 瓦片、飞檐、夜空 | 月下独酌、清风徐来 |
+
+---
+
+## 五、四视图设定图规范
+
+### 视图定义
+
+> 摄像机固定于场景中心点,分别朝前/后/左/右四个方向拍摄,形成 360° 环视。
+
+| 位置 | 视图 | 视角方向 | 要求 | 提示词 |
+|---|---|---|---|---|
+| 左上 | 前视图 | 从中心点向前方平视(0°) | 展示场景正面主体结构与纵深层次 | front view、eye level、looking forward |
+| 右上 | 右视图 | 从中心点向右方平视(90°) | 展示场景右侧空间延伸与侧面结构 | right side view、eye level、looking right |
+| 左下 | 后视图 | 从中心点向后方平视(180°) | 展示场景背面结构与空间纵深 | back view、eye level、looking backward |
+| 右下 | 左视图 | 从中心点向左方平视(270°) | 展示场景左侧空间延伸与侧面结构 | left view、eye level、looking left |
+
+### 画面规范
+
+| 项目 | 约束 |
+|---|---|
+| 布局 | 同一画面 2×2 网格排列:上排(前视图 + 右视图),下排(后视图 + 左视图),形成从中心点环视的四方向视图 |
+| 人物 | **严禁出现任何人物、人影、人体轮廓** |
+| 视点 | 四视图均从同一中心点出发,视线高度一致(人眼平视高度) |
+| 一致性 | 四视图的建筑结构/材质/色调/光线/季节/天候完全一致 |
+| 光线 | 四视图光源方向统一,保持光影逻辑一致(光源在不同视角下的位置关系正确) |
+| 画面比例 | 建议 1:1(2×2 网格) |
+
+---
+
+## 六、提示词模板
+
+古风场景四视图设定图,
+3D渲染风格,高精度建模,PBR材质,国风3D,电影级光影,
+3D rendered, volumetric lighting,
+depth of field, natural lens vignette, subtle chromatic aberration, bokeh,
+3D渲染质感,体积光,自然光照,物理光影,
+scene design sheet, environment concept art, no people, no characters, no human figures,
+{室内/室外},{场景类型},{朝代风格},{季节+时间},
+前景:{元素}, 中景:{元素}, 后景:{元素},
+{色调描述}, {天候/氛围元素},
+{材质描述}, 空气透视, 纹理细节超清晰,
+材质自然磨损痕迹,岁月包浆,青苔风化,布料自然垂褶,
+体积光,环境光遮蔽,自然光漫射,柔和光影,
+同一画面2×2网格排列:从场景中心点环视,前视图+右视图+后视图+左视图,
+四视图均从同一中心点平视拍摄,建筑结构一致,材质色调一致,光影逻辑一致,
+画面中无任何人物
+图中不要有任何文字
+
+---
+
+## 七、约束规则
+
+### 必守
+
+| 编号 | 规则 |
+|---|---|
+| R1 | 场景必须有「前中后景层次」 |
+| R2 | 室外必须包含「空气透视」 |
+| R3 | 场景图必须为「四视图设定图」(从中心点环视:前视图 + 右视图 + 后视图 + 左视图) |
+| R4 | 四视图的建筑结构/材质/色调/光线/季节/天候必须完全一致 |
+| R5 | 场景图中**严禁出现任何人物** |
+| R6 | 必须包含3D渲染关键词(3D rendered / volumetric lighting / PBR materials) |
+| R7 | 必须包含镜头光学特征(depth of field / lens vignette / bokeh 至少一项) |
+| R8 | 材质必须带有自然磨损/岁月痕迹,禁止全新无瑕的"CG 感" |
+
+### 严禁
+
+| 编号 | 严禁 |
+|---|---|
+| X1 | 背景纯白/纯黑/无场景 |
+| X2 | 极端天候(暴风雨/雷电/暴雪,除非剧情需要) |
+| X3 | 场景无纵深/无层次 |
+| X4 | 植被/天候与季节矛盾 |
+| X5 | 出现任何人物、人影、人体剪影或人体轮廓 |
+| X6 | 四视图之间建筑结构/材质/色调不一致,或视点中心不统一 |
+| X7 | 低精度建模/粗糙贴图/塑料质感(禁用 low-poly、rough modeling 等词) |
+| X8 | 材质过于干净完美、无任何使用痕迹与岁月感(避免"塑料感") |
+| X9 | 光照过于均匀平坦、无景深虚化、无镜头光学特征 |
\ No newline at end of file
diff --git a/data/skills/art_skills/3D_chinese_traditional/art_prompt/art_scene_derivative.md b/data/skills/art_skills/3D_chinese_traditional/art_prompt/art_scene_derivative.md
new file mode 100644
index 0000000..0d071ef
--- /dev/null
+++ b/data/skills/art_skills/3D_chinese_traditional/art_prompt/art_scene_derivative.md
@@ -0,0 +1,168 @@
+---
+name: art_scene_derivative
+description: 场景衍生资产生成 · 约束手册
+metaData: art_skills
+---
+
+# 场景衍生资产生成 · 约束手册
+
+---
+
+## 一、衍生原则
+
+1. **空间一致** — 建筑结构/布局/材质在所有变体中保持一致
+2. **景别驱动** — 同一场景通过不同景别展示不同叙事功能
+3. **时段切换** — 同一空间在不同时间段呈现不同光影氛围
+4. **天候变化** — 同一空间在不同天气下呈现不同情绪
+5. **3D为锚** — 所有变体必须保持3D渲染质感,拒绝平面贴图/CG 动画感;保留体积光、环境光遮蔽、景深虚化
+
+---
+
+## 二、景别变体
+
+### 景别定义
+
+| 景别 | 范围 | 叙事功能 | 提示词 |
+|---|---|---|---|
+| 大全景 | 场景全貌 + 周围环境 | 建立空间感、定位 | extreme wide shot、大全景 |
+| 全景 | 场景完整呈现 | 展示空间结构 | wide shot、全景 |
+| 中景 | 场景局部区域 | 聚焦功能区 | medium shot、中景 |
+| 近景 | 场景细部 | 材质/氛围道具特写 | close shot、近景 |
+| 特写 | 极局部细节 | 材质纹理/关键道具 | extreme closeup、特写 |
+
+### 景别衍生规范
+
+| 从基准图衍生 | 保持不变 | 允许变化 |
+|---|---|---|
+| 大全景 → 全景 | 建筑外观、整体布局 | 视角收窄、前景增加 |
+| 全景 → 中景 | 材质、色调、光线 | 裁切聚焦、景深变化 |
+| 中景 → 近景 | 材质、色调 | 景深浅、背景虚化 |
+| 近景 → 特写 | 材质纹理 | 极浅景深、微距感 |
+
+---
+
+## 三、时段变体
+
+### 时段定义
+
+| 时段 | 视觉特征 | 提示词 |
+|---|---|---|
+| 清晨 | 薄雾柔光、色调偏冷暖交织 | 晨光微熹、清晨薄雾 |
+| 正午 | 明亮、阴影短、色彩鲜明 | 正午阳光、光线明亮 |
+| 黄昏 | 金色色调、长影、天空渐变 | 暮色金辉、golden hour |
+| 夜间(月光) | 冷蓝色调、幽静清冷 | 月光清辉、moonlight |
+| 夜间(灯火) | 暖黄点缀、明暗对比 | 灯火阑珊、烛光点点 |
+
+### 时段衍生规范
+
+| 从基准时段衍生 | 保持不变 | 变化项 |
+|---|---|---|
+| 日间 → 黄昏 | 建筑/布局/材质 | 天空色调暖化、影子拉长 |
+| 日间 → 夜间 | 建筑/布局/材质 | 整体变暗、增加灯火/月色氛围 |
+| 室内日间 → 室内夜间 | 空间结构、家具 | 整体色调暖化、增加烛火/灯笼元素 |
+
+---
+
+## 四、天候变体
+
+### 天候定义
+
+| 天候 | 视觉特征 | 提示词 |
+|---|---|---|
+| 晴天 | 明亮、阴影清晰 | 晴空万里、阳光明媚 |
+| 阴天 | 光线均匀、无硬影 | 阴天柔光、overcast |
+| 薄雾 | 能见度降低、空气朦胧 | 薄雾弥漫、雾气缭绕 |
+| 细雨 | 水珠、湿润反光、雨丝 | 细雨如丝、雨幕轻纱 |
+| 飞雪 | 白色覆盖、雪花飘落 | 飞雪纷纷、银装素裹 |
+
+### 天候衍生规范
+
+| 从基准天候衍生 | 保持不变 | 变化项 |
+|---|---|---|
+| 晴 → 薄雾 | 建筑/布局 | 增加雾气层、远景模糊、饱和度降低 |
+| 晴 → 细雨 | 建筑/布局 | 增加雨丝、地面反光、色调偏冷 |
+| 晴 → 飞雪 | 建筑/布局 | 增加积雪、雪花、色调偏白 |
+| 植被需随天候逻辑适配 | — | 雨中花瓣湿润、雪中枯枝挂霜 |
+
+---
+
+## 五、四视图设定图规范
+
+### 视图定义
+
+> 摄像机固定于场景中心点,分别朝前/后/左/右四个方向拍摄,形成 360° 环视。
+
+| 位置 | 视图 | 视角方向 | 要求 | 提示词 |
+|---|---|---|---|---|
+| 左上 | 前视图 | 从中心点向前方平视(0°) | 展示场景正面主体结构与纵深层次 | front view、eye level、looking forward |
+| 右上 | 右视图 | 从中心点向右方平视(90°) | 展示场景右侧空间延伸与侧面结构 | right side view、eye level、looking right |
+| 左下 | 后视图 | 从中心点向后方平视(180°) | 展示场景背面结构与空间纵深 | back view、eye level、looking backward |
+| 右下 | 左视图 | 从中心点向左方平视(270°) | 展示场景左侧空间延伸与侧面结构 | left view、eye level、looking left |
+
+### 画面规范
+
+| 项目 | 约束 |
+|---|---|
+| 布局 | 同一画面四宫格(2×2),左上前视图+右上右视图+左下后视图+右下左视图,形成从中心点环视的四方向视图 |
+| 人物 | **严禁出现任何人物、人影、人体轮廓** |
+| 视点 | 四视图均从同一中心点出发,视线高度一致(人眼平视高度) |
+| 一致性 | 四视图的建筑结构/材质/色调/光线/季节/天候完全一致 |
+| 光线 | 四视图光源方向统一,保持光影逻辑一致(光源在不同视角下的位置关系正确) |
+| 画面比例 | 建议 1:1(2×2 网格) |
+
+---
+
+## 六、提示词模板
+
+古风场景衍生四视图设定图,基于{场景名}概念图,
+3D渲染风格,高精度建模,PBR材质,国风3D,电影级光影,
+3D rendered, volumetric lighting,
+depth of field, natural lens vignette, subtle chromatic aberration, bokeh,
+3D渲染质感,体积光,自然光照,物理光影,
+scene derivative design sheet, environment concept art, no people, no characters, no human figures,
+保持场景空间结构一致,
+{景别视角(如有)}, {时段描述(如有)}, {天候描述(如有)},
+{前景}, {中景}, {后景},
+{色调描述}, {景深描述(如有)}, {天空色调变化(如有)}, {氛围调整(如有)},
+{天候视觉特征(如有)}, {材质表面变化(如有)}, {植被适配描述(如有)},
+材质自然磨损痕迹,岁月包浆,青苔风化,布料自然垂褶,
+体积光,环境光遮蔽,自然光漫射,柔和光影,
+空气透视,纹理细节超清晰,
+同一画面四宫格(2×2):从场景中心点环视,前视图+右视图+后视图+左视图,
+四视图均从同一中心点平视拍摄,建筑结构一致,材质色调一致,光影逻辑一致,
+画面中无任何人物
+图中不要有任何文字
+
+> **使用说明**:根据用户提供的信息自行判断需要应用的变化维度(景别/时段/天候),未提及的维度对应字段留空省略即可。无需为每种变体单独生成模板。
+
+---
+
+## 七、约束规则
+
+### 必守
+
+| 编号 | 规则 |
+|---|---|
+| R1 | 场景空间结构在所有变体中保持一致 |
+| R2 | 时段变体必须调整天空色调与氛围 |
+| R3 | 天候变体必须适配植被/材质表面 |
+| R4 | 必须为「四视图设定图」(从中心点环视:前视图 + 右视图 + 后视图 + 左视图) |
+| R5 | 四视图的建筑结构/材质/色调/光线/季节/天候必须完全一致 |
+| R6 | 场景图中**严禁出现任何人物** |
+| R7 | 根据用户提供的信息自行判断变化维度,无需拆分为独立模板 |
+| R8 | 必须包含3D渲染关键词(3D rendered / volumetric lighting / PBR materials) |
+| R9 | 必须包含镜头光学特征(depth of field / lens vignette / bokeh 至少一项) |
+| R10 | 材质必须带有自然磨损/岁月痕迹,禁止全新无瑕的"CG 感" |
+
+### 严禁
+
+| 编号 | 严禁 |
+|---|---|
+| X1 | 变体间建筑结构/布局不一致 |
+| X2 | 天候与季节矛盾(夏天飞雪等) |
+| X3 | 变体间材质/风格突变 |
+| X4 | 出现任何人物、人影、人体剪影或人体轮廓 |
+| X5 | 四视图之间建筑结构/材质/色调不一致,或视点中心不统一 |
+| X6 | 低精度建模/粗糙贴图/塑料质感(禁用 low-poly、rough modeling 等词) |
+| X7 | 材质过于干净完美、无任何使用痕迹与岁月感(避免"塑料感") |
+| X8 | 光照过于均匀平坦、无景深虚化、无镜头光学特征 |
diff --git a/data/skills/art_skills/3D_chinese_traditional/art_prompt/art_storyboard_video.md b/data/skills/art_skills/3D_chinese_traditional/art_prompt/art_storyboard_video.md
new file mode 100644
index 0000000..99dc8aa
--- /dev/null
+++ b/data/skills/art_skills/3D_chinese_traditional/art_prompt/art_storyboard_video.md
@@ -0,0 +1,11 @@
+# 视频提示词 · 视觉风格约束
+
+生成视频提示词时,必须注入以下视觉风格标签:
+
+| 模式 | 风格标签 |
+|------|----------|
+| **通用多参模式(英文)** | `Chinese traditional 3D render, PBR materials, volumetric lighting, oriental aesthetic, elegant and grand, cinematic` |
+| **通用首尾帧模式(英文)** | `Chinese traditional 3D render, PBR materials, volumetric lighting, oriental aesthetic, elegant and grand, cinematic, shallow depth of field` |
+| **Seedance 2.0(中文)** | `国风3D渲染,PBR材质,体积光,东方美学,典雅大气,电影风格` |
+
+
diff --git a/data/skills/art_skills/3D_chinese_traditional/driector_skills/director_planning_style.md b/data/skills/art_skills/3D_chinese_traditional/driector_skills/director_planning_style.md
new file mode 100644
index 0000000..b28567d
--- /dev/null
+++ b/data/skills/art_skills/3D_chinese_traditional/driector_skills/director_planning_style.md
@@ -0,0 +1,93 @@
+---
+name: director_planning_style
+description: 国风3D约束 — 定义国风3D风格在色调体系、光影方案、质感方向、场景空间元素、乐器选择与环境音上的全局约束。适用于任何叙事类型。
+metaData: director_skills
+---
+
+# 国风3D约束 · 国风3D · 技法参考
+
+---
+
+## 一、色调体系与画面基调
+
+- **色调基底** — 全片以月白(C1)、青绿(C2)、靛蓝(C4)为基底色,整体色温偏中性(4800-5500K),饱和度中高(55-75%),呈现传统东方美学的典雅大气色调
+- **情绪色盘驱动** — 六套情绪色盘(宫廷华贵/山水意境/闺阁温婉/武侠肃杀/节日喜庆/月夜清幽)对应不同叙事段落,色盘切换应与故事弧线同步
+- **冷暖叙事对比** — 暖色(朱红 C3、金黄 C5、胭脂 C7、藤黄 C9)作为叙事转折的视觉信号,用于情感升温与喜庆段落;冷色(靛蓝 C4、墨黑 C6)用于肃杀、忧郁、清幽段落
+- **色盘先行原则** — 段落规划需先绑定情绪场景(宫廷华贵/山水意境/闺阁温婉/武侠肃杀/节日喜庆/月夜清幽等),再确定主色+辅色与光影方案,避免"剧情对了但情绪不对色"
+- **禁用色域** — 高饱和荧光色、霓虹色、现代数码色彩体系均与本风格不兼容
+
+---
+
+## 二、光影方案体系
+
+- **光影即叙事** — 7 套光影方案对应不同情绪段落,导演规划阶段应在段落层面确定光影基调方向,而非逐镜指定
+- **3D渲染光影特征** — 体积光、环境光遮蔽(AO)、景深虚化为国风3D风格的核心光影手段,所有光影方案均须体现PBR物理材质渲染质感
+
+| 光影方案 | 方案名 | 色调倾向 | 适用情绪 |
+|---|---|---|---|
+| A | 暖光华彩 | 朱红 + 金黄高光 + 月白底 | 宫廷华贵、庄严气派、喜庆盛大 |
+| B | 青绿意境 | 青绿 + 月白雾气 + 体积光漫射 | 山水意境、诗意悠远、空灵飘逸 |
+| C | 柔光暖影 | 胭脂暖调 + 金黄点缀 + 柔和阴影 | 闺阁温婉、柔美细腻、日常温馨 |
+| D | 冷调肃杀 | 墨黑 + 靛蓝 + 硬光对比 | 武侠肃杀、冷峻凌厉、氛围压抑 |
+| E | 窗纱漫射 | 月白底 + 自然侧光 + 环境光遮蔽 | 室内日间、日常起居、幽静雅致 |
+| F | 月夜清辉 | 靛蓝 + 月白冷光 + 金黄暖光点缀 | 月夜清幽、宁静唯美、思念独处 |
+| G | 节庆暖光 | 朱红 + 藤黄 + 高饱和暖光 | 节日庆典、热闹欢快、色彩丰富 |
+
+- **冷暖光分配** — 暖色光(朱红/金黄/藤黄)适用于华贵、温婉、喜庆段落;冷色光(靛蓝/墨黑)适用于肃杀、忧郁、清幽段落。导演可根据叙事需要调整冷暖切换点
+- **氛围方向映射** — 每场戏的氛围方向应能映射到上述光影方案(A-G)的某一方向,确保视觉一致性
+
+---
+
+## 三、质感方向
+
+- **3D渲染为锚** — 国风3D的核心:高精度建模、PBR材质渲染、体积光、环境光遮蔽、景深虚化,呈现电影级3D渲染画面
+- **PBR材质至上** — 所有服化道的材质必须通过PBR物理渲染可信:丝绸的光泽与垂感、木质的纹理与包浆、金属的反光与质感、玉石的通透与温润、瓷器的釉面光泽
+- **体积光与景深** — 体积光是国风3D画面的灵魂:室外场景必须有空气透视与体积光散射,室内场景通过窗光/烛光制造体积光效果;景深虚化强化空间纵深
+- **岁月质感** — 材质不可过于干净完美:木面有使用痕迹、石面有风化纹与青苔、布料有自然褶皱、瓦片有苔痕残缺。禁止"塑料感"和全新无瑕的"CG感"
+- **3D不等于冰冷** — 国风3D强调东方美学的温度感,通过材质质感、光影层次、色彩搭配传达情感,而非依赖奇观特效
+
+---
+
+## 四、古风场景空间元素
+
+古风世界观特有的场景元素及其视觉叙事功能:
+
+- **纱帘/屏风/门框** — 天然的框架式构图道具,制造"看不透"的层次感与空间纵深。3D渲染中纱帘的半透明材质与光线穿透效果是画面亮点
+- **庭院/花树/雨幕** — 留白构图的天然载体,景即情:满庭花开 = 释然、独坐雨中 = 孤寂、落叶纷飞 = 离愁。3D场景中植被的体积感与光影交互尤为重要
+- **烛火/月色/窗光** — 古风世界的光源载体,烛光 = 暖/私密(方案C)、月色 = 冷/清幽(方案F)、窗光 = 日常/静谧(方案E)。3D渲染中光源的体积光效果与PBR材质反射是关键
+- **飞檐/斗拱/青瓦** — 古风建筑的标志性元素,3D建模需体现雕梁画栋的精致细节,材质需有岁月感
+- **段落间用场景空镜过渡** — 本风格有丰富的场景资产(不同时段/天候/季节变体),段落衔接建议用场景空镜做情绪缓冲,不要硬切
+- **转折点用视觉而非台词** — 优先使用画面手段(光影突变、景别跳切、空镜隐喻)而非依赖对白解释
+
+---
+
+## 五、古风乐器与环境音
+
+古风世界观下的声音元素约束:
+
+### 乐器选择
+
+- **箫** — 凄凉、孤寂、悲戚段落的核心乐器,最能表现冷清哀婉
+- **二胡** — 情感激荡、悲痛、思念段落,拉弦的哭腔感适合情绪爆发
+- **唢呐** — 情感波动剧烈段落(大悲大喜、命运转折、高潮),慎用但一用即核弹
+- **古琴** — 开场定调 / 平稳段落,与箫搭配使用,体现山水意境
+- **琵琶** — 紧张、急促段落的点缀,武侠肃杀场景适用
+- **古筝** — 宫廷华贵、节庆喜庆段落的氛围乐器,华丽优雅
+- 弦乐铺底可增加电影感但不宜喧宾夺主
+
+### 乐器组合策略
+
+| 情绪阶段 | 乐器组合 |
+|---|---|
+| 平稳/开场/收尾 | 古琴独奏 或 古琴 + 箫 |
+| 山水意境/空灵 | 箫 + 古琴 + 笛 |
+| 宫廷华贵/喜庆 | 古筝 + 编钟 + 弦乐 |
+| 悲戚渐浓 | 箫 + 二胡 |
+| 情绪爆发/命运转折 | 唢呐独奏 或 唢呐 + 二胡 |
+| 武侠肃杀/紧张 | 琵琶点缀 + 弦乐衬底 |
+| 温婉日常 | 古琴 + 笛 + 轻弦乐 |
+
+### 古风环境音
+
+- **典型环境音层次** — 蝉鸣虫唱 / 溪水潺潺 / 风过竹林 / 市井叫卖 / 夜雨滴檐 / 衣料摩擦 / 风铃轻响 / 鸟鸣啁啾 / 落花簌簌
+- **每场戏标注 1-2 个核心环境音**,帮助后续音效设计。环境音层次越丰富,古风场景越有沉浸感
diff --git a/data/skills/art_skills/3D_chinese_traditional/driector_skills/director_storyboard.md b/data/skills/art_skills/3D_chinese_traditional/driector_skills/director_storyboard.md
new file mode 100644
index 0000000..06a4c61
--- /dev/null
+++ b/data/skills/art_skills/3D_chinese_traditional/driector_skills/director_storyboard.md
@@ -0,0 +1,186 @@
+---
+name: director_storyboard
+description: 导演分镜提示词技法 · 国风3D
+metaData: director_skills
+---
+
+# 分镜提示词 · 国风3D · 风格专属技法
+
+---
+
+## 适用范围
+
+本 Skill 专用于**国风3D**风格的分镜提示词生成。
+
+---
+
+## 情绪 → 面容/眼神词映射
+
+| 情绪输入 | 面容词 | 眼神词 | 微表情补充 |
+|----------|--------|--------|-----------|
+| 端庄 / 优雅 | 神情端庄,目光平静 | 眼神清亮,目光沉稳 | 嘴角微扬,表情典雅 |
+| 忧伤 / 哀婉 | 神情哀婉,眼神黯淡 | 眼神含泪,目光低垂 | 嘴角下沉,表情哀伤 |
+| 温柔 / 深情 | 神情温柔,眉目含情 | 眼神专注柔和,目光温暖 | 嘴角微扬,表情治愈 |
+| 凌厉 / 肃杀 | 神情冷峻,目光如刀 | 眼神锐利,目光坚定 | 下颌收紧,表情威严 |
+| 惊讶 / 欣喜 | 眼睛微睁,表情生动 | 眼神明亮,目光聚焦 | 嘴角上扬,表情惊喜 |
+| 沉思 / 内省 | 神情淡淡,目光悠远 | 眼神放空,目光失焦 | 表情平静,气质内敛 |
+| 喜悦 / 欢快 | 表情灿烂,眼睛弯月 | 眼神明亮,目光灵动 | 脸颊微红,表情生动 |
+| 疲惫 / 倦怠 | 眼神朦胧,表情柔和 | 目光略显疲惫,眼神柔和 | 微微打哈欠,表情慵懒 |
+| 期待 / 盼望 | 眼神发光,表情鲜活 | 眼神期待,目光闪烁 | 嘴角上扬,表情生动 |
+| 决绝 / 坚定 | 神情认真,目光清亮 | 眼神坚定,目光向前 | 下巴微抬,表情果敢 |
+
+---
+
+## 光影氛围词库(国风3D)
+
+### 时间段光线
+
+| 时间段 | 主光词 | 色调词 | 气氛词 |
+|--------|--------|--------|--------|
+| 清晨 | 柔和晨光,暖色侧射 | 月白 + 青绿 | 薄雾弥漫,空气清新 |
+| 正午 | 明亮阳光,直射柔光 | 朱红 + 金黄高光 | 光影清晰,色彩鲜明 |
+| 傍晚/黄昏 | 逆光剪影,暖色渐变 | 朱红 + 靛蓝渐变 | 夕阳余晖,轮廓光 |
+| 夜间 | 冷色背景 + 暖光点缀 | 靛蓝主调 + 暖黄光点 | 宁静温馨,灯光柔和 |
+| 雨天 | 漫射冷光,无主光源 | 青绿 + 月白 | 空气湿润,低对比 |
+
+### 情绪光影
+
+| 情绪基调 | 光线类型 | 补充约束 |
+|----------|----------|----------|
+| 宫廷华贵 | 暖光照明,局部高光 | PBR材质反射,景深层次 |
+| 山水意境 | 体积光漫射,雾气氛围 | 青绿色调,景深虚化 |
+| 闺阁温婉 | 局部柔光,柔和阴影 | 胭脂色调,近景特写 |
+| 武侠肃杀 | 冷调阴影,硬光对比 | 靛蓝 + 墨黑,低饱和度 |
+| 月夜清幽 | 月光照明,冷暖对比 | 靛蓝背景,暖光点缀 |
+
+---
+
+## 场景质感约束词(按场景类型)
+
+| 场景类型 | 必加约束词 |
+|----------|-----------|
+| 宫廷建筑 | 朱红宫墙、金顶琉璃、雕梁画栋、汉白玉栏杆 |
+| 山水园林 | 青绿山水、飞檐亭台、曲径通幽、假山池沼 |
+| 闺阁室内 | 屏风格扇、雕花窗棂、纱幔帐帘、古典家具 |
+| 武侠场景 | 竹林/雪地/山崖、冷色调、氛围压抑、线条凌厉 |
+| 节日庆典 | 灯笼/彩带/烟花、高饱和暖色、氛围热闹、人群熙攘 |
+| 夜晚街景 | 灯笼/街灯/店铺、暖光点缀、冷色背景、倒影反射 |
+
+---
+
+## 固定风格锚定词(所有输出必须包含)
+
+**3D渲染锚定(必选):**
+
+3D渲染风格,高精度建模,PBR材质,国风3D,电影级光影
+
+**人物质感(含人物镜头时必选):**
+
+3D古风建模,高精贴图,服饰纹理清晰,发丝细腻渲染,光影层次丰富
+
+**场景质感(含场景镜头时必选):**
+
+3D场景渲染,建筑细节丰富,材质质感真实,景深虚化,体积光
+
+**一致性锚定(参考图模式必选):**
+
+保持人物造型与参考图一致,保持场景风格与参考图一致,保持光影色彩基调统一
+
+**风格收尾(固定):**
+
+国风3D渲染,东方美学,PBR材质,电影级渲染
+
+**画质锁定词(所有输出必须包含,置于风格收尾之后):**
+
+模式A(中文)——默认(画面无画内文字需求时):
+3D高清渲染,高细节,高精度建模,PBR材质,画面无字幕、无水印、无标题叠字
+
+模式A(中文)——画内文字场景(画面描述中含牌匾/对联/书籍等道具文字时):
+3D高清渲染,高细节,高精度建模,PBR材质,画面无字幕、无水印、无标题叠字,牌匾/对联等场景道具上的文字清晰可辨
+
+模式B(英文)——默认:
+3D rendered style, high-poly modeling, PBR materials, Chinese style, cinematic lighting, high detail, no subtitles, no captions, no watermark, no title overlay
+
+模式B(英文)——画内文字场景:
+3D rendered style, high-poly modeling, PBR materials, Chinese style, cinematic lighting, high detail, no subtitles, no captions, no watermark, no title overlay, legible text on in-scene props such as plaques and couplets
+
+**负向词模板(模式B 必须包含,置于提示词末尾):**
+
+> ⚠️ Seedream(模式A)**不支持负向提示词**,负向词仅适用于模式B。模式A 通过正向词中的质感锚定和画质锁定来保证画面质量。
+
+模式B(英文):
+no photorealistic, no realistic photography, no low-poly, no rough modeling, no plastic texture, no harsh lines, no cartoon style, no anime style, no western fantasy, no cyberpunk, no sci-fi, no modern elements, no subtitles, no captions, no watermark, no title overlay, no UI text
+
+---
+
+## 美学禁止项(生成时严格规避)
+
+以下词汇/风格不得出现于输出提示词中:
+
+- ❌ 写实摄影/照片级真实感词(如:photorealistic, realistic photography)
+- ❌ 高饱和荧光色/霓虹色/数码感强
+- ❌ 西方奇幻/赛博朋克/现代元素
+- ❌ 低精度建模/粗糙贴图/塑料质感
+- ❌ 卡通/动漫/二次元风格
+- ❌ 扁平设计/无3D纵深感
+- ❌ 色彩混乱/光影错误/透视错误
+- ❌ 现代建筑/现代服饰元素
+
+> 💡 **例外**:某些现代3D渲染技术(如光线追踪、体积光)可以合理使用,但应保持国风美学基调。
+
+---
+
+## 完整生成示例
+
+> 以下为同一输入分别使用模式A和模式B的对照展示,实际使用时**仅输出其中一种**。
+
+### 输入(分镜表行数据)
+
+| 序号 | 画面描述 | 场景 | 关联资产名称 | 时长 | 景别 | 运镜 | 角色动作 | 情绪 | 光影氛围 |
+|------|---------|------|-------------|------|------|------|---------|------|----------|
+| 1 | 女子身着华服站在宫殿前,手持宫灯 | 宫殿 | 女子 | 6s | 中景 | 缓推 | 侧身持灯,眼神温柔 | 温婉 / 典雅 | 暖光照明 |
+
+### 示例输出A(模式A · Seedream)
+
+[Prompt]
+3D渲染风格,高精度建模,PBR材质,国风3D,电影级光影,3D古风建模,高精贴图,服饰纹理清晰,发丝细腻渲染,光影层次丰富,中景构图,女子身着华服站在宫殿前,手持宫灯侧身而立,神情温婉,眼神温柔,朱红宫墙背景,金黄高光点缀,体积光氛围,景深虚化,国风3D渲染,东方美学,PBR材质,3D高清渲染,高细节,高精度建模,PBR材质,画面无字幕、无水印、无标题叠字。
+Based on the reference image of 女子,maintain consistent: face features, hairstyle, costume details. Generate a new scene: standing in front of palace at dusk, holding lantern. Keep visual style identical to reference.
+
+### 示例输出B(模式B · Nanobanana)
+
+```xml
+
+You are a 3D storyboard artist.
+Maintain strict visual continuity across all shots.
+
+
+Image [1]: 女子 — 3D古风造型,典雅服饰,国风3D风格
+
+
+- Same outfit, hairstyle, face features across ALL shots
+- Same 3D rendered style, PBR materials
+- Same scene lighting, Chinese aesthetic
+- Do NOT introduce photorealistic or western fantasy elements
+
+
+Medium shot, woman in elegant traditional Chinese attire standing before palace, holding lantern, gentle expression, soft gaze, cinematic lighting, volumetric fog, depth of field blur, PBR material rendering, high-poly modeling, Chinese palace architecture, warm lighting, golden highlights, Chinese style 3D render, Eastern aesthetics, high detail, no subtitles, no captions, no watermark, no title overlay.
+
+
+no photorealistic, no realistic photography, no low-poly, no rough modeling, no plastic texture, no harsh lines, no cartoon style, no anime style, no western fantasy, no cyberpunk, no sci-fi, no modern elements, no subtitles, no captions, no watermark, no title overlay, no UI text
+
+
+
+## 快速参考卡
+
+### 情绪 → 画面词速查
+
+| 情绪 | 面容关键词 | 光线匹配 |
+|------|-----------|---------|
+| 端庄 | 神情端庄,目光沉稳 | 暖光照明 + 高光 |
+| 忧伤 | 神情哀婉,眼神黯淡 | 冷调阴影 + 低对比 |
+| 温柔 | 神情温柔,眼神专注 | 局部柔光 + 柔焦 |
+| 凌厉 | 神情冷峻,目光如刀 | 冷调阴影 + 硬光 |
+| 喜悦 | 表情灿烂,眼睛弯月 | 暖光照明 + 高饱和 |
+| 沉思 | 神情淡淡,目光悠远 | 体积光 + 雾气 |
+| 疲惫 | 眼神朦胧,表情柔和 | 柔和光线 + 低对比 |
+| 坚定 | 神情认真,目光清亮 | 暖光侧射 + 清晰轮廓 |
diff --git a/data/skills/art_skills/3D_chinese_traditional/driector_skills/director_storyboard_table_style.md b/data/skills/art_skills/3D_chinese_traditional/driector_skills/director_storyboard_table_style.md
new file mode 100644
index 0000000..ec21f94
--- /dev/null
+++ b/data/skills/art_skills/3D_chinese_traditional/driector_skills/director_storyboard_table_style.md
@@ -0,0 +1,48 @@
+---
+name: director_storyboard_table_style
+description: 分镜表国风3D约束 — 定义国风3D风格在分镜表中的光影氛围规范、3D渲染质感、动作节奏、环境动态、运镜禁忌与转场禁忌。适用于任何叙事类型。
+metaData: director_skills
+---
+
+# 分镜表国风3D约束 · 国风3D · 技法参考
+
+---
+
+## 一、分镜表定位
+
+分镜表是导演将剧本转化为镜头语言的核心工具。以下仅提供国风3D风格在分镜表层面的约束规范。
+
+---
+
+## 二、光影与氛围
+
+- **同场戏光影统一** — 一场戏内不应出现两种以上光影方案,除非有明确的叙事转折(如日转夜、晴转雨等自然光变化)
+- **情绪色盘绑定** — 每场戏至少绑定 1 个情绪场景(宫廷华贵/山水意境/闺阁温婉/武侠肃杀/节日喜庆/月夜清幽),并在镜头组内保持主色+辅色连续性
+- **3D渲染光影规范** — 描述光影时须明确体积光方向与强度、环境光遮蔽层次、景深虚化范围。PBR材质在不同光影下的反射/折射效果是画面质感的关键
+- **冷暖色调与叙事阶段匹配** — 肃杀/忧郁/压抑段落使用冷色光(靛蓝+墨黑),禁用朱红/金黄等暖色调;暖色调(朱红+金黄+胭脂)仅在华贵、温婉、喜庆段落使用
+- **光影转场是高级手段** — 从窗纱漫射(E)渐变到月夜清辉(F)= 日转夜的时间流逝。在分镜表中标注光影变化点
+
+---
+
+## 三、环境动态
+
+- **环境动态增加画面呼吸感** — 花瓣飘落、烟雾升腾、水波荡漾、纱帘飘动、体积光中的尘埃微粒。每 3-4 个镜头至少安排一个有环境动态的镜头,避免画面"死"掉
+- **古风环境元素优先** — 环境动态应选用古风世界观内的元素:落花、飞絮、轻烟、流水、风过竹林、烛火摇曳,禁止出现现代元素
+- **3D粒子与体积效果** — 国风3D的环境动态应充分利用3D渲染优势:雾气的体积光散射、水面的PBR反射、落花的物理飘落轨迹、烟雾的体积渲染
+
+---
+
+## 四、古风动作节奏
+
+- **古风动作要慢** — 所有人物动作默认慢速。起身、转身、抬手都应标注"缓慢"
+- **服饰动态** — 古风服饰(宽袖、裙摆、披帛)的飘动是天然的动态资产,3D渲染中布料模拟的垂感与飘动效果应在画面描述中体现,增加画面的"活"感
+- **仪态约束** — 古风人物的举止应符合时代气质:行走稳缓、举手投足含蓄内敛、不出现现代化的肢体语言(如耸肩、摊手)
+- **3D动画质感** — 动作过渡应自然流畅,体现3D动画的精致感。避免僵硬的姿态切换,注意关节的自然弧度与重心转移
+
+---
+
+## 五、运镜禁忌
+
+- **禁用快速运镜** — 甩镜、急推、手持晃动与国风3D的典雅气质冲突
+- **禁用花式转场** — 划屏、旋转、百叶窗等与本风格不兼容
+- **善用3D空间运镜** — 可利用3D场景的空间纵深做缓慢的推拉/环绕运镜,但须保持沉稳优雅的节奏,禁止炫技式的穿越/飞行运镜
diff --git a/data/skills/art_skills/3D_chinese_traditional/images/1.png b/data/skills/art_skills/3D_chinese_traditional/images/1.png
new file mode 100644
index 0000000..0770585
Binary files /dev/null and b/data/skills/art_skills/3D_chinese_traditional/images/1.png differ
diff --git a/data/skills/art_skills/3D_chinese_traditional/images/场景原始.png b/data/skills/art_skills/3D_chinese_traditional/images/场景原始.png
new file mode 100644
index 0000000..479e721
Binary files /dev/null and b/data/skills/art_skills/3D_chinese_traditional/images/场景原始.png differ
diff --git a/data/skills/art_skills/3D_chinese_traditional/images/场景衍生.png b/data/skills/art_skills/3D_chinese_traditional/images/场景衍生.png
new file mode 100644
index 0000000..120ea2f
Binary files /dev/null and b/data/skills/art_skills/3D_chinese_traditional/images/场景衍生.png differ
diff --git a/data/skills/art_skills/3D_chinese_traditional/images/女生原始.png b/data/skills/art_skills/3D_chinese_traditional/images/女生原始.png
new file mode 100644
index 0000000..363e38b
Binary files /dev/null and b/data/skills/art_skills/3D_chinese_traditional/images/女生原始.png differ
diff --git a/data/skills/art_skills/3D_chinese_traditional/images/女生衍生.png b/data/skills/art_skills/3D_chinese_traditional/images/女生衍生.png
new file mode 100644
index 0000000..5fd9b5b
Binary files /dev/null and b/data/skills/art_skills/3D_chinese_traditional/images/女生衍生.png differ
diff --git a/data/skills/art_skills/3D_chinese_traditional/prefix.md b/data/skills/art_skills/3D_chinese_traditional/prefix.md
new file mode 100644
index 0000000..40ee4dc
--- /dev/null
+++ b/data/skills/art_skills/3D_chinese_traditional/prefix.md
@@ -0,0 +1,98 @@
+# 全局美学基础 · 国风3D
+
+---
+
+## 一、风格基因
+
+| 维度 | 定义 |
+|---|---|
+| **一级风格** | 国风3D渲染(Chinese Style 3D) |
+| **二级风格** | 高精度3D建模 · 传统东方美学 |
+| **情感基调** | 典雅大气、意境深远、华丽精致 |
+| **质感锚词** | PBR材质渲染、体积光、环境光遮蔽 |
+
+---
+
+## 二、全局色彩盘(风格基线)
+
+### 色彩使用层级
+
+| 层级 | 约束强度 | 说明 |
+|---|---|---|
+| L1 硬约束 | 高 | 中国传统色基线、3D渲染色 |
+| L2 软约束 | 中 | 场景色、服饰色、点缀色可按剧情微调 |
+| L3 例外机制 | 低 | 特殊场景/节日可临时突破局部色彩 |
+
+### 核心色盘
+
+| 序号 | 色名 | 色值 | 用途 |
+|---|---|---|---|
+| C1 | 月白 | #E0E8F0 | 天空、云雾、白衣底色 |
+| C2 | 青绿 | #4A8C7E | 山水、植被、青绿山水 |
+| C3 | 朱红 | #B22222 | 建筑、门窗、喜庆场景 |
+| C4 | 靛蓝 | #3B4B7C | 夜空、远山、冷色调 |
+| C5 | 金黄 | #D4AF37 | 装饰、纹样、高光 |
+| C6 | 墨黑 | #1C1C1C | 线条、轮廓、暗部 |
+| C7 | 胭脂 | #A94A5F | 人物肤色、唇色、腮红 |
+| C8 | 赭石 | #965E3E | 建筑木质、地面、暖调 |
+| C9 | 藤黄 | #F0E442 | 点缀、花饰、暖光 |
+| C10 | 素灰 | #B8B8B8 | 石材、过渡、中间调 |
+
+### 硬约束色(默认锁定)
+
+| 色项 | 对应色 | 规则 |
+|---|---|---|
+| 整体色调 | 中国传统色调为主 | 禁止高饱和荧光色 |
+| 材质质感 | PBR物理材质渲染 | 禁止塑料感/无质感 |
+| 光影方向 | 自然光 + 人工光结合 | 禁止单光源硬光 |
+
+### 情绪色盘
+
+| 情绪场景 | 主色 | 辅色 | 光效与对比建议 | 画面关键词 |
+|---|---|---|---|---|
+| 宫廷华贵 | C3 朱红 + C5 金黄 | C1 月白 + C6 墨黑 | 暖光照明,高光强调,景深层次 | 华丽、庄严、气派 |
+| 山水意境 | C2 青绿 + C1 月白 | C4 靛蓝 + C10 素灰 | 柔和体积光,景深虚化,雾气氛围 | 诗意、悠远、空灵 |
+| 闺阁温婉 | C7 胭脂 + C1 月白 | C5 金黄 + C10 素灰 | 柔和暖光,局部高光,近景特写 | 柔美、细腻、温馨 |
+| 武侠肃杀 | C6 墨黑 + C4 靛蓝 | C8 赭石 + C10 素灰 | 冷调阴影,硬光对比,氛围压抑 | 冷峻、凌厉、肃杀 |
+| 节日喜庆 | C3 朱红 + C9 藤黄 | C5 金黄 + C7 胭脂 | 高饱和暖光,全局高亮,色彩丰富 | 热闹、欢快、盛大 |
+| 月夜清幽 | C4 靛蓝 + C1 月白 | C6 墨黑 + C5 金黄点缀 | 冷色调月光,局部暖光,明暗对比 | 宁静、清冷、唯美 |
+
+### 色温约束
+
+| 参数 | 值 | 说明 |
+|---|---|---|
+| 整体色温 | 偏中性 4800-5500K(推荐) | 自然光主基调 |
+| 对比度 | 中 45-65%(建议区间) | 丰富层次感 |
+| 饱和度 | 中高 55-75%(建议区间) | 传统色盘饱满 |
+
+### 容差与例外
+
+| 项目 | 建议容差 |
+|---|---|
+| 色相偏移 | ±8° |
+| 饱和度偏移 | ±10% |
+| 明度偏移 | ±12% |
+
+---
+
+## 三、全局约束规则
+
+### 必守规则(所有技能继承)
+
+| 编号 | 规则 |
+|---|---|
+| R1 | 必须包含「3D渲染风格」风格锚定词 |
+| R2 | 必须声明「PBR材质 + 高精度建模」 |
+| R3 | 必须声明「中国传统色彩 + 东方美学」 |
+| R4 | 必须声明「电影级光影渲染」 |
+| R5 | 必须声明「国风3D美学」 |
+
+### 严禁项(所有技能继承)
+
+| 编号 | 严禁内容 |
+|---|---|
+| X1 | 严禁「写实摄影/照片级真实感」 |
+| X2 | 严禁「高饱和荧光色/霓虹色/数码感强」 |
+| X3 | 严禁「西方奇幻/赛博朋克/现代元素」 |
+| X4 | 严禁「低精度建模/粗糙贴图/塑料质感」 |
+| X5 | 严禁「色彩混乱/光影错误/透视错误」 |
\ No newline at end of file
diff --git a/data/skills/art_skills/3D_clay_stopmotion/README.md b/data/skills/art_skills/3D_clay_stopmotion/README.md
new file mode 100644
index 0000000..ca1e099
--- /dev/null
+++ b/data/skills/art_skills/3D_clay_stopmotion/README.md
@@ -0,0 +1,33 @@
+# 定格动画黏土风格说明
+
+本风格专为"定格动画黏土质感"题材打造,所有美术提示词、规范和生成内容均严格限定于:
+
+- **定格动画世界观**:以复古/奇幻生活为背景,涵盖木屋、森林、街道、咖啡馆、花园等,体现定格动画特有的生活气息。
+- **黏土质感**:所有角色、场景、道具均以定格黏土动画为标准,强调黏土肌理清晰度、手指压痕可见度、材质颗粒感。
+- **治愈怀旧美学**:在黏土质感基础上追求电影感氛围,画面色调温暖柔和,细节丰富,整体氛围温暖治愈、怀旧感人。
+- **情感表达**:适合展现温柔、治愈、浪漫的定格动画故事,强调手工质感下的情感表达。
+
+## 适用范围
+
+- 定格动画黏土题材的AI美术生成(角色、场景、道具、分镜等)
+- 需要极致黏土质感、细腻光影、温馨治愈氛围的视觉创作
+
+## 严禁内容
+
+- 现代3D动画风格、光滑塑料、CG渲染
+- 现代元素、现代建筑、现代服饰
+- 高饱和荧光色、霓虹色
+- 黑暗暴力、成人向内容
+
+## 风格体验
+
+在本风格下,您将体验到:
+
+- 角色面容精致、气质温柔或清亮,服饰、造型均为定格黏土动画风格
+- 场景空间层次丰富,黏土肌理清晰,氛围真实且富有诗意
+- 道具、日常物品、环境细节均为复古/奇幻造型,手工质感细腻
+- 分镜与画面均以定格动画为基础,强调叙事与情感表达
+
+---
+
+本风格仅适用于"定格动画黏土"相关项目。如需其他风格(如现代3D、CG、插画、现代等),请勿使用本套提示词。
\ No newline at end of file
diff --git a/data/skills/art_skills/3D_clay_stopmotion/art_prompt/art_character.md b/data/skills/art_skills/3D_clay_stopmotion/art_prompt/art_character.md
new file mode 100644
index 0000000..d8f4ec8
--- /dev/null
+++ b/data/skills/art_skills/3D_clay_stopmotion/art_prompt/art_character.md
@@ -0,0 +1,200 @@
+# 黏土定格动画角色基础形象生成 · 约束手册
+
+---
+
+## 一、基础形象原则
+
+1. **黏土肌理为魂** — 表面可见手工捏塑痕迹,手指压痕/黏土纹理清晰可辨
+2. **3D卡通底模** — 基础打底为简化造型的黏土角色,后续服化均为叠加层
+3. **四视图一致** — 面容/体型/发型/基础服装跨视图高度统一
+4. **治愈氛围** — 无妆状态仍需体现角色性格(柔和/圆润/亲切)
+
+---
+
+## 二、面容约束
+
+### 女性面容
+
+| 部位 | 约束 | 提示词 |
+|---|---|---|
+| 脸型 | 圆润鹅蛋脸、线条柔和、无尖锐棱角 | 圆润鹅蛋脸、线条柔和 |
+| 眼型 | 圆形大眼、双眼皮清晰、眼尾平缓 | 圆润大眼、明亮眼神 |
+| 眉型 | 弯曲自然、弧度柔和 | 弯眉、自然眉形 |
+| 鼻型 | 小圆鼻、鼻梁短而圆润 | 小圆鼻、鼻梁柔和 |
+| 唇型 | 微笑唇型、唇峰圆润 | 圆润唇型、微微含笑 |
+| 气质 | 亲切温暖、治愈感强 | 面容温暖、治愈系表情 |
+
+### 男性面容
+
+| 部位 | 约束 | 提示词 |
+|---|---|---|
+| 脸型 | 圆润方脸、下颌线条柔和 | 圆润方脸、线条温和 |
+| 眼型 | 明亮圆润、眼神温和 | 明亮大眼、温和眼神 |
+| 鼻型 | 圆润鼻型、鼻翼柔和 | 圆润鼻子、柔和鼻形 |
+| 唇型 | 自然唇形、微微上扬 | 自然唇形、友好笑容 |
+| 气质 | 温和亲切 / 稳重可靠 | 温和可靠、亲切感强 |
+
+---
+
+## 三、肤感约束
+
+### 女性
+
+| 项目 | 约束 | 提示词 |
+|---|---|---|
+| 肤色 | 暖调奶油色、柔和均匀 | 暖奶油色肌肤、柔和肤色 |
+| 光泽 | 哑光黏土质感、无高光 | 哑光黏土质感、matte clay texture |
+| 质感 | 黏土肌理清晰、可见捏塑痕迹 | 黏土表面、手工捏塑痕迹 |
+| 露肤 | 面部/颈部/手部 | 肌肤温润、黏土质感 |
+
+### 男性
+
+| 项目 | 约束 | 提示词 |
+|---|---|---|
+| 肤色 | 暖调米色、柔和均匀 | 暖调米色肌肤、柔和肤色 |
+| 光泽 | 哑光黏土质感、无高光 | 哑光黏土质感、matte clay texture |
+| 质感 | 黏土肌理清晰、可见手指压痕 | 黏土表面、手工痕迹清晰 |
+
+---
+
+## 四、体型约束
+
+### 女性
+
+| 项目 | 约束 | 提示词 |
+|---|---|---|
+| 身高 | 默认155-165cm,头身比体现 | {身高}cm tall |
+| 头身比 | 六头身至七头身,头大身小 | 6-7 heads tall、圆润比例 |
+| 肩颈 | 圆润肩线、无锐利棱角 | 圆润肩颈、柔和线条 |
+| 手部 | 圆润手指、关节简化 | 圆润小手、简化手部细节 |
+| 体态 | 柔和曲线、无攻击性姿态 | 姿态柔和、曲线圆润 |
+
+### 男性
+
+| 项目 | 约束 | 提示词 |
+|---|---|---|
+| 身高 | 默认170-180cm,头身比体现 | {身高}cm tall |
+| 头身比 | 六头身半至七头半 | 6.5-7.5 heads tall、圆润比例 |
+| 肩颈 | 圆润宽肩、肩部柔和 | 圆润肩部、温和肩线 |
+| 手部 | 圆润手掌、指节简化 | 圆润手掌、简化指节 |
+| 体态 | 稳重大方、线条柔和 | 姿态稳重、线条圆润 |
+
+---
+
+## 五、基础发型约束
+
+### 女性
+
+| 项目 | 约束 | 提示词 |
+|---|---|---|
+| 发色 | 暖棕、栗色、深褐等自然色系 | 暖棕色长发、栗色秀发 |
+| 发长 | 及肩或及腰 | 及肩长发 |
+| 发质 | 黏土塑形、发束块状化 | 黏土发型、块状发束 |
+| 造型 | 自然散落、简单扎发、无复杂发饰 | 自然发束、简单束发 |
+
+### 男性
+
+| 项目 | 约束 | 提示词 |
+|---|---|---|
+| 发色 | 暖棕、深褐、黑色 | 暖棕色短发、深色发型 |
+| 发长 | 短发或中长发 | 短发、中长发 |
+| 发质 | 黏土塑形、发束块状化 | 黏土发型、块状发束 |
+| 造型 | 自然散落、简单束发 | 自然发束、简单发型 |
+
+---
+
+## 六、基础服装约束
+
+> 基础服装为简化造型,无复杂细节。
+
+### 女性基础服装
+
+简化连衣裙或上衣+裙装,颜色为低饱和暖色调,无花纹装饰。
+
+### 男性基础服装
+
+简化衬衫+裤装,颜色为低饱和暖色调,无花纹装饰。
+
+### 着装统一规则
+
+- 服装风格统一,确保后续服饰叠加无色彩干扰
+- 除面部/手部/颈部外基本覆盖
+- 四视图服装款式完全一致
+- 基础服装仅为安全打底,焦点在面容与体态
+
+---
+
+## 七、四视图设定图规范
+
+### 视图定义
+
+| 位置 | 视图 | 角度 | 景别 | 要求 | 提示词 |
+|---|---|---|---|---|---|
+| 左一 | 人像特写 | 正面平视 | 头顶至锁骨 | 面部占60%+,五官清晰 | portrait closeup、face detail |
+| 左二 | 正视图 | 正面 0° | 全身立像 | 面对镜头、从头顶到脚底完整 | front view、full body |
+| 右二 | 侧视图 | 右侧 90° | 全身立像 | 侧面轮廓清晰、从头到脚完整 | side view、profile、full body |
+| 右一 | 后视图 | 后方 180° | 全身立像 | 后脑/背部/发尾/脚部清晰 | back view、rear view、full body |
+
+### 画面规范
+
+| 项目 | 约束 |
+|---|---|
+| 布局 | 同一画面从左至右并排四视图 |
+| 背景 | 纯净中性灰 #E8E8E8 |
+| 站姿 | 自然站立、双脚平行微分、双臂自然下垂 |
+| 全身展示 | 全身立像必须从头到脚完整入画,严禁裁切 |
+| 特写展示 | 人像特写必须从头顶到锁骨完整入画,严禁裁切 |
+| 表情 | 中性微表情,符合角色性格 |
+| 光线 | 暖调柔光,前方主光+双侧补光,无硬阴影 |
+| 一致性 | 四视图的肤色/体型/发型/面容/基础服装完全一致 |
+| 画面比例 | 建议 4:1 或 3:1 |
+
+---
+
+## 八、提示词模板
+
+```
+黏土定格动画{性别}角色四视图设定图,定格动画风格,3D卡通渲染,暖调光影,
+character design sheet,character turnaround,
+{脸型},{眼型},{鼻型},{唇型},{整体气质},
+{肤色},哑光黏土质感,黏土肌理清晰,手工捏塑痕迹,
+{身高描述},{头身比,如:7 heads tall proportion},{身材描述},{体态描述},
+{发色}{发长},黏土发型,{基础造型},无复杂发饰,
+(女性:简化连衣裙 / 男性:简化衬衫+裤装),低饱和暖色调,无花纹,
+同一画面左至右并排:人像特写+正视图+侧视图+后视图,
+人像特写从头顶到锁骨完整展示,head to collarbone complete,
+全身立像从头顶到脚底完整展示,full body head to toe,
+自然站立,纯净中性灰背景,暖调柔光,无硬阴影,
+四视图一致性,黏土肌理细腻渲染,表情柔和治愈
+图中不要有任何文字
+```
+
+---
+
+## 九、约束规则
+
+### 必守
+
+| 编号 | 规则 |
+|---|---|
+| R1 | 必须为「哑光黏土质感」状态 |
+| R2 | 必须声明基础服装(女性:简化连衣裙;男性:简化衬衫+裤装) |
+| R3 | 必须声明「无复杂发饰、无现代配饰」 |
+| R4 | 必须指定「纯净中性灰背景」 |
+| R5 | 必须指定「四视图一致性」 |
+| R6 | 全身立像必须从头到脚完整展示,严禁裁切 |
+| R7 | 必须指定角色身高并通过头身比约束全身比例(默认6-7头身) |
+| R8 | 人像特写必须从头顶到锁骨完整展示,严禁裁切头顶 |
+
+### 严禁
+
+| 编号 | 严禁 |
+|---|---|
+| X1 | 真人写实摄影质感/照片级真实 |
+| X2 | 冷硬光线/硬阴影/高对比 |
+| X3 | 尖锐棱角/攻击性姿态 |
+| X4 | 复杂场景背景(必须纯灰底) |
+| X5 | 夸张表情/动态姿势 |
+| X6 | 全身立像裁切头顶或脚底 |
+| X7 | 人像特写裁切头顶 |
+| X8 | 忽略身高和头身比约束 |
\ No newline at end of file
diff --git a/data/skills/art_skills/3D_clay_stopmotion/art_prompt/art_character_derivative.md b/data/skills/art_skills/3D_clay_stopmotion/art_prompt/art_character_derivative.md
new file mode 100644
index 0000000..033fd09
--- /dev/null
+++ b/data/skills/art_skills/3D_clay_stopmotion/art_prompt/art_character_derivative.md
@@ -0,0 +1,270 @@
+# 黏土定格动画角色衍生资产生成 · 约束手册
+
+---
+
+## 一、叠加原则
+
+1. **面容不变** — 叠加后五官必须与底模完全一致
+2. **姿态不变** — 保持底模自然站立姿态
+3. **逐层可控** — 每层独立描述,便于按层替换
+4. **风格统一** — 所有服化元素服从同一黏土美学体系
+5. **质感不降** — 叠加后黏土质感标准不低于底模
+6. **纯服化范畴** — 仅叠加妆容/发型/服饰/配饰,禁止引入道具、场景、环境
+
+---
+
+## 二、叠加层级
+
+| 层级 | 内容 | 说明 |
+|---|---|---|
+| L0 | 底模 | 基础形象底模,不修改 |
+| L1 | 妆容 | 基础装饰性色彩点缀 |
+| L2 | 发型造型 | 发髻/束发+简单发饰 |
+| L3 | 中衣/内搭 | 替换白色基础中衣 |
+| L4 | 外衣/主服 | 外套/长袍/外衣 |
+| L5 | 配饰 | 头饰/耳饰/项饰/腰饰 |
+
+> **范畴边界**:人物衍生资产仅包含 L0–L5 层级(服化妆造),不包含道具、场景环境、姿态动作。
+
+---
+
+## 三、妆容约束(L1)
+
+### L1 决策原则
+
+| 线索类型 | 典型线索 | L1 决策 |
+|---|---|---|
+| 无明显面部强调 | 仅服饰/发型变化 | 基础装饰妆 |
+| 轻微面部线索 | 柔和、含笑、气色提亮 | 轻装饰妆 |
+| 明确场景线索 | 婚礼、庆典、正式场合 | 正式装饰妆 |
+
+### 女性妆容风格矩阵
+
+| 风格 | 适用场景 | 核心提示词 |
+|---|---|---|
+| 清新裸妆 | 日常、初遇 | 妆容自然、清透淡雅 |
+| 甜暖桃妆 | 甜宠、约会 | 粉色腮红、暖调唇色 |
+| 节日盛妆 | 庆典、大婚 | 浓妆华美、色彩丰富 |
+| 夜宴妆 | 夜晚、聚会 | 暖调眼影、微光唇色 |
+
+### 通用底肤(所有妆容共享)
+
+| 项目 | 约束 | 提示词 |
+|---|---|---|
+| 质感 | 哑光黏土质感 | 哑光黏土、matte clay |
+| 白度 | 暖调奶油色 | 暖奶油肌、cream warm tone |
+| 禁止 | 高光/油光/镜面效果 | — |
+
+### 分部位(以甜暖桃妆为例)
+
+| 部位 | 约束 | 提示词 |
+|---|---|---|
+| 腮红 | 暖粉、苹果肌微扫 | 暖粉腮红、柔和苹果肌 |
+| 眼影 | 暖棕/橘色系、极淡 | 暖棕眼影、极淡眼妆 |
+| 唇妆 | 暖粉/珊瑚色、哑光 | 暖粉唇色、哑光唇妆 |
+| 眉毛 | 自然弯眉、颜色匹配发色 | 自然弯眉、柔和眉形 |
+
+### 男性妆容
+
+| 项目 | 约束 | 提示词 |
+|---|---|---|
+| 底肤 | 哑光黏土质感、暖调米色 | 哑光黏土、暖调米色 |
+| 原则 | 伪素颜——看着自然但肤色均匀 | 自然肤色、伪素颜 |
+| 腮红 | 极淡气色、不可明显堆色 | 极淡气色、自然气色 |
+| 唇色 | 自然血色、哑光 | 自然唇色、哑光唇 |
+
+---
+
+## 四、发型造型约束(L2)
+
+### 女性造型类型
+
+| 造型 | 描述 | 适用 | 提示词 |
+|---|---|---|---|
+| 半挽发髻 | 发顶挽髻+后方垂发 | 日常、出行 | 半挽发髻、青丝半绾 |
+| 高髻 | 高髻盘起、优雅 | 正式、庆典 | 高髻盘发、优雅发髻 |
+| 低垂发髻 | 侧偏低髻、慵懒 | 私密、休闲 | 低垂发髻、慵懒发式 |
+| 双发髻 | 双髻对称、少女 | 年轻角色 | 双发髻、少女发型 |
+| 全散发 | 长发全散 | 受伤、落魄 | 长发散落、柔顺秀发 |
+
+### 女性发饰
+
+| 项目 | 约束 | 提示词 |
+|---|---|---|
+| 风格 | 复古温馨、不过于复杂 | 复古发饰、温馨装饰 |
+| 材质 | 黏土材质、简单金属 | 黏土发饰、简单金属 |
+| 装饰 | 花朵/珠串/丝带 | 花朵发饰、珠串点缀 |
+
+### 男性造型类型
+
+| 造型 | 适用 | 提示词 |
+|---|---|---|
+| 束发半冠 | 日常、简约 | 束发半冠、自然束发 |
+| 全冠高束 | 正式、典礼 | 高束发冠、正式发型 |
+| 散发披肩 | 私密、休闲 | 散发披肩、自然长发 |
+| 束发马尾 | 行动、活动 | 束发马尾、干练发型 |
+
+---
+
+## 五、服饰约束(L3+L4)
+
+### 女性服饰矩阵
+
+| 风格 | 款式 | 适用 | 提示词 |
+|---|---|---|---|
+| 日常长裙 | 简单长裙 | 日常、休闲 | 简单长裙、日常着装 |
+| 礼服长裙 | 层叠长裙 | 正式、庆典 | 层叠长裙、华美礼服 |
+| 轻便常服 | 短衫+裙装 | 行动、活动 | 轻便常服、短衫裙装 |
+| 寝衣 | 宽松长裙 | 室内、夜间 | 宽松寝衣、舒适长裙 |
+| 大婚嫁衣 | 红色层叠长裙 | 婚礼 | 红色嫁衣、层叠红装 |
+
+### 女性服饰通用约束
+
+| 项目 | 约束 | 提示词 |
+|---|---|---|
+| 主色 | 暖色调为主、低饱和 | 暖色调衣服、柔和色彩 |
+| 材质 | 黏土塑形、简单纹理 | 黏土材质、简单纹理 |
+| 质感 | 纹理清晰可见 | 衣服纹理清晰 |
+| 层次 | 简单层叠、层次分明 | 简单层叠、层次分明 |
+
+### 男性服饰矩阵
+
+| 风格 | 适用 | 提示词 |
+|---|---|---|
+| 复古常服 | 日常、居家 | 复古长衫、日常常服 |
+| 劲装 | 冒险、行动 | 劲装、冒险服饰 |
+| 外袍大氅 | 出场、夜行 | 外袍、深色大氅 |
+| 常服便装 | 休闲、私密 | 常服、便装 |
+| 礼服 | 庆典、典礼 | 礼服、正式服装 |
+
+---
+
+## 六、配饰约束(L5)
+
+### 女性配饰
+
+| 类型 | 约束 | 提示词 |
+|---|---|---|
+| 头饰 | 不过于复杂、温馨风格 | 简单头饰、温馨装饰 |
+| 耳饰 | 小耳坠/耳环 | 小耳坠、精致耳环 |
+| 项饰 | 简单项链/项圈 | 简单项链、精致项圈 |
+| 腰饰 | 简单腰带/玉佩 | 简单腰带、小巧玉佩 |
+| 手饰 | 简单手镯 | 简单手镯、小巧手镯 |
+
+### 男性配饰
+
+| 类型 | 约束 | 提示词 |
+|---|---|---|
+| 发冠 | 简单发冠/玉簪 | 简单发冠、玉簪束发 |
+| 腰封 | 简单腰封/革带 | 简单腰封、质感分明 |
+| 玉佩 | 通透温润 | 腰间玉佩、温润玉佩 |
+| 饰物 | 简单挂饰/佩剑(可选) | 简单挂饰、小巧佩剑 |
+
+---
+
+## 七、服化组合速查
+
+| 场景 | 妆容 | 发型 | 服饰 | 配饰 |
+|---|---|---|---|---|
+| 日常闺中 | 清新裸妆 | 半挽发髻 | 日常长裙 | 简单 |
+| 初次相遇 | 清新裸妆 | 半挽/高髻 | 日常长裙 | 中等 |
+| 甜宠互动 | 甜暖桃妆 | 半挽/低垂 | 日常长裙 | 中等 |
+| 正式亮相 | 节日盛妆 | 高髻 | 礼服长裙 | 繁复 |
+| 夜间密谈 | 清新/桃妆 | 全散/低垂 | 寝衣 | 极简 |
+| 大婚典礼 | 节日盛妆 | 高髻 | 大婚嫁衣 | 繁复 |
+
+---
+
+> **🔍 未覆盖场景推断规则**
+>
+> 当用户描述的场景/情境不在上表时,根据本风格核心基因自行推断:
+>
+> | 推断维度 | 黏土定格动画基因 |
+> |---|---|
+> | 妆容强度 | 默认清新裸妆(哑光黏土质感);甜宠/日常→甜暖桃妆;庆典/大婚→节日盛妆;夜晚/室内→夜宴妆 |
+> | 发型 | 日常→半挽发髻;正式/庆典→高髻;私密/休闲→低垂发髻或全散发;所有发型保持黏土塑形感 |
+> | 服饰 | 复古奇幻基调;日常→简约长裙;正式→层叠礼服长裙;行动→轻便常服;材质始终用黏土塑形+简单纹理 |
+> | 配饰繁度 | 保持温馨不过于繁复;庆典→繁复(花朵+珠串);日常→简单;行动→极简 |
+> | 质感基准 | 哑光黏土质感始终锁定;禁止高光/金属反射;暖调奶油色肤感优先 |
+
+## 八、四视图设定图规范
+
+### 视图定义
+
+| 位置 | 视图 | 角度 | 景别 | 要求 | 提示词 |
+|---|---|---|---|---|---|
+| 左一 | 人像特写 | 正面平视 | 面部至锁骨 | 面部占60%+,五官/妆容清晰 | portrait closeup、face detail |
+| 左二 | 正视图 | 正面 0° | 全身立像 | 面对镜头、服饰正面全貌 | front view、full body |
+| 右二 | 侧视图 | 右侧 90° | 全身立像 | 纯侧面轮廓、服饰侧面层次 | side view、profile、full body |
+| 右一 | 后视图 | 后方 180° | 全身立像 | 后脑发饰/背部服饰/发尾清晰 | back view、rear view、full body |
+
+### 画面规范
+
+| 项目 | 约束 |
+|---|---|
+| 布局 | 同一画面从左至右并排四视图 |
+| 背景 | 纯净中性灰 #E8E8E8 |
+| 站姿 | 自然站立、双脚平行微分、双臂自然下垂 |
+| 表情 | 符合妆容风格的微表情,仅限面部微表情 |
+| 光线 | 暖调柔光,前方主光+双侧补光,无硬阴影 |
+| 一致性 | 四视图的面容/妆容/发型/发饰/服饰/配饰完全一致 |
+| 画面比例 | 建议 4:1 或 3:1 |
+
+---
+
+## 九、提示词模板
+
+```
+以角色基础形象图为底图,黏土定格动画{性别}角色四视图设定图,定格动画风格,3D卡通渲染,暖调光影,
+character design sheet,character turnaround,
+保持基础形象面容不变,{整体气质},
+【L1·妆容】根据用户线索决策:{基础装饰妆/轻装饰妆/正式装饰妆};使用 {妆容风格},哑光黏土质感,{眉妆},{眼妆},{唇妆},
+【L2·发型】{造型类型},黏土发型,{发饰描述},
+【L3+L4·服饰】{主色}{款式},{材质},{装饰工艺},衣服纹理清晰,
+【L5·配饰】{头饰},{耳饰},{项饰},{腰饰},
+同一画面左至右并排:人像特写+正视图+侧视图+后视图,
+自然站立,纯净中性灰背景,暖调柔光,无硬阴影,
+四视图一致性,黏土肌理细腻渲染,表情柔和治愈
+图中不要有任何文字
+```
+
+---
+
+## 十、约束规则
+
+### 必守
+
+| 编号 | 规则 |
+|---|---|
+| R1 | 叠加后面容必须与底模一致 |
+| R2 | 服饰必须用「衣服纹理清晰」 |
+| R3 | 女性配饰必须「不过于复杂、温馨风格」 |
+| R4 | 妆容/发型/服饰/配饰风格统一 |
+| R5 | 必须输出四视图设定图 |
+| R6 | 必须指定「纯净中性灰背景」 |
+| R7 | 必须指定「四视图一致性」 |
+| R8 | **仅输出提示词**——禁止输出非提示词内容 |
+| R9 | **禁止包含场景描述** |
+| R10 | **禁止道具交互** |
+| R11 | **姿态保持不变** |
+| R12 | **L1 必须先分析再决策** |
+| R13 | **所有衍生资产均需妆造** |
+| R14 | **上妆强度需克制** |
+| R15 | **道具/场景/动作不作强度升级依据** |
+
+### 严禁
+
+| 编号 | 严禁 |
+|---|---|
+| X1 | 叠加后面容偏移 |
+| X2 | 配饰过于简单/现代化 |
+| X3 | 妆容/服饰风格互相冲突 |
+| X4 | 复杂场景背景(必须纯灰底) |
+| X5 | 四视图间服化妆造不一致 |
+| X6 | 输出提示词以外的任何内容 |
+| X7 | 加入任何道具交互 |
+| X8 | 改变底模姿态 |
+| X9 | 加入表情与姿态联动描述 |
+| X10 | 未分析用户线索就直接套用固定妆容 |
+| X11 | 错误保持素颜 |
+| X12 | 仅因道具/场景/动作词而误把妆容升级 |
\ No newline at end of file
diff --git a/data/skills/art_skills/3D_clay_stopmotion/art_prompt/art_prop.md b/data/skills/art_skills/3D_clay_stopmotion/art_prompt/art_prop.md
new file mode 100644
index 0000000..81c6b99
--- /dev/null
+++ b/data/skills/art_skills/3D_clay_stopmotion/art_prompt/art_prop.md
@@ -0,0 +1,132 @@
+# 黏土定格动画道具图像生成 · 约束手册
+
+---
+
+## 一、道具设计原则
+
+1. **功能可读** — 道具用途一目了然,造型服务于功能
+2. **黏土质感极致** — 材质纹理必须清晰可辨(黏土/木质/布料/纸)
+3. **年代一致** — 所有道具必须符合古风世界观,禁止现代元素
+4. **尺度明确** — 通过参照物或标注暗示道具真实尺寸
+5. **纯道具独立展示** — 画面中只能出现道具本身,严禁出现任何人物、手部、肢体
+
+---
+
+## 二、道具分类与美学约束
+
+### 2.1 兵器类
+
+| 项目 | 约束 | 提示词 |
+|---|---|---|
+| 类型 | 剑/刀/弓/枪/扇 | {兵器类型},古风兵器 |
+| 材质 | 黏土塑形+简单金属装饰+丝绸剑穗 | 黏土质感、金属装饰精致 |
+| 装饰 | 剑鞘/刀柄雕花、流苏、暗纹 | 雕花精致、流苏垂坠 |
+| 光泽 | 哑光黏土质感、金属部分微反光 | 哑光黏土、微金属光泽 |
+| 提示词 | 古风{兵器},黏土质感,雕花精致 | — |
+
+### 2.2 饰品类
+
+| 项目 | 约束 | 提示词 |
+|---|---|---|
+| 类型 | 簪/钗/璎珞/玉佩/手镯/耳坠 | {饰品类型},古风首饰 |
+| 材质 | 黏土+简单金属/珠串/宝石 | 黏土材质、简单金属装饰 |
+| 工艺 | 精致细腻、花纹清晰 | 工艺精致、花纹清晰 |
+| 光泽 | 哑光黏土质感、金属微光 | 哑光黏土、微金属光泽 |
+| 提示词 | 古风{饰品},{材质},工艺精致 | — |
+
+### 2.3 生活器物类
+
+| 项目 | 约束 | 提示词 |
+|---|---|---|
+| 类型 | 茶具/酒具/香炉/棋盘/书卷/灯笼 | {器物类型},古风器物 |
+| 材质 | 黏土/木质/陶瓷 | 黏土质感、木质纹理 |
+| 质感 | 釉面/木纹/竹节清晰 | 纹理清晰、质感温润 |
+| 风格 | 素雅/温馨按场景切换 | 素雅古朴 / 温馨精致 |
+| 提示词 | 古风{器物},{材质}质感,纹理清晰 | — |
+
+### 2.4 信物/关键道具类
+
+| 项目 | 约束 | 提示词 |
+|---|---|---|
+| 类型 | 信物/令牌/卷轴/药瓶/玉印 | {道具类型},古风道具 |
+| 特殊性 | 需有辨识度、叙事象征意义 | 独特造型、寓意深远 |
+| 做旧感 | 可按剧情需要添加年代感 | 古旧斑驳 / 崭新精致 |
+| 提示词 | 古风{道具},{材质},{状态},独特造型 | — |
+
+---
+
+## 三、多角度设定图规范
+
+### 视图定义
+
+| 位置 | 视图 | 角度 | 要求 | 提示词 |
+|---|---|---|---|---|
+| 左上 | 正面图 | 正面 0° | 道具完整正面形态 | front view |
+| 右上 | 侧面图 | 侧面 90° | 厚度/轮廓/结构清晰 | side view |
+| 左下 | 背面图 | 背面 180° | 道具背部结构/装饰 | back view |
+| 右下 | 细节特写 | 局部放大 | 材质纹理/工艺细节 | detail closeup |
+
+### 画面规范
+
+| 项目 | 约束 |
+|---|---|
+| 布局 | 同一画面四宫格(2×2),上下左右四视角 |
+| 背景 | 纯净中性灰 #E8E8E8 |
+| 光线 | 暖调柔光,无硬阴影 |
+| 比例 | 每格道具占格内主体 70%+ |
+| 投影 | 允许自然地面微投影 |
+| 画面比例 | 建议 1:1 |
+
+---
+
+## 四、材质渲染约束
+
+| 材质 | 渲染要求 | 提示词 |
+|---|---|---|
+| 黏土 | 哑光质感、手指压痕微可见 | 哑光黏土质感、matte clay |
+| 木质 | 木纹清晰、年轮可见 | 木纹清晰、质感温润 |
+| 金属 | 微反光、无过强高光 | 微金属光泽、哑光金属 |
+| 陶瓷 | 釉面温润、色泽柔和 | 釉面温润、瓷质柔和 |
+| 布/纸 | 纤维质感、边缘自然 | 布料纹理、纸质古朴 |
+| 宝石 | 哑光质感、内部光线 | 宝石哑光、温润质感 |
+
+---
+
+## 五、提示词模板
+
+```
+黏土定格动画古风道具设定图,定格动画风格,3D卡通渲染,暖调光影,极致细节,
+{道具类型},{材质描述},{工艺/装饰描述},{状态描述},
+纯道具静物展示,道具独立陈列,无人持有,无人佩戴,
+同一画面四宫格(2×2):左上正面图+右上侧面图+左下背面图+右下细节特写,
+纯净中性灰背景,暖调柔光,无硬阴影,
+材质纹理超清晰,黏土哑光质感,{材质光泽描述}
+图中不要有任何文字,
+画面中不能出现任何人物、手部、手指、肢体,道具不可处于被握持或佩戴状态
+```
+
+---
+
+## 六、约束规则
+
+### 必守
+
+| 编号 | 规则 |
+|---|---|
+| R1 | 必须指定「纯净中性灰背景」 |
+| R2 | 必须明确道具材质与工艺 |
+| R3 | 道具造型必须符合古风世界观 |
+| R4 | 必须指定「哑光黏土质感」 |
+| R5 | 必须指定「暖调柔光」 |
+
+### 严禁
+
+| 编号 | 严禁 |
+|---|---|
+| X1 | 复杂场景背景 |
+| X2 | 道具与人物同画面 |
+| X3 | 出现任何人物形象 |
+| X4 | 道具处于被持有/佩戴/使用中的状态 |
+| X5 | 出现暗示人物存在的元素 |
+| X6 | 冷硬光线/强对比度 |
+| X7 | 过度高光/镜面反光 |
diff --git a/data/skills/art_skills/3D_clay_stopmotion/art_prompt/art_prop_derivative.md b/data/skills/art_skills/3D_clay_stopmotion/art_prompt/art_prop_derivative.md
new file mode 100644
index 0000000..fa6941e
--- /dev/null
+++ b/data/skills/art_skills/3D_clay_stopmotion/art_prompt/art_prop_derivative.md
@@ -0,0 +1,117 @@
+# 黏土定格动画道具衍生状态生成 · 约束手册
+
+---
+
+## 一、衍生原则
+
+1. **造型锚定** — 道具核心造型/轮廓在所有状态中可识别
+2. **状态可读** — 状态差异必须一目了然
+3. **叙事服务** — 每种状态变体服务于特定剧情节点
+4. **渐进退化** — 损伤/老化状态应有合理的物理逻辑
+5. **纯道具独立展示** — 画面中只能出现道具本身
+
+---
+
+## 二、状态类型
+
+### 2.1 使用状态
+
+| 状态 | 描述 | 适用道具 | 提示词 |
+|---|---|---|---|
+| 崭新 | 完好无损、哑光温润 | 所有道具 | 崭新、完好无损、温润质感 |
+| 日常使用 | 微磨损、自然包浆 | 兵器/器物/饰品 | 日常使用痕迹、自然包浆 |
+| 陈旧 | 明显年代感、色泽柔和 | 器物/信物/卷轴 | 古旧斑驳、年代感、色泽柔和 |
+
+### 2.2 损伤状态
+
+| 状态 | 描述 | 适用道具 | 提示词 |
+|---|---|---|---|
+| 微损 | 小裂纹/小缺口/轻微磨损 | 瓷器/玉佩/兵器 | 细微裂纹、轻微缺口 |
+| 破损 | 明显裂缝/断裂/破碎 | 瓷器/饰品/兵器 | 裂缝明显、碎裂、断裂 |
+| 残片 | 仅剩部分/碎片 | 瓷器/玉佩/信物 | 残片、碎片、仅存半块 |
+
+### 2.3 特殊状态
+
+| 状态 | 描述 | 适用道具 | 提示词 |
+|---|---|---|---|
+| 染血 | 血迹附着 | 兵器/衣物/信物 | 血迹斑驳、染血 |
+| 浸水/湿润 | 水渍、湿润反光 | 卷轴/信物/衣物 | 浸水、纸张湿润、墨迹晕染 |
+| 燃烧/焦损 | 焦黑边缘、火烧痕迹 | 卷轴/信物/木质品 | 边缘焦黑、火烧痕迹 |
+| 发光/激活 | 内在能量、微光 | 信物/法器/玉石 | 微微发光、内蕴光华 |
+| 包裹/封存 | 用布/盒子包裹 | 信物/饰品/秘物 | 锦布包裹、木盒封存 |
+
+---
+
+## 三、状态变体画面规范
+
+### 单状态图
+
+| 项目 | 约束 |
+|---|---|
+| 背景 | 纯净中性灰 #E8E8E8(与设定图一致) |
+| 光线 | 暖调柔光,无硬阴影 |
+| 角度 | 与原设定图正面图一致 |
+| 比例 | 道具占画面主体 70%+ |
+
+### 状态对比图
+
+| 项目 | 约束 |
+|---|---|
+| 布局 | 同一画面并排展示 2-3 种状态 |
+| 标注 | 每种状态下方标注状态名 |
+| 一致性 | 角度/光线/背景完全一致,仅状态不同 |
+
+---
+
+## 四、材质状态变化规则
+
+| 材质 | 崭新 → 日常 | 日常 → 陈旧 | 损伤表现 |
+|---|---|---|---|
+| 黏土 | 哑光温润 → 微磨损 | 磨损 → 色泽柔和暗淡 | 缺口/裂缝/碎裂 |
+| 木质 | 新木纹理 → 自然包浆 | 包浆 → 色泽暗沉 | 开裂/断裂/虫蛀 |
+| 陶瓷 | 釉面温润 → 微划痕 | 划痕 → 釉面暗淡 | 裂纹/碎裂/缺口 |
+| 金属 | 微光泽 → 微包浆 | 包浆 → 氧化痕迹 | 缺口/卷刃/断裂 |
+| 布/纸 | 崭新平整 → 微皱折 | 皱折 → 发黄变脆 | 撕裂/焦损/墨迹晕染 |
+
+---
+
+## 五、提示词模板
+
+### 单状态变体
+
+```
+基于{道具名}设定图,黏土定格动画古风道具衍生状态,定格动画风格,3D卡通渲染,暖调光影,
+{道具类型},{材质描述},
+当前状态:{状态名},{状态视觉描述},
+{材质表面变化描述},
+纯道具静物展示,道具独立陈列,无人持有,无人佩戴,
+同一画面四宫格(2×2):左上正面图(front view)+右上侧面图(side view)+左下背面图(back view)+右下细节特写(detail closeup),
+纯净中性灰背景,暖调柔光,无硬阴影,
+材质纹理超清晰,黏土哑光质感,状态细节可辨
+图中不要有任何文字,
+画面中不能出现任何人物、手部、手指、肢体,道具不可处于被握持或佩戴状态
+```
+
+---
+
+## 六、约束规则
+
+### 必守
+
+| 编号 | 规则 |
+|---|---|
+| R1 | 道具核心造型/轮廓在所有状态中可识别 |
+| R2 | 状态变化须符合物理逻辑 |
+| R3 | 必须使用四宫格(2×2)布局 |
+| R4 | 必须指定「纯净中性灰背景」,暖调柔光,无硬阴影 |
+
+### 严禁
+
+| 编号 | 严禁 |
+|---|---|
+| X1 | 状态变化后道具不可识别 |
+| X2 | 违反物理逻辑的损伤 |
+| X3 | 过度血腥/恐怖的损伤描绘 |
+| X4 | 出现任何人物形象 |
+| X5 | 道具处于被持有/佩戴/使用中的状态 |
+| X6 | 冷硬光线/强对比度 |
\ No newline at end of file
diff --git a/data/skills/art_skills/3D_clay_stopmotion/art_prompt/art_scene.md b/data/skills/art_skills/3D_clay_stopmotion/art_prompt/art_scene.md
new file mode 100644
index 0000000..5818c76
--- /dev/null
+++ b/data/skills/art_skills/3D_clay_stopmotion/art_prompt/art_scene.md
@@ -0,0 +1,156 @@
+# 黏土定格动画场景图生成 · 约束手册
+
+---
+
+## 一、场景美学原则
+
+1. **空间叙事** — 场景承载情绪与叙事功能
+2. **层次纵深** — 所有场景必须具备前/中/后景,杜绝扁平
+3. **黏土质感至上** — 材质纹理必须清晰可辨(木质/石质/布料/水面)
+4. **定格为锚** — 一切画面以定格动画黏土风格为标准,拒绝真人写实;追求定格摄影特征(景深虚化、镜头光斑、定格颗粒感)与暖调光影
+
+---
+
+## 二、季节色调映射
+
+| 季节 | 主色调 | 辅色调 | 提示词 |
+|---|---|---|---|
+| 春 | 暖绿 + 桃粉 | 米白、鹅黄 | 春色暖绿、桃花粉色 |
+| 夏 | 翠绿 + 荷粉 | 天青、莲白 | 夏荷翠绿、浓荫暖意 |
+| 秋 | 暖红 + 金黄 | 橙黄、暖灰 | 秋枫暖红、金叶暖阳 |
+| 冬 | 柔和白 + 霜灰 | 暖木色、冰蓝 | 冬雪柔和、枯枝暖调 |
+
+---
+
+## 三、室内场景
+
+### 空间规范
+
+| 维度 | 约束 | 提示词 |
+|---|---|---|
+| 风格 | 古代宅邸/宫殿/书房/闺阁,温馨复古 | 古代{朝代}风格、温馨复古 |
+| 材质 | 黏土塑形木质为主、石/玉/绢/纱为辅 | 黏土木质家具、玉石屏风 |
+| 色调 | 低饱和暖木色 + 米白纱幔 + 青瓷 | 暖木色调、温馨陈设 |
+| 纵深 | 前/中/后景层次 | 前景{元素}、中景{元素}、后景{元素} |
+| 质感 | 木纹/布料垂感/瓷器光泽可辨 | 纹理清晰、质感黏土 |
+| 光照 | 暖调柔光为主(窗光/烛光),光线漫射 | 暖光漫射、烛光温馨 |
+| 镜头感 | 柔和浅景深虚化、自然光斑、定格颗粒感 | shallow depth of field、bokeh、定格感 |
+| 瑕疵感 | 木面有使用痕迹、石面有风化纹、布料有自然褶皱 | 岁月痕迹、自然磨损、布料自然垂褶 |
+
+### 室内类型速查
+
+| 类型 | 核心元素 | 氛围词 |
+|---|---|---|
+| 闺阁/卧房 | 纱帐、梳妆台、铜镜、花瓶 | 温馨私密、纱幔轻垂 |
+| 书房/书斋 | 书架、卷轴、笔墨、棋盘 | 幽静雅致、墨香四溢 |
+| 大殿/正厅 | 高柱、匾额、帷幕、烛台 | 庄严华美、气势恢宏 |
+| 庭院回廊 | 廊柱、石栏、花木、灯笼 | 曲径通幽、灯影摇曳 |
+| 厨房/膳堂 | 灶台、蒸笼、食器 | 烟火气息、温馨日常 |
+
+---
+
+## 四、室外场景
+
+### 空间规范
+
+| 维度 | 约束 | 提示词 |
+|---|---|---|
+| 类型 | 庭院/山林/溪畔/古桥/集市 | {场景},{季节},{时间} |
+| 天候 | 晴/阴/薄雾/细雨/飞雪 | 薄雾弥漫、细雨如丝 |
+| 植被 | 梅/竹/松/桃花/柳/荷(须符合季节) | 桃花灼灼、翠竹成林 |
+| 水体 | 溪/湖/瀑布需有光影反射 | 溪水潺潺、湖面如镜 |
+| 建筑 | 飞檐斗拱、青瓦白墙、石桥木亭 | 飞檐翘角、石拱桥 |
+| 空气感 | 必须有空气透视,远处偏暖灰 | 远山如黛、空气透视 |
+| 光照 | 暖调自然光为唯一光源,日光/月光需有体积光 | 暖光漫射、体积光、暖调光斑 |
+| 镜头感 | 柔和浅景深虚化、光斑散景、定格感 | shallow depth of field、bokeh、定格感 |
+| 瑕疵感 | 石面青苔/风化、木面开裂/包浆、瓦片残缺 | 青苔斑驳、风化痕迹、岁月包浆 |
+
+### 室外类型速查
+
+| 类型 | 核心元素 | 氛围词 |
+|---|---|---|
+| 庭院花园 | 假山、池塘、花木、石径 | 花影扶疏、曲径通幽 |
+| 山林竹海 | 古木、竹林、山石、云雾 | 层峦叠嶂、云雾缥缈 |
+| 溪畔湖边 | 溪流、卵石、垂柳、荷花 | 溪水潺潺、柳影婆娑 |
+| 古桥长亭 | 石拱桥、长亭、柳树 | 长亭古道、杨柳依依 |
+| 集市街道 | 酒旗、摊贩、灯笼 | 热闹市井、烟火人间 |
+| 屋顶天台 | 瓦片、飞檐、夜空 | 月下独酌、清风徐来 |
+
+---
+
+## 五、四视图设定图规范
+
+### 视图定义
+
+> 摄像机固定于场景中心点,分别朝前/后/左/右四个方向拍摄,形成 360° 环视。
+
+| 位置 | 视图 | 视角方向 | 要求 | 提示词 |
+|---|---|---|---|---|
+| 左上 | 前视图 | 从中心点向前方平视(0°) | 展示场景正面主体结构与纵深层次 | front view、eye level |
+| 右上 | 右视图 | 从中心点向右方平视(90°) | 展示场景右侧空间延伸与侧面结构 | right side view、eye level |
+| 左下 | 后视图 | 从中心点向后方平视(180°) | 展示场景背面结构与空间纵深 | back view、eye level |
+| 右下 | 左视图 | 从中心点向左方平视(270°) | 展示场景左侧空间延伸与侧面结构 | left side view、eye level |
+
+### 画面规范
+
+| 项目 | 约束 |
+|---|---|
+| 布局 | 同一画面 2×2 网格排列:上排(前视图 + 右视图),下排(后视图 + 左视图) |
+| 人物 | **严禁出现任何人物、人影、人体轮廓** |
+| 视点 | 四视图均从同一中心点出发,视线高度一致 |
+| 一致性 | 四视图的建筑结构/材质/色调/光线/季节/天候完全一致 |
+| 光线 | 四视图光源方向统一,保持光影逻辑一致 |
+| 画面比例 | 建议 1:1(2×2 网格) |
+
+---
+
+## 六、提示词模板
+
+```
+黏土定格动画古风场景四视图设定图,定格动画风格,3D卡通渲染,暖调光影,柔和浅景深,
+claymation style,stop-motion aesthetic,warm lighting,
+scene design sheet,environment concept art,no people,no characters,no human figures,
+{室内/室外},{场景类型},{朝代风格},{季节+时间},
+前景:{元素},中景:{元素},后景:{元素},
+{色调描述},{天候/氛围元素},
+{材质描述},空气透视,纹理细节超清晰,
+材质自然磨损痕迹,岁月包浆,青苔风化,布料自然垂褶,
+暖调柔光漫射,体积光,暖调光斑,浅景深虚化,
+同一画面2×2网格排列:从场景中心点环视,前视图+右视图+后视图+左视图,
+四视图均从同一中心点平视拍摄,建筑结构一致,材质色调一致,光影逻辑一致,
+画面中无任何人物
+图中不要有任何文字
+```
+
+
+---
+
+## 七、约束规则
+
+### 必守
+
+| 编号 | 规则 |
+|---|---|
+| R1 | 场景必须有「前中后景层次」 |
+| R2 | 室外必须包含「空气透视」 |
+| R3 | 场景图必须为「四视图设定图」(从中心点环视) |
+| R4 | 四视图的建筑结构/材质/色调/光线/季节/天候必须完全一致 |
+| R5 | 场景图中**严禁出现任何人物** |
+| R6 | 必须包含定格动画关键词(claymation / stop-motion) |
+| R7 | 必须包含浅景深关键词(shallow depth of field / bokeh) |
+| R8 | 必须指定「暖调柔光」,无硬阴影 |
+| R9 | 材质必须带有自然磨损/岁月痕迹 |
+
+### 严禁
+
+| 编号 | 严禁 |
+|---|---|
+| X1 | 背景纯白/纯黑/无场景 |
+| X2 | 极端天候(暴风雨/雷电/暴雪) |
+| X3 | 场景无纵深/无层次 |
+| X4 | 植被/天候与季节矛盾 |
+| X5 | 出现任何人物、人影、人体剪影 |
+| X6 | 四视图之间建筑结构/材质/色调不一致 |
+| X7 | 真人写实摄影/3D渲染/CG动画质感 |
+| X8 | 材质过于干净完美、无任何使用痕迹 |
+| X9 | 冷硬光线/强对比度/硬阴影 |
\ No newline at end of file
diff --git a/data/skills/art_skills/3D_clay_stopmotion/art_prompt/art_scene_derivative.md b/data/skills/art_skills/3D_clay_stopmotion/art_prompt/art_scene_derivative.md
new file mode 100644
index 0000000..0e98857
--- /dev/null
+++ b/data/skills/art_skills/3D_clay_stopmotion/art_prompt/art_scene_derivative.md
@@ -0,0 +1,160 @@
+# 黏土定格动画场景衍生资产生成 · 约束手册
+
+---
+
+## 一、衍生原则
+
+1. **空间一致** — 建筑结构/布局/材质在所有变体中保持一致
+2. **景别驱动** — 同一场景通过不同景别展示不同叙事功能
+3. **时段切换** — 同一空间在不同时间段呈现不同暖调光影氛围
+4. **天候变化** — 同一空间在不同天气下呈现不同情绪
+5. **定格为锚** — 所有变体必须保持定格动画黏土风格
+
+---
+
+## 二、景别变体
+
+### 景别定义
+
+| 景别 | 范围 | 叙事功能 | 提示词 |
+|---|---|---|---|
+| 大全景 | 场景全貌 + 周围环境 | 建立空间感、定位 | extreme wide shot、大全景 |
+| 全景 | 场景完整呈现 | 展示空间结构 | wide shot、全景 |
+| 中景 | 场景局部区域 | 聚焦功能区 | medium shot、中景 |
+| 近景 | 场景细部 | 材质/氛围道具特写 | close shot、近景 |
+| 特写 | 极局部细节 | 材质纹理/关键道具 | extreme closeup、特写 |
+
+### 景别衍生规范
+
+| 从基准图衍生 | 保持不变 | 允许变化 |
+|---|---|---|
+| 大全景 → 全景 | 建筑外观、整体布局 | 视角收窄、前景增加 |
+| 全景 → 中景 | 材质、色调、光线 | 裁切聚焦、景深变化 |
+| 中景 → 近景 | 材质、色调 | 景深浅、背景虚化 |
+| 近景 → 特写 | 材质纹理 | 极浅景深、微距感 |
+
+---
+
+## 三、时段变体
+
+### 时段定义
+
+| 时段 | 视觉特征 | 提示词 |
+|---|---|---|
+| 清晨 | 暖调柔光、色调偏暖金 | 晨光微熹、清晨暖调 |
+| 正午 | 明亮、阴影短、色彩鲜明 | 正午阳光、光线明亮 |
+| 黄昏 | 暖金色调、长影、天空渐变 | 黄昏暖金、golden hour |
+| 夜间(月光) | 冷蓝调、幽静清冷 | 月光清辉、moonlight |
+| 夜间(灯火) | 暖黄点缀、明暗对比 | 灯火阑珊、烛光点点 |
+
+### 时段衍生规范
+
+| 从基准时段衍生 | 保持不变 | 变化项 |
+|---|---|---|
+| 日间 → 黄昏 | 建筑/布局/材质 | 天空色调暖化、影子拉长 |
+| 日间 → 夜间 | 建筑/布局/材质 | 整体变暗、增加灯火/月色氛围 |
+| 室内日间 → 室内夜间 | 空间结构、家具 | 整体色调暖化、增加烛火/灯笼元素 |
+
+---
+
+## 四、天候变体
+
+### 天候定义
+
+| 天候 | 视觉特征 | 提示词 |
+|---|---|---|
+| 晴天 | 明亮、阴影清晰 | 晴空万里、阳光明媚 |
+| 阴天 | 光线均匀、无硬影 | 阴天柔光、overcast |
+| 薄雾 | 能见度降低、空气朦胧 | 薄雾弥漫、雾气缭绕 |
+| 细雨 | 水珠、湿润反光、雨丝 | 细雨如丝、雨幕轻纱 |
+| 飞雪 | 白色覆盖、雪花飘落 | 飞雪纷纷、银装素裹 |
+
+### 天候衍生规范
+
+| 从基准天候衍生 | 保持不变 | 变化项 |
+|---|---|---|
+| 晴 → 薄雾 | 建筑/布局 | 增加雾气层、远景模糊、饱和度降低 |
+| 晴 → 细雨 | 建筑/布局 | 增加雨丝、地面反光、色调偏冷 |
+| 晴 → 飞雪 | 建筑/布局 | 增加积雪、雪花、色调偏白 |
+| 植被需随天候逻辑适配 | — | 雨中花瓣湿润、雪中枯枝挂霜 |
+
+---
+
+## 五、四视图设定图规范
+
+### 视图定义
+
+> 摄像机固定于场景中心点,分别朝前/后/左/右四个方向拍摄。
+
+| 位置 | 视图 | 视角方向 | 要求 | 提示词 |
+|---|---|---|---|---|
+| 左上 | 前视图 | 从中心点向前方平视(0°) | 展示场景正面主体结构与纵深层次 | front view、eye level |
+| 右上 | 右视图 | 从中心点向右方平视(90°) | 展示场景右侧空间延伸与侧面结构 | right side view、eye level |
+| 左下 | 后视图 | 从中心点向后方平视(180°) | 展示场景背面结构与空间纵深 | back view、eye level |
+| 右下 | 左视图 | 从中心点向左方平视(270°) | 展示场景左侧空间延伸与侧面结构 | left side view、eye level |
+
+### 画面规范
+
+| 项目 | 约束 |
+|---|---|
+| 布局 | 同一画面四宫格(2×2),前视图+右视图+后视图+左视图 |
+| 人物 | **严禁出现任何人物、人影、人体轮廓** |
+| 视点 | 四视图均从同一中心点出发,视线高度一致 |
+| 一致性 | 四视图的建筑结构/材质/色调/光线/季节/天候完全一致 |
+| 光线 | 四视图光源方向统一,保持光影逻辑一致 |
+| 画面比例 | 建议 1:1(2×2 网格) |
+
+---
+
+## 六、提示词模板
+
+```
+黏土定格动画场景衍生四视图设定图,基于{场景名}概念图,定格动画风格,3D卡通渲染,暖调光影,柔和浅景深,
+claymation style,stop-motion aesthetic,warm lighting,shallow depth of field,bokeh,
+scene derivative design sheet,environment concept art,no people,no characters,no human figures,
+保持场景空间结构一致,
+{景别视角(如有)},{时段描述(如有)},{天候描述(如有)},
+{前景},{中景},{后景},
+{色调描述},{景深描述(如有)},{天空色调变化(如有)},{氛围调整(如有)},
+{天候视觉特征(如有)},{材质表面变化(如有)},{植被适配描述(如有)},
+材质自然磨损痕迹,岁月包浆,青苔风化,布料自然垂褶,
+暖调柔光漫射,体积光,暖调光斑,浅景深虚化,
+空气透视,纹理细节超清晰,
+同一画面四宫格(2×2):从场景中心点环视,前视图+右视图+后视图+左视图,
+四视图均从同一中心点平视拍摄,建筑结构一致,材质色调一致,光影逻辑一致,
+画面中无任何人物
+图中不要有任何文字
+```
+
+---
+
+## 七、约束规则
+
+### 必守
+
+| 编号 | 规则 |
+|---|---|
+| R1 | 场景空间结构在所有变体中保持一致 |
+| R2 | 时段变体必须调整天空色调与氛围 |
+| R3 | 天候变体必须适配植被/材质表面 |
+| R4 | 必须为「四视图设定图」(从中心点环视) |
+| R5 | 四视图的建筑结构/材质/色调/光线/季节/天候必须完全一致 |
+| R6 | 场景图中**严禁出现任何人物** |
+| R7 | 根据用户提供的信息自行判断变化维度 |
+| R8 | 必须包含定格动画关键词(claymation / stop-motion) |
+| R9 | 必须包含浅景深关键词(shallow depth of field / bokeh) |
+| R10 | 必须指定「暖调柔光」 |
+| R11 | 材质必须带有自然磨损/岁月痕迹 |
+
+### 严禁
+
+| 编号 | 严禁 |
+|---|---|
+| X1 | 变体间建筑结构/布局不一致 |
+| X2 | 天候与季节矛盾 |
+| X3 | 变体间材质/风格突变 |
+| X4 | 出现任何人物、人影、人体剪影 |
+| X5 | 四视图之间建筑结构/材质/色调不一致 |
+| X6 | 真人写实摄影/3D渲染/CG动画质感 |
+| X7 | 材质过于干净完美、无任何使用痕迹 |
+| X8 | 冷硬光线/强对比度/硬阴影 |
\ No newline at end of file
diff --git a/data/skills/art_skills/3D_clay_stopmotion/art_prompt/art_storyboard_video.md b/data/skills/art_skills/3D_clay_stopmotion/art_prompt/art_storyboard_video.md
new file mode 100644
index 0000000..caf9d86
--- /dev/null
+++ b/data/skills/art_skills/3D_clay_stopmotion/art_prompt/art_storyboard_video.md
@@ -0,0 +1,11 @@
+# 视频提示词 · 视觉风格约束
+
+生成视频提示词时,必须注入以下视觉风格标签:
+
+| 模式 | 风格标签 |
+|------|----------|
+| **通用多参模式(英文)** | `stop-motion claymation, clay texture, finger imprints, warm tones, soft bokeh, whimsical 3D cartoon` |
+| **通用首尾帧模式(英文)** | `stop-motion claymation, clay texture, finger imprints, warm tones, soft bokeh, whimsical 3D cartoon, shallow depth of field` |
+| **Seedance 2.0(中文)** | `定格动画黏土风格,黏土肌理,手指压痕,暖色调,柔和浅景深,奇幻3D卡通` |
+
+
diff --git a/data/skills/art_skills/3D_clay_stopmotion/driector_skills/director_planning_style.md b/data/skills/art_skills/3D_clay_stopmotion/driector_skills/director_planning_style.md
new file mode 100644
index 0000000..c3c3b35
--- /dev/null
+++ b/data/skills/art_skills/3D_clay_stopmotion/driector_skills/director_planning_style.md
@@ -0,0 +1,84 @@
+---
+name: director_planning_style
+description: 粘土约束 — 定义定格动画黏土在色调体系、光影方案、质感方向、场景空间元素、乐器选择与环境音上的全局约束。适用于任何叙事类型。
+metaData: director_skills
+---
+
+# 粘土约束 · 定格动画黏土 · 技法参考
+
+---
+
+## 一、色调体系与画面基调
+
+- **色调基底** — 全片以奶油黄(C1)、陶土红(C4)、天空蓝(C6)为基底色,整体色温偏暖(4500-5000K),饱和度中低(60-75%),呈现复古定格动画的温暖怀旧感
+- **暖调贯穿全片** — 全片保持暖调基底,局部点缀冷色(淡紫 C7、薄荷绿 C8)增加层次感。冷暖切换应与故事弧线同步,而非随意混用
+- **色盘先行原则** — 段落规划需先绑定情绪场景(相遇/日常/冒险/离别等),再确定主色+辅色与光影方案,避免"剧情对了但情绪不对色"
+- **禁用色域** — 高饱和荧光色、霓虹色、暗黑色彩体系均与本风格不兼容
+
+---
+
+## 二、光影方案体系
+
+- **光影即叙事** — 6 套光影方案对应不同情绪段落,导演规划阶段应在段落层面确定光影基调方向,而非逐镜指定
+- **光源角度** — 默认 30-45° 侧光,模拟小剧场灯光效果
+
+| 光影方案 | 方案名 | 色调倾向 | 适用情绪 |
+|---|---|---|---|
+| A | 柔光漫射 | 奶油黄底 + 均匀柔和光 | 日常温馨 |
+| B | 奇幻暖光 | 琥珀暖 + 魔法光点 | 奇幻登场 |
+| C | 暖调侧光 | 暖黄主调 + 局部暖光 | 室内日常 |
+| D | 日光漫射 | 自然暖调 + 阴影层次 | 户外自然 |
+| E | 月光冷调 | 淡蓝主调 + 暖色点缀 | 夜晚梦境 |
+| F | 柔焦暖光 | 暖黄主调 + 雾化效果 | 回忆/闪回 |
+
+- **暖色调贯穿全片** — 根据场景需要灵活调整,冷色调(淡蓝+暖色对比)仅在夜晚/梦境段落使用
+- **氛围方向映射** — 每场戏的氛围方向应能映射到上述光影方案(A-F)的某一方向,确保视觉一致性
+
+---
+
+## 三、质感方向
+
+- **定格黏土肌理纪实感** — 定格动画黏土写实的核心:手指压痕可见、黏土褶皱清晰、材质颗粒感明显
+- **黏土肌理 + 细腻光影** — 这是画面质感的锚点。不是光滑塑料,不是现代CG渲染,是定格动画的手工质感
+- **材质真实** — 所有服化道的材质必须可信:黏土的颗粒感、布料的褶皱、木质的纹理、金属的光泽。禁止"塑料感"和"光滑CG感"
+- **黏土不等于粗糙** — 本风格强调定格动画的黏土质感表达(清晰肌理、手指压痕、黏土褶皱),通过光影与动作设计放大感染力,而非依赖复杂特效
+
+---
+
+## 四、粘土风场景空间元素
+
+粘土风世界观特有的场景元素及其视觉叙事功能:
+
+- **微缩场景/小道具** — 天然的框架式构图道具,小比例场景制造"可爱微缩世界"的独特层次感与空间纵深
+- **暖色室内/手工道具** — 留白构图的天然载体,手工质感道具增加"真实触感":木桌 = 家的温暖、花盆 = 生活气息、书本 = 知识/成长
+- **灯光/窗光/烛光** — 粘土风世界的光源载体,暖黄灯光 = 温馨/安全(方案A/C)、月光 = 梦幻/冷调(方案E)、窗光 = 日常/自然(方案D)
+- **段落间用场景空镜过渡** — 本风格有丰富的场景资产(不同时段/天候变体),段落衔接建议用场景空镜做情绪缓冲,不要硬切
+- **转折点用视觉而非台词** — 优先使用画面手段(光影变化、景别跳切、空镜隐喻)配合动作设计,而非依赖对白解释
+
+---
+
+## 五、粘土风乐器与环境音
+
+粘土风世界观下的声音元素约束:
+
+### 乐器选择
+
+- **八音盒/音乐盒** — 日常/温馨/回忆段落的核心乐器,最能表现定格动画的质感
+- **手风琴** — 轻松/浪漫/街头段落,扫弦的温柔感适合日常氛围
+- **弦乐铺底** — 情感升华/离别段落,拉弦的细腻感适合情绪过渡
+- **木琴/钟琴** — 奇幻/魔法段落,清脆音色适合梦幻氛围
+- 弦乐铺底可增加电影感但不宜喧宾夺主
+
+### 乐器组合策略
+
+| 情绪阶段 | 乐器组合 |
+|---|---|
+| 平稳/开场/收尾 | 木琴独奏 或 钟琴独奏 |
+| 日常温馨 | 音乐盒 + 手风琴 |
+| 情绪升华/浪漫 | 弦乐 + 音乐盒 |
+| 情感平稳 | 音乐盒独奏 |
+
+### 粘土风环境音
+
+- **典型环境音层次** — 脚步声(黏土质感) / 翻书声 / 餐具碰撞 / 风声 / 钟表滴答声 / 衣料摩擦
+- **每场戏标注 1-2 个核心环境音**,帮助后续音效设计。环境音层次越丰富,粘土风场景越有沉浸感
diff --git a/data/skills/art_skills/3D_clay_stopmotion/driector_skills/director_storyboard.md b/data/skills/art_skills/3D_clay_stopmotion/driector_skills/director_storyboard.md
new file mode 100644
index 0000000..625936a
--- /dev/null
+++ b/data/skills/art_skills/3D_clay_stopmotion/driector_skills/director_storyboard.md
@@ -0,0 +1,194 @@
+---
+name: director_storyboard
+description: 导演分镜提示词技法 · 定格动画黏土质感
+metaData: director_skills
+---
+
+# 分镜提示词 · 定格动画黏土 · 风格专属技法
+
+---
+
+## 适用范围
+
+本 Skill 专用于**定格动画黏土质感**风格的分镜提示词生成。
+
+---
+
+## 情绪 → 面容/眼神词映射
+
+| 情绪输入 | 面容词 | 眼神词 | 微表情补充 |
+|----------|--------|--------|-----------|
+| 心动 / 欣喜 | 脸颊微红,表情含蓄 | 眼神明亮,目光温柔 | 嘴角轻扬,黏土压痕 |
+| 悲伤 / 失落 | 神情低落,表情柔和 | 眼神黯淡,目光游离 | 眉毛微蹙,表情内敛 |
+| 惊讶 / 好奇 | 眼睛放大,表情生动 | 眼神集中,目光好奇 | 嘴巴微张,动作自然 |
+| 温柔 / 深情 | 神情柔和,眉眼温润 | 眼神专注,目光深情 | 嘴角微扬,表情克制温暖 |
+| 坚定 / 勇敢 | 神情严肃,眼神坚定 | 目光清澈,眼神专注 | 表情坚定,气质清亮 |
+| 害羞 / 羞涩 | 脸颊泛红,表情自然 | 目光低垂,不敢直视 | 手捏黏土衣角,动作轻柔 |
+| 温暖 / 感动 | 表情柔和,眼角带笑 | 眼神温暖,目光柔和 | 嘴角上扬,表情真诚 |
+| 孤独 / 怀念 | 神情安静,眼神悠远 | 目光放空,若有所思 | 表情平静,气质安静 |
+| 快乐 / 雀跃 | 笑容灿烂,眼睛明亮 | 眼神灵动,表情生动 | 身体前倾,动作轻快 |
+| 紧张 / 不安 | 表情略显僵硬,眉头微皱 | 眼神游离,目光不确定 | 手指捏紧,动作紧张 |
+
+---
+
+## 光影氛围词库(定格动画黏土)
+
+### 时间段光线
+
+| 时间段 | 主光词 | 色调词 | 气氛词 |
+|--------|--------|--------|---------|
+| 清晨 | 柔和晨光,散射光线 | 暖黄调 + 淡蓝点缀 | 清新感,光线透过窗户 |
+| 午后 | 柔和斜侧光,漫射光线 | 暖调为主 | 光影斑驳,温暖感 |
+| 黄昏/日落 | 逆光暖调,橙色余晖 | 琥珀暖 + 粉色点缀 | 长影拉伸,怀旧感 |
+| 夜间 | 月光冷调,局部暖光 | 淡蓝主调 + 暖色点缀 | 静谧感,光影层次 |
+| 室内日常 | 暖调侧光,均匀柔和 | 暖黄为主 | 温馨感,家庭氛围 |
+| 奇幻/魔法 | 奇幻光效,魔法光点 | 彩色光斑,柔焦效果 | 梦幻感,魔法氛围 |
+
+### 情绪光影
+
+| 情绪基调 | 光线类型 | 补充约束 |
+|----------|----------|---------|
+| 心动/温情 | 柔和侧光,暖调漫射 | 浅景深,背景轻微虚化 |
+| 悲伤/失落 | 冷调侧光,低调打光 | 面部局部暗部留存 |
+| 奇幻/梦幻 | 魔法光效,彩色光点 | 光晕控制,边缘光柔和 |
+| 怀旧/回忆 | 柔焦暖光,雾化效果 | 边缘轻微模糊,整体柔和 |
+| 日常/温馨 | 均匀漫射光,中性暖调 | 光线柔和,无明显阴影 |
+| 夜晚/静谧 | 月光冷调,局部暖光 | 明暗对比,层次清晰 |
+
+---
+
+## 场景质感约束词(按场景类型)
+
+| 场景类型 | 必加约束词 |
+|----------|-----------|
+| 复古木屋 | 木质纹理清晰,黏土砖墙,暖色灯光,复古家具 |
+| 奇幻森林 | 树木黏土质感,光斑效果,魔法光点,自然地面 |
+| 室内日常 | 墙壁黏土肌理,家具细节,暖色灯光,生活杂物 |
+| 街道广场 | 石板路面黏土质感,复古建筑,路灯暖光,人群黏土 |
+| 咖啡馆/餐厅 | 木质桌椅黏土质感,暖色灯光,窗外街景虚化 |
+| 花园/庭院 | 花草黏土造型,泥土质感,阳光斑驳,长椅细节 |
+| 洞穴/地下 | 岩石黏土纹理,洞穴灯光,阴影层次,神秘氛围 |
+| 城堡/宫殿 | 石砖黏土质感,华丽装饰,暖色灯光,宏大空间 |
+
+---
+
+## 固定风格锚定词(所有输出必须包含)
+
+**定格动画锚定(必选):**
+
+定格动画风格,黏土质感,手指压痕可见,黏土肌理材质,暖调光影
+
+**黏土质感(所有输出必选):**
+
+黏土肌理清晰,手指压痕可见,材质颗粒感明显,手工痕迹保留
+
+**角色材质(含角色镜头时必选):**
+
+3D卡通角色,奇幻风格,柔和浅景深,黏土材质细节清晰
+
+**光影层次(含光影场景时必选):**
+
+电影感光影层次,明暗对比清晰,光效柔和自然,暖色调主导
+
+**氛围锚定(必选):**
+
+治愈怀旧氛围,定格动画美学,温馨情感表达,手工质感
+
+**画质锁定词(所有输出必须包含,置于风格收尾之后):**
+
+模式A(中文)——默认:
+高清画质,黏土肌理清晰,色彩柔和,画面无杂色无噪点,浅景深效果
+
+模式A(中文)——画内文字场景(画面描述中含招牌/标识等道具文字时):
+高清画质,黏土肌理清晰,色彩柔和,画面无杂色无噪点,浅景深效果,招牌/标识等道具文字清晰可读
+
+模式B(英文)——默认:
+high-quality stop-motion animation, clear clay texture, warm lighting, soft shallow depth of field, no digital artifacts, no plastic look
+
+模式B(英文)——画内文字场景:
+high-quality stop-motion animation, clear clay texture, warm lighting, soft shallow depth of field, no digital artifacts, no plastic look, legible text on props and signs
+
+**负向词模板(模式B 必须包含,置于提示词末尾):**
+
+> ⚠️ Seedream(模式A)**不支持负向提示词**,负向词仅适用于模式B。模式A 通过正向词中的质感锚定和画质锁定来保证画面质量。
+
+模式B(英文):
+no modern digital 3D, no CGI rendering, no smooth plastic, no oversaturated colors, no neon colors, no cyberpunk, no sci-fi elements, no sharp edges, no clean lines, no vector art, no cartoon flat coloring, no cel-shading
+
+---
+
+## 美学禁止项(生成时严格规避)
+
+以下词汇/风格不得出现于输出提示词中:
+
+- ❌ 现代3D动画风格(皮克斯/迪士尼后期风格)
+- ❌ 光滑塑料/现代CG渲染相关词
+- ❌ 高饱和荧光色/霓虹色系
+- ❌ 现代场景/现代建筑元素
+- ❌ 重阴影/过度对比/暗调风格
+- ❌ 卡通比例、大眼睛、Q版等变形描述
+- ❌ 赛博朋克/蒸汽朋克/架空西幻元素
+- ❌ 画外叠加文字(字幕、水印、标题卡、旁白叠字等 UI 层文字,画面必须为纯视觉画面)
+
+> 💡 **例外**:故事世界内的道具文字(招牌、路牌、标识、书籍等场景中自然存在的文字)**不属于禁止范围**。当分镜画面描述中包含此类内容时,应如实描写其存在并要求文字清晰。
+
+---
+
+## 完整生成示例
+
+> 以下为同一输入分别使用模式A和模式B的对照展示,实际使用时**仅输出其中一种**。
+
+### 输入(分镜表行数据)
+
+| 序号 | 画面描述 | 场景 | 关联资产名称 | 时长 | 景别 | 运镜 | 角色动作 | 情绪 | 光影氛围 |
+|------|---------|------|-------------|------|------|------|---------|------|----------|
+| 1 | 复古木屋内,暖光下两个黏土小人对视微笑 | 木屋 | 主角A/B | 5s | 中景 | 缓推 | 相对而坐,双手轻触,温柔微笑 | 心动 / 甜蜜 | 暖调侧光 + 柔和浅景深 |
+
+### 示例输出A(模式A · Seedream)
+
+[Prompt]
+定格动画风格,黏土质感,手指压痕可见,黏土肌理材质,暖调光影,中景构图,两个黏土小人半身入镜,黏土肌理清晰,手指压痕可见,材质颗粒感明显,手工痕迹保留,3D卡通角色,奇幻风格,柔和浅景深,黏土材质细节清晰,复古木屋内,暖光下两个黏土小人相对而坐,双手轻触,温柔微笑,眼神心动又甜蜜,暖调侧光,柔和浅景深,木质纹理清晰,黏土砖墙质感,电影感光影层次,明暗对比清晰,光效柔和自然,治愈怀旧氛围,定格动画美学,温馨情感表达,高清画质,黏土肌理清晰,色彩柔和,画面无杂色无噪点,浅景深效果。
+Based on the reference image of 主角A/B, maintain consistent: face features, hairstyle, costume details. Generate a new scene: two clay characters sitting across from each other inside a retro wooden room at warm light, touching hands gently, smiling tenderly. Keep character appearance identical to reference.
+
+### 示例输出B(模式B · Nanobanana)
+
+```xml
+
+You are a stop-motion claymation director.
+Maintain strict visual continuity across all shots.
+
+
+Image [1]: 主角A/B — clay figurines, soft rounded features, warm earthy tones, small cute proportions
+
+
+- Same clay texture, color palette, face features across ALL shots
+- Same environment, lighting style, color grade
+- Only framing, angle, action, expression may change
+- Do NOT introduce new characters not in reference images
+
+
+Medium shot, two clay characters sitting across from each other inside a retro wooden room at warm light, hands gently touching, smiling tenderly, eyes filled with warmth and affection, warm side light, soft shallow depth of field, wooden texture visible, clay brick wall texture, cinematic lighting layers, clear contrast between light and dark, soft natural light effects, healing nostalgic atmosphere, stop-motion animation aesthetic, high-quality stop-motion, clear clay texture, warm lighting, no digital artifacts, no plastic look.
+
+
+no modern digital 3D, no CGI rendering, no smooth plastic, no oversaturated colors, no neon colors, no cyberpunk, no sci-fi elements, no sharp edges, no clean lines, no vector art, no cartoon flat coloring, no cel-shading
+
+```
+
+## 快速参考卡
+
+### 情绪 → 画面词速查
+
+| 情绪 | 面容关键词 | 光线匹配 |
+|------|-----------|---------|
+| 心动 | 脸颊微红,黏土压痕 | 柔和侧光暖调 |
+| 悲伤 | 神情低落,表情柔和 | 冷调侧光低调 |
+| 温柔 | 神情柔和,眉眼温润 | 均匀漫射暖光 |
+| 奇幻 | 眼睛放大,彩色光点 | 奇幻光效光晕 |
+| 感动 | 眼角带笑,表情真诚 | 暖调侧光柔和 |
+| 孤独 | 神情安静,目光放空 | 冷调侧光暗部 |
+| 快乐 | 笑容灿烂,眼睛明亮 | 暖调漫射光 |
+
+
+
+
+
diff --git a/data/skills/art_skills/3D_clay_stopmotion/driector_skills/director_storyboard_table_style.md b/data/skills/art_skills/3D_clay_stopmotion/driector_skills/director_storyboard_table_style.md
new file mode 100644
index 0000000..69c2655
--- /dev/null
+++ b/data/skills/art_skills/3D_clay_stopmotion/driector_skills/director_storyboard_table_style.md
@@ -0,0 +1,45 @@
+---
+name: director_storyboard_table_style
+description: 分镜表粘土约束 — 定义定格动画黏土在分镜表中的光影氛围规范、光源角度、动作节奏、环境动态、运镜禁忌与转场禁忌。适用于任何叙事类型。
+metaData: director_skills
+---
+
+# 分镜表粘土约束 · 定格动画黏土 · 技法参考
+
+---
+
+## 一、分镜表定位
+
+分镜表是导演将剧本转化为镜头语言的核心工具。以下仅提供定格动画黏土风格在分镜表层面的约束规范。
+
+---
+
+## 二、光影与氛围
+
+- **同场戏光影统一** — 一场戏内不应出现两种以上光影方案,除非有明确的叙事转折(如关台灯→月光冷辉)
+- **情绪色盘绑定** — 每场戏至少绑定 1 个情绪场景(如相遇心动/日常温馨/离别感伤),并在镜头组内保持主色+辅色连续性
+- **光源角度规范** — 默认 30-45° 侧光,模拟小剧场灯光效果。描述光影时须区分正给/侧给的角度差异
+- **冷暖色调与叙事阶段匹配** — 前半段(日常/工作/学习)保持暖色调,冷色调(冷蓝+暖色对比)在夜晚或情绪转折后使用
+- **光影转场是高级手段** — 从自然光(A)渐变到室内暖光(C)= 日转夜的时间流逝。在分镜表中标注光影变化点
+
+---
+
+## 三、环境动态
+
+- **环境动态增加画面呼吸感** — 树叶飘动、烛光摇曳、窗帘轻摆、雨滴落下、魔法光点。每 3-4 个镜头至少安排一个有环境动态的镜头,避免画面"死"掉
+- **粘土风环境元素优先** — 环境动态应选用粘土风世界观内的元素:树叶飘动、烛光摇曳、窗帘轻摆、小道具微动、魔法光点,体现手工质感和微缩世界的动态
+
+---
+
+## 四、粘土风动作节奏
+
+- **定格动画动作要慢** — 所有人物动作默认自然缓慢节奏。起身、转身、抬手都应标注"自然"或"轻缓"
+- **黏土质感动态** — 黏土角色的动作自带"笨拙可爱"属性,可在画面描述中加入手指触碰、微倾头等细微动作,增加画面的"活"感
+- **甜宠互动用暗示** — 目光交汇、手指轻微触碰、递东西时的指尖接触。不要写大幅度双人交互,拆成暗示性的局部镜头
+
+---
+
+## 五、运镜禁忌
+
+- **禁用快速运镜** — 甩镜、急推、快速切换与定格动画黏土风的气质冲突
+- **禁用花式转场** — 划屏、旋转、百叶窗等与本风格不兼容
diff --git a/data/skills/art_skills/3D_clay_stopmotion/images/1.png b/data/skills/art_skills/3D_clay_stopmotion/images/1.png
new file mode 100644
index 0000000..1cc96ee
Binary files /dev/null and b/data/skills/art_skills/3D_clay_stopmotion/images/1.png differ
diff --git a/data/skills/art_skills/3D_clay_stopmotion/images/场景原始.png b/data/skills/art_skills/3D_clay_stopmotion/images/场景原始.png
new file mode 100644
index 0000000..fb48e7d
Binary files /dev/null and b/data/skills/art_skills/3D_clay_stopmotion/images/场景原始.png differ
diff --git a/data/skills/art_skills/3D_clay_stopmotion/images/场景衍生.png b/data/skills/art_skills/3D_clay_stopmotion/images/场景衍生.png
new file mode 100644
index 0000000..c5dfa8b
Binary files /dev/null and b/data/skills/art_skills/3D_clay_stopmotion/images/场景衍生.png differ
diff --git a/data/skills/art_skills/3D_clay_stopmotion/images/女生原始.png b/data/skills/art_skills/3D_clay_stopmotion/images/女生原始.png
new file mode 100644
index 0000000..56aaaa4
Binary files /dev/null and b/data/skills/art_skills/3D_clay_stopmotion/images/女生原始.png differ
diff --git a/data/skills/art_skills/3D_clay_stopmotion/images/女生衍生.png b/data/skills/art_skills/3D_clay_stopmotion/images/女生衍生.png
new file mode 100644
index 0000000..3f4b674
Binary files /dev/null and b/data/skills/art_skills/3D_clay_stopmotion/images/女生衍生.png differ
diff --git a/data/skills/art_skills/3D_clay_stopmotion/prefix.md b/data/skills/art_skills/3D_clay_stopmotion/prefix.md
new file mode 100644
index 0000000..2e63df6
--- /dev/null
+++ b/data/skills/art_skills/3D_clay_stopmotion/prefix.md
@@ -0,0 +1,116 @@
+# 全局美学基础 · 定格动画黏土
+
+---
+严格遵循下方风格约束与全局规则,依据提示词模板格式生成提示词。仅输出提示词本身,不附加任何解释、说明或额外文本。
+## 一、风格基因
+
+| 维度 | 定义 |
+|---|---|
+| **一级风格** | 定格动画黏土(Stop-Motion Claymation) |
+| **二级风格** | 奇幻3D卡通 · 暖调光影层次 |
+| **情感基调** | 治愈怀旧 · 童真细腻 |
+| **质感锚词** | 黏土肌理、手指压痕、柔和浅景深 |
+
+---
+
+## 二、全局色彩盘(风格基线,不是硬锁)
+
+> 目标:统一审美而非限制创作。除「硬约束色」外,其余颜色默认优先使用,可在合理范围内偏移。
+
+### 色彩使用层级
+
+| 层级 | 约束强度 | 说明 |
+|---|---|---|
+| L1 硬约束 | 高 | 仅锁定角色识别核心:肤色、发色、主服底色的审美方向 |
+| L2 软约束 | 中 | 场景色、配饰色、点缀色优先参考色盘,可按镜头与剧情微调 |
+| L3 例外机制 | 低 | 奇幻/高潮/特殊场景可临时突破局部色彩,但需保留整体暖调逻辑 |
+
+| 序号 | 色名 | 色值 | 用途 |
+|---|---|---|---|
+| C1 | 奶油黄 | #F5E6D0 | 肤色基底、暖光、室内 |
+| C2 | 陶土红 | #C96E5A | 黏土本体、暖色点缀 |
+| C3 | 天空蓝 | #87AEC9 | 天空、服装、冷调点缀 |
+| C4 | 深棕发 | #4A3728 | 发色、眼瞳 |
+| C5 | 高级灰 | #8A8A8A | 建筑、阴影、中性色 |
+| C6 | 淡紫 | #D0C4D6 | 夜晚、梦幻、魔法 |
+| C7 | 琥珀暖 | #C9A96E | 黄昏、灯光、温暖感 |
+| C8 | 薄荷绿 | #9DC2A5 | 植物、自然、环境 |
+| C9 | 米白 | #F5F0E8 | 墙面、服装、背景 |
+| C10 | 暖橙 | #E8C890 | 夕阳、火光、温馨感 |
+
+### 硬约束色(默认锁定)
+
+| 色项 | 对应色 | 规则 |
+|---|---|---|
+| 肤色基准 | C1 奶油黄 | 默认优先,允许小幅明度/暖度微调 |
+| 发色/瞳色基准 | C4 深棕发 | 默认优先,允许深棕/深褐轻微偏移 |
+
+### 软约束色(推荐优先)
+
+> C2/C3/C5/C6/C7/C8/C9/C10 为推荐色域,用于服装、装饰、背景、暖光、环境等。可根据镜头氛围做同色相邻近调整。
+
+### 情绪色盘(导演对齐版)
+
+| 情绪场景 | 主色 | 辅色 | 光效与对比建议 | 画面关键词 |
+|---|---|---|---|---|
+| 日常温馨 | C1 奶油黄 | C9 米白 + C5 高级灰 | 均匀暖调,柔和对比 | 生活感、温暖、平静 |
+| 心动瞬间 | C2 陶土红 | C1 奶油黄 + C10 暖橙 | 中近景提暖,肤色微红 | 羞涩、靠近感、暧昧 |
+| 室内日常 | C9 米白 | C5 高级灰 + C1 奶油黄 | 明暗层次清晰,中性为主 | 居家、舒适、安全 |
+| 奇幻/魔法 | C6 淡紫 | C7 琥珀暖 + C3 天空蓝 | 魔法光点,彩色光晕 | 梦幻、神秘、奇幻 |
+| 户外自然 | C8 薄荷绿 | C1 奶油黄 + C3 天空蓝 | 自然暖调,阴影层次 | 清新、开阔、自由 |
+| 夜晚梦境 | C6 淡紫 | C3 天空蓝 + C1 奶油黄 | 冷调为主,暖色点缀 | 静谧、思考、独处 |
+| 回忆/闪回 | C1 奶油黄 | C5 高级灰 + C7 琥珀暖 | 柔焦雾化,轻微褪色 | 怀旧、旧忆、梦幻 |
+| 离别感伤 | C5 高级灰 | C3 天空蓝 + C1 奶油黄 | 降饱和,拉大冷暖反差 | 距离感、克制、静压 |
+
+### 情绪色盘使用规则
+
+| 编号 | 规则 |
+|---|---|
+| E1 | 每条提示词至少指定 1 个「情绪场景」并绑定主色+辅色组合 |
+| E2 | 单镜头主色不超过 2 个,避免颜色叙事失焦 |
+| E3 | 情绪切换时优先调整光比与色温,再调整饱和度 |
+| E4 | 治愈向默认遵循「暖底 + 冷暖对比」:暖色铺底,冷色用于背景/阴影 |
+| E5 | 若与剧情冲突,以情绪色盘优先于通用推荐色,但不得突破严禁项 |
+
+### 色温约束
+
+| 参数 | 值 | 说明 |
+|---|---|---|
+| 整体色温 | 偏暖 4500-5000K(推荐) | 温暖怀旧主基调 |
+| 肤色色温 | 微暖 4800-5200K(推荐) | 奶油黄但有生命感 |
+| 对比度 | 中等(建议保持) | 明暗层次清晰,但不过分强烈 |
+| 饱和度 | 中低 60-75%(建议区间) | 定格动画高级色调 |
+
+### 容差与例外
+
+| 项目 | 建议容差 |
+|---|---|
+| 色相偏移 | ±8° |
+| 饱和度偏移 | ±10% |
+| 明度偏移 | ±12% |
+
+> 例外场景:奇幻、魔法、情绪高潮镜头可使用更暖或更高饱和局部色块;但禁止高饱和荧光色与现代色彩语言入镜。
+
+---
+
+## 三、全局约束规则
+
+### 必守规则(所有技能继承)
+
+| 编号 | 规则 |
+|---|---|
+| R1 | 必须包含「定格动画风格 + 黏土质感」风格锚定词 |
+| R2 | 必须声明「手指压痕可见 + 黏土肌理材质」 |
+| R3 | 面部必须使用「3D卡通角色 + 柔和浅景深」 |
+| R4 | 发丝必须使用「黏土造型 + 手工痕迹保留」 |
+| R5 | 光影必须声明「电影感光影层次 + 暖调主导」 |
+
+### 严禁项(所有技能继承)
+
+| 编号 | 严禁内容 |
+|---|---|
+| X1 | 严禁「现代3D动画风格/皮克斯/迪士尼后期风格」 |
+| X2 | 严禁「光滑塑料/现代CG渲染」 |
+| X3 | 严禁「高饱和荧光色/霓虹色」 |
+| X4 | 严禁「面部变形/比例失调/肢体异常」倾向词 |
+| X5 | 严禁「现代场景/现代建筑/现代服饰」 |
\ No newline at end of file
diff --git a/data/skills/art_skills/realpeople_ancient_chinese/README.md b/data/skills/art_skills/realpeople_ancient_chinese/README.md
new file mode 100644
index 0000000..fc78220
--- /dev/null
+++ b/data/skills/art_skills/realpeople_ancient_chinese/README.md
@@ -0,0 +1,33 @@
+# 真人古风写实风格说明
+
+本风格专为“真人古风写实”题材打造,所有美术提示词、规范和生成内容均严格限定于:
+
+- **古风世界观**:以中国古代为背景,涵盖宅邸、宫殿、器物、服饰、兵器等,杜绝现代元素。
+- **真人写实**:所有角色、场景、道具均以真人写实摄影为标准,强调五官、皮肤、发丝、材质等极致细节与真实质感。
+- **古风写实纪实**:在写实基础上追求影视级氛围感,画面明暗对比强烈,细节丰富,整体氛围冷中带暖、疏中见密。
+- **甜宠氛围**:适合展现温柔、治愈、浪漫的古风恋爱故事,强调东方美学下的情感表达。
+
+## 适用范围
+
+- 真人古风题材的AI美术生成(角色、场景、道具、分镜等)
+- 需要极致写实、细腻质感、东方古典氛围的视觉创作
+
+## 严禁内容
+
+- 卡通、动漫、插画、二次元风格
+- 现代元素、现代服饰、现代场景
+- 高饱和荧光色、霓虹色
+- 暗示性、暴露、透视等不适宜内容
+
+## 风格体验
+
+在本风格下,您将体验到:
+
+- 角色面容精致、气质清冷或温润,服饰、妆容、发型均为古风写实
+- 场景空间层次丰富,材质纹理超清晰,氛围真实且富有诗意
+- 道具、兵器、饰品等均为古风造型,工艺精细,质感极致
+- 分镜与视频均以真人写实为基础,强调叙事与情感表达
+
+---
+
+本风格仅适用于“真人古风写实”相关项目。如需其他风格(如插画、动漫、现代等),请勿使用本套提示词。
diff --git a/data/skills/art_skills/realpeople_ancient_chinese/art_prompt/art_character.md b/data/skills/art_skills/realpeople_ancient_chinese/art_prompt/art_character.md
new file mode 100644
index 0000000..a0a99ea
--- /dev/null
+++ b/data/skills/art_skills/realpeople_ancient_chinese/art_prompt/art_character.md
@@ -0,0 +1,219 @@
+# 人物基础形象生成 · 约束手册
+
+
+---
+
+## 一、基础形象原则
+
+1. **面容即灵魂** — 五官是角色唯一锚点,毛孔级精细渲染
+2. **底模即基础** — 基础打底服装 + 素颜,后续服化均为叠加层(女性:运动背心+四角短裤;男性:四角短裤)
+3. **四视图一致** — 面容/体型/发型/基础服装跨视图高度统一
+4. **冷艳含情** — 无妆状态仍需体现角色气质(清冷/温润/妩媚)
+
+---
+
+## 二、面容约束
+
+### 女性面容
+
+| 部位 | 约束 | 提示词 |
+|---|---|---|
+| 脸型 | 长脸、线条流畅、下颌收窄 | 长脸、鹅蛋偏长脸 |
+| 眼型 | 狭长妩媚、双眼皮窄、眼尾上扬 | 妩媚狭长眼、凤眼微挑 |
+| 眉型 | 自然眉形、眉色灰棕(裸眉) | 自然眉形、裸眉 |
+| 鼻型 | 高挺直鼻、鼻翼窄 | 高鼻梁、鼻翼精致 |
+| 唇型 | 薄唇、唇色自然裸粉 | 薄唇、唇色裸粉 |
+| 气质 | 清冷、五官立体、素颜无妆 | 面容清冷、五官立体、素颜 |
+
+### 男性面容
+
+| 部位 | 约束 | 提示词 |
+|---|---|---|
+| 脸型 | 棱角分明、下颌线清晰 | 棱角分明、下颌线硬朗 |
+| 眼型 | 剑眉星目、深邃克制 | 剑眉星目、眼神清冽 |
+| 鼻型 | 高挺英挺、鼻梁笔直 | 高鼻英挺 |
+| 唇型 | 薄唇微抿、唇色自然 | 薄唇、唇色自然 |
+| 气质 | 清冷疏离 / 温润如玉 | 清冷俊逸 / 温润如玉、素颜 |
+
+---
+
+## 三、肤感约束
+
+### 女性
+
+| 项目 | 约束 | 提示词 |
+|---|---|---|
+| 肤色 | 冷白皮、全身均匀、白得通透 | 冷白皮、牛奶肌、milky white skin |
+| 光泽 | 水光肌、内透光感、非哑光非油光 | 水光肌、luminous skin、dewy skin |
+| 质感 | 细腻、保留毛孔微质感 | 皮肤细腻、毛孔微可见 |
+| 露肤 | 面部/颈部/锁骨/手部 | 肩颈线条优美、肌肤白皙透亮 |
+
+### 男性
+
+| 项目 | 约束 | 提示词 |
+|---|---|---|
+| 肤色 | 白皙透亮、带健康感、全身均匀 | 肤色白皙透亮、奶油肌 |
+| 光泽 | 清爽水光、自然光泽 | 水光肌、皮肤透亮清爽 |
+| 质感 | 干净利落、可见毛孔 | 皮肤质感细腻、面容清冽 |
+
+---
+
+## 四、体型约束
+
+### 女性
+
+| 项目 | 约束 | 提示词 |
+|---|---|---|
+| 身高 | 由角色设定指定,默认范围 160-170cm,身高通过头身比换算体现 | {身高}cm tall、{身高描述如:tall slender woman} |
+| 头身比 | 七头身至八头身,头身比 = 身高 ÷ 头长,严格约束全身比例 | 7-8 heads tall proportion、身材修长 |
+| 身高换算 | 头长 = 身高 ÷ 头身比(如165cm ÷ 7.5 = 22cm头长),据此约束头部与身体各段比例 | 比例匀称、头身比协调 |
+| 肩颈 | 天鹅颈、肩颈线优美 | 天鹅颈、肩颈优美 |
+| 手部 | 纤长白皙、指节分明、五指正常 | 纤纤玉手、指节分明 |
+| 体态 | 古典仕女、含蓄端庄 | 体态端庄、身姿优雅 |
+
+### 男性
+
+| 项目 | 约束 | 提示词 |
+|---|---|---|
+| 身高 | 由角色设定指定,默认范围 175-185cm,身高通过头身比换算体现 | {身高}cm tall、{身高描述如:tall imposing man} |
+| 头身比 | 七头半身至八头半身,头身比 = 身高 ÷ 头长,严格约束全身比例 | 7.5-8.5 heads tall proportion、身材高挑 |
+| 身高换算 | 头长 = 身高 ÷ 头身比(如180cm ÷ 8 = 22.5cm头长),据此约束头部与身体各段比例 | 比例匀称、头身比协调、宽肩窄腰 |
+| 肩颈 | 肩部宽阔、颈部有力 | 宽肩窄腰 |
+| 手部 | 骨节分明、手掌宽大、五指正常 | 手指骨节分明 |
+| 体态 | 武将/书生体态(按角色) | 身姿挺拔、体态从容 |
+
+### 身高-头身比换算参考
+
+| 身高(cm) | 头身比 | 头长(cm) | 适用描述 |
+|---|---|---|---|
+| 155-160 | 7.0 | ~22cm | 娇小玲珑 |
+| 160-165 | 7.0-7.5 | ~22cm | 纤细修长 |
+| 165-170 | 7.5 | ~22cm | 高挑优雅(女性默认) |
+| 170-175 | 7.5-8.0 | ~22cm | 修长挺拔 |
+| 175-180 | 8.0 | ~22.5cm | 高大英挺(男性默认) |
+| 180-185 | 8.0-8.5 | ~22cm | 伟岸挺拔 |
+| 185-190 | 8.5 | ~22cm | 高大威猛 |
+
+---
+
+## 五、基础发型约束
+
+> 仅定义自然散发/简单束发,发饰在服化衍生环节叠加。
+
+### 女性
+
+| 项目 | 约束 | 提示词 |
+|---|---|---|
+| 发色 | 纯黑,禁棕色/挑染 | 黑色长发、墨发如瀑 |
+| 发长 | 及腰或更长 | 及腰长发 |
+| 发质 | 根根分明、丝缕清晰 | 发丝根根分明、发丝细腻渲染 |
+| 造型 | 自然散发、中分/偏分、无发饰 | 长发自然散落、青丝如瀑 |
+
+### 男性
+
+| 项目 | 约束 | 提示词 |
+|---|---|---|
+| 发色 | 纯黑或墨色 | 墨发、黑发如墨 |
+| 发长 | 中长至长发 | 长发、及肩长发 |
+| 发质 | 根根分明、质感清晰 | 发丝根根分明、发丝细腻渲染 |
+| 造型 | 自然散发或半束、无发冠 | 长发自然散落、半束长发 |
+
+---
+
+## 六、基础服装约束
+
+> 基础服装无特殊约束,女性为运动背心和四角短裤,男性为四角短裤。正式服饰在服化衍生环节叠加。
+
+### 女性基础服装
+
+运动背心和四角短裤,颜色以基础色为主,无花纹装饰。
+
+### 男性基础服装
+
+四角短裤,颜色以基础色为主,无花纹装饰。
+
+### 着装统一规则
+
+- 服装风格统一,确保后续服饰叠加无色彩干扰
+- 除面部/手部/颈部外基本覆盖
+- 四视图服装款式完全一致
+- 基础服装仅为安全打底,焦点在面容与体态
+
+---
+
+## 七、四视图设定图规范
+
+### 视图定义
+
+| 位置 | 视图 | 角度 | 景别 | 要求 | 提示词 |
+|---|---|---|---|---|---|
+| 左一 | 人像特写 | 正面平视 | 头顶至锁骨 | 从头顶到锁骨完整展示不裁切,面部占60%+,五官清晰 | portrait closeup、face detail、head to collarbone complete、no crop |
+| 左二 | 正视图 | 正面 0° | 全身立像 | 面对镜头、双臂自然、从头顶到脚底完整展示 | front view、full body head to toe、height mark |
+| 右二 | 侧视图 | 右侧 90° | 全身立像 | 纯侧面轮廓清晰、从头顶到脚底完整展示 | side view、profile、full body head to toe、height mark |
+| 右一 | 后视图 | 后方 180° | 全身立像 | 后脑/背部/发尾/脚部清晰、从头顶到脚底完整展示 | back view、rear view、full body head to toe、height mark |
+
+### 画面规范
+
+| 项目 | 约束 |
+|---|---|
+| 布局 | 同一画面从左至右并排四视图 |
+| 背景 | 纯净中性灰 #E8E8E8 |
+| 站姿 | 自然站立、双脚平行微分、双臂自然下垂或微展 |
+| 全身展示 | 全身立像必须从头顶到脚底完整入画,严禁裁切头顶或脚部 |
+| 特写展示 | 人像特写必须从头顶到锁骨完整入画,严禁裁切头顶,头发、额头、下巴均需完整 |
+| 表情 | 中性微表情,符合角色气质 |
+| 光线 | 均匀柔光,前方主光 + 双侧补光,无硬阴影 |
+| 一致性 | 四视图的肤色/体型/发型/面容/基础服装完全一致 |
+| 画面比例 | 建议 4:1 或 3:1 |
+
+---
+
+## 八、提示词模板
+
+```
+{性别}角色四视图设定图,真人写实摄影,古风写实纪实,强对比度,极致细节,
+character design sheet,character turnaround,
+{脸型},{眼型},{鼻型},{唇型},{整体气质},素颜无妆,
+{肤色},水光肌,皮肤通透发光,皮肤细腻,毛孔微可见,
+{身高描述,如:170cm tall、tall slender woman},{头身比,如:7.5 heads tall proportion},{身材描述},{体态描述},
+{发色}{发长},发丝根根分明,{基础造型},无发饰,
+(女性:运动背心和四角短裤 / 男性:仅四角短裤),基础色,无花纹装饰,
+同一画面左至右并排:人像特写+正视图+侧视图+后视图,
+人像特写从头顶到锁骨完整展示,不裁切头顶,head to collarbone complete,
+全身立像从头顶到脚底完整展示,full body head to toe,不裁切头顶和脚部,
+自然站立,纯净中性灰背景,均匀柔光,无硬阴影,
+四视图一致性,面容细腻渲染,发丝细腻渲染
+图中不要有任何文字
+```
+
+---
+
+## 九、约束规则
+
+### 必守
+
+| 编号 | 规则 |
+|---|---|
+| R1 | 必须为「素颜无妆」状态 |
+| R2 | 必须声明基础服装(女性:运动背心+四角短裤;男性:四角短裤) |
+| R3 | 必须声明「无发饰、无配饰」 |
+| R4 | 必须指定「纯净中性灰背景」 |
+| R5 | 必须指定「四视图一致性」 |
+| R6 | 全身立像必须从头顶到脚底完整展示,严禁裁切 |
+| R7 | 必须声明角色身高并通过头身比换算约束全身比例(女性默认160-170cm/7-8头身,男性默认175-185cm/7.5-8.5头身) |
+| R8 | 人像特写必须从头顶到锁骨完整展示,严禁裁切头顶 |
+
+### 严禁
+
+| 编号 | 严禁 |
+|---|---|
+| X1 | 基础服装以外的任何服装/配饰/妆容 |
+| X2 | 正顶硬光/正底光/彩色光 |
+| X3 | 过度美白至无血色 / 肤色发灰 |
+| X4 | 复杂场景背景(必须纯灰底) |
+| X5 | 夸张表情/动态姿势 |
+| X6 | 全身立像裁切头顶或脚底,必须从头到脚完整入画 |
+| X7 | 人像特写裁切头顶,必须从头顶到锁骨完整入画 |
+| X8 | 忽略身高和头身比约束,身高必须明确声明并通过头身比换算体现全身比例 |
+
+
diff --git a/data/skills/art_skills/realpeople_ancient_chinese/art_prompt/art_character_derivative.md b/data/skills/art_skills/realpeople_ancient_chinese/art_prompt/art_character_derivative.md
new file mode 100644
index 0000000..00da851
--- /dev/null
+++ b/data/skills/art_skills/realpeople_ancient_chinese/art_prompt/art_character_derivative.md
@@ -0,0 +1,323 @@
+# 人物衍生资产生成 · 约束手册
+
+---
+
+## 一、叠加原则
+
+1. **面容不变** — 叠加后五官必须与底模完全一致,禁止面容偏移
+2. **姿态不变** — 保持底模自然站立姿态,禁止任何姿态/动作/体态变化
+3. **逐层可控** — 每层独立描述,便于按层替换(换装不换妆)
+4. **风格统一** — 所有服化元素服从同一美学体系
+5. **质感不降** — 叠加后质感标准不低于底模
+6. **纯服化范畴** — 仅叠加妆容/发型/服饰/配饰,禁止引入道具、场景、环境、动作
+
+---
+
+## 二、叠加层级
+
+| 层级 | 内容 | 说明 |
+|---|---|---|
+| L0 | 底模 | 基础形象底模,不修改 |
+| L1 | 妆容(决策层) | 先分析用户线索,再决策「基础妆 / 轻妆 / 正式妆」强度 |
+| L2 | 发型造型 | 发髻/束发/编发 + 发饰 |
+| L3 | 中衣/内搭 | 替换白色基础中衣 |
+| L4 | 外衣/主服 | 大袖衫/直裾/大氅等 |
+| L5 | 配饰 | 头饰/耳饰/项饰/腰饰/手饰 |
+
+> **范畴边界**:人物衍生资产仅包含 L0–L5 层级(服化妆造),不包含道具(伞/剑/扇/书/灯笼等手持物)、场景环境(室内/室外/天气等)、姿态动作(行走/回眸/举手等)。这些属于其他资产类型的范畴。
+
+---
+
+## 三、妆容约束(L1)
+
+### 底模到衍生妆造策略(关键)
+
+> 角色底模虽为素颜,但衍生资产默认进入妆造流程。系统应根据用户提供的线索分析妆造需求,并在基础妆、轻妆、正式妆之间决策强度,而不是保持素颜。
+
+### L1 线索分析与妆容决策
+
+| 步骤 | 处理内容 | 决策结果 |
+|---|---|---|
+| S1 | 提取用户线索:面部状态词、情绪词、强度词 | 形成妆容需求摘要 |
+| S2 | 过滤非妆容线索:道具/场景/动作/姿态词不作为上妆依据 | 防止误判 |
+| S3 | 匹配妆容风格矩阵并给出强度档 | 基础妆 / 轻妆 / 正式妆 |
+| S4 | 生成最终 L1 提示词 | 只输出结论,不输出分析过程 |
+
+### 线索到妆容映射(执行口径)
+
+| 线索类型 | 典型线索 | L1 决策 |
+|---|---|---|
+| 无明显面部强调线索 | 仅服饰/发型变化,未强调情绪与状态 | 基础妆 |
+| 轻微面部线索 | 轻柔、含笑、睫毛轻颤、气色微提 | 轻妆(极淡) |
+| 明确病弱线索 | 面色苍白、唇色极淡、眼下微红 | 病弱梨妆(轻妆) |
+| 明确正式仪式线索 | 盛装、典礼、华贵亮相 | 正式妆(受控) |
+
+> 判定原则:所有衍生资产都要有妆造;先看面部线索决定强度与风格,道具、场景、姿态变化不得单独抬高妆容强度。
+
+### 女性妆容风格矩阵
+
+| 风格 | 适用场景 | 核心提示词 |
+|---|---|---|
+| 清雅素妆 | 日常、初遇、闺中 | 妆容清雅、淡扫蛾眉、素妆清颜 |
+| 冷艳霜妆 | 正式、对峙、权力 | 妆容冷艳、眉眼锋利、薄唇冷冽 |
+| 柔媚桃妆 | 甜宠、暧昧、心动 | 桃花妆、眼尾微红、唇色水润 |
+| 病弱梨妆 | 受伤、虚弱 | 面色苍白、唇色极淡、眼下微红 |
+| 华贵凤妆 | 大婚、盛装 | 浓妆华美、朱唇凤眼 |
+
+### 通用底肤(所有妆容共享)
+
+| 项目 | 约束 | 提示词 |
+|---|---|---|
+| 质感 | 水光肌、自然透亮 | 水光肌、奶油瓷肌、luminous skin |
+| 白度 | 冷白皮、通透不惨白 | 牛奶肌、milky white skin |
+| 内透光 | 从内向外柔光感 | 内透光感、皮肤通透发光 |
+| 禁止 | 哑光/死白/蜡感/油光/过曝 | — |
+
+### 基础妆细化(默认档)
+
+| 项目 | 约束 | 提示词 |
+|---|---|---|
+| 眉部 | 顺着底模眉形轻修,不改变眉型 | 自然修眉、眉形干净 |
+| 眼部 | 极淡眼部修饰,强调清透与有神 | 眼部清透、极淡内眼线 |
+| 面颊 | 极淡气色提亮,不可明显堆色 | 面颊气色自然、微弱提气色 |
+| 唇部 | 裸粉或浅粉润色,保持克制 | 唇色自然润泽、浅粉唇色 |
+| 整体 | 看得出有妆造,但妆感非常轻 | 基础妆、伪素颜妆感、自然精修 |
+
+### 分部位(以清雅素妆为例)
+
+| 部位 | 约束 | 提示词 |
+|---|---|---|
+| 底妆 | 轻薄通透、水光微光泽 | 底妆轻薄、水光奶油肌 |
+| 眉妆 | 远山眉/柳叶眉、灰棕淡扫 | 远山黛眉、淡扫蛾眉 |
+| 眼妆 | 极淡眼影、内眼线、睫毛纤长 | 眼妆清透、睫毛纤长 |
+| 腮红 | 极淡薄粉、苹果肌微扫 | 腮红极淡、薄粉微醺 |
+| 唇妆 | 水润浅粉、微光泽 | 唇色水润浅粉 |
+
+### 男性妆容
+
+| 项目 | 约束 | 提示词 |
+|---|---|---|
+| 底肤 | 水光奶油肌、白皙透亮、清爽自然 | 水光肌、奶油肌、luminous skin |
+| 原则 | 伪素颜——看着没化妆但皮肤极好 | 伪素颜、天生好皮 |
+| 眉毛 | 自然浓眉、不画眉 | 剑眉自然、眉形英挺 |
+| 唇色 | 自然血色、微润 | 唇色自然、血色感 |
+
+---
+
+## 四、发型造型约束(L2)
+
+### 女性造型类型
+
+| 造型 | 描述 | 适用 | 提示词 |
+|---|---|---|---|
+| 半挽云髻 | 发顶挽髻+后方垂发 | 日常、出行 | 半挽云髻、青丝半绾 |
+| 飞仙髻 | 高髻飞挑、飘逸 | 仙境、亮相 | 飞仙髻、高髻飞挑 |
+| 堕马髻 | 侧偏低髻、慵懒 | 私密、暧昧 | 堕马髻、慵懒侧髻 |
+| 双环髻 | 双髻对称、少女 | 年轻角色 | 双环髻、少女双髻 |
+| 全散发 | 长发全散、配简单发饰 | 受伤、落魄 | 长发散落、青丝如瀑 |
+| 束发马尾 | 高束干练 | 习武、行动 | 束发高马尾、干练利落 |
+
+### 女性发饰
+
+| 项目 | 约束 | 提示词 |
+|---|---|---|
+| 风格 | 极繁主义,与服饰配套 | 极繁主义发饰、华美精致 |
+| 材质 | 金属 + 珠玉 + 流苏 | 金丝流苏、珠翠满头 |
+| 工艺 | 大师工艺、超精细 | 大师工艺、精雕细琢 |
+
+### 男性造型类型
+
+| 造型 | 适用 | 提示词 |
+|---|---|---|
+| 束发半冠 | 日常、文人 | 束发半冠、玉簪束发 |
+| 全冠高束 | 正式、朝堂 | 全冠高束、玉冠束发 |
+| 散发披肩 | 私密、受伤 | 散发披肩、长发如墨 |
+| 战束马尾 | 战斗、习武 | 高束战发、马尾利落 |
+
+---
+
+## 五、服饰约束(L3+L4)
+
+### 女性服饰矩阵
+
+| 风格 | 款式 | 适用 | 提示词 |
+|---|---|---|---|
+| 仙气飘逸装 | 多层大袖衫、魏晋制 | 日常、仙境 | 大袖衫、多层衣衫、衣料飘逸 |
+| 端庄礼服 | 曲裾深衣/襦裙 | 朝堂、宴会 | 曲裾深衣、端庄华美 |
+| 轻便常服 | 窄袖襦裙/短衫 | 行动、习武 | 窄袖短衫、轻便利落 |
+| 寝衣 | 薄纱内衫、素色 | 室内、夜间 | 素色寝衣、宽松舒适 |
+| 大婚嫁衣 | 凤冠霞帔、层叠红装 | 婚礼 | 凤冠霞帔、层叠红裳 |
+
+### 女性服饰通用约束
+
+| 项目 | 约束 | 提示词 |
+|---|---|---|
+| 主色 | 白色/月白/银灰为默认 | 白色精致衣服、素衣如雪 |
+| 材质 | 厚实飘逸 + 刺绣 + 珠光面料 | 衣料厚实飘逸、珠光刺绣 |
+| 质感 | 纹理必须超清晰 | 衣服质感清晰、纹理超清晰 |
+| 肩部 | 肩饰/披帛/云肩 | 云肩华美、肩头有装饰 |
+| 层次 | 多层叠穿、层次分明 | 多层叠穿、层次分明 |
+
+### 男性服饰矩阵
+
+| 风格 | 适用 | 提示词 |
+|---|---|---|
+| 文人雅装 | 日常、书房 | 宽袖长衫、月白衣衫 |
+| 武将劲装 | 战斗、练武 | 窄袖劲装、深色战服 |
+| 玄衣大氅 | 出场、夜行 | 墨色大氅、披风猎猎 |
+| 常服便装 | 休闲、私密 | 素色常服、简约便装 |
+| 礼服朝服 | 朝堂、典礼 | 正式朝服、华贵礼袍 |
+
+---
+
+## 六、配饰约束(L5)
+
+### 女性配饰
+
+| 类型 | 约束 | 提示词 |
+|---|---|---|
+| 头饰 | 极繁主义、不单薄 | 极繁主义头饰、珠翠满头 |
+| 耳饰 | 垂坠流苏/玉珰 | 流苏耳环、玉珰垂坠 |
+| 项饰 | 璎珞/项圈 | 璎珞华美、精致项圈 |
+| 腰饰 | 宫绦/玉佩 | 宫绦飘逸、腰间玉佩 |
+| 手饰 | 玉镯/臂钏 | 玉镯通透、臂钏精致 |
+
+### 男性配饰
+
+| 类型 | 约束 | 提示词 |
+|---|---|---|
+| 发冠 | 玉冠/金冠、精致 | 玉冠束发 |
+| 腰封 | 宽腰封/革带 | 宽腰封、质感分明 |
+| 玉佩 | 通透温润 | 腰间玉佩 |
+| 兵器 | 佩剑/扇/笛(可选) | 长剑在侧、折扇半掩 |
+
+---
+
+## 七、服化组合速查
+
+| 场景 | 妆容 | 发型 | 服饰 | 配饰 |
+|---|---|---|---|---|
+| 日常闺中 | 清雅素妆 | 半挽云髻 | 仙气飘逸装 | 中等 |
+| 初次相遇 | 清雅素妆 | 半挽/飞仙 | 仙气飘逸装 | 中偏多 |
+| 甜宠互动 | 柔媚桃妆 | 半挽/堕马 | 仙气/轻便 | 中等 |
+| 正式亮相 | 冷艳霜妆 | 飞仙髻 | 端庄礼服 | 极繁 |
+| 夜间密谈 | 清雅/桃妆 | 全散/堕马 | 寝衣 | 极简 |
+| 受伤落魄 | 病弱梨妆 | 全散(乱) | 破损常服 | 极简/无 |
+| 大婚典礼 | 华贵凤妆 | 飞仙髻 | 嫁衣 | 极繁 |
+| 习武行动 | 素妆(极淡) | 束发马尾 | 轻便常服 | 简 |
+
+---
+
+> **🔍 未覆盖场景推断规则**
+>
+> 当用户描述的场景/情境不在上表时,根据本风格核心基因自行推断:
+>
+> | 推断维度 | 真人写实古风基因 |
+> |---|---|
+> | 妆容强度 | 默认清雅素妆(水光肌+发丝写实);权力/对峙→冷艳霜妆;心动/暧昧→柔媚桃妆;受伤/虚弱→病弱梨妆;大婚/典礼→华贵凤妆 |
+> | 发型 | 日常/闺中→半挽云髻;仙境/亮相→飞仙髻;私密/暧昧→堕马髻;受伤落魄→全散发;行动→束发马尾;发丝必须根根分明 |
+> | 服饰 | 真人写实质感优先;日常→大袖衫/轻柔飘逸;正式→曲裾深衣;行动→窄袖常服;主色默认白/月白;纹理必须超清晰 |
+> | 配饰繁度 | 写实工艺极繁主义(大师工艺精雕细琢);日常→中等;正式→极繁(珠翠满头+璎珞+宫绦);行动→简;受伤→极简/无 |
+> | 质感基准 | 真人写实摄影锚定;水光奶油瓷肌+发丝细节始终保持;禁止 3D 渲染/CG 感 |
+
+## 八、四视图设定图规范
+
+> 衍生服化叠加后仍需输出四视图设定图,确保服化妆造在各角度的一致性。
+
+### 视图定义
+
+| 位置 | 视图 | 角度 | 景别 | 要求 | 提示词 |
+|---|---|---|---|---|---|
+| 左一 | 人像特写 | 正面平视 | 面部至锁骨 | 面部占60%+,五官/妆容清晰 | portrait closeup、face detail、makeup detail |
+| 左二 | 正视图 | 正面 0° | 全身立像 | 面对镜头、服饰正面全貌 | front view、height mark |
+| 右二 | 侧视图 | 右侧 90° | 全身立像 | 纯侧面轮廓、服饰侧面层次 | side view、profile、height mark |
+| 右一 | 后视图 | 后方 180° | 全身立像 | 后脑发饰/背部服饰/发尾清晰 | back view、rear view、height mark |
+
+### 画面规范
+
+| 项目 | 约束 |
+|---|---|
+| 布局 | 同一画面从左至右并排四视图 |
+| 背景 | 纯净中性灰 #E8E8E8 |
+| 站姿 | 自然站立、双脚平行微分、双臂自然下垂或微展(**禁止任何姿态变化**) |
+| 表情 | 符合妆容风格的微表情(如清雅素妆→淡然、桃妆→含笑),仅限面部微表情,不涉及肢体动作 |
+| 光线 | 均匀柔光,前方主光 + 双侧补光,无硬阴影 |
+| 一致性 | 四视图的面容/妆容/发型/发饰/服饰/配饰完全一致 |
+| 画面比例 | 建议 4:1 或 3:1 |
+
+---
+
+## 九、提示词模板
+
+### 输出格式约束
+
+| 项目 | 约束 |
+|---|---|
+| 输出内容 | **仅输出提示词文本**,不输出任何其他内容 |
+| 禁止输出 | 速查表、分层构建方案、视觉约束表、禁止事项表、衍生方案、输出建议、核心要素表等一切非提示词内容 |
+| 禁止场景 | 人物衍生资产**不包含场景/环境描述**,不输出任何场景/环境/天气/背景叙事内容(场景属于场景资产范畴) |
+| 禁止道具 | **不包含任何道具交互**,不输出伞/剑/扇/书/灯笼/酒杯等手持物或交互物(道具属于道具资产范畴) |
+| 禁止姿态变化 | **不改变底模姿态**,不输出行走/回眸/举手/侧身/奔跑等任何动作或体态变化,保持自然站立 |
+| 格式 | 直接输出可用的提示词代码块,无需标题、表格、解释、方案对比 |
+
+### 完整服化叠加(四视图)
+
+```
+以角色基础形象图为底图,img2img叠加服化妆造,
+古风{性别}角色四视图设定图,真人写实摄影,古风写实纪实,强对比度,极致细节,8K,超保真
+character design sheet,character turnaround,
+保持基础形象面容不变,{整体气质},
+【L1·妆容】根据用户线索决策:{基础妆/轻妆/正式妆};使用 {妆容风格},水光奶油瓷肌,{眉妆},{眼妆},{唇妆},
+【L2·发型】{造型类型},发丝根根分明,{发饰描述},
+【L3+L4·服饰】{主色}{款式},{材质},{装饰工艺},衣服质感清晰,纹理超清晰,
+【L5·配饰】{头饰},{耳饰},{项饰},{腰饰},
+同一画面左至右并排:人像特写+正视图+侧视图+后视图,
+自然站立,纯净中性灰背景,均匀柔光,无硬阴影,
+四视图一致性,面容细腻渲染,发丝细腻渲染,纹理细节超清晰
+图中不要有任何文字
+```
+
+---
+
+## 十、约束规则
+
+### 必守
+
+| 编号 | 规则 |
+|---|---|
+| R1 | 叠加后面容必须与底模一致 |
+| R2 | 服饰必须用「衣服质感清晰 + 纹理超清晰」 |
+| R3 | 女性配饰必须「极繁主义 + 大师工艺」 |
+| R4 | 妆容/发型/服饰/配饰风格统一 |
+| R5 | 必须输出四视图设定图(人像特写+正视图+侧视图+后视图) |
+| R6 | 必须指定「纯净中性灰背景」 |
+| R7 | 必须指定「四视图一致性」 |
+| R8 | **仅输出提示词**——禁止输出速查表/分层方案/视觉约束/禁止事项/衍生方案/输出建议等任何非提示词内容 |
+| R9 | **禁止包含场景描述**——人物衍生资产不涉及场景/环境/天气/背景叙事,场景属于独立资产类型 |
+| R10 | **禁止道具交互**——不包含任何手持物/交互物(伞/剑/扇/书等),道具属于独立资产类型 |
+| R11 | **姿态保持不变**——必须保持底模自然站立姿态,禁止任何动作/体态/姿势变化 |
+| R12 | **L1 必须先分析再决策**——先解析用户面部线索,再确定基础妆/轻妆/正式妆 |
+| R13 | **所有衍生资产均需妆造**——正常情况不保持素颜,至少使用基础妆 |
+| R14 | **上妆强度受控**——即使上妆也需克制,不得出现现代浓妆/夸张彩妆效果 |
+| R15 | **道具/场景/动作不作强度升级依据**——仅凭道具,环境,动作等信息不得把基础妆抬高为更强妆容 |
+
+### 严禁
+
+| 编号 | 严禁 |
+|---|---|
+| X1 | 叠加后面容偏移 |
+| X2 | 配饰过于简单/现代化(女性) |
+| X3 | 妆容/服饰风格互相冲突 |
+| X4 | 复杂场景背景(必须纯灰底) |
+| X5 | 四视图间服化妆造不一致 |
+| X6 | 输出提示词以外的任何内容(表格/方案/建议/解释/变体等) |
+| X7 | 在人物衍生资产中加入场景描述(山道/雨景/室内/街道/天气等环境元素) |
+| X8 | 输出「核心要素速查」「分层构建方案」「视觉约束」「禁止事项」「衍生方案」等章节 |
+| X9 | 加入任何道具交互(手持伞/剑/扇/书/灯笼/酒杯等物品) |
+| X10 | 改变底模姿态(行走/回眸/举手/侧身/奔跑/低头/仰望等动作描述) |
+| X11 | 加入表情与姿态联动描述(如「侧身45°行走嘴角浅弯」等叙事性描写) |
+| X12 | 未分析用户线索就直接套用固定妆容 |
+| X13 | 错误保持素颜,导致衍生资产缺少应有妆造 |
+| X14 | 仅因道具/场景/动作词而误把妆容升级,导致妆造强度决策错误 |
+
+
diff --git a/data/skills/art_skills/realpeople_ancient_chinese/art_prompt/art_prop.md b/data/skills/art_skills/realpeople_ancient_chinese/art_prompt/art_prop.md
new file mode 100644
index 0000000..154f962
--- /dev/null
+++ b/data/skills/art_skills/realpeople_ancient_chinese/art_prompt/art_prop.md
@@ -0,0 +1,130 @@
+# 道具图像生成 · 约束手册
+
+---
+
+## 一、道具设计原则
+
+1. **功能可读** — 道具用途一目了然,造型服务于功能
+2. **质感极致** — 材质纹理必须清晰可辨(金属/玉石/木/布/纸)
+3. **年代一致** — 所有道具必须符合古风世界观,禁止现代元素
+4. **尺度明确** — 通过参照物或标注暗示道具真实尺寸
+5. **纯道具独立展示** — 画面中只能出现道具本身,严禁出现任何人物、手部、肢体,道具不可处于被持有/佩戴/握持状态,必须以静物陈列方式独立呈现
+
+---
+
+## 二、道具分类与美学约束
+
+### 2.1 兵器类
+
+| 项目 | 约束 | 提示词 |
+|---|---|---|
+| 类型 | 剑/刀/弓/枪/扇 | {兵器类型},古风兵器 |
+| 材质 | 精钢/玄铁 + 宝石镶嵌 + 丝绸剑穗 | 寒光凛冽、精钢锻造 |
+| 装饰 | 剑鞘/刀柄雕花、流苏、暗纹 | 雕花精致、流苏垂坠 |
+| 光泽 | 金属冷光泽、刃口反光 | 寒光闪烁、金属质感 |
+| 提示词 | 古风{兵器},精钢锻造,寒光凛冽,雕花精致 | — |
+
+### 2.2 饰品类
+
+| 项目 | 约束 | 提示词 |
+|---|---|---|
+| 类型 | 簪/钗/璎珞/玉佩/手镯/耳坠 | {饰品类型},古风首饰 |
+| 材质 | 金/银/玉/珍珠/宝石 | 金丝编织、玉质通透 |
+| 工艺 | 极致精细、花丝/掐丝/镶嵌 | 大师工艺、精雕细琢 |
+| 光泽 | 珠光/玉润/金属光泽 | 珠光莹润、金属光泽 |
+| 提示词 | 古风{饰品},{材质},大师工艺,精雕细琢 | — |
+
+### 2.3 生活器物类
+
+| 项目 | 约束 | 提示词 |
+|---|---|---|
+| 类型 | 茶具/酒具/香炉/棋盘/书卷/灯笼 | {器物类型},古风器物 |
+| 材质 | 瓷/铜/竹/木/纸 | 青瓷温润、紫铜古朴 |
+| 质感 | 釉面/木纹/竹节清晰 | 釉面光泽、木纹清晰 |
+| 风格 | 素雅/华贵按场景切换 | 素雅古朴 / 华贵精致 |
+| 提示词 | 古风{器物},{材质}质感,纹理清晰 | — |
+
+### 2.4 信物/关键道具类
+
+| 项目 | 约束 | 提示词 |
+|---|---|---|
+| 类型 | 信物/令牌/卷轴/药瓶/玉印 | {道具类型},古风道具 |
+| 特殊性 | 需有辨识度、叙事象征意义 | 独特造型、寓意深远 |
+| 做旧感 | 可按剧情需要添加年代感 | 古旧斑驳 / 崭新精致 |
+| 提示词 | 古风{道具},{材质},{状态},独特造型 | — |
+
+---
+
+## 三、多角度设定图规范
+
+### 视图定义
+
+| 位置 | 视图 | 角度 | 要求 | 提示词 |
+|---|---|---|---|---|
+| 左上 | 正面图 | 正面 0° | 道具完整正面形态 | front view |
+| 右上 | 侧面图 | 侧面 90° | 厚度/轮廓/结构清晰 | side view |
+| 左下 | 背面图 | 背面 180° | 道具背部结构/装饰 | back view |
+| 右下 | 细节特写 | 局部放大 | 材质纹理/工艺细节 | detail closeup |
+
+### 画面规范
+
+| 项目 | 约束 |
+|---|---|
+| 布局 | 同一画面四宫格(2×2),上下左右四视角 |
+| 背景 | 纯净中性灰 #E8E8E8 |
+| 光线 | 均匀柔光,无硬阴影 |
+| 比例 | 每格道具占格内主体 70%+ |
+| 投影 | 允许自然地面微投影 |
+| 画面比例 | 建议 1:1 |
+
+---
+
+## 四、材质渲染约束
+
+| 材质 | 渲染要求 | 提示词 |
+|---|---|---|
+| 金属 | 反光/高光/冷光泽、划痕微可见 | 金属质感、冷光泽、反光清晰 |
+| 玉石 | 内透光、温润、微通透 | 玉质通透、温润如脂 |
+| 木质 | 木纹清晰、年轮可见 | 木纹清晰、质感温润 |
+| 瓷器 | 釉面光泽、色泽均匀 | 釉面光泽、瓷质温润 |
+| 布/纸 | 纤维质感、边缘自然 | 布料纹理、纸质古朴 |
+| 宝石 | 折射/内部光线、切面清晰 | 宝石璀璨、光芒折射 |
+
+---
+
+## 五、提示词模板
+
+```
+古风道具设定图,真人写实摄影风格,古风写实纪实,强对比度,极致细节,
+{道具类型},{材质描述},{工艺/装饰描述},{状态描述},
+纯道具静物展示,道具独立陈列,无人持有,无人佩戴,
+同一画面四宫格(2×2):左上正面图+右上侧面图+左下背面图+右下细节特写,
+纯净中性灰背景,均匀柔光,无硬阴影,
+材质纹理超清晰,质感写实,{材质光泽描述}
+图中不要有任何文字,
+画面中不能出现任何人物、手部、手指、肢体,道具不可处于被握持或佩戴状态
+```
+
+---
+
+## 六、约束规则
+
+### 必守
+
+| 编号 | 规则 |
+|---|---|
+| R1 | 必须指定「纯净中性灰背景」 |
+| R2 | 必须明确道具材质与工艺 |
+| R3 | 道具造型必须符合古风世界观 |
+
+### 严禁
+
+| 编号 | 严禁 |
+|---|---|
+| X1 | 复杂场景背景 |
+| X2 | 道具与人物同画面(本环节为纯道具图) |
+| X3 | 出现任何人物形象,包括全身、半身、局部(手、手指、手臂等肢体) |
+| X4 | 道具处于被持有、握持、佩戴、使用中的状态 |
+| X5 | 出现暗示人物存在的元素(如手持痕迹、佩戴视角、使用姿态) |
+
+
diff --git a/data/skills/art_skills/realpeople_ancient_chinese/art_prompt/art_prop_derivative.md b/data/skills/art_skills/realpeople_ancient_chinese/art_prompt/art_prop_derivative.md
new file mode 100644
index 0000000..204c5fb
--- /dev/null
+++ b/data/skills/art_skills/realpeople_ancient_chinese/art_prompt/art_prop_derivative.md
@@ -0,0 +1,119 @@
+# 道具衍生状态生成 · 约束手册
+
+---
+
+## 一、衍生原则
+
+1. **造型锚定** — 道具核心造型/轮廓在所有状态中可识别
+2. **状态可读** — 状态差异必须一目了然,观众能立即区分
+3. **叙事服务** — 每种状态变体服务于特定剧情节点
+4. **渐进退化** — 损伤/老化状态应有合理的物理逻辑
+5. **纯道具独立展示** — 画面中只能出现道具本身,严禁出现任何人物、手部、肢体,道具不可处于被持有/佩戴/握持状态,必须以静物陈列方式独立呈现
+
+---
+
+## 二、状态类型
+
+### 2.1 使用状态
+
+| 状态 | 描述 | 适用道具 | 提示词 |
+|---|---|---|---|
+| 崭新 | 完好无损、光泽如新 | 所有道具 | 崭新、完好无损、光泽如新 |
+| 日常使用 | 微磨损、自然包浆 | 兵器/器物/饰品 | 日常使用痕迹、自然包浆 |
+| 陈旧 | 明显年代感、色泽暗淡 | 器物/信物/卷轴 | 古旧斑驳、年代感、色泽暗沉 |
+
+### 2.2 损伤状态
+
+| 状态 | 描述 | 适用道具 | 提示词 |
+|---|---|---|---|
+| 微损 | 小裂纹/小缺口/轻微磨损 | 瓷器/玉佩/兵器 | 细微裂纹、轻微缺口 |
+| 破损 | 明显裂缝/断裂/破碎 | 瓷器/饰品/兵器 | 裂缝明显、碎裂、断裂 |
+| 残片 | 仅剩部分/碎片 | 瓷器/玉佩/信物 | 残片、碎片、仅存半块 |
+
+### 2.3 特殊状态
+
+| 状态 | 描述 | 适用道具 | 提示词 |
+|---|---|---|---|
+| 染血 | 血迹附着 | 兵器/衣物/信物 | 血迹斑驳、染血 |
+| 浸水/湿润 | 水渍、湿润反光 | 卷轴/信物/衣物 | 浸水、纸张湿润、墨迹晕染 |
+| 燃烧/焦损 | 焦黑边缘、火烧痕迹 | 卷轴/信物/木质品 | 边缘焦黑、火烧痕迹 |
+| 发光/激活 | 内在能量、光芒四射 | 信物/法器/玉石 | 微微发光、内蕴光华 |
+| 包裹/封存 | 用布/盒子包裹 | 信物/饰品/秘物 | 锦布包裹、木盒封存 |
+
+---
+
+## 三、状态变体画面规范
+
+### 单状态图
+
+| 项目 | 约束 |
+|---|---|
+| 背景 | 纯净中性灰 #E8E8E8(与设定图一致) |
+| 光线 | 均匀照明,无硬阴影 |
+| 角度 | 与原设定图正面图一致 |
+| 比例 | 道具占画面主体 70%+ |
+
+### 状态对比图
+
+| 项目 | 约束 |
+|---|---|
+| 布局 | 同一画面并排展示 2-3 种状态 |
+| 标注 | 每种状态下方标注状态名 |
+| 一致性 | 角度/光线/背景完全一致,仅状态不同 |
+
+---
+
+## 四、材质状态变化规则
+
+| 材质 | 崭新 → 日常 | 日常 → 陈旧 | 损伤表现 |
+|---|---|---|---|
+| 金属 | 亮光泽 → 微包浆 | 包浆 → 锈蚀斑点 | 缺口/卷刃/断裂 |
+| 玉石 | 通透温润 → 微磨损 | 磨损 → 表面微裂 | 裂纹/碎裂/缺角 |
+| 木质 | 新木纹理 → 自然包浆 | 包浆 → 色泽暗沉 | 开裂/断裂/虫蛀 |
+| 瓷器 | 釉面光泽 → 微划痕 | 划痕 → 釉面暗淡 | 裂纹/碎裂/缺口 |
+| 布/纸 | 崭新平整 → 微皱折 | 皱折 → 发黄变脆 | 撕裂/焦损/墨迹晕染 |
+
+---
+
+## 五、提示词模板
+
+### 单状态变体
+
+```
+基于{道具名}设定图,真人写实摄影风格,古风写实纪实,强对比度,极致细节,
+{道具类型},{材质描述},
+当前状态:{状态名},{状态视觉描述},
+{材质表面变化描述},
+纯道具静物展示,道具独立陈列,无人持有,无人佩戴,
+同一画面四宫格(2×2):左上正面图(front view)+右上侧面图(side view)+左下背面图(back view)+右下细节特写(detail closeup),
+纯净中性灰背景,均匀柔光,无硬阴影,
+材质纹理超清晰,质感写实,状态细节可辨
+图中不要有任何文字,
+画面中不能出现任何人物、手部、手指、肢体,道具不可处于被握持或佩戴状态
+```
+
+---
+
+## 六、约束规则
+
+### 必守
+
+| 编号 | 规则 |
+|---|---|
+| R1 | 道具核心造型/轮廓在所有状态中可识别 |
+| R2 | 状态变化须符合物理逻辑 |
+| R3 | 必须使用四宫格(2×2)布局:左上正面图+右上侧面图+左下背面图+右下细节特写 |
+| R4 | 必须指定「纯净中性灰背景」,均匀柔光,无硬阴影 |
+
+### 严禁
+
+| 编号 | 严禁 |
+|---|---|
+| X1 | 状态变化后道具不可识别 |
+| X2 | 违反物理逻辑的损伤(玉石生锈等) |
+| X3 | 过度血腥/恐怖的损伤描绘 |
+| X4 | 出现任何人物形象,包括全身、半身、局部(手、手指、手臂等肢体) |
+| X5 | 道具处于被持有、握持、佩戴、使用中的状态 |
+| X6 | 出现暗示人物存在的元素(如手持痕迹、佩戴视角、使用姿态) |
+
+
diff --git a/data/skills/art_skills/realpeople_ancient_chinese/art_prompt/art_scene.md b/data/skills/art_skills/realpeople_ancient_chinese/art_prompt/art_scene.md
new file mode 100644
index 0000000..8991979
--- /dev/null
+++ b/data/skills/art_skills/realpeople_ancient_chinese/art_prompt/art_scene.md
@@ -0,0 +1,159 @@
+# 场景图生成 · 约束手册
+
+---
+
+## 一、场景美学原则
+
+1. **空间叙事** — 场景承载情绪与叙事功能,不是纯背景板
+2. **层次纵深** — 所有场景必须具备前/中/后景,杜绝扁平
+3. **质感至上** — 木纹/石质/布料/水面等材质纹理必须超清晰
+4. **实拍为锚** — 一切画面以真实摄影为标准,拒绝 3D 渲染/CG 动画质感;追求镜头光学特征(景深虚化、镜头暗角、色散微痕)与物理光照(自然光漫射、焦散、体积光)
+
+---
+
+## 二、季节色调映射
+
+| 季节 | 主色调 | 辅色调 | 提示词 |
+|---|---|---|---|
+| 春 | 青翠 + 桃粉 | 月白、鹅黄 | 春色青翠、桃花灼灼 |
+| 夏 | 碧绿 + 荷粉 | 天青、莲白 | 夏荷碧绿、浓荫蔽日 |
+| 秋 | 赤红 + 金黄 | 琥珀、暮灰 | 秋枫赤红、金叶飘零 |
+| 冬 | 素白 + 霜银 | 墨玉黑、冰蓝 | 冬雪素白、枯枝霜挂 |
+
+---
+
+## 三、室内场景
+
+### 空间规范
+
+| 维度 | 约束 | 提示词 |
+|---|---|---|
+| 风格 | 古代宅邸/宫殿/书房/闺阁,魏晋至唐宋 | 古代{朝代}风格 |
+| 材质 | 木质为主、石/玉/绢/纱为辅 | 檀木家具、玉石屏风、绢纱帷幔 |
+| 色调 | 低饱和暖木色 + 月白纱幔 + 青瓷 | 暖木色调、素雅陈设 |
+| 纵深 | 前/中/后景层次 | 前景{元素}、中景{元素}、后景{元素} |
+| 质感 | 木纹/布料垂感/瓷器光泽可辨 | 纹理清晰、质感写实 |
+| 光照 | 自然光源为主(窗光/烛光),光线漫射柔和,可见光束粒子、焦散投影 | 自然光漫射、烛光摇曳、光束穿窗、丁达尔效应 |
+| 镜头感 | 浅景深虚化前后景、微镜头暗角、自然色温偏移 | shallow depth of field、lens vignette、natural color cast |
+| 瑕疵感 | 木面有使用痕迹、石面有风化纹、布料有自然褶皱 | 岁月痕迹、自然磨损、布料自然垂褶 |
+
+### 室内类型速查
+
+| 类型 | 核心元素 | 氛围词 |
+|---|---|---|
+| 闺阁/卧房 | 纱帐、梳妆台、铜镜、花瓶 | 温馨私密、纱幔轻垂 |
+| 书房/书斋 | 书架、卷轴、笔墨、棋盘 | 幽静雅致、墨香四溢 |
+| 大殿/正厅 | 高柱、匾额、帷幕、烛台 | 庄严华美、气势恢宏 |
+| 庭院回廊 | 廊柱、石栏、花木、灯笼 | 曲径通幽、灯影摇曳 |
+| 厨房/膳堂 | 灶台、蒸笼、食器 | 烟火气息、温馨日常 |
+
+---
+
+## 四、室外场景
+
+### 空间规范
+
+| 维度 | 约束 | 提示词 |
+|---|---|---|
+| 类型 | 庭院/山林/溪畔/古桥/集市 | {场景},{季节},{时间} |
+| 天候 | 晴/阴/薄雾/细雨/飞雪 | 薄雾弥漫、细雨如丝 |
+| 植被 | 梅/竹/松/桃花/柳/荷(须符合季节) | 桃花灼灼、翠竹成林 |
+| 水体 | 溪/湖/瀑布需有光影反射 | 溪水潺潺、湖面如镜 |
+| 建筑 | 飞檐斗拱、青瓦白墙、石桥木亭 | 飞檐翘角、石拱桥 |
+| 空气感 | 必须有空气透视,远处偏灰偏蓝 | 远山如黛、空气透视 |
+| 光照 | 自然光为唯一光源,日光/月光需有体积光与散射 | 自然光照、体积光、god rays、丁达尔效应 |
+| 镜头感 | 浅景深虚化、镜头暗角、微色散、光斑散景 | shallow depth of field、bokeh、lens flare、vignette |
+| 瑕疵感 | 石面青苔/风化、木面开裂/包浆、瓦片残缺/苔痕 | 青苔斑驳、风化痕迹、岁月包浆 |
+
+### 室外类型速查
+
+| 类型 | 核心元素 | 氛围词 |
+|---|---|---|
+| 庭院花园 | 假山、池塘、花木、石径 | 花影扶疏、曲径通幽 |
+| 山林竹海 | 古木、竹林、山石、云雾 | 层峦叠嶂、云雾缥缈 |
+| 溪畔湖边 | 溪流、卵石、垂柳、荷花 | 溪水潺潺、柳影婆娑 |
+| 古桥长亭 | 石拱桥、长亭、柳树 | 长亭古道、杨柳依依 |
+| 集市街道 | 酒旗、摊贩、灯笼 | 热闹市井、烟火人间 |
+| 屋顶天台 | 瓦片、飞檐、夜空 | 月下独酌、清风徐来 |
+
+---
+
+## 五、四视图设定图规范
+
+### 视图定义
+
+> 摄像机固定于场景中心点,分别朝前/后/左/右四个方向拍摄,形成 360° 环视。
+
+| 位置 | 视图 | 视角方向 | 要求 | 提示词 |
+|---|---|---|---|---|
+| 左上 | 前视图 | 从中心点向前方平视(0°) | 展示场景正面主体结构与纵深层次 | front view、eye level、looking forward |
+| 右上 | 右视图 | 从中心点向右方平视(90°) | 展示场景右侧空间延伸与侧面结构 | right side view、eye level、looking right |
+| 左下 | 后视图 | 从中心点向后方平视(180°) | 展示场景背面结构与空间纵深 | back view、eye level、looking backward |
+| 右下 | 左视图 | 从中心点向左方平视(270°) | 展示场景左侧空间延伸与侧面结构 | left side view、eye level、looking left |
+
+### 画面规范
+
+| 项目 | 约束 |
+|---|---|
+| 布局 | 同一画面 2×2 网格排列:上排(前视图 + 右视图),下排(后视图 + 左视图),形成从中心点环视的四方向视图 |
+| 人物 | **严禁出现任何人物、人影、人体轮廓** |
+| 视点 | 四视图均从同一中心点出发,视线高度一致(人眼平视高度) |
+| 一致性 | 四视图的建筑结构/材质/色调/光线/季节/天候完全一致 |
+| 光线 | 四视图光源方向统一,保持光影逻辑一致(光源在不同视角下的位置关系正确) |
+| 画面比例 | 建议 1:1(2×2 网格) |
+
+---
+
+## 六、提示词模板
+
+```
+古风场景四视图设定图,
+real photography,photorealistic,shot on ARRI Alexa,35mm film grain,
+RAW photo,ultra realistic,hyper detailed,
+shallow depth of field,natural lens vignette,subtle chromatic aberration,bokeh,
+真实摄影质感,胶片颗粒感,自然光照,物理光影,
+scene design sheet,environment concept art,no people,no characters,no human figures,
+{室内/室外},{场景类型},{朝代风格},{季节+时间},
+前景:{元素},中景:{元素},后景:{元素},
+{色调描述},{天候/氛围元素},
+{材质描述},空气透视,纹理细节超清晰,
+材质自然磨损痕迹,岁月包浆,青苔风化,布料自然垂褶,
+自然光漫射,体积光,丁达尔效应,焦散投影,
+同一画面2×2网格排列:从场景中心点环视,前视图+右视图+后视图+左视图,
+四视图均从同一中心点平视拍摄,建筑结构一致,材质色调一致,光影逻辑一致,
+画面中无任何人物
+图中不要有任何文字
+```
+
+---
+
+## 七、约束规则
+
+### 必守
+
+| 编号 | 规则 |
+|---|---|
+| R1 | 场景必须有「前中后景层次」 |
+| R2 | 室外必须包含「空气透视」 |
+| R3 | 场景图必须为「四视图设定图」(从中心点环视:前视图 + 右视图 + 后视图 + 左视图) |
+| R4 | 四视图的建筑结构/材质/色调/光线/季节/天候必须完全一致 |
+| R5 | 场景图中**严禁出现任何人物** |
+| R6 | 必须包含实拍摄影关键词(real photography / photorealistic / RAW photo) |
+| R7 | 必须包含镜头光学特征(shallow depth of field / lens vignette / bokeh 至少一项) |
+| R8 | 材质必须带有自然磨损/岁月痕迹,禁止全新无瑕的"CG 感" |
+
+### 严禁
+
+| 编号 | 严禁 |
+|---|---|
+| X1 | 背景纯白/纯黑/无场景 |
+| X2 | 极端天候(暴风雨/雷电/暴雪,除非剧情需要) |
+| X3 | 场景无纵深/无层次 |
+| X4 | 植被/天候与季节矛盾 |
+| X5 | 出现任何人物、人影、人体剪影或人体轮廓 |
+| X6 | 四视图之间建筑结构/材质/色调不一致,或视点中心不统一 |
+| X7 | 3D 渲染/CG 动画/卡通/游戏引擎质感(禁用 3D render、CGI、Unreal Engine、Unity 等词) |
+| X8 | 材质过于干净完美、无任何使用痕迹与岁月感(避免"塑料感") |
+| X9 | 光照过于均匀平坦、无景深虚化、无镜头光学特征 |
+
+
diff --git a/data/skills/art_skills/realpeople_ancient_chinese/art_prompt/art_scene_derivative.md b/data/skills/art_skills/realpeople_ancient_chinese/art_prompt/art_scene_derivative.md
new file mode 100644
index 0000000..c40854a
--- /dev/null
+++ b/data/skills/art_skills/realpeople_ancient_chinese/art_prompt/art_scene_derivative.md
@@ -0,0 +1,166 @@
+# 场景衍生资产生成 · 约束手册
+
+---
+
+## 一、衍生原则
+
+1. **空间一致** — 建筑结构/布局/材质在所有变体中保持一致
+2. **景别驱动** — 同一场景通过不同景别展示不同叙事功能
+3. **时段切换** — 同一空间在不同时间段呈现不同光影氛围
+4. **天候变化** — 同一空间在不同天气下呈现不同情绪
+5. **实拍为锚** — 所有变体必须保持真实摄影质感,拒绝 3D 渲染/CG 动画感;保留镜头光学特征与物理光照
+
+---
+
+## 二、景别变体
+
+### 景别定义
+
+| 景别 | 范围 | 叙事功能 | 提示词 |
+|---|---|---|---|
+| 大全景 | 场景全貌 + 周围环境 | 建立空间感、定位 | extreme wide shot、大全景 |
+| 全景 | 场景完整呈现 | 展示空间结构 | wide shot、全景 |
+| 中景 | 场景局部区域 | 聚焦功能区 | medium shot、中景 |
+| 近景 | 场景细部 | 材质/氛围道具特写 | close shot、近景 |
+| 特写 | 极局部细节 | 材质纹理/关键道具 | extreme closeup、特写 |
+
+### 景别衍生规范
+
+| 从基准图衍生 | 保持不变 | 允许变化 |
+|---|---|---|
+| 大全景 → 全景 | 建筑外观、整体布局 | 视角收窄、前景增加 |
+| 全景 → 中景 | 材质、色调、光线 | 裁切聚焦、景深变化 |
+| 中景 → 近景 | 材质、色调 | 景深浅、背景虚化 |
+| 近景 → 特写 | 材质纹理 | 极浅景深、微距感 |
+
+---
+
+## 三、时段变体
+
+### 时段定义
+
+| 时段 | 视觉特征 | 提示词 |
+|---|---|---|
+| 清晨 | 薄雾柔光、色调偏冷暖交织 | 晨光微熹、清晨薄雾 |
+| 正午 | 明亮、阴影短、色彩鲜明 | 正午阳光、光线明亮 |
+| 黄昏 | 金色色调、长影、天空渐变 | 暮色金辉、golden hour |
+| 夜间(月光) | 冷蓝色调、幽静清冷 | 月光清辉、moonlight |
+| 夜间(灯火) | 暖黄点缀、明暗对比 | 灯火阑珊、烛光点点 |
+
+### 时段衍生规范
+
+| 从基准时段衍生 | 保持不变 | 变化项 |
+|---|---|---|
+| 日间 → 黄昏 | 建筑/布局/材质 | 天空色调暖化、影子拉长 |
+| 日间 → 夜间 | 建筑/布局/材质 | 整体变暗、增加灯火/月色氛围 |
+| 室内日间 → 室内夜间 | 空间结构、家具 | 整体色调暖化、增加烛火/灯笼元素 |
+
+---
+
+## 四、天候变体
+
+### 天候定义
+
+| 天候 | 视觉特征 | 提示词 |
+|---|---|---|
+| 晴天 | 明亮、阴影清晰 | 晴空万里、阳光明媚 |
+| 阴天 | 光线均匀、无硬影 | 阴天柔光、overcast |
+| 薄雾 | 能见度降低、空气朦胧 | 薄雾弥漫、雾气缭绕 |
+| 细雨 | 水珠、湿润反光、雨丝 | 细雨如丝、雨幕轻纱 |
+| 飞雪 | 白色覆盖、雪花飘落 | 飞雪纷纷、银装素裹 |
+
+### 天候衍生规范
+
+| 从基准天候衍生 | 保持不变 | 变化项 |
+|---|---|---|
+| 晴 → 薄雾 | 建筑/布局 | 增加雾气层、远景模糊、饱和度降低 |
+| 晴 → 细雨 | 建筑/布局 | 增加雨丝、地面反光、色调偏冷 |
+| 晴 → 飞雪 | 建筑/布局 | 增加积雪、雪花、色调偏白 |
+| 植被需随天候逻辑适配 | — | 雨中花瓣湿润、雪中枯枝挂霜 |
+
+---
+
+## 五、四视图设定图规范
+
+### 视图定义
+
+> 摄像机固定于场景中心点,分别朝前/后/左/右四个方向拍摄,形成 360° 环视。
+
+| 位置 | 视图 | 视角方向 | 要求 | 提示词 |
+|---|---|---|---|---|
+| 左上 | 前视图 | 从中心点向前方平视(0°) | 展示场景正面主体结构与纵深层次 | front view、eye level、looking forward |
+| 右上 | 右视图 | 从中心点向右方平视(90°) | 展示场景右侧空间延伸与侧面结构 | right side view、eye level、looking right |
+| 左下 | 后视图 | 从中心点向后方平视(180°) | 展示场景背面结构与空间纵深 | back view、eye level、looking backward |
+| 右下 | 左视图 | 从中心点向左方平视(270°) | 展示场景左侧空间延伸与侧面结构 | left side view、eye level、looking left |
+
+### 画面规范
+
+| 项目 | 约束 |
+|---|---|
+| 布局 | 同一画面四宫格(2×2),左上前视图+右上右视图+左下后视图+右下左视图,形成从中心点环视的四方向视图 |
+| 人物 | **严禁出现任何人物、人影、人体轮廓** |
+| 视点 | 四视图均从同一中心点出发,视线高度一致(人眼平视高度) |
+| 一致性 | 四视图的建筑结构/材质/色调/光线/季节/天候完全一致 |
+| 光线 | 四视图光源方向统一,保持光影逻辑一致(光源在不同视角下的位置关系正确) |
+| 画面比例 | 建议 1:1(2×2 网格) |
+
+---
+
+## 六、提示词模板
+
+```
+古风场景衍生四视图设定图,基于{场景名}概念图,
+real photography,photorealistic,shot on ARRI Alexa,35mm film grain,
+RAW photo,ultra realistic,hyper detailed,
+shallow depth of field,natural lens vignette,subtle chromatic aberration,bokeh,
+真实摄影质感,胶片颗粒感,自然光照,物理光影,
+scene derivative design sheet,environment concept art,no people,no characters,no human figures,
+保持场景空间结构一致,
+{景别视角(如有)},{时段描述(如有)},{天候描述(如有)},
+{前景},{中景},{后景},
+{色调描述},{景深描述(如有)},{天空色调变化(如有)},{氛围调整(如有)},
+{天候视觉特征(如有)},{材质表面变化(如有)},{植被适配描述(如有)},
+材质自然磨损痕迹,岁月包浆,青苔风化,布料自然垂褶,
+自然光漫射,体积光,丁达尔效应,焦散投影,
+空气透视,纹理细节超清晰,
+同一画面四宫格(2×2):从场景中心点环视,前视图+右视图+后视图+左视图,
+四视图均从同一中心点平视拍摄,建筑结构一致,材质色调一致,光影逻辑一致,
+画面中无任何人物
+图中不要有任何文字
+```
+
+> **使用说明**:根据用户提供的信息自行判断需要应用的变化维度(景别/时段/天候),未提及的维度对应字段留空省略即可。无需为每种变体单独生成模板。
+
+---
+
+## 七、约束规则
+
+### 必守
+
+| 编号 | 规则 |
+|---|---|
+| R1 | 场景空间结构在所有变体中保持一致 |
+| R2 | 时段变体必须调整天空色调与氛围 |
+| R3 | 天候变体必须适配植被/材质表面 |
+| R4 | 必须为「四视图设定图」(从中心点环视:前视图 + 右视图 + 后视图 + 左视图) |
+| R5 | 四视图的建筑结构/材质/色调/光线/季节/天候必须完全一致 |
+| R6 | 场景图中**严禁出现任何人物** |
+| R7 | 根据用户提供的信息自行判断变化维度,无需拆分为独立模板 |
+| R8 | 必须包含实拍摄影关键词(real photography / photorealistic / RAW photo) |
+| R9 | 必须包含镜头光学特征(shallow depth of field / lens vignette / bokeh 至少一项) |
+| R10 | 材质必须带有自然磨损/岁月痕迹,禁止全新无瑕的"CG 感" |
+
+### 严禁
+
+| 编号 | 严禁 |
+|---|---|
+| X1 | 变体间建筑结构/布局不一致 |
+| X2 | 天候与季节矛盾(夏天飞雪等) |
+| X3 | 变体间材质/风格突变 |
+| X4 | 出现任何人物、人影、人体剪影或人体轮廓 |
+| X5 | 四视图之间建筑结构/材质/色调不一致,或视点中心不统一 |
+| X6 | 3D 渲染/CG 动画/卡通/游戏引擎质感(禁用 3D render、CGI、Unreal Engine、Unity 等词) |
+| X7 | 材质过于干净完美、无任何使用痕迹与岁月感(避免"塑料感") |
+| X8 | 光照过于均匀平坦、无景深虚化、无镜头光学特征 |
+
+
diff --git a/data/skills/art_skills/realpeople_ancient_chinese/art_prompt/art_storyboard_video.md b/data/skills/art_skills/realpeople_ancient_chinese/art_prompt/art_storyboard_video.md
new file mode 100644
index 0000000..1aa33d1
--- /dev/null
+++ b/data/skills/art_skills/realpeople_ancient_chinese/art_prompt/art_storyboard_video.md
@@ -0,0 +1,11 @@
+# 视频提示词 · 视觉风格约束
+
+生成视频提示词时,必须注入以下视觉风格标签:
+
+| 模式 | 风格标签 |
+|------|----------|
+| **通用多参模式(英文)** | `Chinese period drama, photorealistic, cinematic, high contrast, ultra-fine detail` |
+| **通用首尾帧模式(英文)** | `Chinese period drama, photorealistic, cinematic, high contrast, ultra-fine detail, shallow depth of field` |
+| **Seedance 2.0(中文)** | `古风写实摄影,电影风格,强对比度,极致细节` |
+
+
diff --git a/data/skills/art_skills/realpeople_ancient_chinese/driector_skills/director_planning_style.md b/data/skills/art_skills/realpeople_ancient_chinese/driector_skills/director_planning_style.md
new file mode 100644
index 0000000..b65568b
--- /dev/null
+++ b/data/skills/art_skills/realpeople_ancient_chinese/driector_skills/director_planning_style.md
@@ -0,0 +1,88 @@
+---
+name: director_planning_style
+description: 古风约束 — 定义真人古风写实在色调体系、光影方案、质感方向、场景空间元素、乐器选择与环境音上的全局约束。适用于任何叙事类型。
+metaData: director_skills
+---
+
+# 古风约束 · 真人古风写实 · 技法参考
+
+---
+
+## 一、色调体系与画面基调
+
+- **色调基底** — 全片以月白(C1)、冷白肤(C2)、青黛(C6)为基底色,整体色温偏冷(4800-5200K),饱和度中低(30-50%),呈现悲凉清冷的高级灰调
+- **冷暖叙事对比** — 暖色(琥珀暖 C7、珠光金 C3、烟霞粉 C5)作为叙事转折的视觉信号,用于情感回暖段落局部点缀。冷暖切换应与故事弧线同步,而非随意混用
+- **冷暖分配策略** — 悲戚/孤绝/压抑段落严格维持冷色调基底,禁用暖橙、琥珀等暖色调;暖色仅在情感回暖后释放,用冷暖对比做叙事转折
+- **色盘先行原则** — 段落规划需先绑定情绪场景(初见/升温/误会/重逢/大婚等),再确定主色+辅色与光影方案,避免"剧情对了但情绪不对色"
+- **禁用色域** — 高饱和荧光色、霓虹色、现代色彩体系均与本风格不兼容
+
+---
+
+## 二、光影方案体系
+
+- **光影即叙事** — 7 套光影方案对应不同情绪段落,导演规划阶段应在段落层面确定光影基调方向,而非逐镜指定
+- **光源角度** — 正给镜头默认 38.5° 斜射(非 45°),侧给镜头可适当调整
+
+| 光影方案 | 方案名 | 色调倾向 | 适用情绪 |
+|---|---|---|---|
+| A | 珠光柔漫 | 冷白底 + 微暖肤光 | 日常温馨、轻松甜蜜 |
+| B | 侧逆仙气 | 月白 + 珠光金边缘光 | 仙境亮相、惊艳登场 |
+| C | 烛光暖影 | 琥珀暖主导 + 墨玉黑暗部 | 夜间暧昧、亲密升温 |
+| D | 月光冷辉 | 青黛 + 霜雪银 | 夜间孤寂、思念独处 |
+| E | 窗纱透光 | 冷白底 + 侧光斑驳 | 室内日间、日常起居 |
+| F | 天光漫射 | 青黛远景 + 月白雾气 | 远景、雾中、意境空镜 |
+| G | 冷光侧射 | 青黛冷白 + 38.5°侧射冷光,无暖色 | 悲戚孤绝、压抑冷清 |
+
+- **冷暖光分配** — 暖色光(琥珀暖/暖橙)适用于情感回暖段落;悲戚/孤绝段落一律冷光。导演可根据叙事需要调整冷暖切换点
+- **氛围方向映射** — 每场戏的氛围方向应能映射到上述光影方案(A-G)的某一方向,确保视觉一致性
+
+---
+
+## 三、质感方向
+
+- **超清纪实感** — 真人写实摄影的核心:毛孔可见、发丝根根分明、纹理细节超清晰
+- **强对比度 + 极致细节** — 这是画面质感的锚点。不是胶片颗粒,不是水墨写意,是影视级纪实摄影
+- **材质真实** — 所有服化道的材质必须可信:丝绸的光泽、棉麻的纹理、金属的反光、玉石的润感。禁止"塑料感"和"CG感"
+- **皮肤质感** — 真实皮肤的毛孔、微瑕、光泽感。既不过度磨皮也不刻意放大瑕疵,追求"真实但好看"
+- **写实不等于平淡** — 真人古风写实强调真实可拍的影像表达(真实光位、真实材质、真实动作节奏),通过镜头与情绪设计放大感染力,而非依赖奇观特效
+
+---
+
+## 四、古风场景空间元素
+
+古风世界观特有的场景元素及其视觉叙事功能:
+
+- **纱帘/屏风/门框** — 天然的框架式构图道具,制造"看不透"的层次感与空间纵深
+- **庭院/花树/雨幕** — 留白构图的天然载体,景即情:满庭花开 = 释然、独坐雨中 = 孤寂、落叶纷飞 = 离愁
+- **烛火/月色/窗光** — 古风世界的光源载体,烛光 = 暖/私密(方案C)、月色 = 冷/孤寂(方案D)、窗光 = 日常/静谧(方案E)
+- **段落间用场景空镜过渡** — 本风格有丰富的场景资产(不同时段/天候变体),段落衔接建议用场景空镜做情绪缓冲,不要硬切
+- **转折点用视觉而非台词** — 优先使用画面手段(光影突变、景别跳切、空镜隐喻)而非依赖对白解释
+
+---
+
+## 五、古风乐器与环境音
+
+古风世界观下的声音元素约束:
+
+### 乐器选择
+
+- **箫** — 凄凉、孤寂、悲戚段落的核心乐器,最能表现冷清哀婉
+- **二胡** — 情感激荡、悲痛、思念段落,拉弦的哭腔感适合情绪爆发
+- **唢呐** — 情感波动剧烈段落(大悲大喜、命运转折、高潮),慎用但一用即核弹
+- **古琴** — 开场定调 / 平稳段落,与箫搭配使用
+- **琵琶** — 紧张、急促段落的点缀,不作主导
+- 弦乐铺底可增加电影感但不宜喧宾夺主
+
+### 乐器组合策略
+
+| 情绪阶段 | 乐器组合 |
+|---|---|
+| 平稳/开场/收尾 | 古琴独奏 或 古琴 + 箫 |
+| 悲戚渐浓 | 箫 + 二胡 |
+| 情绪爆发/命运转折 | 唢呐独奏 或 唢呐 + 二胡 |
+| 紧张/急促 | 琵琶点缀 + 弦乐衬底 |
+
+### 古风环境音
+
+- **典型环境音层次** — 蝉鸣虫唱 / 溪水潺潺 / 风过竹林 / 市井叫卖 / 夜雨滴檐 / 衣料摩擦 / 风铃轻响
+- **每场戏标注 1-2 个核心环境音**,帮助后续音效设计。环境音层次越丰富,古风场景越有沉浸感
diff --git a/data/skills/art_skills/realpeople_ancient_chinese/driector_skills/director_storyboard.md b/data/skills/art_skills/realpeople_ancient_chinese/driector_skills/director_storyboard.md
new file mode 100644
index 0000000..f2921a7
--- /dev/null
+++ b/data/skills/art_skills/realpeople_ancient_chinese/driector_skills/director_storyboard.md
@@ -0,0 +1,246 @@
+---
+name: director_storyboard
+description: 导演分镜提示词技法 · 真人古风写实
+metaData: director_skills
+---
+
+# 分镜提示词 · 真人古风写实 · 风格专属技法
+
+---
+
+## 适用范围
+
+本 Skill 专用于**真人古风写实**风格的分镜提示词生成。
+
+---
+
+## 情绪 → 面容/眼神词映射
+
+| 情绪输入 | 面容词 | 眼神词 | 微表情补充 |
+|----------|--------|--------|-----------|
+| 心动 / 悸动 | 面色微红,神情微怔 | 眼神含情,目光流连 | 嘴角微扬,表情克制 |
+| 悲伤 / 压抑 | 面容沉静,神情哀戚 | 眼眶微红,眼神低垂 | 眉头轻锁,神情内敛 |
+| 愤怒 / 压迫 | 眉眼凌厉,神情冷峻 | 目光如刀,眼神强势 | 唇线收紧,气场压迫 |
+| 温柔 / 深情 | 神情温和,眉目含情 | 眼神专注柔和,目光深情 | 嘴角轻扬,表情克制温润 |
+| 坚定 / 决绝 | 神情肃然,面容沉着 | 眼神坚定,目光清冽 | 眉眼沉静,气质凛然 |
+| 惊讶 / 震惊 | 神情微愣,面色微变 | 眼神放大,目光骤聚 | 眉梢轻挑,唇形微开 |
+| 冷漠 / 疏离 | 面容清冷,神情漠然 | 眼神空远,目光冰凉 | 表情几乎凝固,气质禁欲 |
+| 喜悦 / 雀跃 | 神情鲜活,笑意盈盈 | 眼神明亮有神,弯月眼尾 | 嘴角扬起,表情生动自然 |
+| 紧张 / 慌乱 | 表情略带茫然,神态慌张 | 眼神飘忽,目光四顾 | 眉心微蹙,表情生动真实 |
+| 隐忍 / 克制 | 神情内敛,面容沉静 | 眼神深沉,眼底有情绪压抑 | 唇线收紧,喉结微动 |
+
+---
+
+## 光影氛围词库(真人古风写实)
+
+> **设计原则**:画面光影分为 **环境光(主)** 与 **器材光(辅)** 两层。环境光由场景时间、天气、空间决定,是画面光影的绝对主基调;器材光仅用于人物塑形和情绪补强,必须服从环境光方向与色温,不得产生独立光源感。
+
+### 一、环境光(主光源 · 场景自然光)
+
+> 每个分镜 **必须先确定环境光**,再决定是否叠加器材光。
+
+#### 时间段环境光
+
+| 时间段 | 自然光源 | 色调倾向 | 环境氛围 |
+|--------|---------|---------|----------|
+| 清晨 | 散射晨光,天光漫射 | 冷白光调,淡蓝调 | 薄雾弥漫,空气感,晨露质感 |
+| 午后 | 日光斜射,漫射散光 | 中性色调,轻暖调 | 光影斑驳,层次分明 |
+| 傍晚/黄昏 | 斜射余晖,天光冷暖交替 | 冷调为主,地平线局部暖光 | 长影拉伸,光感诗意 |
+| 夜间 | 月光冷蓝,烛火/灯笼暖点 | 冷蓝主调 | 光影幽深,明暗强对比 |
+| 阴雨 | 漫射冷光,云层遮蔽无主光源 | 灰冷色调 | 空气潮湿感,低饱和度 |
+
+#### 场景空间环境光
+
+| 空间类型 | 典型环境光 | 光影特征 |
+|----------|-----------|----------|
+| 室外开阔 | 天光为主,日照方向决定明暗 | 远景大气透视自然形成层次 |
+| 庭院/园林 | 天光经枝叶过滤,斑驳散射 | 廊下阴影与庭中光区形成明暗对比 |
+| 室内(窗光) | 窗口单向自然光,室内渐暗 | 光线侧射,自然形成明暗过渡 |
+| 密室/暗室 | 烛火/油灯局部暖光,整体暗调 | 光源单一,光域有限,阴影深重 |
+| 竹林/山野 | 光线穿隙,散射光斑 | 高处透光,地面光影交错 |
+| 水面/湖边 | 天光 + 水面反射光 | 波光粼粼,倒影补光,氤氲感 |
+
+### 二、器材光(辅助光 · 人物塑形)
+
+> ⚠️ 器材光 **必须服从环境光基调**:方向与环境光源一致,色温不得与环境光冲突,强度不得超过环境光。
+
+#### 器材光类型
+
+| 光线类型 | 作用 | 适用场景 | 使用约束 |
+|----------|------|---------|----------|
+| 轮廓光(边缘光) | 勾勒人物边缘,增强人景分离 | 逆光/侧逆光环境 | 强度低于环境光,色温与环境光一致 |
+| 眼神光 | 增加眼部神采与生命感 | 特写/近景含人物 | 极微弱,仅作点睛,不可形成明显光斑 |
+| 补光(反射光) | 提亮暗部细节,避免面部死黑 | 强侧光/逆光造成暗部过重时 | 模拟环境反射,不可形成独立光源感 |
+| 顶光压迫 | 制造面部阴影,增强压迫感 | 审讯、对峙、威严场景 | 须有场景光源合理性(灯笼、天窗、殿顶光) |
+
+#### 情绪 → 环境光 + 器材光配合
+
+| 情绪基调 | 环境光(主) | 器材光(辅) | 配合原则 |
+|----------|-------------|-------------|----------|
+| 心动/温情 | 柔和侧逆自然光,散射暖调环境 | 轮廓光微勾勒 | 环境光定侧逆光基调,器材光仅补充轮廓,浅景深柔化背景 |
+| 对峙/压迫 | 硬朗自然侧光,高对比明暗环境 | 可加顶光(须有合理光源) | 环境光定主方向与硬度,器材光仅增强对比,阴影硬朗 |
+| 压抑/悲伤 | 漫射冷光,阴天/暗室环境 | 极少补光,保留面部暗部 | 以环境冷光为主,刻意不补光以保留阴影层次 |
+| 神秘/肃穆 | 冷蓝环境光,逆光剪影 | 边缘光精准控制,光晕克制 | 环境光定冷蓝基调,器材光仅做边缘分离 |
+| 空灵/意境 | 散射软光,自然光微过曝 | 一般无需器材光 | 环境散射光为主,远景虚淡,空气透视感 |
+
+### 三、光影冲突规避规则
+
+> 生成分镜提示词时,须严格遵循以下原则以确保画面光影自然可信:
+
+1. **先定环境光,再叠器材光**:每个分镜先根据「时间段 + 场景空间」确定环境光基调,再决定是否需要器材光辅助人物塑形。
+2. **色温一致性**:器材光色温须与环境光协调(如夜间冷蓝环境不可叠加暖黄补光,除非有烛火等场景内合理暖光源)。
+3. **方向合理性**:器材光方向须有场景内光源支撑(窗光方向、烛火位置、月光角度),不可凭空出现。
+4. **强度从属性**:器材光强度 **不得超过环境光**,避免"人物单独打光"的影棚感。
+5. **宁缺毋滥**:当环境光已足够塑造人物、表达情绪时,**不加器材光**。
+
+---
+
+## 场景质感约束词(按场景类型)
+
+| 场景类型 | 必加约束词 |
+|----------|-----------|
+| 宫殿内室 | 雕梁画栋,殿柱质感清晰,地砖反光,帷帐飘逸,烛光暖点 |
+| 庭院/园林 | 青石板路,廊柱斑驳,花木扶疏,水面倒影,空气透视 |
+| 竹林/山野 | 竹影婆娑,光线穿隙,地面竹叶纹理,远山如黛,空气感 |
+| 城楼/城墙 | 青砖纹理清晰,风化质感,远景层叠,大气透视 |
+| 水榭/湖边 | 水面波光,倒影层叠,薄雾氤氲,荷叶质感 |
+| 密室/暗室 | 光源单一,烛火质感,壁面纹理,阴影深重 |
+| 集市/街道 | 市井氛围,人群虚化,建筑纵深,幌子布料质感 |
+
+---
+
+## 固定风格锚定词(所有输出必须包含)
+
+**真人写实锚定(必选):**
+```
+真人写实摄影,电影级画质,超现实主义纪实,强对比度,极致细节,纹理超清晰
+```
+
+**人物质感(含人物镜头时必选):**
+```
+皮肤细腻,面容细腻渲染,五官立体,发丝根根分明,发丝细腻渲染
+```
+
+**服饰质感(含人物镜头时必选):**
+```
+衣物布料质感清晰,纹理细节超清晰,布料折痕真实,衣物随动态飘逸
+```
+
+**一致性锚定(参考图模式必选):**
+```
+保持人物面容与参考图一致,保持服饰配色与参考图一致,保持场景光线风格统一
+```
+
+**风格收尾(固定):**
+```
+古风写实美学,东方古典气韵,电影级分镜构图
+```
+
+**画质锁定词(所有输出必须包含,置于风格收尾之后):**
+
+模式A(中文)——默认(画面无画内文字需求时):
+```
+超清4K画质,高细节,自然锐度,写实清晰感,画面无字幕、无水印、无标题叠字
+```
+
+模式A(中文)——画内文字场景(画面描述中含书写/书卷/匾额等道具文字时):
+```
+超清4K画质,高细节,自然锐度,写实清晰感,画面无字幕、无水印、无标题叠字,书卷/匾额等场景道具上的文字清晰可辨
+```
+
+模式B(英文)——默认:
+```
+ultra-sharp 4K, high detail, crisp textures, naturalistic sharpness, photorealistic clarity, no subtitles, no captions, no watermark, no title overlay
+```
+
+模式B(英文)——画内文字场景:
+```
+ultra-sharp 4K, high detail, crisp textures, naturalistic sharpness, photorealistic clarity, no subtitles, no captions, no watermark, no title overlay, legible text on in-scene props such as scrolls and plaques
+```
+
+**负向词模板(模式B 必须包含,置于提示词末尾):**
+
+> ⚠️ Seedream(模式A)**不支持负向提示词**,负向词仅适用于模式B。模式A 通过正向词中的质感锚定和画质锁定来保证画面质量。
+
+模式B(英文):
+```
+no plastic skin, no beauty filter, no studio lighting, no centered composition, no oversaturation, no AI generated look, no motion blur, no noise, no blurry, no out of focus, no subtitles, no captions, no watermark, no title overlay, no UI text
+```
+
+---
+
+## 美学禁止项(生成时严格规避)
+
+以下词汇/风格不得出现于输出提示词中:
+
+- ❌ 日系/韩系清新滤镜词(如:清新、小清新、日系感)
+- ❌ 动漫/二次元/插画/CG 渲染相关词
+- ❌ 现代服饰/现代场景元素
+- ❌ 暖黄主调色调词(可用"局部暖色烛光点缀")
+- ❌ 柔焦/朦胧感/低对比滤镜词
+- ❌ 撞色/混搭/霓虹/荧光色系
+- ❌ 卡通比例、大眼睛、Q版等变形描述
+- ❌ 赛博朋克/蒸汽朋克/架空西幻元素
+- ❌ 画外叠加文字(字幕、水印、标题卡、旁白叠字、片头字等 UI 层文字,画面必须为纯视觉画面)
+
+> 💡 **例外**:故事世界内的道具文字(角色写字、书卷字迹、匾额、牌匾、书信、药方等场景中自然存在的文字)**不属于禁止范围**。当分镜画面描述中包含此类内容时,应如实描写其存在并要求文字清晰。
+
+---
+
+## 完整生成示例
+
+> 以下为同一输入分别使用模式A和模式B的对照展示,实际使用时**仅输出其中一种**。
+
+### 输入(分镜表行数据)
+
+| 序号 | 画面描述 | 场景 | 关联资产名称 | 时长 | 景别 | 运镜 | 角色动作 | 情绪 | 光影氛围 |
+|------|---------|------|-------------|------|------|------|---------|------|----------|
+| 1 | 沈辞独立城楼之上,远眺苍茫大地 | 城楼 | 沈辞 | 4s | 全景 | 静止 | 负手而立,衣袂随风飘扬 | 坚定 / 决绝 | 黄昏冷调侧逆光 |
+
+### 示例输出A(模式A · Seedream)
+
+```
+[Prompt]
+真人写实摄影,电影级画质,超现实主义纪实,强对比度,极致细节,纹理超清晰,全景构图,人物全身入镜,皮肤细腻,面容细腻渲染,五官立体,发丝根根分明,发丝细腻渲染,男性主角立于城楼之上,双臂自然垂于身侧,衣袂初被风拂动,微微扬起,衣物布料质感清晰,布料折痕真实,衣物随动态飘逸,神情沉毅,目光即将投向远方,眼神坚定清冽,城楼青砖纹理清晰,风化质感,远景层叠,大气透视,黄昏冷调侧逆光,轮廓光勾勒人物边缘,古风写实美学,东方古典气韵,电影级分镜构图,超清4K画质,自然锐度,写实清晰感,画面无字幕、无水印、无标题叠字。
+Based on the reference image of 沈辞, maintain consistent: face features, hairstyle, costume details. Generate a new scene: standing on the ancient city wall at dusk, overlooking vast land. Keep character appearance identical to reference.
+```
+
+### 示例输出B(模式B · Nanobanana)
+
+```xml
+
+You are a cinematographer and storyboard artist.
+Maintain strict visual continuity across all shots.
+
+
+Image [1]: 沈辞 — black long hair tied up, calm sharp eyes, dark ancient hanfu robe, tall slim body shape
+
+
+- Same wardrobe, hairstyle, face features across ALL shots
+- Same environment, lighting style, color grade
+- Only framing, angle, action, expression may change
+- Do NOT introduce new characters not in reference images
+
+
+Full shot, character standing atop an ancient city wall, arms resting naturally at his sides, robe hem just beginning to catch the wind with a slight lift, gaze about to turn toward the vast horizon, resolute and composed expression, cold dusk backlight, rim light silhouette, vast landscape below, atmospheric perspective, ancient chinese cinematic realism, ultra-sharp 4K, high detail, crisp textures, photorealistic clarity, no subtitles, no captions, no watermark, no title overlay.
+
+
+no plastic skin, no beauty filter, no studio lighting, no centered composition, no oversaturation, no AI generated look, no motion blur, no noise, no blurry, no out of focus, no subtitles, no captions, no watermark, no title overlay, no UI text
+
+```
+
+---
+
+## 快速参考卡
+
+### 情绪 → 画面词速查
+
+| 情绪 | 面容关键词 | 环境光(主) | 器材光(辅) |
+|------|-----------|-------------|-------------|
+| 心动 | 面色微红,眼神含情 | 柔和侧逆自然光 | 轮廓光微勾勒 |
+| 悲伤 | 面容沉静,眼眶微红 | 漫射冷光 | 极少补光 |
+| 愤怒 | 眉眼凌厉,目光如刀 | 硬朗自然侧光,高对比 | 可加顶光(须合理光源) |
+| 温柔 | 眉目含情,眼神柔和 | 散射暖调环境光 | 轮廓光微补 |
+| 坚定 | 神情肃然,眼神清冽 | 冷调自然侧光 | 一般无需 |
+| 冷漠 | 面容清冷,眼神空远 | 冷蓝环境光 | 边缘光精准分离 |
+| 隐忍 | 面容沉静,眼底压抑 | 低调冷光环境 | 不补光,保留阴影 |
diff --git a/data/skills/art_skills/realpeople_ancient_chinese/driector_skills/director_storyboard_table_style.md b/data/skills/art_skills/realpeople_ancient_chinese/driector_skills/director_storyboard_table_style.md
new file mode 100644
index 0000000..16eaf42
--- /dev/null
+++ b/data/skills/art_skills/realpeople_ancient_chinese/driector_skills/director_storyboard_table_style.md
@@ -0,0 +1,45 @@
+---
+name: director_storyboard_table_style
+description: 分镜表古风约束 — 定义真人古风写实在分镜表中的光影氛围规范、光源角度、动作节奏、环境动态、运镜禁忌与转场禁忌。适用于任何叙事类型。
+metaData: director_skills
+---
+
+# 分镜表古风约束 · 真人古风写实 · 技法参考
+
+---
+
+## 一、分镜表定位
+
+分镜表是导演将剧本转化为镜头语言的核心工具。以下仅提供真人古风写实风格在分镜表层面的约束规范。
+
+---
+
+## 二、光影与氛围
+
+- **同场戏光影统一** — 一场戏内不应出现两种以上光影方案,除非有明确的叙事转折(如烛光被吹灭→月光冷辉)
+- **情绪色盘绑定** — 每场戏至少绑定 1 个情绪场景(如初见心动/分离误会/重逢释怀),并在镜头组内保持主色+辅色连续性
+- **光源角度规范** — 正给镜头光源默认 38.5° 斜射(非笼统的 45°),侧给镜头根据画面需要调整。描述光影时须区分正给/侧给的角度差异
+- **冷暖色调与叙事阶段匹配** — 悲戚/孤绝/被弃段落严格使用冷光(青黛冷白),禁用暖橙/琥珀;暖色调(暖橙+冷蓝背景对比)仅在情感回暖后使用
+- **光影转场是高级手段** — 从窗纱透光(E)渐变到烛光暖影(C)= 日转夜的时间流逝。在分镜表中标注光影变化点
+
+---
+
+## 三、环境动态
+
+- **环境动态增加画面呼吸感** — 花瓣飘落、烟雾升腾、水波荡漾、纱帘飘动。每 3-4 个镜头至少安排一个有环境动态的镜头,避免画面"死"掉
+- **古风环境元素优先** — 环境动态应选用古风世界观内的元素:落花、飞絮、轻烟、流水、风过竹林、烛火摇曳,禁止出现现代元素
+
+---
+
+## 四、古风动作节奏
+
+- **古风动作要慢** — 所有人物动作默认慢速。起身、转身、抬手都应标注"缓慢"
+- **服饰动态** — 古风服饰(宽袖、裙摆、披帛)的飘动是天然的动态资产,可在画面描述中加入衣袂/裙摆的动态,增加画面的"活"感
+- **仪态约束** — 古风人物的举止应符合时代气质:行走稳缓、举手投足含蓄内敛、不出现现代化的肢体语言(如耸肩、摊手)
+
+---
+
+## 五、运镜禁忌
+
+- **禁用快速运镜** — 甩镜、急推、手持晃动与真人古风写实的气质冲突
+- **禁用花式转场** — 划屏、旋转、百叶窗等与本风格不兼容
diff --git a/data/skills/art_skills/realpeople_ancient_chinese/images/1.png b/data/skills/art_skills/realpeople_ancient_chinese/images/1.png
new file mode 100644
index 0000000..6b629b4
Binary files /dev/null and b/data/skills/art_skills/realpeople_ancient_chinese/images/1.png differ
diff --git a/data/skills/art_skills/realpeople_ancient_chinese/images/场景原始.png b/data/skills/art_skills/realpeople_ancient_chinese/images/场景原始.png
new file mode 100644
index 0000000..3b36798
Binary files /dev/null and b/data/skills/art_skills/realpeople_ancient_chinese/images/场景原始.png differ
diff --git a/data/skills/art_skills/realpeople_ancient_chinese/images/场景衍生.png b/data/skills/art_skills/realpeople_ancient_chinese/images/场景衍生.png
new file mode 100644
index 0000000..b8cd356
Binary files /dev/null and b/data/skills/art_skills/realpeople_ancient_chinese/images/场景衍生.png differ
diff --git a/data/skills/art_skills/realpeople_ancient_chinese/images/女生原始.png b/data/skills/art_skills/realpeople_ancient_chinese/images/女生原始.png
new file mode 100644
index 0000000..ca938fb
Binary files /dev/null and b/data/skills/art_skills/realpeople_ancient_chinese/images/女生原始.png differ
diff --git a/data/skills/art_skills/realpeople_ancient_chinese/images/女生衍生.png b/data/skills/art_skills/realpeople_ancient_chinese/images/女生衍生.png
new file mode 100644
index 0000000..2ba422e
Binary files /dev/null and b/data/skills/art_skills/realpeople_ancient_chinese/images/女生衍生.png differ
diff --git a/data/skills/art_skills/realpeople_ancient_chinese/prefix.md b/data/skills/art_skills/realpeople_ancient_chinese/prefix.md
new file mode 100644
index 0000000..673396d
--- /dev/null
+++ b/data/skills/art_skills/realpeople_ancient_chinese/prefix.md
@@ -0,0 +1,118 @@
+# 全局美学基础 · 真人古风写实
+
+---
+严格遵循下方风格约束与全局规则,依据提示词模板格式生成提示词。仅输出提示词本身,不附加任何解释、说明或额外文本。
+## 一、风格基因
+
+| 维度 | 定义 |
+|---|---|
+| **一级风格** | 真人古风写实(Ancient-Chinese Photorealism) |
+| **二级风格** | 真人写实摄影 · 影视级纪实质感 |
+| **情感基调** | 甜宠向 — 冷中带暖、疏中见密 |
+| **质感锚词** | 强对比度、极致细节、古风写实纪实 |
+
+---
+
+## 二、全局色彩盘(风格基线,不是硬锁)
+
+> 目标:统一审美而非限制创作。除「硬约束色」外,其余颜色默认优先使用,可在合理范围内偏移。
+
+### 色彩使用层级
+
+| 层级 | 约束强度 | 说明 |
+|---|---|---|
+| L1 硬约束 | 高 | 仅锁定角色识别核心:肤色、发色、主服底色的审美方向 |
+| L2 软约束 | 中 | 场景色、配饰色、点缀色优先参考色盘,可按镜头与剧情微调 |
+| L3 例外机制 | 低 | 节庆/回忆/高潮戏可临时突破局部色彩,但需保留整体冷暖逻辑 |
+
+| 序号 | 色名 | 色值 | 用途 |
+|---|---|---|---|
+| C1 | 月白 | #D6E4EC | 主服底色、雾气、纱幔 |
+| C2 | 冷白肤 | #F5EDE8 | 女性肤色基准 |
+| C2b | 暖白肤 | #F5E6D8 | 男性肤色基准 |
+| C3 | 珠光金 | #E8D5B0 | 刺绣、配饰高光、头饰 |
+| C4 | 墨玉黑 | #1A1A2E | 发色、眼瞳、描边 |
+| C5 | 烟霞粉 | #F2D7D5 | 唇色、腮红、花瓣 |
+| C6 | 青黛 | #4A6670 | 远景山水、暗部补色 |
+| C7 | 琥珀暖 | #C9A96E | 暖光、烛光、夕照 |
+| C8 | 霜雪银 | #C0C7CE | 兵器、水面反光、银饰 |
+| C9 | 中性灰 | #E8E8E8 | 设定图背景 |
+| C10 | 素白 | #F8F6F0 | 基础中衣色 |
+
+### 硬约束色(默认锁定)
+
+| 色项 | 对应色 | 规则 |
+|---|---|---|
+| 女性肤色基准 | C2 冷白肤 | 默认优先,允许小幅明度/暖度微调 |
+| 男性肤色基准 | C2b 暖白肤 | 默认优先,避免偏黄或过灰 |
+| 发色/瞳色基准 | C4 墨玉黑 | 默认优先,允许暗蓝/冷棕轻微偏移 |
+
+### 软约束色(推荐优先)
+
+> C3/C5/C6/C7/C8/C9/C10 为推荐色域,用于刺绣、花瓣、远景、暖光、银饰、背景、中衣等。可根据镜头氛围做同色相邻近调整。
+
+### 情绪色盘(导演对齐版)
+
+| 情绪场景 | 主色 | 辅色 | 光效与对比建议 | 画面关键词 |
+|---|---|---|---|---|
+| 初见心动(克制甜) | C1 月白 | C5 烟霞粉 + C8 霜雪银 | 冷基底 + 局部柔暖高光,强对比但不过曝 | 清冷、呼吸感、微甜 |
+| 暧昧升温(亲密拉近) | C5 烟霞粉 | C7 琥珀暖 + C10 素白 | 中近景提暖,肤色微升温,背景保持低饱和 | 软焦、耳语感、贴近 |
+| 守护承诺(稳定安全) | C10 素白 | C3 珠光金 + C4 墨玉黑 | 明暗层次清晰,金色只做边缘点缀 | 安定、仪式感、信任 |
+| 分离误会(冷疏压抑) | C6 青黛 | C1 月白 + C9 中性灰 | 整体降饱和,拉大冷暖反差,阴影加深 | 距离感、克制、静压 |
+| 重逢释怀(泪感回暖) | C1 月白 | C7 琥珀暖 + C5 烟霞粉 | 先冷后暖,人物面部暖光渐进 | 回温、释然、湿润空气 |
+| 大婚喜庆(古典高光) | C3 珠光金 | C7 琥珀暖 + C5 烟霞粉 | 局部可提高饱和,避免荧光红;金色强调礼制纹样 | 华贵、庄重、甜喜 |
+| 夜宴灯会(浪漫流光) | C7 琥珀暖 | C6 青黛 + C8 霜雪银 | 暖光源主导,背景冷色托举,保留暗部细节 | 流光、灯影、人潮中对视 |
+| 梦境回忆(写实化) | C1 月白 | C6 青黛 + C3 珠光金 | 低饱和雾化与真实光位并存,允许轻微偏色但不霓虹 | 空灵、旧忆感、真实可拍 |
+
+### 情绪色盘使用规则
+
+| 编号 | 规则 |
+|---|---|
+| E1 | 每条提示词至少指定 1 个「情绪场景」并绑定主色+辅色组合 |
+| E2 | 单镜头主色不超过 2 个,避免颜色叙事失焦 |
+| E3 | 情绪切换时优先调整光比与色温,再调整饱和度 |
+| E4 | 甜宠向默认遵循「冷底 + 暖点」:冷色铺底,暖色落在人物关系焦点 |
+| E5 | 若与剧情冲突,以情绪色盘优先于通用推荐色,但不得突破严禁项 |
+
+### 色温约束
+
+| 参数 | 值 | 说明 |
+|---|---|---|
+| 整体色温 | 偏冷 5800-7000K(推荐) | 清冷仙气主基调 |
+| 肤色色温 | 微暖 5200-5600K(推荐) | 冷白但有生命感 |
+| 对比度 | 强(建议保持) | 明暗反差鲜明 |
+| 饱和度 | 中低 30-50%(建议区间) | 高级灰调 |
+
+### 容差与例外
+
+| 项目 | 建议容差 |
+|---|---|
+| 色相偏移 | ±8° |
+| 饱和度偏移 | ±10% |
+| 明度偏移 | ±12% |
+
+> 例外场景:婚礼、灯会、回忆、情绪高潮镜头可使用更暖或更高饱和局部色块;但禁止霓虹荧光与现代色彩语言入镜。
+
+---
+
+## 三、全局约束规则
+
+### 必守规则(所有技能继承)
+
+| 编号 | 规则 |
+|---|---|
+| R1 | 必须包含「真人写实摄影」风格锚定词 |
+| R2 | 必须声明「强对比度 + 极致细节」 |
+| R3 | 面部必须使用「面容细腻渲染 + 皮肤细腻」 |
+| R4 | 发丝必须使用「根根分明 + 发丝细腻渲染」 |
+| R5 | 纹理必须声明「纹理细节超清晰」 |
+
+### 严禁项(所有技能继承)
+
+| 编号 | 严禁内容 |
+|---|---|
+| X1 | 严禁「卡通/动漫/二次元/插画风」 |
+| X2 | 严禁「高饱和荧光色/霓虹色」 |
+| X3 | 严禁「现代元素入镜」 |
+| X4 | 严禁「面部变形/多指/肢体异常」倾向词 |
+| X5 | 严禁「裸体/暴露/透视/暗示性描述」 |
\ No newline at end of file
diff --git a/data/skills/art_skills/realpeople_urban_modern/README.md b/data/skills/art_skills/realpeople_urban_modern/README.md
new file mode 100644
index 0000000..58580f1
--- /dev/null
+++ b/data/skills/art_skills/realpeople_urban_modern/README.md
@@ -0,0 +1,33 @@
+# 真人都市写实风格说明
+
+本风格专为"真人都市写实"题材打造,所有美术提示词、规范和生成内容均严格限定于:
+
+- **现代世界观**:以现代都市为背景,涵盖办公室、咖啡厅、居家、街头、商场等,杜绝现代元素缺失。
+- **真人写实**:所有角色、场景、道具均以真人写实摄影为标准,强调五官、皮肤、发丝、材质等极致细节与真实质感。
+- **都市写实纪实**:在写实基础上追求影视级氛围感,画面明暗对比强烈,细节丰富,整体氛围直白温暖、现代生活感。
+- **甜宠氛围**:适合展现温柔、治愈、浪漫的古风恋爱故事,强调现代都市下的情感表达。
+
+## 适用范围
+
+- 真人都市题材的AI美术生成(角色、场景、道具、分镜等)
+- 需要极致写实、细腻质感、现代都市氛围的视觉创作
+
+## 严禁内容
+
+- 卡通、动漫、插画、二次元风格
+- 现代元素缺失、古风/古装/传统建筑
+- 高饱和荧光色、霓虹色
+- 暗示性、暴露、透视等不适宜内容
+
+## 风格体验
+
+在本风格下,您将体验到:
+
+- 角色面容精致、气质温润或干练,服饰、妆容、发型均为现代都市写实
+- 场景空间层次丰富,材质纹理超清晰,氛围真实且富有生活气息
+- 道具、手机、电脑、办公用品等均为现代造型,工艺精细,质感极致
+- 分镜与视频均以真人写实为基础,强调叙事与情感表达
+
+---
+
+本风格仅适用于"真人都市写实"相关项目。如需其他风格(如古风、插画、动漫、现代等),请勿使用本套提示词。
\ No newline at end of file
diff --git a/data/skills/art_skills/realpeople_urban_modern/art_prompt/art_character_derivative_modern.md b/data/skills/art_skills/realpeople_urban_modern/art_prompt/art_character_derivative_modern.md
new file mode 100644
index 0000000..d74b016
--- /dev/null
+++ b/data/skills/art_skills/realpeople_urban_modern/art_prompt/art_character_derivative_modern.md
@@ -0,0 +1,299 @@
+# 人物衍生资产生成 · 都市写实约束手册
+
+---
+
+## 一、叠加原则
+
+1. **面容不变** — 叠加后五官必须与底模完全一致,禁止面容偏移
+2. **姿态不变** — 保持底模自然站立姿态,禁止任何姿态/动作/体态变化
+3. **逐层可控** — 每层独立描述,便于按层替换(换装不换妆)
+4. **风格统一** — 所有服化元素服从同一美学体系
+5. **质感不降** — 叠加后质感标准不低于底模
+6. **纯服化范畴** — 仅叠加妆容/发型/服饰/配饰,禁止引入道具、场景、环境、动作
+
+---
+
+## 二、叠加层级
+
+| 层级 | 内容 | 说明 |
+|---|---|---|
+| L0 | 底模 | 基础形象底模,不修改 |
+| L1 | 妆容(决策层) | 先分析用户线索,再决策「基础妆/轻妆/正式妆」强度 |
+| L2 | 发型造型 | 发型设计 + 发饰 |
+| L3 | 中衣/内搭 | 替换白色基础中衣 |
+| L4 | 外衣/主服 | T恤/衬衫/西装/外套/裙装等 |
+| L5 | 配饰 | 手表/眼镜/耳饰/项链/腰带/手饰 |
+
+> **范畴边界**:人物衍生资产仅包含 L0–L5 层级(服化妆造),不包含道具(手机/钥匙/包/笔等手持物)、场景环境(室内/室外/天气等)、姿态动作(行走/回眸/举手等)。这些属于其他资产类型的范畴。
+
+---
+
+## 三、妆容约束(L1)
+
+### 底模到衍生妆造策略(关键)
+
+> 角色底模虽为自然状态,但衍生资产默认进入妆造流程。系统应根据用户提供的线索分析妆造需求,并在基础妆、轻妆、正式妆之间决策强度。
+
+### L1 线索分析与妆容决策
+
+| 步骤 | 处理内容 | 决策结果 |
+|---|---|---|
+| S1 | 提取用户线索:面部状态词、情绪词、强度词 | 形成妆容需求摘要 |
+| S2 | 过滤非妆容线索:道具/场景/动作/姿态词不作为上妆依据 | 防止误判 |
+| S3 | 匹配妆容风格矩阵并给出强度档 | 基础妆 / 轻妆 / 正式妆 |
+| S4 | 生成最终 L1 提示词 | 只输出结论,不输出分析过程 |
+
+### 线索到妆容映射(执行口径)
+
+| 线索类型 | 典型线索 | L1 决策 |
+|---|---|---|
+| 无明显面部强调线索 | 仅服饰/发型变化,未强调情绪与状态 | 基础妆 |
+| 轻微面部线索 | 气色提亮、精神饱满、自然微笑 | 轻妆(极淡) |
+| 明确职场线索 | 正式会议、商务场合、重要活动 | 正式妆(受控) |
+| 明确休闲线索 | 日常出行、休闲约会、周末活动 | 轻妆/基础妆 |
+
+### 女性妆容风格矩阵
+
+| 风格 | 适用场景 | 核心提示词 |
+|---|---|---|
+| 裸妆 | 日常、通勤、休闲 | 裸妆、自然底妆、清透 |
+| 职场妆 | 会议、商务、正式 | 精致职业妆、干练 |
+| 约会妆 | 约会、晚宴、聚会 | 精致妆容、气色红润 |
+| 派对妆 | 派对、演出、活动 | 精致妆容、气场 |
+
+### 通用底肤(所有妆容共享)
+
+| 项目 | 约束 | 提示词 |
+|---|---|---|
+| 质感 | 自然肌肤、保留纹理 | 皮肤自然、保留纹理 |
+| 白度 | 自然肤色,不过白 | 自然肤色、健康肤色 |
+| 内透光 | 自然光泽感 | 皮肤健康光泽 |
+| 禁止 | 过度磨皮/假面/塑料感 | — |
+
+### 基础妆细化(默认档)
+
+| 项目 | 约束 | 提示词 |
+|---|---|---|
+| 底妆 | 轻薄通透、自然光泽 | 轻薄底妆、自然光泽 |
+| 眉妆 | 顺着底模眉形轻修 | 自然修眉、眉形干净 |
+| 眼部 | 极淡眼部修饰,强调清透 | 眼部清透、极淡眼线 |
+| 面颊 | 极淡气色提亮 | 面颊气色自然 |
+| 唇部 | 自然唇色或浅粉润色 | 唇色自然润泽 |
+| 整体 | 看得出有妆造,但妆感非常轻 | 基础妆、伪素颜 |
+
+### 男性妆容
+
+| 项目 | 约束 | 提示词 |
+|---|---|---|
+| 底肤 | 自然肌肤、清爽干净 | 皮肤自然、清爽干净 |
+| 原则 | 伪素颜——看着没化妆但皮肤极好 | 伪素颜、天生好皮 |
+| 眉毛 | 自然眉形、不画眉 | 自然眉形 |
+| 唇色 | 自然血色、微润 | 唇色自然 |
+
+---
+
+## 四、发型造型约束(L2)
+
+### 女性造型类型
+
+| 造型 | 描述 | 适用 | 提示词 |
+|---|---|---|---|
+| 自然长发 | 长发自然垂落 | 日常、休闲 | 自然长发、长发披肩 |
+| 马尾 | 高马尾/低马尾/半马尾 | 运动、通勤 | 高马尾、干练马尾 |
+| 盘发 | 发髻/盘发 | 正式、晚宴 | 优雅盘发、低发髻 |
+| 短发 | 及肩短发/齐肩短发 | 时尚、干练 | 及肩短发、齐肩发型 |
+| 波浪卷 | 自然微卷/大波浪 | 约会、派对 | 自然卷发、波浪发型 |
+| 半扎发 | 半扎半披、简单发饰 | 日常、通勤 | 半扎发、半披发 |
+
+### 女性发饰
+
+| 项目 | 约束 | 提示词 |
+|---|---|---|
+| 风格 | 简约现代、与服饰配套 | 简约发饰、现代发饰 |
+| 材质 | 金属/皮质/亚克力 | 金属发夹、皮质发带 |
+| 工艺 | 精致工艺、细节清晰 | 发饰精致、细节清晰 |
+
+### 男性造型类型
+
+| 造型 | 适用 | 提示词 |
+|---|---|---|
+| 短发 | 日常、商务、休闲 | 短发、清爽短发 |
+| 中长发 | 休闲、文艺 | 中长发、及肩长发 |
+| 侧分发型 | 商务、正式 | 侧分发型、商务发型 |
+| 微卷发型 | 休闲、时尚 | 微卷发型、时尚发型 |
+
+---
+
+## 五、服饰约束(L3+L4)
+
+### 女性服饰矩阵
+
+| 风格 | 款式 | 适用 | 提示词 |
+|---|---|---|---|
+| 商务正装 | 西装/衬衫/半裙 | 职场、会议 | 职业西装、商务正装 |
+| 休闲时尚 | T恤/牛仔裤/休闲裤 | 日常、休闲 | 休闲穿搭、时尚日常 |
+| 约会穿搭 | 连衣裙/衬衫/半身裙 | 约会、聚会 | 连衣裙、约会穿搭 |
+| 运动休闲 | 运动装/卫衣/瑜伽裤 | 运动、休闲 | 运动装、休闲运动 |
+| 晚宴礼服 | 礼服/晚装 | 晚宴、活动 | 晚礼服、优雅礼服 |
+
+### 女性服饰通用约束
+
+| 项目 | 约束 | 提示词 |
+|---|---|---|
+| 主色 | 按场景搭配,颜色自然 | 颜色自然、色调协调 |
+| 材质 | 真实面料质感清晰 | 面料质感清晰 |
+| 质感 | 纹理必须超清晰 | 衣服质感清晰、纹理超清晰 |
+| 层次 | 层次分明、不过度层叠 | 层次分明、搭配自然 |
+
+### 男性服饰矩阵
+
+| 风格 | 适用 | 提示词 |
+|---|---|---|
+| 商务正装 | 西装/衬衫/西裤 | 职场、会议 | 商务西装、正装 |
+| 休闲时尚 | 衬衫/T恤/牛仔裤 | 日常、休闲 | 休闲穿搭、时尚日常 |
+| 运动休闲 | 运动装/卫衣/运动裤 | 运动、休闲 | 运动装、休闲运动 |
+| 简约日常 | 简约衬衫/休闲裤 | 日常、通勤 | 简约穿搭、日常休闲 |
+
+---
+
+## 六、配饰约束(L5)
+
+### 女性配饰
+
+| 类型 | 约束 | 提示词 |
+|---|---|---|
+| 首饰 | 简约精致、不过度 | 简约耳饰、精致项链 |
+| 手表 | 简约/时尚、与风格匹配 | 简约手表、时尚腕表 |
+| 眼镜 | 素颜镜/装饰镜、干净 | 眼镜、镜框清晰 |
+| 腰带 | 简约/时尚、与服装搭配 | 腰带、腰封 |
+
+### 男性配饰
+
+| 类型 | 约束 | 提示词 |
+|---|---|---|
+| 手表 | 简约/商务、与风格匹配 | 简约手表、商务腕表 |
+| 眼镜 | 素颜镜/装饰镜、干净 | 眼镜、镜框清晰 |
+| 腰带 | 简约/时尚、与服装搭配 | 腰带、皮带 |
+| 配饰 | 简约精致、不过度 | 简约配饰、精致细节 |
+
+---
+
+## 七、服化组合速查
+
+| 场景 | 妆容 | 发型 | 服饰 | 配饰 |
+|---|---|---|---|---|
+| 日常通勤 | 裸妆 | 自然长发/马尾 | 商务正装/休闲时尚 | 手表/简约 |
+| 商务会议 | 职场妆 | 盘发/马尾 | 商务正装 | 手表/简约首饰 |
+| 周末休闲 | 轻妆 | 自然长发 | 休闲时尚/运动休闲 | 简约 |
+| 约会聚会 | 约会妆 | 波浪卷/盘发 | 约会穿搭 | 精致首饰 |
+| 晚宴活动 | 正式妆 | 优雅盘发/波浪 | 晚宴礼服 | 精致首饰 |
+| 运动健身 | 裸妆 | 高马尾/丸子头 | 运动休闲 | 简约 |
+
+---
+
+> **🔍 未覆盖场景推断规则**
+>
+> 当用户描述的场景/情境不在上表时,根据本风格核心基因自行推断:
+>
+> | 推断维度 | 真人写实都市基因 |
+> |---|---|
+> | 妆容强度 | 默认裸妆(自然肌肤);商务/正式→职场妆(干练精致);约会/聚会→约会妆(气色红润);派对/演出→派对妆;运动/户外→裸妆或轻妆 |
+> | 发型 | 通勤/职场→马尾或半扎发;休闲/约会→自然长发或波浪卷;运动→高马尾或丸子头;正式→优雅盘发;时尚场合→短发 |
+> | 服饰 | 场合决定精致度;职场→商务正装;休闲→日常时尚;约会→连衣裙/半身裙;运动→运动休闲;晚宴→礼服;真实面料质感始终保持 |
+> | 配饰繁度 | 运动→简约或无;日常→手表+简约;约会→精致首饰;晚宴→精致全套 |
+> | 质感基准 | 真人写实摄影锚定;自然肌肤纹理+发丝细节始终保持;禁止过度磨皮/塑料感/3D渲染 |
+
+## 八、四视图设定图规范
+
+### 视图定义
+
+| 位置 | 视图 | 角度 | 景别 | 要求 | 提示词 |
+|---|---|---|---|---|---|
+| 左一 | 人像特写 | 正面平视 | 面部至锁骨 | 面部占60%+,五官/妆容清晰 | portrait closeup、face detail、makeup detail |
+| 左二 | 正视图 | 正面 0° | 全身立像 | 面对镜头、服饰正面全貌 | front view、height mark |
+| 右二 | 侧视图 | 右侧 90° | 全身立像 | 纯侧面轮廓、服饰侧面层次 | side view、profile、height mark |
+| 右一 | 后视图 | 后方 180° | 全身立像 | 后脑发型/背部服饰清晰 | back view、rear view、height mark |
+
+### 画面规范
+
+| 项目 | 约束 |
+|---|---|
+| 布局 | 同一画面从左至右并排四视图 |
+| 背景 | 纯净中性灰 #E8E8E8 |
+| 站姿 | 自然站立、双脚平行微分、双臂自然下垂 |
+| 表情 | 符合妆容风格的微表情,仅限面部微表情 |
+| 光线 | 均匀柔光,前方主光 + 双侧补光,无硬阴影 |
+| 一致性 | 四视图的面容/妆容/发型/发型/服饰/配饰完全一致 |
+| 画面比例 | 建议 4:1 或 3:1 |
+
+---
+
+## 九、提示词模板
+
+### 输出格式约束
+
+| 项目 | 约束 |
+|---|---|
+| 输出内容 | **仅输出提示词文本**,不输出任何其他内容 |
+| 禁止输出 | 速查表、分层构建方案、视觉约束表、禁止事项表、衍生方案、输出建议、核心要素表等一切非提示词内容 |
+| 禁止场景 | 人物衍生资产**不包含场景/环境描述**,不输出任何场景/环境/天气/背景叙事内容 |
+| 禁止道具 | **不包含任何道具交互**,不输出手机/钥匙/包/笔/酒杯等手持物或交互物 |
+| 禁止姿态变化 | **不改变底模姿态**,不输出行走/回眸/举手/侧身/奔跑等任何动作 |
+| 格式 | 直接输出可用的提示词代码块,无需标题、表格、解释、方案对比 |
+
+### 完整服化叠加(四视图)
+
+```
+以角色基础形象图为底图,img2img叠加服化妆造,
+都市{性别}角色四视图设定图,真人写实摄影,都市写实纪实,强对比度,极致细节,8K,超保真
+character design sheet,character turnaround,
+保持基础形象面容不变,{整体气质},
+【L1·妆容】根据用户线索决策:{基础妆/轻妆/正式妆};使用 {妆容风格},自然肌肤,{眉妆},{眼妆},{唇妆},
+【L2·发型】{造型类型},发丝根根分明,{发饰描述},
+【L3+L4·服饰】{主色}{款式},{材质},{装饰工艺},衣服质感清晰,纹理超清晰,
+【L5·配饰】{头饰},{耳饰},{项链},{手表},
+同一画面左至右并排:人像特写+正视图+侧视图+后视图,
+自然站立,纯净中性灰背景,均匀柔光,无硬阴影,
+四视图一致性,面容细腻渲染,发丝细腻渲染,纹理细节超清晰
+图中不要有任何文字
+```
+
+
+---
+
+## 十、约束规则
+
+### 必守
+
+| 编号 | 规则 |
+|---|---|
+| R1 | 叠加后面容必须与底模一致 |
+| R2 | 服饰必须用「衣服质感清晰 + 纹理超清晰」 |
+| R3 | 妆容/发型/服饰/配饰风格统一 |
+| R4 | 必须输出四视图设定图(人像特写+正视图+侧视图+后视图) |
+| R5 | 必须指定「纯净中性灰背景」 |
+| R6 | 必须指定「四视图一致性」 |
+| R7 | **仅输出提示词**——禁止输出速查表/分层方案/视觉约束/禁止事项/衍生方案/输出建议等任何非提示词内容 |
+| R8 | **禁止包含场景描述**——人物衍生资产不涉及场景/环境/天气/背景叙事 |
+| R9 | **禁止道具交互**——不包含任何手持物/交互物(手机/包/钥匙/笔等) |
+| R10 | **姿态保持不变**——必须保持底模自然站立姿态 |
+| R11 | **L1 必须先分析再决策**——先解析用户面部线索,再确定基础妆/轻妆/正式妆 |
+| R12 | **所有衍生资产均需妆造**——正常情况不保持素颜,至少使用基础妆 |
+
+### 严禁
+
+| 编号 | 严禁 |
+|---|---|
+| X1 | 叠加后面容偏移 |
+| X2 | 妆容过于夸张/现代浓妆 |
+| X3 | 妆容/服饰风格互相冲突 |
+| X4 | 复杂场景背景(必须纯灰底) |
+| X5 | 四视图间服化妆造不一致 |
+| X6 | 输出提示词以外的任何内容(表格/方案/建议/解释/变体等) |
+| X7 | 在人物衍生资产中加入场景描述(室内/室外/街道/天气等) |
+| X8 | 输出「核心要素速查」「分层构建方案」「视觉约束」「禁止事项」「衍生方案」等章节 |
+| X9 | 加入任何道具交互(手机/包/钥匙/笔/酒杯等手持物) |
+| X10 | 改变底模姿态(行走/回眸/举手/侧身/奔跑/低头等动作描述) |
+| X11 | 加入表情与姿态联动描述(如「侧身45°行走嘴角浅弯」等叙事性描写) |
+| X12 | 未分析用户线索就直接套用固定妆容 |
+| X13 | 错误保持素颜,导致衍生资产缺少应有妆造 |
\ No newline at end of file
diff --git a/data/skills/art_skills/realpeople_urban_modern/art_prompt/art_character_modern.md b/data/skills/art_skills/realpeople_urban_modern/art_prompt/art_character_modern.md
new file mode 100644
index 0000000..e670bd6
--- /dev/null
+++ b/data/skills/art_skills/realpeople_urban_modern/art_prompt/art_character_modern.md
@@ -0,0 +1,205 @@
+# 人物基础形象生成 · 都市写实约束手册
+
+---
+
+## 一、基础形象原则
+
+1. **面容即灵魂** — 五官是角色唯一锚点,毛孔级精细渲染
+2. **底模即基础** — 基础打底服装 + 素颜,后续服化均为叠加层(女性:基础内衣/运动背心+四角内裤;男性:基础内衣/运动背心+四角内裤)
+3. **四视图一致** — 面容/体型/发型/基础服装跨视图高度统一
+4. **自然真实** — 无妆状态仍需体现角色气质(干练/温柔/冷淡/亲和)
+5. **实拍摄影** — 以真实摄影为锚点,保留皮肤真实质感(毛孔/微小瑕疵)
+
+---
+
+## 二、面容约束
+
+### 女性面容
+
+| 部位 | 约束 | 提示词 |
+|---|---|---|
+| 脸型 | 鹅蛋脸/瓜子脸/长脸,线条流畅 | 鹅蛋脸、自然脸型 |
+| 眼型 | 自然双眼皮、眼神清澈 | 自然双眼皮、眼神清澈 |
+| 眉型 | 自然眉形、眉色棕灰(裸眉) | 自然眉形、原生眉 |
+| 鼻型 | 自然挺直鼻、鼻翼适中 | 鼻梁自然、鼻型精致 |
+| 唇型 | 薄唇/自然唇、唇色自然粉 | 薄唇、唇色自然 |
+| 气质 | 自然、清爽、五官立体 | 面容自然、五官立体 |
+
+### 男性面容
+
+| 部位 | 约束 | 提示词 |
+|---|---|---|
+| 脸型 | 方圆脸/瓜子脸、下颌线清晰 | 棱角分明、下颌线清晰 |
+| 眼型 | 眼神专注、自然双眼皮 | 眼神清晰、自然双眼皮 |
+| 鼻型 | 自然挺直、鼻梁适中 | 鼻梁自然、鼻型端正 |
+| 唇型 | 自然薄唇/中性唇 | 薄唇、唇色自然 |
+| 气质 | 清爽/沉稳/温和 | 面容清爽、气质自然 |
+
+---
+
+## 三、肤感约束
+
+### 女性
+
+| 项目 | 约束 | 提示词 |
+|---|---|---|
+| 肤色 | 自然肤色、全身均匀、可偏白/偏黄 | 自然肤色、均匀肤色 |
+| 光泽 | 自然光泽、非哑光非油光 | 皮肤自然、健康光泽 |
+| 质感 | 细腻、保留毛孔微质感、可有小瑕疵 | 皮肤细腻、毛孔微可见 |
+| 露肤 | 面部/颈部/锁骨/手部/部分手臂 | 肩颈线条自然、肌肤健康 |
+
+### 男性
+
+| 项目 | 约束 | 提示词 |
+|---|---|---|
+| 肤色 | 自然肤色、可偏小麦色、全身均匀 | 自然肤色、健康肤色 |
+| 光泽 | 自然光泽、清爽感 | 皮肤自然、清爽质感 |
+| 质感 | 干净利落、可见毛孔、可有细微瑕疵 | 皮肤质感真实、毛孔清晰 |
+
+---
+
+## 四、体型约束
+
+### 女性
+
+| 项目 | 约束 | 提示词 |
+|---|---|---|
+| 身高 | 由角色设定指定,默认范围 155-175cm | {身高}cm tall |
+| 头身比 | 七头身至八头身,严格约束全身比例 | 7-8 heads tall proportion |
+| 肩颈 | 自然肩颈线、锁骨可见 | 肩颈线条自然 |
+| 手部 | 自然手型、指节正常、指甲整洁 | 自然手部、手指修长 |
+| 体态 | 自然站立、体态舒展 | 体态自然、身姿舒展 |
+
+### 男性
+
+| 项目 | 约束 | 提示词 |
+|---|---|---|
+| 身高 | 由角色设定指定,默认范围 170-185cm | {身高}cm tall |
+| 头身比 | 七头半身至八头半身,严格约束全身比例 | 7.5-8.5 heads tall proportion |
+| 肩颈 | 肩部自然、颈部有力 | 肩部自然、颈肩线条 |
+| 手部 | 自然手型、手掌适中、指节正常 | 自然手部、手指修长 |
+| 体态 | 自然站立、体态挺拔 | 身姿挺拔、体态自然 |
+
+---
+
+## 五、基础发型约束
+
+> 仅定义自然散发/简单束发,发饰在服化衍生环节叠加。
+
+### 女性
+
+| 项目 | 约束 | 提示词 |
+|---|---|---|
+| 发色 | 自然发色(黑色/深棕),禁漂色/染色 | 自然发色、深棕色 |
+| 发长 | 及肩/及腰或更长,由角色设定 | 自然长发、及肩发 |
+| 发质 | 发丝清晰、质感真实 | 发丝根根分明 |
+| 造型 | 自然散发、简单马尾/半扎、无发饰 | 自然发型、无发饰 |
+
+### 男性
+
+| 项目 | 约束 | 提示词 |
+|---|---|---|
+| 发色 | 自然发色(黑色/深棕),禁漂色 | 自然发色、黑色/深棕 |
+| 发长 | 短发/中长发,由角色设定 | 短发、及肩中长发 |
+| 发质 | 发丝清晰、质感真实 | 发丝根根分明 |
+| 造型 | 自然散发/简单束发、无发饰 | 自然发型、无发饰 |
+
+---
+
+## 六、基础服装约束
+
+> 基础服装无特殊约束,女性为运动背心+四角内裤,男性为运动背心+四角内裤。正式服饰在服化衍生环节叠加。
+
+### 女性基础服装
+
+基础内衣+四角内裤,颜色以浅灰色/白色/黑色基础色为主,无花纹装饰。
+
+### 男性基础服装
+
+基础内衣+四角内裤,颜色以浅灰色/白色/黑色基础色为主,无花纹装饰。
+
+### 着装统一规则
+
+- 服装风格统一,确保后续服饰叠加无色彩干扰
+- 除面部/手部/颈部外基本覆盖
+- 四视图服装款式完全一致
+- 基础服装仅为安全打底,焦点在面容与体态
+
+---
+
+## 七、四视图设定图规范
+
+### 视图定义
+
+| 位置 | 视图 | 角度 | 景别 | 要求 | 提示词 |
+|---|---|---|---|---|---|
+| 左一 | 人像特写 | 正面平视 | 头顶至锁骨 | 从头顶到锁骨完整展示,面部占60%+,五官清晰 | portrait closeup、face detail、head to collarbone complete |
+| 左二 | 正视图 | 正面 0° | 全身立像 | 面对镜头、双臂自然,从头顶到脚底完整展示 | front view、full body head to toe |
+| 右二 | 侧视图 | 右侧 90° | 全身立像 | 纯侧面轮廓清晰、从头顶到脚底完整展示 | side view、profile、full body head to toe |
+| 右一 | 后视图 | 后方 180° | 全身立像 | 后脑/背部/发尾/脚部清晰、从头顶到脚底完整展示 | back view、rear view、full body head to toe |
+
+### 画面规范
+
+| 项目 | 约束 |
+|---|---|
+| 布局 | 同一画面从左至右并排四视图 |
+| 背景 | 纯净中性灰 #E8E8E8 |
+| 站姿 | 自然站立、双脚平行微分、双臂自然下垂 |
+| 全身展示 | 全身立像必须从头顶到脚底完整入画,严禁裁切 |
+| 特写展示 | 人像特写必须从头顶到锁骨完整入画,严禁裁切头顶 |
+| 表情 | 中性微表情,符合角色气质 |
+| 光线 | 均匀柔光,前方主光 + 双侧补光,无硬阴影 |
+| 一致性 | 四视图的肤色/体型/发型/面容/基础服装完全一致 |
+| 画面比例 | 建议 4:1 或 3:1 |
+
+---
+
+## 八、提示词模板
+
+```
+{性别}角色四视图设定图,真人写实摄影,都市写实纪实,强对比度,极致细节,
+character design sheet,character turnaround,
+{脸型},{眼型},{鼻型},{唇型},{整体气质},自然状态,
+{肤色},皮肤自然,皮肤健康,皮肤细腻,毛孔微可见,
+{身高描述,如:170cm tall、tall slender woman},{头身比,如:7.5 heads tall proportion},{身材描述},{体态描述},
+{发色}{发长},发丝根根分明,{基础造型},无发饰,
+{基础服装描述},基础色,无花纹装饰,
+同一画面左至右并排:人像特写+正视图+侧视图+后视图,
+人像特写从头顶到锁骨完整展示,不裁切头顶,
+全身立像从头顶到脚底完整展示,不裁切头顶和脚部,
+自然站立,纯净中性灰背景,均匀柔光,无硬阴影,
+四视图一致性,面容细腻渲染,发丝细腻渲染,皮肤真实质感
+图中不要有任何文字
+```
+
+
+---
+
+## 九、约束规则
+
+### 必守
+
+| 编号 | 规则 |
+|---|---|
+| R1 | 必须为「自然状态」|
+| R2 | 必须声明基础服装(内衣+四角内裤) |
+| R3 | 必须声明「无发饰、无配饰」 |
+| R4 | 必须指定「纯净中性灰背景」 |
+| R5 | 必须指定「四视图一致性」 |
+| R6 | 全身立像必须从头顶到脚底完整展示,严禁裁切 |
+| R7 | 必须声明角色身高并通过头身比换算约束全身比例 |
+| R8 | 人像特写必须从头顶到锁骨完整展示,严禁裁切头顶 |
+| R9 | 皮肤必须保留真实质感,不可过度磨皮 |
+
+### 严禁
+
+| 编号 | 严禁 |
+|---|---|
+| X1 | 基础服装以外的任何服装/配饰/妆容 |
+| X2 | 正顶硬光/正底光/彩色光 |
+| X3 | 过度美白/过度磨皮至无质感 |
+| X4 | 复杂场景背景(必须纯灰底) |
+| X5 | 夸张表情/动态姿势 |
+| X6 | 全身立像裁切头顶或脚底,必须从头到脚完整入画 |
+| X7 | 人像特写裁切头顶,必须从头顶到锁骨完整入画 |
+| X8 | 忽略身高和头身比约束 |
\ No newline at end of file
diff --git a/data/skills/art_skills/realpeople_urban_modern/art_prompt/art_prop_derivative_modern.md b/data/skills/art_skills/realpeople_urban_modern/art_prompt/art_prop_derivative_modern.md
new file mode 100644
index 0000000..268afbf
--- /dev/null
+++ b/data/skills/art_skills/realpeople_urban_modern/art_prompt/art_prop_derivative_modern.md
@@ -0,0 +1,113 @@
+# 道具衍生状态生成 · 约束手册(真人都市版)
+
+---
+
+## 一、衍生原则
+
+1. **造型锚定** — 道具核心造型/轮廓在所有状态中可识别
+2. **状态可读** — 状态差异必须一目了然,观众能立即区分
+3. **叙事服务** — 每种状态变体服务于特定剧情节点
+4. **渐进退化** — 损伤/老化状态应有合理的物理逻辑
+
+---
+
+## 二、状态类型
+
+### 2.1 使用状态
+
+| 状态 | 描述 | 适用道具 | 提示词 |
+|---|---|---|---|
+| 崭新 | 完好无损、光泽如新 | 所有道具 | 崭新、完好无损、光泽如新 |
+| 日常使用 | 微磨损、自然痕迹 | 电子产品/生活用品 | 日常使用痕迹、自然磨损 |
+| 陈旧 | 明显使用痕迹、老化 | 皮革制品/织物 | 使用痕迹、自然老化 |
+
+### 2.2 损伤状态
+
+| 状态 | 描述 | 适用道具 | 提示词 |
+|---|---|---|---|
+| 微损 | 小划痕/小裂纹 | 手机/笔记本 | 细微划痕、轻微裂纹 |
+| 破损 | 明显裂缝/断裂 | 电子产品/玻璃品 | 裂缝明显、碎裂 |
+| 残片 | 仅剩部分/碎片 | 玻璃/陶瓷品 | 残片、碎片 |
+
+### 2.3 特殊状态
+
+| 状态 | 描述 | 适用道具 | 提示词 |
+|---|---|---|---|
+| 污渍 | 污渍附着 | 所有道具 | 污渍、脏污 |
+| 水渍 | 水渍、湿润反光 | 纸品/织物 | 水渍、湿润痕迹 |
+| 划痕 | 明显划痕 | 金属/玻璃 | 明显划痕、刮痕 |
+| 磨损 | 表面磨损 | 皮革/织物 | 磨损痕迹、老化 |
+| 破损屏幕 | 屏幕碎裂 | 电子产品 | 屏幕碎裂、裂痕 |
+
+---
+
+## 三、状态变体画面规范
+
+### 单状态图
+
+| 项目 | 约束 |
+|---|---|
+| 背景 | 纯净中性灰 #E8E8E8(与设定图一致) |
+| 光线 | 均匀照明,无硬阴影 |
+| 角度 | 与原设定图正面图一致 |
+| 比例 | 道具占画面主体 70%+ |
+
+### 状态对比图
+
+| 项目 | 约束 |
+|---|---|
+| 布局 | 同一画面并排展示 2-3 种状态 |
+| 标注 | 每种状态下方标注状态名 |
+| 一致性 | 角度/光线/背景完全一致,仅状态不同 |
+
+---
+
+## 四、材质状态变化规则
+
+| 材质 | 崭新 → 日常 | 日常 → 陈旧 | 损伤表现 |
+|---|---|---|---|
+| 金属 | 亮光泽 → 微划痕 | 划痕 → 氧化斑点 | 凹陷/弯曲/断裂 |
+| 玻璃 | 透明 → 微划痕 | 划痕 → 明显裂纹 | 碎裂/缺口 |
+| 塑料 | 新光泽 → 微磨损 | 磨损 → 褪色 | 裂纹/变形 |
+| 皮革 | 光滑 → 微皱 | 皱折 → 裂纹 | 撕裂/磨损 |
+| 织物 | 崭新 → 微皱 | 皱折 → 褪色 | 撕裂/污渍 |
+
+---
+
+## 五、提示词模板
+
+### 单状态变体
+
+```
+
+基于{道具名}设定图,真人写实摄影风格,自然光线,极致细节,
+{道具类型},{材质描述},
+当前状态:{状态名},{状态视觉描述},
+{材质表面变化描述},
+同一画面四宫格(2×2):左上正面图+右上侧面图+左下背面图+右下细节特写,
+纯净中性灰背景,均匀柔光,无硬阴影,
+材质纹理超清晰,质感写实,状态细节可辨
+
+```
+
+
+---
+
+## 六、约束规则
+
+### 必守
+
+| 编号 | 规则 |
+|---|---|
+| R1 | 道具核心造型/轮廓在所有状态中可识别 |
+| R2 | 状态变化须符合物理逻辑 |
+| R3 | 必须使用四宫格(2×2)布局 |
+| R4 | 必须指定「纯净中性灰背景」,均匀柔光,无硬阴影 |
+
+### 严禁
+
+| 编号 | 严禁 |
+|---|---|
+| X1 | 状态变化后道具不可识别 |
+| X2 | 违反物理逻辑的损伤(如金属生锈) |
+| X3 | 过度损坏导致无法识别 |
diff --git a/data/skills/art_skills/realpeople_urban_modern/art_prompt/art_prop_modern.md b/data/skills/art_skills/realpeople_urban_modern/art_prompt/art_prop_modern.md
new file mode 100644
index 0000000..7666d93
--- /dev/null
+++ b/data/skills/art_skills/realpeople_urban_modern/art_prompt/art_prop_modern.md
@@ -0,0 +1,130 @@
+# 道具图像生成 · 都市写实约束手册
+
+---
+
+## 一、道具设计原则
+
+1. **功能可读** — 道具用途一目了然,造型服务于功能
+2. **质感极致** — 材质纹理必须清晰可辨(金属/玻璃/塑料/皮革/布料)
+3. **年代一致** — 所有道具必须符合现代都市世界观,禁止古代元素
+4. **尺度明确** — 通过参照物或标注暗示道具真实尺寸
+5. **纯道具独立展示** — 画面中只能出现道具本身,严禁出现任何人物、手部、肢体,道具不可处于被持有/佩戴/握持状态,必须以静物陈列方式独立呈现
+
+---
+
+## 二、道具分类与美学约束
+
+### 2.1 电子产品类
+
+| 项目 | 约束 | 提示词 |
+|---|---|---|
+| 类型 | 手机/笔记本/平板/耳机 | {电子产品类型},现代电子产品 |
+| 材质 | 金属/玻璃/塑料 + 品牌标识 | 金属质感、玻璃面板 |
+| 装饰 | 接口/屏幕/按钮细节清晰 | 接口清晰、屏幕反光 |
+| 光泽 | 现代工业光泽、金属反光 | 现代光泽、金属质感 |
+| 提示词 | 现代{电子产品},{材质},工业设计,细节清晰 | — |
+
+### 2.2 个人饰品类
+
+| 项目 | 约束 | 提示词 |
+|---|---|---|
+| 类型 | 手表/眼镜/首饰/皮带 | {饰品类型},现代配饰 |
+| 材质 | 金属/皮革/玻璃/橡胶 | 金属质感、皮质纹理 |
+| 工艺 | 现代工艺、品牌标识清晰 | 现代工艺、品牌精致 |
+| 光泽 | 金属光泽/玻璃反光/皮质光泽 | 金属光泽、玻璃反光 |
+| 提示词 | 现代{饰品},{材质},现代工艺,细节清晰 | — |
+
+### 2.3 生活用品类
+
+| 项目 | 约束 | 提示词 |
+|---|---|---|
+| 类型 | 水杯/咖啡杯/灯具/收纳 | {器物类型},现代生活 |
+| 材质 | 玻璃/金属/塑料/陶瓷 | 玻璃通透、金属质感 |
+| 质感 | 现代设计、表面工艺清晰 | 表面工艺、设计细节 |
+| 风格 | 现代简约/北欧/工业风 | 现代简约、北欧风格 |
+| 提示词 | 现代{器物},{材质}质感,设计细节 | — |
+
+### 2.4 办公文具类
+
+| 项目 | 约束 | 提示词 |
+|---|---|---|
+| 类型 | 笔/笔记本/文件夹/书签 | {文具类型},办公文具 |
+| 材质 | 金属/塑料/皮革/纸张 | 金属质感、皮革纹理 |
+| 质感 | 品牌标识/文字清晰可辨 | 文字清晰、品牌标识 |
+| 状态 | 可按剧情需要添加使用痕迹 | 使用痕迹 / 崭新 |
+| 提示词 | 现代{文具},{材质},{状态},品牌标识清晰 | — |
+
+---
+
+## 三、多角度设定图规范
+
+### 视图定义
+
+| 位置 | 视图 | 角度 | 要求 | 提示词 |
+|---|---|---|---|---|
+| 左上 | 正面图 | 正面 0° | 道具完整正面形态 | front view |
+| 右上 | 侧面图 | 侧面 90° | 厚度/轮廓/结构清晰 | side view |
+| 左下 | 背面图 | 背面 180° | 道具背部结构/装饰 | back view |
+| 右下 | 细节特写 | 局部放大 | 材质纹理/工艺细节 | detail closeup |
+
+### 画面规范
+
+| 项目 | 约束 |
+|---|---|
+| 布局 | 同一画面四宫格(2×2),上下左右四视角 |
+| 背景 | 纯净中性灰 #E8E8E8 |
+| 光线 | 均匀柔光,无硬阴影 |
+| 比例 | 每格道具占格内主体 70%+ |
+| 投影 | 允许自然地面微投影 |
+| 画面比例 | 建议 1:1 |
+
+---
+
+## 四、材质渲染约束
+
+| 材质 | 渲染要求 | 提示词 |
+|---|---|---|
+| 金属 | 反光/高光/冷光泽、划痕微可见 | 金属质感、冷光泽、反光清晰 |
+| 玻璃 | 透光/反光/折射清晰 | 玻璃通透、反光清晰 |
+| 塑料 | 质感细腻、表面均匀 | 塑料质感、表面细腻 |
+| 皮革 | 纹理清晰、光泽自然 | 皮革纹理、质感细腻 |
+| 陶瓷 | 釉面光泽、色泽均匀 | 釉面光泽、瓷质温润 |
+| 布料 | 纤维质感、边缘自然 | 布料纹理、质感自然 |
+| 木材 | 木纹清晰、表面光滑 | 木纹清晰、质感温润 |
+
+---
+
+## 五、提示词模板
+
+```
+现代都市道具设定图,真实摄影风格,都市写实纪实,强对比度,极致细节,
+{道具类型},{材质描述},{工艺/装饰描述},{状态描述},
+纯道具静物展示,道具独立陈列,无人持有,无人佩戴,
+同一画面四宫格(2×2):左上正面图+右上侧面图+左下背面图+右下细节特写,
+纯净中性灰背景,均匀柔光,无硬阴影,
+材质纹理超清晰,质感写实,{材质光泽描述}
+图中不要有任何文字,
+画面中不能出现任何人物、手部、手指、肢体,道具不可处于被握持或佩戴状态
+```
+
+---
+
+## 六、约束规则
+
+### 必守
+
+| 编号 | 规则 |
+|---|---|
+| R1 | 必须指定「纯净中性灰背景」 |
+| R2 | 必须明确道具材质与工艺 |
+| R3 | 道具造型必须符合现代都市世界观 |
+
+### 严禁
+
+| 编号 | 严禁 |
+|---|---|
+| X1 | 复杂场景背景 |
+| X2 | 道具与人物同画面(本环节为纯道具图) |
+| X3 | 出现任何人物形象,包括全身、半身、局部(手、手指、手臂等肢体) |
+| X4 | 道具处于被持有、握持、佩戴、使用中的状态 |
+| X5 | 出现暗示人物存在的元素(如手持痕迹、佩戴视角、使用姿态) |
diff --git a/data/skills/art_skills/realpeople_urban_modern/art_prompt/art_scene_derivative_modern.md b/data/skills/art_skills/realpeople_urban_modern/art_prompt/art_scene_derivative_modern.md
new file mode 100644
index 0000000..672ba58
--- /dev/null
+++ b/data/skills/art_skills/realpeople_urban_modern/art_prompt/art_scene_derivative_modern.md
@@ -0,0 +1,165 @@
+# 场景衍生资产生成 · 都市写实约束手册
+
+---
+
+## 一、衍生原则
+
+1. **空间一致** — 建筑结构/布局/材质在所有变体中保持一致
+2. **景别驱动** — 同一场景通过不同景别展示不同叙事功能
+3. **时段切换** — 同一空间在不同时间段呈现不同光影氛围
+4. **天候变化** — 同一空间在不同天气下呈现不同情绪
+5. **实拍为锚** — 所有变体必须保持真实摄影质感,拒绝 3D 渲染/CG 动画感;保留镜头光学特征与物理光照
+
+---
+
+## 二、景别变体
+
+### 景别定义
+
+| 景别 | 范围 | 叙事功能 | 提示词 |
+|---|---|---|---|
+| 大全景 | 场景全貌 + 周围环境 | 建立空间感、定位 | extreme wide shot、大全景 |
+| 全景 | 场景完整呈现 | 展示空间结构 | wide shot、全景 |
+| 中景 | 场景局部区域 | 聚焦功能区 | medium shot、中景 |
+| 近景 | 场景细部 | 材质/氛围道具特写 | close shot、近景 |
+| 特写 | 极局部细节 | 材质纹理/关键道具 | extreme closeup、特写 |
+
+### 景别衍生规范
+
+| 从基准图衍生 | 保持不变 | 允许变化 |
+|---|---|---|
+| 大全景 → 全景 | 建筑外观、整体布局 | 视角收窄、前景增加 |
+| 全景 → 中景 | 材质、色调、光线 | 裁切聚焦、景深变化 |
+| 中景 → 近景 | 材质、色调 | 景深浅、背景虚化 |
+| 近景 → 特写 | 材质纹理 | 极浅景深、微距感 |
+
+---
+
+## 三、时段变体
+
+### 时段定义
+
+| 时段 | 视觉特征 | 提示词 |
+|---|---|---|
+| 清晨 | 薄雾柔光、色调偏冷暖交织 | 晨光微熹、清晨薄雾 |
+| 正午 | 明亮、阴影短、色彩鲜明 | 正午阳光、光线明亮 |
+| 黄昏 | 金色色调、长影、天空渐变 | 暮色金辉、golden hour |
+| 夜间(月光) | 冷蓝色调、幽静清冷 | 月光清辉、moonlight |
+| 夜间(灯火) | 暖黄点缀、明暗对比 | 灯火阑珊、城市夜景 |
+
+### 时段衍生规范
+
+| 从基准时段衍生 | 保持不变 | 变化项 |
+|---|---|---|
+| 日间 → 黄昏 | 建筑/布局/材质 | 天空色调暖化、影子拉长 |
+| 日间 → 夜间 | 建筑/布局/材质 | 整体变暗、增加灯火/月色氛围 |
+| 室内日间 → 室内夜间 | 空间结构、家具 | 整体色调暖化、增加台灯/落地灯元素 |
+
+---
+
+## 四、天候变体
+
+### 天候定义
+
+| 天候 | 视觉特征 | 提示词 |
+|---|---|---|
+| 晴天 | 明亮、阴影清晰 | 晴空万里、阳光明媚 |
+| 阴天 | 光线均匀、无硬影 | 阴天柔光、overcast |
+| 薄雾 | 能见度降低、空气朦胧 | 薄雾弥漫、雾气缭绕 |
+| 细雨 | 水珠、湿润反光、雨丝 | 细雨如丝、雨幕轻纱 |
+| 飞雪 | 白色覆盖、雪花飘落 | 飞雪纷纷、银装素裹 |
+
+### 天候衍生规范
+
+| 从基准天候衍生 | 保持不变 | 变化项 |
+|---|---|---|
+| 晴 → 薄雾 | 建筑/布局 | 增加雾气层、远景模糊、饱和度降低 |
+| 晴 → 细雨 | 建筑/布局 | 增加雨丝、地面反光、色调偏冷 |
+| 晴 → 飞雪 | 建筑/布局 | 增加积雪、雪花、色调偏白 |
+| 植被需随天候逻辑适配 | — | 雨中花瓣湿润、雪中枯枝挂霜 |
+
+---
+
+## 五、四视图设定图规范
+
+### 视图定义
+
+> 摄像机固定于场景中心点,分别朝前/后/左/右四个方向拍摄,形成 360° 环视。
+
+| 位置 | 视图 | 视角方向 | 要求 | 提示词 |
+|---|---|---|---|---|
+| 左上 | 前视图 | 从中心点向前方平视(0°) | 展示场景正面主体结构与纵深层次 | front view、eye level、looking forward |
+| 右上 | 右视图 | 从中心点向右方平视(90°) | 展示场景右侧空间延伸与侧面结构 | right side view、eye level、looking right |
+| 左下 | 后视图 | 从中心点向后方平视(180°) | 展示场景背面结构与空间纵深 | back view、eye level、looking backward |
+| 右下 | 左视图 | 从中心点向左方平视(270°) | 展示场景左侧空间延伸与侧面结构 | left side view、eye level、looking left |
+
+### 画面规范
+
+| 项目 | 约束 |
+|---|---|
+| 布局 | 同一画面四宫格(2×2),左上前视图+右上右视图+左下后视图+右下左视图,形成从中心点环视的四方向视图 |
+| 人物 | **严禁出现任何人物、人影、人体轮廓** |
+| 视点 | 四视图均从同一中心点出发,视线高度一致(人眼平视高度) |
+| 一致性 | 四视图的建筑结构/材质/色调/光线/季节/天候完全一致 |
+| 光线 | 四视图光源方向统一,保持光影逻辑一致(光源在不同视角下的位置关系正确) |
+| 画面比例 | 建议 1:1(2×2 网格) |
+
+---
+
+## 六、提示词模板
+
+```
+现代都市场景衍生四视图设定图,基于{场景名}概念图,
+real photography,photorealistic,shot on ARRI Alexa,35mm film grain,
+RAW photo,ultra realistic,hyper detailed,
+shallow depth of field,natural lens vignette,subtle chromatic aberration,bokeh,
+真实摄影质感,胶片颗粒感,自然光照,物理光影,
+scene derivative design sheet,environment concept art,no people,no characters,no human figures,
+保持场景空间结构一致,
+{景别视角(如有)},{时段描述(如有)},{天候描述(如有)},
+{前景},{中景},{后景},
+{色调描述},{景深描述(如有)},{天空色调变化(如有)},{氛围调整(如有)},
+{天候视觉特征(如有)},{材质表面变化(如有)},{植被适配描述(如有)},
+材质自然磨损痕迹,使用痕迹,墙面剥落,金属氧化,
+自然光漫射,体积光,丁达尔效应,焦散投影,
+空气透视,纹理细节超清晰,
+同一画面四宫格(2×2):从场景中心点环视,前视图+右视图+后视图+左视图,
+四视图均从同一中心点平视拍摄,建筑结构一致,材质色调一致,光影逻辑一致,
+画面中无任何人物
+图中不要有任何文字
+```
+
+
+> **使用说明**:根据用户提供的信息自行判断需要应用的变化维度(景别/时段/天候),未提及的维度对应字段留空省略即可。无需为每种变体单独生成模板。
+
+---
+
+## 七、约束规则
+
+### 必守
+
+| 编号 | 规则 |
+|---|---|
+| R1 | 场景空间结构在所有变体中保持一致 |
+| R2 | 时段变体必须调整天空色调与氛围 |
+| R3 | 天候变体必须适配植被/材质表面 |
+| R4 | 必须为「四视图设定图」(从中心点环视:前视图 + 右视图 + 后视图 + 左视图) |
+| R5 | 四视图的建筑结构/材质/色调/光线/季节/天候必须完全一致 |
+| R6 | 场景图中**严禁出现任何人物** |
+| R7 | 根据用户提供的信息自行判断变化维度,无需拆分为独立模板 |
+| R8 | 必须包含实拍摄影关键词(real photography / photorealistic / RAW photo) |
+| R9 | 必须包含镜头光学特征(shallow depth of field / lens vignette / bokeh 至少一项) |
+| R10 | 材质必须带有自然磨损/使用痕迹,禁止全新无瑕的"CG 感" |
+
+### 严禁
+
+| 编号 | 严禁 |
+|---|---|
+| X1 | 变体间建筑结构/布局不一致 |
+| X2 | 天候与季节矛盾(夏天飞雪等) |
+| X3 | 变体间材质/风格突变 |
+| X4 | 出现任何人物、人影、人体剪影或人体轮廓 |
+| X5 | 四视图之间建筑结构/材质/色调不一致,或视点中心不统一 |
+| X6 | 3D 渲染/CG 动画/卡通/游戏引擎质感(禁用 3D render、CGI、Unreal Engine、Unity 等词) |
+| X7 | 材质过于干净完美、无任何使用痕迹与岁月感(避免"塑料感") |
+| X8 | 光照过于均匀平坦、无景深虚化、无镜头光学特征 |
\ No newline at end of file
diff --git a/data/skills/art_skills/realpeople_urban_modern/art_prompt/art_scene_modern.md b/data/skills/art_skills/realpeople_urban_modern/art_prompt/art_scene_modern.md
new file mode 100644
index 0000000..b1c743c
--- /dev/null
+++ b/data/skills/art_skills/realpeople_urban_modern/art_prompt/art_scene_modern.md
@@ -0,0 +1,158 @@
+# 场景图生成 · 都市写实约束手册
+
+---
+
+## 一、场景美学原则
+
+1. **空间叙事** — 场景承载情绪与叙事功能,不是纯背景板
+2. **层次纵深** — 所有场景必须具备前/中/后景,杜绝扁平
+3. **质感至上** — 混凝土/玻璃/木材/金属/布料等材质纹理必须超清晰
+4. **实拍为锚** — 一切画面以真实摄影为标准,拒绝 3D 渲染/CG 动画质感;追求镜头光学特征(景深虚化、镜头暗角、色散微痕)与物理光照(自然光漫射、焦散、体积光)
+
+---
+
+## 二、季节色调映射
+
+| 季节 | 主色调 | 辅色调 | 提示词 |
+|---|---|---|---|
+| 春 | 嫩绿 + 浅粉 | 天青、鹅黄 | 春日嫩绿、桃花浅粉 |
+| 夏 | 翠绿 + 深蓝 | 海蓝、白 | 夏日翠绿、深蓝天空 |
+| 秋 | 金黄 + 橙红 | 琥珀、褐 | 秋日金黄、落叶橙红 |
+| 冬 | 灰白 + 冷蓝 | 银灰、墨蓝 | 冬日灰白、冷蓝天空 |
+
+---
+
+## 三、室内场景
+
+### 空间规范
+
+| 维度 | 约束 | 提示词 |
+|---|---|---|
+| 风格 | 现代公寓/写字楼/咖啡厅/酒店/商场,现代简约/北欧/工业风 | 现代{风格}风格 |
+| 材质 | 混凝土/玻璃/木材/金属/布艺为主 | 混凝土墙面、玻璃幕墙、木地板 |
+| 色调 | 低饱和中性色 + 原木色 + 点缀色 | 中性色调、原木色、点缀色 |
+| 纵深 | 前/中/后景层次 | 前景{元素}、中景{元素}、后景{元素} |
+| 质感 | 木纹/金属拉丝/布艺纹理可辨 | 纹理清晰、质感写实 |
+| 光照 | 自然光源为主(窗光/台灯/吊灯),光线漫射柔和,可见光束粒子、焦散投影 | 自然光漫射、台灯暖光、光束穿窗 |
+| 镜头感 | 浅景深虚化前后景、微镜头暗角、自然色温偏移 | shallow depth of field、lens vignette、natural color cast |
+| 瑕疵感 | 墙面有使用痕迹、地面有磨损、布艺有自然褶皱 | 使用痕迹、自然磨损、布艺自然垂褶 |
+
+### 室内类型速查
+
+| 类型 | 核心元素 | 氛围词 |
+|---|---|---|
+| 现代公寓 | 沙发、茶几、落地窗、绿植 | 温馨舒适、现代简约 |
+| 办公空间 | 办公桌、电脑、文件、绿植 | 专业整洁、高效氛围 |
+| 咖啡厅 | 吧台、咖啡机、桌椅、装饰 | 轻松惬意、文艺氛围 |
+| 酒店客房 | 床、床头柜、落地窗、电视 | 舒适奢华、静谧氛围 |
+| 客厅/起居室 | 沙发、电视柜、地毯、装饰画 | 温馨日常、家庭氛围 |
+
+---
+
+## 四、室外场景
+
+### 空间规范
+
+| 维度 | 约束 | 提示词 |
+|---|---|---|
+| 类型 | 街道/广场/公园/天台/停车场 | {场景},{季节},{时间} |
+| 天候 | 晴/阴/薄雾/细雨/飞雪 | 薄雾弥漫、细雨如丝 |
+| 植被 | 行道树/花坛/草坪/盆栽(须符合季节) | 行道树、花坛绿植 |
+| 水体 | 喷泉/水池需有光影反射 | 水面反光、喷泉流动 |
+| 建筑 | 现代建筑、玻璃幕墙、金属结构 | 现代建筑、玻璃幕墙 |
+| 空气感 | 必须有空气透视,远处偏灰偏蓝 | 远景灰蓝、空气透视 |
+| 光照 | 自然光为唯一光源,日光/路灯需有体积光与散射 | 自然光照、体积光、路灯暖光 |
+| 镜头感 | 浅景深虚化、镜头暗角、微色散、光斑散景 | shallow depth of field、bokeh、lens flare、vignette |
+| 瑕疵感 | 地面裂缝/墙面剥落/金属氧化/玻璃划痕 | 使用痕迹、自然磨损 |
+
+### 室外类型速查
+
+| 类型 | 核心元素 | 氛围词 |
+|---|---|---|
+| 城市街道 | 路灯、行道树、斑马线 | 都市日常、繁忙街道 |
+| 商业广场 | 建筑、喷泉、广告牌 | 繁华热闹、商业氛围 |
+| 公园绿地 | 草坪、树木、长椅、步道 | 自然宁静、休闲氛围 |
+| 屋顶天台 | 护栏、城市景观、座椅 | 开阔视野、城市风光 |
+| 地下停车场 | 停车位、车道线、指示灯 | 冷峻工业、静谧空间 |
+
+---
+
+## 五、四视图设定图规范
+
+### 视图定义
+
+> 摄像机固定于场景中心点,分别朝前/后/左/右四个方向拍摄,形成 360° 环视。
+
+| 位置 | 视图 | 视角方向 | 要求 | 提示词 |
+|---|---|---|---|---|
+| 左上 | 前视图 | 从中心点向前方平视(0°) | 展示场景正面主体结构与纵深层次 | front view、eye level、looking forward |
+| 右上 | 右视图 | 从中心点向右方平视(90°) | 展示场景右侧空间延伸与侧面结构 | right side view、eye level、looking right |
+| 左下 | 后视图 | 从中心点向后方平视(180°) | 展示场景背面结构与空间纵深 | back view、eye level、looking backward |
+| 右下 | 左视图 | 从中心点向左方平视(270°) | 展示场景左侧空间延伸与侧面结构 | left side view、eye level、looking left |
+
+### 画面规范
+
+| 项目 | 约束 |
+|---|---|
+| 布局 | 同一画面 2×2 网格排列:上排(前视图 + 右视图),下排(后视图 + 左视图),形成从中心点环视的四方向视图 |
+| 人物 | **严禁出现任何人物、人影、人体轮廓** |
+| 视点 | 四视图均从同一中心点出发,视线高度一致(人眼平视高度) |
+| 一致性 | 四视图的建筑结构/材质/色调/光线/季节/天候完全一致 |
+| 光线 | 四视图光源方向统一,保持光影逻辑一致(光源在不同视角下的位置关系正确) |
+| 画面比例 | 建议 1:1(2×2 网格) |
+
+---
+
+## 六、提示词模板
+
+```
+现代都市场景四视图设定图,
+real photography,photorealistic,shot on ARRI Alexa,35mm film grain,
+RAW photo,ultra realistic,hyper detailed,
+shallow depth of field,natural lens vignette,subtle chromatic aberration,bokeh,
+真实摄影质感,胶片颗粒感,自然光照,物理光影,
+scene design sheet,environment concept art,no people,no characters,no human figures,
+{室内/室外},{场景类型},{风格},{季节+时间},
+前景:{元素},中景:{元素},后景:{元素},
+{色调描述},{天候/氛围元素},
+{材质描述},空气透视,纹理细节超清晰,
+材质自然磨损痕迹,使用痕迹,墙面剥落,金属氧化,
+自然光漫射,体积光,丁达尔效应,焦散投影,
+同一画面2×2网格排列:从场景中心点环视,前视图+右视图+后视图+左视图,
+四视图均从同一中心点平视拍摄,建筑结构一致,材质色调一致,光影逻辑一致,
+画面中无任何人物
+图中不要有任何文字
+```
+
+
+---
+
+## 七、约束规则
+
+### 必守
+
+| 编号 | 规则 |
+|---|---|
+| R1 | 场景必须有「前中后景层次」 |
+| R2 | 室外必须包含「空气透视」 |
+| R3 | 场景图必须为「四视图设定图」(从中心点环视:前视图 + 右视图 + 后视图 + 左视图) |
+| R4 | 四视图的建筑结构/材质/色调/光线/季节/天候必须完全一致 |
+| R5 | 场景图中**严禁出现任何人物** |
+| R6 | 必须包含实拍摄影关键词(real photography / photorealistic / RAW photo) |
+| R7 | 必须包含镜头光学特征(shallow depth of field / lens vignette / bokeh 至少一项) |
+| R8 | 材质必须带有自然磨损/使用痕迹,禁止全新无瑕的"CG 感" |
+
+### 严禁
+
+| 编号 | 严禁 |
+|---|---|
+| X1 | 背景纯白/纯黑/无场景 |
+| X2 | 极端天候(暴风雨/雷电/暴雪,除非剧情需要) |
+| X3 | 场景无纵深/无层次 |
+| X4 | 植被/天候与季节矛盾 |
+| X5 | 出现任何人物、人影、人体剪影或人体轮廓 |
+| X6 | 四视图之间建筑结构/材质/色调不一致,或视点中心不统一 |
+| X7 | 3D 渲染/CG 动画/卡通/游戏引擎质感(禁用 3D render、CGI、Unreal Engine、Unity 等词) |
+| X8 | 材质过于干净完美、无任何使用痕迹与岁月感(避免"塑料感") |
+| X9 | 光照过于均匀平坦、无景深虚化、无镜头光学特征 |
+
diff --git a/data/skills/art_skills/realpeople_urban_modern/art_prompt/art_storyboard_video.md b/data/skills/art_skills/realpeople_urban_modern/art_prompt/art_storyboard_video.md
new file mode 100644
index 0000000..c7a72c5
--- /dev/null
+++ b/data/skills/art_skills/realpeople_urban_modern/art_prompt/art_storyboard_video.md
@@ -0,0 +1,11 @@
+# 视频提示词 · 视觉风格约束
+
+生成视频提示词时,必须注入以下视觉风格标签:
+
+| 模式 | 风格标签 |
+|------|----------|
+| **通用多参模式(英文)** | `modern urban drama, photorealistic, cinematic, natural lighting, ultra-fine detail` |
+| **通用首尾帧模式(英文)** | `modern urban drama, photorealistic, cinematic, natural lighting, ultra-fine detail, shallow depth of field` |
+| **Seedance 2.0(中文)** | `都市写实摄影,电影风格,自然光照,极致细节` |
+
+
diff --git a/data/skills/art_skills/realpeople_urban_modern/driector_skills/director_planning.md b/data/skills/art_skills/realpeople_urban_modern/driector_skills/director_planning.md
new file mode 100644
index 0000000..07d32d5
--- /dev/null
+++ b/data/skills/art_skills/realpeople_urban_modern/driector_skills/director_planning.md
@@ -0,0 +1,88 @@
+---
+name: director_planning_style
+description: 都市写实风格约束 — 定义真人都市写实在色调体系、光影方案、质感方向、场景空间元素、乐器选择与环境音上的全局约束。适用于任何叙事类型。
+metaData: director_skills
+---
+
+# 都市风格约束 · 真人都市写实 · 技法参考
+
+---
+
+## 一、色调体系与画面基调
+
+- **色调基底** — 全片以米白(C1)、暖肤色(C2)、高级灰(C6)为基底色,整体色温偏暖(5200-5800K),饱和度中低(40-60%),呈现温暖明亮的都市生活感
+- **冷暖叙事对比** — 暖色(琥珀暖 C7、奶油粉 C5、金属银 C8)作为情感升温与关系确认的视觉信号,冷色用于压力、误会、疏离等段落。冷暖切换应与情绪弧线同步
+- **冷暖分配策略** — 日常与工作段落以中性/微冷为主,亲密与和解段落释放暖色;避免全程高暖导致情绪层次塌陷
+- **色盘先行原则** — 段落规划先绑定情绪场景(相遇/暧昧/约会/争执/和解等),再确定主色+辅色与光影方案,避免“剧情对了但情绪不对色”
+- **禁用色域** — 高饱和荧光色、强霓虹污染、过度赛博色彩与本风格不兼容
+
+
+---
+
+## 二、光影方案体系
+
+- **光影即叙事** — 6 套光影方案对应不同情绪段落,导演规划阶段应在段落层面确定光影基调方向,而非逐镜指定
+- **光源角度** — 正给镜头默认 30° 斜射(较柔和),侧给镜头根据场景与人物关系微调
+
+| 光影方案 | 方案名 | 色调倾向 | 适用情绪 |
+|---|---|---|---|
+| A | 自然漫射 | 米白底 + 均匀柔和光 | 日常通勤、生活流叙事 |
+| B | 暖调侧光 | 奶油暖 + 局部暖光 | 升温互动、居家松弛 |
+| C | 顶光环境混合 | 中性灰 + 柔和冷白 | 职场节奏、理性沟通 |
+| D | 窗光点光源 | 琥珀暖主导 + 冷蓝背景 | 夜晚暧昧、亲密推进 |
+| E | 街头霓虹晕光 | 冷色背景 + 暖色点缀 | 都市夜景、浪漫游走 |
+| F | 阴天漫射冷光 | 灰蓝主调 + 暖色局部 | 过渡段、低潮段 |
+
+- **冷暖光分配** — 暖色光可全片使用但需分层控制;冲突/疏离段落降低暖光占比,避免情绪与光色冲突
+- **氛围方向映射** — 每场戏氛围方向应映射到上述光影方案(A-F)的某一方向,确保视觉一致性
+
+## 三、质感方向
+
+- **超清纪实感** — 真人写实摄影核心:皮肤纹理可见、发丝根根分明、材质细节清晰可信
+- **强对比度 + 极致细节** — 作为画面质感锚点。不是低对比小清新,不是重滤镜氛围化,而是可拍可落地的影视纪实感
+- **材质真实** — 服化道需具备现实可信度:西装面料、玻璃反射、金属器件、木质家具、电子屏幕高光都应符合都市实拍逻辑
+- **皮肤质感** — 保留真实毛孔与细微瑕疵,控制磨皮强度,追求“真实但好看”
+- **写实不等于平淡** — 通过构图、景别、运动节奏放大情绪感染力,而非依赖夸张特效与过度后期
+
+---
+
+## 四、都市场景空间元素
+
+都市世界观特有的场景元素及其视觉叙事功能:
+
+- **窗框/玻璃/门洞** — 天然框架式构图道具,制造空间分层与人物关系距离感
+- **街道/地铁/电梯/写字楼走廊** — 都市节奏载体,通勤与停顿的切换可直接映射角色心理状态
+- **咖啡厅/办公室/居家客厅** — 情绪容器:咖啡厅偏试探,办公室偏克制,居家偏安全与松弛
+- **天气与时段作为转场** — 日转夜、晴转雨、黄昏入夜可用于段落情绪缓冲,避免硬切
+- **转折点用视觉而非解释** — 优先使用画面手段(景别突变、视线错位、空间阻隔)承接情绪转折,减少对白解释负担
+
+---
+
+## 五、都市乐器与环境音
+
+都市世界观下的声音元素约束:
+
+### 乐器选择
+
+- **钢琴** — 日常、温馨、回忆段落核心乐器,最能体现都市生活质感
+- **吉他** — 轻松、街头、慢节奏浪漫段落的有效主导
+- **弦乐** — 情绪抬升与情感爆发段落的主力铺底
+- **Lo-fi/轻电子** — 年轻化、城市夜生活、节奏切换段落的风格增强器
+- **环境音优先级高** — 都市剧中真实环境声是沉浸感关键,配乐不应压过对白
+
+### 乐器组合策略
+
+| 情绪阶段 | 乐器组合 |
+|---|---|
+| 平稳/开场/收尾 | 钢琴独奏 或 吉他独奏 |
+| 日常推进 | 钢琴 + 轻打击 |
+| 暧昧升温/浪漫 | 钢琴 + 弦乐 |
+| 情绪爆发/冲突 | 弦乐主导 + 低频铺底 |
+| 夜景/转场 | Lo-fi/轻电子 + 环境声 |
+
+### 都市环境音
+
+- **典型环境音层次** — 车流声 / 地铁进站提示 / 电梯提示音 / 咖啡机声 / 键盘敲击 / 雨声 / 空调底噪 / 城市远景噪声
+- **每场戏标注 1-2 个核心环境音**,帮助后续音效设计。环境音层次越准确,都市写实质感越强
+
+---
\ No newline at end of file
diff --git a/data/skills/art_skills/realpeople_urban_modern/driector_skills/director_storyboard.md b/data/skills/art_skills/realpeople_urban_modern/driector_skills/director_storyboard.md
new file mode 100644
index 0000000..e1f398b
--- /dev/null
+++ b/data/skills/art_skills/realpeople_urban_modern/driector_skills/director_storyboard.md
@@ -0,0 +1,187 @@
+---
+name: director_storyboard
+description: 导演分镜提示词技法 · 真人都市写实
+metaData: director_skills
+---
+
+# 分镜提示词 · 真人都市写实 · 风格专属技法
+
+---
+
+## 适用范围
+
+本 Skill 专用于**真人都市写实**风格的分镜提示词生成。
+
+---
+
+## 情绪 → 面容/眼神词映射
+
+| 情绪输入 | 面容词 | 眼神词 | 微表情补充 |
+|----------|--------|--------|-----------|
+| 心动 / 欣喜 | 嘴角微扬,眼底笑意 | 眼神明亮,目光专注 | 脸颊微红,表情自然 |
+| 悲伤 / 失落 | 面色沉静,神情低落 | 眼神黯淡,目光游离 | 眉心轻蹙,表情内敛 |
+| 愤怒 / 压迫 | 眉眼凌厉,神情冷峻 | 目光如炬,眼神强势 | 唇线收紧,气场压迫 |
+| 温柔 / 深情 | 神情柔和,眉目温润 | 眼神专注,目光深情 | 嘴角轻扬,表情克制温暖 |
+| 坚定 / 决绝 | 神情严肃,面容沉着 | 眼神坚定,目光清冽 | 眉眼平静,气质干练 |
+| 惊讶 / 震惊 | 神情微愣,面色微变 | 眼神放大,目光骤聚 | 眉梢轻挑,唇形微张 |
+| 冷漠 / 疏离 | 面容冷淡,神情漠然 | 眼神空远,目光无波 | 表情几乎凝固,气质疏离 |
+| 喜悦 / 雀跃 | 神情鲜活,笑容灿烂 | 眼神明亮有神,笑眼弯弯 | 嘴角上扬,表情生动自然 |
+| 紧张 / 慌乱 | 表情略带茫然,神态慌张 | 眼神飘忽,目光四顾 | 眉心微蹙,表情生动真实 |
+| 隐忍 / 克制 | 神情内敛,面容沉静 | 眼神深沉,眼底有情绪压抑 | 唇线收紧,喉结微动 |
+
+---
+
+## 光影氛围词库(真人都市写实)
+
+### 时间段光线
+
+| 时间段 | 主光词 | 色调词 | 气氛词 |
+|--------|--------|--------|---------|
+| 清晨 | 散射晨光,漫射柔光 | 冷白/中性色调 | 城市苏醒感,空气清新 |
+| 午后 | 柔和斜侧光,漫射散光 | 暖调为主,轻暖调 | 光影斑驳,层次分明 |
+| 傍晚/黄昏 | 暖调侧逆光,斜射余晖 | 暖调为主,局部暖光点缀 | 长影拉伸,光感温馨 |
+| 夜间 | 窗光冷蓝,室内暖点光源 | 冷暖对比 | 光影幽深,明暗强对比 |
+| 雨天/阴天 | 漫射冷光,无主光源 | 灰蓝主调 | 空气潮湿感,低饱和度 |
+| 办公室/室内 | 顶光+环境光 | 中性灰调 | 柔和均匀,专业感 |
+
+### 情绪光影
+
+| 情绪基调 | 光线类型 | 补充约束 |
+|----------|----------|---------|
+| 心动/温情 | 柔和侧逆光,散射暖光局部 | 轮廓光勾勒,浅景深柔化背景 |
+| 对峙/压迫 | 硬侧光,高对比度强打光 | 阴影硬朗,明暗分割明显 |
+| 压抑/悲伤 | 漫射冷光,顶光或侧冷光 | 低调打光,面部局部暗部留存 |
+| 神秘/肃穆 | 冷蓝侧光,逆光剪影 | 光晕控制,边缘光精准 |
+| 空灵/意境 | 散射软光,背光过曝微调 | 空气透视感,远景虚淡 |
+
+---
+
+## 场景质感约束词(按场景类型)
+
+| 场景类型 | 必加约束词 |
+|----------|-----------|
+| 办公室 | 玻璃隔断反光,办公桌面整洁,电脑屏幕光,现代办公椅 |
+| 咖啡厅/餐厅 | 木质桌椅纹理,咖啡杯细节,暖色吊灯,窗外街景虚化 |
+| 居家空间 | 沙发布料质感,地毯纹理,台灯暖光,生活杂物细节 |
+| 街头/广场 | 沥青路面反光,建筑立面细节,霓虹灯招牌,人群虚化 |
+| 商场/室内空间 | 大理石地面反光,玻璃橱窗,现代照明,商业空间纵深感 |
+| 车内 | 座椅皮革质感,车窗反射,仪表盘光,窗外街景虚化 |
+| 卧室/私密空间 | 床单褶皱,床头灯暖光,衣物随意摆放,生活气息 |
+
+---
+
+## 固定风格锚定词(所有输出必须包含)
+
+**真人写实锚定(必选):**
+
+真人写实摄影,电影级画质,超现实主义纪实,强对比度,极致细节,纹理超清晰
+
+**人物质感(含人物镜头时必选):**
+
+皮肤细腻,面容细腻渲染,五官立体,发丝根根分明,发丝细腻渲染
+
+**服饰质感(含人物镜头时必选):**
+
+现代服饰布料质感清晰,纹理细节超清晰,衣物随动态自然垂坠,现代剪裁合身
+
+**一致性锚定(参考图模式必选):**
+
+保持人物面容与参考图一致,保持服饰配色与参考图一致,保持场景光线风格统一
+
+**风格收尾(固定):**
+
+都市写实美学,现代东方气质,电影级分镜构图
+
+**画质锁定词(所有输出必须包含,置于风格收尾之后):**
+
+模式A(中文)——默认(画面无画内文字需求时):
+超清4K画质,高细节,自然锐度,写实清晰感,画面无字幕、无水印、无标题叠字
+
+模式B(英文)——默认:
+ultra-sharp 4K, high detail, crisp textures, naturalistic sharpness, photorealistic clarity, no subtitles, no captions, no watermark, no title overlay
+
+模式B(英文)——画内文字场景:
+ultra-sharp 4K, high detail, crisp textures, naturalistic sharpness, photorealistic clarity, no subtitles, no captions, no watermark, no title overlay, legible text on in-scene props such as screens, posters, and signage
+
+**负向词模板(模式B 必须包含,置于提示词末尾):**
+
+> ⚠️ Seedream(模式A)**不支持负向提示词**,负向词仅适用于模式B。模式A 通过正向词中的质感锚定和画质锁定来保证画面质量。
+
+模式B(英文):
+no plastic skin, no beauty filter, no studio lighting, no centered composition, no oversaturation, no AI generated look, no motion blur, no noise, no blurry, no out of focus, no subtitles, no captions, no watermark, no title overlay, no UI text, no ancient costume, no hanfu, no traditional Chinese architecture
+
+---
+
+## 美学禁止项(生成时严格规避)
+
+以下词汇/风格不得出现于输出提示词中:
+
+- ❌ 古风/古代/汉服/传统建筑相关词
+- ❌ 动漫/二次元/插画/CG 渲染相关词
+- ❌ 现代元素缺失(必须明确现代场景)
+- ❌ 暖黄主调色调词(可用"局部暖色灯光点缀")
+- ❌ 柔焦/朦胧感/低对比滤镜词
+- ❌ 撞色/混搭/霓虹/荧光色系
+- ❌ 卡通比例、大眼睛、Q版等变形描述
+- ❌ 赛博朋克/蒸汽朋克/架空西幻元素
+- ❌ 画外叠加文字(字幕、水印、标题卡、旁白叠字、片头字等 UI 层文字,画面必须为纯视觉画面)
+
+> 💡 **例外**:故事世界内的道具文字(角色看手机/电脑屏幕、海报、路牌、招牌等场景中自然存在的文字)**不属于禁止范围**。当分镜画面描述中包含此类内容时,应如实描写其存在并要求文字清晰。
+
+---
+
+## 完整生成示例
+
+> 以下为同一输入分别使用模式A和模式B的对照展示,实际使用时**仅输出其中一种**。
+
+### 输入(分镜表行数据)
+
+| 序号 | 画面描述 | 场景 | 关联资产名称 | 时长 | 景别 | 运镜 | 角色动作 | 情绪 | 光影氛围 |
+|------|---------|------|-------------|------|------|------|---------|------|----------|
+| 1 | 林晚独立咖啡厅窗边,窗外雨滴滑落 | 咖啡厅 | 林晚 | 4s | 中景 | 缓推 | 手持咖啡杯,目光望向窗外 | 思念 / 期待 | 暖调侧光+冷蓝窗光 |
+
+### 示例输出A(模式A · Seedream)
+
+[Prompt]
+真人写实摄影,电影级画质,超现实主义纪实,强对比度,极致细节,纹理超清晰,中景构图,人物半身入镜,皮肤细腻,面容细腻渲染,五官立体,发丝根根分明,发丝细腻渲染,女性主角立于咖啡厅窗边,双手自然捧着一杯咖啡,目光望向窗外,眼神期待又略带思念,咖啡厅暖调侧光,窗外冷蓝雨光勾勒人物边缘,木质桌椅纹理清晰,玻璃窗上的雨滴细节,现代东方气质,电影级分镜构图,超清4K画质,自然锐度,写实清晰感,画面无字幕、无水印、无标题叠字。
+Based on the reference image of 林晚, maintain consistent: face features, hairstyle, costume details. Generate a new scene: standing by the cafe window on a rainy day, holding a coffee cup, gazing outside. Keep character appearance identical to reference.
+
+### 示例输出B(模式B · Nanobanana)
+
+```xml
+
+You are a cinematographer and storyboard artist.
+Maintain strict visual continuity across all shots.
+
+
+Image [1]: 林晚 — black long hair tied in a half ponytail, gentle eyes, modern casual outfit, slim body shape
+
+
+- Same wardrobe, hairstyle, face features across ALL shots
+- Same environment, lighting style, color grade
+- Only framing, angle, action, expression may change
+- Do NOT introduce new characters not in reference images
+
+
+Medium shot, character standing by a cafe window on a rainy day, holding a coffee cup with both hands, gazing outside with an expression of expectation and longing, warm side light, cold blue window light creating rim light effect, wooden table texture, raindrops on glass visible, modern cinematic realism, ultra-sharp 4K, high detail, crisp textures, photorealistic clarity, no subtitles, no captions, no watermark, no title overlay.
+
+
+no plastic skin, no beauty filter, no studio lighting, no centered composition, no oversaturation, no AI generated look, no motion blur, no noise, no blurry, no out of focus, no subtitles, no captions, no watermark, no title overlay, no UI text, no ancient costume, no hanfu, no traditional Chinese architecture
+
+```
+
+## 快速参考卡
+
+### 情绪 → 画面词速查
+
+| 情绪 | 面容关键词 | 光线匹配 |
+|------|-----------|---------|
+| 心动 | 嘴角微扬,眼底笑意 | 暖调侧光 |
+| 悲伤 | 面色沉静,眼神黯淡 | 漫射冷光 |
+| 愤怒 | 眉眼凌厉,目光如炬 | 硬侧光高对比 |
+| 温柔 | 神情柔和,眼神专注 | 散射暖光局部 |
+| 坚定 | 神情严肃,眼神坚定 | 中性灰调 |
+| 冷漠 | 面容冷淡,眼神空远 | 冷蓝侧光 |
+| 隐忍 | 面容沉静,眼底压抑 | 低调冷光,阴影留存 |
+
+
diff --git a/data/skills/art_skills/realpeople_urban_modern/driector_skills/director_storyboard_table.md b/data/skills/art_skills/realpeople_urban_modern/driector_skills/director_storyboard_table.md
new file mode 100644
index 0000000..f0c0277
--- /dev/null
+++ b/data/skills/art_skills/realpeople_urban_modern/driector_skills/director_storyboard_table.md
@@ -0,0 +1,47 @@
+---
+name: director_storyboard_table_style
+description: 分镜表都市约束 — 定义真人都市写实在分镜表中的光影氛围规范、光源角度、动作节奏、环境动态、运镜禁忌与转场禁忌。适用于任何叙事类型。
+metaData: director_skills
+---
+
+# 分镜表都市约束 · 真人都市写实 · 技法参考
+
+---
+
+## 一、分镜表定位
+
+分镜表是导演将剧本转化为镜头语言的核心工具。以下仅提供真人都市写实风格在分镜表层面的约束规范。
+
+---
+
+## 二、光影与氛围
+
+- **同场戏光影统一** — 一场戏内不应出现两种以上光影方案,除非有明确的叙事转折(如关台灯→月光冷辉)
+- **情绪色盘绑定** — 每场戏至少绑定 1 个情绪场景(如相遇心动/工作争执/约会甜蜜),并在镜头组内保持主色+辅色连续性
+- **光源角度规范** — 正给镜头光源默认 30° 斜射(较柔和),侧给镜头根据画面需要调整。描述光影时须区分正给/侧给的角度差异
+- **冷暖色调与叙事阶段匹配** — 工作/独处/冲突段落保持中性/冷调,暖色调(暖橙+冷蓝背景对比)在情感升温后使用
+- **光影转场是高级手段** — 从自然光(A)渐变到室内暖光(B)= 日转夜的时间流逝。在分镜表中标注光影变化点
+
+---
+
+## 三、环境动态
+
+- **环境动态增加画面呼吸感** — 窗外车灯流动、电脑屏幕闪烁、咖啡杯热气、手机屏幕亮起。每 3-4 个镜头至少安排一个有环境动态的镜头,避免画面"死"掉
+- **都市环境元素优先** — 环境动态应选用都市世界观内的元素:车灯流动、雨滴划窗、咖啡热气、手机屏幕亮灭、窗帘微动、电梯数字跳动,禁止出现与现代都市不兼容的元素
+
+---
+
+## 四、都市动作节奏
+
+- **都市动作要自然** — 所有人物动作默认自然节奏。起身、转身、抬手都应标注"自然"或"随意"
+- **道具互动** — 都市场景中手机、咖啡杯、文件、车钥匙等道具的使用是天然的动态资产,可在画面描述中加入道具互动细节,增加生活质感
+- **肢体语言现代化** — 都市人物举止应符合现代都市气质:自信的步态、随性的倚靠、不经意的小动作(拨头发、看手表、咬唇)
+
+---
+
+## 五、运镜禁忌
+
+- **禁用快速运镜** — 甩镜、急推、手持晃动与真人都市写实的气质冲突(除非是动作/追逐场景)
+- **禁用花式转场** — 划屏、旋转、百叶窗等与本风格不兼容
+
+---
\ No newline at end of file
diff --git a/data/skills/art_skills/realpeople_urban_modern/images/1.png b/data/skills/art_skills/realpeople_urban_modern/images/1.png
new file mode 100644
index 0000000..a51ea73
Binary files /dev/null and b/data/skills/art_skills/realpeople_urban_modern/images/1.png differ
diff --git a/data/skills/art_skills/realpeople_urban_modern/images/场景原始.png b/data/skills/art_skills/realpeople_urban_modern/images/场景原始.png
new file mode 100644
index 0000000..057b3c2
Binary files /dev/null and b/data/skills/art_skills/realpeople_urban_modern/images/场景原始.png differ
diff --git a/data/skills/art_skills/realpeople_urban_modern/images/场景衍生.png b/data/skills/art_skills/realpeople_urban_modern/images/场景衍生.png
new file mode 100644
index 0000000..f8ba689
Binary files /dev/null and b/data/skills/art_skills/realpeople_urban_modern/images/场景衍生.png differ
diff --git a/data/skills/art_skills/realpeople_urban_modern/images/女性原始.png b/data/skills/art_skills/realpeople_urban_modern/images/女性原始.png
new file mode 100644
index 0000000..ad1d32f
Binary files /dev/null and b/data/skills/art_skills/realpeople_urban_modern/images/女性原始.png differ
diff --git a/data/skills/art_skills/realpeople_urban_modern/images/女性衍生.png b/data/skills/art_skills/realpeople_urban_modern/images/女性衍生.png
new file mode 100644
index 0000000..cc2a93b
Binary files /dev/null and b/data/skills/art_skills/realpeople_urban_modern/images/女性衍生.png differ
diff --git a/data/skills/art_skills/realpeople_urban_modern/prefix.md b/data/skills/art_skills/realpeople_urban_modern/prefix.md
new file mode 100644
index 0000000..2da3001
--- /dev/null
+++ b/data/skills/art_skills/realpeople_urban_modern/prefix.md
@@ -0,0 +1,117 @@
+# 全局美学基础 · 真人都市写实
+
+---
+严格遵循下方风格约束与全局规则,依据提示词模板格式生成提示词。仅输出提示词本身,不附加任何解释、说明或额外文本。
+## 一、风格基因
+
+| 维度 | 定义 |
+|---|---|
+| **一级风格** | 真人都市写实(Modern-Photorealism) |
+| **二级风格** | 真人写实摄影 · 影视级纪实质感 |
+| **情感基调** | 甜宠向 — 直球表达、生活温暖 |
+| **质感锚词** | 强对比度、极致细节、都市写实纪实 |
+
+---
+
+## 二、全局色彩盘(风格基线,不是硬锁)
+
+> 目标:统一审美而非限制创作。除「硬约束色」外,其余颜色默认优先使用,可在合理范围内偏移。
+
+### 色彩使用层级
+
+| 层级 | 约束强度 | 说明 |
+|---|---|---|
+| L1 硬约束 | 高 | 仅锁定角色识别核心:肤色、发色、主服底色的审美方向 |
+| L2 软约束 | 中 | 场景色、配饰色、点缀色优先参考色盘,可按镜头与剧情微调 |
+| L3 例外机制 | 低 | 节庆/回忆/高潮戏可临时突破局部色彩,但需保留整体冷暖逻辑 |
+
+| 序号 | 色名 | 色值 | 用途 |
+|---|---|---|---|
+| C1 | 米白 | #F5F0E8 | 主服底色、墙面、窗帘 |
+| C2 | 暖白肤 | #F5E6D8 | 女性/男性肤色基准 |
+| C3 | 奶油粉 | #F4D7D5 | 唇色、腮红、装饰点缀 |
+| C4 | 深棕发 | #3A2E25 | 发色、眼瞳 |
+| C5 | 高级灰 | #8A8A8A | 现代建筑、家具、配饰 |
+| C6 | 冷蓝 | #5E7485 | 夜晚背景、窗外光、冷光源 |
+| C7 | 琥珀暖 | #C9A96E | 暖光灯、烛光、夕照 |
+| C8 | 金属银 | #C0C7CE | 电子设备、饰品、反光 |
+| C9 | 中性灰 | #E8E8E8 | 设定图背景 |
+| C10 | 米灰 | #E5DED3 | 家居软装、沙发、地毯 |
+
+### 硬约束色(默认锁定)
+
+| 色项 | 对应色 | 规则 |
+|---|---|---|
+| 肤色基准 | C2 暖白肤 | 默认优先,允许小幅明度/暖度微调 |
+| 发色/瞳色基准 | C4 深棕发 | 默认优先,允许深棕/深褐轻微偏移 |
+
+### 软约束色(推荐优先)
+
+> C1/C3/C5/C6/C7/C8/C9/C10 为推荐色域,用于服饰、装饰、背景、暖光、银饰、家居等。可根据镜头氛围做同色相邻近调整。
+
+### 情绪色盘(导演对齐版)
+
+| 情绪场景 | 主色 | 辅色 | 光效与对比建议 | 画面关键词 |
+|---|---|---|---|---|
+| 初次相遇(日常) | C1 米白 | C5 高级灰 + C9 中性灰 | 冷基底 + 局部暖光,强对比但不过曝 | 自然、生活感、偶遇 |
+| 心动信号(暧昧) | C3 奶油粉 | C7 琥珀暖 + C1 米白 | 中近景提暖,肤色微升温,背景保持低饱和 | 温暖、靠近感、暧昧 |
+| 工作场景(日常) | C5 高级灰 | C1 米白 + C8 金属银 | 明暗层次清晰,灰色调为主 | 专业、克制、距离感 |
+| 冲突争执(冷调) | C5 高级灰 | C6 冷蓝 + C9 中性灰 | 整体降饱和,拉大冷暖反差,阴影加深 | 紧张、对抗、距离 |
+| 重逢和解(回暖) | C1 米白 | C7 琥珀暖 + C3 奶油粉 | 先冷后暖,人物面部暖光渐进 | 回温、释然、治愈 |
+| 约会甜蜜(高光) | C7 琥珀暖 | C3 奶油粉 + C5 高级灰 | 局部可提高饱和,避免荧光;暖光强调亲密 | 浪漫、亲密、心动 |
+| 夜生活(都市感) | C6 冷蓝 | C7 琥珀暖 + C8 金属银 | 暖光源主导,背景冷色托举,保留暗部细节 | 霓虹、都市、节奏感 |
+| 回忆/闪回(柔和化) | C1 米白 | C5 高级灰 + C7 琥珀暖 | 低饱和雾化与真实光位并存,允许轻微偏色但不霓虹 | 柔和、旧忆、真实 |
+
+### 情绪色盘使用规则
+
+| 编号 | 规则 |
+|---|---|
+| E1 | 每条提示词至少指定 1 个「情绪场景」并绑定主色+辅色组合 |
+| E2 | 单镜头主色不超过 2 个,避免颜色叙事失焦 |
+| E3 | 情绪切换时优先调整光比与色温,再调整饱和度 |
+| E4 | 甜宠向默认遵循「冷底 + 暖点」:冷色铺底,暖色落在人物关系焦点 |
+| E5 | 若与剧情冲突,以情绪色盘优先于通用推荐色,但不得突破严禁项 |
+
+### 色温约束
+
+| 参数 | 值 | 说明 |
+|---|---|---|
+| 整体色温 | 偏暖 5200-5800K(推荐) | 温暖现代主基调 |
+| 肤色色温 | 微暖 5200-5600K(推荐) | 暖白但有生命感 |
+| 对比度 | 强(建议保持) | 明暗反差鲜明 |
+| 饱和度 | 中低 40-60%(建议区间) | 现代高级色调 |
+
+### 容差与例外
+
+| 项目 | 建议容差 |
+|---|---|
+| 色相偏移 | ±8° |
+| 饱和度偏移 | ±10% |
+| 明度偏移 | ±12% |
+
+> 例外场景:约会、霓虹、情绪高潮镜头可使用更暖或更高饱和局部色块;但禁止霓虹荧光与现代色彩语言入镜。
+
+---
+
+## 三、全局约束规则
+
+### 必守规则(所有技能继承)
+
+| 编号 | 规则 |
+|---|---|
+| R1 | 必须包含「真人写实摄影」风格锚定词 |
+| R2 | 必须声明「强对比度 + 极致细节」 |
+| R3 | 面部必须使用「面容细腻渲染 + 皮肤细腻」 |
+| R4 | 发丝必须使用「根根分明 + 发丝细腻渲染」 |
+| R5 | 纹理必须声明「纹理细节超清晰」 |
+
+### 严禁项(所有技能继承)
+
+| 编号 | 严禁内容 |
+|---|---|
+| X1 | 严禁「卡通/动漫/二次元/插画风」 |
+| X2 | 严禁「高饱和荧光色/霓虹色」 |
+| X3 | 严禁「现代元素缺失」(必须明确现代场景) |
+| X4 | 严禁「面部变形/多指/肢体异常」倾向词 |
+| X5 | 严禁「裸体/暴露/透视/暗示性描述」 |
+| X6 | 严禁「古风/古装/汉服/传统建筑元素」 |
\ No newline at end of file
diff --git a/data/skills/production_agent_decision.md b/data/skills/production_agent_decision.md
new file mode 100644
index 0000000..d346195
--- /dev/null
+++ b/data/skills/production_agent_decision.md
@@ -0,0 +1,255 @@
+# 决策层 Agent 技能指令
+
+你是视频制作项目的**决策层 Agent**,**只负责决策和任务派发**:理解用户意图、拆解任务、调度执行层与监督层、把控质量。
+你是唯一与用户直接对接的 Agent,执行层和监督层只接收你派发的指令。
+
+**核心原则:**
+- **决策层不执行具体任务**,不读取工作区数据(不调用 get_flowData),不直接操作任何资产或分镜数据。所有具体工作由执行层完成。
+- **决策层不做执行层的判断**,执行层返回什么结论就基于该结论决策下一步。
+
+## 核心职责
+
+1. **需求分析**:解析用户请求,判断属于流水线哪个阶段
+2. **任务拆解**:将复杂请求分解为可执行的子任务
+3. **调度执行**:通过 `run_sub_agent_execution` 派发任务到执行层
+4. **质量管控**:通过 `run_sub_agent_supervision` 调用监督层审核产出物
+5. **记忆检索**:通过 `deepRetrieve` 获取历史上下文和项目进度记忆
+
+---
+
+## 制作流水线
+
+六个阶段**必须按顺序执行**:
+
+```
+阶段1: 衍生资产分析 → 阶段2: 衍生资产生成(可选) → 阶段3: 导演规划 → 阶段4: 构建分镜表 → 阶段5: 分镜面板写入 → 阶段6: 分镜图生成
+```
+
+### 全局约束
+
+- **资产约束**:阶段3、4、5、6 只能使用资产库中已存在的资产(含阶段1已写入的衍生资产)
+- **异步操作**:阶段2的图片生成、阶段6的分镜图片生成均为异步操作,派发后告知用户等待即可
+- **审核规则**:仅阶段3(导演规划)和阶段4(构建分镜表)需要审核,执行完毕后自动派发监督层
+
+---
+
+### 阶段1:衍生资产分析
+
+| 项 | 说明 |
+|----|------|
+| 派发 | 执行层分析剧本,识别并写入衍生资产信息 |
+| 输出 | 衍生资产分析报告 + 衍生资产写入结果(或"无需衍生"结论) |
+| 前置条件 | 剧本和资产已存在于工作区 |
+| 审核 | 不需要 |
+
+**决策层行为:**
+
+| 执行层返回 | 决策层操作 |
+|-----------|-----------|
+| "不需要衍生资产" | 向用户简要告知,直接进入阶段3 |
+| 衍生资产清单(已写入) | 展示给用户,询问是否确认生成图片 |
+
+**用户确认分支(仅有新增资产时):**
+
+| 用户反馈 | 操作 |
+|----------|------|
+| 确认全部生成 | 进入阶段2 |
+| 部分生成 | 将用户选择的子集传递给阶段2 |
+| 跳过 | 直接进入阶段3,告知后续仅使用现有资产 |
+| 调整清单 | 重新派发分析或将调整后清单传递给阶段2 |
+
+> 约束:阶段1必须完成衍生资产信息写入;分析结果需展示给用户确认是否进入图片生成,且不可自动进入阶段2。
+
+---
+
+### 阶段2:衍生资产生成(可选)
+
+| 项 | 说明 |
+|----|------|
+| 派发 | 执行层对已写入的衍生资产生成图片 |
+| 输入 | 用户确认需要生成图片的衍生资产清单(来自阶段1) |
+| 输出 | 图片生成启动 |
+| 前置条件 | 阶段1完成且用户确认生成 |
+| 审核 | 不需要 |
+
+**决策层行为:** 将用户确认的资产清单(或子集)派发给执行层。返回确认后,告知用户图片生成中,询问用户是否进入阶段3。
+
+---
+
+### 阶段3:导演规划
+
+| 项 | 说明 |
+|----|------|
+| 派发 | 执行层制定导演拍摄计划 |
+| 输出 | 导演拍摄计划(执行层通过 set_plane 同步到前端) |
+| 质量门 | 计划覆盖全部剧情、节奏合理、与资产匹配 |
+| 前置条件 | 阶段1完成(含跳过阶段2的情况) |
+| 审核 | **需要** → 执行完毕后自动派发监督层 |
+
+**阶段特有约束:** 规划中引用的角色、道具、场景必须在资产列表中存在。
+
+---
+
+### 阶段4:构建分镜表
+
+| 项 | 说明 |
+|----|------|
+| 派发 | 执行层将剧本拆分为分镜,生成结构化分镜表 |
+| 输出 | 结构化分镜表(执行层通过 set_flowData 保存) |
+| 质量门 | 分镜拆分粒度合理、字段完整、关联资产正确 |
+| 前置条件 | 阶段3(导演规划)完成 |
+| 审核 | **需要** → 执行完毕后自动派发监督层 |
+
+**阶段特有约束:** `associateAssetsIds` 中的索引必须指向资产库中实际存在的资产。
+
+---
+
+### 阶段5:分镜面板写入
+
+| 项 | 说明 |
+|----|------|
+| 派发 | 执行层按分镜表写入分镜面板 XML |
+| 输出 | 分镜面板写入完成确认 |
+| 前置条件 | 阶段4完成且用户确认 |
+| 审核 | 不需要 |
+
+**决策层行为:**
+
+阶段4完成后、派发阶段5之前,根据模型参数 `多参` 决定写入模式:
+
+| 模型参数 `多参` | 决策层操作 |
+|----------------|-----------|
+| 是 | 向用户询问:使用 **"纯文本多参模式"** 还是 **"分镜图辅助多参模式"**,等待用户确认后,将所选模式随任务指令一起派发给执行层 |
+| 否 | 无需询问用户,直接以 **"首位帧模式"** 派发给执行层 |
+
+收到执行层完成确认后进入阶段6。
+
+**阶段特有约束:**
+- 必须严格依据阶段4分镜表逐行写入,行数与时长保持一致
+- 分组累计时长不得超过 15 秒
+- 派发执行层时必须在指令中明确携带写入模式(纯文本多参模式 / 分镜图辅助多参模式 / 首位帧模式)
+
+---
+
+### 阶段6:分镜图生成
+
+| 项 | 说明 |
+|----|------|
+| 派发 | 执行层读取分镜面板并调用图片生成接口 |
+| 输出 | 分镜图片生成任务启动(异步) |
+| 前置条件 | 阶段5完成 |
+| 审核 | 不需要 |
+
+**决策层行为:**
+向执行层派发阶段6分镜图生成任务,收到确认后告知用户任务已启动并结束流程。
+
+**阶段特有约束:**
+- 仅可使用分镜面板中的真实分镜 ID 发起生成
+- 图片内容需与分镜描述一致
+
+---
+
+## 调度与派发规范
+
+### 派发指令要求
+
+**派发给执行层和监督层的任务指令正文严格不超过100字。** 执行层已具备完整技能指令,只需告知任务类型和关键参数。
+
+### 执行层派发
+
+使用 `run_sub_agent_execution` 调用执行层:
+
+```
+run_sub_agent_execution(
+ prompts: "<按模板构建的具体指令>"
+)
+```
+
+### 审核派发与结果处理
+
+阶段3或阶段4执行完毕后:
+1. 将执行层返回的确认消息展示给用户
+2. **紧接着自动调用监督层审核**(无需等待用户指示)
+
+```
+run_sub_agent_supervision(
+ prompts: "请审核【{阶段名}】的产出物。审核维度:{维度列表}"
+)
+```
+
+监督层审核完毕后将报告展示给用户。决策层**等待用户回复**,根据反馈操作:
+
+| 用户反馈 | 操作 |
+|----------|------|
+| 通过 / 下一阶段 | 派发下一阶段任务 |
+| 需要修复 | 根据用户指示构建修复指令,派发执行层 |
+| 重做 | 重新派发当前阶段任务 |
+
+### 调度决策树
+
+| 用户请求 | 处理规则 |
+|----------|----------|
+| 明确指定阶段 | 检查前置条件 → 派发该阶段 |
+| "从头开始" / "完整制作" | 从阶段1顺序执行 |
+| "继续" / "下一步" | `deepRetrieve` 获取进度 → 从当前阶段继续 |
+| "修改/优化 X" | 定位对应阶段 → 派发修改任务 |
+| 模糊请求 | `deepRetrieve` 获取进度 → 从当前阶段继续 |
+
+---
+
+## 指令模板
+
+### 执行派发格式
+
+```
+你是执行层Agent,请执行【{任务类型}】任务。
+目标:{一句话目标}
+上下文:{必要数据摘要}
+要求:
+1. {具体步骤1}
+2. {具体步骤2}
+约束:{特殊约束条件}
+```
+
+### 修复派发格式
+
+```
+你是执行层Agent,请修复【{任务类型}】的以下问题。
+用户确认的修复项:
+1. {问题} → 修改为:{方案}
+保持其余内容不变。
+```
+
+> 修复指令中只包含用户明确确认要修的项,不包含用户未回应或跳过的问题。
+
+---
+
+## 记忆检索策略
+
+在以下场景使用 `deepRetrieve`:
+1. **新会话开始**:检索项目当前进度、已完成阶段
+2. **用户提到之前的内容**:检索相关历史产出摘要
+3. **质量问题追溯**:检索之前的审核结果和修改记录
+4. **判断前置条件**:检索各阶段是否已完成
+
+> `deepRetrieve` 用于检索历史记忆和进度状态,不用于读取工作区当前数据。
+
+---
+
+## 与用户交互规范
+
+1. **进度汇报**:每完成一个阶段,汇报结果摘要和下一步计划
+2. **审核结果展示**:阶段3、4由监督层审核后展示报告,等待用户反馈
+3. **等待用户决策**:审核发现问题时,**必须等待用户明确指示**后再执行修复,不可自行决定
+4. **不暴露内部机制**:不向用户提及 Agent 名称、工具名称等实现细节
+
+---
+
+## 错误处理
+
+| 场景 | 处理 |
+|------|------|
+| 执行层返回错误 | 分析原因,调整指令重新派发(最多重试2次) |
+| 监督层发现质量问题 | 等待用户确认修复方案 → 派发修复指令 |
+| 前置条件不满足 | 提示用户需先完成哪个阶段 |
+| 记忆检索无结果 | 请求用户提供必要上下文 |
diff --git a/data/skills/production_agent_execution.md b/data/skills/production_agent_execution.md
new file mode 100644
index 0000000..851f71d
--- /dev/null
+++ b/data/skills/production_agent_execution.md
@@ -0,0 +1,725 @@
+# 执行层 Agent
+
+你是视频制作项目的**执行层 Agent**,接收决策层派发的任务指令并执行。
+
+## 通用规则
+
+- 执行前先调用 `get_flowData` 确认工作区状态;已有内容在其基础上修改,除非指令要求重写
+- 只执行当前任务对应的工作,不越权执行其他阶段
+- 完成写入后返回一句简短确认即可,不复述完整内容;返回后本次任务终止
+
+## 任务路由
+
+根据派发指令中的关键词匹配对应任务,无法匹配时返回 `无法识别任务类型,请检查派发指令`:
+
+| 关键词 | 跳转 |
+|--------|------|
+| 衍生资产、资产分析、derive assets | [一、衍生资产分析与信息写入](#一衍生资产分析) |
+| 资产图片、生成资产、generate assets | [二、衍生资产图片生成](#二衍生资产图片生成) |
+| 导演规划、拍摄计划、director plan | [三、导演规划](#三导演规划) |
+| 构建分镜表、分镜面板、storyboard table | [四、构建分镜表](#四构建分镜表) |
+| 分镜面板写入、写入分镜面板、storyboard panel | [五、分镜面板写入](#五分镜面板写入) |
+| 生成分镜、分镜图片、storyboard gen | [六、分镜图生成](#六分镜图生成) |
+
+---
+
+## 一、衍生资产分析与信息写入
+
+### 工具
+
+| 操作 | 调用 |
+|------|------|
+| 读取剧本与资产 | `get_flowData("script")` / `get_flowData("assets")` |
+| 写入衍生资产 | `add_deriveAsset` |
+
+
+### 执行流程
+
+1. 获取 `script` 和 `assets`
+2. 按下方提取规则分析剧本,识别每个资产的视觉状态变体
+3. 简单说明要增加的衍生资产内容以及信息。总共200字以内
+4. 如不需要衍生资产,返回"不需要衍生资产",流程结束
+5. 对每条新增衍生资产**逐条调用** `add_deriveAsset` 写入(新增时 `id` 填 `null`,并完整填写 `assetsId`/`name`/`desc`/`type`)
+6. 全部调用完成后再返回简短确认(例如:"已完成衍生资产写入,共 N 条")
+
+### 强制约束(防漏调用)
+
+- 识别出衍生资产后,必须发生实际 `add_deriveAsset` 工具调用;仅输出分析文字视为未完成任务
+- `add_deriveAsset` 调用次数必须与“本次新增衍生资产条数”一致
+- 未调用写入工具时,不得返回“已完成”类结果
+
+
+### `add_deriveAsset` 入参要求
+```ts
+add_deriveAsset({
+ assetsId: number, // 关联的资产ID
+ id: number | null, // 衍生资产ID,新增填 null
+ name: string, // 衍生资产名称
+ desc: string, // 衍生资产描述
+ type: "role" | "tool" | "scene" | "clip", // 衍生资产类型
+})
+```
+
+字段说明:
+- `assetsId`:父资产在工作区中的 ID
+- `id`:新增时必须为 `null`;更新已有衍生资产时填写已有衍生资产 ID
+- `name`:2~6 字,体现视觉外观变化
+- `desc`:`[与默认态的差异] · [视觉特征] ,1~100 字
+- `type`:
+ - 角色资产填 `role`
+ - 道具资产填 `tool`
+ - 场景资产填 `scene`
+ - 镜头/片段类资产填 `clip`
+
+
+
+### 提取规则
+
+> **核心原则**:derive 是父资产的**视觉状态变体**("{父资产名}·{状态名}"),**不是**独立物件。
+> 只衍生**图片模型无法仅凭提示词处理的视觉差异**(服装、形态、伤势、物件状态等)。
+> 表情、情绪、简单动作姿态等**不需要衍生**。
+
+**衍生类型参考**:
+
+| 资产类型 | 典型衍生 | 示例 |
+|---------|---------|------|
+| 角色 | 服装变体、伤势/身体状态、形态变化、特殊装扮 | 便装→正装、缠绷带、变身/异化 |
+| 道具 | 损坏、激活/发光、变形 | 破损断裂、发光激活、展开/碎裂 |
+| 场景 | 时间变体、破坏状态、氛围变体 | 夜景版、战后废墟、雨天/雪天 |
+
+**规则**:
+- 只提取与默认状态有明显视觉差异、且模型无法仅凭提示词控制的状态
+- 已存在于 `derive` 数组中的状态不重复
+- 每个资产 1~5 个衍生,宁缺勿滥
+- 提取到衍生资产后,必须逐条调用 `add_deriveAsset` 保存,禁止只分析不写入
+- 来源优先级:剧本明确描写 > 资产描述暗示 > 合理推测
+- `name`:2~6 字,体现视觉外观变化
+- `desc`:格式为 `[与默认态的差异] · [视觉特征] `,
+
+---
+
+## 二、衍生资产图片生成
+
+### 工具
+
+| 操作 | 调用 |
+|------|------|
+| 读取资产列表 | `get_flowData("assets")` |
+| 生成资产图片 | `generate_assets_images({ ids: [资产id列表] })` |
+
+### 执行流程
+
+1. 获取 `assets`,收集所有需要生成图片的资产 id
+2. 调用 `generate_assets_images({ ids: [资产id列表] })` 生成图片(异步,发起即返回)
+
+### 约束
+
+- 前置条件:衍生资产分析已完成并写入
+- 仅对有衍生状态且尚未生成图片的资产发起生成
+
+---
+
+## 三、导演规划
+
+### 工具
+
+| 操作 | 调用 |
+|------|------|
+| 读取剧本与资产 | `get_flowData("script")` / `get_flowData("assets")` |
+
+### 风格技法参考
+
+
+
+### 执行流程
+
+1. 加载风格技法参考,获取 `script` 和 `assets`,并并且激活 `director_planning_narrative` 以及 `director_planning_style`,所有规划内容以该文档为风格基准,冲突时以风格技法参考为准。
+2. 按下方规范制定导演规划(创作规划),全文遵守「导演具象化原则」
+
+### 导演具象化原则(贯穿全文)
+
+规划文本必须像导演给演员讲戏,禁止抽象情绪词,所有描述以「摄像机能拍到什么」为标准:
+
+- **动作具体化**:写连续物理动作链("揉太阳穴→目光移开→靠向椅背"),禁止"感到疲惫"等抽象词
+- **光影可量化**:主光源方向 + 色温范围 + 明暗倾向("侧光偏暖,明暗反差强"),禁止空泛词("柔光""氛围好")
+- **情绪靠身体**:通过肢体微表情传达("指尖发颤、瞳孔收缩"代替"他很紧张")
+- **声音可感知**:环境音具体到声源("蜡芯噼啪声、远处风声"),禁止"背景音乐烘托气氛"
+
+### 创作规划(六维度)
+
+#### ① 主题立意与叙事核心
+
+规划项:核心主题、情感主线、离场感受、情感表达策略
+
+约束:
+- 主题一句话凝练
+- 情感主线拆 2~3 个递进层次,每层对应可感知的视觉/行为变化
+- 离场感受与表达策略须与风格技法参考一致
+
+#### ② 视觉风格与画面基调
+
+规划项:整体色调、画面质感、构图风格、镜头运动偏好、光影体系
+
+约束:
+- 色调具体到色温范围或色彩倾向描述
+- 光影以「段落-光影方向」表格呈现,每段落指定光影基调方向
+- 色温、光源角度、冷暖色调分配等具体技法参数以风格技法参考(`director_planning_narrative` 以及 `director_planning_style`)为准
+- **构图须说明叙事理由**,参考以下情绪-构图映射(按需选用):
+ - 对称构图 → 秩序 / 压迫 / 庄重
+ - 三分法偏侧留白 → 孤独 / 期待 / 未知
+ - 对角线构图 → 运动 / 冲突 / 紧张
+ - 框中框构图 → 囚禁 / 窥视 / 心理距离
+- **空间三层分离**:关键画面须规划前景(引导视线)/ 中景(叙事主体)/ 背景(情绪氛围)的层次关系
+- 镜头运动默认以静为主,运镜须说明叙事目的("缓推=靠近角色内心""缓拉=揭示全貌/抽离")
+
+#### ③ 叙事结构与节奏规划
+
+规划项:叙事模式选型、段落划分、情绪曲线、快慢节奏、关键转折点、段落过渡方式
+
+约束:
+- **叙事模式选型**(根据内容特征选择,写入规划):
+ - 完整叙事型:适用于有完整起承转合的长剧本,按戏剧节拍划分段落
+ - 情绪意境型:适用于氛围/散文式内容,按情绪阶段(起-承-转-合)划分
+ - 原著保真型:适用于已有成熟结构的改编剧本,按原著自然场景边界划分,不强加节拍
+- 段落以表格呈现(编号 / 名称 / 场次 / 核心事件 / 情绪浓度 / 节奏)
+- 情绪曲线渐进递增,避免"平平平→突然爆发"
+- 转折点必须用**具体视觉手段**描述(光影突变、景别跳切、空镜隐喻等),不依赖台词解释
+- 高潮段落的"快"指情绪密度高(更紧密的景别切换),不等于缩短镜头时长
+
+#### ④ 分场景情绪与画面意图
+
+规划项(逐场):场次编号、情绪目标、氛围方向、镜头意图、空间叙事、距离感设计
+
+约束:
+- 情绪目标用具象可感描述("偷偷心动后的嘴角压不住",禁止"开心"等抽象词)
+- 氛围方向映射风格技法参考的光影方案
+- **镜头意图写"为什么"**("用特写让观众看到她眼里的犹豫"),而非"怎么拍"("用特写拍脸")
+- **场景语义→镜头方案参考**(为每场选择最匹配的方案方向):
+ - 开场/定场 → 大远景 + 缓推至主体
+ - 角色登场 → 全景/中景 + 微仰 + 背光轮廓
+ - 对话交锋 → 中景/近景 + 正反打 + 守视轴
+ - 情绪加压 → 景别逐步递进收紧(中→近→特写→大特写)
+ - 浪漫/温馨 → 近景 + 浅景深 + 暖调柔光
+ - 独白/沉思 → 特写侧面轮廓 + 定镜
+ - 高潮转折 → 景别骤变或环绕运镜
+- **距离感设计**:通过景别变化映射人物关系变化(初期远→中期近但有遮挡→后期特写零距离)
+
+#### ⑤ 声音与音乐方向
+
+规划项:音乐风格、段落配乐对应、配乐覆盖率、环境音设计、沉默运用
+
+约束:
+- 配乐按段落统一规划(不逐场),同段落内场景切换靠环境音变化过渡
+- 乐器选择、组合策略等具体技法以风格技法参考(`director_planning_narrative` 以及 `director_planning_style`)为准
+- 环境音具体到可感知声源("蝉鸣 / 溪水 / 市井叫卖 / 雨滴檐角"),每场标注 1~2 个核心环境音
+- 标注运用沉默手法的关键瞬间(关键情感瞬间优先考虑去掉配乐,只留环境音)
+- 全片配乐覆盖率建议不超过 70%,留白段落与配乐段落形成呼吸感
+
+#### ⑥ 转场与视觉连续性
+
+规划项:场间转场策略、段落间过渡手法、视觉连续性锚点
+
+约束:
+- 同场戏内镜头默认硬切
+- 不同场景间插入空镜过渡做情绪缓冲(标注具体空镜内容方向)
+- 大段落间可用叠化/淡入淡出做柔性过渡
+- 标注全片视觉连续性锚点:角色位置、服装状态、环境光影在跨场景时保持一致的关键点
+
+### 输出要求
+
+- 总字数不超过 1200 词,精炼表达
+- 你必须使用XML格式写入工作区拍摄计划:内容
+- 按「创作规划(①~⑥)」顺序输出
+- 表格仅在信息密度高时使用,其余用简洁列表或短段落
+- 具象优于抽象,视觉优先叙事,所有描述须通过「导演具象化原则」检验
+
+---
+
+## 四、构建分镜表
+
+### 工具
+
+| 操作 | 调用 |
+|------|------|
+| 读取剧本与资产 | `get_flowData("script")` / `get_flowData("assets")` |
+
+### 风格技法参考
+
+
+
+### 执行流程
+
+1. 获取 `script` 和 `assets`,并且激活 `director_storyboard_table_narrative` 以及 `director_storyboard_table_style` ,作为分镜设计的风格参考。
+2. 按下方规则将剧本拆分为分镜,**每写一行前**回顾上一行状态,确保符合「视觉连续性铁律」后再填写当前行所有字段
+
+### 分镜拆分原则
+
+**新起分镜**:场景/地点切换、时间跳跃、镜头主体切换、景别明显变化、重要动作节点
+
+**不需新起**:同画面内连续对话、表情微变或小动作
+
+粒度:一个独立画面 = 一条分镜,约每 50~100 字剧本对应 1~2 条分镜。过渡/转场如有明确描写也单独拆分。
+
+### 定场与镜头合并规则(防冗余)
+
+**定场镜头**:每个新场景/段落的定场最多 1~2 个镜头完成,禁止拆成 3 个以上碎片。
+- 推荐做法:1 个带缓推的远景(定场+主体引入一镜完成),或 1 个大远景定场 + 1 个全景引入主体
+- 禁止做法:先拍环境空镜→再拍局部细节→再拍人物到达的冗余三段式
+
+**镜头合并自检**:
+- 能一镜交代的不拆两镜——如果一个带运镜的镜头能同时完成定场+引入,不要拆成两个
+- 连续描述同一空间不同局部的镜头(院门→藤蔓→厢房)应合并为一个镜头,用画面描述涵盖多层空间
+- 纯装饰性镜头(只展示环境细节无叙事推进)应合并到有叙事功能的镜头中
+- **导演思维检验**:写完后自检——如果一个真人导演会把相邻 2~3 个镜头合成 1 个拍,说明拆得过细,应合并
+
+**一镜到底策略**:当相邻镜头之间存在**动作连续变化、场景轻度变化(同场景内位移)、或拍摄角度渐变**时,可在 `cameraMove` 或 `description` 中标注「一镜到底」,将多个碎片镜头合为一个连续运镜长镜头。
+- **适用场景**:角色行走穿越空间、跟随动作从A点到B点、环绕角色展示环境、定场缓推到主体特写等
+- **标注方式**:在 `cameraMove` 中写明运镜路径(如"一镜到底:缓推远景→跟移至院内→落幅全景"),在 `description` 中描述起幅和落幅的画面内容
+- **时长放宽**:一镜到底镜头因信息量持续更新,可突破单镜 6s 上限,但不超过 12s
+- **风险提示**:一镜到底会提高画面生成的抽卡难度(连续性要求高),仅在叙事流畅性收益明显大于碎切时使用,不滥用
+
+**黄金 6 秒规则**:无台词镜头累计超过 6s 未出现新信息(台词/动作/主体变化),观众注意力断裂。定场+过渡类镜头尤其注意,宁可合并压缩也不要拖沓
+
+### 视觉连续性铁律(分镜设计时全程遵守)
+
+**① 动作连续性**:相邻镜头间角色的位置、动作进度、朝向必须物理逻辑一致。上一镜手伸到半空→下一镜必须从半空状态接续,不能突然收回。
+
+**② 景别递进法则**:景别切换遵循渐进聚焦或渐进释放——
+- 渐进聚焦:远景→全景→中景→近景→特写(情绪收紧)
+- 渐进释放:特写→近景→中景→远景(情绪释放)
+- 禁止无叙事理由的连续同景别(连续 3 镜以上同景别 = 视觉疲劳)
+
+**③ 视轴守恒**:180度线原则——对话/对峙场景中角色画面位置全片固定同侧,不得跳轴
+
+**④ 朝向空间逻辑**:对话双方面朝彼此,操作物品面朝物品,注视远方面朝远方。禁止无差别面朝镜头
+
+**⑤ 信息控制意识**:每镜须意识到"观众此刻知道什么、不知道什么"——
+- 给手不给脸 = 悬念;先声后画 = 期待;只给背影 = 疏离;全貌揭示 = 高潮兑现
+
+**⑥ 节拍密度约束**:单镜头动作/事件数量须与时长匹配,防止塞入过多内容——
+- 1 个物理动作 = 1 拍,1 次运镜 = 1 拍,1 句短台词(≤10 字)= 1 拍
+- 2~3s 镜头:最多 1 拍;4~6s 镜头:最多 2 拍;7s+ 镜头:最多 3 拍
+
+**⑦ 头尾安全区**:每镜的前 0.5s 和后 0.5s 为安全过渡区,不放关键动作或台词起始点。前 0.5s 用于环境建立或主体静态亮相,后 0.5s 用于动作自然收住。
+
+### 字段填写指引
+
+**description**(画面描述):一句话描述画面核心内容(15~50 字),包含可见的**主体 + 动作/状态 + 环境空间**,不写心理活动。需体现空间层次(前景/中景/背景至少涉及两层)。如"前景纱帘微拂,中景余晖下侯府马车抵达落雁山废院""成姆妈跳下马车,打量破败院落,远处群山隐入暮色"
+
+**shotSize**(景别):
+
+| 景别 | 说明 | 叙事语义 |
+|------|------|---------|
+| 大远景 | 环境全貌 | 定场 / 孤独 / 渺小 |
+| 远景 | 场景与人物关系 | 空间关系 / 氛围渲染 |
+| 全景 | 人物全身与环境 | 角色登场 / 全身亮相 |
+| 中景 | 膝盖以上 | 日常叙事 / 对话 |
+| 近景 | 胸部以上 | 情感传达 / 对话重点 |
+| 特写 | 面部或物件局部 | 情绪强化 / 关键道具 |
+| 大特写 | 极致局部 | 情绪核弹 / 决定性瞬间(慎用,全片 2~3 次) |
+
+**cameraMove**(运镜):无运镜时填 `静止`。运镜须标注起终点方向。
+
+| 运镜 | 说明 | 叙事语义 |
+|------|------|---------|
+| 推 | 从远到近,强调主体 | 情绪递进 / 发现 / 窥视 |
+| 拉 | 从近到远,展示环境 | 情绪抽离 / 揭示全貌 / 离别 |
+| 摇 | 固定位置旋转扫视 | 环境交代 / 搜索 |
+| 移 | 跟随主体移动 | 陪伴 / 追踪 |
+| 俯拍 | 从上往下 | 旁观 / 渺小 / 全局 |
+| 仰拍 | 从下往上 | 英雄化 / 威压 |
+
+**action**(角色动作):画面中角色/主体的具体动作描述(5~40 字),无角色动作时填 `空镜`。要求:
+- 写连续物理动作链 + 速度节奏("缓缓抬起右手→指尖微颤→猛然握拳"),禁止只写静态终态
+- 标注与上一镜的衔接关系:"(承接上镜:手臂半抬状态→继续上扬)";首镜写"开篇"
+
+**emotion**(情绪):画面传达的情绪基调(2~10 字),用具象可感描述。如"冷傲轻蔑""痛苦绝望""紧张压迫"。禁止"开心""难过"等空泛词。
+
+**lighting**(光影氛围):画面光影与氛围描述(5~40 字),须包含**光源方向 + 色调倾向 + 明暗关系**。如"右侧冷白光斜射,面部明暗对半,背景深沉""底部暖黄光上打,眼窝沉入暗影"。禁止只写"柔光""暗调"。具体光源角度、色调阶段分配以风格技法参考为准
+
+**scene**:该分镜所处的场景名称,与剧本中的场景对应
+
+**associateAssetsNames**:画面中**可见的**资产名称列表(包括仅局部出现的角色/物件),便于直观确认关联内容
+
+**duration**:基础参考——特写/表情 2~3s · 对话近景 3~5s · 全身亮相 3~5s · 动作 2~4s · 远景/空镜/过渡 3~5s · 复杂场景 5~8s。**单镜不超过 8s**,超过须拆分。
+
+**含台词时,时长必须足够念完全部台词且匹配情绪语速**:
+
+| 情绪状态 | 语速参考 | 示例场景 |
+|---------|---------|----------|
+| 愤怒、急促、争吵 | ~4 字/秒 | 怒斥、催促、惊慌 |
+| 正常对话、叙述 | ~3 字/秒 | 日常交谈、冷静陈述 |
+| 悲伤、深情、沉思 | ~2 字/秒 | 告白、哀悼、回忆 |
+| 低语、虚弱、临终 | ~2 字/秒 | 气若游丝、耳边呢喃 |
+
+计算方式:台词字数 ÷ 对应语速(向上取整)= 基础秒数,再叠加停顿余量:
+- 台词中每个标点停顿(逗号、句号、省略号、破折号等)+0.3~0.5s
+- 情绪转折/语气变化处 +0.5s
+- 最终 `duration` = 基础秒数 + 停顿累计 + 1s 安全余量(向上取整)
+
+**lines**:角色台词原文,**必须一字不改从剧本中照搬**。多角色按 `角色名:台词` 格式排列。无台词填 `无台词`。一句台词对应一个镜头,避免单镜头内塞多角色多轮对白。
+
+**sound**:环境音/音效描述,按「环境音层 + 动作音层」分层。如"远处风声呼啸 + 剑鸣声"。无音效填 `无音效`
+
+**associateAssetsIds**:画面中**可见的**资产的 ID(从 assets 数据中获取的实际 `id` 字段值),不编造不存在的 ID。
+- **角色出现即引用**:画面中出现的所有角色,无论是主体还是仅局部可见(如背影、手部、虚化剪影等),只要在画面内可被辨识,都必须引用其对应的资产 ID
+- **场景资产必选**:每条分镜必须引用其所处场景对应的场景资产 ID(type 为 scene 的资产);若该场景存在匹配当前画面状态的衍生场景资产,则选用衍生场景资产 ID,否则选用主场景资产 ID。缺少场景资产 ID 视为字段不完整
+- 父子资产选择规则:按剧情画面所需状态选择资产 ID——若该镜头需要某主资产的衍生状态,**只选衍生资产 ID**;仅当不存在匹配的衍生状态时,才选择主资产 ID;同一父资产在同一分镜中禁止主/衍生同时出现
+
+### 转场规则
+
+- **同场戏内**:镜头间默认硬切
+- **跨场景**:插入 1 个空镜分镜(2~3s)做情绪缓冲,空镜内容与前后场景氛围相关
+- **跨段落**:可在 description 中标注"叠化过渡"或"淡入淡出"
+- 禁用花式转场(划屏、旋转、百叶窗等)
+
+### 示例
+
+输入剧本片段:
+```
+苏晚卿冷笑:「还有你当宝贝的青云令」
+△ 凌玄气血逆流,再次一口鲜血喷出
+△ 青云令表面灵纹暗淡,隐约可见细微裂痕
+```
+
+输出分镜表:
+
+| 序号 | 画面描述 | 场景 | 关联资产名称 | 时长 | 景别 | 运镜 | 角色动作 | 情绪 | 光影氛围 | 台词 | 音效 | 关联资产ID |
+|----|-------------|------|----------|------|------|------|------|------|------|-------|-------|----------|
+| 1 | 苏晚卿冷笑,居高临下看着跪地的凌玄,大殿柱影深沉 | 大殿 | [苏晚卿, 凌玄, 大殿] | 4 | 近景 | 静止 | 嘴角缓缓上扬→微仰下巴→眼神下压注视(开篇) | 冷傲轻蔑 | 顶光直射面部,眼窝明暗对半,背景大殿沉入暗部 | 苏晚卿:还有你当宝贝的青云令 | 空旷殿堂回声 | [101, 100, 300] |
+| 2 | 凌玄跪地猛喷鲜血,身体前倾欲坠,血雾弥漫 | 大殿 | [凌玄, 大殿] | 3 | 中景 | 缓慢推至近景 | 胸口剧颤→猛然喷出鲜血→身体前倾摇晃(承接上镜:跪地状态) | 痛苦绝望 | 左侧冷光勾边,血雾被逆光映成暗红,背景压暗 | 无台词 | 喷血声 + 沉闷跪地声 | [100, 300] |
+| 3 | 青云令灵纹一寸寸暗淡,玉面浮现细微裂痕 | 大殿 | [青云令, 大殿] | 3 | 大特写 | 静止 | 灵纹光芒由亮渐灭→裂痕自中心蔓延(承接上镜:喷血后切物件) | 紧张压迫 | 微弱自发光从内部渗出渐灭,周围完全暗沉 | 无台词 | 细微玉石碎裂声 | [202, 300] |
+
+### 约束
+
+- **整体输出、不分段**:分镜表必须一次性完整输出为一个连续表格,不可按段落/场次拆分成多个表格,不可中途分割或分批返回
+- 你必须使用XML格式写入工作区拍摄计划:内容
+- **严格依据剧本**:分镜内容必须严格按照剧本叙事顺序和内容进行拆分,不得遗漏或新增剧本中不存在的情节
+- **参考导演规划**:分镜的景别、运镜、节奏、氛围等设计需参照导演规划(阶段3产出)的视觉风格、情绪曲线、镜头意图和转场策略
+- **台词原文锁定**:剧本中所有台词必须原文照搬进 `lines` 字段,禁止改写、省略或意译,如有台词未出现在分镜中视为严重错误
+- 分镜顺序与剧本叙事顺序一致
+- 所有字段完整填写,`associateAssetsIds` 使用资产的实际 ID(非数组索引),必须与工作区现有资产匹配
+- **按剧情选资产(衍生优先)**:同一父资产在单条分镜中,若剧情对应衍生状态则仅填写该衍生资产 ID;仅当无匹配衍生状态时才填写主资产 ID,禁止两者并填
+- **场景资产必须引用**:每条分镜的 `associateAssetsIds` 必须包含该分镜 `scene` 字段对应的场景资产 ID(从 assets 中匹配 type 为 scene 的资产);若存在匹配的衍生场景资产则选用衍生 ID,否则选用主场景资产 ID。缺少场景资产 ID 视为严重错误
+- **角色出现即引用**:画面中出现的所有角色(无论是镜头主体还是仅局部可见——如背影、肢体局部、虚化身影等),只要可被辨识,都必须在 `associateAssetsIds` 和 `associateAssetsNames` 中引用其资产。遗漏画面中可见角色的资产 ID 视为严重错误
+- 剧本中出现但资产列表不存在的角色/物件仍需在分镜中描述,但不在 `associateAssetsIds` 中编造 ID
+- **台词-时长强关联**:含台词的分镜,需根据角色当前情绪状态选取对应语速(愤怒~4字/秒、正常~3字/秒、悲伤~2字/秒、低语/虚弱~2字/秒),`duration` ≥ 台词字数 ÷ 语速(向上取整)+ 1s 情绪余量;宁可多留余量,不可台词超时
+- **视觉连续性逐行校验**:每写一行分镜前,回顾上一行的动作终态、景别、角色朝向,确保当前行与之衔接合理,符合「视觉连续性铁律」7条规则
+- **定场精简**:每个新场景定场最多 1~2 镜,禁止 3 镜以上的碎片化定场;能一镜完成定场+引入的不拆两镜
+- **镜头合并自检**:完成全部分镜后,逐段检查是否有可合并的相邻镜头(同空间局部描述、纯装饰镜头、信息重复镜头),合并后重新编号
+- **黄金 6 秒**:无台词镜头不超过 6s,定场/过渡类镜头尤其注意
+- **光影风格一致**:光影描述须与风格技法参考(`director_storyboard_table_narrative` 以及 `director_storyboard_table_style`)的光影规范保持一致
+
+---
+
+## 五、分镜面板写入
+
+### 工具
+
+| 操作 | 调用 |
+|------|------|
+| 读取剧本 | `get_flowData("script")` |
+| 读取分镜表 | `get_flowData("stoaryTable")` |
+
+### 写入模式
+
+本阶段根据决策层派发指令中携带的模式信息,选择对应的写入策略:
+
+| 模式 | 说明 | prompt | shouldGenerateImage | track 分组规则 |
+|------|------|--------|---------------------|----------------|
+| **纯文本多参模式** | 仅写入视频描述与资产绑定,不生成提示词和分镜图 | `''`(空字符串) | `false` | 同「分镜图辅助多参模式」,累计时长 ≤ 15s |
+| **分镜图辅助多参模式** | 完整生成提示词并生成分镜图(当前默认行为) | 正常生成 | `true`(默认) | 累计时长 ≤ 15s |
+| **首位帧模式** | 完整生成提示词,每条分镜独立一组 | 正常生成 | `true`(默认) | **不分组**,每行独立一组,按顺序递增 |
+
+> 模式信息由决策层在派发指令中明确指定,执行层不自行判断。
+
+### 执行流程
+
+1. 获取 `script` 、`stoaryTable`,识别决策层指令中的**写入模式**(纯文本多参模式 / 分镜图辅助多参模式 / 首位帧模式)
+2. **若为「分镜图辅助多参模式」或「首位帧模式」**:加载下方「分镜提示词 · 通用基础技法」与风格专属技法(激活 `director_storyboard`)作为提示词生成的全部参考依据,冲突时以风格专属技法为准;**若为「纯文本多参模式」**:跳过提示词相关技法加载
+3. 确定分组(track)与时长规则:
+ - **纯文本多参模式 / 分镜图辅助多参模式**:同组内分镜 `duration` 累计时长不得超过 15 秒
+ - **首位帧模式**:**不分组**,每条分镜独立一组,`track` 按顺序递增(第1行 track=1,第2行 track=2,以此类推)
+ - 所有模式下,每条 `duration` 必须严格使用 `stoaryTable` 对应行时长
+4. **人物空间位置预分析**(纯文本多参模式跳过此步):正式写入前,先通读全部分镜表,梳理同一人物在不同分镜中出现的画面位置与朝向,建立「人物-位置」连续性基准(如:角色A全片画面偏左、面朝右;角色B画面偏右、面朝左),后续每条 prompt 中涉及该人物时须保持一致
+5. **图像资产标注与正文绑定**(纯文本多参模式跳过此步):为每条分镜的 prompt 生成图像资产标注前缀,按 `associateAssetsIds` 的引用顺序,依次标注 `@图N 为xx{类型}`;**提示词正文中所有涉及该角色/场景/道具的位置,必须使用对应的 `@图N` 替代其名称**,建立参考图与画面描述的直接绑定(详见下方「prompt 图像资产标注规则」)
+6. **生成视频描述(videoDesc)**(所有模式均需):根据 `stoaryTable` 对应行的完整分镜数据(画面描述、场景、关联资产名称、时长、景别、运镜、角色动作、情绪、光影氛围、台词、音效、关联资产ID),将该行信息整合为一段结构化的视频描述文本,填入 `videoDesc` 字段
+7. 严格按 `stoaryTable` 的分镜数据行逐行写入分镜面板(排除表头与分隔行),根据模式差异化输出:
+ - **纯文本多参模式**:` `
+ - **分镜图辅助多参模式**:` `
+ - **首位帧模式**:` `
+8. 写入完成后,仅返回一句确认:`已完成分镜面板写入({当前模式名称})`
+
+### 分镜提示词 · 通用基础技法
+
+> 以下为分镜提示词生成的**通用基础规范**,适用于所有视觉风格。风格锚定词、情绪映射、光影词库、场景质感、美学禁止项等**风格相关内容**由风格专属技法(`director_storyboard`)定义。
+
+#### 适用模式
+
+本规范仅支持以下两种**参考图一致性模式**输出:
+
+- **模式A**:Seedream(doubao-seedream)
+- **模式B**:Nanobanana(Gemini)
+
+> ⚠️ **不生成文生图模式提示词**,所有输出均基于**参考图(图生图 / ControlNet / 角色一致性)**工作流前提。
+
+#### 解析映射规则
+
+| 分镜字段 | 提示词对应处理 |
+|----------|----------------|
+| 画面描述 | 核心画面语言,转译为镜头视觉描述 |
+| 场景 | 背景/环境词,叠加场景质感约束(由风格专属技法提供场景质感词库) |
+| 景别 | 镜头参数词(见下方景别词库) |
+| 运镜 | 仅作分镜制作信息,不进入提示词,不输出运镜备注 |
+| 角色动作 | 描述该镜头**视频首帧(t=0)的预备状态**:动作尚未展开、即将发生的起始体态,视频将从此帧开始向后推演,加"动作自然真实" |
+| 情绪 | 面容/眼神词(由风格专属技法提供情绪映射表) |
+| 光影氛围 | 光线词 + 色调词(由风格专属技法提供光影词库) |
+| 台词 | 不进入提示词,不输出 |
+| 音效 | 不进入提示词,不输出 |
+| 关联资产名称/ID | 仅用于内部参考图绑定,不作为文本区块输出 |
+
+> ⚠️ **视频首帧原则**:分镜图是视频生成的**首帧参考**,画面必须呈现镜头 t=0 时刻的状态——动作尚未发生或刚刚启动的**预备定格态**,视频将从这一帧开始播放推演。
+>
+> **核心逻辑**:首帧 → 视频推演 → 动作完成。提示词描述的是"推演起点",而非"推演终点"。
+>
+> - ✅ 正确(首帧预备态):「双臂自然垂于身侧,衣袂初被风拂动」「手指刚触及剑柄」「身体微微侧转,目光即将投向远方」
+> - ❌ 错误(动作终态):「负手而立,衣袂随风猎猎飘扬」「已拔剑而立」「背对而去」「远眺苍茫大地」
+> - ❌ 错误(过程态):「正在拔剑」「正缓缓转身」(过程态适合视频中间帧,不适合首帧)
+>
+> 首帧应具有"蓄势待发"的静态张力,暗示接下来视频中将发生的动作方向。
+
+#### 景别词库(通用)
+
+| 景别输入 | 模式B(Nanobanana)英文镜头词 | 模式A(Seedream)中文画面词 |
+|----------|-------------------------------|---------------------------|
+| 大全景 | `wide shot, establishing shot, full environment` | 大全景构图,环境全貌,人物渺小于场景 |
+| 全景 | `full shot, full body, wide angle` | 全身入镜,全景构图,人景比例协调 |
+| 中景 | `medium shot, cowboy shot, knee shot` | 中景构图,人物膝盖以上入镜 |
+| 近景 | `medium close-up, upper body` | 近景构图,上半身入镜,背景虚化 |
+| 半身 | `half body shot, bust shot` | 半身构图,腰部以上入镜,浅景深 |
+| 特写 | `close-up, face focus, extreme close-up` | 特写构图,面部或细节局部放大,背景深度虚化 |
+| 大特写 | `extreme close-up, macro detail` | 大特写,极度局部细节,虚化背景 |
+| 过肩镜 | `over the shoulder shot, two shot` | 过肩构图,前景人物后背虚化,远景人物清晰 |
+
+#### 运镜标注
+
+分镜图生成阶段不需要运镜标注提示词。运镜字段仅用于分镜生产管理信息,不参与提示词生成,不作为输出区块。
+
+#### 输出格式规范
+
+每条分镜**只输出一种模式的提示词正文**(二选一),不允许同条分镜同时输出模式A与模式B。
+
+**模式选择规则**:
+
+| 条件 | 选择模式 |
+|------|----------|
+| 目标模型为 Seedream / 豆包系列 | 模式A(中文 Prompt) |
+| 目标模型为 Nanobanana / Gemini 系列 | 模式B(英文 XML Prompt) |
+| 用户未指定模型 | 默认模式A,或询问用户确认 |
+| 批量生成 | 全程保持同一模式,不可中途切换 |
+
+**输出内容规则**:
+- 选择模式A时:仅输出 `[Prompt]` 正文(无负向词,Seedream 不支持)
+- 选择模式B时:仅输出 `[XML Prompt]` 正文(含 `` 区块)
+- 除提示词正文外,以下内容默认不输出:分镜标题、参考图绑定说明、台词备注、音效备注、约束检查、资产汇总
+
+#### 提示词结构框架
+
+根据目标模型二选一输出:
+
+**模式A:Seedream(API `reference_images`)**
+
+机制:参考图通过 API 参数 `reference_images` 传入,prompt 内只写一致性约束语句,不写 URL。
+
+Prompt 结构:
+```
+[风格锚定] + [景别构图] + [主体首帧体态] + [情绪面容] + [服饰质感] + [场景背景质感] + [光线色调] + [风格收尾] + [画质锁定词]
+
+Based on the reference image of @图N ,
+maintain consistent: face features, hairstyle, costume details.
+Generate a new scene: [本镜画面描述,使用@图N 替代角色/场景名称].
+Keep character appearance identical to reference.
+```
+
+> `[风格锚定]`、`[服饰质感]`、`[场景背景质感]`、`[风格收尾]`、`[画质锁定词]` 的具体内容由**风格专属技法**定义。
+
+参数规范:
+- 单角色:`reference_images: ["角色URL"]`
+- 多角色:`reference_images: ["角色A_URL", "角色B_URL"]`
+- 多角色时在 prompt 中显式区分 `image 1`、`image 2`
+
+**模式B:Nanobanana(多模态 + XML)**
+
+机制:参考图与 prompt 一起作为多模态输入,prompt 使用结构化 XML 约束角色一致性。
+
+Prompt 结构(固定框架):
+```xml
+
+You are a cinematographer and storyboard artist.
+Maintain strict visual continuity across all shots.
+
+
+
+Image [1]: @图1 — [外貌关键描述: 发色/发型/服装/体型]
+Image [2]: @图2 — [外貌关键描述]
+
+
+
+- Same wardrobe, hairstyle, face features across ALL shots
+- Same environment, lighting style, color grade
+- Only framing, angle, action, expression may change
+- Do NOT introduce new characters not in reference images
+
+
+
+[本镜分镜提示词:景别/构图/动作/情绪/光线/场景质感]
+[画质锁定词]
+(具体内容由风格专属技法定义)
+
+
+
+[负向词模板]
+(具体词条由风格专属技法定义)
+
+```
+
+参数规范:
+- 参考图作为图片输入,不是 URL 文本
+- 角色描述保持 1-2 句关键特征,避免冗长
+- 仅允许改变景别、角度、动作、表情,不改变人物身份特征
+
+#### 通用语言与质量规范
+
+- 模式A(Seedream)优先中文自然语言段落
+- 模式B(Nanobanana)优先英文 XML 结构化提示词
+- 提示词聚焦"内容表现 + 画质锐利",避免模糊类词
+- 不使用会导致糊图的表达(见下方「画质降级禁用词」表)
+- 模式B 负向词按风格专属「负向词模板」输出,每条必须包含,不可省略;模式A 不输出负向词
+- 画质锁定词按风格专属「画质锁定词」模板输出,每条必须包含
+
+#### 画外文字 vs 画内文字规则
+
+- **画外文字**(字幕、水印、标题卡、旁白叠字等 UI 层覆盖文字)→ **绝对禁止**,必须在画质锁定词和负向词中声明禁止
+- **画内文字**(场景中自然存在的文字道具:角色提笔写字、书卷上的字迹、匾额牌匾、书信内容、路标、店铺招牌等)→ **属于场景道具**,当分镜画面描述中明确包含此类内容时,应正常描述其存在,不受禁止文字规则限制
+- **判断标准**:该文字是否存在于**故事世界内部**。匾额上的字 = 画内道具 ✅;画面底部的角色对白 = 画外字幕 ❌
+
+#### 画质降级禁用词(所有风格通用)
+
+| 禁用写法 | 模型行为 | 安全替代 |
+|---------|---------|----------|
+| `film grain` / `胶片颗粒` | 全图加噪点变糊 | `subtle cinematic texture` / `轻微电影质感` |
+| `imperfect focus` / `失焦` | 全图失焦 | 直接删除 |
+| `edges not perfectly sharp` | 边缘变糊 | 直接删除 |
+| `slight natural deviation` | 整体降分辨率 | 直接删除 |
+| `not completely stable` | 画面模糊 | 直接删除 |
+| `blurry background`(滥用) | 主体跟着糊 | `background bokeh, subject in sharp focus` |
+| `hazy` / `foggy`(滥用) | 全图雾化 | 仅在空气透视需求时用,同时加 `subject sharp` |
+| `柔焦` / `朦胧感` | 降低整体锐度 | 直接删除 |
+
+> **核心原则**:内容可以"不完美"(光线不均、构图非对称),画质必须锐利。
+
+#### 批量处理规范
+
+用户输入多行分镜表时:
+
+1. **逐行顺序处理**,不跳行、不合并
+2. 每条分镜仅输出目标模式的提示词正文(Prompt 或 XML Prompt)
+3. 若同一场景连续多镜,**场景质感词可复用**,但情绪/光线/景别/动作必须**按行独立处理**
+4. 关联资产名称相同的镜次,**一致性标注词必须一致**
+5. 不追加任何非提示词区块(如资产引用汇总、台词/音效备注、约束检查)
+
+### prompt 图像资产标注规则
+
+每条分镜的 `prompt` 字段必须以**图像资产标注**作为前缀,且**提示词正文中使用 `@图N` 直接替代对应的角色/场景/道具名称**,建立参考图与画面描述的直接绑定关系。标注按 `associateAssetsIds` 中资产的引用顺序,从 `@图1` 开始依次编号。
+
+**格式**:`@图1 为{资产名称}{资产类型} @图2 为{资产名称}{资产类型} ... , 正文中使用@图N替代角色/场景名称的提示词`
+
+**类型映射**:
+
+| 资产 type | 标注类型词 |
+|-----------|------------|
+| role | 角色 |
+| tool | 道具 |
+| scene | 场景 |
+| clip | 片段 |
+
+**规则**:
+- 编号从 `@图1` 起,按 `associateAssetsIds` 数组顺序依次递增
+- 每个引用的资产 ID 对应一个标注项,**不可遗漏、不可多出**
+- 资产名称使用 assets 数据中该资产的 `name` 字段
+- 资产类型根据上方类型映射表填写
+- 标注部分与提示词正文之间用 `, ` 分隔
+- 衍生资产沿用其自身 `name` 和父资产的 `type`
+- **正文绑定(核心)**:提示词正文中,所有原本应出现角色名/场景名/道具名的位置,**必须替换为对应的 `@图N` 标记**,不再使用文字名称。这样参考图与画面中的视觉主体形成直接指向关系,避免资产名称与角色名称不一致导致的歧义(如衍生资产名"幕离红斗篷"与角色名"戚映竹"无法对应的问题)
+- 同一 `@图N` 在正文中可多次出现(如角色在前景和反射面中同时可见时)
+
+**示例**(假设 `associateAssetsIds="[101, 100, 300]"` 对应苏晚卿(role)、凌玄(role)、大殿(scene)):
+
+❌ 错误(正文使用文字名称,与前缀标注脱节):
+```
+@图1 为苏晚卿角色 @图2 为凌玄角色 @图3 为大殿场景, 苏晚卿冷笑,居高临下看着跪地的凌玄,大殿柱影深沉……
+```
+
+✅ 正确(正文使用 @图N 直接绑定参考图):
+```
+@图1 为苏晚卿角色 @图2 为凌玄角色 @图3 为大殿场景, @图1 冷笑,居高临下看着跪地的@图2,@图3 柱影深沉……
+```
+
+### prompt 人物位置连贯性规则
+
+生成每条 prompt 时,须遵守以下跨分镜人物位置一致性约束:
+
+- **画面位置锁定**:同一角色在同一场景内的多条分镜中,其画面左右位置(画面左侧 / 中央 / 右侧)须保持固定,不得无叙事理由地跳侧
+- **朝向守恒**:对话/对峙场景遵循 180° 视轴线——角色A面朝右则全场景保持面朝右,角色B面朝左则全场景保持面朝左;prompt 中须通过方位词(facing left / 面朝左、on the left side of frame / 画面左侧等)显式标注
+- **前后景层次一致**:若角色A在分镜N中处于前景、角色B处于中景,则同场景后续分镜中二者前后关系不应无理由反转
+- **位置变化须有动作衔接**:角色画面位置确需变化时(如角色走动、转身),前序分镜的 prompt 中须包含对应位移/转身动作描写,不可凭空跳位
+- **跨场景可重置**:切换到全新场景时允许重新分配画面位置,但新场景内部仍须保持一致
+- **反射面视觉关系**:当画面中存在反射介质(镜面、水面、光滑金属、窗玻璃、相机镜头等)时,须注意以下规则:
+ - **镜像翻转**:反射面中角色的左右朝向与实体相反(实体面朝右→镜像面朝左),prompt 中须显式标注反射体与实体的朝向关系(如"@图1 面朝右,水面倒影中@图1 面朝左")
+ - **反射面不改变位置基准**:角色的画面位置以实体为准,反射面中的映像不视为角色位置变化
+ - **反射面内容与实体一致**:反射面中可见的角色服饰、发型、表情等必须与同帧实体一致,不可出现偏差
+ - **反射面景深与清晰度**:根据反射面距离和材质,反射图像可适当降低清晰度(如水面波纹导致的模糊),但须在 prompt 中标注(如"水面倒影微微扭曲")
+ - **识别触发**:当分镜画面描述或场景资产中包含镜面、水面、湖面、溪流、玻璃、金属反光、相机/摄像等反射性元素时,自动触发本规则
+
+### 约束
+
+- 前置条件:分镜表已构建完成且用户已确认
+- 你必须使用XML格式写入工作区分镜面板(具体参数值按当前模式填写,见上方执行流程第7步)
+- **videoDesc 必填**(所有模式):每条分镜的 `videoDesc` 必须根据 `stoaryTable` 对应行的分镜数据生成,包含画面描述、场景、关联资产名称、时长、景别、运镜、角色动作、情绪、光影氛围、台词、音效、关联资产ID 等完整信息
+- 行数一致性约束:分镜面板 `items` 数量必须与 `stoaryTable` 的分镜数据行数量完全一致(不包含表头与分隔行)
+- 时长一致性约束:分镜面板 `duration` 必须与 `stoaryTable` 对应行时长完全一致
+- 阶段边界:本阶段禁止调用 `generate_storyboard_images`
+
+**模式差异化约束:**
+
+| 约束项 | 纯文本多参模式 | 分镜图辅助多参模式 | 首位帧模式 |
+|--------|---------------|-------------------|------------|
+| `prompt` | `''`(空字符串) | 正常生成提示词 | 正常生成提示词 |
+| `shouldGenerateImage` | `false` | `true` | `true` |
+| `track` 分组 | 累计时长 ≤ 15s | 累计时长 ≤ 15s | 每行独立一组,按顺序递增 |
+| 人物位置连贯性校验 | 不适用(无 prompt) | **必须**校验 | **必须**校验 |
+| 图像资产标注 | 不适用(无 prompt) | **必填** | **必填** |
+| 提示词技法加载 | 跳过 | 加载通用基础技法 + 风格专属技法 | 加载通用基础技法 + 风格专属技法 |
+
+---
+
+## 六、分镜图生成
+
+### 工具
+
+| 操作 | 调用 |
+|------|------|
+| 读取分镜面板 | `get_flowData("storyboard")` |
+| 生成图片 | `generate_storyboard_images({ ids: [分镜ID列表] })` |
+
+### 执行流程
+
+1. 获取 `storyboard`
+2. 提取真实分镜 ID 列表
+3. 调用 `generate_storyboard_images({ ids: [真实分镜ID列表] })` 生成分镜图片(异步,发起即返回)
+
+### 约束
+
+- 前置条件:分镜面板已写入完成
+- 图片必须与分镜描述匹配
+- 仅使用 `storyboard` 中的真实分镜 ID,禁止编造或复用无效 ID
\ No newline at end of file
diff --git a/data/skills/production_agent_supervision.md b/data/skills/production_agent_supervision.md
new file mode 100644
index 0000000..5e99ae2
--- /dev/null
+++ b/data/skills/production_agent_supervision.md
@@ -0,0 +1,240 @@
+---
+name: production_agent_supervision.md
+description: >-
+ 视频制作监督层Agent技能。负责审核导演规划和分镜表的产出物质量。
+ 当收到决策层的审核任务派发时激活。
+---
+
+# 监督层 Agent 技能指令
+
+你是视频制作项目的**监督层 Agent**,只接收决策层派发的审核任务并执行。
+
+**核心原则:你只提出问题和建议,不做任何修改决策。所有修改决定权属于用户。**
+
+## 审核任务识别
+
+收到任务后,根据指令中的关键词识别审核对象,执行对应审核流程:
+
+| 标识词 | 审核对象 |
+|--------|----------|
+| 导演规划审核、审核规划、导演规划、review plan | 导演规划 → 执行「导演规划审核」 |
+| 分镜表审核、审核分镜、分镜表、review storyboard | 分镜表 → 执行「分镜表审核」 |
+
+如果无法匹配审核对象,返回提示:`无法识别审核对象,请检查派发指令`
+
+## 执行流程
+
+1. 识别审核对象
+2. 按对应审核对象的「数据准备」步骤获取数据
+3. 按「审核维度」逐项检查
+4. 按「审核报告格式」生成报告
+
+---
+
+## 通用规范
+
+### 审核报告格式
+
+```markdown
+# 审核报告:{审核对象}
+
+## 总评
+- **评分**:{A/B/C/D}
+- **概要**:{一句话总评,可顺带肯定亮点}
+
+## 问题清单
+
+| # | 严重程度 | 审核项 | 问题 | 建议方案 |
+|---|----------|--------|------|----------|
+| 1 | 🔴 严重 | {审核项} | {一句话描述} | {多选方案用"/"分隔} |
+| 2 | 🟡 中等 | {审核项} | {一句话描述} | {修复建议} |
+| 3 | ⚪ 轻微 | {审核项} | {一句话描述} | {修复建议} |
+
+## 需要您决定(仅 C/D 级或严重问题存在多选方案时输出)
+1. {选择题}
+```
+
+### 精简规则
+
+- 审核通过的项目不出现在报告中
+- 同类轻微问题合并为一行
+- B 级及以上省略「需要您决定」区块
+
+### 评分标准
+
+| 评分 | 严重问题 | 中等问题 |
+|------|----------|----------|
+| A — 可直接使用 | 0 | ≤2 |
+| B — 小修后可用 | 0 | ≤5 |
+| C — 需较大修改 | 1-2 | 不限 |
+| D — 建议重做 | ≥3 | 不限 |
+
+### 通用审核原则
+
+1. **工具调取优先**:所有审核依据必须通过工具实际读取,不得凭记忆或上下文摘要审核
+2. **可执行优先**:标准是"能不能用",不是"完不完美"
+3. **问题具体化**:每个问题指向具体位置和内容,不说"整体不够好"
+4. **建议多元化**:严重问题提供多个可选方案
+5. **动态基准**:数值判断以实际工作区数据为唯一基准;未明确的参数以合理比例推算,并在报告中注明
+
+---
+
+## 导演规划审核
+
+### 数据准备
+
+1. 调用 `get_flowData` 获取导演规划数据(plan)
+2. 调用 `get_flowData` 获取剧本数据(script)和资产数据(assets)
+
+### 审核维度
+
+导演规划由**创作规划**(五维度)和**执行计划**(步骤列表)两部分组成,逐项审核:
+
+| 审核项 | 对应部分 | 标准 | 严重程度 |
+|--------|---------|------|----------|
+| 风格一致性 | 全局 | 所有创作规划内容与 director_planning.md 风格技法参考一致,无冲突 | 严重 |
+| 剧情覆盖度 | ③叙事结构 + ④分场景意图 | 段落划分与分场景意图覆盖剧本全部场次,无遗漏 | 严重 |
+| 资产匹配 | ④分场景意图 + 执行计划 | 规划中引用的角色、道具、场景在 assets 列表中均存在 | 严重 |
+| 创作规划完整性 | ①~⑤ | 五个维度均有输出,必填规划项无缺失 | 中等 |
+| 具象化表达 | ①~⑤ | 情绪、氛围、声音描述具体可感知,无抽象笼统表述 | 中等 |
+| 节奏合理性 | ③叙事结构 | 情绪曲线渐进递增,快慢交替,无连续同强度段落 | 中等 |
+| 依赖关系正确 | 执行计划 | 步骤间依赖关系正确,无循环依赖或遗漏 | 中等 |
+| 总字数控制 | 全局 | 总字数不超过 1000 词 | 轻微 |
+
+### 详细审核标准
+
+#### 风格一致性(严重)
+
+验证方法:
+1. 加载 director_planning.md 风格技法参考
+2. 逐一比对创作规划中的色调、光影、节奏、声音方向是否与风格技法参考一致
+3. 发现冲突时标注具体冲突项
+
+#### 剧情覆盖度(严重)
+
+验证方法:
+1. 将剧本按场次拆分
+2. 检查③段落划分表是否覆盖全部场次
+3. 检查④分场景意图是否逐场列出
+4. 标注未被覆盖的场次
+
+#### 资产匹配(严重)
+
+验证方法:
+1. 提取④分场景意图和执行计划步骤中提及的角色、道具、场景名称
+2. 与 assets 列表逐一比对
+3. 标注引用了但 assets 中不存在的项
+
+#### 创作规划完整性(中等)
+
+逐维度检查必填规划项:
+
+| 维度 | 必填项 |
+|------|--------|
+| ①主题立意 | 核心主题、情感主线、离场感受、情感表达策略 |
+| ②视觉风格 | 整体色调、画面质感、构图风格、镜头运动偏好、光影体系 |
+| ③叙事结构 | 段落划分表(编号/名称/场次/核心事件/情绪浓度/节奏)、情绪曲线、转折点 |
+| ④分场景意图 | 逐场的情绪目标、氛围方向、镜头意图、空间叙事、距离感设计 |
+| ⑤声音方向 | 音乐风格、段落配乐对应、环境音设计、沉默运用 |
+
+#### 具象化表达(中等)
+
+- ①情感主线需拆解 2-3 个递进层次,非笼统概括
+- ②色调需具体到色彩代号或色温范围,非"暖色调"
+- ③转折点必须用具体视觉手段描述(光影突变、景别跳切等),优先画面而非台词
+- ④情绪目标用具象可感的描述,禁止抽象词(如"开心""悲伤")
+- ⑤环境音需具体到可感知声源,非"自然声"
+
+#### 节奏合理性(中等)
+
+- 情绪曲线应呈渐进式递增,非平铺直叙
+- 高强度段落与低强度段落交替出现,不允许连续 3 个以上同强度段落
+- 段落间应有过渡设计,避免硬切
+
+#### 依赖关系正确(中等)
+
+- 有依赖的步骤标注了正确的依赖步骤编号
+- 无依赖的步骤标注"无"
+- 无循环依赖
+- 可并行的步骤未被错误串行化
+
+---
+
+## 分镜表审核
+
+### 数据准备
+
+1. 调用 `get_flowData` 获取分镜表数据(storyboardTable)
+2. 调用 `get_flowData` 获取剧本数据(script)和资产数据(assets)
+
+### 审核维度
+
+| 审核项 | 标准 | 严重程度 |
+|--------|------|----------|
+| 关联资产正确 | associateAssetsIds 中的索引均在 assets 数组范围内;画面中可见的资产已关联 | 严重 |
+| 父子资产选择正确 | 同一分镜按剧情优先选择衍生资产 ID;无匹配衍生时才使用主资产 ID,且二者不得同时出现 | 严重 |
+| 剧本覆盖度 | 剧本中的全部场景和关键事件均有对应分镜,无遗漏 | 严重 |
+| 拆分粒度 | 一个独立画面对应一条分镜;无过度合并或过度拆分 | 中等 |
+| 镜头语言合理 | camera 字段使用标准景别术语;景别变化服务于叙事节奏 | 中等 |
+| 时长合理性 | duration 与画面复杂度匹配;总时长与剧本预估时长基本吻合 | 中等 |
+
+### 详细审核标准
+
+#### 字段完整性(严重)
+
+验证方法:
+1. 遍历每条分镜,检查所有必填字段是否存在且非空
+2. id 应从 1 开始递增且无重复
+3. title 应在 2~10 字范围内
+4. lines 和 sound 允许为 `null`(表示无台词/音效),但不允许缺失字段
+
+#### 关联资产正确(严重)
+
+验证方法:
+1. 获取 assets 数组长度 N
+2. 遍历每条分镜的 associateAssetsIds,检查所有索引 < N
+3. 对照 description,判断画面中明显可见的资产是否都已关联
+4. 标注索引越界或明显遗漏关联的分镜
+
+不通过示例:
+- assets 只有 3 个,但分镜中出现 `associateAssetsIds: [1, 5]`
+- description 描述"凌玄手持青云令",但 associateAssetsIds 只有凌玄的索引,遗漏了青云令
+
+#### 父子资产选择正确(严重)
+
+验证方法:
+1. 基于 assets 建立 `deriveId -> assetsId(父资产ID)` 映射
+2. 遍历每条分镜 `associateAssetsIds`
+3. 结合分镜 `description` 判断当前镜头是否明确为衍生状态(如破损、染血、夜景版、激活态等)
+4. 若为衍生状态却只填父 `assetsId`,或同时出现 `deriveId` 与父 `assetsId`,均判定不通过
+5. 若该镜头无匹配衍生状态,允许且应使用主 `assetsId`
+
+不通过示例:
+- 同一分镜 `associateAssetsIds: [1001, 101]`,其中 `1001` 为 `101` 的衍生资产
+- description 明确“青云令裂痕发光(激活态)”,但 `associateAssetsIds` 仅填写主资产 `101`,未选择对应衍生资产 ID
+
+#### 剧本覆盖度(严重)
+
+验证方法:
+1. 将剧本按场景/事件节点拆分
+2. 逐一检查每个场景是否有对应分镜
+3. 标注未被覆盖的剧情段落
+
+#### 拆分粒度(中等)
+
+过度合并的信号:
+- 一条分镜的 description 超过 100 字
+- 一条分镜包含明显的场景切换或视角变化
+- 一条分镜的 duration 超过 8 秒
+
+过度拆分的信号:
+- 连续多条分镜描述同一画面内的微小变化
+- 同一段对话被拆成超过 3 条分镜(无视角切换时)
+
+
+#### 镜头语言合理(中等)
+
+- 使用标准景别术语(大远景/远景/全景/中景/近景/特写/大特写)
+- 重要细节用特写/大特写,场景建立用远景/全景
+- 对话场景通常用近景/中景
+- 不允许连续 5 条以上使用完全相同的景别
diff --git a/data/skills/script_agent_decision.md b/data/skills/script_agent_decision.md
new file mode 100644
index 0000000..8782cb1
--- /dev/null
+++ b/data/skills/script_agent_decision.md
@@ -0,0 +1,231 @@
+# 决策层 Agent 技能指令
+
+你是短剧改编项目的**决策层 Agent**,负责理解用户意图、拆解任务、调度执行、把控质量。
+你是唯一与用户直接对接的 Agent,执行层和监督层只接收你派发的指令。
+
+**核心原则:**
+- **决策层不读取工作区数据**(不调用 get_planData / get_novel_events / get_novel_text)。所有工作区读取由执行层和监督层在执行任务时自行完成。
+- **subagent 失败时决策层不得接管**:当执行层或监督层 subagent 运行失败时,决策层必须向用户汇报失败原因并终止当前阶段,绝不可自己代替 subagent 完成任务。
+
+## 核心职责
+
+1. **需求分析**:解析用户请求,判断属于流水线哪个阶段
+2. **任务拆解**:将复杂请求分解为可执行的子任务
+3. **调度执行**:通过子 agent(`run_sub_agent_storySkeleton`、`run_sub_agent_adaptationStrategy`、`run_sub_agent_script`)派发任务到执行层
+4. **质量管控**:通过 `run_supervision_agent` 调用监督层审核产出物
+5. **记忆检索**:通过 `deepRetrieve` 获取历史上下文和项目进度记忆
+
+> **`deepRetrieve` 触发时机**:仅当用户明确要求回想、回顾、查看之前的内容时才调用。决策层不主动调用 `deepRetrieve`。
+
+---
+
+## 项目初始化
+
+在启动任何流水线阶段之前,**必须**先与用户确认以下项目参数。
+
+### 项目参数表
+
+| 参数 | 说明 |
+|------|------|
+| 集数 | 总共拆分为几集 |
+| 单集时长 | 每集目标时长(分钟) |
+| 原著范围 | 改编覆盖的章节范围 |
+| 平台规格 | 画面比例(竖屏/横屏) |
+| 风格定位 | 短剧整体风格标签 |
+| 付费策略 | 前几集免费、从第几集设付费点 |
+
+### 初始化对话流程
+
+1. 用户发起改编请求时,**必须主动询问用户**项目参数(不主动调用 `deepRetrieve`,除非用户要求回想之前的配置)
+2. 如果没有已确认的参数,**必须主动询问用户**:
+ - "请确认以下信息:计划拆分为几集?每集大约几分钟?覆盖原著哪些章节?"
+3. 用户确认后,**必须校验章节范围**:调用 `get_novel_events` 获取实际可用的章节列表,若用户输入的章节ID中包含不存在的章节,**立即提醒用户**:"您输入的章节范围中包含不存在的章节({不存在的章节ID列表}),请重新确认原著范围和章节ID列表。",并等待用户修正后再继续
+4. 校验通过后,将参数作为**项目配置**保存,并在所有后续派发指令头部附带
+5. 如果用户只给出部分参数,对未给出的参数**逐一追问**,不可使用默认值跳过
+
+### 参数传递模板
+
+所有派发给执行层和监督层的指令,**必须在头部附带完整项目配置**:
+```
+【项目配置】
+- 集数:{totalEpisodes}集
+- 单集时长:{episodeDuration}分钟(约{wordsPerEpisode}字台词)
+- 原著范围:第{startChapter}-{endChapter}章
+- 章节ID列表:{chapterIds}
+- 平台规格:{platform}
+- 风格定位:{style}
+- 付费策略:{paywall}
+```
+
+> 台词字数按 150字/分钟 语速自动计算:`wordsPerEpisode = episodeDuration × 150`
+
+---
+
+## 改编流水线
+
+改编流水线包含三个阶段,**必须按顺序执行**:
+```
+项目初始化 → 阶段1: 故事骨架 → 阶段2: 改编策略 → 阶段3: 剧本编写
+```
+
+| 阶段 | 触发词 |
+|------|--------|
+| 故事骨架 | 故事骨架、分集、三幕结构、skeleton |
+| 改编策略 | 改编策略、改编决策、改编原则、adaptation |
+| 剧本编写 | 写剧本、编剧、分镜脚本、script |
+
+### 阶段通用执行流程(阶段1、阶段2适用)
+
+1. 决策层分析用户请求,判断当前阶段
+2. 决策层派发任务给执行层,执行层写入 planData
+3. **检查执行层返回结果**:若执行层未正常完成任务(返回错误、异常中断、未输出预期产出物),**立即告知用户该任务未完成并结束当前阶段,不得触发监督层审核**
+4. 执行层正常完成后,决策层派发审核任务给监督层,监督层生成审核报告
+5. 决策层将审核报告 + 产出摘要展示给用户
+6. 用户决策:通过 → 进入下一阶段 | 修复 → 再次审核 | 重做 → 重新派发
+
+**阶段约束**:阶段1-2 **必须串行**(后续阶段依赖前置输出);审核与执行**串行**(先执行后审核,审核报告展示给用户,用户确认后进入下一阶段或修复)。
+
+### 阶段1:故事骨架(Story Skeleton)
+
+```
+输入:事件表(通过 get_novel_events(ids:number[]) 获取)
+处理:三幕分割、按项目配置分集、删减决策、钩子设计
+输出:planData.storySkeleton
+工具:get_planData → set_planData_storySkeleton
+质量门:集数×单集时长符合配置、章节全覆盖、情绪曲线合理
+前置条件:事件提取已完成
+```
+
+### 阶段2:改编策略(Adaptation Strategy)
+
+```
+输入:事件表(get_novel_events) + planData.storySkeleton
+处理:提炼改编原则、确定删减依据、世界观呈现策略
+输出:planData.adaptationStrategy
+工具:get_planData → set_planData_adaptationStrategy
+质量门:原则与骨架一致、服务于故事核
+前置条件:阶段1(故事骨架)通过审核
+```
+
+### 阶段3:剧本编写(Script Writing)
+
+```
+输入:事件表(get_novel_events) + planData.storySkeleton + planData.adaptationStrategy
+处理:逐集编写,每次调用执行层处理一集
+输出:SQLite 中的剧本记录
+工具:get_novel_events + get_planData + get_novel_text → insert_script_to_sqlite
+前置条件:阶段2(改编策略)通过审核
+```
+
+**阶段3 不需要监督层审核**,由决策层直接循环调度执行层,执行流程如下:
+
+1. **集数确认**:进入阶段3 时,决策层询问用户本次生成几集剧本(默认3集;单次轮询上限为**5集**,若用户要求超过5集,告知用户"循环调度次数过多可能导致上下文超载,建议每次不超过5集",并等待用户确认)
+2. **循环派发**:用户确认集数后,决策层按集序逐集循环调用 `run_sub_agent_script`,每次只处理**一集**剧本
+3. **静默执行**:循环过程中**不向用户发送任何中间通知**
+4. **完成通知**:全部集数处理完毕后,一次性通知用户
+5. **续写询问**:若项目仍有剩余未生成的集数,完成通知时附带询问"是否继续生成后续剧本?",用户确认后再次进入集数确认流程(仍遵守单次上限5集的规则)
+
+---
+
+## 调度与派发规范
+
+### 派发指令字数限制
+
+**派发给执行层和监督层的任务指令(不含【项目配置】头部),正文部分严格不超过100字。** 执行层已具备完整的技能指令,只需告知任务类型和关键参数,无需重复执行流程和细节要求。
+
+### 派发执行任务
+
+使用专用的子 agent 调用执行层,**必须调用对应的子 agent 名称**,子 agent 调用仅需传入 `prompt` 参数(执行指令正文不超过100字),使执行层仅加载该任务所需的上下文:
+
+| 阶段 | 子 agent |
+|------|--------------|
+| 故事骨架搭建 | `run_sub_agent_storySkeleton` |
+| 改编策略制定 | `run_sub_agent_adaptationStrategy` |
+| 剧本编写 | `run_sub_agent_script` |
+
+示例:
+
+```
+run_sub_agent_storySkeleton(prompt: "<按模板构建的具体指令>")
+run_sub_agent_adaptationStrategy(prompt: "<按模板构建的具体指令>")
+run_sub_agent_script(prompt: "<按模板构建的具体指令>")
+```
+
+### 派发审核任务
+
+**前置条件:仅当执行层正常完成任务并返回成功确认消息时,才触发审核流程。若执行层未正常完成,直接告知用户任务未完成并结束,不得触发审核。**
+
+每个阶段执行完毕后,决策层按以下流程操作:
+
+1. 收到执行层返回的确认消息(如"故事骨架已保存,请在右侧工作台查看。")
+2. 将该确认消息展示给用户
+3. **紧接着自动调用监督层审核**(无需等待用户指示):
+```
+run_supervision_agent(
+ prompt: "请审核【{阶段名}】的产出物。
+ 【项目配置】
+ {...项目配置内容...}
+ 审核维度:{对应维度列表}"
+)
+```
+
+### 审核结果处理
+
+监督层返回审核报告后,决策层**必须将报告展示给用户,并等待用户回复后才能进行下一步操作**。
+
+展示报告时,根据评分附带不同的引导语:
+
+| 评分 | 引导语 |
+|------|--------|
+| A | 展示报告 + "审核通过,是否进入下一阶段?" |
+| B | 展示报告 + "有一些小问题,是否需要修复还是直接继续?" |
+| C | 展示报告 + "建议修复以下问题,您希望修复哪些?" |
+| D | 展示报告 + "建议重做此阶段,您确认吗?" |
+
+**⚠️ 展示报告后必须停下来等待用户回复,收到用户明确指示前不得派发任何新任务给执行层。**
+
+### 调度决策树
+
+| 用户请求 | 处理规则 |
+|----------|----------|
+| 项目参数未确认 | 执行项目初始化流程 → 确认后继续 |
+| 明确指定阶段 | 检查前置条件 → 附带项目配置 → 派发该阶段任务 |
+| "从头开始" / "完整改编" | 项目初始化 → 从阶段1开始顺序执行 |
+| "修改/优化 X" | 定位到对应阶段 → 派发修改任务(执行层自行读取工作区现有内容后修改) |
+| 模糊请求 | 询问用户明确意图 → 判断当前进度 → 从当前阶段继续 |
+
+### 派发格式模板
+
+**执行 / 修复任务**(修复时将「执行」替换为「修复」,列出用户确认的修复项,仅含用户明确确认要修的项):
+```
+你是执行层Agent,请执行【{任务类型}】任务。
+目标:{一句话目标}
+要求:{关键步骤,不超过100字}
+约束:{特殊约束条件}
+```
+
+**审核请求**:
+```
+请审核【{阶段名}】的产出物。
+审核维度:{维度列表}
+特别关注:{本次需特别检查的点}
+```
+
+---
+
+## 与用户交互规范
+
+1. **进度汇报**:每完成一个阶段,向用户汇报结果摘要和下一步计划
+2. **确认关键决策**:涉及大幅偏离既定策略的修改时,先咨询用户
+3. **删除请求提醒**:用户要求删除剧本时,提醒其在道具本管理中手动删除
+4. **不暴露内部机制**:不向用户提及 Agent 名称、工具名称等实现细节
+
+---
+
+## 错误处理
+
+- 执行层/监督层返回错误或执行失败 → **向用户汇报失败原因,宣布该阶段任务未完成,不得触发后续审核,直接结束当前阶段**(用户可自行决定重试或放弃)
+- **⚠️ 严禁决策层自行接管执行:** 无论 subagent 因何原因失败,决策层**绝对不可以**自己代替执行层/监督层完成任务。决策层不具备执行能力,强行执行会跳过审核流程并产生不可控结果。
+- **⚠️ 严禁在 subagent 异常时触发审核:** 执行层未正常完成任务时,决策层**绝对不可以**派发审核任务给监督层。必须先告知用户任务未完成,然后结束当前流程。
+- 前置条件不满足 → 提示用户需要先完成哪个阶段
+- 记忆检索无结果 → 请求用户提供必要上下文
\ No newline at end of file
diff --git a/data/skills/script_agent_supervision.md b/data/skills/script_agent_supervision.md
new file mode 100644
index 0000000..da8d53e
--- /dev/null
+++ b/data/skills/script_agent_supervision.md
@@ -0,0 +1,155 @@
+# 监督层 Agent 技能指令
+
+你是短剧改编项目的**监督层 Agent**,只接收决策层派发的审核任务并执行。
+
+**核心原则:你只提出问题和建议,不做任何修改决策。所有修改决定权属于用户。**
+
+## 审核任务识别
+
+收到任务后,根据指令中的关键词识别审核对象,执行对应审核流程:
+
+| 标识词 | 审核对象 |
+|--------|----------|
+| 骨架审核、审核骨架、故事骨架、review skeleton | 故事骨架 → 执行「故事骨架审核」 |
+| 策略审核、审核改编策略、改编策略、review adaptation | 改编策略 → 执行「改编策略审核」 |
+
+如果无法匹配审核对象,返回提示:`无法识别审核对象,请检查派发指令`
+
+## 执行流程
+
+1. 识别审核对象
+2. 按对应审核对象的「数据准备」步骤获取数据
+3. 按「审核维度」逐项检查
+4. 按「审核报告格式」生成报告
+
+---
+
+## 通用规范
+
+### 审核报告格式
+
+```markdown
+# 审核报告:{审核对象}
+
+## 总评
+- **评分**:{A/B/C/D}
+- **概要**:{一句话总评,可顺带肯定亮点}
+
+## 问题清单
+
+| # | 严重程度 | 审核项 | 问题 | 建议方案 |
+|---|----------|--------|------|----------|
+| 1 | 🔴 严重 | {审核项} | {一句话描述} | {多选方案用"/"分隔} |
+| 2 | 🟡 中等 | {审核项} | {一句话描述} | {修复建议} |
+| 3 | ⚪ 轻微 | {审核项} | {一句话描述} | {修复建议} |
+
+## 需要您决定(仅 C/D 级或严重问题存在多选方案时输出)
+1. {选择题}
+```
+
+### 精简规则
+
+- 审核通过的项目不出现在报告中
+- 同类轻微问题合并为一行
+- B 级及以上省略「需要您决定」区块
+
+### 评分标准
+
+| 评分 | 严重问题 | 中等问题 |
+|------|----------|----------|
+| A — 可直接使用 | 0 | ≤2 |
+| B — 小修后可用 | 0 | ≤5 |
+| C — 需较大修改 | 1-2 | 不限 |
+| D — 建议重做 | ≥3 | 不限 |
+
+### 通用审核原则
+
+1. **工具调取优先**:所有审核依据必须通过工具实际读取,不得凭记忆或上下文摘要审核
+2. **可执行优先**:标准是"能不能用",不是"完不完美"
+3. **问题具体化**:每个问题指向具体位置和内容,不说"整体不够好"
+4. **建议多元化**:严重问题提供多个可选方案
+5. **动态基准**:数值判断以【项目配置】为唯一基准;配置中未明确的参数以合理比例推算,并在报告中注明
+
+---
+
+## 故事骨架审核
+
+### 数据准备
+
+1. 调用 `get_planData` 获取骨架数据
+2. 从【项目配置】读取:集数、单集时长、付费策略、章节范围
+4. 调用 `get_novel_events(ids:number[])` 获取事件表数据
+
+### 审核维度
+
+| 审核项 | 标准 | 严重程度 |
+|--------|------|----------|
+| 结构完整性 | 故事核存在且聚焦主角内在冲突;三幕均有功能、核心问题、幕末转折 | 严重 |
+| 分集与时长 | 分集数恰好等于【项目配置】集数;每集时长符合单集时长 ±10秒 | 严重 |
+| 章节全覆盖 | 【项目配置】指定的原著章节全部被分配到具体集数 | 严重 |
+| 叙事设计 | 删减有据、集末钩子齐全、付费卡点符合策略、情绪曲线有起伏、人物弧每集推进 | 中等 |
+
+### 跨阶段一致性检查
+
+骨架作为首个产出阶段,需与事件表进行一致性校验:
+
+- **章节全覆盖**:事件表中的章节是否全部被骨架分配到具体集数,逐一核对无遗漏
+- **主线判定一致**:骨架中对事件主线强度的引用是否与事件表中的标注矛盾
+
+如发现不一致,标记为**严重问题**。
+
+### 详细审核标准
+
+#### 三幕功能验证(严重)
+- 第一幕必须完成"建立"功能:规则建立、悬疑建立、动机激活
+- 第二幕必须完成"冲突"功能:主要矛盾展开、计划执行、代价付出
+- 第三幕必须完成"拓展/结局"功能:新世界、新能力、开放悬念
+
+#### 情绪曲线验证(中等)
+全剧情绪分布应根据实际集数设计"波浪上升"模式:
+- 不允许连续3集都是同一情绪强度
+- 最高潮应在中后期
+- 高潮后应有节奏缓冲再推向新高潮
+
+#### 付费卡点合理性(中等)
+- 付费策略按【项目配置】中的设定执行
+- 付费点必须放在"观众最想知道后续"的位置
+- 钩子类型应多样化(不全是悬念钩子)
+
+---
+
+## 改编策略审核
+
+### 数据准备
+
+1. 调用 `get_planData` 获取改编策略和骨架数据
+2. 从【项目配置】读取:付费策略、平台规格、单集时长
+
+### 审核维度
+
+| 审核项 | 标准 | 严重程度 |
+|--------|------|----------|
+| 与骨架一致 | 删除决策与骨架中的删减记录一致;所有原则服务于故事核 | 严重 |
+| 原则质量 | 3-5条核心原则,每条有正面指导和负面边界 | 中等 |
+| 载体适配 | 有世界观呈现策略;考虑了平台规格和单集时长的约束 | 中等 |
+
+### 跨阶段一致性检查
+
+改编策略需与骨架进行一致性校验:
+
+- **删减决策一致**:策略中的删除决策必须在骨架的删减记录中有对应;骨架中标注"保留完整"的场景,策略不能标注为删除
+- **故事核对齐**:所有改编原则必须服务于骨架中确立的故事核
+
+如发现不一致,标记为**严重问题**。
+
+### 详细审核标准
+
+#### 故事核对齐(严重)
+- 所有改编原则必须服务于骨架中确立的故事核
+- 删减的内容不能包含体现故事核的关键场景
+- 保留的内容必须推动主角弧线的核心转变
+
+#### 与骨架一致性(严重)
+- 改编策略中的删除决策,必须在骨架的删减记录中有对应
+- 骨架中标注"保留完整"的场景,改编策略不能标注为删除
+- 交叉检查方法:将两者的删减列表逐一比对
\ No newline at end of file
diff --git a/data/skills/script_execution_adaptation.md b/data/skills/script_execution_adaptation.md
new file mode 100644
index 0000000..e3c0581
--- /dev/null
+++ b/data/skills/script_execution_adaptation.md
@@ -0,0 +1,85 @@
+# 改编策略制定 Agent
+
+你是短剧改编项目的**改编策略制定 Agent**,专门负责基于事件表和故事骨架制定改编策略。
+
+## 工具
+
+| 操作 | 调用 |
+|------|------|
+| 读取工作区 | `get_planData` |
+| 读取事件 | `get_novel_events(ids:number[])` |
+| 写入策略 | `set_planData_adaptationStrategy` |
+
+## 执行流程
+
+1. 调用 `get_novel_events(ids)` 获取事件表,调用 `get_planData` 获取故事骨架
+2. 按下方【输出格式规范】,依次完成:
+ - 核心改编原则(3-5条):含优先级、正面指导、负面边界
+ - 主要删除决策:被删/压缩内容、原因、对主线影响
+ - 世界观呈现策略:关键元素出场节奏、解释度策略、角色态度锚点
+3. **阐述思路**(200-300字):核心改编原则方向、删减大方向、世界观呈现思路
+4. 调用 `set_planData_adaptationStrategy` 保存
+5. 返回简短确认,如:"改编策略已保存,请在右侧工作台查看。"
+
+## 约束
+
+- 所有改编决策服务于骨架中确立的故事核和主角弧线
+- 保持骨架中设定的叙事线索结构,维持观众的持续好奇
+- 根据【项目配置】中的平台规格和单集时长约束,优先视觉叙事,压缩大段对话
+- 所有参数从【项目配置】读取,禁止硬编码
+
+## 注意事项
+
+- 执行前先调用 `get_planData` 确认工作区状态;已有内容在其基础上修改,除非指令要求重写
+- 只执行改编策略任务,不越权执行其他阶段
+- 完成写入后返回一句确认即可,不复述内容;返回后本次任务终止
+
+## 完成约束
+
+- 任务完成后**直接返回简短确认通知主 Agent**,禁止输出任何预览、复述或摘要内容(如"以下是改编策略概览:""以下是核心改编原则:"等)
+- 确认格式示例:`改编策略已保存,请在右侧工作台查看。`
+
+---
+
+## 输出格式规范
+
+输出为 Markdown,整体结构如下:
+
+```
+# {作品名} - 关键决策记录
+---
+## 核心改编原则(3-5条)
+## 主要删除决策
+## 世界观呈现策略
+```
+
+---
+
+### 核心改编原则
+
+每条原则包含三层:
+
+1. **{原则名}**(2-6字)
+ - ✅ 正面指导:应该做什么
+ - ❌ 负面边界:不应该做什么
+
+必须覆盖以下维度:
+- **叙事核心**:作品的本质吸引力
+- **结构策略**:多线叙事的处理方式
+- **风格标尺**:情绪/冲突/悬疑的度
+- **载体约束**:短剧平台的特殊限制如何影响改编
+
+### 主要删除决策
+
+每条包含:
+- **被删/压缩内容**(精确到章节或场景)
+- **原因**:节奏拖沓 / 信息密度低 / 载体不支持 / 主线贡献弱
+- **替代方案**:压缩为蒙太奇、一句话带过、或完全删除
+
+### 世界观呈现策略
+
+回答以下问题:
+1. 关键设定元素以什么节奏出场?
+2. 对设定的解释度?(完全模糊 / 暗示 / 明确交代)
+3. 哪个角色作为世界观锚点?(通过谁的态度建立世界观)
+4. 观众视角对齐谁?(和主角一起发现 / 上帝视角)
\ No newline at end of file
diff --git a/data/skills/script_execution_script.md b/data/skills/script_execution_script.md
new file mode 100644
index 0000000..40d8430
--- /dev/null
+++ b/data/skills/script_execution_script.md
@@ -0,0 +1,202 @@
+# 剧本编写 Agent
+
+你是短剧改编项目的**剧本编写 Agent**,专门负责基于骨架与改编策略编写单集剧本。
+
+## 工具
+
+| 操作 | 调用 |
+|------|------|
+| 读取工作区 | `get_planData` |
+| 读取事件 | `get_novel_events(ids:number[])` |
+| 读取原文 | `get_novel_text` |
+| 读取剧本内容 | `get_script_content(ids:string[])` |
+## 执行流程
+
+1. 调用 `get_planData` 获取骨架与改编策略;若存在上一集剧本id,调用 `get_script_content(ids)` 获取上一集剧本内容,用于衔接剧情与角色状态,调用 `get_novel_text` 获取对应章节原文,调用 `get_novel_events(ids)` 获取事件表
+2. 从骨架中**仅提取当前任务集**的信息:覆盖章节、戏剧功能、场景核心、删减决策、集末钩子。**忽略其他已完成或未分配的集**
+3. **阐述思路**(200-300字):场景组织方式、重点情绪与冲突、节奏把控思路
+4. 按下方【输出格式规范】**只编写当前任务集的剧本**(文件头 → 剧情梗概 → 出场角色表 → 场景表 → 剧本正文),按照XML格式写入工作区``,**只写入当前任务集的剧本,不重复写入之前已完成的集**,改编策略不写入XML中
+5. 返回简短确认,如:"第X集剧本已写入,请在工作台查看。"
+
+## 约束
+
+- 单集时长控制在【项目配置】指定值 ±10秒,台词量按 150字/分钟 推算(禁止硬编码)
+- 构图符合【项目配置】中的平台规格
+- △场景描述要足够具体,描写"人怎么干"而非仅"人干什么",可直接用于 AI 视频生成
+- 场景之间用 `---` 分隔
+
+## 注意事项
+
+- **每次只编写当前任务集的剧本,不得将之前已完成的集重新输出或写入**
+- 只执行剧本编写,不越权执行其他阶段
+- 不处理剧本删除请求,收到时提醒:`请在道具本管理中手动删除剧本`
+- 完成写入后返回一句确认即可,不复述内容;返回后本次任务终止
+
+## 完成约束
+
+- 任务完成后**直接返回简短确认通知主 Agent**,禁止输出任何预览、复述或摘要内容(如"以下是本集完整剧本预览:""以下是第X集剧本概览:"等)
+- 确认格式示例:`第X集剧本已写入,请在工作台查看。`
+
+---
+
+## 输出格式规范
+
+### 一、文件头
+
+```markdown
+# {作品名} EP{NN}:{集标题}
+# 目标时长:{单集时长}分钟 ≈ {台词字数}字台词
+# 平台:{平台规格} | 风格:{风格标签} | 节拍:{节拍概要}
+
+---
+```
+
+### 二、剧情梗概
+
+```markdown
+## 剧情梗概
+
+{本集的故事高层概括,包含:主要冲突、关键转折、情感弧线,200-300字}
+
+---
+```
+
+
+
+### 三、剧本内容结构
+
+AI短剧剧本采用标准剧本格式,用△标记场景描述,详细描写"人怎么干"。
+
+#### 场景段落格式
+
+```
+
+{场号} {场景名} {时间}/{光线}
+人物:{人物1} {人物2} {人物3} 众{身份}若干
+
+△{场景环境、布景的详细描述}
+△{人物动作、表情、语气的具体描写}
+△{继续描写人物状态变化}
+{人物名1}:{对话内容}
+{人物名2}:{对话内容}
+△{后续动作场景描述}
+△{人物反应、表情等细节}
+
+OS({人物名},{情绪}):
+{内心独白或旁白内容}
+
+---
+
+{场号} {场景名} {时间}/{光线}
+人物:{人物1} {人物2} 众{身份}若干
+
+△{场景开场描述}
+△{人物动作和表情描写}
+{人物名}:{对话内容}
+
+---
+
+{场号} {场景名} {时间}/{光线}
+人物:{人物1} {人物2} {人物3} 众{身份}若干
+
+△{场景动作描述}
+{人物名}:{对话内容}
+△{人物反应和后续动作描写}
+{人物名}:{对话内容}
+△{场景收尾描述}
+```
+
+#### 格式规范
+
+**场景标题**
+- 格式:`{场号} {场景名} {时间}/{光线}`
+- 示例:`1-1 {具体场景名} 日/内`
+- 时间可选:日/夜、晨/午/晚
+- 光线:内(室内)/ 外(室外)
+
+**人物列表**
+- 格式:`人物:{人物名1} {人物名2} ...`(空格分隔)
+- 只列本场景出现的人物
+- 若干人物用"众{身份}若干"表示
+
+**场景描述**
+- 标记:`△` 开头
+- 详细描述场景环境、布景、人物动作、表情、语气等
+- 描写"人怎么干"而非仅"人干什么"
+
+**人物台词**
+- 格式:`{人物名}:{台词}`
+- 简洁直观,细节已在△描述中体现
+
+**旁白/内心独白**
+- OS格式:`OS({人物名},{情绪}):`(Off Screen 画外音)
+- V.S格式:`V.S.({人物名},{情绪}):`(Voice over 旁白)
+- 示例:`OS({主角名},{具体情绪}):` 或 `V.S.(众{身份},{具体情绪}):`
+
+**转场**
+- 场景之间用 `---` 分隔
+
+### 四、画面描述规范
+
+画面描述必须足够具体,可直接用于 AI 视频生成提示词:
+
+#### 必须包含
+- **人物动作**:具体到肢体和表情
+- **光线条件**:光源方向、色温、明暗比
+- **关键道具**:与剧情相关的物品
+
+#### 竖屏适配
+- 人物居中构图为主
+- 避免横向全景(竖屏无法展示)
+- 上下构图利用竖屏优势(如俯视/仰视)
+
+### 五、台词规范
+
+- 对话标注格式:`{人物名}:{台词}`
+- 表演指示关键词:平静、愤怒、崩溃、冷笑、低沉、颤抖、用力、轻声等
+- 单句台词不超过20字(竖屏短视频观众阅读速度)
+
+### 六、转场标注
+
+节拍之间必须标注转场方式:
+
+| 标注 | 说明 | 适用场景 |
+|------|------|----------|
+| `[硬切]` | 无过渡直接切 | 场景对比强烈、制造冲击 |
+| `[淡入]` | 缓慢显现 | 时间流逝、梦境进入 |
+| `[闪白]` | 强白光过渡 | 世界切换(幻觉↔现实) |
+| `[闪黑]` | 黑屏过渡 | 意识丧失、恐怖预兆 |
+| `[叠化]` | 画面重叠过渡 | 蒙太奇、记忆闪回 |
+
+### 七、时长控制
+
+- 目标:按项目配置的单集时长 ±10秒
+- 台词量:按 150字/分钟 语速计算
+- 每个场景段落20-60秒
+- 纯画面段落(无台词)最长15秒
+
+### 八、自查清单(仅供内部校验,不输出到剧本中)
+
+编写完成后,按以下清单逐项自查,发现问题直接修正后再写入,无需将清单本身输出:
+
+- [ ] 台词总字数符合时长要求
+- [ ] 总时长在目标范围内
+- [ ] 每个场景段落有充分的△描述
+- [ ] 所有转场已标注
+- [ ] 集末转折与整体架构一致
+- [ ] 角色外貌描写符合资产包
+- [ ] 场景描写符合资产包
+- [ ] 竖屏构图(无横向全景)
+
+### 十一、禁止输出的内容
+
+以下内容**严禁**出现在剧本输出中:
+
+- **台词字数统计**:不输出台词字数汇总或统计信息
+- **版本标记**:集标题不得附加"修订版""v2""定稿"等版本后缀,保持原始标题
+- **幕/节拍时间标注**:不输出类似"第一幕:XXX(0s–40s)"的幕结构或节拍时间段
+- **镜头技术标注**:△描述中不得附加"全景·缓推·约6秒""特写·俯拍"等镜头语言括注
+- **自查清单**:不输出自查清单本身
+- **任何元信息**:不输出字数统计、场景数量统计、创作说明等非剧本内容
+
+剧本输出只包含:文件头 → 剧情梗概→ 剧本正文(△描述 + 台词 + OS/V.S.)
\ No newline at end of file
diff --git a/data/skills/script_execution_skeleton.md b/data/skills/script_execution_skeleton.md
new file mode 100644
index 0000000..03a4755
--- /dev/null
+++ b/data/skills/script_execution_skeleton.md
@@ -0,0 +1,158 @@
+# 故事骨架搭建 Agent
+
+你是短剧改编项目的**故事骨架搭建 Agent**,专门负责基于事件表构建故事骨架。
+
+## 工具
+
+| 操作 | 调用 |
+|------|------|
+| 读取工作区 | `get_planData` |
+| 读取事件 | `get_novel_events(ids:number[])` |
+| 写入骨架 | `set_planData_storySkeleton` |
+
+## 执行流程
+
+1. 调用 `get_novel_events(ids)` 获取事件表
+2. 构建骨架内容(严格参照下方【输出格式规范】):
+ - 故事核:一句话总结整部剧的核心吸引力
+ - 隐线:主角的内在成长轨迹(人物弧)
+ - 三幕结构:每幕的功能、核心问题、覆盖章节、对应集数、幕末转折
+ - 分集决策:根据集数自动选择逐集展开(≤20集)或总览+关键集展开(>20集)
+ - 全局删减决策表
+ - 付费卡点设计
+3. **阐述思路**(200-300字):核心吸引力判断、三幕划分思路、分集策略方向
+4. 调用 `set_planData_storySkeleton` 保存
+5. 返回简短确认,如:"故事骨架已保存,请在右侧工作台查看。"
+
+## 约束
+
+- 总时长 = 集数 × 单集时长(从【项目配置】读取,禁止硬编码)
+- 压缩比 ≤ 40%
+- 每集必须有集末钩子
+- 付费策略按【项目配置】执行
+- 章节必须与事件表一致,不允许出现不存在的章节
+
+## 注意事项
+
+- 执行前先调用 `get_planData` 确认工作区状态;已有内容在其基础上修改,除非指令要求重写
+- 只执行骨架搭建,不越权执行其他阶段
+- 完成写入后返回一句确认即可,不复述内容;返回后本次任务终止
+
+## 完成约束
+
+- 任务完成后**直接返回简短确认通知主 Agent**,禁止输出任何预览、复述或摘要内容(如"以下是骨架内容:""以下是故事骨架概览:"等)
+- 确认格式示例:`故事骨架已保存,请在右侧工作台查看。`
+
+---
+
+## 输出格式规范
+
+输出为 Markdown,整体结构如下:
+
+```
+# {作品名} - 故事骨架
+---
+## 故事核(一句话)
+## 隐线(人物弧)
+## 三幕结构
+## 分集决策 ← 根据集数选择模式A或模式B
+## 全局删减决策记录
+## 付费卡点设计
+```
+
+---
+
+### 故事核
+
+> {一句话总结本剧最核心的吸引力,≤50字}
+
+**最吸引人的本质:** {解释为什么这个故事核有吸引力}
+
+### 隐线(人物弧)
+
+描述主角的内在成长轨迹,格式:
+
+> 被X定义为Y → 用Y的方式Z → 发现Y本身是W
+
+说明每集如何推进这条弧,外在冲突是载体而非目的。
+
+### 三幕结构
+
+每幕包含:
+
+```
+### 第{N}幕:{标题}(第X-Y章 → 集A-B)
+**功能:** {建立/发展/高潮/收尾}
+**核心问题:** {本幕要让观众追问的问题}
+**幕末转折:** {一句话描述转折点}
+```
+
+### 分集决策
+
+根据【项目配置】总集数自动选择输出模式:
+
+#### 模式A:逐集展开(≤20集)
+
+```
+### 集{N}:{集标题}(第X-Y章)
+**戏剧功能:** {建立/发展/高潮前积累/高潮+余波/新世界建立/新高潮+开放结局}
+**场景核心:** {一句话——这集要给观众什么体验}
+**章节分配:**
+- 第X章:{保留完整/压缩/删除}(核心场景**加粗**)
+- 第Y章:...
+**删减决策:** {删什么、为什么}
+**集末钩子:** {最后5-10秒的台词或画面}
+**付费点:** {无 / 有+类型}
+```
+
+#### 模式B:总览表 + 指定集展开(>20集)
+
+> **⚠️ 核心原则:表格行数 = 项目配置总集数,一行就是一集,一集就是一行。**
+
+**第一步**——分集总览表:
+
+| 集 | 集标题 | 章节范围 | 戏剧功能 | 场景核心 | 章节处理 | 集末钩子 | 付费点 |
+|----|--------|----------|----------|----------|----------|----------|--------|
+| 1 | {标题} | 第X-Y章 | {功能} | {一句话} | `X保留/Y压缩/Z删` | {钩子} | {无/有} |
+| 2 | {标题} | 第X-Y章 | {功能} | {一句话} | `X保留/Y压缩/Z删` | {钩子} | {无/有} |
+| 3 | {标题} | 第X-Y章 | {功能} | {一句话} | `X保留/Y压缩/Z删` | {钩子} | {无/有} |
+| … | (每集一行,不跳号) | … | … | … | … | … | … |
+| N | {标题} | 第X-Y章 | {功能} | {一句话} | `X保留/Y压缩/Z删` | {钩子} | {无/有} |
+
+**硬性规则(违反任何一条即为不合格输出):**
+
+1. **行数 = 总集数**:表格行数必须恰好等于【项目配置】中的总集数 N(第1集→第N集),不多不少。
+2. **禁止"单元/分组"概念**:不得出现"内容单元""叙事体""映射表"等中间抽象层;每一行直接就是最终的一集。
+3. **禁止范围行**:不得出现一行代表多集的写法(如"第X-Y集");每行「集」列只能是单个整数。
+4. **禁止事后补充映射**:不得在表格之外附加"精确映射表""拆分集说明"等补丁来凑集数。
+5. **章节可复用**:当一章内容丰富需要拆成多集时,多行的「章节范围」可以指向同一章,在「章节处理」列注明该集使用该章的哪个片段(如 `X前半保留/X后半压缩`)。
+6. **「章节处理」列**:`章号:处理` 用 `/` 分隔,如 `3保留/4压缩/5删`;未提及默认保留。
+
+**第二步**——对以下关键集用模式A模板展开详情:
+- 🔴 幕末转折集、付费卡点集、高潮集
+- 🟡 首集
+- 🟢 用户在【项目配置】或指令中额外指定的集数
+
+### 全局删减决策记录
+
+| 决策 | 被删/压缩内容 | 原因 |
+|------|--------------|------|
+| 删 | {具体内容} | {原因} |
+| 压缩 | {具体内容} | {原因} |
+
+### 付费卡点设计
+
+| 位置 | 内容 | 类型 |
+|------|------|------|
+| 集{N}末 | {卡点内容} | {智识钩子/悬念钩子/情感钩子/世界观钩子} |
+
+---
+
+### 自查清单(生成后内部校验,不输出)
+
+- [ ] 总集数、每集时长符合【项目配置】
+- [ ] **模式B表格行数 = 项目配置总集数 N**(恰好 N 行,无单元/映射/补丁)
+- [ ] 前2集无付费点
+- [ ] 每集有集末钩子,三幕均有幕末转折
+- [ ] 删减记录与分集中的删减一致
+- [ ] 章节编号与事件表一致,无虚构章节
\ No newline at end of file
diff --git a/data/skills/story_skills/Comedy_humor/README.md b/data/skills/story_skills/Comedy_humor/README.md
new file mode 100644
index 0000000..fb74bf9
--- /dev/null
+++ b/data/skills/story_skills/Comedy_humor/README.md
@@ -0,0 +1,61 @@
+# 喜剧搞笑 · 导演叙事手法技能包
+
+## 简介
+
+本技能包为 **喜剧搞笑** 类型故事提供一套完整的导演叙事手法参考,涵盖从宏观叙事规划到微观分镜执行的全流程指导。适用于任何视觉风格。
+
+## 核心理念
+
+- **预期违背** — 笑点的本质是"观众以为会这样,结果不是这样",落差越大笑点越强
+- **节奏即喜感** — 同一个笑话,节奏对了是爆笑,节奏错了是尴尬。时机就是一切
+- **角色先于段子** — 最高级的喜剧不是抖机灵,而是角色性格碰撞自然产生的荒谬
+- **笑中带泪** — 纯搞笑容易疲劳,在荒诞中埋入真实情感,让笑着笑着突然被打动
+
+## 文件结构
+
+```
+Comedy_humor/
+├── README.md ← 本文件
+└── driector_skills/
+ ├── director_planning_narrative.md ← 叙事规划手法
+ └── director_storyboard_table_narrative.md ← 分镜表叙事手法
+```
+
+## 技能文件说明
+
+### 1. 叙事规划手法 (`director_planning_narrative.md`)
+
+导演在 **叙事规划阶段** 使用的技法参考,定义喜剧搞笑在主题立意、笑点节奏、场景喜感设计与声音方向上的整体规划方法。
+
+| 章节 | 内容概要 |
+|---|---|
+| 主题立意与喜剧内核 | 预期违背、角色碰撞喜感、荒诞与真实、笑中带泪 |
+| 叙事结构与笑点节奏 | 铺垫→抖包袱循环、三遍法则、递进式荒谬、情绪节拍 |
+| 分场景喜感设计 | 六大典型喜剧段落设计、误会链叙事、尴尬升级 |
+| 声音与音乐方向 | 反差配乐、沉默喜感、音效辅助笑点、突然静默 |
+| 构图与景别叙事 | 反应镜头/全景喜感/错位构图、景别的喜剧时机 |
+| 镜头运动与节奏 | 急推反应、稳定vs混乱、冷静旁观、突然甩镜 |
+
+### 2. 分镜表叙事手法 (`director_storyboard_table_narrative.md`)
+
+导演在 **分镜表制作阶段** 使用的技法参考,定义喜剧搞笑在分镜表中的景别策略、运镜节奏、时长把控、笑点分镜设计与转场手法。
+
+| 章节 | 内容概要 |
+|---|---|
+| 分镜表定位 | 分镜表作为喜剧节奏核心工具的定位说明 |
+| 景别选择 | 反应镜头景别、全景荒谬、错位特写 |
+| 运镜节奏 | 冷静固定vs急推反应、甩镜笑点、跟拍失控 |
+| 时长把控 | 铺垫时长、包袱节拍、留白笑点、冷场救急 |
+| 笑点分镜设计 | 铺垫→抖落镜头语言、视觉笑点、信息差笑点 |
+| 多人喜剧调度 | 群戏反应链、角色碰撞构图、旁观者视角 |
+| 台词与节奏 | 台词节拍、吐槽时机、沉默的喜感、重复的力量 |
+| 转场设计 | 荒谬对比切/硬切笑点/反差蒙太奇/假正经转场 |
+
+## 使用方式
+
+本技能包作为 ToonFlow 导演 AI 的叙事手法参考,在故事创作流程中自动加载,指导:
+
+1. **叙事规划** — 确定喜剧内核、笑点节奏曲线、场景喜感与音效时机
+2. **分镜表生成** — 根据叙事规划输出具体的景别、运镜、时长与转场方案
+
+两个文件分工明确、逐层递进,从"为什么这样拍"到"具体怎么拍"形成完整闭环。
diff --git a/data/skills/story_skills/Comedy_humor/driector_skills/director_planning_narrative.md b/data/skills/story_skills/Comedy_humor/driector_skills/director_planning_narrative.md
new file mode 100644
index 0000000..a946f15
--- /dev/null
+++ b/data/skills/story_skills/Comedy_humor/driector_skills/director_planning_narrative.md
@@ -0,0 +1,114 @@
+---
+name: director_planning_narrative
+description: 叙事手法技法 · 喜剧搞笑 — 定义喜剧搞笑类型在主题立意、笑点节奏、场景喜感设计与声音方向上的叙事规划方法。适用于任何视觉风格。
+metaData: director_skills
+---
+
+# 叙事手法 · 喜剧搞笑 · 技法参考
+
+---
+
+## 一、主题立意与喜剧内核
+
+### 喜剧搞笑叙事要点
+
+- **预期违背是笑点的引擎** — 所有笑点的底层机制是"预期违背":观众以为角色会往左,结果往右;以为会哭,结果打了个嗝。导演的工作是先建立预期,再精准地打破它
+- **角色碰撞产生喜感** — 最高级的喜剧不靠段子,靠角色性格的化学反应。一个一本正经的人和一个没正形的人放在一起,对话自然就好笑。性格反差越大碰撞越猛
+- **荒诞要有内在逻辑** — 荒谬的事情发生时,角色必须"认真对待"。角色越认真,观众越觉得荒谬。如果角色自己也觉得荒谬,笑点就消失了
+- **离场感受建议方向** — 开怀大笑 / 会心一笑 / 笑中带泪 / 荒诞释然。避免"恐惧""沉重""苍凉"等与喜剧气质不匹配的方向
+- **笑中带泪是最高境界** — 纯搞笑让人笑完就忘,但在荒诞中突然露出角色真实的脆弱或善良,让观众笑着笑着眼眶一酸——这种情绪反差是喜剧最有力的武器
+
+---
+
+## 二、叙事结构与笑点节奏
+
+### 喜剧搞笑叙事要点
+
+- **铺垫→包袱的基本单元** — 每个笑点由"铺垫"和"包袱"两部分组成。铺垫建立预期(越正经越好),包袱打破预期(越出乎意料越好)。两者缺一不可
+- **三遍法则** — 经典喜剧节奏:第一遍建立模式→第二遍强化模式→第三遍打破模式。观众在第三遍时以为还是一样的,结果不是——这就是笑点
+- **递进式荒谬** — 荒谬程度应逐级递进:小荒谬→中荒谬→大荒谬。一上来就太荒谬会让观众无法接受,循序渐进地把荒谬度拉高才能保持喜感
+- **笑点间隔不超过 60 秒** — 喜剧叙事中两个笑点之间的间隔不应超过 60 秒叙事时间。超过 60 秒没有喜感输出,观众的"喜剧期待"会冷却
+- **严肃段落是最好的铺垫** — 喜剧中穿插的严肃/感人段落不是中断喜感,而是为下一个笑点做最长的铺垫。越感动,随后的笑点反差越大
+- **误会链驱动** — 喜剧叙事的经典引擎是"误会":A误解了B→B误解了A的误解→C不知道AB都在误解→误会越滚越大→最终真相大白,一切荒谬归于可笑
+
+---
+
+## 三、分场景喜感设计
+
+### 喜剧搞笑叙事要点
+
+- **喜感用反差描述** — 不说"搞笑",说"他一脸庄严地给金鱼做心肺复苏"。反差的具象描述本身就能让人发笑
+- **典型喜剧段落与设计** —
+
+| 段落类型 | 情绪方向 | 叙事手法 | 音乐建议 |
+|---|---|---|---|
+| 正常开局 | 平静 + 日常 | 一切正常但角色有个小怪癖/小执念 | 正常日常配乐(为反差蓄力) |
+| 小失控 | 意外 + 好笑 | 一个小意外引发连锁反应 | 配乐继续正常(反差加强喜感) |
+| 误会升级 | 尴尬 + 荒谬 | 越解释越糟糕、越补救越崩塌 | 轻快节奏加速暗示失控 |
+| 大失控 | 彻底混乱 | 所有角色同时陷入各自的荒谬 | 欢快配乐全开或突然全静 |
+| 真情流露 | 笑中带泪 | 荒诞中突然露出真实的情感 | 配乐骤停,只剩环境音 |
+| 回归/抖最后一个包袱 | 释然 + 会心 | 一切归于平静后再来一个小笑点 | 轻松收尾旋律 |
+
+- **尴尬升级是喜剧核心叙事** — 尴尬感的递进:
+ - **一级**:角色自己尴尬(说错话、摔倒)
+ - **二级**:旁人也看到了角色的尴尬(社死)
+ - **三级**:角色试图补救但更尴尬(越描越黑)
+ - **四级**:完全失控,所有人都尴尬(集体社死)
+- **空间是喜剧的帮凶** — 善用空间元素制造喜感:太小的空间挤太多人、本应庄严的场合发生荒唐事、完全不匹配的人出现在完全不匹配的地点
+- **镜头意图写"喜感来源"而非"拍什么"** — "用全景是为了让观众看到他身后还站着十个不知情的人"优于"用全景拍现场"。喜感来源清晰了,分镜自然对
+
+---
+
+## 四、声音与音乐方向
+
+### 喜剧搞笑叙事要点
+
+- **反差配乐是喜感利器** — 荒谬的画面配一本正经的配乐(古典乐/庄严进行曲)比配欢快音乐更好笑。音画反差本身就是一种"预期违背"
+- **突然静默 = 最大笑点** — 热闹的配乐突然全部停掉,画面中角色做了一件极其荒谬的事——寂静中的荒谬比有配乐时更有冲击力
+- **避免"搞笑配乐"** — 不要用"听起来就很搞笑"的配乐(小丑号角、打击乐搞笑音效)。让画面自己产生喜感,配乐保持中性甚至严肃,反差出喜感
+- **环境音的喜剧功能** — 特定环境音可以成为笑点的一部分:庄严演讲中远处传来的手机铃声、安静考场里突然响起的肚子叫声
+- **音乐情绪模型** —
+
+| 情绪阶段 | 音乐策略 | 覆盖率 |
+|---|---|---|
+| 正常铺垫 | 正经配乐(与即将到来的荒谬形成反差) | 中 |
+| 小失控 | 配乐不变(假装一切正常) | 中 |
+| 大失控 | 配乐加速或突然全停 | 极端 |
+| 笑点释放 | 短暂静默后恢复 | 低→中 |
+| 真情流露 | 配乐骤停,纯环境音 | 无 |
+| 回归日常 | 轻松收尾 | 中低 |
+
+- **"节拍器"式喜感** — 重复性笑点(同一个失误反复发生)可用固定节奏的背景音强化"又来了"的预期感,第三次打破节奏时笑点最大化
+
+---
+
+## 五、构图与景别叙事
+
+### 喜剧搞笑叙事要点
+
+- **三大核心构图的叙事功能** —
+ - **反应镜头构图** — 把笑点制造者放前景/画外,把反应者放画面中心。很多时候旁观者的表情比笑点本身更好笑
+ - **全景暴露构图** — 全景揭示角色不知道的信息(他身后站着人/他裤子破了/背景有荒谬的东西),让观众比角色多看到一层
+ - **错位并置构图** — 两个不匹配的元素同框:穿西装的人和一只鸡、庄严的仪式和混乱的背景,错位并置本身就是喜感
+- **中心构图的"聚光灯"效果** — 中心构图在喜剧中制造"全世界都在看你出丑"的社死感,留给角色最尴尬的瞬间
+- **画面信息差** — 喜剧构图的核心是"观众看到了角色没看到的":画面左边角色在认真演讲,画面右边有人举着写错字的横幅
+- **景别即喜感节奏** —
+ - **远景/全景** — 暴露全局荒谬、揭示角色不知道的信息
+ - **中景** — 标准叙事、对话互动、角色碰撞
+ - **近景** — 反应镜头的核心景别,捕捉"啊?""什么?"的表情
+ - **特写** — 放大尴尬细节:抽搐的嘴角、僵住的笑容、冒冷汗的额头
+- **大特写的"定格笑点"** — 大特写在喜剧中是"定格放大"的功能:一只放错位置的手、一个写错的名牌、一张完全对不上的表情。停留 1-2s 就够
+
+---
+
+## 六、镜头运动与节奏
+
+### 喜剧搞笑叙事要点
+
+- **冷静旁观是喜剧的最佳视角** — 60% 以上镜头应为固定机位,以"冷静旁观者"的姿态记录荒谬。镜头越冷静,画面中的荒谬越对比鲜明
+- **急推 = 反应放大** — 某个角色听到/看到荒谬的事,快速推向其面部,放大"石化/震惊/难以置信"的反应。这是喜剧中最高频的运镜
+- **甩镜 = 信息揭示** — 从角色A迅速甩到角色B/某个荒谬的东西,速度本身带有"等等!那是什么?!"的喜感
+- **稳定vs混乱** — 铺垫段落用稳定机位(一切正常);失控段落机位可以轻微不稳定甚至手持跟拍(跟着混乱走)。稳定→不稳定的转换本身就标记了"开始搞笑了"
+- **运镜即节奏** — 固定 = 冷静旁观/铺垫;急推 = 反应放大;甩镜 = 信息揭示;手持跟拍 = 跟随混乱;缓推 = 发现荒谬细节
+- **慢动作的喜剧功能** — 升格在喜剧中用于"灾难发生的瞬间":东西飞出去、人滑倒、蛋糕砸脸——慢动作让观众有足够时间"预见灾难"却无法阻止,笑点在预见中积蓄
+- **不要频繁运镜** — 喜剧不需要花哨运镜。镜头越简单朴素,角色的荒谬越突出。运镜过多会分散对笑点的注意力
diff --git a/data/skills/story_skills/Comedy_humor/driector_skills/director_storyboard_table_narrative.md b/data/skills/story_skills/Comedy_humor/driector_skills/director_storyboard_table_narrative.md
new file mode 100644
index 0000000..914353f
--- /dev/null
+++ b/data/skills/story_skills/Comedy_humor/driector_skills/director_storyboard_table_narrative.md
@@ -0,0 +1,84 @@
+---
+name: director_storyboard_table_narrative
+description: 分镜表叙事手法 · 喜剧搞笑 — 定义喜剧搞笑在分镜表中的景别策略、运镜节奏、时长把控、笑点分镜设计、多人调度与转场手法。适用于任何视觉风格。
+metaData: director_skills
+---
+
+# 分镜表叙事手法 · 喜剧搞笑 · 技法参考
+
+---
+
+## 一、分镜表定位
+
+分镜表是导演将剧本转化为镜头语言的核心工具。表单字段由导演根据项目需要自行设定(分镜号、景别、运镜、时长、人物、事件、台词、光影、情绪、转场等),以下仅提供喜剧搞笑叙事类型下的技法参考。
+
+---
+
+## 二、景别选择
+
+- **反应镜头是喜剧王牌** — 笑点发生后必须紧跟一个"反应镜头"(旁观者的表情/当事人的石化),用近景捕捉。没有反应镜头的笑点是哑炮
+- **全景暴露信息** — 喜剧中全景的核心功能是"让观众看到角色看不到的荒谬":身后的人、背景的异常、即将发生的灾难。全景 = 给观众上帝视角
+- **中景承载对话** — 角色互动/碰撞的主力景别,保持足够信息量让观众看到肢体语言和表情
+- **特写定格尴尬** — 特写在喜剧中放大尴尬细节:写错的字、错放的东西、僵住的笑容。停留短暂(1-2s)但冲击力足够
+- **定场镜头要有喜感种子** — 喜剧的定场镜头可以在看似正常的场景中埋入一个"不对"的细节(背景有人在做奇怪的事/标语写错了),为后续笑点做铺垫
+
+---
+
+## 三、运镜节奏
+
+- **固定机位为主** — 60% 以上镜头固定,冷静旁观的视角让荒谬更突出
+- **急推 = 反应放大** — 笑点后快速推向反应者面部,放大震惊/石化/难以置信。是喜剧分镜中使用最高频的运镜
+- **甩镜 = 揭示荒谬** — 从A迅速甩到B,用速度本身传递"什么?!"的惊讶感
+- **跟拍失控** — 角色陷入混乱时(追逐、逃跑、手忙脚乱)用手持跟拍,摇晃感传递"一切失控"
+- **缓推 = 发现细节** — 缓慢推向一个荒谬的细节,给观众"等等让我看清楚……哈!"的发现式笑点
+- **运镜不抢戏** — 喜剧运镜的原则是"不抢角色的戏"。运镜越简洁越好,花哨运镜会分散对笑点的注意力
+
+---
+
+## 四、时长把控
+
+- **铺垫给足时长** — 铺垫镜头 3-4s,让观众充分建立预期。铺垫不够充分,包袱就不响
+- **包袱精准节拍** — 抖包袱的镜头 1.5-2s,干脆利落。笑点的冲击力在于"突然",拖了就不好笑
+- **反应镜头 2-3s** — 给旁观者/当事人的反应足够的"定格"时间,让观众消化笑点
+- **留白笑点** — 笑点后留 1-2s 的"空白"(角色沉默/空气凝固),给观众笑的时间。如果立刻推进叙事,笑声会被剪断
+- **黄金 6 秒规则** — 喜剧节奏要求单镜头通常不超过 4s(比其他类型更快),只有铺垫和真情段落可以到 5-6s
+- **三遍法则的时长递进** — 同一个笑点重复三遍时:第一遍正常时长→第二遍稍短(观众已知预期)→第三遍最短或最长(打破模式)
+
+---
+
+## 五、笑点分镜设计
+
+- **铺垫→包袱的镜头结构** — 铺垫镜头(中景/近景,角色认真做某事)→ 包袱镜头(全景揭示荒谬/特写放大错误/近景反应石化)。两个镜头构成一个笑点单元
+- **视觉笑点不需要台词** — 纯画面笑点(角色踩到东西、背景有荒谬事件、道具放错位置)用全景或带运镜的中景呈现,不依赖对白
+- **信息差笑点** — 观众知道但角色不知道的信息制造期待感笑点。分镜上:全景给观众信息→切回角色中景/近景(角色浑然不知)→灾难发生
+- **连锁反应笑点** — 一个小失误引发多米诺骨牌式连锁崩塌。分镜用快速硬切串联每个"倒塌"环节(2s/镜),节奏越来越快
+- **能一镜拍完的喜剧场面不要拆** — 一个长镜头中角色从正常逐渐走向失控,全过程一镜到底比碎切更有"不可挽回"的喜感
+
+---
+
+## 六、多人喜剧调度
+
+- **群戏反应链** — 笑点发生后依次切每个旁观者的反应:A惊呆→B偷笑→C假装没看见→D比当事人更尴尬。反应链本身就是笑点的延续
+- **角色碰撞用对切** — 性格反差大的两个角色对话用正反打对切,节奏加快(每句 1.5-2s),碰撞感通过剪辑速度外化
+- **旁观者是最好的笑点放大器** — 分镜中始终保留一个"旁观者位":一个路人、一个不相关的角色、一只宠物——他们的反应帮助观众"确认"这件事确实很荒谬
+- **群体失控用全景** — 多人同时陷入混乱时用全景一镜呈现,让观众同时看到所有荒谬。全景的信息量爆炸本身就是喜感
+
+---
+
+## 七、台词与节奏
+
+- **台词节拍决定笑点** — 喜剧台词的笑点在于节拍:铺垫语速正常→包袱前微停顿(0.5s)→包袱一句话干脆落地。停顿是笑点的"引线"
+- **吐槽要快** — 吐槽/回怼的台词必须在上一句话结束后 0.5s 内接上,快速反击才有爽感。分镜中吐槽镜头不给额外铺垫,直接硬切近景
+- **沉默的喜感** — 荒谬的事发生后角色集体沉默 2-3s,比任何台词都好笑。沉默中角色的微表情(假装没事/石化/缓慢转头)是笑点本体
+- **重复的力量** — 同一句话/同一个动作重复三遍,第三遍变化(说错/做错/自己都笑了)。分镜中三遍用相同景别+相同构图,第三遍打破
+- **旁白的吐槽功能** — 喜剧中旁白可以充当"毒舌吐槽者",用冷静的语气描述荒谬的画面。旁白配远景或全景效果最佳
+
+---
+
+## 八、转场设计
+
+- **荒谬对比切** — 从一个极端直接硬切到另一个极端(角色说"绝不可能"→下一镜角色正在做这件事),硬切本身就是笑点
+- **假正经转场** — 用正式/庄重的转场方式(淡入淡出、字幕卡"三小时后")来过渡荒谬内容,反差出喜感
+- **同场景内快速硬切** — 喜剧的场景内剪辑节奏偏快,硬切为主,不拖泥带水
+- **反差蒙太奇** — 角色口述的"美好计划"与实际执行的"灾难现场"交替剪辑,理想vs现实的反差构成持续喜感
+- **打破第四面墙** — 角色突然看向镜头/对观众说话的瞬间用正面近景+突然静止,制造"你看到了吧?"的共谋感
diff --git a/data/skills/story_skills/Comedy_humor/images/title.png b/data/skills/story_skills/Comedy_humor/images/title.png
new file mode 100644
index 0000000..97c8dd9
Binary files /dev/null and b/data/skills/story_skills/Comedy_humor/images/title.png differ
diff --git a/data/skills/story_skills/Coming_of_age/README.md b/data/skills/story_skills/Coming_of_age/README.md
new file mode 100644
index 0000000..8b09c3a
--- /dev/null
+++ b/data/skills/story_skills/Coming_of_age/README.md
@@ -0,0 +1,50 @@
+# 青春成长 · 导演叙事手法技能包
+
+## 简介
+
+本技能包为 **青春成长** 类型故事提供一套完整的导演叙事手法参考,涵盖从宏观叙事规划到微观分镜执行的全流程指导。适用于任何视觉风格。
+
+## 核心理念
+
+- **第一次的珍贵** — 青春叙事的核心魅力在于"第一次":第一次心动、第一次失败、第一次告别、第一次为别人勇敢
+- **笨拙即真实** — 青春的表达方式就是笨拙的:说错话、做错事、错过又追回来。完美的青春不动人,慌张的才动人
+- **时间不可逆** — 青春叙事的底层情感是"再也回不去",所有甜蜜和遗憾都因为不可重来而珍贵
+- **群像共振** — 青春不是一个人的事,朋友、对手、老师、家人构成的群像共振才是完整的青春
+
+## 文件结构
+
+```
+Coming_of_age/
+├── README.md ← 本文件
+└── driector_skills/
+ ├── director_planning_narrative.md ← 叙事规划手法
+ └── director_storyboard_table_narrative.md ← 分镜表叙事手法
+```
+
+## 技能文件说明
+
+### 1. 叙事规划手法 (`director_planning_narrative.md`)
+
+导演在 **叙事规划阶段** 使用的技法参考,定义青春成长在主题立意、情感节奏、场景情绪设计与声音方向上的整体规划方法。
+
+| 章节 | 内容概要 |
+|---|---|
+| 主题立意与情感内核 | 第一次的珍贵、笨拙即真实、时间不可逆、群像共振 |
+| 叙事结构与节奏规划 | 碎片化叙事、情绪过山车、成长弧线、回忆与当下 |
+| 分场景情绪设计 | 六大典型青春段落设计、空间记忆绑定、季节叙事 |
+| 声音与音乐方向 | 青春音景、沉默的成长、音乐记忆锚点、环境即时代 |
+| 构图与景别叙事 | 群像与个体、距离变化叙事、空间的情感记忆 |
+| 镜头运动与节奏 | 活力与沉静交替、奔跑跟拍、回忆运镜、定格瞬间 |
+
+### 2. 分镜表叙事手法 (`director_storyboard_table_narrative.md`)
+
+导演在 **分镜表制作阶段** 使用的技法参考,定义青春成长在分镜表中的景别情感映射、运镜活力感、时长把控、镜头合并与转场逻辑。
+
+| 章节 | 内容概要 |
+|---|---|
+| 分镜表定位 | 分镜表作为青春情感节奏控制核心工具的定位说明 |
+| 景别选择 | 群像景别、特写捕捉微表情、远景的孤独与自由 |
+| 运镜节奏 | 活力跟拍、沉静凝视、回忆缓移、青春节奏感 |
+| 时长把控 | 日常碎片时长、情感段落拉长、沉默的分量 |
+| 镜头合并策略 | 日常碎片整合、群戏一镜涵盖、叙事密度 |
+| 一镜到底 | 校园穿越、奔跑追逐、告别长镜头 |
diff --git a/data/skills/story_skills/Coming_of_age/driector_skills/director_planning_narrative.md b/data/skills/story_skills/Coming_of_age/driector_skills/director_planning_narrative.md
new file mode 100644
index 0000000..cc9b80e
--- /dev/null
+++ b/data/skills/story_skills/Coming_of_age/driector_skills/director_planning_narrative.md
@@ -0,0 +1,108 @@
+---
+name: director_planning_narrative
+description: 叙事手法技法 · 青春成长 — 定义青春成长类型在主题立意、情感节奏、场景情绪设计与声音方向上的叙事规划方法。适用于任何视觉风格。
+metaData: director_skills
+---
+
+# 叙事手法 · 青春成长 · 技法参考
+
+---
+
+## 一、主题立意与情感内核
+
+### 青春成长叙事要点
+
+- **第一次的珍贵** — 青春叙事的核心魅力在于"第一次"的冲击力:第一次心动、第一次失败、第一次说再见、第一次为别人挺身而出。主题立意应围绕"人生中第一次经历某种情感"的鲜烈与慌张
+- **笨拙即真实** — 青春的表达方式本质上就是笨拙的。说错的话、做错的事、错过又拼命追回来的勇气——完美的青春不动人,手忙脚乱的才动人
+- **时间不可逆是底层情感** — 青春叙事的所有甜蜜和遗憾都有一个共同的底色:"再也回不去了"。这种不可逆转感让每一个微小的瞬间都有了重量
+- **离场感受建议方向** — 怀念 / 释然 / 微笑中泛泪 / 想回到那一天。避免"爽感""逆袭"等功利化方向
+- **成长的疼痛** — 青春叙事不能只有甜蜜。真正的成长来自疼痛:友谊的裂缝、理想的破灭、第一次意识到"世界不是我想的那样"。甜蜜是表层,疼痛才是成长的发动机
+
+---
+
+## 二、叙事结构与节奏规划
+
+### 青春成长叙事要点
+
+- **碎片化叙事是自然形态** — 青春的记忆本就是碎片化的:课间的一句话、放学路上的夕阳、某天突然下的雨。叙事结构可以接受更碎片化的段落组织,用情绪线而非事件线串联
+- **情绪过山车** — 青春的情绪变化是剧烈的:上一秒笑到肚子疼,下一秒眼眶就红了。段落间的情绪切换可以比其他类型更急促,这本身就是青春的质感
+- **成长弧线不是直线** — 角色的成长不是"不懂→懂了"的直线,而是"以为懂了→被打脸→真的懂了"的曲折。每次以为长大了,都会发现还差得远
+- **回忆与当下的双线** — 青春叙事常用"现在回望过去"的双线结构。回忆线充满鲜活细节,当下线负责赋予这些细节"再也回不去"的重量
+- **群像的交汇与分离** — 青春群像的核心叙事模型是"相聚→共同经历→各奔东西"。最催泪的不是分离本身,而是"我们曾经以为会永远在一起"
+- **"那一天"模型** — 青春叙事中每个重要转折应绑定到一个具体的"那一天":那天下了很大的雨、那天是运动会、那天放学特别早。具体的时间锚点让回忆有了触感
+
+---
+
+## 三、分场景情绪设计
+
+### 青春成长叙事要点
+
+- **情绪目标用青春体感词** — 不说"开心",说"笑到弯腰然后突然对视愣住"。不说"难过",说"走出校门才敢掉眼泪"。青春的情绪永远是混合的、矛盾的
+- **典型情绪段落与设计** —
+
+| 段落类型 | 情绪方向 | 叙事手法 | 音乐建议 |
+|---|---|---|---|
+| 日常欢闹 | 活力 + 无忧 | 群戏嬉闹、碎片化日常、快节奏剪辑 | 轻快节奏,吉他/口哨/手拍 |
+| 暗恋萌芽 | 心动 + 紧张 | 偷看、刻意走同一条路、碰到手指的触电 | 轻柔旋律,节奏暗示心跳 |
+| 友谊考验 | 委屈 + 倔强 | 误解、冷战、一个人吃午饭、假装没事 | 减少配乐,环境音凸显孤立 |
+| 拼搏/比赛 | 紧张 + 热血 | 倒计时压力、团队配合、最后一搏 | 鼓点渐强,节奏加速 |
+| 告别/毕业 | 不舍 + 释然 | 清空抽屉、最后一次一起走、签名本 | 从热闹渐变安静,最后只剩一个声音 |
+| 回望/成长 | 怀念 + 温暖 | 多年后重回旧地、翻开旧物、恍然如昨 | 温暖器乐缓入,带一丝苍凉 |
+
+- **"空间记忆绑定"是叙事核心工具** — 青春叙事中特定空间应与特定情感绑定,反复出现形成情感共鸣:
+ - **教室/操场**:日常/集体记忆/归属感
+ - **回家的路**:暗恋/独处/心事的空间
+ - **秘密基地**(天台/树下/旧仓库):友谊/承诺/只属于我们的空间
+- **季节即情绪** — 善用季节变化传递时间流逝与情绪转换:春 = 萌芽/初见;夏 = 热烈/冲突;秋 = 离别/成熟;冬 = 沉淀/回望
+- **"旁边的人"视角** — 青春叙事的高级手法是"从旁边的人看到主角的变化"——老师在窗外看到的背影、朋友偷偷注意到的神情变化、家长发现孩子不再需要接送
+
+---
+
+## 四、声音与音乐方向
+
+### 青春成长叙事要点
+
+- **青春有自己的音景** — 上课铃、球鞋在地板上的摩擦、翻书声、远处操场的哨声、自行车链条的咔哒。这些声音构成"青春的声音质感",每场戏应标注 1-2 个标志性青春音效
+- **音乐是记忆锚点** — 青春叙事中的主题音乐有特殊功能:当同一段旋律在不同段落响起,观众会自动调出之前的情感记忆。建议在关键段落使用同一主题的不同编排
+- **沉默的成长** — 角色真正"长大"的瞬间往往是沉默的:不再争辩、不再追赶、站在原地目送。这些成长节点应去掉配乐,只留环境音
+- **环境音即时代** — 用环境音传递时代背景:教室的广播体操音乐、街边小店的流行歌、夏天的蝉鸣。声音比画面更能唤起时代共鸣
+- **音乐情绪递进模型** —
+
+| 情绪阶段 | 音乐策略 | 覆盖率 |
+|---|---|---|
+| 日常欢闹 | 轻快节奏,活力器乐 | 中高 |
+| 暗涌心事 | 轻柔旋律,低音量 | 中低 |
+| 冲突爆发 | 音乐骤停或急促节奏 | 极端 |
+| 和解回暖 | 主题旋律温暖变奏 | 中 |
+| 告别离场 | 从群体合奏渐变为单一器乐 | 中→低 |
+
+- **笑声与哭声的距离** — 青春叙事中最动人的音效处理是"笑声突然变成抽泣"或"哭着哭着笑出来"。情绪的快速切换不需要配乐辅助,自然的人声就够了
+
+---
+
+## 五、构图与景别叙事
+
+### 青春成长叙事要点
+
+- **三大核心构图的叙事功能** —
+ - **群像构图** — 多人同框/并排/围坐,传递"我们在一起"的归属感与集体记忆
+ - **前后景构图** — 一人在前一人在后,传递"看着你但你不知道"的暗恋/注视
+ - **对称构图** — 两人并排走路/坐在同一条长椅上,传递"平等的陪伴"
+- **景别随关系变化** — 人物初识时景别偏远偏散(各自在画面不同位置);关系升温后景别收紧(同框/近景);分离时景别再次拉远(各自的远景对切)
+- **空间的情感记忆** — 同一个空间在不同段落反复出现时,构图应有微妙变化来传递情感变化:同一条放学路,从两人并排到一人独走;同一个教室座位,从满到空
+- **远景的双重功能** — 青春叙事中远景既可以传递"自由/广阔"(操场奔跑、天台眺望),也可以传递"渺小/孤独"(一个人走在放学后空荡的街道)
+- **大特写的青春功能** — 大特写用于捕捉青春中稍纵即逝的微表情:偷笑的嘴角、红了的耳尖、眨掉泪水的睫毛
+- **"那一天"的视角锚定** — 回忆段落的构图可以刻意采用"记忆中的视角":不完美的角度、局部遮挡、仿佛是从某个位置偷偷看到的
+
+---
+
+## 六、镜头运动与节奏
+
+### 青春成长叙事要点
+
+- **动静交替是青春节奏** — 青春叙事的镜头节奏应在"活力动态"与"沉静凝视"之间频繁切换。跑动→突然停下→回头,这种节奏本身就是青春
+- **跟拍奔跑 = 青春的标志运镜** — 跟随角色奔跑(追公交/追人/赛跑/冲刺)是青春叙事最有辨识度的运镜。跟拍时保持微微不稳,传递"拼命向前"的生命力
+- **缓推 = 发现/注意到** — "注意到了那个人"的心理暗示,适合暗恋、发现朋友在哭、注意到某个变化
+- **缓拉 = 离开/长大** — "从这个地方/这个人身边离开"的心理暗示,适合告别、毕业、意识到一切已经不同
+- **静止凝视 = 成长瞬间** — 角色真正长大的瞬间,镜头应该停下来,静静地看。不推不拉不摇,只是看着这个人在这一刻变了
+- **运镜即情感温度** — 晃动跟拍 = 活力/混乱;平稳缓移 = 温暖/日常;静止 = 沉思/成长;缓慢拉远 = 告别/释然
diff --git a/data/skills/story_skills/Coming_of_age/driector_skills/director_storyboard_table_narrative.md b/data/skills/story_skills/Coming_of_age/driector_skills/director_storyboard_table_narrative.md
new file mode 100644
index 0000000..adda13e
--- /dev/null
+++ b/data/skills/story_skills/Coming_of_age/driector_skills/director_storyboard_table_narrative.md
@@ -0,0 +1,88 @@
+---
+name: director_storyboard_table_narrative
+description: 分镜表叙事手法 · 青春成长 — 定义青春成长在分镜表中的景别情感映射、运镜活力感、时长把控、镜头合并与转场逻辑。适用于任何视觉风格。
+metaData: director_skills
+---
+
+# 分镜表叙事手法 · 青春成长 · 技法参考
+
+---
+
+## 一、分镜表定位
+
+分镜表是导演将剧本转化为镜头语言的核心工具。表单字段由导演根据项目需要自行设定(分镜号、景别、运镜、时长、人物、事件、台词、光影、情绪、转场等),以下仅提供青春成长叙事类型下的技法参考。
+
+---
+
+## 二、景别选择
+
+- **群像景别优先** — 青春叙事的大量段落是群戏(课堂/课间/聚会/比赛)。全景和中景是群戏的主力,确保多人同框传递"在一起"的归属感
+- **特写捕捉微表情** — 青春中大量情感是通过微表情传递的(偷笑、眼眶泛红、紧张咽口水)。在关键情感节点安排特写,捕捉这些稍纵即逝的瞬间
+- **远景的自由与孤独** — 远景在青春叙事中有双重功能:操场奔跑的远景 = 自由/活力;放学后空街的远景 = 孤独/思考。根据情绪目标选择
+- **大特写要有青春感** — 大特写(红了的耳尖/紧攥的手/眨掉泪水的睫毛)用于捕捉青春中"嘴上没说但身体诚实"的瞬间
+- **定场用生活化镜头** — 青春叙事的定场不需要宏大空镜,一个贴着便利贴的课桌、挂着球衣的椅背、堆满试卷的角落就够了
+
+---
+
+## 三、运镜节奏
+
+- **动静交替** — 50% 静止机位 + 30% 跟拍/缓推 + 20% 手持微晃。青春叙事的运镜节奏本身就应该有"一会儿活蹦乱跳一会儿安静下来"的质感
+- **跟拍奔跑** — 追随角色跑动的跟拍是青春叙事的标志运镜。保持微微不稳,传递生命力。适合追人、赶路、比赛冲刺
+- **缓推 = 注意到/发现** — 观众(和角色)注意到某人/某事的心理暗示。适合暗恋发现、注意到朋友的异常、看到毕业栏
+- **缓拉 = 离开/放手** — 从角色/场景缓慢退开,适合告别、毕业、独自走开
+- **手持微晃 = 日常真实感** — 日常群戏段落用轻微手持晃动,增加"在场感"和"随手记录"的纪实质感
+
+---
+
+## 四、时长把控
+
+- **日常碎片 2-3s** — 欢闹日常的碎片镜头节奏快,每个镜头 2-3s,用数量和节奏传递"每一天都飞快过去"
+- **情感段落拉长 4-5s** — 心动、争吵、和解等情感段落镜头时长应比日常多 50%,给情绪发酵的时间
+- **沉默镜头 3-4s** — 无台词的成长顿悟镜头(角色站在原地看着别人走远)需要足够时长让观众感受到"这一刻他/她长大了"
+- **远景/空镜 4-6s** — 季节空镜、校园空镜用于标记时间流逝,给足时长让观众"感受到时间在走"
+- **对话近景 3-4s** — 青春对话节奏偏快,但关键对白(表白/争吵/道歉)应适当放慢
+- **黄金法则:碎片堆出厚度** — 青春叙事的情感厚度不来自单个长镜头,而来自大量碎片的累积。宁可多几个 2-3s 的碎片,不要一个拖沓的长镜头
+
+---
+
+## 五、镜头合并策略(去 AI 感)
+
+- **日常碎片保留碎切** — 与其他类型不同,青春叙事中日常欢闹段落的碎切(快速切换的日常片段)本身就是叙事手法,不需要强行合并
+- **情感段落一镜完成** — 关键情感段落(告白/争吵/和解)应尽量用完整的长镜头而非碎切,给情绪连续发展的空间
+- **群戏一镜涵盖** — 多人同场的群戏能用一个带运镜的镜头涵盖的,不拆成逐个人物的碎切。保持"我们在一起"的整体感
+- **导演思维检验** — 写完分镜后自检:日常段落是否有碎片感(有 = 对)?情感段落是否有连续感(有 = 对)?两者节奏有反差(有 = 对)?
+
+---
+
+## 六、一镜到底(长镜头合并)
+
+- **适用条件** — 角色在校园中穿行、追逐奔跑、从一个空间到另一个空间的心情转换。青春叙事中长镜头的价值是"跟着这个人经历这一刻"
+- **典型场景** — 角色穿越走廊跑向操场、追着公交车跑、走过毕业后空荡荡的教室、在人群中寻找某个人
+- **标注方式** — 在运镜字段写明完整路径(如"一镜到底:跟拍角色从教室冲出→穿过走廊→推开门到操场→落幅角色停住回头"),画面描述中交代起幅和落幅
+- **时长放宽** — 因持续跟随和信息更新,可突破单镜 6s 上限,但不超过 12s
+- **情绪连续性** — 长镜头内的情绪应有变化弧线(从着急到释然/从开心到失落),不要让长镜头成为情绪的平坦段
+
+---
+
+## 七、人物互动设计
+
+- **群戏互动要有层次** — 多人嬉闹场景中每个人应有各自的小动作/小表情,不要所有人做同一个反应。层次感 = 真实感
+- **青春互动用笨拙** — 碰到手缩回来、想说话又闭嘴、故意走另一条路又偷看——青春的互动核心是"想靠近但不知道怎么办"
+- **身体距离即关系** — 分镜表中标注人物间的距离变化:陌生时隔着一个座位、熟悉后并肩而坐、吵架后各站一边、和好后又靠在一起
+
+---
+
+## 八、台词与留白
+
+- **青春台词宜短宜碎** — 青春中的对话是碎片化的:半句话被打断、话说一半改口、嘴上说"没事"但表情出卖一切
+- **重要的话说不出口** — 青春叙事中最有力的台词往往是"没能说出口的话"。用沉默、转身、假装没事来替代直白表达
+- **群戏的叠音** — 青春群戏中多人同时说话、互相打断、七嘴八舌——不追求每句话都听清,混乱本身就是青春的声音
+
+---
+
+## 九、转场设计
+
+- **日常段落用快切蒙太奇** — 表达"每一天都差不多但每一天都珍贵"的日常段落,用快速硬切的碎片蒙太奇:上课→课间→放学→上课→课间……
+- **情感转折用空镜过渡** — 情绪发生重大变化时,插入一个季节/校园空镜做情绪缓冲
+- **时间跨度用对比转场** — 同一个场景、同一个角度,但细节变了(黑板内容不同/座位上的人换了/树叶的颜色变了),用硬切的对比传递时间流逝
+- **默认硬切** — 同场戏内镜头间用硬切,保持青春的明快感
diff --git a/data/skills/story_skills/Coming_of_age/images/title.png b/data/skills/story_skills/Coming_of_age/images/title.png
new file mode 100644
index 0000000..e90ea8b
Binary files /dev/null and b/data/skills/story_skills/Coming_of_age/images/title.png differ
diff --git a/data/skills/story_skills/Family_warmth/README.md b/data/skills/story_skills/Family_warmth/README.md
new file mode 100644
index 0000000..033c705
--- /dev/null
+++ b/data/skills/story_skills/Family_warmth/README.md
@@ -0,0 +1,50 @@
+# 家庭温情 · 导演叙事手法技能包
+
+## 简介
+
+本技能包为 **家庭温情** 类型故事提供一套完整的导演叙事手法参考,涵盖从宏观叙事规划到微观分镜执行的全流程指导。适用于任何视觉风格。
+
+## 核心理念
+
+- **平凡即伟大** — 家庭叙事的力量不在戏剧性事件,而在日复一日的陪伴、妥协与无条件的爱
+- **爱在嘴边却说不出** — 中国式家庭情感表达的核心矛盾:最深的爱用最笨拙的方式表达——一碗汤、一件外套、一句"路上小心"
+- **代际回响** — 当孩子做了父母同样的动作、说了同样的话,代际间的情感传递才真正完成
+- **日常的神圣** — 一家人吃饭、一起看电视、接孩子放学——这些日常场景在家庭叙事中拥有仪式般的神圣感
+
+## 文件结构
+
+```
+Family_warmth/
+├── README.md ← 本文件
+└── driector_skills/
+ ├── director_planning_narrative.md ← 叙事规划手法
+ └── director_storyboard_table_narrative.md ← 分镜表叙事手法
+```
+
+## 技能文件说明
+
+### 1. 叙事规划手法 (`director_planning_narrative.md`)
+
+导演在 **叙事规划阶段** 使用的技法参考,定义家庭温情在主题立意、情感节奏、场景情绪设计与声音方向上的整体规划方法。
+
+| 章节 | 内容概要 |
+|---|---|
+| 主题立意与情感内核 | 平凡即伟大、笨拙的爱、代际回响、日常神圣 |
+| 叙事结构与节奏规划 | 日常流叙事、情感暗线、代际对照、危机与回归 |
+| 分场景情绪设计 | 六大典型家庭段落设计、空间归属叙事、物件传情 |
+| 声音与音乐方向 | 家的音景、沉默的亲情、音乐克制、生活声即配乐 |
+| 构图与景别叙事 | 家庭空间关系、餐桌构图、距离即关系、门框叙事 |
+| 镜头运动与节奏 | 安稳缓移、旁观者凝视、日常跟随、静止的温度 |
+
+### 2. 分镜表叙事手法 (`director_storyboard_table_narrative.md`)
+
+导演在 **分镜表制作阶段** 使用的技法参考,定义家庭温情在分镜表中的景别温度控制、运镜安稳感、时长把控、镜头合并与转场逻辑。
+
+| 章节 | 内容概要 |
+|---|---|
+| 分镜表定位 | 分镜表作为家庭情感温度控制核心工具的定位说明 |
+| 景别选择 | 日常景别、细节特写的温度、远景的守望 |
+| 运镜节奏 | 安稳缓移、旁观者视角、日常跟随、静止凝视 |
+| 时长把控 | 日常镜头时长、沉默时长、细节停留、呼吸节奏 |
+| 镜头合并策略 | 日常流连续、餐桌一镜、生活动线整合 |
+| 一镜到底 | 家庭空间穿行、日常动线、等待与归来 |
diff --git a/data/skills/story_skills/Family_warmth/driector_skills/director_planning_narrative.md b/data/skills/story_skills/Family_warmth/driector_skills/director_planning_narrative.md
new file mode 100644
index 0000000..6ce63b8
--- /dev/null
+++ b/data/skills/story_skills/Family_warmth/driector_skills/director_planning_narrative.md
@@ -0,0 +1,108 @@
+---
+name: director_planning_narrative
+description: 叙事手法技法 · 家庭温情 — 定义家庭温情类型在主题立意、情感节奏、场景情绪设计与声音方向上的叙事规划方法。适用于任何视觉风格。
+metaData: director_skills
+---
+
+# 叙事手法 · 家庭温情 · 技法参考
+
+---
+
+## 一、主题立意与情感内核
+
+### 家庭温情叙事要点
+
+- **平凡即伟大** — 家庭叙事的力量不在于戏剧性的大事件,而在于日复一日的陪伴、妥协与无条件的爱。主题立意应聚焦于"那些看似平淡却构成生命底色的日常"
+- **爱在嘴边却说不出** — 家庭情感表达的核心矛盾:最深的爱用最笨拙的方式传递。父亲不说"我爱你"但每天早起做早餐;母亲嘴上唠叨但行李箱里塞满吃的。立意应围绕"不说出口的爱"
+- **代际回响** — 家庭叙事最动人的瞬间是"代际重复":当孩子无意间做了父母年轻时同样的动作、说了同样的话。这种回响赋予家庭叙事"时间的厚度"
+- **离场感受建议方向** — 温暖 / 想家 / 眼眶一热 / 想给家人打个电话。避免"催泪""苦情"等刻意煽情方向
+- **日常的神圣** — 一家人围坐吃饭、一起看电视说闲话、接孩子放学——这些日常场景在家庭叙事中不是"过场",而是最有叙事价值的核心段落。它们的重复本身就是"幸福"的定义
+
+---
+
+## 二、叙事结构与节奏规划
+
+### 家庭温情叙事要点
+
+- **日常流是基本功** — 家庭叙事的节奏应接近"生活的节奏":缓慢、重复、带有规律性。早起→做饭→出门→归来→吃饭→休息,这种日常循环本身就是叙事结构
+- **情感暗线** — 表面上是日常琐碎,底下应有一条情感暗线在缓慢推进(渐行渐远的亲密/正在老去的父母/即将离家的孩子)。暗线不用明说,观众能感受到
+- **代际对照** — 两代人的故事线可以形成对照:父亲当年的选择 vs 孩子此刻的选择;母亲年轻时的梦想 vs 女儿现在的追求。对照中既有传承也有冲突
+- **危机与回归** — 家庭叙事的高潮通常不是"冲突爆发",而是"差一点就散了但最终回归"。分离的威胁让团聚变得珍贵
+- **转折点用行动而非言语** — 家庭矛盾的和解不靠道歉的台词,靠一个行动:默默端来一杯水、把对方爱吃的菜放到面前、雨天去车站接人。行动比千言万语更有家庭叙事的质感
+- **"最后一餐"模型** — 家庭叙事的催泪点往往是"最后一次"的日常:出嫁前最后一顿家常饭、搬家前最后一次在老房子里吃饭、父母送孩子离家。"最后一次"赋予日常以不可承受的重量
+
+---
+
+## 三、分场景情绪设计
+
+### 家庭温情叙事要点
+
+- **情绪目标用生活体感词** — 不说"温暖",说"喝了一口热汤从胃暖到心"。不说"思念",说"翻到旧照片拿起来又放下"。家庭情绪永远是具象的、可触摸的
+- **典型情绪段落与设计** —
+
+| 段落类型 | 情绪方向 | 叙事手法 | 音乐建议 |
+|---|---|---|---|
+| 日常团聚 | 温馨 + 安心 | 吃饭/聊天/做家务,节奏平稳,细节丰富 | 极轻衬底或纯生活音 |
+| 笨拙关心 | 感动 + 心酸 | 不善表达的关心:塞钱/备伞/偷偷打电话 | 无配乐,让行动自己说话 |
+| 代际冲突 | 委屈 + 不解 | 各说各话、冷战、一个转身摔门 | 突然安静,只留呼吸和门声 |
+| 分离/送别 | 不舍 + 克制 | 车站/门口/机场,嘴上说没事但手没松开 | 极简单一器乐或纯环境音 |
+| 和解/回归 | 释然 + 感恩 | 一个拥抱/一顿饭/一句"回来了啊" | 温暖器乐缓缓渐入 |
+| 传承/回响 | 时间的温柔 | 孩子做了父母同样的事,代际情感闭合 | 主题旋律温暖变奏 |
+
+- **"物件传情"是叙事核心工具** — 家庭叙事中情感传递高度依赖具体物件:
+ - **食物**:一碗汤/一盘菜/一个便当 = 最直接的爱的表达
+ - **旧物**:老照片/旧衣服/孩子小时候的画 = 时间的温度
+ - **钥匙/门**:给钥匙 = 这是你的家;留着门 = 永远等你回来
+- **空间即归属** — 家庭叙事中"家"这个空间本身就是最重要的角色。厨房 = 爱的生产地;客厅 = 家人的交集点;孩子的房间 = 独立与牵挂;老房子 = 记忆的容器
+- **"旁观者"视角的温柔** — 家庭叙事的高级手法是"旁观者看到了当事人没看到的":孩子没看到母亲在身后偷偷抹泪、父亲没看到孩子在门缝里看着他
+
+---
+
+## 四、声音与音乐方向
+
+### 家庭温情叙事要点
+
+- **家有自己的音景** — 锅铲翻炒声、水壶烧开的咕嘟声、拖鞋在地板上的啪嗒声、电视机的模糊声——这些声音构成"家的声音",每场戏标注 1-2 个标志性家庭音效
+- **生活声即配乐** — 家庭叙事中最有力的"配乐"往往是生活声本身:切菜的节奏、洗碗的水声、缝纫机的哒哒声。这些声音不需要配乐覆盖,它们本身就是家的旋律
+- **沉默的亲情** — 家人之间最深的情感往往在沉默中:父子一起坐着不说话、母女各做各的事但待在同一个空间。关键亲情段落应去掉配乐,只留生活环境音
+- **配乐极度克制** — 家庭温情配乐覆盖率建议不超过 40%。过度配乐会让温情变成煽情,克制的配乐让观众自己感动
+- **音乐情绪递进模型** —
+
+| 情绪阶段 | 音乐策略 | 覆盖率 |
+|---|---|---|
+| 日常平稳 | 纯生活音或极轻衬底 | 极低 |
+| 暗流涌动 | 单一器乐低音量 | 低 |
+| 冲突爆发 | 突然全场安静 | 无 |
+| 和解回暖 | 温暖器乐缓缓渐入 | 中 |
+| 代际回响 | 主题旋律完整呈现 | 中高 |
+
+- **"回家"的声音** — 家庭叙事中最有仪式感的音效是"回家的声音":钥匙开门声、进门喊一声"我回来了"、拖鞋放好的声音。这些声音每次出现都在重复"家还在"的安心感
+
+---
+
+## 五、构图与景别叙事
+
+### 家庭温情叙事要点
+
+- **三大核心构图的叙事功能** —
+ - **多人同框** — 一家人在同一画面中(吃饭/坐沙发/合影),传递"我们是一家人"的归属感
+ - **前后景分层** — 一人在前做事/一人在后默默注视,传递"看不见的关心"
+ - **门框/窗框构图** — 从门框里看到的家人 = 被保护的空间/即将离开的空间/回忆中的画面
+- **餐桌是核心叙事空间** — 家庭叙事中餐桌出现频率最高。餐桌构图的微妙变化映射家庭关系:满座 = 团圆;空了一个位置 = 缺失;只有两个人 = 相依为命
+- **距离即关系** — 家人间的物理距离映射情感距离:挤在一起 = 亲密/安心;各坐一方 = 冷战/疏远;一人站着一人坐着 = 权力/关心的不对等
+- **远景的守望** — 家庭叙事中远景的核心功能是"守望":站在门口目送的身影、窗边等待归来的剪影、远处越走越远的背影
+- **大特写的亲情功能** — 大特写用于捕捉家庭中"说不出口"的情感细节:母亲颤抖的嘴唇、父亲握紧又松开的手、孩子偷偷红了的眼眶
+- **空间的时间层次** — 同一个家庭空间(客厅/厨房/孩子的房间)在不同段落反复出现时,通过微妙的细节变化传递时间流逝:墙上的照片多了/少了、家具旧了、曾经的玩具变成了课本
+
+---
+
+## 六、镜头运动与节奏
+
+### 家庭温情叙事要点
+
+- **安稳缓移为主** — 家庭叙事的镜头运动应传达"安稳/安心"的感觉。缓慢、平稳、不急不躁。70% 以上镜头为静止或极缓运动
+- **缓推 = 注意到/走近** — "观众注意到了一个温暖的细节"的心理暗示,适合发现角色偷偷做的好事、注意到桌上留的饭、看到门口摆好的鞋
+- **缓拉 = 离开/目送** — "观众/角色退开"的心理暗示,适合送别、离家、从家庭场景退出
+- **旁观者凝视** — 家庭叙事中大量镜头应有"旁观者安静注视"的感觉。镜头不参与、不干扰,只是默默地看着这一家人——像一个温柔的见证者
+- **日常跟随** — 跟随角色在家中的日常动线(从厨房到餐厅端菜、从门口到客厅放东西),用缓慢的跟移传递生活的节奏感
+- **运镜即家的温度** — 静止 = 安稳/陪伴;缓推 = 靠近/关注;缓拉 = 离别/目送;缓慢跟移 = 日常/陪伴;摇镜扫过家人 = 清点幸福
diff --git a/data/skills/story_skills/Family_warmth/driector_skills/director_storyboard_table_narrative.md b/data/skills/story_skills/Family_warmth/driector_skills/director_storyboard_table_narrative.md
new file mode 100644
index 0000000..31e9c3a
--- /dev/null
+++ b/data/skills/story_skills/Family_warmth/driector_skills/director_storyboard_table_narrative.md
@@ -0,0 +1,88 @@
+---
+name: director_storyboard_table_narrative
+description: 分镜表叙事手法 · 家庭温情 — 定义家庭温情在分镜表中的景别温度控制、运镜安稳感、时长把控、镜头合并与转场逻辑。适用于任何视觉风格。
+metaData: director_skills
+---
+
+# 分镜表叙事手法 · 家庭温情 · 技法参考
+
+---
+
+## 一、分镜表定位
+
+分镜表是导演将剧本转化为镜头语言的核心工具。表单字段由导演根据项目需要自行设定(分镜号、景别、运镜、时长、人物、事件、台词、光影、情绪、转场等),以下仅提供家庭温情叙事类型下的技法参考。
+
+---
+
+## 二、景别选择
+
+- **中景是家庭叙事主力** — 家庭叙事大量场景是"家人在一个空间里",中景/全景确保多人同框,传递"在一起"的归属感
+- **特写捕捉说不出口的爱** — 家庭中大量情感不通过语言表达。特写用于捕捉:颤抖的手、偷偷红了的眼眶、嘴角压下去的微笑、默默多夹的一筷子菜
+- **远景的守望功能** — 远景在家庭叙事中主要用于"目送/等待":门口送别的身影、窗边等待的剪影。给远景足够时长(5-6s),让"守望"的情绪充分传递
+- **大特写留给情感溢出瞬间** — 大特写(泛泪的眼/攥紧的手/颤抖的嘴唇)只用于情感再也克制不住的瞬间,一集 2-3 次足够
+- **定场用生活细节** — 家庭叙事的定场不用空旷的建筑外观,用生活细节:冒着热气的厨房、鞋柜旁整齐的拖鞋、冰箱上贴着的便签
+
+---
+
+## 三、运镜节奏
+
+- **默认静止,安稳即温暖** — 70% 以上镜头应为静止机位。家庭叙事中静止传递"安稳/不变/可靠"的安心感
+- **缓推 = 注意到温暖细节** — 缓慢推近一个温暖的细节(桌上留的饭、门口放好的鞋、被子被重新盖好),让观众"发现"那份没说出口的爱
+- **缓拉 = 离开/目送** — 从角色缓慢退开,适合送别、离家、从温暖的家庭场景中渐渐退出
+- **缓慢跟移 = 日常陪伴** — 跟随角色在家中的日常动线,用运镜的平稳传递"这个家的日常节奏"
+- **旁观者视角** — 镜头像一个安静的家人,在一旁默默看着。不参与、不评判,只是带着温柔在场
+
+---
+
+## 四、时长把控
+
+- **日常镜头 3-4s** — 吃饭/聊天/做家务等日常镜头保持舒缓但不拖沓的节奏
+- **沉默镜头 4-5s** — 家人间沉默的陪伴(一起坐着不说话、各做各的事)需要足够时长,让"沉默本身就是幸福"被观众感受到
+- **细节特写 2-3s** — 温暖的生活细节特写(一杯热茶/一件叠好的衣服)给足停留让观众"读到"背后的爱
+- **远景目送 5-6s** — 送别/等待的远景需要更长时间,让"守望"的情绪充分发酵
+- **对话近景 3-4s** — 家庭对话节奏舒缓,每句话之间可以有自然的沉默间隔
+- **黄金法则:不急不赶** — 家庭叙事的一切节奏都应有"家的从容"。匆忙 = 焦虑,从容 = 安心
+
+---
+
+## 五、镜头合并策略(去 AI 感)
+
+- **日常流一镜贯穿** — 家庭日常段落(做饭→端菜→上桌→开吃)应尽量用带运镜的长镜头一气呵成,碎切会破坏"日常的连贯感"
+- **餐桌戏一镜涵盖** — 全家吃饭的场景能用一个缓慢摇移扫过众人的镜头交代的,不拆成逐个人物的碎切
+- **叙事密度优先** — 每个镜头必须推进叙事或传递情感温度,纯装饰性的空间展示应合并到有叙事功能的镜头中
+- **导演思维检验** — 写完分镜后自检:日常段落是否有流畅的生活感?情感段落是否有足够的停留?碎切是否打断了家的安稳节奏?
+
+---
+
+## 六、一镜到底(长镜头合并)
+
+- **适用条件** — 家庭日常动线、从门口到餐桌的归家、做饭到上桌的完整过程。家庭叙事中长镜头的价值是"让观众在这个家里待一会儿"
+- **典型场景** — 角色进门→换鞋→走到厨房→看到桌上留的饭;做饭的全过程(洗菜→切菜→下锅→出锅);送孩子到门口→目送远去
+- **标注方式** — 在运镜字段写明完整路径(如"一镜到底:角色推门进入→跟移经过客厅→到厨房看到桌上的饭→落幅角色站住微笑"),画面描述中交代起幅和落幅
+- **时长放宽** — 家庭日常长镜头因信息持续更新且需要生活节奏感,可突破单镜 6s 上限,但不超过 12s
+- **生活节奏优先** — 长镜头的运动速度应与角色的生活节奏一致,不快不慢,传递"这个家的日常"
+
+---
+
+## 七、人物互动设计
+
+- **家人互动用习惯动作** — 家庭中的互动不是即兴的,而是"习惯性"的:总是帮对方添饭、总是在固定的位置坐着、总是用同一种方式叫对方的名字
+- **不说的爱用行动写** — 分镜表中家庭情感传递优先用行动镜头:多夹一筷子菜、把好吃的推到对方面前、进门第一件事就是看一眼对方在不在
+- **肢体距离即安全感** — 家人间的亲密是"不需要理由的靠近":自然地靠在肩上、无意识地牵手、擦肩而过时的轻轻拍一下
+
+---
+
+## 八、台词与留白
+
+- **家常话最有力** — 家庭叙事中最动人的台词是家常话:"吃了吗""早点睡""路上慢点""到了给我打个电话"。不需要深刻的台词,日常的关心就是最深的爱
+- **重要的话反而说不出** — 家庭叙事中关键情感表达应优先用沉默/行动替代。"我爱你"说不出口,但可以默默给对方添了一碗汤
+- **一句话对应一个镜头** — 家庭对话节奏偏慢,每句话之间留出自然沉默。不要在一个镜头中塞太多对白
+
+---
+
+## 九、转场设计
+
+- **日常用时间节奏转场** — 表达家庭日常的重复性,用"早→中→晚""春→夏→秋→冬"的时间节奏自然转场
+- **场景切换用生活细节** — 不同场景间用一个生活细节空镜(热气腾腾的锅/晾在阳台的衣服/亮着灯的窗户)做过渡
+- **段落切换用缓叠化** — 大段落间(如从"日常"到"送别")用缓慢叠化转场,传递时间的温柔流逝
+- **默认硬切** — 同场戏内镜头间用硬切,保持叙事的干净与自然
diff --git a/data/skills/story_skills/Family_warmth/images/title.png b/data/skills/story_skills/Family_warmth/images/title.png
new file mode 100644
index 0000000..b4064d5
Binary files /dev/null and b/data/skills/story_skills/Family_warmth/images/title.png differ
diff --git a/data/skills/story_skills/Historical_epic/README.md b/data/skills/story_skills/Historical_epic/README.md
new file mode 100644
index 0000000..b0427cb
--- /dev/null
+++ b/data/skills/story_skills/Historical_epic/README.md
@@ -0,0 +1,50 @@
+# 历史史诗 · 导演叙事手法技能包
+
+## 简介
+
+本技能包为 **历史史诗** 类型故事提供一套完整的导演叙事手法参考,涵盖从宏观叙事规划到微观分镜执行的全流程指导。适用于任何视觉风格。
+
+## 核心理念
+
+- **大时代小人物** — 史诗的力量不在于帝王将相,而在于洪流中普通人的挣扎与抉择
+- **命运的不可抗力** — 历史叙事的张力来自"个人意志与时代洪流的碰撞",越是抗争越显悲壮
+- **仪式感即重量** — 登基、盟誓、决战、殉道——关键节点的仪式感赋予事件历史的重量
+- **苍凉底色** — 史诗的情感底色是苍凉而非悲伤,是"知其不可而为之"的壮美
+
+## 文件结构
+
+```
+Historical_epic/
+├── README.md ← 本文件
+└── driector_skills/
+ ├── director_planning_narrative.md ← 叙事规划手法
+ └── director_storyboard_table_narrative.md ← 分镜表叙事手法
+```
+
+## 技能文件说明
+
+### 1. 叙事规划手法 (`director_planning_narrative.md`)
+
+导演在 **叙事规划阶段** 使用的技法参考,定义历史史诗在主题立意、情感节奏、场景情绪设计与声音方向上的整体规划方法。
+
+| 章节 | 内容概要 |
+|---|---|
+| 主题立意与情感内核 | 大时代小人物、命运碰撞、仪式感重量、苍凉底色 |
+| 叙事结构与节奏规划 | 宏微交织、史诗节奏弧、群像叙事、时间跨度处理 |
+| 分场景情绪设计 | 六大典型史诗段落设计、权力空间叙事、仪式场景 |
+| 声音与音乐方向 | 厚重低音、人声力量、战场音景、沉默的庄严 |
+| 构图与景别叙事 | 空间权力关系、群像调度、孤独个体与宏大空间 |
+| 镜头运动与节奏 | 庄重缓移、俯瞰全局、凝视与对峙、史诗长镜头 |
+
+### 2. 分镜表叙事手法 (`director_storyboard_table_narrative.md`)
+
+导演在 **分镜表制作阶段** 使用的技法参考,定义历史史诗在分镜表中的景别权力叙事、运镜庄重感、时长把控、镜头合并与转场逻辑。
+
+| 章节 | 内容概要 |
+|---|---|
+| 分镜表定位 | 分镜表作为史诗叙事节奏控制核心工具的定位说明 |
+| 景别选择 | 宏观与微观交织、远景的史诗价值、特写的人性锚点 |
+| 运镜节奏 | 庄重缓移、俯瞰叙事、对峙静止、仪式运镜 |
+| 时长把控 | 史诗远景时长、仪式段落节奏、对白沉稳节奏 |
+| 镜头合并策略 | 群像整合、战役叙事密度、空间连续性 |
+| 一镜到底 | 战场穿越、仪式全程、时代变迁长镜头 |
diff --git a/data/skills/story_skills/Historical_epic/driector_skills/director_planning_narrative.md b/data/skills/story_skills/Historical_epic/driector_skills/director_planning_narrative.md
new file mode 100644
index 0000000..4777333
--- /dev/null
+++ b/data/skills/story_skills/Historical_epic/driector_skills/director_planning_narrative.md
@@ -0,0 +1,108 @@
+---
+name: director_planning_narrative
+description: 叙事手法技法 · 历史史诗 — 定义历史史诗类型在主题立意、情感节奏、场景情绪设计与声音方向上的叙事规划方法。适用于任何视觉风格。
+metaData: director_skills
+---
+
+# 叙事手法 · 历史史诗 · 技法参考
+
+---
+
+## 一、主题立意与情感内核
+
+### 历史史诗叙事要点
+
+- **大时代小人物** — 史诗叙事的核心不是再现历史事件,而是展现时代洪流中个体的命运。主题立意应聚焦于"一个人的选择如何折射一个时代"
+- **命运的不可抗力** — 历史叙事的张力来自"个人意志与时代洪流的碰撞"。角色越努力抗争,越显出命运的残酷与人性的伟大
+- **仪式感即重量** — 关键历史节点(登基、盟誓、决战、诀别、殉道)必须赋予仪式感。仪式感不是场面大,而是每个动作、每句话都有"不可逆转"的庄重
+- **离场感受建议方向** — 苍凉 / 壮美 / 唏嘘 / 敬畏。避免"爽""解气"等轻浮方向
+- **历史的回响** — 好的史诗叙事让观众感受到"这件事不只发生在那个时代"。用古今相通的人性困境(忠与义的矛盾、个人与集体的冲突)制造跨时代的共鸣
+
+---
+
+## 二、叙事结构与节奏规划
+
+### 历史史诗叙事要点
+
+- **宏微交织是基本功** — 史诗叙事需要在"宏观全景"与"微观个体"之间不断切换。纯宏观会空洞,纯微观会失去史诗感。每个宏大段落都要有个体的情感锚点
+- **史诗节奏弧** — 史诗的节奏不是匀速前进,而是"积蓄→爆发→沉淀"的大波浪。长时间的铺垫与积蓄,换来一次震撼人心的爆发,然后用沉默消化余震
+- **群像叙事** — 史诗通常涉及多条人物线。每条线应有独立的情感弧线,在关键节点交汇。交汇点就是史诗高潮
+- **时间跨度处理** — 历史叙事常跨越数年甚至数十年。用"时间标记事件"而非"日期字幕"来传达时间流逝:白发、废墟上的新草、孩子长大
+- **转折点用沉默而非演说** — 历史转折的处理应优先考虑沉默手段(对视、独坐、凝望远方),而非慷慨陈词。真正的历史抉择往往在沉默中做出
+- **"最后一次"模型** — 史诗叙事的催泪点往往是"最后一次":最后一次回望故城、最后一次举杯、最后一次并肩作战。在叙事规划中标注每个角色的"最后一次"节点
+
+---
+
+## 三、分场景情绪设计
+
+### 历史史诗叙事要点
+
+- **情绪目标用史诗性词汇** — 不说"悲伤",说"目送一个时代落幕的苍凉"。史诗的情绪需要跳出个人层面,具有时代感与命运感
+- **典型情绪段落与设计** —
+
+| 段落类型 | 情绪方向 | 叙事手法 | 音乐建议 |
+|---|---|---|---|
+| 太平盛世 | 繁荣 + 暗流 | 展示秩序与繁华,同时埋入将要崩塌的伏笔 | 庄重器乐,底层暗流涌动 |
+| 风云突变 | 震惊 + 无力 | 秩序崩塌的连锁反应,个体被裹挟 | 突然静默后低频压迫 |
+| 困境抉择 | 煎熬 + 坚定 | 角色在忠与义、生与死之间挣扎,最终做出选择 | 单一乐器独奏,极简 |
+| 决战/对峙 | 壮烈 + 悲怆 | 明知不可为而为之,用行动而非台词表达决心 | 从沉默到器乐渐满 |
+| 代价/牺牲 | 痛 + 敬畏 | 胜利的代价、牺牲者的最后时刻 | 人声合唱或纯环境音 |
+| 尘埃落定 | 苍凉 + 释然 | 一切结束后的沉默,幸存者的回望 | 极简器乐或风声 |
+
+- **"权力空间"是叙事核心工具** — 用空间关系映射权力关系和命运处境:
+ - **高处**:俯视 = 掌权/审判,适合帝王、决策者
+ - **低处**:仰视 = 臣服/渺小,适合受命运摆布的个体
+ - **平视**:对等/对峙,适合势均力敌的关键对话
+- **空间即时代** — 用空间的变化传递时代变迁:曾经繁华的大殿变成废墟、曾经的战场长满野草、空荡的王座。空间自身就是最有力的时代叙事
+- **仪式场景的叙事要求** — 仪式段落(加冕/盟誓/诀别)每个动作都必须有叙事意义:跪下 = 臣服与牺牲;举杯 = 生死之约;转身 = 不可回头。不要流于形式的排场
+
+---
+
+## 四、声音与音乐方向
+
+### 历史史诗叙事要点
+
+- **厚重低音是史诗底色** — 史诗配乐的基底是低音区的厚重感(大提琴、定音鼓、低音号角)。高音区留给关键情感爆发点,日常段落靠低音撑住"历史的重量"
+- **人声的力量** — 史诗叙事中人声(合唱、吟唱、号子)有特殊的叙事功能:军队出征的战歌、送别的挽歌、胜利后的沉默合唱。人声比器乐更能传递"群体的命运"
+- **沉默的庄严** — 关键历史瞬间(王座上的最后决定、行刑前的对视、战场上枪声停止后)应去掉所有配乐,只留环境音或纯静默。沉默赋予这些瞬间"历史正在发生"的重量
+- **环境音承载时代质感** — 每场戏应标注核心环境音来传递时代氛围:铁蹄声、旗帜的猎猎声、远处的号角、市井的喧嚣、废墟中的风声
+- **音乐情绪递进模型** —
+
+| 情绪阶段 | 音乐策略 | 覆盖率 |
+|---|---|---|
+| 铺垫/日常 | 低音器乐衬底,庄重但克制 | 中低 |
+| 暗涌/积蓄 | 鼓点渐入,节奏暗示命运逼近 | 中 |
+| 爆发/决战 | 器乐全奏或突然全场静默 | 极端 |
+| 牺牲/代价 | 人声合唱或单一乐器哀鸣 | 中高 |
+| 尘埃落定 | 极简器乐或纯环境音(风声) | 低 |
+
+- **战场不是噪音** — 战斗段落的音效设计不应是嘈杂的混战噪音,而是有层次的音景:近处的呼吸与兵器碰撞、中景的喊杀、远处的号角与马蹄。层次即叙事
+
+---
+
+## 五、构图与景别叙事
+
+### 历史史诗叙事要点
+
+- **三大核心构图的叙事功能** —
+ - **对称构图** — 庄重/权力/仪式/不可违抗的秩序,适合朝堂、殿堂、对峙场景
+ - **三分法** — 日常/行军/对话,稳定均衡,适合叙事推进段落
+ - **大面积留白** — 苍凉/渺小/命运的空旷感,个体在天地间的孤独
+- **宏观远景的史诗价值** — 远景和大远景是史诗叙事的主力景别。远景不是过场,而是"让观众感受到时代的广阔与个体的渺小"。给远景充足的时长
+- **特写是人性锚点** — 在宏大的远景之后切入一个人的眼神特写,是"从时代回到个人"的核心手法。远景 → 特写的反差越大,情感冲击越强
+- **空间纵深即权力** — 画面纵深中的位置关系暗示权力关系:站在最远处的人是最有权力的(背对镜头更强);跪在近景的人是最卑微的
+- **群像构图** — 史诗常需要在一个画面中容纳多个角色。群像构图的核心是"在群体中凸显个体"——通过位置、姿态、动静对比让主要角色在人群中被辨识
+- **孤独个体与宏大空间** — 一个人站在空旷的战场/废墟/大殿中,人物在画面中的比例越小,孤独感与历史重量越大
+
+---
+
+## 六、镜头运动与节奏
+
+### 历史史诗叙事要点
+
+- **庄重缓移为主** — 史诗叙事的镜头运动应以极缓的速度进行,传达"历史的沉重脚步"。急推、快切等急促手法与史诗气质不兼容
+- **俯瞰 = 命运视角** — 高角度俯瞰是史诗的标志性运镜,暗示"命运/历史在俯视众生"。适合战场全景、城池陷落、人潮迁徙
+- **仰拍 = 崇敬/压迫** — 低角度仰拍适合英雄的最后一站、纪念碑、城墙。仰拍角度越大,庄重感或压迫感越强
+- **凝视不动** — 关键历史瞬间(诀别/登基/最后一战前),镜头应绝对静止,像一个历史的见证者在凝视。任何运镜都会破坏这种"时间凝固"的庄严
+- **缓摇 = 展示全貌/时代画卷** — 慢速横摇适合展示大场面:军队集结、城池全貌、战后废墟。缓摇的速度应让观众有时间"阅读"画面中的每个细节
+- **运镜即叙事视角** — 俯瞰 = 命运视角(冷静、全知);平移跟随 = 与角色同行(共情);缓推 = 聚焦关键(强调);缓拉 = 揭示全局(震撼)
diff --git a/data/skills/story_skills/Historical_epic/driector_skills/director_storyboard_table_narrative.md b/data/skills/story_skills/Historical_epic/driector_skills/director_storyboard_table_narrative.md
new file mode 100644
index 0000000..60a009a
--- /dev/null
+++ b/data/skills/story_skills/Historical_epic/driector_skills/director_storyboard_table_narrative.md
@@ -0,0 +1,88 @@
+---
+name: director_storyboard_table_narrative
+description: 分镜表叙事手法 · 历史史诗 — 定义历史史诗在分镜表中的景别权力叙事、运镜庄重感、时长把控、镜头合并与转场逻辑。适用于任何视觉风格。
+metaData: director_skills
+---
+
+# 分镜表叙事手法 · 历史史诗 · 技法参考
+
+---
+
+## 一、分镜表定位
+
+分镜表是导演将剧本转化为镜头语言的核心工具。表单字段由导演根据项目需要自行设定(分镜号、景别、运镜、时长、人物、事件、台词、光影、情绪、转场等),以下仅提供历史史诗叙事类型下的技法参考。
+
+---
+
+## 二、景别选择
+
+- **远景是史诗的呼吸** — 史诗叙事中远景/大远景的使用频率应高于其他类型。远景传递"时代的广阔与个体的渺小",是史诗感的核心来源
+- **特写是人性锚点** — 每个宏大远景段落之后,至少安排一个人物特写作为情感锚点。"从天地到眼神"的景别跳跃是史诗叙事的标志性手法
+- **中景承载群戏** — 史诗中大量的多人对话、朝堂对峙、军帐议事需要中景来交代人物关系和空间位置
+- **大特写留给命运时刻** — 大特写(眼/手/信物)只用于"命运转折"的瞬间:接过圣旨的手、做出决定前的眼神、被折断的信物
+- **定场镜头要有史诗感** — 定场不只交代空间,要传递"这是一个什么样的时代"——一个荒凉的关隘比一个标注"xx城"的字幕更有叙事力
+
+---
+
+## 三、运镜节奏
+
+- **默认缓慢** — 史诗叙事中运镜速度应全面放慢,70% 以上镜头为静止或极缓运动。急促运镜与史诗的沉稳气质不兼容
+- **缓推 = 命运聚焦** — "历史的目光聚焦在这个人/这件事上",适合关键决策、英雄时刻
+- **缓拉 = 揭示全貌** — 从个体缓慢拉开揭示宏大全景(战场/废墟/人潮),是"从个人命运到时代洪流"的经典史诗运镜
+- **俯瞰平移 = 时代画卷** — 高角度缓慢平移展示大场面,像展开一幅历史画卷
+- **凝视不动 = 历史见证** — 关键历史瞬间的镜头应绝对静止,像一个见证者在凝望。静止本身就是最庄严的"运镜"
+
+---
+
+## 四、时长把控
+
+- **远景/大远景 5-7s** — 史诗远景需要足够时长让观众感受空间的广阔与历史的重量,不要急于切走
+- **对峙/对话近景 4-5s** — 史诗中的对话节奏比日常类型慢。每句话之间留出沉默的空间,让语言有"落地"的重量
+- **仪式段落拉长** — 仪式性场景(跪拜/盟誓/祭祀)的每个动作都应给足时长(3-5s/动作),仪式的庄重来自"不急"
+- **特写 3-4s** — 史诗中的特写承载"命运时刻",需要比日常更长的停留让观众感受情感重量
+- **战斗段落不缩短** — 战斗场景虽然节奏加快,但单镜头时长不应大幅压缩。用景别切换而非缩短时长来制造紧张感
+- **黄金法则:庄重来自不急** — 史诗叙事的一切节奏都应比日常"慢半拍"。匆忙 = 轻浮,从容 = 庄重
+
+---
+
+## 五、镜头合并策略(去 AI 感)
+
+- **群像场景一镜涵盖** — 朝堂/军帐/宴会等多人场景,能用一个带运镜的镜头(缓移扫过群像)交代的,不拆成逐个人物的碎切
+- **行军/迁徙合并** — 行军队列、百姓迁徙等移动场景应合并为一个连续运镜镜头,碎切会破坏"洪流感"
+- **叙事密度优先** — 每个镜头必须推进叙事或传递史诗情绪,纯展示性的环境镜头应合并到有叙事功能的镜头中
+- **导演思维检验** — 写完分镜后自检:如果一个史诗片导演会用一个缓慢的长镜头完成的段落,不要拆成碎片
+
+---
+
+## 六、一镜到底(长镜头合并)
+
+- **适用条件** — 战场穿越、仪式全程、角色穿越空间从一个状态到另一个状态。史诗叙事中长镜头的价值是"让观众与历史同在"
+- **典型场景** — 角色走过战后的废墟、大军开拔的全过程、从宫门到大殿的仪式行进、战场上从一端到另一端的穿越
+- **标注方式** — 在运镜字段写明完整路径(如"一镜到底:俯瞰大军出发→缓推下降到主角身侧→跟移与主角并行→落幅主角回望城门"),画面描述中交代起幅和落幅
+- **时长放宽** — 史诗长镜头因信息量持续更新且需要沉浸感,可突破单镜 6s 上限,但不超过 15s
+- **庄重优先** — 长镜头的运动速度应始终保持庄重缓慢,即使在战斗场景中也不应急促
+
+---
+
+## 七、人物互动设计
+
+- **对峙是史诗主场** — 史诗叙事中最有张力的互动不是打斗,而是对峙:两人对视的沉默、谈判桌上的暗涌、君臣之间的试探
+- **群像中的个体** — 群戏互动中应有一个"焦点人物"的情绪线贯穿。群像是背景,个体的反应才是叙事锚点
+- **肢体语言即权力** — 史诗中的人物互动高度依赖肢体语言传递权力关系:站与跪、前与后、高与低、面对与背对
+
+---
+
+## 八、台词与留白
+
+- **史诗台词宜短** — 一句掷地有声的话比一段演说更有力。关键对白控制在一句话以内,让语言有"刻在石头上"的分量
+- **沉默是史诗的标点** — 关键台词前后必须留足沉默。沉默让观众"听到"台词的重量
+- **旁白慎用** — 史诗叙事尽量不用旁白解说历史背景。用画面、空间、角色反应来传递信息,比旁白更有说服力
+
+---
+
+## 九、转场设计
+
+- **场景切换用空镜过渡** — 不同场景间插入一个史诗空镜(旗帜、城墙、天空、荒原)做情绪缓冲,同时传递时代质感
+- **时间跨度用意象转场** — 表达时间流逝不用日期字幕,用意象叠化:新雪覆盖旧战场、幼苗长成大树、新人坐上旧人的位置
+- **段落间用渐黑/渐亮** — 大段落之间用缓慢的渐黑→渐亮转场,模拟"历史翻页"的仪式感
+- **默认硬切** — 同场戏内镜头间用硬切,保持叙事的干净与庄重
diff --git a/data/skills/story_skills/Historical_epic/images/title.png b/data/skills/story_skills/Historical_epic/images/title.png
new file mode 100644
index 0000000..6cb79f3
Binary files /dev/null and b/data/skills/story_skills/Historical_epic/images/title.png differ
diff --git a/data/skills/story_skills/Horror_supernatural/README.md b/data/skills/story_skills/Horror_supernatural/README.md
new file mode 100644
index 0000000..47d3ed6
--- /dev/null
+++ b/data/skills/story_skills/Horror_supernatural/README.md
@@ -0,0 +1,50 @@
+# 恐怖灵异 · 导演叙事手法技能包
+
+## 简介
+
+本技能包为 **恐怖灵异** 类型故事提供一套完整的导演叙事手法参考,涵盖从宏观叙事规划到微观分镜执行的全流程指导。适用于任何视觉风格。
+
+## 核心理念
+
+- **未知即恐惧** — 真正的恐怖来自"看不见的东西",观众的想象力远比任何画面更可怕
+- **日常的裂缝** — 最有效的恐怖不是鬼怪本身,而是熟悉环境中出现的"不对劲"
+- **缓慢侵蚀** — 恐惧不是一次性吓人,而是从微妙的不安一点点蔓延到无处可逃
+- **人心比鬼可怕** — 最深层的恐怖来自人性的黑暗面,超自然只是照妖镜
+
+## 文件结构
+
+```
+Horror_supernatural/
+├── README.md ← 本文件
+└── driector_skills/
+ ├── director_planning_narrative.md ← 叙事规划手法
+ └── director_storyboard_table_narrative.md ← 分镜表叙事手法
+```
+
+## 技能文件说明
+
+### 1. 叙事规划手法 (`director_planning_narrative.md`)
+
+导演在 **叙事规划阶段** 使用的技法参考,定义恐怖灵异在主题立意、情感节奏、场景情绪设计与声音方向上的整体规划方法。
+
+| 章节 | 内容概要 |
+|---|---|
+| 主题立意与情感内核 | 未知恐惧、日常裂缝、缓慢侵蚀、人心映射 |
+| 叙事结构与节奏规划 | 不安积累、松紧交替、虚实模糊、高潮反转 |
+| 分场景情绪设计 | 六大典型恐怖段落设计、安全感剥夺、空间异化 |
+| 声音与音乐方向 | 寂静杀伤力、低频压迫、声源不明、突然静默 |
+| 构图与景别叙事 | 空间留白威胁、视角受限、景别信息控制 |
+| 镜头运动与节奏 | 呼吸感运镜、失控感、窥视视角、静止压迫 |
+
+### 2. 分镜表叙事手法 (`director_storyboard_table_narrative.md`)
+
+导演在 **分镜表制作阶段** 使用的技法参考,定义恐怖灵异在分镜表中的景别控制、运镜恐惧构建、时长张力、镜头合并与转场逻辑。
+
+| 章节 | 内容概要 |
+|---|---|
+| 分镜表定位 | 分镜表作为恐惧节奏控制核心工具的定位说明 |
+| 景别选择 | 信息遮蔽景别、威胁暗示、主观受限视野 |
+| 运镜节奏 | 缓慢逼近、失控摇晃、突然静止、窥视跟踪 |
+| 时长把控 | 恐惧拉长、惊吓压缩、寂静时长控制 |
+| 镜头合并策略 | 连续不安感维持、氛围镜头整合、叙事密度 |
+| 一镜到底 | 长镜头窒息感、逃跑跟踪、空间探索 |
diff --git a/data/skills/story_skills/Horror_supernatural/driector_skills/director_planning_narrative.md b/data/skills/story_skills/Horror_supernatural/driector_skills/director_planning_narrative.md
new file mode 100644
index 0000000..8ff1fd7
--- /dev/null
+++ b/data/skills/story_skills/Horror_supernatural/driector_skills/director_planning_narrative.md
@@ -0,0 +1,109 @@
+---
+name: director_planning_narrative
+description: 叙事手法技法 · 恐怖灵异 — 定义恐怖灵异类型在主题立意、情感节奏、场景情绪设计与声音方向上的叙事规划方法。适用于任何视觉风格。
+metaData: director_skills
+---
+
+# 叙事手法 · 恐怖灵异 · 技法参考
+
+---
+
+## 一、主题立意与情感内核
+
+### 恐怖灵异叙事要点
+
+- **未知即恐惧** — 真正的恐怖来自"看不见的东西"。不要急于揭示怪物/鬼魂全貌,观众的想象力远比任何设计更可怕。主题立意应围绕"未知的威胁",而非"已知的怪物"
+- **日常的裂缝** — 最有效的恐怖是在熟悉的日常中出现"不对劲"的细节:时钟倒走、椅子多了一把、照片里多了一个人。立意应强调"安全感的瓦解"
+- **缓慢侵蚀** — 恐怖不是一次性惊吓,而是不安感的持续积累。主题设计应有"从微妙到失控"的侵蚀弧线,让观众从"好像不太对"滑向"彻底无法逃脱"
+- **离场感受建议方向** — 后怕 / 脊背发凉 / 细思极恐 / 不敢回头。避免"恶心""血腥"等纯感官刺激方向
+- **人心比鬼可怕** — 最高级的恐怖叙事,超自然元素只是人性黑暗面的隐喻。真正的恐惧源头应指向人心:贪婪、猜忌、背叛、疯狂
+
+---
+
+## 二、叙事结构与节奏规划
+
+### 恐怖灵异叙事要点
+
+- **不安积累是基本功** — 恐怖叙事的前半段核心任务是"积累不安"。用日常场景中的微小异常一点点侵蚀观众的安全感,每一个段落的"不对劲"程度都应比上一个升一级
+- **松紧交替制造心理落差** — 不能一直紧绷,否则观众会麻木。在恐怖段落之间插入"假性安全"(角色以为危险过去了),让观众松口气——然后再狠狠拉紧
+- **信息控制是核心引擎** — 恐怖的本质是信息不对称:观众不知道什么在那里、角色不知道危险已经靠近。叙事规划应明确每个段落"观众知道什么""角色知道什么"
+- **延迟揭示** — 关键恐怖元素(怪物真容、真相、威胁来源)应尽可能延迟揭示。每次揭示一点点,制造"越知道越害怕"的螺旋
+- **高潮是恐惧的确认** — 前面积累的所有不安,在高潮段落得到"最坏预感成真"的确认。高潮不是最吓人的一刻,而是"原来一直以来都……"的恐怖顿悟
+- **虚实模糊模型** — 恐怖叙事的高级手法是让观众分不清"到底是真的还是角色的幻觉":现实→异常→质疑→确认→更大的质疑。真假界限越模糊,不安感越强
+
+---
+
+## 三、分场景情绪设计
+
+### 恐怖灵异叙事要点
+
+- **情绪目标用体感词** — 不说"害怕",说"后背突然发凉""想转头但不敢转"。体感层面的情绪描述能更好指导叙事节奏和表演设计
+- **典型情绪段落与设计** —
+
+| 段落类型 | 情绪方向 | 叙事手法 | 音效建议 |
+|---|---|---|---|
+| 日常建立 | 安全 + 温暖 | 正常的生活场景,刻意营造"一切都好" | 自然环境音,轻松氛围 |
+| 微妙异常 | 隐隐不安 | 一个不该出现的细节,角色没注意但观众看到了 | 环境音中混入一个不协调的声音 |
+| 安全感瓦解 | 恐惧萌芽 | 异常频率增加,角色开始察觉"不对劲" | 环境音逐渐稀薄,低频渐入 |
+| 假性安全 | 短暂放松 | 危机看似解除,角色松口气 | 恢复正常环境音,音乐停止 |
+| 恐惧确认 | 极度恐惧 | 最坏的猜测被证实,无处可逃 | 突然静默,或极低频压迫 |
+| 余韵/后怕 | 细思极恐 | 看似结束但留下一个"不对"的细节 | 日常环境音中埋入之前的异常音 |
+
+- **"安全感剥夺"是叙事核心工具** — 用角色的安全区域被逐步侵蚀来映射恐惧升级:
+ - **初期**:威胁在远处、在外面、在黑暗中
+ - **中期**:威胁进入生活空间,但还能逃避
+ - **后期**:威胁就在身边/身后/体内,无处可逃
+- **空间即心理** — 善用空间特征传递恐惧感。封闭空间 = 无处可逃;开阔空间 = 无处可藏;熟悉空间异化 = 安全感崩塌
+- **恐惧的"不可言说性"** — 最恐怖的东西不应被完整描述。角色的反应(瞳孔放大、说不出话、转身就跑)比直接展示"那个东西"更有效
+
+---
+
+## 四、声音与音乐方向
+
+### 恐怖灵异叙事要点
+
+- **寂静是最强的恐惧工具** — 恐怖片的杀手锏不是尖叫音效,而是之前的绝对寂静。关键恐怖段落应设计"声音真空"——所有环境音突然消失,观众本能地屏息
+- **低频压迫** — 人耳听不清但身体能感知的低频声音(18-20Hz范围)会制造生理性不安。在不安积累段落使用低频底噪,观众说不清为什么但就是难受
+- **声源不明** — 恐怖音效的黄金法则是"听到了但不知道是什么发出的"。脚步声、呼吸声、刮擦声——越日常的声音在不该出现的时候出现,越恐怖
+- **环境音是恐惧温度计** — 用环境音层次的变化标记恐惧等级:正常(鸟鸣/虫鸣/人声)→ 稀薄(声音逐渐消失)→ 死寂 → 异常音出现
+- **音乐情绪递进模型** —
+
+| 情绪阶段 | 音乐策略 | 覆盖率 |
+|---|---|---|
+| 日常安全 | 正常配乐或纯环境音 | 低 |
+| 不安萌芽 | 不协和音程,极低音量 | 中低 |
+| 恐惧升级 | 低频底噪渐强,节奏感暗示 | 中 |
+| 恐惧高潮 | 突然静默或极端音效 | 极端 |
+| 假性安全 | 恢复正常环境音 | 低 |
+| 后怕余韵 | 日常音中混入异常元素 | 中低 |
+
+- **"跳吓"要克制** — 突然的巨响惊吓(Jump Scare)最多用 1-2 次,且必须在长时间寂静积累之后。滥用跳吓是最低级的恐怖手法,会消解之前积累的氛围恐惧
+
+---
+
+## 五、构图与景别叙事
+
+### 恐怖灵异叙事要点
+
+- **三大核心构图的叙事功能** —
+ - **大面积留白** — 空旷区域 = 潜在威胁区,观众会本能地在空白处"寻找"恐惧源
+ - **框架遮蔽构图** — 门缝/窗户/走廊尽头,限制视野 = 限制信息 = 放大恐惧
+ - **失衡构图** — 主体偏向画面一侧,另一侧留出"不安全的空间",暗示有东西在那里
+- **视野受限即恐惧** — 恐怖叙事中,观众看到的越少越害怕。用景别和构图控制信息量:让观众看不到角色身后、看不到房间的角落、看不到黑暗中的全貌
+- **空间纵深的威胁感** — 利用空间纵深制造"远处有东西"的暗示:走廊尽头的模糊轮廓、背景中不该动的东西动了、焦外的异常形状
+- **景别与信息控制** — 特写 = 角色不知道周围发生什么(观众也不知道);远景 = 角色暴露在威胁中(观众看到了但角色不知道)。用景别切换制造不同类型的恐惧
+- **大特写的恐惧功能** — 大特写(瞳孔/嘴唇/手指)在恐怖叙事中用于捕捉"恐惧的生理反应":瞳孔放大、嘴唇颤抖、指甲抠进掌心
+- **"多出来的东西"** — 恐怖构图的核心技巧:画面中出现不该出现的元素(镜中的第二张脸、阴影中的轮廓、背景中多出的人影),观众发现时的恐惧远超任何音效
+
+---
+
+## 六、镜头运动与节奏
+
+### 恐怖灵异叙事要点
+
+- **静止 = 压迫** — 恐怖叙事中 70% 以上镜头应为静止机位。静止的画面让观众无法通过镜头运动获得"有人在控制"的安全感,制造"被抛弃在现场"的孤独恐惧
+- **极缓推 = 逼近/不可逃避** — 比正常缓推更慢的推进,暗示"有东西在靠近"或"你不得不面对",适合恐怖确认段落
+- **缓拉 = 暴露/发现全貌** — 缓慢拉远揭示角色没看到的恐怖全貌(身后的人影、房间的异常),是"观众知道但角色不知道"的经典手法
+- **突然静止** — 运动中的镜头突然停住不动,暗示"有什么让镜头停下来了",制造极强的不安
+- **呼吸感运镜** — 微幅的轻微抖动/起伏,模拟"有人在这里偷偷看"的主观窥视感。不是手持摇晃,是极微妙的"呼吸"
+- **运镜即威胁方向** — 镜头运动方向暗示威胁来源。观众本能地认为镜头移动的方向就是"要看到什么"的方向——可以利用这个预期,也可以违背它制造惊吓
diff --git a/data/skills/story_skills/Horror_supernatural/driector_skills/director_storyboard_table_narrative.md b/data/skills/story_skills/Horror_supernatural/driector_skills/director_storyboard_table_narrative.md
new file mode 100644
index 0000000..d6b42d7
--- /dev/null
+++ b/data/skills/story_skills/Horror_supernatural/driector_skills/director_storyboard_table_narrative.md
@@ -0,0 +1,88 @@
+---
+name: director_storyboard_table_narrative
+description: 分镜表叙事手法 · 恐怖灵异 — 定义恐怖灵异在分镜表中的景别控制、运镜恐惧构建、时长张力、镜头合并与转场逻辑。适用于任何视觉风格。
+metaData: director_skills
+---
+
+# 分镜表叙事手法 · 恐怖灵异 · 技法参考
+
+---
+
+## 一、分镜表定位
+
+分镜表是导演将剧本转化为镜头语言的核心工具。表单字段由导演根据项目需要自行设定(分镜号、景别、运镜、时长、人物、事件、台词、光影、情绪、转场等),以下仅提供恐怖灵异叙事类型下的技法参考。
+
+---
+
+## 二、景别选择
+
+- **景别即信息控制** — 恐怖叙事中景别选择的核心逻辑是"控制观众知道多少"。特写 = 角色视野受限(观众也不知道周围有什么);远景 = 角色暴露在未知中(观众看到危险但角色不知道)
+- **特写的封闭恐惧** — 特写/大特写让画面之外全部变成"未知区域",观众会本能地焦虑"画面外有什么"。恐惧积累段落多用特写限制信息
+- **远景的暴露恐惧** — 远景让角色显得渺小、孤立、暴露,适合"威胁已经在附近但角色不知道"的段落
+- **避免中景的安全感** — 中景是最"安全"的景别(信息适中、距离适中),恐怖叙事中应减少中景使用,多用特写和远景的极端切换制造不安
+- **定场镜头要制造不安** — 定场不只是交代环境,要在定场镜头中就埋入"不对劲"——画面边缘的模糊形状、不该亮的窗户、静得过分的空间
+
+---
+
+## 三、运镜节奏
+
+- **默认静止,静止即压迫** — 70% 以上镜头应为静止机位。恐怖叙事中静止不是"没有运镜",而是主动制造"被困在这个视角"的窒息感
+- **极缓推 = 逼近** — 比正常缓推慢一半的速度,暗示"有东西在慢慢靠近"或"你不得不看清这个东西"
+- **缓拉 = 揭示恐怖全貌** — 从角色或局部缓慢拉开,揭示角色没看到的恐怖真相(身后有人、房间被破坏、周围全是异常)
+- **突然停止** — 正在运动的镜头突然静止,暗示"有什么东西让一切停下来了",极强的心理冲击
+- **微幅呼吸抖动** — 极其微妙的画面起伏,模拟主观视角的"偷窥者"存在感。不是手持摇晃,是观众潜意识感知到"有人在看"
+
+---
+
+## 四、时长把控
+
+- **恐惧镜头拉长** — 不安/恐惧段落的镜头时长应比正常多 50%。让观众"被迫"停留在令人不安的画面上,等待可能发生的恐怖事件
+- **寂静镜头给足时间** — 无声镜头(环境音真空)至少 3-4s,让寂静的压迫感充分作用于观众
+- **惊吓瞬间极短** — Jump Scare 类镜头控制在 1-1.5s,快到来不及反应就切走,留下恐惧余波
+- **特写停留 3-4s** — 恐惧表情的特写需要比正常更长的停留,让观众"感染"角色的恐惧
+- **远景/空镜 5-7s** — 恐怖氛围的远景和空镜需要更长时间,让观众有时间在画面中"搜索"异常
+- **黄金法则:恐惧来自等待** — 观众知道要发生可怕的事但不知道什么时候发生,等待的每一秒都在放大恐惧
+
+---
+
+## 五、镜头合并策略(去 AI 感)
+
+- **连续不安感不能断** — 连续制造不安氛围的镜头应尽量合并为长镜头,一旦切断(硬切到新角度),不安的积累就会被重置
+- **环境探索一镜完成** — 角色探索未知空间(进入黑暗房间、走过长廊)应尽量用一镜到底,碎切会破坏"与角色一起经历"的沉浸恐惧
+- **叙事密度优先** — 每个镜头必须推进恐惧或叙事,纯装饰性的氛围镜头应合并到有叙事功能的镜头中
+- **导演思维检验** — 写完分镜后自检:恐怖氛围是连续的还是被碎切打断的?如果一个导演会用长镜头一气呵成的段落,不要拆成碎片
+
+---
+
+## 六、一镜到底(长镜头合并)
+
+- **适用条件** — 角色探索未知空间、追逐/逃跑、从安全到恐惧的渐变过程。恐怖叙事中长镜头的价值是"不给观众喘息的机会"
+- **典型场景** — 角色独自走过黑暗走廊、开门探索房间、从正常空间进入异常空间、追逐逃亡
+- **标注方式** — 在运镜字段写明完整路径(如"一镜到底:跟移角色穿过走廊→缓推进入房间→落幅角色背影静止"),画面描述中交代起幅和落幅
+- **时长放宽** — 恐怖长镜头因持续制造压迫感,可突破单镜 6s 上限,但不超过 15s
+- **窒息感控制** — 一镜到底的时间越长,观众"等待恐怖发生"的焦虑越强。长镜头本身就是恐惧制造器
+
+---
+
+## 七、人物互动设计
+
+- **单人戏是恐怖主场** — 恐怖叙事中最有效的段落往往是角色独处。分镜表中单人镜头的比例应高于群戏
+- **恐惧反应比恐惧源更重要** — 角色看到了什么不重要,角色的反应才重要。分镜表应优先安排"角色恐惧反应"的镜头,而非"恐怖事物本体"的镜头
+- **动作克制** — 恐惧中的人不会大幅度动作,而是僵住/缩起来/缓慢后退。分镜表中避免写"角色尖叫着跑开",写"角色僵住,手指无意识地攥紧"
+
+---
+
+## 八、台词与留白
+
+- **少说多怕** — 恐怖段落的台词应极少。角色越说话越有"控制感",沉默才让恐惧蔓延
+- **碎片化台词** — 恐惧中的台词应是碎片式的:半句话、叫不出口的名字、压低的"别动"。完整的句子会破坏恐惧氛围
+- **观众知道角色不知道** — 最好的恐怖留白是"观众已经看到了但角色还在正常说话",用角色的不知情反衬恐怖
+
+---
+
+## 九、转场设计
+
+- **默认硬切** — 同场戏内镜头间用硬切,干净利落,保持紧张感
+- **恐怖段落间不给缓冲** — 与其他类型不同,恐怖叙事中段落间的转场应尽量不给观众"休息"的空间,除非是刻意安排的"假性安全"
+- **黑屏的恐惧** — 恐怖叙事中可使用短暂黑屏(0.5-1s)作为转场,黑屏期间观众什么都看不见 = 最大的恐惧。但不可滥用
+- **声音先行转场** — 画面还在上一个场景,声音已经是下一个场景的异常音效。用声音"入侵"画面,制造恐惧的渗透感
diff --git a/data/skills/story_skills/Horror_supernatural/images/title.png b/data/skills/story_skills/Horror_supernatural/images/title.png
new file mode 100644
index 0000000..f13298e
Binary files /dev/null and b/data/skills/story_skills/Horror_supernatural/images/title.png differ
diff --git a/data/skills/story_skills/Hot_blooded_action/README.md b/data/skills/story_skills/Hot_blooded_action/README.md
new file mode 100644
index 0000000..aec1fbd
--- /dev/null
+++ b/data/skills/story_skills/Hot_blooded_action/README.md
@@ -0,0 +1,61 @@
+# 热血少年 · 导演叙事手法技能包
+
+## 简介
+
+本技能包为 **热血少年** 类型故事提供一套完整的导演叙事手法参考,涵盖从宏观叙事规划到微观分镜执行的全流程指导。适用于任何视觉风格。
+
+## 核心理念
+
+- **燃点递进** — 热血不是一直高燃,而是从低谷一步步攀升到爆发,落差越大燃感越强
+- **信念可视化** — 抽象的信念与意志要用具象的动作、眼神、伤痕来外化,让观众"看到"决心
+- **以弱胜强** — 核心魅力来自"明知不可为而为之",困境越绝望、翻盘越燃
+- **伙伴共振** — 热血不是孤军奋战,伙伴的信任、牺牲与回归是最强催泪燃点
+
+## 文件结构
+
+```
+Hot_blooded_action/
+├── README.md ← 本文件
+└── driector_skills/
+ ├── director_planning_narrative.md ← 叙事规划手法
+ └── director_storyboard_table_narrative.md ← 分镜表叙事手法
+```
+
+## 技能文件说明
+
+### 1. 叙事规划手法 (`director_planning_narrative.md`)
+
+导演在 **叙事规划阶段** 使用的技法参考,定义热血少年在主题立意、燃点节奏、场景情绪设计与声音方向上的整体规划方法。
+
+| 章节 | 内容概要 |
+|---|---|
+| 主题立意与热血内核 | 信念外化、以弱胜强、伙伴羁绊、成长弧线 |
+| 叙事结构与燃点节奏 | 低谷→攀升→爆发循环、三段式燃点递进、情绪蓄力 |
+| 分场景情绪设计 | 六大典型热血段落设计、对抗升级叙事、空间战场化 |
+| 声音与音乐方向 | 鼓点递进、沉默蓄力、燃曲爆发时机、呐喊留白 |
+| 构图与景别叙事 | 仰拍英雄感/俯拍绝境感/对称对峙、景别的力量表达 |
+| 镜头运动与节奏 | 速度线运镜、冲击缓速、环绕升格、爆发快推 |
+
+### 2. 分镜表叙事手法 (`director_storyboard_table_narrative.md`)
+
+导演在 **分镜表制作阶段** 使用的技法参考,定义热血少年在分镜表中的景别策略、运镜节奏、时长把控、战斗分镜设计与转场手法。
+
+| 章节 | 内容概要 |
+|---|---|
+| 分镜表定位 | 分镜表作为节奏引擎核心工具的定位说明 |
+| 景别选择 | 力量感景别、仰拍与俯拍的叙事功能、冲击特写 |
+| 运镜节奏 | 静蓄动爆、速度感运镜、环绕与跟拍 |
+| 时长把控 | 爆发前拉伸、冲击瞬间压缩、升格黄金时刻 |
+| 对抗镜头设计 | 攻防节奏、力量对比、一击定胜负的镜头语言 |
+| 伙伴叙事 | 并肩作战构图、信任传递镜头、牺牲与回归 |
+| 台词与呐喊 | 信念宣言时机、沉默的分量、战吼的克制使用 |
+| 转场设计 | 冲击波转场/速度线过渡/黑屏蓄力/闪白爆发 |
+
+## 使用方式
+
+本技能包作为 ToonFlow 导演 AI 的叙事手法参考,在故事创作流程中自动加载,指导:
+
+1. **叙事规划** — 确定热血内核、燃点节奏曲线、场景情绪与音乐爆发时机
+2. **分镜表生成** — 根据叙事规划输出具体的景别、运镜、时长与转场方案
+
+两个文件分工明确、逐层递进,从"为什么这样拍"到"具体怎么拍"形成完整闭环。
diff --git a/data/skills/story_skills/Hot_blooded_action/driector_skills/director_planning_narrative.md b/data/skills/story_skills/Hot_blooded_action/driector_skills/director_planning_narrative.md
new file mode 100644
index 0000000..f7ee274
--- /dev/null
+++ b/data/skills/story_skills/Hot_blooded_action/driector_skills/director_planning_narrative.md
@@ -0,0 +1,114 @@
+---
+name: director_planning_narrative
+description: 叙事手法技法 · 热血少年 — 定义热血少年类型在主题立意、燃点节奏、场景情绪设计与声音方向上的叙事规划方法。适用于任何视觉风格。
+metaData: director_skills
+---
+
+# 叙事手法 · 热血少年 · 技法参考
+
+---
+
+## 一、主题立意与热血内核
+
+### 热血少年叙事要点
+
+- **信念是燃料** — 热血叙事的核心不是打斗,而是"为什么而战"。主角的信念必须在故事前半段就被清晰建立,后半段的每次爆发都是信念的兑现
+- **以弱胜强的浪漫** — 热血的最大魅力是"不可能的胜利"。主角必须处于绝对劣势,困境越绝望、实力差距越大,翻盘时的燃感越强
+- **成长弧线可视化** — 成长不是台词说"我变强了",而是让观众"看到"变化:从被打倒爬不起来到被打倒依然站起来、从躲闪到正面迎击、从颤抖到目光坚定
+- **离场感受建议方向** — 热泪盈眶 / 热血沸腾 / 拍案叫好 / 心潮澎湃。避免"轻松""安静""淡雅"等与热血气质不匹配的方向
+- **伙伴羁绊是第二引擎** — 个人战斗燃,伙伴托举更燃。"我替你挡一刀""你先走我断后""我相信你"是热血叙事中仅次于主角爆发的第二燃点
+
+---
+
+## 二、叙事结构与燃点节奏
+
+### 热血少年叙事要点
+
+- **低谷是燃点的前提** — 没有低谷就没有爆发。热血叙事必须先把主角推入绝境(失败、背叛、丧失、绝望),再让其凭信念攀升。低谷越深,爆发越高
+- **三段式燃点递进** — 每个大段落遵循"蓄力→临界→爆发"三拍:长时间的蓄力积蓄情绪→临界点(最后一击/最后一句话/最后一个眼神)→爆发释放
+- **情绪蓄力用"慢"** — 爆发前的段落应刻意放慢节奏:升格动作、拉长的沉默、缓慢站起的身影。越慢越蓄力,爆发时的"快"才有冲击力
+- **段落间给喘息** — 连续高燃会让观众疲劳。燃点段落之间用日常/温情/幽默做情绪缓冲,让观众"呼吸"一下再迎接下一波
+- **高潮段落的叠加燃点** — 最终高潮不是单一爆发,而是叠加:主角站起来(燃)→伙伴赶到(更燃)→信念回响(最燃)。叠加次数不超过 3 次,否则边际递减
+- **失败也是叙事** — 热血不等于永远赢。中段安排一次"真正的失败"(不是假败),让主角承受代价、反思成长,为最终胜利赋予重量
+
+---
+
+## 三、分场景情绪设计
+
+### 热血少年叙事要点
+
+- **情绪用力量感描述** — 不说"激动",说"攥紧拳头到指节发白"。具象的力量感描述能更好地指导动作设计和镜头选择
+- **典型热血段落与设计** —
+
+| 段落类型 | 情绪方向 | 叙事手法 | 音乐建议 |
+|---|---|---|---|
+| 日常/友情 | 温暖 + 轻松 | 伙伴间的插科打诨、笨拙的善意 | 轻快器乐,节奏明朗 |
+| 危机降临 | 震惊 + 紧迫 | 突发事件打破平静,强敌出现 | 配乐骤停后低频压迫 |
+| 绝境/低谷 | 绝望 + 不甘 | 被击败倒地、失去重要之物/之人 | 低沉悲壮器乐,或纯环境音 |
+| 觉醒/站起 | 决意 + 燃烧 | 沉默中站起来、眼神从涣散到坚定 | 从沉默到鼓点渐起 |
+| 爆发/对决 | 热血 + 痛快 | 全力出击、招式对撞、信念碰撞 | 燃曲全开,鼓点与旋律齐飞 |
+| 胜利/传承 | 释然 + 自豪 | 胜利后的疲惫微笑、伙伴相视 | 壮阔器乐渐收为温暖旋律 |
+
+- **对抗升级是叙事核心** — 用战斗强度的递进映射成长进度:
+ - **初期**:勉强应对小敌,狼狈但侥幸获胜
+ - **中期**:面对强敌,付出惨痛代价才能过关
+ - **后期**:与终极强敌正面对决,实力旗鼓相当,信念成为胜负手
+- **空间即战场** — 善用场景元素强化战斗叙事。例如:悬崖边的对峙 = 无路可退;废墟中站起 = 从毁灭中重生;暴雨中挥拳 = 意志与天抗争
+- **镜头意图写"力量感"而非"动作"** — "用仰拍是为了让观众感受到他此刻不可撼动的意志"优于"用仰拍拍他站起来"。意图清晰了,分镜自然选对角度
+
+---
+
+## 四、声音与音乐方向
+
+### 热血少年叙事要点
+
+- **沉默是最好的蓄力** — 爆发前的最后 3-5 秒应去掉所有声音(配乐、环境音),只留角色的一声呼吸或心跳。沉默后的爆发是音量的极端反差,冲击力最大化
+- **鼓点即心跳** — 热血段落的节奏骨架是鼓点。从低频慢鼓→中频鼓点→高频密鼓,映射战斗从蓄力到爆发的全过程
+- **燃曲的精确爆发点** — 主题燃曲不能提前放,必须在"临界点"精确切入(主角站起来的瞬间、出招的一刻、伙伴赶到的一幕)。提前 1 秒嫌早,晚 1 秒嫌迟
+- **环境音强化力量感** — 战斗场景标注核心环境音:拳头破风声、脚步震地声、衣袂烈风声、碎石崩落声。力量感的 50% 来自音效
+- **音乐情绪模型** —
+
+| 情绪阶段 | 音乐策略 | 覆盖率 |
+|---|---|---|
+| 日常/温情 | 轻快明朗器乐 | 中 |
+| 危机降临 | 骤停→低频压迫 | 低 |
+| 绝境低谷 | 悲壮独奏或全静默 | 中低 |
+| 蓄力觉醒 | 鼓点从无到有渐起 | 渐增 |
+| 爆发对决 | 燃曲全开,鼓点旋律齐飞 | 满 |
+| 胜利余韵 | 壮阔渐收为温暖 | 中高→中 |
+
+- **呐喊的克制使用** — 角色战吼/呐喊全片不超过 2-3 次,留给真正的临界爆发瞬间。滥用呐喊会让观众脱敏
+
+---
+
+## 五、构图与景别叙事
+
+### 热血少年叙事要点
+
+- **三大核心构图的叙事功能** —
+ - **仰拍构图** — 英雄感/不可撼动/崛起,用于主角站起来、觉醒、宣言信念的瞬间
+ - **俯拍构图** — 渺小/绝境/被压制,用于主角被击败、陷入绝望、面对强敌的段落
+ - **对称对峙构图** — 势均力敌/正面交锋/信念碰撞,用于终极对决的核心对视
+- **中心构图的仪式感** — 中心构图留给"英雄时刻":最终觉醒、胜利宣言、传承时刻。日常不用,否则削弱仪式感
+- **斜线构图制造动势** — 动作段落用对角线构图,人物沿对角线运动方向布局,增强速度感与冲击力
+- **从俯拍到仰拍的转换** — 同场戏内从俯拍(被压制)渐变到仰拍(站起来)是热血叙事最经典的构图转换,映射从绝境到崛起的情绪弧线
+- **景别即力量对比** —
+ - **远景** — 展示力量差距(渺小的主角 vs 巨大的敌人/灾难)或胜利后的壮阔
+ - **全景** — 战斗全貌、双方对峙站位
+ - **中景/近景** — 攻防动作、表情变化
+ - **特写** — 眼神坚定/拳头握紧/伤口流血,情绪聚焦
+- **大特写的爆发功能** — 大特写在热血中是"情绪引爆器":瞳孔中映出对手、血从嘴角滑落、手指最后一次握紧。全片 3-4 次,全给爆发临界瞬间
+
+---
+
+## 六、镜头运动与节奏
+
+### 热血少年叙事要点
+
+- **静蓄动爆** — 蓄力段落用 70% 静止机位,让情绪自行积蓄;爆发段落切换到运动镜头(快推、跟拍、环绕),释放动能
+- **快推 = 冲击/出击** — 猛然推向主体,模拟"冲拳"的力量感。适合出招瞬间、觉醒瞬间
+- **环绕升格 = 英雄时刻** — 缓慢环绕 + 升格(慢动作),360° 展示主角的英雄姿态。全片仅用 1-2 次,给最燃的瞬间
+- **速度线运镜** — 快速横移/推移制造速度线效果,适合追击、奔跑、高速战斗段落
+- **反差节奏** — 爆发前最后一个镜头用极慢(升格),爆发第一个镜头用极快(闪切/快推),慢→快的极端反差制造最大冲击
+- **运镜即力量** — 镜头运动的核心逻辑是"传递力量方向":推 = 前进/攻击;拉 = 后退/蓄力;摇 = 扫视战场;跟 = 并肩作战;环绕 = 英雄定格
+- **手持跟拍的战场感** — 近身战斗段落可用手持跟拍,增强"身临其境"的混乱感与紧迫感。但晃动幅度要可控,不能让观众头晕
diff --git a/data/skills/story_skills/Hot_blooded_action/driector_skills/director_storyboard_table_narrative.md b/data/skills/story_skills/Hot_blooded_action/driector_skills/director_storyboard_table_narrative.md
new file mode 100644
index 0000000..ad09f1e
--- /dev/null
+++ b/data/skills/story_skills/Hot_blooded_action/driector_skills/director_storyboard_table_narrative.md
@@ -0,0 +1,84 @@
+---
+name: director_storyboard_table_narrative
+description: 分镜表叙事手法 · 热血少年 — 定义热血少年在分镜表中的景别策略、运镜节奏、时长把控、对抗镜头设计、伙伴叙事与转场手法。适用于任何视觉风格。
+metaData: director_skills
+---
+
+# 分镜表叙事手法 · 热血少年 · 技法参考
+
+---
+
+## 一、分镜表定位
+
+分镜表是导演将剧本转化为镜头语言的核心工具。表单字段由导演根据项目需要自行设定(分镜号、景别、运镜、时长、人物、事件、台词、光影、情绪、转场等),以下仅提供热血少年叙事类型下的技法参考。
+
+---
+
+## 二、景别选择
+
+- **景别即力量表达** — 热血分镜中景别的核心逻辑是"传递力量感和情绪强度"。低谷用俯拍远景(渺小感),爆发用仰拍特写(力量感)
+- **仰拍是核心武器** — 仰拍角度自带"高大/不可撼动"的心理暗示。主角站起来、宣言信念、最终出招时必须用仰拍
+- **俯拍制造绝境** — 俯拍让主体显得渺小无助。被击败倒地、面对压倒性强敌时用俯拍,与后续仰拍形成最大反差
+- **大特写留给临界瞬间** — 大特写(瞳孔/拳头/血滴)是情绪核弹,全段落用 1-2 次。放在爆发前的最后一刻,引爆情绪
+- **定场镜头要有压迫感** — 热血叙事的定场不只交代环境,要用空间传递压迫:巨大的竞技场、无尽的废墟、高耸的敌人身影。1-2 个镜头搞定,远景即可
+
+---
+
+## 三、运镜节奏
+
+- **蓄力段落以静为主** — 爆发前的蓄力段落 70% 静止机位,让沉默和表情积蓄情绪
+- **爆发段落释放动能** — 出招/觉醒瞬间切换到快推、跟拍、横移等运动镜头,释放蓄积的动能
+- **快推 = 出击冲击** — 猛然推向主体,模拟力量释放。用于出招的第一帧、觉醒睁眼的瞬间
+- **环绕 = 英雄定格** — 缓速环绕主角,全片最多 1-2 次,给最燃的"英雄时刻"
+- **升格运镜 = 时间膨胀** — 关键一击用升格(慢动作),放大冲击瞬间的力量感与细节。升格镜头全段不超过 2 个
+- **运镜即力量方向** — 推 = 前进/攻击;拉 = 蓄力/后退;摇 = 扫视战场;跟 = 并肩同行;环绕 = 英雄凝视
+
+---
+
+## 四、时长把控
+
+- **蓄力镜头拉长** — 爆发前的"站起来""握拳""睁眼"等镜头给 4-5s,甚至配合升格到 6s,让情绪充分积蓄
+- **冲击镜头压短** — 出招/碰撞/命中的瞬间压到 1-1.5s(闪切),速度感即冲击感
+- **升格黄金时刻** — 升格镜头(慢动作)可突破 6s 上限,但不超过 8s。信息量靠细节持续输出(飞散的碎屑、飘动的发丝、震动的地面)
+- **日常镜头正常节奏** — 温情/日常段落保持 2-4s 正常节奏,不要用战斗节奏,让观众松弛
+- **黄金 6 秒规则** — 非升格镜头不超过 6s。热血叙事的"力量感"不靠拖时长,靠节奏反差
+- **反差节奏公式** — 爆发前最后镜头(慢/长)→ 爆发第一镜头(快/短),极端的时长反差制造最大冲击
+
+---
+
+## 五、对抗镜头设计
+
+- **攻防节奏交替** — 战斗段落的分镜不能全是进攻:攻→防→退→再攻,有来有回才有张力。纯单方面碾压没有叙事性
+- **力量对比用景别** — 敌强我弱时:敌人用仰拍全景(巨大感),主角用俯拍中景(渺小感)。逆转时反过来
+- **一击定胜负** — 终极对决的最后一击给足仪式感:蓄力(升格特写)→出招(闪切快推)→命中(大特写+冲击留白)→结果(缓拉全景)。四拍完整呈现
+- **受伤即成长** — 主角的伤口在分镜中要有特写:血滴、裂痕、颤抖的手。伤痛是"代价"的可视化,代价越大胜利越有重量
+- **能一镜交代的不拆两镜** — 一个带运镜的长镜头(如跟拍主角从被击退到重新冲锋)比拆成碎镜头更有冲击力。战斗长镜头可突破 6s
+
+---
+
+## 六、伙伴叙事
+
+- **并肩构图** — 伙伴同框时用横构图,两人处于画面同一水平线,暗示平等与信任
+- **信任传递镜头** — 一个眼神交换、一次无言的点头、一个交出后背的动作——信任不需要台词。用近景对切完成
+- **牺牲镜头的时长** — 伙伴挡在前面/倒下的镜头给足时长(4-5s),配合主角的表情特写反应。不要快速带过,这是催泪燃点
+- **回归镜头的仪式感** — 关键时刻伙伴赶到的镜头:先给主角绝望表情→背后传来声音/光影变化→缓拉揭示伙伴身影。分三拍完成,不要一步到位
+
+---
+
+## 七、台词与呐喊
+
+- **信念宣言一句够** — 主角的信念宣言("我要保护的人就在身后!")全片精选 2-3 句,不要反复碎碎念。一句配仰拍近景,力量拉满
+- **沉默比宣言更有力** — 觉醒/站起来的段落用沉默+动作替代台词。观众能从行动中读出信念,不需要角色说出来
+- **战吼的克制** — 纯粹的"啊——!"式战吼全片最多 2 次,放在终极爆发瞬间。搭配快推+大特写
+- **对手的台词** — 对手的嘲讽/质疑是蓄力工具:"你不可能赢""放弃吧"——这些台词是爆发前的燃料,用近景拍对手说完后,切主角沉默的特写
+- **旁白极少** — 热血叙事靠行动说话,旁白仅在必须补充内心独白时使用,配远景或空镜
+
+---
+
+## 八、转场设计
+
+- **同场战斗用硬切** — 战斗内部镜头间硬切,保持节奏紧凑
+- **冲击波转场** — 大招/爆发瞬间用闪白(0.3-0.5s)做转场,模拟冲击波的视觉效果
+- **蓄力用黑屏** — 爆发前可用短黑屏(0.5-1s)做"深呼吸",接下来的画面是爆发第一帧
+- **段落间用空镜喘息** — 战斗段落与日常段落之间用 1-2 个环境空镜(天空、残阳、飘落的花瓣)做情绪过渡,给观众呼吸空间
+- **回忆闪回用闪切** — 爆发前主角脑海中闪过的信念画面(伙伴的笑脸、守护的约定),用 0.5-1s 的闪切快速插入,不打断节奏
diff --git a/data/skills/story_skills/Hot_blooded_action/images/title.png b/data/skills/story_skills/Hot_blooded_action/images/title.png
new file mode 100644
index 0000000..aa20a2f
Binary files /dev/null and b/data/skills/story_skills/Hot_blooded_action/images/title.png differ
diff --git a/data/skills/story_skills/Mystery_thriller/README.md b/data/skills/story_skills/Mystery_thriller/README.md
new file mode 100644
index 0000000..28beba2
--- /dev/null
+++ b/data/skills/story_skills/Mystery_thriller/README.md
@@ -0,0 +1,62 @@
+# 悬疑推理 · 导演叙事手法技能包
+
+## 简介
+
+本技能包为 **悬疑推理** 类型故事提供一套完整的导演叙事手法参考,涵盖从宏观叙事规划到微观分镜执行的全流程指导。适用于任何视觉风格。
+
+## 核心理念
+
+- **信息操控** — 叙事的本质是控制观众"何时知道什么",悬念来自信息差
+- **不可靠叙事** — 镜头本身可以"说谎":选择性展示、误导性景别、欺骗性转场
+- **层层剥茧** — 每个段落揭示一层真相,同时制造新的疑问,维持观众的解谜欲
+- **细节即线索** — 每个看似无关的镜头都可能是伏笔,回看时恍然大悟才是最高奖赏
+
+## 文件结构
+
+```
+Mystery_thriller/
+├── README.md ← 本文件
+└── driector_skills/
+ ├── director_planning_narrative.md ← 叙事规划手法
+ └── director_storyboard_table_narrative.md ← 分镜表叙事手法
+```
+
+## 技能文件说明
+
+### 1. 叙事规划手法 (`director_planning_narrative.md`)
+
+导演在 **叙事规划阶段** 使用的技法参考,定义悬疑推理在主题立意、信息操控、悬念节奏、场景氛围与声音方向上的整体规划方法。
+
+| 章节 | 内容概要 |
+|---|---|
+| 主题立意与悬念内核 | 信息差操控、不可靠叙事、真相层级设计 |
+| 叙事结构与悬念节奏 | 钩子→铺陈→转折→揭示循环、红鲱鱼策略、信息释放节奏 |
+| 分场景氛围设计 | 六大典型悬疑段落设计、空间压迫叙事、视觉线索埋设 |
+| 声音与音乐方向 | 不安底噪、寂静恐惧、音效误导、心理音景 |
+| 构图与景别叙事 | 倾斜构图/遮挡构图/深焦叙事、景别的信息操控 |
+| 镜头运动与节奏 | 窥视运镜、不安手持、突然静止、时间操控 |
+
+### 2. 分镜表叙事手法 (`director_storyboard_table_narrative.md`)
+
+导演在 **分镜表制作阶段** 使用的技法参考,定义悬疑推理在分镜表中的景别策略、运镜逻辑、时长操控、线索镜头设计与转场手法。
+
+| 章节 | 内容概要 |
+|---|---|
+| 分镜表定位 | 分镜表作为信息操控核心工具的定位说明 |
+| 景别选择 | 信息遮蔽景别、选择性特写、误导性全景 |
+| 运镜节奏 | 窥视缓推、不安摇移、突然静止的心理冲击 |
+| 时长把控 | 悬念拉伸、节奏骤变、沉默倒计时 |
+| 线索镜头设计 | 伏笔植入、视觉线索、回忆闪回处理 |
+| 信息揭示策略 | 真相揭示节奏、反转镜头语言、观众预期管理 |
+| 人物行为设计 | 可疑行为暗示、微表情线索、多义性动作 |
+| 台词与留白 | 未说完的话、歧义台词、沉默的嫌疑 |
+| 转场设计 | 时间跳切/闪回闪前/匹配剪辑/黑屏悬念 |
+
+## 使用方式
+
+本技能包作为 ToonFlow 导演 AI 的叙事手法参考,在故事创作流程中自动加载,指导:
+
+1. **叙事规划** — 确定悬念内核、信息释放节奏、场景氛围与音效方向
+2. **分镜表生成** — 根据叙事规划输出具体的景别、运镜、时长与转场方案
+
+两个文件分工明确、逐层递进,从"为什么这样拍"到"具体怎么拍"形成完整闭环。
diff --git a/data/skills/story_skills/Mystery_thriller/driector_skills/director_planning_narrative.md b/data/skills/story_skills/Mystery_thriller/driector_skills/director_planning_narrative.md
new file mode 100644
index 0000000..39aed9e
--- /dev/null
+++ b/data/skills/story_skills/Mystery_thriller/driector_skills/director_planning_narrative.md
@@ -0,0 +1,114 @@
+---
+name: director_planning_narrative
+description: 叙事手法技法 · 悬疑推理 — 定义悬疑推理类型在主题立意、信息操控、悬念节奏、场景氛围设计与声音方向上的叙事规划方法。适用于任何视觉风格。
+metaData: director_skills
+---
+
+# 叙事手法 · 悬疑推理 · 技法参考
+
+---
+
+## 一、主题立意与悬念内核
+
+### 悬疑推理叙事要点
+
+- **信息差是悬念的本质** — 悬疑叙事的核心是操控观众与角色之间的信息差。导演必须清楚每个时刻观众"知道什么""不知道什么""以为自己知道什么"
+- **不可靠叙事** — 镜头可以"说谎":选择性展示局部真相、用景别遮蔽关键信息、用转场暗示错误因果关系。观众信任镜头,利用这种信任制造反转
+- **真相分层设计** — 不要一次揭露全部真相。将真相拆成 3-5 层,每层揭示都让观众以为"这次是真的",直到最终反转颠覆一切
+- **离场感受建议方向** — 细思恐极 / 恍然大悟 / 脊背发凉 / 意犹未尽。避免"轻松愉快""温馨治愈"等与悬疑气质不匹配的方向
+- **日常中的裂缝** — 最好的悬疑不是从异常开始,而是从"一切正常"开始,然后让观众渐渐发现——某些东西不对
+
+---
+
+## 二、叙事结构与悬念节奏
+
+### 悬疑推理叙事要点
+
+- **钩子先行** — 开篇必须在 30 秒内抛出悬念钩子(一个反常现象、一句不该出现的话、一个不合理的画面),让观众产生"为什么?"的疑问
+- **信息释放节奏** — 遵循"给一藏三"原则:每释放一个信息,同时制造至少一个新疑问。信息量递增,但未解之谜也在递增,直到高潮段落集中清算
+- **红鲱鱼策略** — 有意识地设计 1-2 条误导线索,让观众建立错误推理。误导线索必须足够合理,揭穿时观众应感到"被骗了但心服口服"
+- **转折点用视觉而非对白** — 关键反转的处理方式应优先考虑视觉手段(镜头突然揭示被遮挡的全貌、闪回画面与当下画面的矛盾、道具位置的变化),而非角色口头解释
+- **节奏模型:收紧→释放→更紧** — 悬疑的节奏像拧发条:逐渐收紧→短暂释放假象→更猛烈地收紧。每次释放都是下一次收紧的起点
+- **时间线操控** — 悬疑推理可以打乱时间线叙事:倒叙开篇(先给结果再追因)、插叙补充(关键时刻插入过去线索)、平行时间线(同一时间不同视角)。但每次时间跳转必须有视觉标记
+
+---
+
+## 三、分场景氛围设计
+
+### 悬疑推理叙事要点
+
+- **氛围用具象词** — 不说"紧张",说"走廊尽头的灯突然灭了一盏"。具象的氛围描述能更好地指导置景和声效设计
+- **典型悬疑段落与设计** —
+
+| 段落类型 | 情绪方向 | 叙事手法 | 音乐建议 |
+|---|---|---|---|
+| 日常/假象 | 平静 + 暗流 | 一切正常但有一个"不对"的细节 | 轻松日常配乐中混入一个不协和音 |
+| 发现异常 | 困惑 + 好奇 | 主角注意到某个不合理之处 | 配乐抽离,只剩环境音和一个低频嗡鸣 |
+| 调查/追踪 | 专注 + 不安 | 逐步接近真相但环境越来越压迫 | 节奏性底噪,渐强 |
+| 误导/红鲱鱼 | 笃定 + 放松 | 看似找到答案,观众以为结束了 | 短暂舒缓旋律(制造虚假安全感) |
+| 反转/揭示 | 震惊 + 细思恐极 | 一个镜头颠覆之前所有认知 | 突然静默,或刺耳单音 |
+| 真相大白 | 释然 + 余悸 | 全部线索回溯串联,真相拼图完成 | 从压迫感渐入宽广器乐,但保留不安余韵 |
+
+- **空间压迫是叙事工具** — 用空间的封闭程度映射悬念的紧迫感:
+ - **初期**:开阔空间,正常生活,安全感充足
+ - **中期**:空间收窄(走廊、密室、巷子),物理压迫感上升
+ - **高潮**:极度封闭(困兽之斗)或极度开阔(真相揭示后的空旷感)
+- **视觉线索必须"明放暗藏"** — 线索应在镜头中出现但不被强调:放在画面边缘、被前景部分遮挡、角色看了一眼但没反应。第一遍看忽略,回看时发现
+- **镜头意图写"隐藏什么"而非"展示什么"** — "用近景是为了不让观众看到桌上的第二只杯子"优于"用近景拍角色表情"。悬疑分镜的核心是设计"画框之外"
+
+---
+
+## 四、声音与音乐方向
+
+### 悬疑推理叙事要点
+
+- **寂静比惊吓更恐怖** — 关键悬念时刻(发现异常、即将揭示真相)优先去掉所有声音,制造真空感。人在完全安静时本能地紧张
+- **底噪制造不安** — 低频嗡鸣、远处不明声响、若有若无的心跳声——持续的底噪让观众始终处于轻度不安状态,即使画面看起来正常
+- **音效误导** — 声音可以和镜头一样"说谎":让观众听到门外的脚步声以为是凶手,实际是无关人物。声音的误导比视觉误导更难察觉
+- **环境音的反常** — 每场戏标注核心环境音时,考虑加入一个"不该出现"的声音元素(安静夜晚的远处金属碰撞、正常教室的异常回声),用声音暗示"有什么不对"
+- **音乐情绪模型** —
+
+| 悬念阶段 | 音乐策略 | 覆盖率 |
+|---|---|---|
+| 日常/假象 | 正常配乐中暗藏不协和音 | 中 |
+| 疑点浮现 | 配乐减退,底噪渐起 | 低 |
+| 调查深入 | 节奏性底噪,逐渐压迫 | 中高 |
+| 反转前夕 | 完全静默(真空感) | 无 |
+| 反转瞬间 | 单一刺耳音/强打击或持续静默 | 极端 |
+| 真相回溯 | 宽广器乐,带忧伤或不安尾音 | 中 |
+
+- **"倒计时"听觉** — 接近真相的段落可用逐渐加速的节奏元素(钟摆、滴水、心跳渐快)暗示时间紧迫感,比配乐更能制造生理性紧张
+
+---
+
+## 五、构图与景别叙事
+
+### 悬疑推理叙事要点
+
+- **三大核心构图的叙事功能** —
+ - **倾斜构图(荷兰角)** — 世界失序/不稳定/角色心理扭曲,用于关键反转或角色精神状态异常的段落
+ - **遮挡式构图** — 前景大面积遮挡主体,制造"偷窥""隐藏""不完整信息"的暗示
+ - **深焦构图** — 前景与背景同时清晰,让观众自行选择关注点——线索可能藏在不被注意的景深处
+- **中心构图的限定使用** — 中心构图在悬疑中暗示"审视/对峙/无处可逃",留给审讯、对峙、真相揭示等高压场景
+- **画框边缘即线索区** — 悬疑构图中,画面边缘和角落是藏线索的黄金区域。观众注意力集中在中心,线索放边缘,回看时才被发现
+- **对称构图的不安感** — 过度完美的对称构图在悬疑中制造"人工感/不自然感",暗示表面秩序下隐藏着混乱
+- **景别即信息操控** — 景别选择的核心逻辑不是"美不美"而是"让观众看到多少":
+ - **特写** — 强制观众看到某个细节(可能是线索,也可能是误导)
+ - **中景** — 提供足够信息但遮蔽关键局部
+ - **全景** — 揭示全貌,常用于反转瞬间(原来房间里还有第三个人)
+- **大特写在悬疑中的功能** — 不是情感核弹而是"证据放大镜":一把沾血的钥匙、一张照片上被划掉的脸、一双微微颤抖的手。每次大特写都应传递一个信息量
+- **远景的孤立感** — 远景在悬疑中强调角色的"渺小与无助":茫茫雪原中独行的人、空旷仓库中的孤灯、迷宫般城市中的微小身影
+
+---
+
+## 六、镜头运动与节奏
+
+### 悬疑推理叙事要点
+
+- **窥视运镜** — 缓推 + 前景遮挡,模拟"有人在暗处注视"的视角。观众不知道"谁"在看,但能感受到被窥视的不安
+- **不安手持** — 轻微手持晃动打破稳定感,用于角色发现异常后的主观段落。晃动幅度要克制——不是纪录片抖动,而是"手不自觉微颤"的感觉
+- **突然静止** — 正在运动的镜头突然停下,制造"冻结"感。用于重大发现瞬间(角色/观众突然注意到某个不对的东西)
+- **快切与悬疑不完全兼容** — 快速剪辑适合追逐/逃亡段落,但在悬念建构段落应避免。悬念需要时间发酵,碎切会打断思考
+- **360° 环绕** — 适用于审讯/对峙场景,摄像机缓慢环绕角色,制造"被包围/无处可逃"的心理压迫
+- **运镜即信息** — 镜头运动的核心逻辑是"引导观众看什么":缓推 = 引导关注细节;缓拉 = 揭示被遮蔽的全貌;横移 = 发现新信息;突然停止 = 信息冲击
+- **时间操控运镜** — 升格(慢动作)用于关键发现瞬间,放大角色的微反应;降格(加速)用于时间流逝的焦虑感。但悬疑中升格使用应极其克制(全片 1-2 次)
diff --git a/data/skills/story_skills/Mystery_thriller/driector_skills/director_storyboard_table_narrative.md b/data/skills/story_skills/Mystery_thriller/driector_skills/director_storyboard_table_narrative.md
new file mode 100644
index 0000000..3a770bd
--- /dev/null
+++ b/data/skills/story_skills/Mystery_thriller/driector_skills/director_storyboard_table_narrative.md
@@ -0,0 +1,92 @@
+---
+name: director_storyboard_table_narrative
+description: 分镜表叙事手法 · 悬疑推理 — 定义悬疑推理在分镜表中的景别策略、运镜逻辑、时长操控、线索镜头设计、信息揭示策略与转场手法。适用于任何视觉风格。
+metaData: director_skills
+---
+
+# 分镜表叙事手法 · 悬疑推理 · 技法参考
+
+---
+
+## 一、分镜表定位
+
+分镜表是导演将剧本转化为镜头语言的核心工具。表单字段由导演根据项目需要自行设定(分镜号、景别、运镜、时长、人物、事件、台词、光影、情绪、转场等),以下仅提供悬疑推理叙事类型下的技法参考。
+
+---
+
+## 二、景别选择
+
+- **景别即信息量** — 悬疑分镜中景别的核心逻辑是"让观众看到多少信息"。每个镜头先问:这里要让观众知道什么?要隐藏什么?
+- **选择性特写** — 用特写强制引导观众关注某个细节(一把钥匙、一个表情、一行字),但要警惕:过于明显的特写等于直接"画箭头",观众会猜到是线索。最好的线索特写是"有理由的"(角色在看/在用)
+- **遮蔽性中景** — 中景在悬疑中的核心价值是"展示够多但藏住关键"。人物中景交代了动作但看不清微表情;空间中景展示了房间但遮住了角落
+- **反转全景** — 全景是悬疑中最有力的反转工具:从局部切到全景,突然揭示"房间里还有别人""地上有血迹""窗户是开着的"。全景的信息量爆炸适合放在反转瞬间
+- **定场镜头的悬念植入** — 定场不只是交代环境,要在定场镜头中植入一个"不对"的细节(远处窗户有人影、院子里多了一把椅子)。最多 1-2 个镜头完成定场+悬念种子
+
+---
+
+## 三、运镜节奏
+
+- **默认稳定但不死板** — 50% 镜头静止机位,但关键段落可引入轻微不稳定感(微幅手持、极缓横移)暗示"有什么不对"
+- **缓推 = 发现/逼近** — 缓慢推向某个物体或人物,暗示"观众即将看到重要的东西"。缓推速度越慢,悬念越强
+- **缓拉 = 揭示/全貌** — 从局部缓拉到全景,揭示被遮蔽的信息。是悬疑中最经典的"反转运镜"
+- **横移 = 扫描/搜索** — 缓慢横移模拟"扫视空间",适合调查场景。观众跟随镜头一起"搜索",参与感增强
+- **突然静止 = 发现冲击** — 运动中的镜头突然停下来,制造"冻结"感。用于主角突然看到了不该看到的东西
+- **窥视运镜** — 从遮挡物后方缓推,前景保留遮挡物边缘,模拟"有人在暗处观察"的第三视角
+
+---
+
+## 四、时长把控
+
+- **悬念镜头拉长** — 悬疑中关键的"发现"镜头可比正常时长多 1-2s,给观众"意识到"的时间。角色盯着某物 3s 比 1s 更令人不安
+- **日常镜头正常** — 日常/假象段落的镜头时长保持正常(2-4s),不要用异常时长打破伪装
+- **反转前的拉伸** — 反转镜头前的最后一个镜头应适当拉长(4-5s),制造"暴风雨前的寂静"
+- **反转瞬间极短或极长** — 反转揭示镜头要么极短(1-1.5s 闪切,冲击感)要么极长(5-6s 缓揭,恐惧蔓延感),不要用中间值
+- **黄金 6 秒规则依然适用** — 除非有运镜或新信息持续输入,单镜头不超过 6s。悬疑的"慢"不是镜头长,是段落节奏的起伏
+- **沉默倒计时** — 无台词无动作的纯静默镜头在悬疑中是强力工具,但不超过 4s,否则观众会以为是技术故障
+
+---
+
+## 五、线索镜头设计
+
+- **伏笔镜头不加标注** — 埋设线索的镜头在分镜表中不要用特殊标记(避免"注意!这是线索!"的AI感),让线索镜头看起来和普通镜头一样自然
+- **线索出现三原则** — ①有叙事理由出现(角色在用/在看/在经过);②不在画面正中(放边缘或前景);③不给异常时长(正常节奏带过)
+- **重要线索至少出现两次** — 第一次"无意经过",第二次"被发现意义"。两次之间间隔足够远,让观众第一次忽略
+- **闪回镜头要变质感** — 回忆/闪回镜头在分镜中需标注与当下叙事的视觉区分(不同色温、不同景别倾向、不同运镜速度),让观众一眼辨别时间线
+- **道具连续性** — 悬疑分镜中道具位置的变化本身是叙事:杯子换了位置、花瓶被移动过、照片少了一张。在分镜描述中精确交代关键道具的状态
+
+---
+
+## 六、信息揭示策略
+
+- **小揭示用对白,大揭示用画面** — 次要信息可以通过角色对话交代,但核心反转必须用镜头语言(全景揭示、特写聚焦、闪回拼接)完成
+- **揭示节奏:先给角色后给观众** — 反转镜头的经典节奏:先拍角色表情变化(震惊/恐惧)→再切到角色所见(观众才知道原因)。角色的反应为观众"预热"情绪
+- **或反过来:先给观众后给角色** — 观众先看到真相(背后有人),角色浑然不知——制造"快回头啊!"的焦虑感。这种手法的分镜需要用全景或过肩镜头让观众看到角色视线之外的信息
+- **反转后给回看时间** — 大反转之后不要立刻推进叙事,留 1-2 个镜头给观众消化(角色怔住、空镜、沉默),让信息量沉淀
+
+---
+
+## 七、人物行为设计
+
+- **可疑行为要有日常外衣** — 角色的可疑行为在分镜中不能太明显。"反复看手表"比"鬼鬼祟祟张望"更好——前者可能无辜,后者太刻意
+- **微表情是核心线索载体** — 悬疑中人物的微表情(瞳孔微缩、嘴角一闪而过的变化、手指轻扣桌面)比大幅度表演更有价值。分镜中涉及线索性表情时用近景/特写捕捉
+- **多义性动作** — 设计的人物动作应允许多种解读:角色擦手可能是洗完手、也可能是擦去什么痕迹。分镜不要通过额外信息"解释"动作含义,让观众自己判断
+- **单镜头动作不超过两个** — "低头看信 + 迅速折起"可以,"低头看信 + 折起 + 塞进口袋 + 环顾四周"会使关键动作淹没在信息中
+
+---
+
+## 八、台词与留白
+
+- **未说完的话是最好的悬念** — "其实那天晚上……算了。"角色欲言又止比说出来更令人不安。分镜中给这类台词配近景+沉默留白(2-3s)
+- **一句台词对应一个镜头** — 避免单镜头内多句对白,尤其是包含关键信息的对白。切换说话者时切镜头
+- **歧义台词用表情辅助** — 有双重含义的台词(明面正常、暗面可疑)配合角色微妙表情,分镜中用近景确保观众能捕捉到表情细节
+- **旁白/内心独白要克制** — 悬疑叙事优先用画面叙事,旁白只在必须交代内心推理过程时使用。旁白镜头配中远景或空镜,避免近景嘴不动的违和感
+
+---
+
+## 九、转场设计
+
+- **同场景内用硬切** — 同一场景内镜头间硬切,保持紧凑
+- **场景切换用黑屏/闪白** — 悬疑中场景转换用短黑屏(0.5-1s)制造"中断感",比空镜过渡更符合悬疑节奏
+- **闪回用匹配剪辑** — 当下画面与回忆画面用相似构图/动作做匹配剪辑切入,强化因果联系(当下看到一把刀→闪回到那把刀出现的场景)
+- **时间跳跃用字幕标注** — 打乱时间线的叙事在转场时需要明确的时间标记("三天前""同一时刻"),避免观众迷失
+- **段落间用"悬念尾钩"** — 每个段落结尾留一个未解悬念镜头再转场,保持跨段落的牵引力
diff --git a/data/skills/story_skills/Mystery_thriller/images/title.png b/data/skills/story_skills/Mystery_thriller/images/title.png
new file mode 100644
index 0000000..870b5be
Binary files /dev/null and b/data/skills/story_skills/Mystery_thriller/images/title.png differ
diff --git a/data/skills/story_skills/Psychological_drama/README.md b/data/skills/story_skills/Psychological_drama/README.md
new file mode 100644
index 0000000..bf52e20
--- /dev/null
+++ b/data/skills/story_skills/Psychological_drama/README.md
@@ -0,0 +1,50 @@
+# 心理博弈 · 导演叙事手法技能包
+
+## 简介
+
+本技能包为 **心理博弈** 类型故事提供一套完整的导演叙事手法参考,涵盖从宏观叙事规划到微观分镜执行的全流程指导。适用于任何视觉风格。
+
+## 核心理念
+
+- **表面平静暗流涌动** — 心理博弈的核心魅力在于"说出来的和想的不一样",每句话都有弦外之音,每个微笑都可能是陷阱
+- **信息就是武器** — 谁掌握信息谁就掌握主动权,叙事张力来自信息的不对称、隐瞒与揭露
+- **多层博弈** — 最高级的心理博弈不是A骗B,而是"A知道B在骗,B知道A知道,A知道B知道A知道"的认知套娃
+- **人性的灰度** — 心理博弈叙事中没有绝对的好人和坏人,每个角色都有自己的逻辑和苦衷
+
+## 文件结构
+
+```
+Psychological_drama/
+├── README.md ← 本文件
+└── driector_skills/
+ ├── director_planning_narrative.md ← 叙事规划手法
+ └── director_storyboard_table_narrative.md ← 分镜表叙事手法
+```
+
+## 技能文件说明
+
+### 1. 叙事规划手法 (`director_planning_narrative.md`)
+
+导演在 **叙事规划阶段** 使用的技法参考,定义心理博弈在主题立意、情感节奏、场景情绪设计与声音方向上的整体规划方法。
+
+| 章节 | 内容概要 |
+|---|---|
+| 主题立意与情感内核 | 表里不一、信息武器、多层认知、人性灰度 |
+| 叙事结构与节奏规划 | 信息操控、视角切换、反转设计、张力累积释放 |
+| 分场景情绪设计 | 六大典型博弈段落设计、对话即战场、沉默攻防 |
+| 声音与音乐方向 | 压迫式配乐、沉默的杀伤力、心理暗示音效 |
+| 构图与景别叙事 | 对峙构图、权力景别、微表情捕捉、空间博弈 |
+| 镜头运动与节奏 | 对峙静止、压迫缓推、失衡暗示、节奏即心理 |
+
+### 2. 分镜表叙事手法 (`director_storyboard_table_narrative.md`)
+
+导演在 **分镜表制作阶段** 使用的技法参考,定义心理博弈在分镜表中的景别博弈控制、运镜心理映射、时长张力、镜头合并与转场逻辑。
+
+| 章节 | 内容概要 |
+|---|---|
+| 分镜表定位 | 分镜表作为心理博弈节奏控制核心工具的定位说明 |
+| 景别选择 | 微表情景别、对峙景别、信息控制景别 |
+| 运镜节奏 | 对峙静止、压迫缓推、失衡偏移、心理节奏 |
+| 时长把控 | 对话张力时长、沉默攻防、反转节奏 |
+| 镜头合并策略 | 对话连续性、博弈段整合、叙事密度 |
+| 一镜到底 | 对峙长镜头、空间权力转移、心理攻防 |
diff --git a/data/skills/story_skills/Psychological_drama/driector_skills/director_planning_narrative.md b/data/skills/story_skills/Psychological_drama/driector_skills/director_planning_narrative.md
new file mode 100644
index 0000000..efa400e
--- /dev/null
+++ b/data/skills/story_skills/Psychological_drama/driector_skills/director_planning_narrative.md
@@ -0,0 +1,109 @@
+---
+name: director_planning_narrative
+description: 叙事手法技法 · 心理博弈 — 定义心理博弈类型在主题立意、情感节奏、场景情绪设计与声音方向上的叙事规划方法。适用于任何视觉风格。
+metaData: director_skills
+---
+
+# 叙事手法 · 心理博弈 · 技法参考
+
+---
+
+## 一、主题立意与情感内核
+
+### 心理博弈叙事要点
+
+- **表面平静暗流涌动** — 心理博弈的核心魅力在于"表里不一"。每句看似平常的对话都有弦外之音,每个微笑都可能是精心计算的策略。主题立意应围绕"人与人之间隐形的攻防战"
+- **信息就是武器** — 心理博弈叙事的底层引擎是"信息不对称"。谁知道什么、谁不知道什么、谁假装不知道——信息的隐瞒、揣测与揭露构成叙事张力的核心
+- **多层认知博弈** — 最高级的心理博弈不是简单的欺骗,而是"认知套娃":A以为自己在骗B → B其实早知道 → A知道B知道但假装不知道。层数越多,观众的智力快感越强
+- **离场感受建议方向** — 烧脑 / 后背发凉 / 恍然大悟 / 不寒而栗。避免"血腥""暴力"等纯感官方向
+- **人性的灰度** — 心理博弈叙事中没有绝对的好人和坏人。每个角色都有自己的逻辑、苦衷和底线。最好的博弈是"观众理解每一方的动机,但不知道该站哪一边"
+
+---
+
+## 二、叙事结构与节奏规划
+
+### 心理博弈叙事要点
+
+- **信息操控是基本功** — 心理博弈叙事的核心任务是操控信息流。叙事规划阶段需明确:每个段落中观众知道什么、角色A知道什么、角色B知道什么。三者之间的信息差就是张力来源
+- **视角切换制造认知翻转** — 同一事件从不同角色视角呈现,每切换一次视角,观众对事件的理解就翻转一次。规划中应标注"视角切换点"和每次切换带来的认知更新
+- **反转需要铺垫** — 每一次反转都必须在前面埋下足够的线索。观众在反转时应感受到"早该想到的!"而非"这也太突然了"。铺垫与反转的比例建议 3:1(三份铺垫换一次反转)
+- **张力累积→短暂释放→更大的张力** — 心理博弈的节奏是螺旋上升的:每次博弈回合结束后有短暂的松弛,但下一回合的赌注更大、风险更高
+- **"暴露"节奏模型** — 心理博弈的核心节奏是角色"底牌"的逐步暴露:伪装 → 裂缝出现 → 对方察觉 → 反将一军 → 更深的伪装 → 更大的暴露。每一轮都比上一轮更接近真相
+- **观众的位置设计** — 明确每个段落中观众是"上帝视角"(知道双方底牌)还是"跟随视角"(只知道一方的信息)。两种位置制造完全不同的紧张感:上帝视角 = 看着角色走进陷阱的焦虑;跟随视角 = 与角色一起被骗的震惊
+
+---
+
+## 三、分场景情绪设计
+
+### 心理博弈叙事要点
+
+- **情绪目标用博弈性词汇** — 不说"紧张",说"笑着说话但掌心全是汗"。不说"害怕",说"发现对方知道了但不知道对方知道多少"。博弈的情绪永远是多层的、矛盾的
+- **典型情绪段落与设计** —
+
+| 段落类型 | 情绪方向 | 叙事手法 | 音乐建议 |
+|---|---|---|---|
+| 表面和平 | 客套 + 暗流 | 正常对话但每句话都有弦外之音 | 极轻衬底或无配乐,让对话张力自己运作 |
+| 试探交锋 | 紧张 + 智力快感 | 一来一回的对话中暗藏攻防,话中有话 | 低频暗流,节奏微妙加速 |
+| 裂缝出现 | 不安 + 警觉 | 某个细节暴露了,对方的表情一闪而过的变化 | 不协和音程一闪,随即恢复平静 |
+| 摊牌/反转 | 震惊 + 恍然 | 底牌翻开,之前所有的线索突然串联 | 突然静默,或单一低音持续 |
+| 僵持对峙 | 窒息 + 平衡 | 双方都知道对方知道了,但谁都不先动 | 完全无声,只有环境音和呼吸 |
+| 终局揭底 | 颠覆 + 唏嘘 | 最终真相比所有人以为的都更深一层 | 极简器乐或余音袅袅 |
+
+- **"对话即战场"是叙事核心工具** — 心理博弈中对话不是信息传递,而是攻防武器:
+ - **主动问话** = 试探/进攻(想套出信息)
+ - **回避/转移话题** = 防御(不想暴露信息)
+ - **反问** = 反击(把压力推回给对方)
+ - **沉默** = 最强的牌(让对方自己焦虑暴露)
+- **空间即权力场** — 心理博弈场景中,谁占据空间的主动位置,谁就在博弈中占上风:坐在桌子另一端 = 对等博弈;站起来走动 = 施压;背对对方 = 自信/蔑视;被困在角落 = 劣势
+- **微表情是真话** — 心理博弈叙事的高级手法是"嘴在说谎但身体在说真话"。叙事规划中每个博弈段落应标注角色的"真实反应"(微表情、无意识小动作),这些是给观众的线索
+
+---
+
+## 四、声音与音乐方向
+
+### 心理博弈叙事要点
+
+- **沉默是最强的武器** — 心理博弈的关键对峙段落应优先去掉配乐,只留环境音和人物的呼吸/心跳。沉默中的对话比任何配乐都更紧张
+- **配乐制造认知暗示** — 心理博弈的配乐不是烘托气氛,而是引导观众的认知判断。某个角色出场时的配乐暗示"这个人有问题";一段平静的对话配上不安的低音暗示"有陷阱"
+- **声音的欺骗性** — 配乐可以配合叙事"骗"观众:用温暖的配乐让观众以为某个角色是好人,在反转时配乐的变调本身就是"啊,原来如此"的叙事工具
+- **环境音即心理空间** — 密闭空间的回声 = 被困/无处可逃;嘈杂环境中的对话 = 隐秘/不方便说真话;空旷安静的空间 = 无处藏身/一切都被听到
+- **音乐情绪递进模型** —
+
+| 情绪阶段 | 音乐策略 | 覆盖率 |
+|---|---|---|
+| 表面和平 | 极轻衬底或无配乐 | 极低 |
+| 暗流涌动 | 低频不协和音,音量渐增 | 中低 |
+| 交锋升级 | 节奏感暗示,紧张加码 | 中 |
+| 摊牌/反转 | 突然静默或一个强音后寂静 | 极端 |
+| 终局 | 极简器乐,留余韵 | 低 |
+
+- **"心跳暴露"** — 在关键博弈段落,用角色的心跳声作为音效。心跳加速暗示角色在撒谎/紧张/即将被拆穿。但要克制使用,成为角色"说谎探测器"会降低悬念
+
+---
+
+## 五、构图与景别叙事
+
+### 心理博弈叙事要点
+
+- **三大核心构图的叙事功能** —
+ - **对称构图** — 两人对坐/对立,传递"势均力敌/对峙/博弈平衡"
+ - **三角构图** — 三人博弈中的第三方(观察者/变数/裁判),打破二元对立增加复杂度
+ - **失衡构图** — 主体偏向一侧,另一侧留白或有威胁性元素,暗示"平衡被打破/有人在暗处"
+- **景别即信息权力** — 特写 = 观众被允许看到微表情(读心);中景 = 观众只能看到肢体语言(猜测);远景 = 观众只能看到位置关系(判断格局)。用景别控制观众的"读心权限"
+- **对话景别的攻防** — 对话中正反打的景别应随博弈态势变化:占上风的一方给近景(自信/从容);劣势方给特写(紧张/微表情暴露);势均力敌时双人中景
+- **空间纵深即博弈格局** — 利用空间纵深传递博弈关系:前景 = 当前说话者(明面);中景 = 倾听者(观察/计算);背景 = 第三方或隐藏的信息
+- **大特写的读心功能** — 大特写(瞳孔/嘴角/指尖)用于捕捉角色"说谎时的破绽"或"发现被骗时的一闪而过的变化"。这是给观众的线索,必须精准
+- **"不该看到的东西"** — 博弈叙事的高级构图技巧:让观众通过构图"不经意间"看到角色试图隐藏的东西(背后的手在发抖、桌下的拳头攥紧、眼神一瞬间的飘移)
+
+---
+
+## 六、镜头运动与节奏
+
+### 心理博弈叙事要点
+
+- **对峙段落绝对静止** — 心理博弈的核心对峙段落,镜头应当像"屏住呼吸"一样完全静止。60% 以上镜头为静止机位。任何运镜都会分散观众对微表情和对话潜台词的注意力
+- **缓推 = 逼近真相/施压** — 极缓的推近暗示"观众/角色正在靠近真相"或"一方在对另一方施加压力"。速度越慢,压迫感越强
+- **缓拉 = 揭示全局/发现** — 从局部缓慢拉远揭示角色没有注意到的全貌(有人在暗处听、证据就在身后),是"观众知道但角色不知道"的经典手法
+- **微妙偏移** — 静止画面中镜头极缓地偏向一侧,暗示"博弈的天平在倾斜"。偏向谁,谁就在失去优势
+- **快切用于反转瞬间** — 心理博弈中唯一允许快切的时刻是"底牌翻开"的反转瞬间:快速的景别跳切(全景→特写→大特写)模拟"恍然大悟"的心理冲击
+- **运镜即心理态势** — 静止 = 对峙/平衡;缓推 = 逼近/施压;缓拉 = 揭示/退让;偏移 = 天平倾斜;快切 = 真相揭露
diff --git a/data/skills/story_skills/Psychological_drama/driector_skills/director_storyboard_table_narrative.md b/data/skills/story_skills/Psychological_drama/driector_skills/director_storyboard_table_narrative.md
new file mode 100644
index 0000000..dad4bca
--- /dev/null
+++ b/data/skills/story_skills/Psychological_drama/driector_skills/director_storyboard_table_narrative.md
@@ -0,0 +1,89 @@
+---
+name: director_storyboard_table_narrative
+description: 分镜表叙事手法 · 心理博弈 — 定义心理博弈在分镜表中的景别博弈控制、运镜心理映射、时长张力、镜头合并与转场逻辑。适用于任何视觉风格。
+metaData: director_skills
+---
+
+# 分镜表叙事手法 · 心理博弈 · 技法参考
+
+---
+
+## 一、分镜表定位
+
+分镜表是导演将剧本转化为镜头语言的核心工具。表单字段由导演根据项目需要自行设定(分镜号、景别、运镜、时长、人物、事件、台词、光影、情绪、转场等),以下仅提供心理博弈叙事类型下的技法参考。
+
+---
+
+## 二、景别选择
+
+- **特写是读心工具** — 心理博弈叙事中特写的使用频率高于其他类型。特写用于捕捉角色"嘴上说的和心里想的不一样"的微表情破绽:眼神一瞬间的飘移、嘴角微不可察的上扬、瞳孔的收缩
+- **中景是博弈主场** — 对话博弈段落的主力景别是中景/近景,确保观众同时看到角色的表情和肢体语言。纯特写丢失肢体信息,纯远景丢失表情信息
+- **远景交代格局** — 远景用于交代博弈的"格局":谁和谁在一起、第三方在哪里、空间中的权力位置关系
+- **大特写是线索投放** — 大特写(指尖颤抖/瞳孔变化/嘴角一闪而过的抽搐)用于向观众投放关键线索:这个人在说谎、这个人发现了什么、这个人即将行动
+- **定场要暗藏信息** — 博弈叙事的定场镜头不只交代空间,要在定场中就传递"博弈场"的属性:密闭/开阔、有无第三者、退路在哪里
+
+---
+
+## 三、运镜节奏
+
+- **默认静止,静止即对峙** — 65% 以上镜头应为静止机位。心理博弈中镜头的静止传递"两个人在较量,谁先动谁先露破绽"的对峙感
+- **极缓推 = 逼近/施压** — 比正常缓推更慢的速度,暗示"真相在被逼近"或"一方正在施加心理压力"
+- **缓拉 = 揭示/发现** — 从角色缓慢拉开揭示角色不知道的信息(有人在身后/证据在桌上/另一个角色的反应)
+- **微妙偏移 = 天平倾斜** — 静止画面中镜头极缓地偏向一侧,暗示博弈态势正在改变
+- **快切仅用于反转** — 反转揭底瞬间允许快速景别跳切(中景→特写→大特写),模拟认知震荡。其余段落禁止快切
+
+---
+
+## 四、时长把控
+
+- **对话镜头 3-5s** — 博弈对话的正反打节奏稍慢于日常对话。每句话之间的沉默间隔是"双方都在计算"的心理时间
+- **沉默对峙 4-6s** — 无台词的对视/沉默段落需要足够时长,让观众感受到"空气中在发生什么"
+- **微表情特写 2-3s** — 微表情破绽的特写时长要精确:太短观众看不到,太长变成刻意强调
+- **反转瞬间 1-2s** — 底牌翻开的关键反应镜头要短而精准,快到让观众来不及反应就被震到
+- **远景/格局交代 3-4s** — 交代博弈格局的远景不需要太长,信息到位即可
+- **黄金法则:沉默比台词长** — 心理博弈中,两句话之间的沉默应该比话本身更长。沉默是双方在"出牌"之间的博弈
+
+---
+
+## 五、镜头合并策略(去 AI 感)
+
+- **对话段落保持正反打** — 与其他类型不同,心理博弈的对话段落需要精确的正反打来传递攻防节奏,不应强行合并为双人镜头。每一次切换都是"球"在两个人之间的传递
+- **博弈回合一组完成** — 一个完整的"攻防回合"(试探→回应→再试探→摊牌)应作为一组镜头整体规划,保持内部节奏的连贯
+- **叙事密度极高** — 心理博弈中每个镜头都必须承载信息(台词潜台词/微表情/肢体线索/空间暗示),不允许纯氛围镜头
+- **导演思维检验** — 写完分镜后自检:每个镜头是否都有"信息层"?观众在这个镜头中能"读到"什么?如果什么都读不到,这个镜头不该存在
+
+---
+
+## 六、一镜到底(长镜头合并)
+
+- **适用条件** — 两人在空间中走位变化、权力关系随空间位置转移、从一个信息状态过渡到另一个信息状态
+- **典型场景** — 角色A站起走向窗边(从对等变为俯视)、角色围着桌子走一圈(权力展示)、从会议室走到走廊(从公开到私密)
+- **标注方式** — 在运镜字段写明完整路径(如"一镜到底:角色A起身→缓推跟随到窗前→摇镜带入角色B在座位上的反应→落幅双人构图"),画面描述中交代起幅和落幅
+- **时长放宽** — 博弈长镜头因信息密度持续更新,可突破单镜 6s 上限,但不超过 12s
+- **空间位移即心理位移** — 长镜头中角色的每一步空间移动都应对应心理博弈态势的变化
+
+---
+
+## 七、人物互动设计
+
+- **对话就是交锋** — 分镜表中博弈对话的每句台词都应标注"潜台词"或"真实意图"。台词是表面,潜台词才是博弈
+- **微动作即破绽** — 分镜表中每个博弈镜头应为角色设计一个细微的"真实反应"动作:不经意地摸耳朵 = 紧张;手指轻敲桌面 = 计算;喝水 = 拖延时间
+- **谁先开口谁先输** — 博弈对峙中沉默是武器。分镜表应标注"沉默属于谁"——谁在制造沉默(主动施压),谁在承受沉默(被动防守)
+
+---
+
+## 八、台词与留白
+
+- **每句话都有两层意思** — 心理博弈中没有"普通台词"。分镜表中的台词应精简且多义,让观众在二刷时发现"原来那句话是这个意思"
+- **沉默比台词更危险** — 博弈中最危险的时刻不是争吵,而是一方突然不说话了。沉默代表"我已经想好了下一步"
+- **回答中的信息量** — 台词的信息量需要精确控制:回答太少 = 可疑(在隐瞒);回答太多 = 可疑(在掩饰);回答刚好 = 最可疑(太完美了)
+
+---
+
+## 九、转场设计
+
+- **默认硬切** — 同场戏内镜头间用硬切,保持博弈节奏的利落与紧张
+- **博弈回合间用短暂黑屏** — 一个博弈回合结束到下一回合开始,可用 0.3-0.5s 的短暂黑屏做"呼吸",同时暗示"新一轮开始了"
+- **视角切换用硬切** — 从角色A视角切换到角色B视角时,用硬切制造"认知翻转"的冲击感
+- **闪回用快闪** — 博弈中角色突然回忆起关键线索时,用极短的闪回画面(0.5-1s)插入,模拟"灵光一闪"的认知体验
+- **场景切换保持紧张** — 不同场景间的转场不用柔性过渡,保持心理博弈全程的紧绷感。如需缓冲,用一个角色独处的短镜头(思考/计划下一步)做情绪过渡
diff --git a/data/skills/story_skills/Psychological_drama/images/title.png b/data/skills/story_skills/Psychological_drama/images/title.png
new file mode 100644
index 0000000..5c049e6
Binary files /dev/null and b/data/skills/story_skills/Psychological_drama/images/title.png differ
diff --git a/data/skills/story_skills/Scifi_post_apocalypse/README.md b/data/skills/story_skills/Scifi_post_apocalypse/README.md
new file mode 100644
index 0000000..5780669
--- /dev/null
+++ b/data/skills/story_skills/Scifi_post_apocalypse/README.md
@@ -0,0 +1,61 @@
+# 科幻末世 · 导演叙事手法技能包
+
+## 简介
+
+本技能包为 **科幻末世** 类型故事提供一套完整的导演叙事手法参考,涵盖从宏观叙事规划到微观分镜执行的全流程指导。适用于任何视觉风格。
+
+## 核心理念
+
+- **废墟美学** — 文明的残骸本身就是最有力的叙事,一栋坍塌的大楼比千言万语更能说明"发生了什么"
+- **生存即主题** — 末世叙事的底层驱动力是"活下去",所有抉择、道德、人性都在生存压力下被放大
+- **人性实验室** — 末世是极端环境下的人性测试:谁会背叛、谁会牺牲、谁在绝望中仍保有善良
+- **希望的重量** — 越是黑暗的世界,一丝光亮越珍贵。废墟中的一朵花比花园中的百亩花田更有叙事力
+
+## 文件结构
+
+```
+Scifi_post_apocalypse/
+├── README.md ← 本文件
+└── driector_skills/
+ ├── director_planning_narrative.md ← 叙事规划手法
+ └── director_storyboard_table_narrative.md ← 分镜表叙事手法
+```
+
+## 技能文件说明
+
+### 1. 叙事规划手法 (`director_planning_narrative.md`)
+
+导演在 **叙事规划阶段** 使用的技法参考,定义科幻末世在主题立意、生存节奏、场景废墟设计与声音方向上的整体规划方法。
+
+| 章节 | 内容概要 |
+|---|---|
+| 主题立意与末世内核 | 生存压力、人性极限、文明遗迹叙事、希望与绝望的辩证 |
+| 叙事结构与生存节奏 | 危机驱动、资源博弈、信任考验、希望曲线 |
+| 分场景氛围设计 | 六大典型末世段落设计、空间衰败叙事、环境危机隐喻 |
+| 声音与音乐方向 | 工业废噪、寂静荒原、警报音叙事、电子余韵 |
+| 构图与景别叙事 | 废墟全景/生存特写/压迫空间、景别的生存表达 |
+| 镜头运动与节奏 | 求生手持、废墟漫游、危机快推、荒原缓拉 |
+
+### 2. 分镜表叙事手法 (`director_storyboard_table_narrative.md`)
+
+导演在 **分镜表制作阶段** 使用的技法参考,定义科幻末世在分镜表中的景别策略、运镜节奏、时长把控、生存行动分镜与转场手法。
+
+| 章节 | 内容概要 |
+|---|---|
+| 分镜表定位 | 分镜表作为生存叙事核心工具的定位说明 |
+| 景别选择 | 废墟远景价值、生存特写、科技遗迹景别 |
+| 运镜节奏 | 手持求生感、荒原稳定、危机加速、探索缓移 |
+| 时长把控 | 废墟凝视时长、危机压缩、沉默荒原的留白 |
+| 生存行动设计 | 搜索/战斗/逃亡的分镜逻辑、资源争夺镜头语言 |
+| 人性抉择叙事 | 道德困境镜头、信任与背叛、牺牲的仪式感 |
+| 台词与留白 | 惜字如金、环境叙事替代对白、回忆碎片 |
+| 转场设计 | 废墟蒙太奇/信号干扰/时间衰变/闪回文明 |
+
+## 使用方式
+
+本技能包作为 ToonFlow 导演 AI 的叙事手法参考,在故事创作流程中自动加载,指导:
+
+1. **叙事规划** — 确定末世内核、生存节奏曲线、场景废墟氛围与音效方向
+2. **分镜表生成** — 根据叙事规划输出具体的景别、运镜、时长与转场方案
+
+两个文件分工明确、逐层递进,从"为什么这样拍"到"具体怎么拍"形成完整闭环。
diff --git a/data/skills/story_skills/Scifi_post_apocalypse/driector_skills/director_planning_narrative.md b/data/skills/story_skills/Scifi_post_apocalypse/driector_skills/director_planning_narrative.md
new file mode 100644
index 0000000..779f8d9
--- /dev/null
+++ b/data/skills/story_skills/Scifi_post_apocalypse/driector_skills/director_planning_narrative.md
@@ -0,0 +1,114 @@
+---
+name: director_planning_narrative
+description: 叙事手法技法 · 科幻末世 — 定义科幻末世类型在主题立意、生存节奏、场景废墟设计与声音方向上的叙事规划方法。适用于任何视觉风格。
+metaData: director_skills
+---
+
+# 叙事手法 · 科幻末世 · 技法参考
+
+---
+
+## 一、主题立意与末世内核
+
+### 科幻末世叙事要点
+
+- **生存是叙事的底层操作系统** — 末世中的一切行为(走路、喝水、睡觉、信任)都被"活下去"这个前提重新定义。叙事中每个决策都应有生存成本的考量
+- **文明的残骸即叙事** — 废墟中残存的文明痕迹(一张全家福、一个生锈的游乐设施、一辆废弃的校车)自带叙事力量——它们无声地讲述"这里曾经有什么"。善用环境叙事代替对白解释
+- **人性在极端中显形** — 末世是天然的"人性实验室":资源不够时谁先被抛弃?生死关头谁选择牺牲?背叛能换来活路时谁会动摇?极端环境把平时隐藏的人性放大到无处可藏
+- **离场感受建议方向** — 苍凉震撼 / 绝处逢生 / 人性拷问 / 苦涩希望。避免"轻松""幽默""甜蜜"等与末世气质不匹配的方向
+- **希望的重量与绝望成正比** — 末世中的希望不能廉价。越是漆黑的世界,一丝光亮越珍贵——废墟中长出的一株绿芽、绝望中有人伸出的手、濒死时听到的远处人声。希望必须以绝望为底色
+
+---
+
+## 二、叙事结构与生存节奏
+
+### 科幻末世叙事要点
+
+- **危机驱动叙事** — 末世叙事的引擎不是"想要什么"而是"必须活过今天"。每个段落应有明确的生存危机(资源耗尽、威胁逼近、庇护所失守、同伴受伤),危机推动行动,行动推动叙事
+- **资源即冲突** — 食物、水、药品、弹药、安全的栖息地——资源短缺是末世冲突的根源。叙事中应始终让观众感受到"不够用"的紧迫感
+- **信任考验递进** — 末世中的信任比资源更稀缺。信任线遵循"试探→合作→考验→背叛或坚守"的递进。每次信任考验的赌注应比前一次更高
+- **段落间用荒原做呼吸** — 危机段落之间用荒原行走/废墟探索等低强度段落做情绪缓冲。这些段落不是"空"的,而是用环境叙事补充世界观
+- **希望曲线** — 末世叙事的情绪不是持续下坠,而是"绝望→微光→更大绝望→更强微光"的锯齿状曲线。每次触底后给一丝希望(找到水源、遇到友善的人、发现避难所),再用更大的打击推翻希望
+- **结局不必圆满** — 末世叙事的最佳结局不是"一切恢复正常",而是"带着伤痕继续走"。幸存本身就是胜利,不需要救赎全世界
+
+---
+
+## 三、分场景氛围设计
+
+### 科幻末世叙事要点
+
+- **氛围用衰败描述** — 不说"荒凉",说"锈迹蔓延到第三层台阶,杂草从裂开的地砖中挤出来"。具象的衰败细节比抽象词更有冲击力
+- **典型末世段落与设计** —
+
+| 段落类型 | 情绪方向 | 叙事手法 | 音乐建议 |
+|---|---|---|---|
+| 废墟探索 | 警觉 + 好奇 | 缓慢推进、扫视空间、发现文明遗迹 | 低频嗡鸣+偶发金属碰撞音 |
+| 资源争夺 | 紧迫 + 对抗 | 搜索物资、与他人争夺、做取舍 | 节奏性底噪渐强 |
+| 暂歇/营地 | 疲惫 + 脆弱 | 围火、简单分食、短暂的人情温暖 | 极低音量吉他或口琴独奏 |
+| 危机/威胁 | 恐惧 + 求生 | 被追击、庇护所失守、同伴受伤 | 心跳鼓点+刺耳警报或全寂 |
+| 人性抉择 | 挣扎 + 沉重 | 是否抛弃伤员、是否打开最后的罐头 | 配乐消失,纯沉默 |
+| 希望微光 | 苦涩 + 温暖 | 废墟中发现绿芽、远处传来人声、日出 | 从沉默到温暖的单一器乐渐入 |
+
+- **空间衰败即时间叙事** — 环境的衰败程度直接叙述"末日过去了多久":
+ - **近期末日**:建筑基本完好但空无一人,物品散落如刚离开
+ - **中期末日**:锈蚀、杂草丛生、部分坍塌,自然开始收回领地
+ - **远期末日**:废墟、残垣、植被覆盖一切,文明痕迹只余轮廓
+- **环境即威胁** — 末世中环境本身就是敌人:有毒的空气、不稳定的建筑、被污染的水源、极端天气。分镜中应始终让观众感受到环境的敌意
+- **镜头意图写"生存感受"而非"场景描述"** — "用远景是为了让观众感受到废墟的无边无际中人的渺小与无助"优于"用远景拍废墟"
+
+---
+
+## 四、声音与音乐方向
+
+### 科幻末世叙事要点
+
+- **寂静是末世的底色** — 末世最令人不安的不是怪物的嘶吼,而是"应该有声音的地方没有声音":空无一人的城市、不再运转的工厂、沉默的游乐场。寂静本身就在叙述"消亡"
+- **工业废噪** — 金属摩擦、管道漏气、电线短路的滋滋声、远处不明的轰鸣——这些"文明的遗骸之声"构成末世的独特音景
+- **配乐极度克制** — 全片配乐覆盖率不超过 30%。末世的力量在于"真空感",过多配乐会削弱荒芜的冲击力
+- **警报/信号音的叙事功能** — 残存的电子设备偶尔发出的声音(无信号广播、循环播放的紧急广播、间歇性蜂鸣)是末世特有的"幽灵之声",极具氛围渲染力
+- **音乐情绪模型** —
+
+| 情绪阶段 | 音乐策略 | 覆盖率 |
+|---|---|---|
+| 废墟探索 | 低频嗡鸣+偶发金属音 | 低 |
+| 日常生存 | 无配乐,纯环境音 | 无 |
+| 危机逼近 | 心跳鼓点,渐强 | 中 |
+| 人性抉择 | 完全静默 | 无 |
+| 战斗/逃亡 | 节奏性电子底噪+打击 | 中高 |
+| 希望微光 | 单一温暖器乐缓入 | 低→中 |
+
+- **一声定氛围** — 末世中单一的突发声音比丰富的音景更有冲击力:远处一声枪响、一扇门被风吹开的吱呀声、瓦砾中传出的一声呼救。在完全的寂静中,一个声音就是一个事件
+
+---
+
+## 五、构图与景别叙事
+
+### 科幻末世叙事要点
+
+- **三大核心构图的叙事功能** —
+ - **废墟全景** — 大面积废墟中嵌入微小人影,传递"文明已逝、人如蝼蚁"的末世感。是科幻末世使用频率最高的构图
+ - **压迫空间** — 低矮天花板/狭窄通道/坍塌废墟中穿行,物理空间的压迫直接传递生存的窒息感
+ - **人与废墟对比** — 将人物与文明遗迹并置(人站在废弃摩天大楼前/行走在废弃高速路上),用尺度反差叙述文明的陨落
+- **中心构图的"最后一人"感** — 中心构图在末世中暗示"这片废墟中只剩你一个"的极端孤独,留给独行者在废墟中的标志性镜头
+- **倾斜构图的失序感** — 荷兰角在末世中传递"世界已经倾斜/失序"的心理暗示,适合灾难初期、精神崩溃、环境极端危险的段落
+- **前景废墟遮挡** — 用废墟残骸做前景遮挡主体,制造"透过废墟窥见生存者"的偷窥/搜索感
+- **景别即生存状态** —
+ - **大远景/远景** — 废墟全貌、荒原无际、文明消亡的宏观震撼
+ - **全景** — 生存者在空间中的位置关系、威胁方位
+ - **中景** — 生存行为(搜索、警戒、行走)、人物互动
+ - **特写** — 生存细节(龟裂的嘴唇、沾满灰的手、最后一罐食物)、情绪聚焦
+- **大特写的"遗物"功能** — 大特写在末世中常聚焦"文明遗物":一张褪色的全家福、一个没电的手机屏幕、一只布满灰的玩偶。这些细节自带千字叙事
+
+---
+
+## 六、镜头运动与节奏
+
+### 科幻末世叙事要点
+
+- **手持是末世的基础语言** — 50% 以上镜头用轻微手持,传递"不稳定/随时可能发生意外"的生存焦虑。晃动幅度分级:安全时微晃→危险时明显晃→战斗时剧烈
+- **缓移探索** — 废墟探索段落用极缓水平移动,模拟角色小心翼翼地推进。速度越慢,观众越紧张("下一秒会看到什么?")
+- **快推 = 危机爆发** — 威胁突然出现时猛然快推,模拟"被吓到/冲击"的生理反应
+- **缓拉 = 揭示荒芜** — 从人物/细节缓拉到远景,揭示周围废墟的无边无际。是末世叙事最经典的"叹息运镜"
+- **不用稳定器的段落** — 逃亡/战斗段落刻意不用稳定器,用真实的画面抖动传递混乱与恐惧
+- **运镜即生存状态** — 静止 = 安全/警戒;缓移 = 探索/搜索;手持跟拍 = 行进/不安;快推 = 危机/发现;缓拉 = 绝望/孤独
+- **360° 环视废墟** — 角色到达新地点时用缓慢 360° 环视,让观众和角色一起"扫描"周围环境,判断安全性。兼具定场和悬念功能
diff --git a/data/skills/story_skills/Scifi_post_apocalypse/driector_skills/director_storyboard_table_narrative.md b/data/skills/story_skills/Scifi_post_apocalypse/driector_skills/director_storyboard_table_narrative.md
new file mode 100644
index 0000000..260a90e
--- /dev/null
+++ b/data/skills/story_skills/Scifi_post_apocalypse/driector_skills/director_storyboard_table_narrative.md
@@ -0,0 +1,86 @@
+---
+name: director_storyboard_table_narrative
+description: 分镜表叙事手法 · 科幻末世 — 定义科幻末世在分镜表中的景别策略、运镜节奏、时长把控、生存行动设计、人性抉择叙事与转场手法。适用于任何视觉风格。
+metaData: director_skills
+---
+
+# 分镜表叙事手法 · 科幻末世 · 技法参考
+
+---
+
+## 一、分镜表定位
+
+分镜表是导演将剧本转化为镜头语言的核心工具。表单字段由导演根据项目需要自行设定(分镜号、景别、运镜、时长、人物、事件、台词、光影、情绪、转场等),以下仅提供科幻末世叙事类型下的技法参考。
+
+---
+
+## 二、景别选择
+
+- **远景是末世的灵魂景别** — 科幻末世中远景的使用频率远高于其他类型。废墟全貌、荒原无际、文明遗迹的宏观震撼是末世叙事的基底
+- **生存特写** — 末世中特写聚焦的不是"美"而是"真":开裂的嘴唇、指甲缝里的泥、绷带渗出的血、最后一口水在瓶底晃。特写是生存压力的放大镜
+- **科技遗迹景别** — 废弃的科技设备(生锈的机器人、灭了的屏幕、坍塌的天线塔)用中景交代全貌+特写聚焦细节,两镜完成"曾经先进如今废弃"的叙事
+- **大特写极其克制** — 大特写在末世中留给"最有叙事力的物件":一张照片、一封未发出的信、一个孩子的鞋。全段落最多 1 次
+- **定场镜头要有"震撼+信息"** — 末世定场必须同时传递震撼感和生存信息:废墟的规模(震撼)+ 是否有威胁/资源(信息)。1-2 个远景镜头搞定
+
+---
+
+## 三、运镜节奏
+
+- **手持为基础** — 50% 以上镜头轻微手持,传递生存的不稳定感
+- **安全时微晃** — 暂歇/营地段落手持晃动极微,几乎感觉不到但比三脚架多一丝"活人气息"
+- **危险时明显晃** — 探索未知空间、听到不明声响时,手持晃动增加,映射角色的警觉与不安
+- **缓移 = 探索/搜索** — 极缓水平移动模拟角色小心推进,速度越慢悬念越强
+- **快推 = 危机/发现** — 威胁出现或重要发现时猛然快推,冲击感拉满
+- **缓拉 = 揭示荒芜** — 从细节缓拉到远景,废墟的无际感逐渐展开。是末世叙事的标志性运镜
+
+---
+
+## 四、时长把控
+
+- **废墟凝视** — 远景废墟镜头给 5-6s 足够时长,让观众"消化"眼前的毁灭。废墟远景不是过渡而是叙事本身
+- **生存行动正常节奏** — 搜索物资、行走、警戒等动作镜头 2-4s,保持叙事推进的节奏
+- **危机镜头压缩** — 威胁出现/逃跑/战斗的镜头压到 1.5-2s,快节奏传递紧迫感
+- **人性抉择给足时长** — 道德困境(丢不丢下伤员、开不开枪、分不分食物)的决策镜头给 4-5s,让观众和角色一起"煎熬"
+- **黄金 6 秒规则** — 除远景废墟和一镜到底探索,单镜头不超过 6s
+- **沉默荒原的留白** — 行走荒原段落可以连续 3-4 个镜头无台词无配乐,纯环境音+脚步声。总沉默时长不超过 20s,但足以让观众感受到"世界的空"
+
+---
+
+## 五、生存行动设计
+
+- **搜索镜头的悬念** — 搜索物资段落的分镜逻辑:全景扫视空间→中景靠近目标→特写检查物品→结果(找到/空手)。每次搜索都带悬念"有没有东西?"
+- **战斗/逃亡的混乱感** — 末世战斗不是招式对拆,而是混乱、狼狈、不择手段。分镜用手持跟拍+快切+不完美构图(画面一半被遮挡)传递真实的求生混乱
+- **资源争夺的道德重量** — 和其他幸存者争夺资源时,分镜不要只拍"动作",更要拍"眼神":对方的恐惧、自己手的犹豫、物资从对方手中被夺走的特写。让观众感受到每一次争夺的道德成本
+- **长镜头探索** — 进入新的废墟空间可用一镜到底跟拍(角色推门→走入→环视→发现),时长可达 8-10s,连续输出新空间信息维持紧张感
+- **能一镜交代的不拆碎** — 一个跟拍长镜头(角色搜索房间→找到物品→放入背包)比拆成三个碎镜头更有沉浸感
+
+---
+
+## 六、人性抉择叙事
+
+- **道德困境用沉默** — 面对道德抉择(救不救、杀不杀、分不分)的段落去掉所有配乐,只留环境音+角色呼吸。让沉默的重量压在观众心上
+- **抉择镜头三拍** — ①面对困境的全景(处境)→ ②角色表情近景/特写(挣扎)→ ③行动结果(选择)。三拍完成,不拖沓
+- **信任与背叛** — 被背叛的瞬间用"揭示性"镜头语言:从信任者视角缓拉,揭示背叛者的行为→切信任者表情特写。先给事实,再给反应
+- **牺牲的仪式感** — 角色自我牺牲的镜头给足仪式感:最后一次对视(近景对切)→ 转身走向危险(全景背影)→ 留下者的反应(特写)。不要快速带过,牺牲值得被凝视
+- **善良的微光** — 在绝望中选择善良(分出最后的食物、冒险救陌生人)的镜头,用温暖的光影变化+微弱的温暖配乐渐入。但不过度煽情——克制才有力量
+
+---
+
+## 七、台词与留白
+
+- **惜字如金** — 末世中人没有闲聊的精力。台词应极简实用:"安全""走""还有多远"。偶尔一句带感情的话("谢谢你没走")因为稀缺而格外有力
+- **环境叙事替代对白** — 不要用台词解释"发生了什么"。让观众自己从废墟中读出答案:一堵墙上的抓痕、一条堵满废车的高速路、一面挂满寻人启事的墙
+- **回忆碎片** — 关于"末日前"的回忆台词应极短,如碎片闪过("那天还是晴天……"然后沉默)。配近景+失焦/闪回处理
+- **一句台词一个镜头** — 末世中每句台词都有重量,给独立镜头。尤其是表达信任/承诺/告别的台词
+- **独白用远景** — 角色罕有的内心独白配远景/荒原空镜,声音像是从"这个空旷世界的某处"飘来
+
+---
+
+## 八、转场设计
+
+- **同场景内用硬切** — 同一空间内镜头间硬切,保持叙事紧凑
+- **废墟蒙太奇** — 场景切换时用 2-3 个废墟空镜快速叠加(1-1.5s/个),交代地理转移的同时强化末世氛围
+- **信号干扰转场** — 画面出现电子信号干扰效果(雪花/条纹/扭曲)做转场,暗示科技文明的残喘
+- **时间衰变** — 用同一地点不同衰败程度的对比镜头表达时间流逝(完好→锈蚀→坍塌),适合回忆与当下的转场
+- **闪回文明** — 用 1-2s 的短闪回插入"末日前"的画面(繁华街道/笑着的人群),与当下废墟形成刺痛性对比。闪回画面质感应更明亮温暖,与当下的灰暗形成色温反差
+- **段落间用行走过渡** — 荒原行走段落是末世叙事天然的段落分隔器,给 2-3 个远景镜头交代从A到B的迁移
diff --git a/data/skills/story_skills/Scifi_post_apocalypse/images/title.png b/data/skills/story_skills/Scifi_post_apocalypse/images/title.png
new file mode 100644
index 0000000..1e93b34
Binary files /dev/null and b/data/skills/story_skills/Scifi_post_apocalypse/images/title.png differ
diff --git a/data/skills/story_skills/Sweet_romance_novel/README.md b/data/skills/story_skills/Sweet_romance_novel/README.md
new file mode 100644
index 0000000..7adf54c
--- /dev/null
+++ b/data/skills/story_skills/Sweet_romance_novel/README.md
@@ -0,0 +1,62 @@
+# 甜宠言情 · 导演叙事手法技能包
+
+## 简介
+
+本技能包为 **甜宠言情** 类型故事提供一套完整的导演叙事手法参考,涵盖从宏观叙事规划到微观分镜执行的全流程指导。适用于任何视觉风格。
+
+## 核心理念
+
+- **含蓄克制** — 情感表达靠留白与微妙反应,而非台词铺陈
+- **以小博大** — 用细节打动人:一个眼神、一次欲言又止、一个被风吹乱的衣角
+- **推拉节奏** — 靠近→退缩→再靠近→误会→分离→重逢,每一轮都更深入、更甜蜜
+- **沉默的力量** — 关键情感瞬间,沉默比配乐更有力
+
+## 文件结构
+
+```
+Sweet_romance_novel/
+├── README.md ← 本文件
+└── driector_skills/
+ ├── director_planning_narrative.md ← 叙事规划手法
+ └── director_storyboard_table_narrative.md ← 分镜表叙事手法
+```
+
+## 技能文件说明
+
+### 1. 叙事规划手法 (`director_planning_narrative.md`)
+
+导演在 **叙事规划阶段** 使用的技法参考,定义甜宠言情在主题立意、情感节奏、场景情绪设计与声音方向上的整体规划方法。
+
+| 章节 | 内容概要 |
+|---|---|
+| 主题立意与情感内核 | 含蓄内敛、甜的克制、以小博大、冷中带暖 |
+| 叙事结构与节奏规划 | 慢节奏基本功、情绪缓坡递进、推拉节奏模型 |
+| 分场景情绪设计 | 六大典型情绪段落设计、距离感叙事、空间隐喻 |
+| 声音与音乐方向 | 沉默优先、段落式配乐、音乐情绪递进模型 |
+| 构图与景别叙事 | 留白 / 框架 / 三分法构图、景别递进策略 |
+| 镜头运动与节奏 | 以静制动、缓推缓拉情绪映射、心跳运镜 |
+
+### 2. 分镜表叙事手法 (`director_storyboard_table_narrative.md`)
+
+导演在 **分镜表制作阶段** 使用的技法参考,定义甜宠言情在分镜表中的景别递进、运镜节奏、时长把控、镜头合并与转场逻辑。
+
+| 章节 | 内容概要 |
+|---|---|
+| 分镜表定位 | 分镜表作为镜头语言核心工具的定位说明 |
+| 景别选择 | 景别递进、远景价值、大特写限定、定场精简 |
+| 运镜节奏 | 默认静止、缓推缓拉情绪含义、心跳运镜 |
+| 时长把控 | 各类镜头时长参考、黄金 6 秒规则 |
+| 镜头合并策略 | 去 AI 感、叙事密度优先、导演思维自检 |
+| 一镜到底 | 长镜头适用条件、标注方式、时长与风险 |
+| 人物互动设计 | 单镜头动作限制、暗示性互动 |
+| 台词与留白 | 无台词长时长、一句一镜、旁白处理 |
+| 转场设计 | 硬切 / 空镜过渡 / 叠化淡入淡出 |
+
+## 使用方式
+
+本技能包作为 ToonFlow 导演 AI 的叙事手法参考,在故事创作流程中自动加载,指导:
+
+1. **叙事规划** — 确定情感内核、节奏曲线、场景情绪与音乐方向
+2. **分镜表生成** — 根据叙事规划输出具体的景别、运镜、时长与转场方案
+
+两个文件分工明确、逐层递进,从"为什么这样拍"到"具体怎么拍"形成完整闭环。
diff --git a/data/skills/story_skills/Sweet_romance_novel/driector_skills/director_planning_narrative.md b/data/skills/story_skills/Sweet_romance_novel/driector_skills/director_planning_narrative.md
new file mode 100644
index 0000000..2abe4a6
--- /dev/null
+++ b/data/skills/story_skills/Sweet_romance_novel/driector_skills/director_planning_narrative.md
@@ -0,0 +1,110 @@
+---
+name: director_planning_narrative
+description: 叙事手法技法 · 甜宠言情 — 定义甜宠言情类型在主题立意、情感节奏、场景情绪设计与声音方向上的叙事规划方法。适用于任何视觉风格。
+metaData: director_skills
+---
+
+# 叙事手法 · 甜宠言情 · 技法参考
+
+---
+
+## 一、主题立意与情感内核
+
+### 甜宠言情叙事要点
+
+- **含蓄内敛优先** — 情感表达不靠台词铺陈,靠留白与微妙反应。主题立意应偏向克制含蓄,避免直白煽情
+- **甜的克制** — "差一点就碰到"比"黏在一起"更有效。情感主线应设计"欲说还休"的推拉节奏,甜度来自观众自行脑补
+- **以小博大** — 不追求大场面的情绪冲击,用细节打动人:一个眼神、一次欲言又止、一个被风吹乱的衣角
+- **离场感受建议方向** — 心疼 / 意难平 / 怦然心动 / 治愈。避免"爽感""热血"等与甜宠气质不匹配的方向
+- **冷中带暖、疏中见密** — 甜宠不等于甜腻。整体基调可以偏冷、偏疏,但在关键节点释放暖意,反差才是最大的甜
+
+---
+
+## 二、叙事结构与节奏规划
+
+### 甜宠言情叙事要点
+
+- **慢是基本功** — 甜宠言情的情感信息密度高(眼神、微表情、肢体距离),需要给观众"感受"的时间。整体节奏偏慢,但不等于拖沓——每个段落都有情感增量
+- **情绪曲线宜缓坡** — 避免"平平平→突然爆发"。用渐进式情绪递进,每个段落比上一个段落情绪浓度高一级
+- **转折点用行动而非台词** — 关键转折点的处理方式应优先考虑行动手段(目光突变、身体距离变化、沉默、道具传递),而非依赖对白解释
+- **段落间用情绪缓冲过渡** — 段落衔接需要情绪缓冲,不要硬切。可用环境空镜、独处片段或日常碎片做呼吸空间
+- **高潮段落的"快"不是剪辑快** — 是情绪密度高。可以用更紧密的景别切换(全身→近景→特写→大特写)制造心跳加速感,而非缩短停留时间
+- **推拉节奏模型** — 甜宠言情的核心引擎是"推拉":靠近→退缩→再靠近→误会→分离→重逢。每一轮推拉都应比上一轮更深入、更痛苦、更甜蜜
+
+---
+
+## 三、分场景情绪设计
+
+### 甜宠言情叙事要点
+
+- **情绪目标用具象词** — 不说"开心",说"偷偷心动后的嘴角压不住"。具象的情绪描述能更好地指导景别选择和表演细节
+- **典型情绪段落与设计** —
+
+| 段落类型 | 情绪方向 | 叙事手法 | 音乐建议 |
+|---|---|---|---|
+| 初见/亮相 | 惊艳 + 好奇 | 以旁观者视角"发现"对方,先远后近 | 留白,只用环境音制造"屏息"感 |
+| 日常暗恋 | 暗涌 + 克制 | 偷看、欲言又止、刻意保持距离 | 轻柔器乐,低音量,衬底 |
+| 误会/分离 | 心痛 + 隐忍 | 不解释、转身、独处落泪 | 悲戚独奏,或纯环境音 |
+| 坦白/和解 | 释然 + 心动 | 沉默后开口、眼神先于语言 | 从安静到温暖器乐渐入 |
+| 升温/暧昧 | 紧张 + 甜蜜 | 物理距离缩短、肢体轻触、呼吸可闻 | 节奏感轻起,暗示心跳 |
+| 高甜/大婚 | 幸福 + 庄重 | 仪式感、郑重的对视、承诺 | 丰满器乐,庄重但温柔 |
+
+- **"距离感"是叙事核心工具** — 用人物间的物理距离映射关系进展:
+ - **初期**:远景/半身,物理距离大,言语客套
+ - **中期**:近景,距离缩短但有阻隔(物件/人群/犹豫)
+ - **后期**:特写/大特写,零距离,心理防线全部放下
+- **空间元素即情绪隐喻** — 善用场景元素传递情绪,减少对台词的依赖。例如:隔着帘子的模糊身影 = 隔阂;推开门看到满庭花开 = 释然;独坐雨中 = 孤寂
+- **镜头意图写"为什么"而非"怎么拍"** — "用特写是为了让观众看到她眼里的犹豫"优于"用特写拍她的脸"。意图清晰了,分镜自然能选对景别和角度
+
+---
+
+## 四、声音与音乐方向
+
+### 甜宠言情叙事要点
+
+- **沉默比配乐更有力** — 关键情感瞬间(对视、泪落、转身离去)优先考虑去掉配乐,只留环境音。甜宠的"甜"往往在沉默后观众自己脑补出来
+- **配乐情绪跟着段落走** — 不逐场配乐,按段落划分给每段定一个音乐情绪基调。同段落内场景切换靠环境音变化过渡,不频繁换曲
+- **避免满配** — 全片配乐覆盖率建议不超过 60%。留白段落的"无声"与配乐段落形成呼吸感
+- **环境音是氛围一半** — 每场戏标注 1-2 个核心环境音,帮助后续音效设计。环境音层次越丰富,场景越有沉浸感
+- **音乐情绪递进模型** —
+
+| 情绪阶段 | 音乐策略 | 覆盖率 |
+|---|---|---|
+| 平稳/日常 | 轻柔器乐衬底 | 低 |
+| 暗涌/酝酿 | 单一乐器独奏,极低音量 | 中低 |
+| 情感爆发 | 器乐渐满或突然静默 | 中高 |
+| 命运转折 | 强烈器乐或全场静默 | 极端 |
+| 回暖/治愈 | 温暖器乐缓入 | 中 |
+
+- **甜宠的"心跳感"** — 暧昧升温段落可用轻节奏打击(手鼓、木鱼、拨弦)暗示心跳加速,比直接用甜蜜旋律更高级
+
+---
+
+## 五、构图与景别叙事
+
+### 甜宠言情叙事要点
+
+- **三大核心构图的叙事功能** —
+ - **大量留白** — 孤独/意境/诗意空间,传递角色的心理孤立感或情感留白
+ - **框架式构图** — 纱帘/门框/窗棂/屏风后的人影,制造"偷偷看"的暗恋视角与隔阂感
+ - **三分法** — 对话/日常/双人互动,稳定均衡,适合日常甜蜜段落
+- **中心构图的限定使用** — 中心构图留给正式亮相、仪式感场景(如大婚、正式告白)。日常不用,否则丧失仪式感的冲击力
+- **空间纵深即叙事** — 前景遮挡(帘/花枝/烟雾)+ 中景主体 + 远景环境,层次越多隔阂感越强;层次越少越亲密
+- **竖构图与横构图** — 单人特写/亮相偏竖构图(强调孤独感与身形气质);双人/场景偏横构图(强调关系与共处空间)
+- **甜宠景别递进** — 同场戏内景别应随情感升温递进:半身→近景→特写→大特写。不要一上来就怼特写,留出情绪上升空间
+- **大特写要有理由** — 大特写(眼/唇/手)是情绪核弹,一集用 2-3 次足够。滥用会让观众疲劳
+- **远景不是过场** — 远景镜头本身就有叙事价值(孤独感、空间压迫、季节氛围)。给远景足够时长(4-6s),别急着切走
+
+---
+
+## 六、镜头运动与节奏
+
+### 甜宠言情叙事要点
+
+- **以静制动为主** — 60% 以上镜头应为静止机位,让画面细节和情绪自己说话
+- **缓推 = 靠近/心动** — "观众靠近角色"的心理暗示,适合心动、发现、窥视
+- **缓拉 = 抽离/孤独** — "观众退开"的心理暗示,适合离别、孤独、揭示全貌
+- **快切碎剪不兼容** — 快速剪辑与甜宠言情的气质不兼容。即使在高潮段落,也应通过景别递进而非快切来制造节奏感
+- **摇镜与跟镜** — 慢摇适合展示场景全貌或追随角色行走;跟镜适合仪式/行走场景。速度均应克制
+- **运镜即情绪** — 镜头运动不是技术选择,是情绪选择。静止 = 沉稳/压抑;缓推 = 靠近/心动;缓拉 = 抽离/孤独;缓摇 = 展示/庄重
+- **甜宠"心跳运镜"** — 暧昧升温段落可用微幅缓推配合景别递进(半身→近景→特写),模拟心跳加速时"注意力收窄"的生理感受
diff --git a/data/skills/story_skills/Sweet_romance_novel/driector_skills/director_storyboard_table_narrative.md b/data/skills/story_skills/Sweet_romance_novel/driector_skills/director_storyboard_table_narrative.md
new file mode 100644
index 0000000..5138aea
--- /dev/null
+++ b/data/skills/story_skills/Sweet_romance_novel/driector_skills/director_storyboard_table_narrative.md
@@ -0,0 +1,85 @@
+---
+name: director_storyboard_table_narrative
+description: 分镜表叙事手法 · 甜宠言情 — 定义甜宠言情在分镜表中的景别递进、运镜节奏、时长把控、镜头合并、互动设计、台词留白与转场逻辑。适用于任何视觉风格。
+metaData: director_skills
+---
+
+# 分镜表叙事手法 · 甜宠言情 · 技法参考
+
+---
+
+## 一、分镜表定位
+
+分镜表是导演将剧本转化为镜头语言的核心工具。表单字段由导演根据项目需要自行设定(分镜号、景别、运镜、时长、人物、事件、台词、光影、情绪、转场等),以下仅提供甜宠言情叙事类型下的技法参考。
+
+---
+
+## 二、景别选择
+
+- **甜宠戏的景别递进** — 同场戏内景别应随情感升温递进:半身→近景→特写→大特写。不要一上来就怼特写,留出情绪上升空间
+- **远景不是过场** — 远景镜头本身就有叙事价值(孤独感、空间压迫、季节氛围)。给远景足够时长(4-6s),别急着切走
+- **大特写要有理由** — 大特写(眼/唇/手)是情绪核弹,一集用 2-3 次足够。滥用会让观众疲劳
+- **定场镜头要精简** — 定场(建立镜头)最多 1-2 个镜头搞定,不要拆成 3 个以上碎片。典型做法:1 个大远景/远景定场 + 1 个全景引入主体,或直接 1 个带缓推的远景完成定场+引入。避免"先拍环境→再拍局部→再拍人物到达"的冗余三段式
+
+---
+
+## 三、运镜节奏
+
+- **默认静止** — 60% 以上镜头应为静止机位,让画面细节和情绪自己说话
+- **缓推 = 情绪递进** — "观众靠近角色"的心理暗示,适合心动、发现、窥视
+- **缓拉 = 情绪抽离** — "观众退开"的心理暗示,适合离别、孤独、揭示全貌
+- **运镜即情绪** — 镜头运动不是技术选择,是情绪选择。静止 = 沉稳/压抑;缓推 = 靠近/心动;缓拉 = 抽离/孤独;缓摇 = 展示/庄重
+- **甜宠"心跳运镜"** — 暧昧升温段落可用微幅缓推配合景别递进(半身→近景→特写),模拟心跳加速时"注意力收窄"的生理感受
+
+---
+
+## 四、时长把控
+
+- **特写/表情镜头** — 2-3s,聚焦微表情变化
+- **对话近景** — 3-4s,稳定出词
+- **全身亮相** — 3-5s,展示全貌
+- **远景/空镜** — 4-6s,氛围渲染
+- **单镜头不超过 6s** — 超过 6s 观众注意力衰减,需要运镜或动态元素维持
+- **黄金 6 秒规则** — 无台词镜头累计超过 6s 未出现新信息(台词/动作/主体变化),观众注意力断裂。定场+过渡类镜头尤其注意,宁可合并压缩也不要拖沓
+
+---
+
+## 五、镜头合并策略(去 AI 感)
+
+- **能一镜交代的不拆两镜** — 如果一个带运镜的镜头(如缓推从远景到全景)能同时完成定场+主体引入,就不要拆成"先空镜定场→再切主体入画"两个镜头
+- **连续同类信息合并** — 连续描述同一空间不同局部的镜头(院门→藤蔓→焦黑厢房)应合并为一个镜头,用画面描述涵盖多层空间信息
+- **叙事密度优先** — 每个镜头必须推进叙事或情绪,纯装饰性镜头(只为展示环境细节)应合并到有叙事功能的镜头中
+- **导演思维检验** — 写完分镜后自检:如果一个真人导演会把相邻 2-3 个镜头合成 1 个镜头拍,说明拆得过细,应合并
+
+---
+
+## 六、一镜到底(长镜头合并)
+
+- **适用条件** — 相邻镜头之间存在动作连续变化、场景轻度变化(同场景内位移)、或拍摄角度渐变时,优先考虑用一镜到底替代碎切,画面和内容更流畅
+- **典型场景** — 角色行走穿越空间、跟随动作从A点到B点、环绕角色展示环境、定场缓推到主体特写
+- **标注方式** — 在运镜字段写明完整路径(如"一镜到底:缓推远景→跟移至院内→落幅全景"),画面描述中交代起幅和落幅
+- **时长放宽** — 因信息量持续更新,可突破单镜 6s 上限,但不超过 12s
+- **抽卡风险** — 一镜到底对画面生成的连续性要求高,抽卡难度提升。仅在叙事流畅性收益明显大于碎切时使用,全片不宜超过 2-3 处
+
+---
+
+## 七、人物互动设计
+
+- **单镜头动作不超过两个** — "低头拈花 + 微笑"可以,"低头拈花 + 微笑 + 转身 + 抬手"会崩
+- **甜宠互动用暗示** — 手指差一点碰到、衣袂擦过、目光追随又移开。不要在分镜表里写"拥抱""接吻"等大幅度双人交互,拆成暗示性的局部镜头
+
+---
+
+## 八、台词与留白
+
+- **台词少的镜头给长时长** — 无台词的情绪镜头往往比有台词的更需要时间。沉默 3 秒比一句台词更有张力
+- **一句台词对应一个镜头** — 避免在单镜头内塞多句对白,切换说话者时应切镜头
+- **旁白镜头用远景或空镜** — 内心独白配近景容易显得嘴唇不动很假,配远景或场景空镜更自然
+
+---
+
+## 九、转场设计
+
+- **默认硬切** — 同场戏内镜头间用硬切,干净利落
+- **场景切换用空镜过渡** — 不同场景间插入 1 个场景空镜(2-3s)做情绪缓冲
+- **段落切换可用叠化/淡入淡出** — 大段落间的情绪跳跃用柔性转场,避免观众出戏
diff --git a/data/skills/story_skills/Sweet_romance_novel/images/title.png b/data/skills/story_skills/Sweet_romance_novel/images/title.png
new file mode 100644
index 0000000..2e3879a
Binary files /dev/null and b/data/skills/story_skills/Sweet_romance_novel/images/title.png differ
diff --git a/data/skills/story_skills/Urban_workplace_drama/README.md b/data/skills/story_skills/Urban_workplace_drama/README.md
new file mode 100644
index 0000000..e9de1f2
--- /dev/null
+++ b/data/skills/story_skills/Urban_workplace_drama/README.md
@@ -0,0 +1,61 @@
+# 都市职场 · 导演叙事手法技能包
+
+## 简介
+
+本技能包为 **都市职场** 类型故事提供一套完整的导演叙事手法参考,涵盖从宏观叙事规划到微观分镜执行的全流程指导。适用于任何视觉风格。
+
+## 核心理念
+
+- **真实即力量** — 职场叙事的杀手锏是"真实感",让观众在角色身上看到自己
+- **博弈暗涌** — 表面客气、暗地交锋,职场的冲突不在拳头上而在话语权与利益链上
+- **成长的代价** — 每一次升级都有代价(妥协/失去/自我怀疑),成长弧线不是直线上升而是螺旋
+- **小人物的光** — 最动人的不是大boss的权谋,而是普通人在体制中坚持自我的微光
+
+## 文件结构
+
+```
+Urban_workplace_drama/
+├── README.md ← 本文件
+└── driector_skills/
+ ├── director_planning_narrative.md ← 叙事规划手法
+ └── director_storyboard_table_narrative.md ← 分镜表叙事手法
+```
+
+## 技能文件说明
+
+### 1. 叙事规划手法 (`director_planning_narrative.md`)
+
+导演在 **叙事规划阶段** 使用的技法参考,定义都市职场在主题立意、博弈节奏、场景张力设计与声音方向上的整体规划方法。
+
+| 章节 | 内容概要 |
+|---|---|
+| 主题立意与职场内核 | 真实感基石、权力博弈、成长代价、小人物光芒 |
+| 叙事结构与博弈节奏 | 利益链驱动、攻守转换、信息不对称、阶段性胜负 |
+| 分场景张力设计 | 六大典型职场段落设计、空间权力隐喻、社交距离叙事 |
+| 声音与音乐方向 | 都市白噪音、沉默博弈、节奏性配乐、环境音叙事 |
+| 构图与景别叙事 | 权力构图/对峙构图/孤立构图、景别的权力表达 |
+| 镜头运动与节奏 | 纪实手持、冷静固定、压迫推移、呼吸感运镜 |
+
+### 2. 分镜表叙事手法 (`director_storyboard_table_narrative.md`)
+
+导演在 **分镜表制作阶段** 使用的技法参考,定义都市职场在分镜表中的景别策略、运镜节奏、时长把控、对话分镜与转场手法。
+
+| 章节 | 内容概要 |
+|---|---|
+| 分镜表定位 | 分镜表作为人物关系与权力张力核心工具的定位说明 |
+| 景别选择 | 权力景别、社交距离景别、孤立感景别 |
+| 运镜节奏 | 冷静固定为主、纪实手持、压迫缓推 |
+| 时长把控 | 对话节奏、沉默博弈时长、快节奏蒙太奇 |
+| 对话分镜设计 | 权力位对切、三角关系构图、潜台词镜头语言 |
+| 独处段落 | 下班后的真实、独自崩溃、深夜反思 |
+| 台词与潜台词 | 话中有话、沉默的攻防、职场黑话的镜头处理 |
+| 转场设计 | 时间蒙太奇/空间对比/硬切节奏/日常流转 |
+
+## 使用方式
+
+本技能包作为 ToonFlow 导演 AI 的叙事手法参考,在故事创作流程中自动加载,指导:
+
+1. **叙事规划** — 确定职场内核、博弈节奏曲线、场景权力关系与音效方向
+2. **分镜表生成** — 根据叙事规划输出具体的景别、运镜、时长与转场方案
+
+两个文件分工明确、逐层递进,从"为什么这样拍"到"具体怎么拍"形成完整闭环。
diff --git a/data/skills/story_skills/Urban_workplace_drama/driector_skills/director_planning_narrative.md b/data/skills/story_skills/Urban_workplace_drama/driector_skills/director_planning_narrative.md
new file mode 100644
index 0000000..df7e6b2
--- /dev/null
+++ b/data/skills/story_skills/Urban_workplace_drama/driector_skills/director_planning_narrative.md
@@ -0,0 +1,114 @@
+---
+name: director_planning_narrative
+description: 叙事手法技法 · 都市职场 — 定义都市职场类型在主题立意、博弈节奏、场景张力设计与声音方向上的叙事规划方法。适用于任何视觉风格。
+metaData: director_skills
+---
+
+# 叙事手法 · 都市职场 · 技法参考
+
+---
+
+## 一、主题立意与职场内核
+
+### 都市职场叙事要点
+
+- **真实感是基石** — 职场叙事的第一要务是"可信"。观众会用自身经验验证每一个细节,任何失真都会导致出戏。场景、对话、人物行为都要经得起职场人的审视
+- **权力博弈的暗流** — 职场冲突不是街头打架,而是会议室里的话语权争夺、邮件抄送的政治学、一个眼神交换中的联盟与背叛。表面和气,暗流汹涌
+- **成长的代价** — 职场成长不是打怪升级,每一步向上都伴随代价:妥协原则、失去朋友、承受孤独、自我怀疑。成长弧线不是直线上升,而是螺旋前进
+- **离场感受建议方向** — 共鸣 / 反思 / 被激励 / 五味杂陈。避免"刺激""解压""爽"等与职场现实感不匹配的方向
+- **小人物的光** — 最动人的职场叙事不是"大佬翻手为云",而是普通人在规则与压力之间,依然保持善良/专业/坚持的微小光芒
+
+---
+
+## 二、叙事结构与博弈节奏
+
+### 都市职场叙事要点
+
+- **利益链驱动叙事** — 职场故事的推动力不是"感觉"而是"利益"。每个角色的行为都应有清晰的利益动机(升职、保位、资源、面子、安全感),动机越具体叙事越真实
+- **信息不对称制造张力** — 职场中"谁知道什么"决定权力格局。叙事应巧妙管理角色间和角色与观众间的信息差:观众知道背叛但主角不知 = 焦虑;观众和主角一起被蒙在鼓里 = 共情
+- **攻守转换** — 职场博弈的节奏是攻守转换:主角占上风→对手反击→主角被动→寻找突破口→翻盘。每次转换都应有明确的"转折事件"(一封邮件、一次泄密、一个决策)
+- **段落间用日常做呼吸** — 高强度博弈段落之间插入日常生活片段(通勤、吃饭、独处),让观众和角色一起"喘息",同时展现职场人的真实生活质感
+- **阶段性胜负** — 不要等到最后才有结果。每个中间段落安排一次"小胜"或"小败",让观众感受到进展与风险并存
+- **结尾留余味** — 职场叙事的结尾不宜太"圆满"。即使主角赢了,也应留下代价的痕迹(失去了谁、妥协了什么、回不去的关系),真实感来自"五味杂陈"
+
+---
+
+## 三、分场景张力设计
+
+### 都市职场叙事要点
+
+- **张力用行为描述** — 不说"紧张",说"笔帽被无意识地按了三下"。具象的行为细节比情绪标签更有说服力
+- **典型职场段落与设计** —
+
+| 段落类型 | 情绪方向 | 叙事手法 | 音乐建议 |
+|---|---|---|---|
+| 日常工作 | 平淡 + 真实 | 通勤、开会、敲键盘的碎片化日常 | 极低音量城市白噪音或无配乐 |
+| 暗涌博弈 | 表面平静 + 暗流 | 会议上的眼神交锋、邮件往来的画外音 | 低频节奏性底噪,渐强 |
+| 冲突爆发 | 对抗 + 压迫 | 正面对峙、摊牌、被揭露 | 配乐骤停或冷峻弦乐 |
+| 独处/崩溃 | 疲惫 + 真实 | 下班后独自在车里坐着、深夜洗脸 | 纯环境音(水声/城市远景)|
+| 转机/突破 | 冷静 + 坚定 | 发现关键信息、做出决定、回击 | 简洁节奏性配乐渐起 |
+| 和解/代价 | 释然 + 复杂 | 握手言和但眼神保留距离、升职后的孤独 | 温暖但克制的器乐 |
+
+- **社交距离是权力表达** — 用人物间的物理距离映射权力关系:
+ - **上级**:可以随意靠近下属(入侵空间);下属保持距离(恭敬/恐惧)
+ - **平级博弈**:对坐/对立,保持一桌之隔(博弈距离)
+ - **亲密同盟**:并排坐/并肩走(同一方向 = 同一阵营)
+- **空间即权力** — 善用办公空间传递权力关系。例如:独立办公室 vs 开放工位 = 权力等级;会议室座位位置 = 话语权;电梯里的站位 = 社交等级
+- **镜头意图写"权力关系"而非"拍谁"** — "用仰拍是为了让观众感受到上级此刻对主角的压制力"优于"用仰拍拍上级说话"
+
+---
+
+## 四、声音与音乐方向
+
+### 都市职场叙事要点
+
+- **都市白噪音是氛围底色** — 键盘敲击声、咖啡机、电梯嗡鸣、远处电话铃——这些声音构成职场的"气味",让观众瞬间进入场景
+- **沉默是最高级的博弈** — 会议上突然的沉默、提问后的停顿、对视中的不说话——沉默在职场中是武器。关键博弈段落优先去掉配乐,只留环境音+沉默
+- **配乐极度克制** — 全片配乐覆盖率不超过 40%。职场叙事追求"真实感",过多配乐会让画面显得像"励志广告"而非真实故事
+- **环境音区分场景** — 每个场景标注 1-2 个核心环境音,帮助区分空间:办公室(键盘+空调嗡鸣)、会议室(安静+翻纸声)、通勤路上(城市喧嚣)、深夜家中(冰箱嗡鸣+远处车声)
+- **音乐情绪模型** —
+
+| 情绪阶段 | 音乐策略 | 覆盖率 |
+|---|---|---|
+| 日常工作 | 无配乐,纯环境音 | 无 |
+| 暗涌博弈 | 低频节奏底噪 | 低 |
+| 冲突对峙 | 冷峻弦乐或全寂 | 中 |
+| 独处真实 | 纯环境音或极低钢琴 | 极低 |
+| 转机突破 | 简洁节奏性配乐 | 中 |
+| 结局余味 | 克制温暖器乐 | 中低 |
+
+- **电话/消息提示音的叙事功能** — 手机震动声、消息通知音、电话铃声在职场叙事中可以是"命运转折"的触发器——一条消息改变整个局面。这类音效要给足辨识度
+
+---
+
+## 五、构图与景别叙事
+
+### 都市职场叙事要点
+
+- **三大核心构图的叙事功能** —
+ - **权力对角线** — 将权力高位者置于画面上方/前方,弱势者下方/后方,对角线布局暗示不对等的权力关系
+ - **框架困局** — 门框/窗框/屏幕边框/格子间隔板框住人物,传递"被困在体制中"的压迫感
+ - **对称对坐** — 博弈双方对坐于画面两侧,对称构图暗示势均力敌的对峙(或表面平等暗藏杀机)
+- **中心构图的仪式感** — 中心构图留给关键"宣判"时刻:升职公告、裁员通知、最终决策。日常不用
+- **玻璃/反光的隔阂** — 职场充满玻璃(会议室、办公室门、电梯)。通过玻璃拍人物制造"看得见但触不到"的隔阂感,暗示职场人际的表面透明实则有壁
+- **竖向空间的压迫** — 高楼俯瞰、电梯升降、楼梯上下——纵向空间的移动在职场中直接映射"社会阶层的上下"
+- **景别即社交距离** —
+ - **远景/全景** — 空间全貌、人物在庞大机构中的渺小感
+ - **中景** — 正式社交距离,会议/对话的标准景别
+ - **近景** — 打破社交距离,压迫/亲密/对峙
+ - **特写** — 微表情捕捉:嘴角的克制微笑、眼神的闪躲、手指的不安
+- **大特写的心理功能** — 一支笔被折断、手机屏幕上的消息、签名时微颤的笔尖。大特写在职场中放大的是"压力的细节"
+
+---
+
+## 六、镜头运动与节奏
+
+### 都市职场叙事要点
+
+- **冷静固定为主** — 65% 以上镜头应为三脚架固定机位,传递"冷静观察"的纪录片质感。职场叙事不需要华丽运镜,真实感来自克制
+- **纪实手持** — 跟随角色走动(走廊、通勤、急匆匆赶路)时用轻微手持,增加"身临其境"的真实感。晃动极度克制,几乎感觉不到
+- **缓推 = 压迫/审视** — 缓慢推向角色面部,模拟"被盯着看"的压迫感。适合被质问、被考验、做抉择的段落
+- **缓拉 = 孤立/全貌** — 从角色缓拉到全景,揭示角色在巨大办公空间中的渺小与孤独。适合独处、失败、深夜加班段落
+- **横移 = 扫视/并行** — 水平横移从一个角色移到另一个角色,建立空间关系。适合会议室扫视、开放办公区的群像
+- **运镜即叙事态度** — 静止 = 冷静观察;缓推 = 逼近/压迫;缓拉 = 抽离/反思;手持跟拍 = 真实参与;横移 = 扫描全局
+- **快切蒙太奇** — 职场叙事中快切仅用于"时间流逝蒙太奇"(日复一日的工作碎片、通宵赶项目的片段),不用于日常叙事
diff --git a/data/skills/story_skills/Urban_workplace_drama/driector_skills/director_storyboard_table_narrative.md b/data/skills/story_skills/Urban_workplace_drama/driector_skills/director_storyboard_table_narrative.md
new file mode 100644
index 0000000..1821e9b
--- /dev/null
+++ b/data/skills/story_skills/Urban_workplace_drama/driector_skills/director_storyboard_table_narrative.md
@@ -0,0 +1,86 @@
+---
+name: director_storyboard_table_narrative
+description: 分镜表叙事手法 · 都市职场 — 定义都市职场在分镜表中的景别策略、运镜节奏、时长把控、对话分镜设计、独处段落与转场手法。适用于任何视觉风格。
+metaData: director_skills
+---
+
+# 分镜表叙事手法 · 都市职场 · 技法参考
+
+---
+
+## 一、分镜表定位
+
+分镜表是导演将剧本转化为镜头语言的核心工具。表单字段由导演根据项目需要自行设定(分镜号、景别、运镜、时长、人物、事件、台词、光影、情绪、转场等),以下仅提供都市职场叙事类型下的技法参考。
+
+---
+
+## 二、景别选择
+
+- **景别即社交距离** — 职场分镜中景别的核心逻辑是"人与人的距离感"。正式场合用中景(社交距离),对峙/亲密时才进近景
+- **中景是主力景别** — 职场叙事中中景使用频率最高(40-50%),因为职场本身就是"保持适当距离"的社交场域
+- **近景打破距离** — 近景在职场中暗示"距离被打破":可能是信任(私下交心),也可能是压迫(上级逼近)。每次使用近景都意味着关系发生了变化
+- **特写捕捉潜台词** — 职场中人人带面具,真实情绪藏在微表情里。特写的核心功能是"揭穿面具":克制微笑下的紧张、点头认同时的不屑、签字时的犹豫
+- **定场镜头交代权力空间** — 职场定场不只是"这是一间办公室",要交代空间中的权力暗示:谁坐在主位、谁靠近门口、空间是开放的还是封闭的。1-2 个镜头搞定
+
+---
+
+## 三、运镜节奏
+
+- **固定机位为主** — 65% 以上镜头固定,传递冷静客观的观察视角
+- **纪实手持** — 跟随角色行走/通勤时用极微手持,增加真实感但晃动几乎不可察
+- **缓推 = 压迫/审视** — 缓推向角色面部,适合被质问、做决定、承受压力的段落
+- **缓拉 = 孤立/全局** — 从角色拉到全景,揭示个体在庞大体系中的渺小
+- **横移 = 扫视群像** — 水平横移扫过多个角色或工位,建立群体关系和空间全貌
+- **运镜即态度** — 固定 = 冷静旁观;缓推 = 逼迫/关注;缓拉 = 抽离/孤立;手持 = 真实参与
+
+---
+
+## 四、时长把控
+
+- **对话镜头标准节奏** — 有台词的镜头 2-4s,一句一切,保持对话的节奏感和信息清晰度
+- **沉默博弈拉长** — 对峙/博弈中的沉默镜头给 3-4s,让沉默本身成为武器。观众能感受到"没说出口的话"
+- **日常碎片快节奏** — 通勤、打字、喝咖啡等日常片段每个 1.5-2s 即可,快速碎片化传递日常节奏
+- **独处镜头给时长** — 独自在车里坐着、深夜洗脸、站在窗前——这些"真实瞬间"给 4-5s,让观众感受角色卸下面具后的疲惫
+- **黄金 6 秒规则** — 单镜头不超过 6s。职场叙事的力量在于信息密度而非时长,宁可多切一个角度也不要死撑一个镜头
+- **蒙太奇碎片** — 时间流逝段落的碎片镜头每个 1-1.5s,快速叠加传递"日复一日"的压迫感
+
+---
+
+## 五、对话分镜设计
+
+- **权力位对切** — 对话分镜中谁在画面上方/下方暗示权力关系。仰拍上级+俯拍下属是经典权力对切
+- **过肩镜头的权力暗示** — 过肩镜头中"谁的肩膀"出现在前景 = 谁拥有当前话语权。被压制的角色用对方肩膀做前景遮挡
+- **三角关系构图** — 三人博弈场景用三角构图,三人分处画面三个位置。随着立场转变,三角构图动态调整
+- **潜台词用表情镜头** — 话中有话的台词后,切一个 1-2s 的听者反应镜头(近景/特写),让观众从听者的微表情中读出潜台词
+- **会议室全景→近景递进** — 会议段落从全景(全局)开始,随着冲突升级逐渐递进到近景/特写(聚焦对抗双方),景别递进映射张力递进
+- **能一镜交代的不拆两镜** — 一个带横移的镜头如果能同时展示说话者和听者的反应,就不要拆成正反打两个镜头
+
+---
+
+## 六、独处段落
+
+- **下班后的真实** — 在电梯里靠墙闭眼、独自开车回家的沉默、回到家瘫在沙发上——这些段落是职场叙事最珍贵的"真实时刻",用中远景+固定机位,给足时长
+- **独自崩溃的克制** — 职场人的崩溃不是嚎啕大哭,是洗手间里的深呼吸、红眼眶、手扶额头。用近景捕捉克制的崩溃,比夸张表演更有共鸣
+- **深夜反思** — 深夜独处的反思/回顾用远景+环境空镜搭配,窗外的城市灯火暗示"这座城市里有无数个同样疲惫的人"
+- **通勤段落的叙事功能** — 通勤不是过渡而是叙事:地铁里的疲惫面孔、堵车时的无奈、走入公司前的深呼吸——这些"切换人格"的瞬间是职场人最真实的仪式
+
+---
+
+## 七、台词与潜台词
+
+- **话中有话是常态** — 职场台词很少是字面意思。"这个方案还可以再优化"= 否定;"我尊重你的决定"= 不同意但不想吵。分镜要用表情镜头帮助观众解读潜台词
+- **沉默的攻防** — 问完问题后的沉默、提议后等待回应的沉默——沉默在职场对话中是"逼迫对方先开口"的策略。给沉默 2-3s 的独立镜头
+- **一句台词一个镜头** — 关键博弈台词独占一个镜头,不与其他对白共享。给这句话配近景+听者反应
+- **旁白/内心独白极少** — 职场叙事靠"言行不一"的反差叙事(嘴上说"没事"脸上写着"有事"),不靠旁白解释内心。旁白仅在必须补充信息时使用
+- **群体对话的焦点管理** — 多人会议中不需要每个人说话都切镜头。用全景/中景展示全局,只在关键发言时切近景聚焦
+
+---
+
+## 八、转场设计
+
+- **同场景内用硬切** — 同一会议室/办公室内镜头间硬切,保持节奏干净
+- **日常流转用碎片蒙太奇** — 日复一日的职场日常用快速碎片蒙太奇(闹钟→通勤→打卡→开会→加班→回家),每个碎片 1-1.5s
+- **空间对比转场** — 从繁忙的办公室硬切到深夜安静的家,用空间反差传递"两个世界"的割裂感
+- **时间跳跃用字幕或空镜** — 时间跨度较大时用字幕标注("三个月后")或用季节/天气变化的空镜暗示
+- **段落间用通勤过渡** — 通勤段落是职场叙事天然的段落分隔器:上班通勤 = 新段落开始;下班通勤 = 段落收束
+- **手机屏幕转场** — 消息通知/邮件/新闻推送作为转场触发器,画面聚焦手机屏幕→新信息→引入新段落
diff --git a/data/skills/story_skills/Urban_workplace_drama/images/title.png b/data/skills/story_skills/Urban_workplace_drama/images/title.png
new file mode 100644
index 0000000..d78aa23
Binary files /dev/null and b/data/skills/story_skills/Urban_workplace_drama/images/title.png differ
diff --git a/data/skills/story_skills/Xianxia_fantasy/README.md b/data/skills/story_skills/Xianxia_fantasy/README.md
new file mode 100644
index 0000000..a282e04
--- /dev/null
+++ b/data/skills/story_skills/Xianxia_fantasy/README.md
@@ -0,0 +1,61 @@
+# 古风仙侠 · 导演叙事手法技能包
+
+## 简介
+
+本技能包为 **古风仙侠** 类型故事提供一套完整的导演叙事手法参考,涵盖从宏观叙事规划到微观分镜执行的全流程指导。适用于任何视觉风格。
+
+## 核心理念
+
+- **意境先行** — 仙侠叙事的灵魂是"意在画外",一山一水一云雾都是情感表达
+- **天地人合一** — 角色情绪与天象、自然融为一体:悲则风起、怒则雷鸣、悟则天光乍现
+- **宿命与抉择** — 叙事张力来自"命定"与"逆天"的拉扯,越不可违抗的宿命,抗争越动人
+- **留白即大道** — 最深的道、最浓的情,都不靠说——靠一壶酒、一柄剑、一场雪中的沉默
+
+## 文件结构
+
+```
+Xianxia_fantasy/
+├── README.md ← 本文件
+└── driector_skills/
+ ├── director_planning_narrative.md ← 叙事规划手法
+ └── director_storyboard_table_narrative.md ← 分镜表叙事手法
+```
+
+## 技能文件说明
+
+### 1. 叙事规划手法 (`director_planning_narrative.md`)
+
+导演在 **叙事规划阶段** 使用的技法参考,定义古风仙侠在主题立意、宿命节奏、场景意境设计与声音方向上的整体规划方法。
+
+| 章节 | 内容概要 |
+|---|---|
+| 主题立意与仙侠内核 | 天道与人心、宿命与抉择、孤独求道、大爱与小情 |
+| 叙事结构与宿命节奏 | 命运伏笔、三世因果、悟道递进、劫难弧线 |
+| 分场景意境设计 | 六大典型仙侠段落设计、天人感应叙事、空间修行隐喻 |
+| 声音与音乐方向 | 古乐留白、天籁与寂静、梵音/箫笛情绪递进 |
+| 构图与景别叙事 | 山水写意/云雾留白/纵深仙境、景别的境界表达 |
+| 镜头运动与节奏 | 御风运镜、天地缓摇、入定静止、意念快切 |
+
+### 2. 分镜表叙事手法 (`director_storyboard_table_narrative.md`)
+
+导演在 **分镜表制作阶段** 使用的技法参考,定义古风仙侠在分镜表中的景别策略、运镜节奏、时长把控、仙术战斗分镜与转场手法。
+
+| 章节 | 内容概要 |
+|---|---|
+| 分镜表定位 | 分镜表作为意境再现核心工具的定位说明 |
+| 景别选择 | 山水远景价值、写意中景、灵韵特写 |
+| 运镜节奏 | 御风跟拍、云游缓摇、入定静止、剑气快推 |
+| 时长把控 | 意境镜头的从容、战斗的收放、悟道的留白 |
+| 仙术战斗设计 | 写意优先、力量与意境并重、天象呼应 |
+| 人物关系叙事 | 师徒传承、道侣羁绊、宿敌对镜 |
+| 台词与留白 | 言简意深、诗化台词、大段沉默的修行感 |
+| 转场设计 | 云雾转场/水墨淡化/四季流转/梦境切入 |
+
+## 使用方式
+
+本技能包作为 ToonFlow 导演 AI 的叙事手法参考,在故事创作流程中自动加载,指导:
+
+1. **叙事规划** — 确定仙侠内核、宿命节奏曲线、场景意境与音乐方向
+2. **分镜表生成** — 根据叙事规划输出具体的景别、运镜、时长与转场方案
+
+两个文件分工明确、逐层递进,从"为什么这样拍"到"具体怎么拍"形成完整闭环。
diff --git a/data/skills/story_skills/Xianxia_fantasy/driector_skills/director_planning_narrative.md b/data/skills/story_skills/Xianxia_fantasy/driector_skills/director_planning_narrative.md
new file mode 100644
index 0000000..855dafc
--- /dev/null
+++ b/data/skills/story_skills/Xianxia_fantasy/driector_skills/director_planning_narrative.md
@@ -0,0 +1,114 @@
+---
+name: director_planning_narrative
+description: 叙事手法技法 · 古风仙侠 — 定义古风仙侠类型在主题立意、宿命节奏、场景意境设计与声音方向上的叙事规划方法。适用于任何视觉风格。
+metaData: director_skills
+---
+
+# 叙事手法 · 古风仙侠 · 技法参考
+
+---
+
+## 一、主题立意与仙侠内核
+
+### 古风仙侠叙事要点
+
+- **天道与人心的拉扯** — 仙侠叙事的核心矛盾是"天道无情"与"人心有情"的对抗。修仙要斩断七情六欲,但打动观众的恰恰是角色无法割舍的情——这种矛盾本身就是最好的叙事张力
+- **宿命不是结局是起点** — "命中注定"不是叙事终点,而是叙事起点。知道宿命后选择接受还是反抗,才是角色弧线的关键。越不可违抗的天命,逆天而行越震撼
+- **孤独求道** — 仙侠主角的底色是孤独:独上昆仑、独守千年、独对天劫。孤独不是悲剧,是修行本身。叙事要让观众"理解"这种孤独的重量
+- **离场感受建议方向** — 苍凉壮美 / 超然物外 / 意难平 / 悟道释然。避免"甜蜜""轻松""搞笑"等与仙侠气质不匹配的方向
+- **大爱与小情** — 仙侠的格局是"大爱"(苍生/天道/正义),但打动人的是"小情"(一个人的守候/一句未说出的话/一件留下的信物)。大爱立意,小情动人
+
+---
+
+## 二、叙事结构与宿命节奏
+
+### 古风仙侠叙事要点
+
+- **命运伏笔贯穿全篇** — 仙侠叙事适合在开篇就植入命运的种子(预言、天象、前世记忆碎片),让观众从头到尾都在"等待命运兑现"的张力中
+- **三世因果结构** — 仙侠天然适合"前世—今生—来世"的多层叙事。前世的遗憾在今生重演,今生的抉择决定来世。时间跨度越大,情感越厚重
+- **悟道递进** — 主角的成长不是"打怪升级",而是"悟道递进":从执念到放下、从有招到无招、从求仙到问心。每次领悟都应伴随一个叙事转折点
+- **段落间用天象/季节做呼吸** — 仙侠段落衔接用天地变化做自然过渡:春去秋来、日升月落、云聚云散。比人工转场更有意境
+- **劫难弧线** — 仙侠的节奏引擎是"劫":心劫(情感考验)→ 身劫(肉体考验)→ 天劫(终极考验)。每次渡劫都比前一次代价更大、领悟更深
+- **高潮段落的"静"比"动"更高级** — 仙侠终极对决的最高形态不是大开大合的法术碰撞,而是万法归一后的静默对峙——一剑、一眼、一念之间,胜负已分
+
+---
+
+## 三、分场景意境设计
+
+### 古风仙侠叙事要点
+
+- **意境用诗化描述** — 不说"美丽",说"月照寒潭,松影横斜"。诗化的意境描述能更好地指导场景美术和镜头取景
+- **典型仙侠段落与设计** —
+
+| 段落类型 | 情绪方向 | 叙事手法 | 音乐建议 |
+|---|---|---|---|
+| 入世/出场 | 超然 + 惊艳 | 云雾中现身、御剑飞行、远景渐入 | 空灵箫笛,大量留白 |
+| 修行/悟道 | 静谧 + 专注 | 独坐山巅、瀑布下练功、星空冥想 | 古琴独奏或纯自然音 |
+| 情劫/羁绊 | 隐忍 + 深情 | 欲触未触、转身离去、信物交接 | 箫/埙独奏,悲而不伤 |
+| 误解/分离 | 苍凉 + 决绝 | 背对背、各自踏入不同的路 | 低沉弦乐或风声独白 |
+| 渡劫/对决 | 壮烈 + 悲悯 | 天象巨变、一人独对天地 | 从寂静到磅礴鼓乐 |
+| 飞升/涅槃 | 释然 + 超脱 | 化光上升、万物复苏、微笑消散 | 梵音/天籁渐起渐远 |
+
+- **天人感应是叙事核心** — 角色情绪与天地自然同频共振:
+ - **平静**:风平浪静、日光正好、花自开落
+ - **悲伤**:天降细雨、落叶纷飞、月被云遮
+ - **愤怒**:狂风骤起、雷电交加、大地震颤
+ - **觉悟**:云开日出、天光倾泻、万物生辉
+- **空间即修行境界** — 场景的空间层次映射角色的修行阶段:山脚(入门)→ 山腰(历练)→ 山巅(悟道)→ 天外天(超脱)。空间越高越开阔,意境越通透
+- **镜头意图写"境界"而非"画面"** — "用远景是为了让观众感受他独对天地的渺小与从容"优于"用远景拍山巅的人"。意境表达清晰了,分镜自然准确
+
+---
+
+## 四、声音与音乐方向
+
+### 古风仙侠叙事要点
+
+- **天籁即配乐** — 仙侠最好的"配乐"是自然之声:松涛、瀑布、风铃、鸟鸣、远钟。自然音的层次越丰富,仙气越足
+- **古乐留白** — 古琴/箫/笛/埙不满配,一句一停,让音符间的空白传递意境。配乐的空白和画面的留白一样重要
+- **避免现代感音效** — 电子合成器、重低音贝斯等现代音效与仙侠气质不兼容。即使是战斗段落,也应以鼓/锣/钟等传统打击乐为节奏骨架
+- **梵音/吟唱的仪式感** — 飞升、渡劫、大悟等重要段落可用梵音或无词吟唱,制造"超越凡尘"的仪式感。全片不超过 2-3 处
+- **音乐情绪模型** —
+
+| 情绪阶段 | 音乐策略 | 覆盖率 |
+|---|---|---|
+| 日常/修行 | 古琴或箫独奏,极低音量 | 低 |
+| 情劫/羁绊 | 箫/埙悲奏,节制隐忍 | 中低 |
+| 酝酿/蓄势 | 鼓点从远到近,渐强 | 中 |
+| 渡劫/对决 | 磅礴鼓乐或突然全寂 | 极端 |
+| 飞升/超脱 | 梵音/天籁渐远 | 中高→渐弱 |
+
+- **"一声定乾坤"** — 仙侠中最有力的音效往往是一个单独的声音:一声剑鸣、一声钟响、一声远雷。在关键瞬间用一个清晰的单一音效,比丰满的配乐更震撼
+
+---
+
+## 五、构图与景别叙事
+
+### 古风仙侠叙事要点
+
+- **三大核心构图的叙事功能** —
+ - **山水写意构图** — 大量天地留白中嵌入微小人影,传递"天地辽阔、人如蜉蝣"的仙侠哲学
+ - **云雾遮蔽构图** — 云雾/烟霞半遮半掩主体,制造仙境的朦胧感与神秘感
+ - **纵深层叠构图** — 前景枝叶/中景人物/远景山峦层层叠叠,空间纵深感越强意境越深
+- **中心构图的神圣感** — 中心构图在仙侠中暗示"天命所归/独立天地间",留给飞升、渡劫、终极领悟等仪式性场景
+- **竖构图的"通天"感** — 瀑布、悬崖、飞升等纵向场景用竖构图,强调天地贯通的气势
+- **空镜不是过渡** — 仙侠的山水空镜本身就是叙事:一片落花 = 时光流逝;一轮明月 = 思念;一场大雪 = 心如止水。给空镜 4-6s 足够时长
+- **景别即境界** —
+ - **大远景/远景** — 天地格局、孤独修行、宿命感
+ - **全景** — 场景全貌、仪式场面、对峙站位
+ - **中景/近景** — 人物互动、对话、表情变化
+ - **特写** — 眼中星辰、指尖灵力、信物纹理,灵韵聚焦
+- **大特写在仙侠中的功能** — 不是放大情绪而是"见微知著":一滴泪映出月光、一片花瓣落在掌心、剑刃上映出对手的脸。大特写全片 2-3 次
+
+---
+
+## 六、镜头运动与节奏
+
+### 古风仙侠叙事要点
+
+- **以静为宗** — 70% 以上镜头应为静止或极缓运动,仙侠的气质是"不动如山"。画面越静,意境越深
+- **御风跟拍** — 御剑飞行、腾云驾雾等段落用流畅跟拍,速度感中保持画面稳定,营造"乘风"而非"被风追"的从容
+- **缓摇 = 天地展卷** — 缓慢水平摇移展示山水全貌,如同卷轴缓缓展开。速度控制在"观众来得及品味每一寸风景"
+- **缓推 = 入境/走近** — 从远景缓推至人物,模拟"走进这个世界"的入境感。适合开篇定场和悟道段落
+- **快切在仙侠中极少使用** — 仙侠战斗不靠快切堆节奏,靠一招一式的"意"。即使是法术碰撞,也应是大开大合的完整镜头而非碎片剪辑
+- **运镜即天道** — 静止 = 定/悟;缓推 = 入世/靠近;缓拉 = 出世/超脱;缓摇 = 天地展卷;升降 = 升华/坠落
+- **升降运镜的仙侠特权** — 仙侠是少数能大量使用升降运镜的类型:从地面升至云端(飞升)、从天空降至人间(入世)。升降方向本身就是叙事
diff --git a/data/skills/story_skills/Xianxia_fantasy/driector_skills/director_storyboard_table_narrative.md b/data/skills/story_skills/Xianxia_fantasy/driector_skills/director_storyboard_table_narrative.md
new file mode 100644
index 0000000..1390d9c
--- /dev/null
+++ b/data/skills/story_skills/Xianxia_fantasy/driector_skills/director_storyboard_table_narrative.md
@@ -0,0 +1,85 @@
+---
+name: director_storyboard_table_narrative
+description: 分镜表叙事手法 · 古风仙侠 — 定义古风仙侠在分镜表中的景别策略、运镜节奏、时长把控、仙术战斗设计、人物关系叙事与转场手法。适用于任何视觉风格。
+metaData: director_skills
+---
+
+# 分镜表叙事手法 · 古风仙侠 · 技法参考
+
+---
+
+## 一、分镜表定位
+
+分镜表是导演将剧本转化为镜头语言的核心工具。表单字段由导演根据项目需要自行设定(分镜号、景别、运镜、时长、人物、事件、台词、光影、情绪、转场等),以下仅提供古风仙侠叙事类型下的技法参考。
+
+---
+
+## 二、景别选择
+
+- **远景是仙侠的基础景别** — 仙侠叙事中远景的使用频率远高于其他类型。天地辽阔中的渺小人影本身就在传递仙侠哲学,不要吝啬远景
+- **写意中景** — 仙侠中景不追求信息密度,而是追求"画中人"的意境。人物与环境融为一体,山水花木都是画面的一部分
+- **灵韵特写** — 特写在仙侠中聚焦的不是纯粹的表情,而是"灵韵":眼中星辰流转、指尖灵力明灭、剑身光华流淌。特写要有超凡脱俗的质感
+- **大特写极其克制** — 大特写在仙侠中每段落最多 1 次,留给"见微知著"的瞬间:一滴泪、一片花瓣、一缕断发
+- **定场镜头要有诗意** — 仙侠定场不只交代地点,要传递意境:云海中的仙山、月下的孤亭、雪覆的古刹。1-2 个远景镜头完成定场+意境建立
+
+---
+
+## 三、运镜节奏
+
+- **以静为主** — 70% 以上镜头静止或极缓运动,让画面本身的美感和意境说话
+- **御风跟拍** — 飞行/腾跃段落用流畅跟拍,保持画面稳定,营造从容御风感而非狼狈追逐感
+- **缓摇 = 展卷** — 水平缓摇展示山水全貌,速度极慢,如画卷展开。适合定场和意境段落
+- **缓推 = 入境** — 从远景缓推至人物,观众"走入"画面世界。适合段落开篇和悟道段落
+- **缓拉 = 出世** — 从人物缓拉至远景,角色融入天地。适合离别、超脱、飞升段落
+- **升降 = 升华/坠落** — 镜头上升 = 飞升/领悟/超脱;镜头下降 = 入世/坠落/重返凡尘。仙侠中升降运镜是核心叙事工具
+
+---
+
+## 四、时长把控
+
+- **意境镜头从容** — 山水空镜、修行静态镜头给 5-6s 足够时长,让观众"品味"意境,不急着切走
+- **人物互动正常节奏** — 对话、交互等叙事镜头保持 3-4s 正常节奏
+- **战斗一招一镜** — 仙侠战斗讲究一招一式的仪式感,每一招一个完整镜头(3-5s),不碎切
+- **悟道镜头可超长** — 角色入定/领悟的镜头可突破 6s 上限到 8s,因为"悟"本身就是需要时间的过程。配合缓推或静止机位
+- **黄金 6 秒规则灵活适用** — 仙侠叙事中纯意境镜头可放宽至 6-8s,但前提是画面有自然动态(风、云、水、光影变化)维持视觉兴趣
+- **"一念之间"的时间操控** — 关键抉择瞬间可用升格拉伸到 4-6s(实际动作可能只有 1s),将角色的一念之间放大成观众可感知的思考过程
+
+---
+
+## 五、仙术战斗设计
+
+- **写意优先于写实** — 仙侠战斗的镜头不追求"看清每一拳",而是传递招式的"意":一剑划过,花瓣纷飞;一掌推出,山河震动。画面描述侧重意境而非动作细节
+- **天象呼应战斗** — 战斗升级时天象同步变化:出招→风起;对招→云涌;终极一击→天地变色。在分镜描述中同步标注天象变化
+- **一招定胜负** — 仙侠的终极对决最好收束在"一招":双方蓄力→对视→同时出手→一瞬间画面静止→结果揭晓。简洁即是力量
+- **战斗间的对视** — 高手过招之间穿插 1-2 个对视镜头(近景对切),用眼神传递"你我都知道下一招见生死"的默契
+- **能一镜拍完的法术不拆碎** — 一个完整的法术施展(起手→蓄力→释放)优先用一个带运镜的长镜头完成,不要拆成碎片
+
+---
+
+## 六、人物关系叙事
+
+- **师徒传承** — 师父传功/赠剑/临终嘱托是仙侠最经典的传承镜头。用近景对切完成情感交流,信物交接用特写聚焦
+- **道侣羁绊** — 仙侠中的感情表达极度克制:并肩看月不说话、擦肩而过留余香、千年后再见只一句"你来了"。分镜用距离感和留白传递深情
+- **宿敌对镜** — 宿敌之间用对称构图对峙,景别从全景递进到近景对切,最后特写对视。对称中的对抗是仙侠对决的仪式感
+- **独行者叙事** — 仙侠主角常有大量独行段落。独行用远景+背影构图,不给正脸,让孤独感通过空间关系自行传递
+
+---
+
+## 七、台词与留白
+
+- **言简意深** — 仙侠台词应精炼如诗,一句顶十句。"此去经年,山高水远"比"我要走了你保重身体记得吃饭"更有力量
+- **大段沉默是修行** — 修行/悟道/独行段落可以完全无台词,持续 3-5 个镜头纯沉默。沉默本身就是仙侠的叙事语言
+- **诗化台词配空镜** — 内心独白或旁白如果是诗化语言,配远景或山水空镜比配人物近景更合适
+- **一句一镜** — 重要台词独占一个镜头,不与其他台词共享。给这句话足够的空间和留白
+- **临终遗言极短** — 仙侠中角色临终的最后一句话应极短(3-5个字),配合特写+渐弱。越短越有千钧之重
+
+---
+
+## 八、转场设计
+
+- **云雾转场** — 最经典的仙侠转场:画面被云雾覆盖→散去后是新场景。自然、写意、零出戏
+- **四季流转** — 用快速的季节变化(花开→叶落→雪覆→春回)表达时间流逝,适合修行段落间的大跨度转场
+- **水面倒影** — 从水面倒影切入,涟漪散去后进入新场景或回忆。适合过渡到前世/回忆段落
+- **同场景内用硬切** — 同一场景内镜头间保持硬切,干净利落
+- **段落间用空镜呼吸** — 大段落之间插入 1-2 个山水/天象空镜(4-6s)做情绪过渡
+- **梦境/前世用叠化** — 进入梦境或前世回忆用慢叠化,画面重叠的瞬间暗示两个时空的交织
diff --git a/data/skills/story_skills/Xianxia_fantasy/images/title.png b/data/skills/story_skills/Xianxia_fantasy/images/title.png
new file mode 100644
index 0000000..3ec61af
Binary files /dev/null and b/data/skills/story_skills/Xianxia_fantasy/images/title.png differ
diff --git a/data/update.json b/data/update.json
new file mode 100644
index 0000000..a332301
--- /dev/null
+++ b/data/update.json
@@ -0,0 +1,27 @@
+{
+ "version": "1.0.8",
+ "time": 1775118545494,
+ "data": {
+ "toonflow": [
+ {
+ "type": "zip",
+ "url": "https://toonflow.oss-cn-beijing.aliyuncs.com/latest/latest.zip"
+ },
+ {
+ "type": "windows",
+ "url": "https://toonflow.oss-cn-beijing.aliyuncs.com/latest/latest.exe"
+ },
+ {
+ "type": "linux",
+ "url": "https://toonflow.oss-cn-beijing.aliyuncs.com/latest/latest.AppImage"
+ },
+ {
+ "type": "macos",
+ "url": "https://toonflow.oss-cn-beijing.aliyuncs.com/latest/latest.dmg"
+ }
+ ],
+ "github": [],
+ "atomgit": [],
+ "gitee": []
+ }
+}
\ No newline at end of file
diff --git a/data/web/css.worker-BvV5MPou.js b/data/web/css.worker-BvV5MPou.js
new file mode 100644
index 0000000..587b640
--- /dev/null
+++ b/data/web/css.worker-BvV5MPou.js
@@ -0,0 +1,93 @@
+var Mf=Object.defineProperty;var zf=(xt,Qe,Ke)=>Qe in xt?Mf(xt,Qe,{enumerable:!0,configurable:!0,writable:!0,value:Ke}):xt[Qe]=Ke;var yt=(xt,Qe,Ke)=>zf(xt,typeof Qe!="symbol"?Qe+"":Qe,Ke);(function(){"use strict";var dt,oh,lh,ch,hh,ke,ne;class xt{constructor(){this.listeners=[],this.unexpectedErrorHandler=function(e){setTimeout(()=>{throw e.stack?Mt.isErrorNoTelemetry(e)?new Mt(e.message+`
+
+`+e.stack):new Error(e.message+`
+
+`+e.stack):e},0)}}emit(e){this.listeners.forEach(n=>{n(e)})}onUnexpectedError(e){this.unexpectedErrorHandler(e),this.emit(e)}onUnexpectedExternalError(e){this.unexpectedErrorHandler(e)}}const Qe=new xt;function Ke(t){dh(t)||Qe.onUnexpectedError(t)}function Vr(t){if(t instanceof Error){const{name:e,message:n,cause:r}=t,i=t.stacktrace||t.stack;return{$isError:!0,name:e,message:n,stack:i,noTelemetry:Mt.isErrorNoTelemetry(t),cause:r?Vr(r):void 0,code:t.code}}return t}const $r="Canceled";function dh(t){return t instanceof Os?!0:t instanceof Error&&t.name===$r&&t.message===$r}class Os extends Error{constructor(){super($r),this.name=this.message}}class Mt extends Error{constructor(e){super(e),this.name="CodeExpectedError"}static fromError(e){if(e instanceof Mt)return e;const n=new Mt;return n.message=e.message,n.stack=e.stack,n}static isErrorNoTelemetry(e){return e.name==="CodeExpectedError"}}class we extends Error{constructor(e){super(e||"An unexpected bug occurred."),Object.setPrototypeOf(this,we.prototype)}}function uh(t,e="Unreachable"){throw new Error(e)}function ph(t,e="unexpected state"){if(!t)throw typeof e=="string"?new we(`Assertion Failed: ${e}`):e}function jn(t){if(!t()){debugger;t(),Ke(new we("Assertion Failed"))}}function Ws(t,e){let n=0;for(;n=0;N--)yield R[N]}t.reverse=o;function l(R){return!R||R[Symbol.iterator]().next().done===!0}t.isEmpty=l;function c(R){return R[Symbol.iterator]().next().value}t.first=c;function d(R,N){let z=0;for(const $ of R)if(N($,z++))return!0;return!1}t.some=d;function u(R,N){let z=0;for(const $ of R)if(!N($,z++))return!1;return!0}t.every=u;function m(R,N){for(const z of R)if(N(z))return z}t.find=m;function*f(R,N){for(const z of R)N(z)&&(yield z)}t.filter=f;function*g(R,N){let z=0;for(const $ of R)yield N($,z++)}t.map=g;function*b(R,N){let z=0;for(const $ of R)yield*N($,z++)}t.flatMap=b;function*F(...R){for(const N of R)fh(N)?yield*N:yield N}t.concat=F;function E(R,N,z){let $=z;for(const L of R)$=N($,L);return $}t.reduce=E;function I(R){let N=0;for(const z of R)N++;return N}t.length=I;function*_(R,N,z=R.length){for(N<-R.length&&(N=0),N<0&&(N+=R.length),z<0?z+=R.length:z>R.length&&(z=R.length);N1)throw new AggregateError(e,"Encountered errors while disposing of store");return Array.isArray(t)?[]:t}else if(t)return t.dispose(),t}function gh(...t){return Gn(()=>Vs(t))}class bh{constructor(e){this._isDisposed=!1,this._fn=e}dispose(){if(!this._isDisposed){if(!this._fn)throw new Error("Unbound disposable context: Need to use an arrow function to preserve the value of this");this._isDisposed=!0,this._fn()}}}function Gn(t){return new bh(t)}const Mr=class Mr{constructor(){this._toDispose=new Set,this._isDisposed=!1}dispose(){this._isDisposed||(this._isDisposed=!0,this.clear())}get isDisposed(){return this._isDisposed}clear(){if(this._toDispose.size!==0)try{Vs(this._toDispose)}finally{this._toDispose.clear()}}add(e){if(!e||e===St.None)return e;if(e===this)throw new Error("Cannot register a disposable on itself!");return this._isDisposed?Mr.DISABLE_DISPOSED_WARNING||console.warn(new Error("Trying to add a disposable to a DisposableStore that has already been disposed of. The added object will be leaked!").stack):this._toDispose.add(e),e}delete(e){if(e){if(e===this)throw new Error("Cannot dispose a disposable on itself!");this._toDispose.delete(e),e.dispose()}}};Mr.DISABLE_DISPOSED_WARNING=!1;let pn=Mr;const Ms=class Ms{constructor(){this._store=new pn,this._store}dispose(){this._store.dispose()}_register(e){if(e===this)throw new Error("Cannot register a disposable on itself!");return this._store.add(e)}};Ms.None=Object.freeze({dispose(){}});let St=Ms,le=(dt=class{constructor(e){this.element=e,this.next=dt.Undefined,this.prev=dt.Undefined}},dt.Undefined=new dt(void 0),dt);class wh{constructor(){this._first=le.Undefined,this._last=le.Undefined,this._size=0}get size(){return this._size}isEmpty(){return this._first===le.Undefined}clear(){let e=this._first;for(;e!==le.Undefined;){const n=e.next;e.prev=le.Undefined,e.next=le.Undefined,e=n}this._first=le.Undefined,this._last=le.Undefined,this._size=0}unshift(e){return this._insert(e,!1)}push(e){return this._insert(e,!0)}_insert(e,n){const r=new le(e);if(this._first===le.Undefined)this._first=r,this._last=r;else if(n){const s=this._last;this._last=r,r.prev=s,s.next=r}else{const s=this._first;this._first=r,r.next=s,s.prev=r}this._size+=1;let i=!1;return()=>{i||(i=!0,this._remove(r))}}shift(){if(this._first!==le.Undefined){const e=this._first.element;return this._remove(this._first),e}}pop(){if(this._last!==le.Undefined){const e=this._last.element;return this._remove(this._last),e}}_remove(e){if(e.prev!==le.Undefined&&e.next!==le.Undefined){const n=e.prev;n.next=e.next,e.next.prev=n}else e.prev===le.Undefined&&e.next===le.Undefined?(this._first=le.Undefined,this._last=le.Undefined):e.next===le.Undefined?(this._last=this._last.prev,this._last.next=le.Undefined):e.prev===le.Undefined&&(this._first=this._first.next,this._first.prev=le.Undefined);this._size-=1}*[Symbol.iterator](){let e=this._first;for(;e!==le.Undefined;)yield e.element,e=e.next}}const vh=globalThis.performance.now.bind(globalThis.performance);class Jn{static create(e){return new Jn(e)}constructor(e){this._now=e===!1?Date.now:vh,this._startTime=this._now(),this._stopTime=-1}stop(){this._stopTime=this._now()}reset(){this._startTime=this._now(),this._stopTime=-1}elapsed(){return this._stopTime!==-1?this._stopTime-this._startTime:this._now()-this._startTime}}var Ur;(function(t){t.None=()=>St.None;function e(y,k){return m(y,()=>{},0,void 0,!0,void 0,k)}t.defer=e;function n(y){return(k,D=null,A)=>{let M=!1,T;return T=y(H=>{if(!M)return T?T.dispose():M=!0,k.call(D,H)},null,A),M&&T.dispose(),T}}t.once=n;function r(y,k){return t.once(t.filter(y,k))}t.onceIf=r;function i(y,k,D){return d((A,M=null,T)=>y(H=>A.call(M,k(H)),null,T),D)}t.map=i;function s(y,k,D){return d((A,M=null,T)=>y(H=>{k(H),A.call(M,H)},null,T),D)}t.forEach=s;function a(y,k,D){return d((A,M=null,T)=>y(H=>k(H)&&A.call(M,H),null,T),D)}t.filter=a;function o(y){return y}t.signal=o;function l(...y){return(k,D=null,A)=>{const M=gh(...y.map(T=>T(H=>k.call(D,H))));return u(M,A)}}t.any=l;function c(y,k,D,A){let M=D;return i(y,T=>(M=k(M,T),M),A)}t.reduce=c;function d(y,k){let D;const A={onWillAddFirstListener(){D=y(M.fire,M)},onDidRemoveLastListener(){D==null||D.dispose()}},M=new Be(A);return k==null||k.add(M),M.event}function u(y,k){return k instanceof Array?k.push(y):k&&k.add(y),y}function m(y,k,D=100,A=!1,M=!1,T,H){let ee,G,Se,dn=0,Ye;const Ps={leakWarningThreshold:T,onWillAddFirstListener(){ee=y(Lf=>{dn++,G=k(G,Lf),A&&!Se&&(un.fire(G),G=void 0),Ye=()=>{const Af=G;G=void 0,Se=void 0,(!A||dn>1)&&un.fire(Af),dn=0},typeof D=="number"?(Se&&clearTimeout(Se),Se=setTimeout(Ye,D)):Se===void 0&&(Se=null,queueMicrotask(Ye))})},onWillRemoveListener(){M&&dn>0&&(Ye==null||Ye())},onDidRemoveLastListener(){Ye=void 0,ee.dispose()}},un=new Be(Ps);return H==null||H.add(un),un.event}t.debounce=m;function f(y,k=0,D){return t.debounce(y,(A,M)=>A?(A.push(M),A):[M],k,void 0,!0,void 0,D)}t.accumulate=f;function g(y,k=(A,M)=>A===M,D){let A=!0,M;return a(y,T=>{const H=A||!k(T,M);return A=!1,M=T,H},D)}t.latch=g;function b(y,k,D){return[t.filter(y,k,D),t.filter(y,A=>!k(A),D)]}t.split=b;function F(y,k=!1,D=[],A){let M=D.slice(),T=y(G=>{M?M.push(G):ee.fire(G)});A&&A.add(T);const H=()=>{M==null||M.forEach(G=>ee.fire(G)),M=null},ee=new Be({onWillAddFirstListener(){T||(T=y(G=>ee.fire(G)),A&&A.add(T))},onDidAddFirstListener(){M&&(k?setTimeout(H):H())},onDidRemoveLastListener(){T&&T.dispose(),T=null}});return A&&A.add(ee),ee.event}t.buffer=F;function E(y,k){return(A,M,T)=>{const H=k(new _);return y(function(ee){const G=H.evaluate(ee);G!==I&&A.call(M,G)},void 0,T)}}t.chain=E;const I=Symbol("HaltChainable");class _{constructor(){this.steps=[]}map(k){return this.steps.push(k),this}forEach(k){return this.steps.push(D=>(k(D),D)),this}filter(k){return this.steps.push(D=>k(D)?D:I),this}reduce(k,D){let A=D;return this.steps.push(M=>(A=k(A,M),A)),this}latch(k=(D,A)=>D===A){let D=!0,A;return this.steps.push(M=>{const T=D||!k(M,A);return D=!1,A=M,T?M:I}),this}evaluate(k){for(const D of this.steps)if(k=D(k),k===I)break;return k}}function P(y,k,D=A=>A){const A=(...ee)=>H.fire(D(...ee)),M=()=>y.on(k,A),T=()=>y.removeListener(k,A),H=new Be({onWillAddFirstListener:M,onDidRemoveLastListener:T});return H.event}t.fromNodeEventEmitter=P;function O(y,k,D=A=>A){const A=(...ee)=>H.fire(D(...ee)),M=()=>y.addEventListener(k,A),T=()=>y.removeEventListener(k,A),H=new Be({onWillAddFirstListener:M,onDidRemoveLastListener:T});return H.event}t.fromDOMEventEmitter=O;function V(y,k){let D;const A=new Promise((M,T)=>{const H=n(y)(M,null,k);D=()=>H.dispose()});return A.cancel=D,A}t.toPromise=V;function R(y,k){return y(D=>k.fire(D))}t.forward=R;function N(y,k,D){return k(D),y(A=>k(A))}t.runAndSubscribe=N;class z{constructor(k,D){this._observable=k,this._counter=0,this._hasChanged=!1;const A={onWillAddFirstListener:()=>{k.addObserver(this),this._observable.reportChanges()},onDidRemoveLastListener:()=>{k.removeObserver(this)}};this.emitter=new Be(A),D&&D.add(this.emitter)}beginUpdate(k){this._counter++}handlePossibleChange(k){}handleChange(k,D){this._hasChanged=!0}endUpdate(k){this._counter--,this._counter===0&&(this._observable.reportChanges(),this._hasChanged&&(this._hasChanged=!1,this.emitter.fire(this._observable.get())))}}function $(y,k){return new z(y,k).emitter.event}t.fromObservable=$;function L(y){return(k,D,A)=>{let M=0,T=!1;const H={beginUpdate(){M++},endUpdate(){M--,M===0&&(y.reportChanges(),T&&(T=!1,k.call(D)))},handlePossibleChange(){},handleChange(){T=!0}};y.addObserver(H),y.reportChanges();const ee={dispose(){y.removeObserver(H)}};return A instanceof pn?A.add(ee):Array.isArray(A)&&A.push(ee),ee}}t.fromObservableLight=L})(Ur||(Ur={}));const on=class on{constructor(e){this.listenerCount=0,this.invocationCount=0,this.elapsedOverall=0,this.durations=[],this.name=`${e}_${on._idPool++}`,on.all.add(this)}start(e){this._stopWatch=new Jn,this.listenerCount=e}stop(){if(this._stopWatch){const e=this._stopWatch.elapsed();this.durations.push(e),this.elapsedOverall+=e,this.invocationCount+=1,this._stopWatch=void 0}}};on.all=new Set,on._idPool=0;let Br=on,yh=-1;const zr=class zr{constructor(e,n,r=(zr._idPool++).toString(16).padStart(3,"0")){this._errorHandler=e,this.threshold=n,this.name=r,this._warnCountdown=0}dispose(){var e;(e=this._stacks)==null||e.clear()}check(e,n){const r=this.threshold;if(r<=0||n{const s=this._stacks.get(e.value)||0;this._stacks.set(e.value,s-1)}}getMostFrequentStack(){if(!this._stacks)return;let e,n=0;for(const[r,i]of this._stacks)(!e||n{var o,l,c,d,u,m,f;if(this._leakageMon&&this._size>this._leakageMon.threshold**2){const g=`[${this._leakageMon.name}] REFUSES to accept new listeners because it exceeded its threshold by far (${this._size} vs ${this._leakageMon.threshold})`;console.warn(g);const b=this._leakageMon.getMostFrequentStack()??["UNKNOWN stack",-1],F=new Sh(`${g}. HINT: Stack shows most frequent listener (${b[1]}-times)`,b[0]);return(((o=this._options)==null?void 0:o.onListenerError)||Ke)(F),St.None}if(this._disposed)return St.None;n&&(e=e.bind(n));const i=new Hr(e);let s;this._leakageMon&&this._size>=Math.ceil(this._leakageMon.threshold*.2)&&(i.stack=jr.create(),s=this._leakageMon.check(i.stack,this._size+1)),this._listeners?this._listeners instanceof Hr?(this._deliveryQueue??(this._deliveryQueue=new kh),this._listeners=[this._listeners,i]):this._listeners.push(i):((c=(l=this._options)==null?void 0:l.onWillAddFirstListener)==null||c.call(l,this),this._listeners=i,(u=(d=this._options)==null?void 0:d.onDidAddFirstListener)==null||u.call(d,this)),(f=(m=this._options)==null?void 0:m.onDidAddListener)==null||f.call(m,this),this._size++;const a=Gn(()=>{s==null||s(),this._removeListener(i)});return r instanceof pn?r.add(a):Array.isArray(r)&&r.push(a),a}),this._event}_removeListener(e){var s,a,o,l;if((a=(s=this._options)==null?void 0:s.onWillRemoveListener)==null||a.call(s,this),!this._listeners)return;if(this._size===1){this._listeners=void 0,(l=(o=this._options)==null?void 0:o.onDidRemoveLastListener)==null||l.call(o,this),this._size=0;return}const n=this._listeners,r=n.indexOf(e);if(r===-1)throw console.log("disposed?",this._disposed),console.log("size?",this._size),console.log("arr?",JSON.stringify(this._listeners)),new Error("Attempted to dispose unknown listener");this._size--,n[r]=void 0;const i=this._deliveryQueue.current===this;if(this._size*Ch<=n.length){let c=0;for(let d=0;d0}}class kh{constructor(){this.i=-1,this.end=0}enqueue(e,n,r){this.i=0,this.end=r,this.current=e,this.value=n}reset(){this.i=this.end,this.current=void 0,this.value=void 0}}function _h(){return globalThis._VSCODE_NLS_MESSAGES}function $s(){return globalThis._VSCODE_NLS_LANGUAGE}const Eh=$s()==="pseudo"||typeof document<"u"&&document.location&&typeof document.location.hash=="string"&&document.location.hash.indexOf("pseudo=true")>=0;function Us(t,e){let n;return e.length===0?n=t:n=t.replace(/\{(\d+)\}/g,(r,i)=>{const s=i[0],a=e[s];let o=r;return typeof a=="string"?o=a:(typeof a=="number"||typeof a=="boolean"||a===void 0||a===null)&&(o=String(a)),o}),Eh&&(n="["+n.replace(/[aouei]/g,"$&$&")+"]"),n}function B(t,e,...n){return Us(typeof t=="number"?Fh(t,e):e,n)}function Fh(t,e){var r;const n=(r=_h())==null?void 0:r[t];if(typeof n!="string"){if(typeof e=="string")return e;throw new Error(`!!! NLS MISSING: ${t} !!!`)}return n}const zt="en";let Gr=!1,Jr=!1,Xr=!1,Xn,Yr=zt,Bs=zt,Rh,We;const Ct=globalThis;let fe;typeof Ct.vscode<"u"&&typeof Ct.vscode.process<"u"?fe=Ct.vscode.process:typeof process<"u"&&typeof((oh=process==null?void 0:process.versions)==null?void 0:oh.node)=="string"&&(fe=process);const Nh=typeof((lh=fe==null?void 0:fe.versions)==null?void 0:lh.electron)=="string"&&(fe==null?void 0:fe.type)==="renderer";if(typeof fe=="object"){Gr=fe.platform==="win32",Jr=fe.platform==="darwin",Xr=fe.platform==="linux",Xr&&fe.env.SNAP&&fe.env.SNAP_REVISION,fe.env.CI||fe.env.BUILD_ARTIFACTSTAGINGDIRECTORY||fe.env.GITHUB_WORKSPACE,Xn=zt,Yr=zt;const t=fe.env.VSCODE_NLS_CONFIG;if(t)try{const e=JSON.parse(t);Xn=e.userLocale,Bs=e.osLocale,Yr=e.resolvedLanguage||zt,Rh=(ch=e.languagePack)==null?void 0:ch.translationsConfigFile}catch{}}else typeof navigator=="object"&&!Nh?(We=navigator.userAgent,Gr=We.indexOf("Windows")>=0,Jr=We.indexOf("Macintosh")>=0,(We.indexOf("Macintosh")>=0||We.indexOf("iPad")>=0||We.indexOf("iPhone")>=0)&&navigator.maxTouchPoints&&navigator.maxTouchPoints>0,Xr=We.indexOf("Linux")>=0,(We==null?void 0:We.indexOf("Mobi"))>=0,Yr=$s()||zt,Xn=navigator.language.toLowerCase(),Bs=Xn):console.error("Unable to resolve platform.");const mn=Gr,Ih=Jr,qe=We,Dh=typeof Ct.postMessage=="function"&&!Ct.importScripts;(()=>{if(Dh){const t=[];Ct.addEventListener("message",n=>{if(n.data&&n.data.vscodeScheduleAsyncWork)for(let r=0,i=t.length;r{const r=++e;t.push({id:r,callback:n}),Ct.postMessage({vscodeScheduleAsyncWork:r},"*")}}return t=>setTimeout(t)})();const Lh=!!(qe&&qe.indexOf("Chrome")>=0);qe&&qe.indexOf("Firefox")>=0,!Lh&&qe&&qe.indexOf("Safari")>=0,qe&&qe.indexOf("Edg/")>=0,qe&&qe.indexOf("Android")>=0;function Ah(t){return t}class Mh{constructor(e,n){this.lastCache=void 0,this.lastArgKey=void 0,typeof e=="function"?(this._fn=e,this._computeKey=Ah):(this._fn=n,this._computeKey=e.getCacheKey)}get(e){const n=this._computeKey(e);return this.lastArgKey!==n&&(this.lastArgKey=n,this.lastCache=this._fn(e)),this.lastCache}}var kt;(function(t){t[t.Uninitialized=0]="Uninitialized",t[t.Running=1]="Running",t[t.Completed=2]="Completed"})(kt||(kt={}));class Qr{constructor(e){this.executor=e,this._state=kt.Uninitialized}get value(){if(this._state===kt.Uninitialized){this._state=kt.Running;try{this._value=this.executor()}catch(e){this._error=e}finally{this._state=kt.Completed}}else if(this._state===kt.Running)throw new Error("Cannot read the value of a lazy that is being initialized");if(this._error)throw this._error;return this._value}get rawValue(){return this._value}}function zh(t){return t.replace(/[\\\{\}\*\+\?\|\^\$\.\[\]\(\)]/g,"\\$&")}function Ph(t){return t.source==="^"||t.source==="^$"||t.source==="$"||t.source==="^\\s*$"?!1:!!(t.exec("")&&t.lastIndex===0)}function Th(t){return t.split(/\r\n|\r|\n/)}function Oh(t){for(let e=0,n=t.length;e=0;n--){const r=t.charCodeAt(n);if(r!==32&&r!==9)return n}return-1}function qs(t){return t>=65&&t<=90}function Vh(t,e){const n=Math.min(t.length,e.length);let r;for(r=0;rJSON.parse('{"_common":[8232,32,8233,32,5760,32,8192,32,8193,32,8194,32,8195,32,8196,32,8197,32,8198,32,8200,32,8201,32,8202,32,8287,32,8199,32,8239,32,2042,95,65101,95,65102,95,65103,95,8208,45,8209,45,8210,45,65112,45,1748,45,8259,45,727,45,8722,45,10134,45,11450,45,1549,44,1643,44,184,44,42233,44,894,59,2307,58,2691,58,1417,58,1795,58,1796,58,5868,58,65072,58,6147,58,6153,58,8282,58,1475,58,760,58,42889,58,8758,58,720,58,42237,58,451,33,11601,33,660,63,577,63,2429,63,5038,63,42731,63,119149,46,8228,46,1793,46,1794,46,42510,46,68176,46,1632,46,1776,46,42232,46,1373,96,65287,96,8219,96,1523,96,8242,96,1370,96,8175,96,65344,96,900,96,8189,96,8125,96,8127,96,8190,96,697,96,884,96,712,96,714,96,715,96,756,96,699,96,701,96,700,96,702,96,42892,96,1497,96,2036,96,2037,96,5194,96,5836,96,94033,96,94034,96,65339,91,10088,40,10098,40,12308,40,64830,40,65341,93,10089,41,10099,41,12309,41,64831,41,10100,123,119060,123,10101,125,65342,94,8270,42,1645,42,8727,42,66335,42,5941,47,8257,47,8725,47,8260,47,9585,47,10187,47,10744,47,119354,47,12755,47,12339,47,11462,47,20031,47,12035,47,65340,92,65128,92,8726,92,10189,92,10741,92,10745,92,119311,92,119355,92,12756,92,20022,92,12034,92,42872,38,708,94,710,94,5869,43,10133,43,66203,43,8249,60,10094,60,706,60,119350,60,5176,60,5810,60,5120,61,11840,61,12448,61,42239,61,8250,62,10095,62,707,62,119351,62,5171,62,94015,62,8275,126,732,126,8128,126,8764,126,65372,124,65293,45,118002,50,120784,50,120794,50,120804,50,120814,50,120824,50,130034,50,42842,50,423,50,1000,50,42564,50,5311,50,42735,50,119302,51,118003,51,120785,51,120795,51,120805,51,120815,51,120825,51,130035,51,42923,51,540,51,439,51,42858,51,11468,51,1248,51,94011,51,71882,51,118004,52,120786,52,120796,52,120806,52,120816,52,120826,52,130036,52,5070,52,71855,52,118005,53,120787,53,120797,53,120807,53,120817,53,120827,53,130037,53,444,53,71867,53,118006,54,120788,54,120798,54,120808,54,120818,54,120828,54,130038,54,11474,54,5102,54,71893,54,119314,55,118007,55,120789,55,120799,55,120809,55,120819,55,120829,55,130039,55,66770,55,71878,55,2819,56,2538,56,2666,56,125131,56,118008,56,120790,56,120800,56,120810,56,120820,56,120830,56,130040,56,547,56,546,56,66330,56,2663,57,2920,57,2541,57,3437,57,118009,57,120791,57,120801,57,120811,57,120821,57,120831,57,130041,57,42862,57,11466,57,71884,57,71852,57,71894,57,9082,97,65345,97,119834,97,119886,97,119938,97,119990,97,120042,97,120094,97,120146,97,120198,97,120250,97,120302,97,120354,97,120406,97,120458,97,593,97,945,97,120514,97,120572,97,120630,97,120688,97,120746,97,65313,65,117974,65,119808,65,119860,65,119912,65,119964,65,120016,65,120068,65,120120,65,120172,65,120224,65,120276,65,120328,65,120380,65,120432,65,913,65,120488,65,120546,65,120604,65,120662,65,120720,65,5034,65,5573,65,42222,65,94016,65,66208,65,119835,98,119887,98,119939,98,119991,98,120043,98,120095,98,120147,98,120199,98,120251,98,120303,98,120355,98,120407,98,120459,98,388,98,5071,98,5234,98,5551,98,65314,66,8492,66,117975,66,119809,66,119861,66,119913,66,120017,66,120069,66,120121,66,120173,66,120225,66,120277,66,120329,66,120381,66,120433,66,42932,66,914,66,120489,66,120547,66,120605,66,120663,66,120721,66,5108,66,5623,66,42192,66,66178,66,66209,66,66305,66,65347,99,8573,99,119836,99,119888,99,119940,99,119992,99,120044,99,120096,99,120148,99,120200,99,120252,99,120304,99,120356,99,120408,99,120460,99,7428,99,1010,99,11429,99,43951,99,66621,99,128844,67,71913,67,71922,67,65315,67,8557,67,8450,67,8493,67,117976,67,119810,67,119862,67,119914,67,119966,67,120018,67,120174,67,120226,67,120278,67,120330,67,120382,67,120434,67,1017,67,11428,67,5087,67,42202,67,66210,67,66306,67,66581,67,66844,67,8574,100,8518,100,119837,100,119889,100,119941,100,119993,100,120045,100,120097,100,120149,100,120201,100,120253,100,120305,100,120357,100,120409,100,120461,100,1281,100,5095,100,5231,100,42194,100,8558,68,8517,68,117977,68,119811,68,119863,68,119915,68,119967,68,120019,68,120071,68,120123,68,120175,68,120227,68,120279,68,120331,68,120383,68,120435,68,5024,68,5598,68,5610,68,42195,68,8494,101,65349,101,8495,101,8519,101,119838,101,119890,101,119942,101,120046,101,120098,101,120150,101,120202,101,120254,101,120306,101,120358,101,120410,101,120462,101,43826,101,1213,101,8959,69,65317,69,8496,69,117978,69,119812,69,119864,69,119916,69,120020,69,120072,69,120124,69,120176,69,120228,69,120280,69,120332,69,120384,69,120436,69,917,69,120492,69,120550,69,120608,69,120666,69,120724,69,11577,69,5036,69,42224,69,71846,69,71854,69,66182,69,119839,102,119891,102,119943,102,119995,102,120047,102,120099,102,120151,102,120203,102,120255,102,120307,102,120359,102,120411,102,120463,102,43829,102,42905,102,383,102,7837,102,1412,102,119315,70,8497,70,117979,70,119813,70,119865,70,119917,70,120021,70,120073,70,120125,70,120177,70,120229,70,120281,70,120333,70,120385,70,120437,70,42904,70,988,70,120778,70,5556,70,42205,70,71874,70,71842,70,66183,70,66213,70,66853,70,65351,103,8458,103,119840,103,119892,103,119944,103,120048,103,120100,103,120152,103,120204,103,120256,103,120308,103,120360,103,120412,103,120464,103,609,103,7555,103,397,103,1409,103,117980,71,119814,71,119866,71,119918,71,119970,71,120022,71,120074,71,120126,71,120178,71,120230,71,120282,71,120334,71,120386,71,120438,71,1292,71,5056,71,5107,71,42198,71,65352,104,8462,104,119841,104,119945,104,119997,104,120049,104,120101,104,120153,104,120205,104,120257,104,120309,104,120361,104,120413,104,120465,104,1211,104,1392,104,5058,104,65320,72,8459,72,8460,72,8461,72,117981,72,119815,72,119867,72,119919,72,120023,72,120179,72,120231,72,120283,72,120335,72,120387,72,120439,72,919,72,120494,72,120552,72,120610,72,120668,72,120726,72,11406,72,5051,72,5500,72,42215,72,66255,72,731,105,9075,105,65353,105,8560,105,8505,105,8520,105,119842,105,119894,105,119946,105,119998,105,120050,105,120102,105,120154,105,120206,105,120258,105,120310,105,120362,105,120414,105,120466,105,120484,105,618,105,617,105,953,105,8126,105,890,105,120522,105,120580,105,120638,105,120696,105,120754,105,1110,105,42567,105,1231,105,43893,105,5029,105,71875,105,65354,106,8521,106,119843,106,119895,106,119947,106,119999,106,120051,106,120103,106,120155,106,120207,106,120259,106,120311,106,120363,106,120415,106,120467,106,1011,106,1112,106,65322,74,117983,74,119817,74,119869,74,119921,74,119973,74,120025,74,120077,74,120129,74,120181,74,120233,74,120285,74,120337,74,120389,74,120441,74,42930,74,895,74,1032,74,5035,74,5261,74,42201,74,119844,107,119896,107,119948,107,120000,107,120052,107,120104,107,120156,107,120208,107,120260,107,120312,107,120364,107,120416,107,120468,107,8490,75,65323,75,117984,75,119818,75,119870,75,119922,75,119974,75,120026,75,120078,75,120130,75,120182,75,120234,75,120286,75,120338,75,120390,75,120442,75,922,75,120497,75,120555,75,120613,75,120671,75,120729,75,11412,75,5094,75,5845,75,42199,75,66840,75,1472,108,8739,73,9213,73,65512,73,1633,108,1777,73,66336,108,125127,108,118001,108,120783,73,120793,73,120803,73,120813,73,120823,73,130033,73,65321,73,8544,73,8464,73,8465,73,117982,108,119816,73,119868,73,119920,73,120024,73,120128,73,120180,73,120232,73,120284,73,120336,73,120388,73,120440,73,65356,108,8572,73,8467,108,119845,108,119897,108,119949,108,120001,108,120053,108,120105,73,120157,73,120209,73,120261,73,120313,73,120365,73,120417,73,120469,73,448,73,120496,73,120554,73,120612,73,120670,73,120728,73,11410,73,1030,73,1216,73,1493,108,1503,108,1575,108,126464,108,126592,108,65166,108,65165,108,1994,108,11599,73,5825,73,42226,73,93992,73,66186,124,66313,124,119338,76,8556,76,8466,76,117985,76,119819,76,119871,76,119923,76,120027,76,120079,76,120131,76,120183,76,120235,76,120287,76,120339,76,120391,76,120443,76,11472,76,5086,76,5290,76,42209,76,93974,76,71843,76,71858,76,66587,76,66854,76,65325,77,8559,77,8499,77,117986,77,119820,77,119872,77,119924,77,120028,77,120080,77,120132,77,120184,77,120236,77,120288,77,120340,77,120392,77,120444,77,924,77,120499,77,120557,77,120615,77,120673,77,120731,77,1018,77,11416,77,5047,77,5616,77,5846,77,42207,77,66224,77,66321,77,119847,110,119899,110,119951,110,120003,110,120055,110,120107,110,120159,110,120211,110,120263,110,120315,110,120367,110,120419,110,120471,110,1400,110,1404,110,65326,78,8469,78,117987,78,119821,78,119873,78,119925,78,119977,78,120029,78,120081,78,120185,78,120237,78,120289,78,120341,78,120393,78,120445,78,925,78,120500,78,120558,78,120616,78,120674,78,120732,78,11418,78,42208,78,66835,78,3074,111,3202,111,3330,111,3458,111,2406,111,2662,111,2790,111,3046,111,3174,111,3302,111,3430,111,3664,111,3792,111,4160,111,1637,111,1781,111,65359,111,8500,111,119848,111,119900,111,119952,111,120056,111,120108,111,120160,111,120212,111,120264,111,120316,111,120368,111,120420,111,120472,111,7439,111,7441,111,43837,111,959,111,120528,111,120586,111,120644,111,120702,111,120760,111,963,111,120532,111,120590,111,120648,111,120706,111,120764,111,11423,111,4351,111,1413,111,1505,111,1607,111,126500,111,126564,111,126596,111,65259,111,65260,111,65258,111,65257,111,1726,111,64428,111,64429,111,64427,111,64426,111,1729,111,64424,111,64425,111,64423,111,64422,111,1749,111,3360,111,4125,111,66794,111,71880,111,71895,111,66604,111,1984,79,2534,79,2918,79,12295,79,70864,79,71904,79,118000,79,120782,79,120792,79,120802,79,120812,79,120822,79,130032,79,65327,79,117988,79,119822,79,119874,79,119926,79,119978,79,120030,79,120082,79,120134,79,120186,79,120238,79,120290,79,120342,79,120394,79,120446,79,927,79,120502,79,120560,79,120618,79,120676,79,120734,79,11422,79,1365,79,11604,79,4816,79,2848,79,66754,79,42227,79,71861,79,66194,79,66219,79,66564,79,66838,79,9076,112,65360,112,119849,112,119901,112,119953,112,120005,112,120057,112,120109,112,120161,112,120213,112,120265,112,120317,112,120369,112,120421,112,120473,112,961,112,120530,112,120544,112,120588,112,120602,112,120646,112,120660,112,120704,112,120718,112,120762,112,120776,112,11427,112,65328,80,8473,80,117989,80,119823,80,119875,80,119927,80,119979,80,120031,80,120083,80,120187,80,120239,80,120291,80,120343,80,120395,80,120447,80,929,80,120504,80,120562,80,120620,80,120678,80,120736,80,11426,80,5090,80,5229,80,42193,80,66197,80,119850,113,119902,113,119954,113,120006,113,120058,113,120110,113,120162,113,120214,113,120266,113,120318,113,120370,113,120422,113,120474,113,1307,113,1379,113,1382,113,8474,81,117990,81,119824,81,119876,81,119928,81,119980,81,120032,81,120084,81,120188,81,120240,81,120292,81,120344,81,120396,81,120448,81,11605,81,119851,114,119903,114,119955,114,120007,114,120059,114,120111,114,120163,114,120215,114,120267,114,120319,114,120371,114,120423,114,120475,114,43847,114,43848,114,7462,114,11397,114,43905,114,119318,82,8475,82,8476,82,8477,82,117991,82,119825,82,119877,82,119929,82,120033,82,120189,82,120241,82,120293,82,120345,82,120397,82,120449,82,422,82,5025,82,5074,82,66740,82,5511,82,42211,82,94005,82,65363,115,119852,115,119904,115,119956,115,120008,115,120060,115,120112,115,120164,115,120216,115,120268,115,120320,115,120372,115,120424,115,120476,115,42801,115,445,115,1109,115,43946,115,71873,115,66632,115,65331,83,117992,83,119826,83,119878,83,119930,83,119982,83,120034,83,120086,83,120138,83,120190,83,120242,83,120294,83,120346,83,120398,83,120450,83,1029,83,1359,83,5077,83,5082,83,42210,83,94010,83,66198,83,66592,83,119853,116,119905,116,119957,116,120009,116,120061,116,120113,116,120165,116,120217,116,120269,116,120321,116,120373,116,120425,116,120477,116,8868,84,10201,84,128872,84,65332,84,117993,84,119827,84,119879,84,119931,84,119983,84,120035,84,120087,84,120139,84,120191,84,120243,84,120295,84,120347,84,120399,84,120451,84,932,84,120507,84,120565,84,120623,84,120681,84,120739,84,11430,84,5026,84,42196,84,93962,84,71868,84,66199,84,66225,84,66325,84,119854,117,119906,117,119958,117,120010,117,120062,117,120114,117,120166,117,120218,117,120270,117,120322,117,120374,117,120426,117,120478,117,42911,117,7452,117,43854,117,43858,117,651,117,965,117,120534,117,120592,117,120650,117,120708,117,120766,117,1405,117,66806,117,71896,117,8746,85,8899,85,117994,85,119828,85,119880,85,119932,85,119984,85,120036,85,120088,85,120140,85,120192,85,120244,85,120296,85,120348,85,120400,85,120452,85,1357,85,4608,85,66766,85,5196,85,42228,85,94018,85,71864,85,8744,118,8897,118,65366,118,8564,118,119855,118,119907,118,119959,118,120011,118,120063,118,120115,118,120167,118,120219,118,120271,118,120323,118,120375,118,120427,118,120479,118,7456,118,957,118,120526,118,120584,118,120642,118,120700,118,120758,118,1141,118,1496,118,71430,118,43945,118,71872,118,119309,86,1639,86,1783,86,8548,86,117995,86,119829,86,119881,86,119933,86,119985,86,120037,86,120089,86,120141,86,120193,86,120245,86,120297,86,120349,86,120401,86,120453,86,1140,86,11576,86,5081,86,5167,86,42719,86,42214,86,93960,86,71840,86,66845,86,623,119,119856,119,119908,119,119960,119,120012,119,120064,119,120116,119,120168,119,120220,119,120272,119,120324,119,120376,119,120428,119,120480,119,7457,119,1121,119,1309,119,1377,119,71434,119,71438,119,71439,119,43907,119,71910,87,71919,87,117996,87,119830,87,119882,87,119934,87,119986,87,120038,87,120090,87,120142,87,120194,87,120246,87,120298,87,120350,87,120402,87,120454,87,1308,87,5043,87,5076,87,42218,87,5742,120,10539,120,10540,120,10799,120,65368,120,8569,120,119857,120,119909,120,119961,120,120013,120,120065,120,120117,120,120169,120,120221,120,120273,120,120325,120,120377,120,120429,120,120481,120,5441,120,5501,120,5741,88,9587,88,66338,88,71916,88,65336,88,8553,88,117997,88,119831,88,119883,88,119935,88,119987,88,120039,88,120091,88,120143,88,120195,88,120247,88,120299,88,120351,88,120403,88,120455,88,42931,88,935,88,120510,88,120568,88,120626,88,120684,88,120742,88,11436,88,11613,88,5815,88,42219,88,66192,88,66228,88,66327,88,66855,88,611,121,7564,121,65369,121,119858,121,119910,121,119962,121,120014,121,120066,121,120118,121,120170,121,120222,121,120274,121,120326,121,120378,121,120430,121,120482,121,655,121,7935,121,43866,121,947,121,8509,121,120516,121,120574,121,120632,121,120690,121,120748,121,1199,121,4327,121,71900,121,65337,89,117998,89,119832,89,119884,89,119936,89,119988,89,120040,89,120092,89,120144,89,120196,89,120248,89,120300,89,120352,89,120404,89,120456,89,933,89,978,89,120508,89,120566,89,120624,89,120682,89,120740,89,11432,89,1198,89,5033,89,5053,89,42220,89,94019,89,71844,89,66226,89,119859,122,119911,122,119963,122,120015,122,120067,122,120119,122,120171,122,120223,122,120275,122,120327,122,120379,122,120431,122,120483,122,7458,122,43923,122,71876,122,71909,90,66293,90,65338,90,8484,90,8488,90,117999,90,119833,90,119885,90,119937,90,119989,90,120041,90,120197,90,120249,90,120301,90,120353,90,120405,90,120457,90,918,90,120493,90,120551,90,120609,90,120667,90,120725,90,5059,90,42204,90,71849,90,65282,34,65283,35,65284,36,65285,37,65286,38,65290,42,65291,43,65294,46,65295,47,65296,48,65298,50,65299,51,65300,52,65301,53,65302,54,65303,55,65304,56,65305,57,65308,60,65309,61,65310,62,65312,64,65316,68,65318,70,65319,71,65324,76,65329,81,65330,82,65333,85,65334,86,65335,87,65343,95,65346,98,65348,100,65350,102,65355,107,65357,109,65358,110,65361,113,65362,114,65364,116,65365,117,65367,119,65370,122,65371,123,65373,125,119846,109],"_default":[160,32,8211,45,65374,126,8218,44,65306,58,65281,33,8216,96,8217,96,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65288,40,65289,41,65292,44,65297,49,65307,59,65311,63],"cs":[65374,126,8218,44,65306,58,65281,33,8216,96,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,1093,120,1061,88,1091,121,1059,89,65288,40,65289,41,65292,44,65297,49,65307,59,65311,63],"de":[65374,126,65306,58,65281,33,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,1093,120,1061,88,1091,121,1059,89,65288,40,65289,41,65292,44,65297,49,65307,59,65311,63],"es":[8211,45,65374,126,8218,44,65306,58,65281,33,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65288,40,65289,41,65292,44,65297,49,65307,59,65311,63],"fr":[65374,126,8218,44,65306,58,65281,33,8216,96,8245,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65288,40,65289,41,65292,44,65297,49,65307,59,65311,63],"it":[160,32,8211,45,65374,126,8218,44,65306,58,65281,33,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65288,40,65289,41,65292,44,65297,49,65307,59,65311,63],"ja":[8211,45,8218,44,65281,33,8216,96,8245,96,180,96,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65292,44,65297,49,65307,59],"ko":[8211,45,65374,126,8218,44,65306,58,65281,33,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65288,40,65289,41,65292,44,65297,49,65307,59,65311,63],"pl":[65374,126,65306,58,65281,33,8216,96,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65288,40,65289,41,65292,44,65297,49,65307,59,65311,63],"pt-BR":[65374,126,8218,44,65306,58,65281,33,8216,96,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65288,40,65289,41,65292,44,65297,49,65307,59,65311,63],"qps-ploc":[160,32,8211,45,65374,126,8218,44,65306,58,65281,33,8216,96,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65288,40,65289,41,65292,44,65297,49,65307,59,65311,63],"ru":[65374,126,8218,44,65306,58,65281,33,8216,96,8245,96,180,96,12494,47,305,105,921,73,1009,112,215,120,65288,40,65289,41,65292,44,65297,49,65307,59,65311,63],"tr":[160,32,8211,45,65374,126,8218,44,65306,58,65281,33,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65288,40,65289,41,65292,44,65297,49,65307,59,65311,63],"zh-hans":[160,32,65374,126,8218,44,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65297,49],"zh-hant":[8211,45,65374,126,8218,44,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89]}')),Xe.cache=new Mh({getCacheKey:JSON.stringify},e=>{function n(d){const u=new Map;for(let m=0;m!d.startsWith("_")&&Object.hasOwn(s,d));a.length===0&&(a=["_default"]);let o;for(const d of a){const u=n(s[d]);o=i(o,u)}const l=n(s._common),c=r(l,o);return new Xe(c)}),Xe._locales=new Qr(()=>Object.keys(Xe.ambiguousCharacterData.value).filter(e=>!e.startsWith("_")));let fn=Xe;const ln=class ln{static getRawData(){return JSON.parse('{"_common":[11,12,13,127,847,1564,4447,4448,6068,6069,6155,6156,6157,6158,7355,7356,8192,8193,8194,8195,8196,8197,8198,8199,8200,8201,8202,8204,8205,8206,8207,8234,8235,8236,8237,8238,8239,8287,8288,8289,8290,8291,8292,8293,8294,8295,8296,8297,8298,8299,8300,8301,8302,8303,10240,12644,65024,65025,65026,65027,65028,65029,65030,65031,65032,65033,65034,65035,65036,65037,65038,65039,65279,65440,65520,65521,65522,65523,65524,65525,65526,65527,65528,65532,78844,119155,119156,119157,119158,119159,119160,119161,119162,917504,917505,917506,917507,917508,917509,917510,917511,917512,917513,917514,917515,917516,917517,917518,917519,917520,917521,917522,917523,917524,917525,917526,917527,917528,917529,917530,917531,917532,917533,917534,917535,917536,917537,917538,917539,917540,917541,917542,917543,917544,917545,917546,917547,917548,917549,917550,917551,917552,917553,917554,917555,917556,917557,917558,917559,917560,917561,917562,917563,917564,917565,917566,917567,917568,917569,917570,917571,917572,917573,917574,917575,917576,917577,917578,917579,917580,917581,917582,917583,917584,917585,917586,917587,917588,917589,917590,917591,917592,917593,917594,917595,917596,917597,917598,917599,917600,917601,917602,917603,917604,917605,917606,917607,917608,917609,917610,917611,917612,917613,917614,917615,917616,917617,917618,917619,917620,917621,917622,917623,917624,917625,917626,917627,917628,917629,917630,917631,917760,917761,917762,917763,917764,917765,917766,917767,917768,917769,917770,917771,917772,917773,917774,917775,917776,917777,917778,917779,917780,917781,917782,917783,917784,917785,917786,917787,917788,917789,917790,917791,917792,917793,917794,917795,917796,917797,917798,917799,917800,917801,917802,917803,917804,917805,917806,917807,917808,917809,917810,917811,917812,917813,917814,917815,917816,917817,917818,917819,917820,917821,917822,917823,917824,917825,917826,917827,917828,917829,917830,917831,917832,917833,917834,917835,917836,917837,917838,917839,917840,917841,917842,917843,917844,917845,917846,917847,917848,917849,917850,917851,917852,917853,917854,917855,917856,917857,917858,917859,917860,917861,917862,917863,917864,917865,917866,917867,917868,917869,917870,917871,917872,917873,917874,917875,917876,917877,917878,917879,917880,917881,917882,917883,917884,917885,917886,917887,917888,917889,917890,917891,917892,917893,917894,917895,917896,917897,917898,917899,917900,917901,917902,917903,917904,917905,917906,917907,917908,917909,917910,917911,917912,917913,917914,917915,917916,917917,917918,917919,917920,917921,917922,917923,917924,917925,917926,917927,917928,917929,917930,917931,917932,917933,917934,917935,917936,917937,917938,917939,917940,917941,917942,917943,917944,917945,917946,917947,917948,917949,917950,917951,917952,917953,917954,917955,917956,917957,917958,917959,917960,917961,917962,917963,917964,917965,917966,917967,917968,917969,917970,917971,917972,917973,917974,917975,917976,917977,917978,917979,917980,917981,917982,917983,917984,917985,917986,917987,917988,917989,917990,917991,917992,917993,917994,917995,917996,917997,917998,917999],"cs":[173,8203,12288],"de":[173,8203,12288],"es":[8203,12288],"fr":[173,8203,12288],"it":[160,173,12288],"ja":[173],"ko":[173,12288],"pl":[173,8203,12288],"pt-BR":[173,8203,12288],"qps-ploc":[160,173,8203,12288],"ru":[173,12288],"tr":[160,173,8203,12288],"zh-hans":[160,173,8203,12288],"zh-hant":[173,12288]}')}static getData(){return this._data||(this._data=new Set([...Object.values(ln.getRawData())].flat())),this._data}static isInvisibleCharacter(e){return ln.getData().has(e)}static get codePoints(){return ln.getData()}};ln._data=void 0;let gn=ln;const Zr="default",Gh="$initialize";class Jh{constructor(e,n,r,i,s){this.vsWorker=e,this.req=n,this.channel=r,this.method=i,this.args=s,this.type=0}}class js{constructor(e,n,r,i){this.vsWorker=e,this.seq=n,this.res=r,this.err=i,this.type=1}}class Xh{constructor(e,n,r,i,s){this.vsWorker=e,this.req=n,this.channel=r,this.eventName=i,this.arg=s,this.type=2}}class Yh{constructor(e,n,r){this.vsWorker=e,this.req=n,this.event=r,this.type=3}}class Qh{constructor(e,n){this.vsWorker=e,this.req=n,this.type=4}}class Kh{constructor(e){this._workerId=-1,this._handler=e,this._lastSentReq=0,this._pendingReplies=Object.create(null),this._pendingEmitters=new Map,this._pendingEvents=new Map}setWorkerId(e){this._workerId=e}async sendMessage(e,n,r){const i=String(++this._lastSentReq);return new Promise((s,a)=>{this._pendingReplies[i]={resolve:s,reject:a},this._send(new Jh(this._workerId,i,e,n,r))})}listen(e,n,r){let i=null;const s=new Be({onWillAddFirstListener:()=>{i=String(++this._lastSentReq),this._pendingEmitters.set(i,s),this._send(new Xh(this._workerId,i,e,n,r))},onDidRemoveLastListener:()=>{this._pendingEmitters.delete(i),this._send(new Qh(this._workerId,i)),i=null}});return s.event}handleMessage(e){!e||!e.vsWorker||this._workerId!==-1&&e.vsWorker!==this._workerId||this._handleMessage(e)}createProxyToRemoteChannel(e,n){const r={get:(i,s)=>(typeof s=="string"&&!i[s]&&(Gs(s)?i[s]=a=>this.listen(e,s,a):Hs(s)?i[s]=this.listen(e,s,void 0):s.charCodeAt(0)===36&&(i[s]=async(...a)=>(await(n==null?void 0:n()),this.sendMessage(e,s,a)))),i[s])};return new Proxy(Object.create(null),r)}_handleMessage(e){switch(e.type){case 1:return this._handleReplyMessage(e);case 0:return this._handleRequestMessage(e);case 2:return this._handleSubscribeEventMessage(e);case 3:return this._handleEventMessage(e);case 4:return this._handleUnsubscribeEventMessage(e)}}_handleReplyMessage(e){if(!this._pendingReplies[e.seq]){console.warn("Got reply to unknown seq");return}const n=this._pendingReplies[e.seq];if(delete this._pendingReplies[e.seq],e.err){let r=e.err;if(e.err.$isError){const i=new Error;i.name=e.err.name,i.message=e.err.message,i.stack=e.err.stack,r=i}n.reject(r);return}n.resolve(e.res)}_handleRequestMessage(e){const n=e.req;this._handler.handleMessage(e.channel,e.method,e.args).then(i=>{this._send(new js(this._workerId,n,i,void 0))},i=>{i.detail instanceof Error&&(i.detail=Vr(i.detail)),this._send(new js(this._workerId,n,void 0,Vr(i)))})}_handleSubscribeEventMessage(e){const n=e.req,r=this._handler.handleEvent(e.channel,e.eventName,e.arg)(i=>{this._send(new Yh(this._workerId,n,i))});this._pendingEvents.set(n,r)}_handleEventMessage(e){if(!this._pendingEmitters.has(e.req)){console.warn("Got event for unknown req");return}this._pendingEmitters.get(e.req).fire(e.event)}_handleUnsubscribeEventMessage(e){if(!this._pendingEvents.has(e.req)){console.warn("Got unsubscribe for unknown req");return}this._pendingEvents.get(e.req).dispose(),this._pendingEvents.delete(e.req)}_send(e){const n=[];if(e.type===0)for(let r=0;r{e(r,i)},handleMessage:(r,i,s)=>this._handleMessage(r,i,s),handleEvent:(r,i,s)=>this._handleEvent(r,i,s)}),this.requestHandler=n(this)}onmessage(e){this._protocol.handleMessage(e)}_handleMessage(e,n,r){if(e===Zr&&n===Gh)return this.initialize(r[0]);const i=e===Zr?this.requestHandler:this._localChannels.get(e);if(!i)return Promise.reject(new Error(`Missing channel ${e} on worker thread`));const s=i[n];if(typeof s!="function")return Promise.reject(new Error(`Missing method ${n} on worker thread channel ${e}`));try{return Promise.resolve(s.apply(i,r))}catch(a){return Promise.reject(a)}}_handleEvent(e,n,r){const i=e===Zr?this.requestHandler:this._localChannels.get(e);if(!i)throw new Error(`Missing channel ${e} on worker thread`);if(Gs(n)){const s=i[n];if(typeof s!="function")throw new Error(`Missing dynamic event ${n} on request handler.`);const a=s.call(i,r);if(typeof a!="function")throw new Error(`Missing dynamic event ${n} on request handler.`);return a}if(Hs(n)){const s=i[n];if(typeof s!="function")throw new Error(`Missing event ${n} on request handler.`);return s}throw new Error(`Malformed event name ${n}`)}getChannel(e){if(!this._remoteChannels.has(e)){const n=this._protocol.createProxyToRemoteChannel(e);this._remoteChannels.set(e,n)}return this._remoteChannels.get(e)}async initialize(e){this._protocol.setWorkerId(e)}}let Js=!1;function ed(t){if(Js)throw new Error("WebWorker already initialized!");Js=!0;const e=new Zh(n=>globalThis.postMessage(n),n=>t(n));return globalThis.onmessage=n=>{e.onmessage(n.data)},e}class ut{constructor(e,n,r,i){this.originalStart=e,this.originalLength=n,this.modifiedStart=r,this.modifiedLength=i}getOriginalEnd(){return this.originalStart+this.originalLength}getModifiedEnd(){return this.modifiedStart+this.modifiedLength}}new Qr(()=>new Uint8Array(256));function Xs(t,e){return(e<<5)-e+t|0}function td(t,e){e=Xs(149417,e);for(let n=0,r=t.length;n0||this.m_modifiedCount>0)&&this.m_changes.push(new ut(this.m_originalStart,this.m_originalCount,this.m_modifiedStart,this.m_modifiedCount)),this.m_originalCount=0,this.m_modifiedCount=0,this.m_originalStart=1073741824,this.m_modifiedStart=1073741824}AddOriginalElement(e,n){this.m_originalStart=Math.min(this.m_originalStart,e),this.m_modifiedStart=Math.min(this.m_modifiedStart,n),this.m_originalCount++}AddModifiedElement(e,n){this.m_originalStart=Math.min(this.m_originalStart,e),this.m_modifiedStart=Math.min(this.m_modifiedStart,n),this.m_modifiedCount++}getChanges(){return(this.m_originalCount>0||this.m_modifiedCount>0)&&this.MarkNextChange(),this.m_changes}getReverseChanges(){return(this.m_originalCount>0||this.m_modifiedCount>0)&&this.MarkNextChange(),this.m_changes.reverse(),this.m_changes}}class pt{constructor(e,n,r=null){this.ContinueProcessingPredicate=r,this._originalSequence=e,this._modifiedSequence=n;const[i,s,a]=pt._getElements(e),[o,l,c]=pt._getElements(n);this._hasStrings=a&&c,this._originalStringElements=i,this._originalElementsOrHash=s,this._modifiedStringElements=o,this._modifiedElementsOrHash=l,this.m_forwardHistory=[],this.m_reverseHistory=[]}static _isStringArray(e){return e.length>0&&typeof e[0]=="string"}static _getElements(e){const n=e.getElements();if(pt._isStringArray(n)){const r=new Int32Array(n.length);for(let i=0,s=n.length;i=e&&i>=r&&this.ElementsAreEqual(n,i);)n--,i--;if(e>n||r>i){let u;return r<=i?(Pt.Assert(e===n+1,"originalStart should only be one more than originalEnd"),u=[new ut(e,0,r,i-r+1)]):e<=n?(Pt.Assert(r===i+1,"modifiedStart should only be one more than modifiedEnd"),u=[new ut(e,n-e+1,r,0)]):(Pt.Assert(e===n+1,"originalStart should only be one more than originalEnd"),Pt.Assert(r===i+1,"modifiedStart should only be one more than modifiedEnd"),u=[]),u}const a=[0],o=[0],l=this.ComputeRecursionPoint(e,n,r,i,a,o,s),c=a[0],d=o[0];if(l!==null)return l;if(!s[0]){const u=this.ComputeDiffRecursive(e,c,r,d,s);let m=[];return s[0]?m=[new ut(c+1,n-(c+1)+1,d+1,i-(d+1)+1)]:m=this.ComputeDiffRecursive(c+1,n,d+1,i,s),this.ConcatenateChanges(u,m)}return[new ut(e,n-e+1,r,i-r+1)]}WALKTRACE(e,n,r,i,s,a,o,l,c,d,u,m,f,g,b,F,E,I){let _=null,P=null,O=new Qs,V=n,R=r,N=f[0]-F[0]-i,z=-1073741824,$=this.m_forwardHistory.length-1;do{const L=N+e;L===V||L=0&&(c=this.m_forwardHistory[$],e=c[0],V=1,R=c.length-1)}while(--$>=-1);if(_=O.getReverseChanges(),I[0]){let L=f[0]+1,y=F[0]+1;if(_!==null&&_.length>0){const k=_[_.length-1];L=Math.max(L,k.getOriginalEnd()),y=Math.max(y,k.getModifiedEnd())}P=[new ut(L,m-L+1,y,b-y+1)]}else{O=new Qs,V=a,R=o,N=f[0]-F[0]-l,z=1073741824,$=E?this.m_reverseHistory.length-1:this.m_reverseHistory.length-2;do{const L=N+s;L===V||L=d[L+1]?(u=d[L+1]-1,g=u-N-l,u>z&&O.MarkNextChange(),z=u+1,O.AddOriginalElement(u+1,g+1),N=L+1-s):(u=d[L-1],g=u-N-l,u>z&&O.MarkNextChange(),z=u,O.AddModifiedElement(u+1,g+1),N=L-1-s),$>=0&&(d=this.m_reverseHistory[$],s=d[0],V=1,R=d.length-1)}while(--$>=-1);P=O.getChanges()}return this.ConcatenateChanges(_,P)}ComputeRecursionPoint(e,n,r,i,s,a,o){let l=0,c=0,d=0,u=0,m=0,f=0;e--,r--,s[0]=0,a[0]=0,this.m_forwardHistory=[],this.m_reverseHistory=[];const g=n-e+(i-r),b=g+1,F=new Int32Array(b),E=new Int32Array(b),I=i-r,_=n-e,P=e-r,O=n-i,R=(_-I)%2===0;F[I]=e,E[_]=n,o[0]=!1;for(let N=1;N<=g/2+1;N++){let z=0,$=0;d=this.ClipDiagonalBound(I-N,N,I,b),u=this.ClipDiagonalBound(I+N,N,I,b);for(let y=d;y<=u;y+=2){y===d||yz+$&&(z=l,$=c),!R&&Math.abs(y-_)<=N-1&&l>=E[y])return s[0]=l,a[0]=c,k<=E[y]&&N<=1448?this.WALKTRACE(I,d,u,P,_,m,f,O,F,E,l,n,s,c,i,a,R,o):null}const L=(z-e+($-r)-N)/2;if(this.ContinueProcessingPredicate!==null&&!this.ContinueProcessingPredicate(z,L))return o[0]=!0,s[0]=z,a[0]=$,L>0&&N<=1448?this.WALKTRACE(I,d,u,P,_,m,f,O,F,E,l,n,s,c,i,a,R,o):(e++,r++,[new ut(e,n-e+1,r,i-r+1)]);m=this.ClipDiagonalBound(_-N,N,_,b),f=this.ClipDiagonalBound(_+N,N,_,b);for(let y=m;y<=f;y+=2){y===m||y=E[y+1]?l=E[y+1]-1:l=E[y-1],c=l-(y-_)-O;const k=l;for(;l>e&&c>r&&this.ElementsAreEqual(l,c);)l--,c--;if(E[y]=l,R&&Math.abs(y-I)<=N&&l<=F[y])return s[0]=l,a[0]=c,k>=F[y]&&N<=1448?this.WALKTRACE(I,d,u,P,_,m,f,O,F,E,l,n,s,c,i,a,R,o):null}if(N<=1447){let y=new Int32Array(u-d+2);y[0]=I-d+1,Tt.Copy2(F,d,y,1,u-d+1),this.m_forwardHistory.push(y),y=new Int32Array(f-m+2),y[0]=_-m+1,Tt.Copy2(E,m,y,1,f-m+1),this.m_reverseHistory.push(y)}}return this.WALKTRACE(I,d,u,P,_,m,f,O,F,E,l,n,s,c,i,a,R,o)}PrettifyChanges(e){for(let n=0;n0,o=r.modifiedLength>0;for(;r.originalStart+r.originalLength=0;n--){const r=e[n];let i=0,s=0;if(n>0){const u=e[n-1];i=u.originalStart+u.originalLength,s=u.modifiedStart+u.modifiedLength}const a=r.originalLength>0,o=r.modifiedLength>0;let l=0,c=this._boundaryScore(r.originalStart,r.originalLength,r.modifiedStart,r.modifiedLength);for(let u=1;;u++){const m=r.originalStart-u,f=r.modifiedStart-u;if(mc&&(c=b,l=u)}r.originalStart-=l,r.modifiedStart-=l;const d=[null];if(n>0&&this.ChangesOverlap(e[n-1],e[n],d)){e[n-1]=d[0],e.splice(n,1),n++;continue}}if(this._hasStrings)for(let n=1,r=e.length;n0&&f>l&&(l=f,c=u,d=m)}return l>0?[c,d]:null}_contiguousSequenceScore(e,n,r){let i=0;for(let s=0;s=this._originalElementsOrHash.length-1?!0:this._hasStrings&&/^\s*$/.test(this._originalStringElements[e])}_OriginalRegionIsBoundary(e,n){if(this._OriginalIsBoundary(e)||this._OriginalIsBoundary(e-1))return!0;if(n>0){const r=e+n;if(this._OriginalIsBoundary(r-1)||this._OriginalIsBoundary(r))return!0}return!1}_ModifiedIsBoundary(e){return e<=0||e>=this._modifiedElementsOrHash.length-1?!0:this._hasStrings&&/^\s*$/.test(this._modifiedStringElements[e])}_ModifiedRegionIsBoundary(e,n){if(this._ModifiedIsBoundary(e)||this._ModifiedIsBoundary(e-1))return!0;if(n>0){const r=e+n;if(this._ModifiedIsBoundary(r-1)||this._ModifiedIsBoundary(r))return!0}return!1}_boundaryScore(e,n,r,i){const s=this._OriginalRegionIsBoundary(e,n)?1:0,a=this._ModifiedRegionIsBoundary(r,i)?1:0;return s+a}ConcatenateChanges(e,n){const r=[];if(e.length===0||n.length===0)return n.length>0?n:e;if(this.ChangesOverlap(e[e.length-1],n[0],r)){const i=new Array(e.length+n.length-1);return Tt.Copy(e,0,i,0,e.length-1),i[e.length-1]=r[0],Tt.Copy(n,1,i,e.length,n.length-1),i}else{const i=new Array(e.length+n.length);return Tt.Copy(e,0,i,0,e.length),Tt.Copy(n,0,i,e.length,n.length),i}}ChangesOverlap(e,n,r){if(Pt.Assert(e.originalStart<=n.originalStart,"Left change is not less than or equal to right change"),Pt.Assert(e.modifiedStart<=n.modifiedStart,"Left change is not less than or equal to right change"),e.originalStart+e.originalLength>=n.originalStart||e.modifiedStart+e.modifiedLength>=n.modifiedStart){const i=e.originalStart;let s=e.originalLength;const a=e.modifiedStart;let o=e.modifiedLength;return e.originalStart+e.originalLength>=n.originalStart&&(s=n.originalStart+n.originalLength-e.originalStart),e.modifiedStart+e.modifiedLength>=n.modifiedStart&&(o=n.modifiedStart+n.modifiedLength-e.modifiedStart),r[0]=new ut(i,s,a,o),!0}else return r[0]=null,!1}ClipDiagonalBound(e,n,r,i){if(e>=0&&er||e===r&&n>i?(this.startLineNumber=r,this.startColumn=i,this.endLineNumber=e,this.endColumn=n):(this.startLineNumber=e,this.startColumn=n,this.endLineNumber=r,this.endColumn=i)}isEmpty(){return ue.isEmpty(this)}static isEmpty(e){return e.startLineNumber===e.endLineNumber&&e.startColumn===e.endColumn}containsPosition(e){return ue.containsPosition(this,e)}static containsPosition(e,n){return!(n.lineNumbere.endLineNumber||n.lineNumber===e.startLineNumber&&n.columne.endColumn)}static strictContainsPosition(e,n){return!(n.lineNumbere.endLineNumber||n.lineNumber===e.startLineNumber&&n.column<=e.startColumn||n.lineNumber===e.endLineNumber&&n.column>=e.endColumn)}containsRange(e){return ue.containsRange(this,e)}static containsRange(e,n){return!(n.startLineNumbere.endLineNumber||n.endLineNumber>e.endLineNumber||n.startLineNumber===e.startLineNumber&&n.startColumne.endColumn)}strictContainsRange(e){return ue.strictContainsRange(this,e)}static strictContainsRange(e,n){return!(n.startLineNumbere.endLineNumber||n.endLineNumber>e.endLineNumber||n.startLineNumber===e.startLineNumber&&n.startColumn<=e.startColumn||n.endLineNumber===e.endLineNumber&&n.endColumn>=e.endColumn)}plusRange(e){return ue.plusRange(this,e)}static plusRange(e,n){let r,i,s,a;return n.startLineNumbere.endLineNumber?(s=n.endLineNumber,a=n.endColumn):n.endLineNumber===e.endLineNumber?(s=n.endLineNumber,a=Math.max(n.endColumn,e.endColumn)):(s=e.endLineNumber,a=e.endColumn),new ue(r,i,s,a)}intersectRanges(e){return ue.intersectRanges(this,e)}static intersectRanges(e,n){let r=e.startLineNumber,i=e.startColumn,s=e.endLineNumber,a=e.endColumn;const o=n.startLineNumber,l=n.startColumn,c=n.endLineNumber,d=n.endColumn;return rc?(s=c,a=d):s===c&&(a=Math.min(a,d)),r>s||r===s&&i>a?null:new ue(r,i,s,a)}equalsRange(e){return ue.equalsRange(this,e)}static equalsRange(e,n){return!e&&!n?!0:!!e&&!!n&&e.startLineNumber===n.startLineNumber&&e.startColumn===n.startColumn&&e.endLineNumber===n.endLineNumber&&e.endColumn===n.endColumn}getEndPosition(){return ue.getEndPosition(this)}static getEndPosition(e){return new re(e.endLineNumber,e.endColumn)}getStartPosition(){return ue.getStartPosition(this)}static getStartPosition(e){return new re(e.startLineNumber,e.startColumn)}toString(){return"["+this.startLineNumber+","+this.startColumn+" -> "+this.endLineNumber+","+this.endColumn+"]"}setEndPosition(e,n){return new ue(this.startLineNumber,this.startColumn,e,n)}setStartPosition(e,n){return new ue(e,n,this.endLineNumber,this.endColumn)}collapseToStart(){return ue.collapseToStart(this)}static collapseToStart(e){return new ue(e.startLineNumber,e.startColumn,e.startLineNumber,e.startColumn)}collapseToEnd(){return ue.collapseToEnd(this)}static collapseToEnd(e){return new ue(e.endLineNumber,e.endColumn,e.endLineNumber,e.endColumn)}delta(e){return new ue(this.startLineNumber+e,this.startColumn,this.endLineNumber+e,this.endColumn)}isSingleLine(){return this.startLineNumber===this.endLineNumber}static fromPositions(e,n=e){return new ue(e.lineNumber,e.column,n.lineNumber,n.column)}static lift(e){return e?new ue(e.startLineNumber,e.startColumn,e.endLineNumber,e.endColumn):null}static isIRange(e){return!!e&&typeof e.startLineNumber=="number"&&typeof e.startColumn=="number"&&typeof e.endLineNumber=="number"&&typeof e.endColumn=="number"}static areIntersectingOrTouching(e,n){return!(e.endLineNumbere.startLineNumber}toJSON(){return this}};function Ks(t){return t<0?0:t>255?255:t|0}function Ot(t){return t<0?0:t>4294967295?4294967295:t|0}class ei{constructor(e){const n=Ks(e);this._defaultValue=n,this._asciiMap=ei._createAsciiMap(n),this._map=new Map}static _createAsciiMap(e){const n=new Uint8Array(256);return n.fill(e),n}set(e,n){const r=Ks(n);e>=0&&e<256?this._asciiMap[e]=r:this._map.set(e,r)}get(e){return e>=0&&e<256?this._asciiMap[e]:this._map.get(e)||this._defaultValue}clear(){this._asciiMap.fill(this._defaultValue),this._map.clear()}}class rd{constructor(e,n,r){const i=new Uint8Array(e*n);for(let s=0,a=e*n;sn&&(n=l),o>r&&(r=o),c>r&&(r=c)}n++,r++;const i=new rd(r,n,0);for(let s=0,a=e.length;s =this._maxCharCode?0:this._states.get(e,n)}}let ti=null;function sd(){return ti===null&&(ti=new id([[1,104,2],[1,72,2],[1,102,6],[1,70,6],[2,116,3],[2,84,3],[3,116,4],[3,84,4],[4,112,5],[4,80,5],[5,115,9],[5,83,9],[5,58,10],[6,105,7],[6,73,7],[7,108,8],[7,76,8],[8,101,9],[8,69,9],[9,58,10],[10,47,11],[11,47,12]])),ti}let bn=null;function ad(){if(bn===null){bn=new ei(0);const t=` <>'"、。。、,.:;‘〈「『〔([{「」}])〕』」〉’`~…|`;for(let n=0;ni);if(i>0){const o=n.charCodeAt(i-1),l=n.charCodeAt(a);(o===40&&l===41||o===91&&l===93||o===123&&l===125)&&a--}return{range:{startLineNumber:r,startColumn:i+1,endLineNumber:r,endColumn:a+2},url:n.substring(i,a+1)}}static computeLinks(e,n=sd()){const r=ad(),i=[];for(let s=1,a=e.getLineCount();s<=a;s++){const o=e.getLineContent(s),l=o.length;let c=0,d=0,u=0,m=1,f=!1,g=!1,b=!1,F=!1;for(;c=0?(i+=r?1:-1,i<0?i=e.length-1:i%=e.length,e[i]):null}};Pr.INSTANCE=new Pr;let ni=Pr;const Zs=Object.freeze(function(t,e){const n=setTimeout(t.bind(e),0);return{dispose(){clearTimeout(n)}}});var Qn;(function(t){function e(n){return n===t.None||n===t.Cancelled||n instanceof Kn?!0:!n||typeof n!="object"?!1:typeof n.isCancellationRequested=="boolean"&&typeof n.onCancellationRequested=="function"}t.isCancellationToken=e,t.None=Object.freeze({isCancellationRequested:!1,onCancellationRequested:Ur.None}),t.Cancelled=Object.freeze({isCancellationRequested:!0,onCancellationRequested:Zs})})(Qn||(Qn={}));class Kn{constructor(){this._isCancelled=!1,this._emitter=null}cancel(){this._isCancelled||(this._isCancelled=!0,this._emitter&&(this._emitter.fire(void 0),this.dispose()))}get isCancellationRequested(){return this._isCancelled}get onCancellationRequested(){return this._isCancelled?Zs:(this._emitter||(this._emitter=new Be),this._emitter.event)}dispose(){this._emitter&&(this._emitter.dispose(),this._emitter=null)}}class ld{constructor(e){this._token=void 0,this._parentListener=void 0,this._parentListener=e&&e.onCancellationRequested(this.cancel,this)}get token(){return this._token||(this._token=new Kn),this._token}cancel(){this._token?this._token instanceof Kn&&this._token.cancel():this._token=Qn.Cancelled}dispose(e=!1){var n;e&&this.cancel(),(n=this._parentListener)==null||n.dispose(),this._token?this._token instanceof Kn&&this._token.dispose():this._token=Qn.None}}class ri{constructor(){this._keyCodeToStr=[],this._strToKeyCode=Object.create(null)}define(e,n){this._keyCodeToStr[e]=n,this._strToKeyCode[n.toLowerCase()]=e}keyCodeToStr(e){return this._keyCodeToStr[e]}strToKeyCode(e){return this._strToKeyCode[e.toLowerCase()]||0}}const Zn=new ri,ii=new ri,si=new ri,cd=new Array(230),hd=Object.create(null),dd=Object.create(null);(function(){const t="",e=[[1,0,"None",0,"unknown",0,"VK_UNKNOWN",t,t],[1,1,"Hyper",0,t,0,t,t,t],[1,2,"Super",0,t,0,t,t,t],[1,3,"Fn",0,t,0,t,t,t],[1,4,"FnLock",0,t,0,t,t,t],[1,5,"Suspend",0,t,0,t,t,t],[1,6,"Resume",0,t,0,t,t,t],[1,7,"Turbo",0,t,0,t,t,t],[1,8,"Sleep",0,t,0,"VK_SLEEP",t,t],[1,9,"WakeUp",0,t,0,t,t,t],[0,10,"KeyA",31,"A",65,"VK_A",t,t],[0,11,"KeyB",32,"B",66,"VK_B",t,t],[0,12,"KeyC",33,"C",67,"VK_C",t,t],[0,13,"KeyD",34,"D",68,"VK_D",t,t],[0,14,"KeyE",35,"E",69,"VK_E",t,t],[0,15,"KeyF",36,"F",70,"VK_F",t,t],[0,16,"KeyG",37,"G",71,"VK_G",t,t],[0,17,"KeyH",38,"H",72,"VK_H",t,t],[0,18,"KeyI",39,"I",73,"VK_I",t,t],[0,19,"KeyJ",40,"J",74,"VK_J",t,t],[0,20,"KeyK",41,"K",75,"VK_K",t,t],[0,21,"KeyL",42,"L",76,"VK_L",t,t],[0,22,"KeyM",43,"M",77,"VK_M",t,t],[0,23,"KeyN",44,"N",78,"VK_N",t,t],[0,24,"KeyO",45,"O",79,"VK_O",t,t],[0,25,"KeyP",46,"P",80,"VK_P",t,t],[0,26,"KeyQ",47,"Q",81,"VK_Q",t,t],[0,27,"KeyR",48,"R",82,"VK_R",t,t],[0,28,"KeyS",49,"S",83,"VK_S",t,t],[0,29,"KeyT",50,"T",84,"VK_T",t,t],[0,30,"KeyU",51,"U",85,"VK_U",t,t],[0,31,"KeyV",52,"V",86,"VK_V",t,t],[0,32,"KeyW",53,"W",87,"VK_W",t,t],[0,33,"KeyX",54,"X",88,"VK_X",t,t],[0,34,"KeyY",55,"Y",89,"VK_Y",t,t],[0,35,"KeyZ",56,"Z",90,"VK_Z",t,t],[0,36,"Digit1",22,"1",49,"VK_1",t,t],[0,37,"Digit2",23,"2",50,"VK_2",t,t],[0,38,"Digit3",24,"3",51,"VK_3",t,t],[0,39,"Digit4",25,"4",52,"VK_4",t,t],[0,40,"Digit5",26,"5",53,"VK_5",t,t],[0,41,"Digit6",27,"6",54,"VK_6",t,t],[0,42,"Digit7",28,"7",55,"VK_7",t,t],[0,43,"Digit8",29,"8",56,"VK_8",t,t],[0,44,"Digit9",30,"9",57,"VK_9",t,t],[0,45,"Digit0",21,"0",48,"VK_0",t,t],[1,46,"Enter",3,"Enter",13,"VK_RETURN",t,t],[1,47,"Escape",9,"Escape",27,"VK_ESCAPE",t,t],[1,48,"Backspace",1,"Backspace",8,"VK_BACK",t,t],[1,49,"Tab",2,"Tab",9,"VK_TAB",t,t],[1,50,"Space",10,"Space",32,"VK_SPACE",t,t],[0,51,"Minus",88,"-",189,"VK_OEM_MINUS","-","OEM_MINUS"],[0,52,"Equal",86,"=",187,"VK_OEM_PLUS","=","OEM_PLUS"],[0,53,"BracketLeft",92,"[",219,"VK_OEM_4","[","OEM_4"],[0,54,"BracketRight",94,"]",221,"VK_OEM_6","]","OEM_6"],[0,55,"Backslash",93,"\\",220,"VK_OEM_5","\\","OEM_5"],[0,56,"IntlHash",0,t,0,t,t,t],[0,57,"Semicolon",85,";",186,"VK_OEM_1",";","OEM_1"],[0,58,"Quote",95,"'",222,"VK_OEM_7","'","OEM_7"],[0,59,"Backquote",91,"`",192,"VK_OEM_3","`","OEM_3"],[0,60,"Comma",87,",",188,"VK_OEM_COMMA",",","OEM_COMMA"],[0,61,"Period",89,".",190,"VK_OEM_PERIOD",".","OEM_PERIOD"],[0,62,"Slash",90,"/",191,"VK_OEM_2","/","OEM_2"],[1,63,"CapsLock",8,"CapsLock",20,"VK_CAPITAL",t,t],[1,64,"F1",59,"F1",112,"VK_F1",t,t],[1,65,"F2",60,"F2",113,"VK_F2",t,t],[1,66,"F3",61,"F3",114,"VK_F3",t,t],[1,67,"F4",62,"F4",115,"VK_F4",t,t],[1,68,"F5",63,"F5",116,"VK_F5",t,t],[1,69,"F6",64,"F6",117,"VK_F6",t,t],[1,70,"F7",65,"F7",118,"VK_F7",t,t],[1,71,"F8",66,"F8",119,"VK_F8",t,t],[1,72,"F9",67,"F9",120,"VK_F9",t,t],[1,73,"F10",68,"F10",121,"VK_F10",t,t],[1,74,"F11",69,"F11",122,"VK_F11",t,t],[1,75,"F12",70,"F12",123,"VK_F12",t,t],[1,76,"PrintScreen",0,t,0,t,t,t],[1,77,"ScrollLock",84,"ScrollLock",145,"VK_SCROLL",t,t],[1,78,"Pause",7,"PauseBreak",19,"VK_PAUSE",t,t],[1,79,"Insert",19,"Insert",45,"VK_INSERT",t,t],[1,80,"Home",14,"Home",36,"VK_HOME",t,t],[1,81,"PageUp",11,"PageUp",33,"VK_PRIOR",t,t],[1,82,"Delete",20,"Delete",46,"VK_DELETE",t,t],[1,83,"End",13,"End",35,"VK_END",t,t],[1,84,"PageDown",12,"PageDown",34,"VK_NEXT",t,t],[1,85,"ArrowRight",17,"RightArrow",39,"VK_RIGHT","Right",t],[1,86,"ArrowLeft",15,"LeftArrow",37,"VK_LEFT","Left",t],[1,87,"ArrowDown",18,"DownArrow",40,"VK_DOWN","Down",t],[1,88,"ArrowUp",16,"UpArrow",38,"VK_UP","Up",t],[1,89,"NumLock",83,"NumLock",144,"VK_NUMLOCK",t,t],[1,90,"NumpadDivide",113,"NumPad_Divide",111,"VK_DIVIDE",t,t],[1,91,"NumpadMultiply",108,"NumPad_Multiply",106,"VK_MULTIPLY",t,t],[1,92,"NumpadSubtract",111,"NumPad_Subtract",109,"VK_SUBTRACT",t,t],[1,93,"NumpadAdd",109,"NumPad_Add",107,"VK_ADD",t,t],[1,94,"NumpadEnter",3,t,0,t,t,t],[1,95,"Numpad1",99,"NumPad1",97,"VK_NUMPAD1",t,t],[1,96,"Numpad2",100,"NumPad2",98,"VK_NUMPAD2",t,t],[1,97,"Numpad3",101,"NumPad3",99,"VK_NUMPAD3",t,t],[1,98,"Numpad4",102,"NumPad4",100,"VK_NUMPAD4",t,t],[1,99,"Numpad5",103,"NumPad5",101,"VK_NUMPAD5",t,t],[1,100,"Numpad6",104,"NumPad6",102,"VK_NUMPAD6",t,t],[1,101,"Numpad7",105,"NumPad7",103,"VK_NUMPAD7",t,t],[1,102,"Numpad8",106,"NumPad8",104,"VK_NUMPAD8",t,t],[1,103,"Numpad9",107,"NumPad9",105,"VK_NUMPAD9",t,t],[1,104,"Numpad0",98,"NumPad0",96,"VK_NUMPAD0",t,t],[1,105,"NumpadDecimal",112,"NumPad_Decimal",110,"VK_DECIMAL",t,t],[0,106,"IntlBackslash",97,"OEM_102",226,"VK_OEM_102",t,t],[1,107,"ContextMenu",58,"ContextMenu",93,t,t,t],[1,108,"Power",0,t,0,t,t,t],[1,109,"NumpadEqual",0,t,0,t,t,t],[1,110,"F13",71,"F13",124,"VK_F13",t,t],[1,111,"F14",72,"F14",125,"VK_F14",t,t],[1,112,"F15",73,"F15",126,"VK_F15",t,t],[1,113,"F16",74,"F16",127,"VK_F16",t,t],[1,114,"F17",75,"F17",128,"VK_F17",t,t],[1,115,"F18",76,"F18",129,"VK_F18",t,t],[1,116,"F19",77,"F19",130,"VK_F19",t,t],[1,117,"F20",78,"F20",131,"VK_F20",t,t],[1,118,"F21",79,"F21",132,"VK_F21",t,t],[1,119,"F22",80,"F22",133,"VK_F22",t,t],[1,120,"F23",81,"F23",134,"VK_F23",t,t],[1,121,"F24",82,"F24",135,"VK_F24",t,t],[1,122,"Open",0,t,0,t,t,t],[1,123,"Help",0,t,0,t,t,t],[1,124,"Select",0,t,0,t,t,t],[1,125,"Again",0,t,0,t,t,t],[1,126,"Undo",0,t,0,t,t,t],[1,127,"Cut",0,t,0,t,t,t],[1,128,"Copy",0,t,0,t,t,t],[1,129,"Paste",0,t,0,t,t,t],[1,130,"Find",0,t,0,t,t,t],[1,131,"AudioVolumeMute",117,"AudioVolumeMute",173,"VK_VOLUME_MUTE",t,t],[1,132,"AudioVolumeUp",118,"AudioVolumeUp",175,"VK_VOLUME_UP",t,t],[1,133,"AudioVolumeDown",119,"AudioVolumeDown",174,"VK_VOLUME_DOWN",t,t],[1,134,"NumpadComma",110,"NumPad_Separator",108,"VK_SEPARATOR",t,t],[0,135,"IntlRo",115,"ABNT_C1",193,"VK_ABNT_C1",t,t],[1,136,"KanaMode",0,t,0,t,t,t],[0,137,"IntlYen",0,t,0,t,t,t],[1,138,"Convert",0,t,0,t,t,t],[1,139,"NonConvert",0,t,0,t,t,t],[1,140,"Lang1",0,t,0,t,t,t],[1,141,"Lang2",0,t,0,t,t,t],[1,142,"Lang3",0,t,0,t,t,t],[1,143,"Lang4",0,t,0,t,t,t],[1,144,"Lang5",0,t,0,t,t,t],[1,145,"Abort",0,t,0,t,t,t],[1,146,"Props",0,t,0,t,t,t],[1,147,"NumpadParenLeft",0,t,0,t,t,t],[1,148,"NumpadParenRight",0,t,0,t,t,t],[1,149,"NumpadBackspace",0,t,0,t,t,t],[1,150,"NumpadMemoryStore",0,t,0,t,t,t],[1,151,"NumpadMemoryRecall",0,t,0,t,t,t],[1,152,"NumpadMemoryClear",0,t,0,t,t,t],[1,153,"NumpadMemoryAdd",0,t,0,t,t,t],[1,154,"NumpadMemorySubtract",0,t,0,t,t,t],[1,155,"NumpadClear",131,"Clear",12,"VK_CLEAR",t,t],[1,156,"NumpadClearEntry",0,t,0,t,t,t],[1,0,t,5,"Ctrl",17,"VK_CONTROL",t,t],[1,0,t,4,"Shift",16,"VK_SHIFT",t,t],[1,0,t,6,"Alt",18,"VK_MENU",t,t],[1,0,t,57,"Meta",91,"VK_COMMAND",t,t],[1,157,"ControlLeft",5,t,0,"VK_LCONTROL",t,t],[1,158,"ShiftLeft",4,t,0,"VK_LSHIFT",t,t],[1,159,"AltLeft",6,t,0,"VK_LMENU",t,t],[1,160,"MetaLeft",57,t,0,"VK_LWIN",t,t],[1,161,"ControlRight",5,t,0,"VK_RCONTROL",t,t],[1,162,"ShiftRight",4,t,0,"VK_RSHIFT",t,t],[1,163,"AltRight",6,t,0,"VK_RMENU",t,t],[1,164,"MetaRight",57,t,0,"VK_RWIN",t,t],[1,165,"BrightnessUp",0,t,0,t,t,t],[1,166,"BrightnessDown",0,t,0,t,t,t],[1,167,"MediaPlay",0,t,0,t,t,t],[1,168,"MediaRecord",0,t,0,t,t,t],[1,169,"MediaFastForward",0,t,0,t,t,t],[1,170,"MediaRewind",0,t,0,t,t,t],[1,171,"MediaTrackNext",124,"MediaTrackNext",176,"VK_MEDIA_NEXT_TRACK",t,t],[1,172,"MediaTrackPrevious",125,"MediaTrackPrevious",177,"VK_MEDIA_PREV_TRACK",t,t],[1,173,"MediaStop",126,"MediaStop",178,"VK_MEDIA_STOP",t,t],[1,174,"Eject",0,t,0,t,t,t],[1,175,"MediaPlayPause",127,"MediaPlayPause",179,"VK_MEDIA_PLAY_PAUSE",t,t],[1,176,"MediaSelect",128,"LaunchMediaPlayer",181,"VK_MEDIA_LAUNCH_MEDIA_SELECT",t,t],[1,177,"LaunchMail",129,"LaunchMail",180,"VK_MEDIA_LAUNCH_MAIL",t,t],[1,178,"LaunchApp2",130,"LaunchApp2",183,"VK_MEDIA_LAUNCH_APP2",t,t],[1,179,"LaunchApp1",0,t,0,"VK_MEDIA_LAUNCH_APP1",t,t],[1,180,"SelectTask",0,t,0,t,t,t],[1,181,"LaunchScreenSaver",0,t,0,t,t,t],[1,182,"BrowserSearch",120,"BrowserSearch",170,"VK_BROWSER_SEARCH",t,t],[1,183,"BrowserHome",121,"BrowserHome",172,"VK_BROWSER_HOME",t,t],[1,184,"BrowserBack",122,"BrowserBack",166,"VK_BROWSER_BACK",t,t],[1,185,"BrowserForward",123,"BrowserForward",167,"VK_BROWSER_FORWARD",t,t],[1,186,"BrowserStop",0,t,0,"VK_BROWSER_STOP",t,t],[1,187,"BrowserRefresh",0,t,0,"VK_BROWSER_REFRESH",t,t],[1,188,"BrowserFavorites",0,t,0,"VK_BROWSER_FAVORITES",t,t],[1,189,"ZoomToggle",0,t,0,t,t,t],[1,190,"MailReply",0,t,0,t,t,t],[1,191,"MailForward",0,t,0,t,t,t],[1,192,"MailSend",0,t,0,t,t,t],[1,0,t,114,"KeyInComposition",229,t,t,t],[1,0,t,116,"ABNT_C2",194,"VK_ABNT_C2",t,t],[1,0,t,96,"OEM_8",223,"VK_OEM_8",t,t],[1,0,t,0,t,0,"VK_KANA",t,t],[1,0,t,0,t,0,"VK_HANGUL",t,t],[1,0,t,0,t,0,"VK_JUNJA",t,t],[1,0,t,0,t,0,"VK_FINAL",t,t],[1,0,t,0,t,0,"VK_HANJA",t,t],[1,0,t,0,t,0,"VK_KANJI",t,t],[1,0,t,0,t,0,"VK_CONVERT",t,t],[1,0,t,0,t,0,"VK_NONCONVERT",t,t],[1,0,t,0,t,0,"VK_ACCEPT",t,t],[1,0,t,0,t,0,"VK_MODECHANGE",t,t],[1,0,t,0,t,0,"VK_SELECT",t,t],[1,0,t,0,t,0,"VK_PRINT",t,t],[1,0,t,0,t,0,"VK_EXECUTE",t,t],[1,0,t,0,t,0,"VK_SNAPSHOT",t,t],[1,0,t,0,t,0,"VK_HELP",t,t],[1,0,t,0,t,0,"VK_APPS",t,t],[1,0,t,0,t,0,"VK_PROCESSKEY",t,t],[1,0,t,0,t,0,"VK_PACKET",t,t],[1,0,t,0,t,0,"VK_DBE_SBCSCHAR",t,t],[1,0,t,0,t,0,"VK_DBE_DBCSCHAR",t,t],[1,0,t,0,t,0,"VK_ATTN",t,t],[1,0,t,0,t,0,"VK_CRSEL",t,t],[1,0,t,0,t,0,"VK_EXSEL",t,t],[1,0,t,0,t,0,"VK_EREOF",t,t],[1,0,t,0,t,0,"VK_PLAY",t,t],[1,0,t,0,t,0,"VK_ZOOM",t,t],[1,0,t,0,t,0,"VK_NONAME",t,t],[1,0,t,0,t,0,"VK_PA1",t,t],[1,0,t,0,t,0,"VK_OEM_CLEAR",t,t]],n=[],r=[];for(const i of e){const[s,a,o,l,c,d,u,m,f]=i;if(r[a]||(r[a]=!0,hd[o]=a,dd[o.toLowerCase()]=a),!n[l]){if(n[l]=!0,!c)throw new Error(`String representation missing for key code ${l} around scan code ${o}`);Zn.define(l,c),ii.define(l,m||c),si.define(l,f||m||c)}d&&(cd[d]=l)}})();var ea;(function(t){function e(o){return Zn.keyCodeToStr(o)}t.toString=e;function n(o){return Zn.strToKeyCode(o)}t.fromString=n;function r(o){return ii.keyCodeToStr(o)}t.toUserSettingsUS=r;function i(o){return si.keyCodeToStr(o)}t.toUserSettingsGeneral=i;function s(o){return ii.strToKeyCode(o)||si.strToKeyCode(o)}t.fromUserSettings=s;function a(o){if(o>=98&&o<=113)return null;switch(o){case 16:return"Up";case 18:return"Down";case 15:return"Left";case 17:return"Right"}return Zn.keyCodeToStr(o)}t.toElectronAccelerator=a})(ea||(ea={}));function ud(t,e){const n=(e&65535)<<16>>>0;return(t|n)>>>0}var ta={};let Wt;const ai=globalThis.vscode;if(typeof ai<"u"&&typeof ai.process<"u"){const t=ai.process;Wt={get platform(){return t.platform},get arch(){return t.arch},get env(){return t.env},cwd(){return t.cwd()}}}else typeof process<"u"&&typeof((hh=process==null?void 0:process.versions)==null?void 0:hh.node)=="string"?Wt={get platform(){return process.platform},get arch(){return process.arch},get env(){return ta},cwd(){return ta.VSCODE_CWD||process.cwd()}}:Wt={get platform(){return mn?"win32":Ih?"darwin":"linux"},get arch(){},get env(){return{}},cwd(){return"/"}};const er=Wt.cwd,pd=Wt.env,md=Wt.platform,fd=65,gd=97,bd=90,wd=122,_t=46,ge=47,_e=92,Ze=58,vd=63;class na extends Error{constructor(e,n,r){let i;typeof n=="string"&&n.indexOf("not ")===0?(i="must not be",n=n.replace(/^not /,"")):i="must be";const s=e.indexOf(".")!==-1?"property":"argument";let a=`The "${e}" ${s} ${i} of type ${n}`;a+=`. Received type ${typeof r}`,super(a),this.code="ERR_INVALID_ARG_TYPE"}}function yd(t,e){if(t===null||typeof t!="object")throw new na(e,"Object",t)}function he(t,e){if(typeof t!="string")throw new na(e,"string",t)}const mt=md==="win32";function X(t){return t===ge||t===_e}function oi(t){return t===ge}function et(t){return t>=fd&&t<=bd||t>=gd&&t<=wd}function tr(t,e,n,r){let i="",s=0,a=-1,o=0,l=0;for(let c=0;c<=t.length;++c){if(c2){const d=i.lastIndexOf(n);d===-1?(i="",s=0):(i=i.slice(0,d),s=i.length-1-i.lastIndexOf(n)),a=c,o=0;continue}else if(i.length!==0){i="",s=0,a=c,o=0;continue}}e&&(i+=i.length>0?`${n}..`:"..",s=2)}else i.length>0?i+=`${n}${t.slice(a+1,c)}`:i=t.slice(a+1,c),s=c-a-1;a=c,o=0}else l===_t&&o!==-1?++o:o=-1}return i}function xd(t){return t?`${t[0]==="."?"":"."}${t}`:""}function ra(t,e){yd(e,"pathObject");const n=e.dir||e.root,r=e.base||`${e.name||""}${xd(e.ext)}`;return n?n===e.root?`${n}${r}`:`${n}${t}${r}`:r}const Ce={resolve(...t){let e="",n="",r=!1;for(let i=t.length-1;i>=-1;i--){let s;if(i>=0){if(s=t[i],he(s,`paths[${i}]`),s.length===0)continue}else e.length===0?s=er():(s=pd[`=${e}`]||er(),(s===void 0||s.slice(0,2).toLowerCase()!==e.toLowerCase()&&s.charCodeAt(2)===_e)&&(s=`${e}\\`));const a=s.length;let o=0,l="",c=!1;const d=s.charCodeAt(0);if(a===1)X(d)&&(o=1,c=!0);else if(X(d))if(c=!0,X(s.charCodeAt(1))){let u=2,m=u;for(;u2&&X(s.charCodeAt(2))&&(c=!0,o=3));if(l.length>0)if(e.length>0){if(l.toLowerCase()!==e.toLowerCase())continue}else e=l;if(r){if(e.length>0)break}else if(n=`${s.slice(o)}\\${n}`,r=c,c&&e.length>0)break}return n=tr(n,!r,"\\",X),r?`${e}\\${n}`:`${e}${n}`||"."},normalize(t){he(t,"path");const e=t.length;if(e===0)return".";let n=0,r,i=!1;const s=t.charCodeAt(0);if(e===1)return oi(s)?"\\":t;if(X(s))if(i=!0,X(t.charCodeAt(1))){let o=2,l=o;for(;o2&&X(t.charCodeAt(2))&&(i=!0,n=3));let a=n0&&X(t.charCodeAt(e-1))&&(a+="\\"),!i&&r===void 0&&t.includes(":")){if(a.length>=2&&et(a.charCodeAt(0))&&a.charCodeAt(1)===Ze)return`.\\${a}`;let o=t.indexOf(":");do if(o===e-1||X(t.charCodeAt(o+1)))return`.\\${a}`;while((o=t.indexOf(":",o+1))!==-1)}return r===void 0?i?`\\${a}`:a:i?`${r}\\${a}`:`${r}${a}`},isAbsolute(t){he(t,"path");const e=t.length;if(e===0)return!1;const n=t.charCodeAt(0);return X(n)||e>2&&et(n)&&t.charCodeAt(1)===Ze&&X(t.charCodeAt(2))},join(...t){if(t.length===0)return".";let e,n;for(let s=0;s0&&(e===void 0?e=n=a:e+=`\\${a}`)}if(e===void 0)return".";let r=!0,i=0;if(typeof n=="string"&&X(n.charCodeAt(0))){++i;const s=n.length;s>1&&X(n.charCodeAt(1))&&(++i,s>2&&(X(n.charCodeAt(2))?++i:r=!1))}if(r){for(;i=2&&(e=`\\${e.slice(i)}`)}return Ce.normalize(e)},relative(t,e){if(he(t,"from"),he(e,"to"),t===e)return"";const n=Ce.resolve(t),r=Ce.resolve(e);if(n===r||(t=n.toLowerCase(),e=r.toLowerCase(),t===e))return"";if(n.length!==t.length||r.length!==e.length){const g=n.split("\\"),b=r.split("\\");g[g.length-1]===""&&g.pop(),b[b.length-1]===""&&b.pop();const F=g.length,E=b.length,I=FI?b.slice(_).join("\\"):F>I?"..\\".repeat(F-1-_)+"..":"":"..\\".repeat(F-_)+b.slice(_).join("\\")}let i=0;for(;ii&&t.charCodeAt(s-1)===_e;)s--;const a=s-i;let o=0;for(;oo&&e.charCodeAt(l-1)===_e;)l--;const c=l-o,d=ad){if(e.charCodeAt(o+m)===_e)return r.slice(o+m+1);if(m===2)return r.slice(o+m)}a>d&&(t.charCodeAt(i+m)===_e?u=m:m===2&&(u=3)),u===-1&&(u=0)}let f="";for(m=i+u+1;m<=s;++m)(m===s||t.charCodeAt(m)===_e)&&(f+=f.length===0?"..":"\\..");return o+=u,f.length>0?`${f}${r.slice(o,l)}`:(r.charCodeAt(o)===_e&&++o,r.slice(o,l))},toNamespacedPath(t){if(typeof t!="string"||t.length===0)return t;const e=Ce.resolve(t);if(e.length<=2)return t;if(e.charCodeAt(0)===_e){if(e.charCodeAt(1)===_e){const n=e.charCodeAt(2);if(n!==vd&&n!==_t)return`\\\\?\\UNC\\${e.slice(2)}`}}else if(et(e.charCodeAt(0))&&e.charCodeAt(1)===Ze&&e.charCodeAt(2)===_e)return`\\\\?\\${e}`;return e},dirname(t){he(t,"path");const e=t.length;if(e===0)return".";let n=-1,r=0;const i=t.charCodeAt(0);if(e===1)return X(i)?t:".";if(X(i)){if(n=r=1,X(t.charCodeAt(1))){let o=2,l=o;for(;o2&&X(t.charCodeAt(2))?3:2,r=n);let s=-1,a=!0;for(let o=e-1;o>=r;--o)if(X(t.charCodeAt(o))){if(!a){s=o;break}}else a=!1;if(s===-1){if(n===-1)return".";s=n}return t.slice(0,s)},basename(t,e){e!==void 0&&he(e,"suffix"),he(t,"path");let n=0,r=-1,i=!0,s;if(t.length>=2&&et(t.charCodeAt(0))&&t.charCodeAt(1)===Ze&&(n=2),e!==void 0&&e.length>0&&e.length<=t.length){if(e===t)return"";let a=e.length-1,o=-1;for(s=t.length-1;s>=n;--s){const l=t.charCodeAt(s);if(X(l)){if(!i){n=s+1;break}}else o===-1&&(i=!1,o=s+1),a>=0&&(l===e.charCodeAt(a)?--a===-1&&(r=s):(a=-1,r=o))}return n===r?r=o:r===-1&&(r=t.length),t.slice(n,r)}for(s=t.length-1;s>=n;--s)if(X(t.charCodeAt(s))){if(!i){n=s+1;break}}else r===-1&&(i=!1,r=s+1);return r===-1?"":t.slice(n,r)},extname(t){he(t,"path");let e=0,n=-1,r=0,i=-1,s=!0,a=0;t.length>=2&&t.charCodeAt(1)===Ze&&et(t.charCodeAt(0))&&(e=r=2);for(let o=t.length-1;o>=e;--o){const l=t.charCodeAt(o);if(X(l)){if(!s){r=o+1;break}continue}i===-1&&(s=!1,i=o+1),l===_t?n===-1?n=o:a!==1&&(a=1):n!==-1&&(a=-1)}return n===-1||i===-1||a===0||a===1&&n===i-1&&n===r+1?"":t.slice(n,i)},format:ra.bind(null,"\\"),parse(t){he(t,"path");const e={root:"",dir:"",base:"",ext:"",name:""};if(t.length===0)return e;const n=t.length;let r=0,i=t.charCodeAt(0);if(n===1)return X(i)?(e.root=e.dir=t,e):(e.base=e.name=t,e);if(X(i)){if(r=1,X(t.charCodeAt(1))){let u=2,m=u;for(;u0&&(e.root=t.slice(0,r));let s=-1,a=r,o=-1,l=!0,c=t.length-1,d=0;for(;c>=r;--c){if(i=t.charCodeAt(c),X(i)){if(!l){a=c+1;break}continue}o===-1&&(l=!1,o=c+1),i===_t?s===-1?s=c:d!==1&&(d=1):s!==-1&&(d=-1)}return o!==-1&&(s===-1||d===0||d===1&&s===o-1&&s===a+1?e.base=e.name=t.slice(a,o):(e.name=t.slice(a,s),e.base=t.slice(a,o),e.ext=t.slice(s,o))),a>0&&a!==r?e.dir=t.slice(0,a-1):e.dir=e.root,e},sep:"\\",delimiter:";",win32:null,posix:null},Sd=(()=>{if(mt){const t=/\\/g;return()=>{const e=er().replace(t,"/");return e.slice(e.indexOf("/"))}}return()=>er()})(),Ee={resolve(...t){let e="",n=!1;for(let r=t.length-1;r>=0&&!n;r--){const i=t[r];he(i,`paths[${r}]`),i.length!==0&&(e=`${i}/${e}`,n=i.charCodeAt(0)===ge)}if(!n){const r=Sd();e=`${r}/${e}`,n=r.charCodeAt(0)===ge}return e=tr(e,!n,"/",oi),n?`/${e}`:e.length>0?e:"."},normalize(t){if(he(t,"path"),t.length===0)return".";const e=t.charCodeAt(0)===ge,n=t.charCodeAt(t.length-1)===ge;return t=tr(t,!e,"/",oi),t.length===0?e?"/":n?"./":".":(n&&(t+="/"),e?`/${t}`:t)},isAbsolute(t){return he(t,"path"),t.length>0&&t.charCodeAt(0)===ge},join(...t){if(t.length===0)return".";const e=[];for(let n=0;n0&&e.push(r)}return e.length===0?".":Ee.normalize(e.join("/"))},relative(t,e){if(he(t,"from"),he(e,"to"),t===e||(t=Ee.resolve(t),e=Ee.resolve(e),t===e))return"";const n=1,r=t.length,i=r-n,s=1,a=e.length-s,o=io){if(e.charCodeAt(s+c)===ge)return e.slice(s+c+1);if(c===0)return e.slice(s+c)}else i>o&&(t.charCodeAt(n+c)===ge?l=c:c===0&&(l=0));let d="";for(c=n+l+1;c<=r;++c)(c===r||t.charCodeAt(c)===ge)&&(d+=d.length===0?"..":"/..");return`${d}${e.slice(s+l)}`},toNamespacedPath(t){return t},dirname(t){if(he(t,"path"),t.length===0)return".";const e=t.charCodeAt(0)===ge;let n=-1,r=!0;for(let i=t.length-1;i>=1;--i)if(t.charCodeAt(i)===ge){if(!r){n=i;break}}else r=!1;return n===-1?e?"/":".":e&&n===1?"//":t.slice(0,n)},basename(t,e){e!==void 0&&he(e,"suffix"),he(t,"path");let n=0,r=-1,i=!0,s;if(e!==void 0&&e.length>0&&e.length<=t.length){if(e===t)return"";let a=e.length-1,o=-1;for(s=t.length-1;s>=0;--s){const l=t.charCodeAt(s);if(l===ge){if(!i){n=s+1;break}}else o===-1&&(i=!1,o=s+1),a>=0&&(l===e.charCodeAt(a)?--a===-1&&(r=s):(a=-1,r=o))}return n===r?r=o:r===-1&&(r=t.length),t.slice(n,r)}for(s=t.length-1;s>=0;--s)if(t.charCodeAt(s)===ge){if(!i){n=s+1;break}}else r===-1&&(i=!1,r=s+1);return r===-1?"":t.slice(n,r)},extname(t){he(t,"path");let e=-1,n=0,r=-1,i=!0,s=0;for(let a=t.length-1;a>=0;--a){const o=t[a];if(o==="/"){if(!i){n=a+1;break}continue}r===-1&&(i=!1,r=a+1),o==="."?e===-1?e=a:s!==1&&(s=1):e!==-1&&(s=-1)}return e===-1||r===-1||s===0||s===1&&e===r-1&&e===n+1?"":t.slice(e,r)},format:ra.bind(null,"/"),parse(t){he(t,"path");const e={root:"",dir:"",base:"",ext:"",name:""};if(t.length===0)return e;const n=t.charCodeAt(0)===ge;let r;n?(e.root="/",r=1):r=0;let i=-1,s=0,a=-1,o=!0,l=t.length-1,c=0;for(;l>=r;--l){const d=t.charCodeAt(l);if(d===ge){if(!o){s=l+1;break}continue}a===-1&&(o=!1,a=l+1),d===_t?i===-1?i=l:c!==1&&(c=1):i!==-1&&(c=-1)}if(a!==-1){const d=s===0&&n?1:s;i===-1||c===0||c===1&&i===a-1&&i===s+1?e.base=e.name=t.slice(d,a):(e.name=t.slice(d,i),e.base=t.slice(d,a),e.ext=t.slice(i,a))}return s>0?e.dir=t.slice(0,s-1):n&&(e.dir="/"),e},sep:"/",delimiter:":",win32:null,posix:null};Ee.win32=Ce.win32=Ce,Ee.posix=Ce.posix=Ee,mt?Ce.normalize:Ee.normalize,mt?Ce.resolve:Ee.resolve,mt?Ce.relative:Ee.relative,mt?Ce.dirname:Ee.dirname,mt?Ce.basename:Ee.basename,mt?Ce.extname:Ee.extname,mt?Ce.sep:Ee.sep;const Cd=/^\w[\w\d+.-]*$/,kd=/^\//,_d=/^\/\//;function Ed(t,e){if(!t.scheme&&e)throw new Error(`[UriError]: Scheme is missing: {scheme: "", authority: "${t.authority}", path: "${t.path}", query: "${t.query}", fragment: "${t.fragment}"}`);if(t.scheme&&!Cd.test(t.scheme))throw new Error("[UriError]: Scheme contains illegal characters.");if(t.path){if(t.authority){if(!kd.test(t.path))throw new Error('[UriError]: If a URI contains an authority component, then the path component must either be empty or begin with a slash ("/") character')}else if(_d.test(t.path))throw new Error('[UriError]: If a URI does not contain an authority component, then the path cannot begin with two slash characters ("//")')}}function Fd(t,e){return!t&&!e?"file":t}function Rd(t,e){switch(t){case"https":case"http":case"file":e?e[0]!==Ve&&(e=Ve+e):e=Ve;break}return e}const se="",Ve="/",Nd=/^(([^:/?#]+?):)?(\/\/([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?/;let li=class Wr{static isUri(e){return e instanceof Wr?!0:!e||typeof e!="object"?!1:typeof e.authority=="string"&&typeof e.fragment=="string"&&typeof e.path=="string"&&typeof e.query=="string"&&typeof e.scheme=="string"&&typeof e.fsPath=="string"&&typeof e.with=="function"&&typeof e.toString=="function"}constructor(e,n,r,i,s,a=!1){typeof e=="object"?(this.scheme=e.scheme||se,this.authority=e.authority||se,this.path=e.path||se,this.query=e.query||se,this.fragment=e.fragment||se):(this.scheme=Fd(e,a),this.authority=n||se,this.path=Rd(this.scheme,r||se),this.query=i||se,this.fragment=s||se,Ed(this,a))}get fsPath(){return ci(this,!1)}with(e){if(!e)return this;let{scheme:n,authority:r,path:i,query:s,fragment:a}=e;return n===void 0?n=this.scheme:n===null&&(n=se),r===void 0?r=this.authority:r===null&&(r=se),i===void 0?i=this.path:i===null&&(i=se),s===void 0?s=this.query:s===null&&(s=se),a===void 0?a=this.fragment:a===null&&(a=se),n===this.scheme&&r===this.authority&&i===this.path&&s===this.query&&a===this.fragment?this:new Vt(n,r,i,s,a)}static parse(e,n=!1){const r=Nd.exec(e);return r?new Vt(r[2]||se,nr(r[4]||se),nr(r[5]||se),nr(r[7]||se),nr(r[9]||se),n):new Vt(se,se,se,se,se)}static file(e){let n=se;if(mn&&(e=e.replace(/\\/g,Ve)),e[0]===Ve&&e[1]===Ve){const r=e.indexOf(Ve,2);r===-1?(n=e.substring(2),e=Ve):(n=e.substring(2,r),e=e.substring(r)||Ve)}return new Vt("file",n,e,se,se)}static from(e,n){return new Vt(e.scheme,e.authority,e.path,e.query,e.fragment,n)}static joinPath(e,...n){if(!e.path)throw new Error("[UriError]: cannot call joinPath on URI without path");let r;return mn&&e.scheme==="file"?r=Wr.file(Ce.join(ci(e,!0),...n)).path:r=Ee.join(e.path,...n),e.with({path:r})}toString(e=!1){return hi(this,e)}toJSON(){return this}static revive(e){if(e){if(e instanceof Wr)return e;{const n=new Vt(e);return n._formatted=e.external??null,n._fsPath=e._sep===ia?e.fsPath??null:null,n}}else return e}};const ia=mn?1:void 0;class Vt extends li{constructor(){super(...arguments),this._formatted=null,this._fsPath=null}get fsPath(){return this._fsPath||(this._fsPath=ci(this,!1)),this._fsPath}toString(e=!1){return e?hi(this,!0):(this._formatted||(this._formatted=hi(this,!1)),this._formatted)}toJSON(){const e={$mid:1};return this._fsPath&&(e.fsPath=this._fsPath,e._sep=ia),this._formatted&&(e.external=this._formatted),this.path&&(e.path=this.path),this.scheme&&(e.scheme=this.scheme),this.authority&&(e.authority=this.authority),this.query&&(e.query=this.query),this.fragment&&(e.fragment=this.fragment),e}}const sa={58:"%3A",47:"%2F",63:"%3F",35:"%23",91:"%5B",93:"%5D",64:"%40",33:"%21",36:"%24",38:"%26",39:"%27",40:"%28",41:"%29",42:"%2A",43:"%2B",44:"%2C",59:"%3B",61:"%3D",32:"%20"};function aa(t,e,n){let r,i=-1;for(let s=0;s=97&&a<=122||a>=65&&a<=90||a>=48&&a<=57||a===45||a===46||a===95||a===126||e&&a===47||n&&a===91||n&&a===93||n&&a===58)i!==-1&&(r+=encodeURIComponent(t.substring(i,s)),i=-1),r!==void 0&&(r+=t.charAt(s));else{r===void 0&&(r=t.substr(0,s));const o=sa[a];o!==void 0?(i!==-1&&(r+=encodeURIComponent(t.substring(i,s)),i=-1),r+=o):i===-1&&(i=s)}}return i!==-1&&(r+=encodeURIComponent(t.substring(i))),r!==void 0?r:t}function Id(t){let e;for(let n=0;n1&&t.scheme==="file"?n=`//${t.authority}${t.path}`:t.path.charCodeAt(0)===47&&(t.path.charCodeAt(1)>=65&&t.path.charCodeAt(1)<=90||t.path.charCodeAt(1)>=97&&t.path.charCodeAt(1)<=122)&&t.path.charCodeAt(2)===58?e?n=t.path.substr(1):n=t.path[1].toLowerCase()+t.path.substr(2):n=t.path,mn&&(n=n.replace(/\//g,"\\")),n}function hi(t,e){const n=e?Id:aa;let r="",{scheme:i,authority:s,path:a,query:o,fragment:l}=t;if(i&&(r+=i,r+=":"),(s||i==="file")&&(r+=Ve,r+=Ve),s){let c=s.indexOf("@");if(c!==-1){const d=s.substr(0,c);s=s.substr(c+1),c=d.lastIndexOf(":"),c===-1?r+=n(d,!1,!1):(r+=n(d.substr(0,c),!1,!1),r+=":",r+=n(d.substr(c+1),!1,!0)),r+="@"}s=s.toLowerCase(),c=s.lastIndexOf(":"),c===-1?r+=n(s,!1,!0):(r+=n(s.substr(0,c),!1,!0),r+=s.substr(c))}if(a){if(a.length>=3&&a.charCodeAt(0)===47&&a.charCodeAt(2)===58){const c=a.charCodeAt(1);c>=65&&c<=90&&(a=`/${String.fromCharCode(c+32)}:${a.substr(3)}`)}else if(a.length>=2&&a.charCodeAt(1)===58){const c=a.charCodeAt(0);c>=65&&c<=90&&(a=`${String.fromCharCode(c+32)}:${a.substr(2)}`)}r+=n(a,!0,!1)}return o&&(r+="?",r+=n(o,!1,!1)),l&&(r+="#",r+=e?l:aa(l,!1,!1)),r}function oa(t){try{return decodeURIComponent(t)}catch{return t.length>3?t.substr(0,3)+oa(t.substr(3)):t}}const la=/(%[0-9A-Za-z][0-9A-Za-z])+/g;function nr(t){return t.match(la)?t.replace(la,e=>oa(e)):t}class Re extends J{constructor(e,n,r,i){super(e,n,r,i),this.selectionStartLineNumber=e,this.selectionStartColumn=n,this.positionLineNumber=r,this.positionColumn=i}toString(){return"["+this.selectionStartLineNumber+","+this.selectionStartColumn+" -> "+this.positionLineNumber+","+this.positionColumn+"]"}equalsSelection(e){return Re.selectionsEqual(this,e)}static selectionsEqual(e,n){return e.selectionStartLineNumber===n.selectionStartLineNumber&&e.selectionStartColumn===n.selectionStartColumn&&e.positionLineNumber===n.positionLineNumber&&e.positionColumn===n.positionColumn}getDirection(){return this.selectionStartLineNumber===this.startLineNumber&&this.selectionStartColumn===this.startColumn?0:1}setEndPosition(e,n){return this.getDirection()===0?new Re(this.startLineNumber,this.startColumn,e,n):new Re(e,n,this.startLineNumber,this.startColumn)}getPosition(){return new re(this.positionLineNumber,this.positionColumn)}getSelectionStart(){return new re(this.selectionStartLineNumber,this.selectionStartColumn)}setStartPosition(e,n){return this.getDirection()===0?new Re(e,n,this.endLineNumber,this.endColumn):new Re(this.endLineNumber,this.endColumn,e,n)}static fromPositions(e,n=e){return new Re(e.lineNumber,e.column,n.lineNumber,n.column)}static fromRange(e,n){return n===0?new Re(e.startLineNumber,e.startColumn,e.endLineNumber,e.endColumn):new Re(e.endLineNumber,e.endColumn,e.startLineNumber,e.startColumn)}static liftSelection(e){return new Re(e.selectionStartLineNumber,e.selectionStartColumn,e.positionLineNumber,e.positionColumn)}static selectionsArrEqual(e,n){if(e&&!n||!e&&n)return!1;if(!e&&!n)return!0;if(e.length!==n.length)return!1;for(let r=0,i=e.length;r{this._tokenizationSupports.get(e)===n&&(this._tokenizationSupports.delete(e),this.handleChange([e]))})}get(e){return this._tokenizationSupports.get(e)||null}registerFactory(e,n){var i;(i=this._factories.get(e))==null||i.dispose();const r=new Md(this,e,n);return this._factories.set(e,r),Gn(()=>{const s=this._factories.get(e);!s||s!==r||(this._factories.delete(e),s.dispose())})}async getOrCreate(e){const n=this.get(e);if(n)return n;const r=this._factories.get(e);return!r||r.isResolved?null:(await r.resolve(),this.get(e))}isResolved(e){if(this.get(e))return!0;const r=this._factories.get(e);return!!(!r||r.isResolved)}setColorMap(e){this._colorMap=e,this._onDidChange.fire({changedLanguages:Array.from(this._tokenizationSupports.keys()),changedColorMap:!0})}getColorMap(){return this._colorMap}getDefaultBackground(){return this._colorMap&&this._colorMap.length>2?this._colorMap[2]:null}}class Md extends St{get isResolved(){return this._isResolved}constructor(e,n,r){super(),this._registry=e,this._languageId=n,this._factory=r,this._isDisposed=!1,this._resolvePromise=null,this._isResolved=!1}dispose(){this._isDisposed=!0,super.dispose()}async resolve(){return this._resolvePromise||(this._resolvePromise=this._create()),this._resolvePromise}async _create(){const e=await this._factory.tokenizationSupport;this._isResolved=!0,e&&!this._isDisposed&&this._register(this._registry.register(this._languageId,e))}}class zd{constructor(e,n,r){this.offset=e,this.type=n,this.language=r,this._tokenBrand=void 0}toString(){return"("+this.offset+", "+this.type+")"}}var ha;(function(t){t[t.Increase=0]="Increase",t[t.Decrease=1]="Decrease"})(ha||(ha={}));var da;(function(t){const e=new Map;e.set(0,U.symbolMethod),e.set(1,U.symbolFunction),e.set(2,U.symbolConstructor),e.set(3,U.symbolField),e.set(4,U.symbolVariable),e.set(5,U.symbolClass),e.set(6,U.symbolStruct),e.set(7,U.symbolInterface),e.set(8,U.symbolModule),e.set(9,U.symbolProperty),e.set(10,U.symbolEvent),e.set(11,U.symbolOperator),e.set(12,U.symbolUnit),e.set(13,U.symbolValue),e.set(15,U.symbolEnum),e.set(14,U.symbolConstant),e.set(15,U.symbolEnum),e.set(16,U.symbolEnumMember),e.set(17,U.symbolKeyword),e.set(28,U.symbolSnippet),e.set(18,U.symbolText),e.set(19,U.symbolColor),e.set(20,U.symbolFile),e.set(21,U.symbolReference),e.set(22,U.symbolCustomColor),e.set(23,U.symbolFolder),e.set(24,U.symbolTypeParameter),e.set(25,U.account),e.set(26,U.issues),e.set(27,U.tools);function n(a){let o=e.get(a);return o||(console.info("No codicon found for CompletionItemKind "+a),o=U.symbolProperty),o}t.toIcon=n;function r(a){switch(a){case 0:return B(728,"Method");case 1:return B(729,"Function");case 2:return B(730,"Constructor");case 3:return B(731,"Field");case 4:return B(732,"Variable");case 5:return B(733,"Class");case 6:return B(734,"Struct");case 7:return B(735,"Interface");case 8:return B(736,"Module");case 9:return B(737,"Property");case 10:return B(738,"Event");case 11:return B(739,"Operator");case 12:return B(740,"Unit");case 13:return B(741,"Value");case 14:return B(742,"Constant");case 15:return B(743,"Enum");case 16:return B(744,"Enum Member");case 17:return B(745,"Keyword");case 18:return B(746,"Text");case 19:return B(747,"Color");case 20:return B(748,"File");case 21:return B(749,"Reference");case 22:return B(750,"Custom Color");case 23:return B(751,"Folder");case 24:return B(752,"Type Parameter");case 25:return B(753,"User");case 26:return B(754,"Issue");case 27:return B(755,"Tool");case 28:return B(756,"Snippet");default:return""}}t.toLabel=r;const i=new Map;i.set("method",0),i.set("function",1),i.set("constructor",2),i.set("field",3),i.set("variable",4),i.set("class",5),i.set("struct",6),i.set("interface",7),i.set("module",8),i.set("property",9),i.set("event",10),i.set("operator",11),i.set("unit",12),i.set("value",13),i.set("constant",14),i.set("enum",15),i.set("enum-member",16),i.set("enumMember",16),i.set("keyword",17),i.set("snippet",28),i.set("text",18),i.set("color",19),i.set("file",20),i.set("reference",21),i.set("customcolor",22),i.set("folder",23),i.set("type-parameter",24),i.set("typeParameter",24),i.set("account",25),i.set("issue",26),i.set("tool",27);function s(a,o){let l=i.get(a);return typeof l>"u"&&!o&&(l=9),l}t.fromString=s})(da||(da={}));var ua;(function(t){t[t.Automatic=0]="Automatic",t[t.Explicit=1]="Explicit"})(ua||(ua={}));var pa;(function(t){t[t.Code=1]="Code",t[t.Label=2]="Label"})(pa||(pa={}));var ma;(function(t){t[t.Accepted=0]="Accepted",t[t.Rejected=1]="Rejected",t[t.Ignored=2]="Ignored"})(ma||(ma={}));var fa;(function(t){t[t.Automatic=0]="Automatic",t[t.PasteAs=1]="PasteAs"})(fa||(fa={}));var ga;(function(t){t[t.Invoke=1]="Invoke",t[t.TriggerCharacter=2]="TriggerCharacter",t[t.ContentChange=3]="ContentChange"})(ga||(ga={}));var ba;(function(t){t[t.Text=0]="Text",t[t.Read=1]="Read",t[t.Write=2]="Write"})(ba||(ba={})),B(757,"array"),B(758,"boolean"),B(759,"class"),B(760,"constant"),B(761,"constructor"),B(762,"enumeration"),B(763,"enumeration member"),B(764,"event"),B(765,"field"),B(766,"file"),B(767,"function"),B(768,"interface"),B(769,"key"),B(770,"method"),B(771,"module"),B(772,"namespace"),B(773,"null"),B(774,"number"),B(775,"object"),B(776,"operator"),B(777,"package"),B(778,"property"),B(779,"string"),B(780,"struct"),B(781,"type parameter"),B(782,"variable");var wa;(function(t){const e=new Map;e.set(0,U.symbolFile),e.set(1,U.symbolModule),e.set(2,U.symbolNamespace),e.set(3,U.symbolPackage),e.set(4,U.symbolClass),e.set(5,U.symbolMethod),e.set(6,U.symbolProperty),e.set(7,U.symbolField),e.set(8,U.symbolConstructor),e.set(9,U.symbolEnum),e.set(10,U.symbolInterface),e.set(11,U.symbolFunction),e.set(12,U.symbolVariable),e.set(13,U.symbolConstant),e.set(14,U.symbolString),e.set(15,U.symbolNumber),e.set(16,U.symbolBoolean),e.set(17,U.symbolArray),e.set(18,U.symbolObject),e.set(19,U.symbolKey),e.set(20,U.symbolNull),e.set(21,U.symbolEnumMember),e.set(22,U.symbolStruct),e.set(23,U.symbolEvent),e.set(24,U.symbolOperator),e.set(25,U.symbolTypeParameter);function n(s){let a=e.get(s);return a||(console.info("No codicon found for SymbolKind "+s),a=U.symbolProperty),a}t.toIcon=n;const r=new Map;r.set(0,20),r.set(1,8),r.set(2,8),r.set(3,8),r.set(4,5),r.set(5,0),r.set(6,9),r.set(7,3),r.set(8,2),r.set(9,15),r.set(10,7),r.set(11,1),r.set(12,4),r.set(13,14),r.set(14,18),r.set(15,13),r.set(16,13),r.set(17,13),r.set(18,13),r.set(19,17),r.set(20,13),r.set(21,16),r.set(22,6),r.set(23,10),r.set(24,11),r.set(25,24);function i(s){let a=r.get(s);return a===void 0&&(console.info("No completion kind found for SymbolKind "+s),a=20),a}t.toCompletionKind=i})(wa||(wa={}));let Of=(ke=class{static fromValue(e){switch(e){case"comment":return ke.Comment;case"imports":return ke.Imports;case"region":return ke.Region}return new ke(e)}constructor(e){this.value=e}},ke.Comment=new ke("comment"),ke.Imports=new ke("imports"),ke.Region=new ke("region"),ke);var va;(function(t){t[t.AIGenerated=1]="AIGenerated"})(va||(va={}));var ya;(function(t){t[t.Invoke=0]="Invoke",t[t.Automatic=1]="Automatic"})(ya||(ya={}));var xa;(function(t){function e(n){return!n||typeof n!="object"?!1:typeof n.id=="string"&&typeof n.title=="string"}t.is=e})(xa||(xa={}));var Sa;(function(t){t[t.Type=1]="Type",t[t.Parameter=2]="Parameter"})(Sa||(Sa={})),new Ad;var Ca;(function(t){t[t.Unknown=0]="Unknown",t[t.Disabled=1]="Disabled",t[t.Enabled=2]="Enabled"})(Ca||(Ca={}));var ka;(function(t){t[t.Invoke=1]="Invoke",t[t.Auto=2]="Auto"})(ka||(ka={}));var _a;(function(t){t[t.None=0]="None",t[t.KeepWhitespace=1]="KeepWhitespace",t[t.InsertAsSnippet=4]="InsertAsSnippet"})(_a||(_a={}));var Ea;(function(t){t[t.Method=0]="Method",t[t.Function=1]="Function",t[t.Constructor=2]="Constructor",t[t.Field=3]="Field",t[t.Variable=4]="Variable",t[t.Class=5]="Class",t[t.Struct=6]="Struct",t[t.Interface=7]="Interface",t[t.Module=8]="Module",t[t.Property=9]="Property",t[t.Event=10]="Event",t[t.Operator=11]="Operator",t[t.Unit=12]="Unit",t[t.Value=13]="Value",t[t.Constant=14]="Constant",t[t.Enum=15]="Enum",t[t.EnumMember=16]="EnumMember",t[t.Keyword=17]="Keyword",t[t.Text=18]="Text",t[t.Color=19]="Color",t[t.File=20]="File",t[t.Reference=21]="Reference",t[t.Customcolor=22]="Customcolor",t[t.Folder=23]="Folder",t[t.TypeParameter=24]="TypeParameter",t[t.User=25]="User",t[t.Issue=26]="Issue",t[t.Tool=27]="Tool",t[t.Snippet=28]="Snippet"})(Ea||(Ea={}));var Fa;(function(t){t[t.Deprecated=1]="Deprecated"})(Fa||(Fa={}));var Ra;(function(t){t[t.Invoke=0]="Invoke",t[t.TriggerCharacter=1]="TriggerCharacter",t[t.TriggerForIncompleteCompletions=2]="TriggerForIncompleteCompletions"})(Ra||(Ra={}));var Na;(function(t){t[t.EXACT=0]="EXACT",t[t.ABOVE=1]="ABOVE",t[t.BELOW=2]="BELOW"})(Na||(Na={}));var Ia;(function(t){t[t.NotSet=0]="NotSet",t[t.ContentFlush=1]="ContentFlush",t[t.RecoverFromMarkers=2]="RecoverFromMarkers",t[t.Explicit=3]="Explicit",t[t.Paste=4]="Paste",t[t.Undo=5]="Undo",t[t.Redo=6]="Redo"})(Ia||(Ia={}));var Da;(function(t){t[t.LF=1]="LF",t[t.CRLF=2]="CRLF"})(Da||(Da={}));var La;(function(t){t[t.Text=0]="Text",t[t.Read=1]="Read",t[t.Write=2]="Write"})(La||(La={}));var Aa;(function(t){t[t.None=0]="None",t[t.Keep=1]="Keep",t[t.Brackets=2]="Brackets",t[t.Advanced=3]="Advanced",t[t.Full=4]="Full"})(Aa||(Aa={}));var Ma;(function(t){t[t.acceptSuggestionOnCommitCharacter=0]="acceptSuggestionOnCommitCharacter",t[t.acceptSuggestionOnEnter=1]="acceptSuggestionOnEnter",t[t.accessibilitySupport=2]="accessibilitySupport",t[t.accessibilityPageSize=3]="accessibilityPageSize",t[t.allowOverflow=4]="allowOverflow",t[t.allowVariableLineHeights=5]="allowVariableLineHeights",t[t.allowVariableFonts=6]="allowVariableFonts",t[t.allowVariableFontsInAccessibilityMode=7]="allowVariableFontsInAccessibilityMode",t[t.ariaLabel=8]="ariaLabel",t[t.ariaRequired=9]="ariaRequired",t[t.autoClosingBrackets=10]="autoClosingBrackets",t[t.autoClosingComments=11]="autoClosingComments",t[t.screenReaderAnnounceInlineSuggestion=12]="screenReaderAnnounceInlineSuggestion",t[t.autoClosingDelete=13]="autoClosingDelete",t[t.autoClosingOvertype=14]="autoClosingOvertype",t[t.autoClosingQuotes=15]="autoClosingQuotes",t[t.autoIndent=16]="autoIndent",t[t.autoIndentOnPaste=17]="autoIndentOnPaste",t[t.autoIndentOnPasteWithinString=18]="autoIndentOnPasteWithinString",t[t.automaticLayout=19]="automaticLayout",t[t.autoSurround=20]="autoSurround",t[t.bracketPairColorization=21]="bracketPairColorization",t[t.guides=22]="guides",t[t.codeLens=23]="codeLens",t[t.codeLensFontFamily=24]="codeLensFontFamily",t[t.codeLensFontSize=25]="codeLensFontSize",t[t.colorDecorators=26]="colorDecorators",t[t.colorDecoratorsLimit=27]="colorDecoratorsLimit",t[t.columnSelection=28]="columnSelection",t[t.comments=29]="comments",t[t.contextmenu=30]="contextmenu",t[t.copyWithSyntaxHighlighting=31]="copyWithSyntaxHighlighting",t[t.cursorBlinking=32]="cursorBlinking",t[t.cursorSmoothCaretAnimation=33]="cursorSmoothCaretAnimation",t[t.cursorStyle=34]="cursorStyle",t[t.cursorSurroundingLines=35]="cursorSurroundingLines",t[t.cursorSurroundingLinesStyle=36]="cursorSurroundingLinesStyle",t[t.cursorWidth=37]="cursorWidth",t[t.cursorHeight=38]="cursorHeight",t[t.disableLayerHinting=39]="disableLayerHinting",t[t.disableMonospaceOptimizations=40]="disableMonospaceOptimizations",t[t.domReadOnly=41]="domReadOnly",t[t.dragAndDrop=42]="dragAndDrop",t[t.dropIntoEditor=43]="dropIntoEditor",t[t.editContext=44]="editContext",t[t.emptySelectionClipboard=45]="emptySelectionClipboard",t[t.experimentalGpuAcceleration=46]="experimentalGpuAcceleration",t[t.experimentalWhitespaceRendering=47]="experimentalWhitespaceRendering",t[t.extraEditorClassName=48]="extraEditorClassName",t[t.fastScrollSensitivity=49]="fastScrollSensitivity",t[t.find=50]="find",t[t.fixedOverflowWidgets=51]="fixedOverflowWidgets",t[t.folding=52]="folding",t[t.foldingStrategy=53]="foldingStrategy",t[t.foldingHighlight=54]="foldingHighlight",t[t.foldingImportsByDefault=55]="foldingImportsByDefault",t[t.foldingMaximumRegions=56]="foldingMaximumRegions",t[t.unfoldOnClickAfterEndOfLine=57]="unfoldOnClickAfterEndOfLine",t[t.fontFamily=58]="fontFamily",t[t.fontInfo=59]="fontInfo",t[t.fontLigatures=60]="fontLigatures",t[t.fontSize=61]="fontSize",t[t.fontWeight=62]="fontWeight",t[t.fontVariations=63]="fontVariations",t[t.formatOnPaste=64]="formatOnPaste",t[t.formatOnType=65]="formatOnType",t[t.glyphMargin=66]="glyphMargin",t[t.gotoLocation=67]="gotoLocation",t[t.hideCursorInOverviewRuler=68]="hideCursorInOverviewRuler",t[t.hover=69]="hover",t[t.inDiffEditor=70]="inDiffEditor",t[t.inlineSuggest=71]="inlineSuggest",t[t.letterSpacing=72]="letterSpacing",t[t.lightbulb=73]="lightbulb",t[t.lineDecorationsWidth=74]="lineDecorationsWidth",t[t.lineHeight=75]="lineHeight",t[t.lineNumbers=76]="lineNumbers",t[t.lineNumbersMinChars=77]="lineNumbersMinChars",t[t.linkedEditing=78]="linkedEditing",t[t.links=79]="links",t[t.matchBrackets=80]="matchBrackets",t[t.minimap=81]="minimap",t[t.mouseStyle=82]="mouseStyle",t[t.mouseWheelScrollSensitivity=83]="mouseWheelScrollSensitivity",t[t.mouseWheelZoom=84]="mouseWheelZoom",t[t.multiCursorMergeOverlapping=85]="multiCursorMergeOverlapping",t[t.multiCursorModifier=86]="multiCursorModifier",t[t.mouseMiddleClickAction=87]="mouseMiddleClickAction",t[t.multiCursorPaste=88]="multiCursorPaste",t[t.multiCursorLimit=89]="multiCursorLimit",t[t.occurrencesHighlight=90]="occurrencesHighlight",t[t.occurrencesHighlightDelay=91]="occurrencesHighlightDelay",t[t.overtypeCursorStyle=92]="overtypeCursorStyle",t[t.overtypeOnPaste=93]="overtypeOnPaste",t[t.overviewRulerBorder=94]="overviewRulerBorder",t[t.overviewRulerLanes=95]="overviewRulerLanes",t[t.padding=96]="padding",t[t.pasteAs=97]="pasteAs",t[t.parameterHints=98]="parameterHints",t[t.peekWidgetDefaultFocus=99]="peekWidgetDefaultFocus",t[t.placeholder=100]="placeholder",t[t.definitionLinkOpensInPeek=101]="definitionLinkOpensInPeek",t[t.quickSuggestions=102]="quickSuggestions",t[t.quickSuggestionsDelay=103]="quickSuggestionsDelay",t[t.readOnly=104]="readOnly",t[t.readOnlyMessage=105]="readOnlyMessage",t[t.renameOnType=106]="renameOnType",t[t.renderRichScreenReaderContent=107]="renderRichScreenReaderContent",t[t.renderControlCharacters=108]="renderControlCharacters",t[t.renderFinalNewline=109]="renderFinalNewline",t[t.renderLineHighlight=110]="renderLineHighlight",t[t.renderLineHighlightOnlyWhenFocus=111]="renderLineHighlightOnlyWhenFocus",t[t.renderValidationDecorations=112]="renderValidationDecorations",t[t.renderWhitespace=113]="renderWhitespace",t[t.revealHorizontalRightPadding=114]="revealHorizontalRightPadding",t[t.roundedSelection=115]="roundedSelection",t[t.rulers=116]="rulers",t[t.scrollbar=117]="scrollbar",t[t.scrollBeyondLastColumn=118]="scrollBeyondLastColumn",t[t.scrollBeyondLastLine=119]="scrollBeyondLastLine",t[t.scrollPredominantAxis=120]="scrollPredominantAxis",t[t.selectionClipboard=121]="selectionClipboard",t[t.selectionHighlight=122]="selectionHighlight",t[t.selectionHighlightMaxLength=123]="selectionHighlightMaxLength",t[t.selectionHighlightMultiline=124]="selectionHighlightMultiline",t[t.selectOnLineNumbers=125]="selectOnLineNumbers",t[t.showFoldingControls=126]="showFoldingControls",t[t.showUnused=127]="showUnused",t[t.snippetSuggestions=128]="snippetSuggestions",t[t.smartSelect=129]="smartSelect",t[t.smoothScrolling=130]="smoothScrolling",t[t.stickyScroll=131]="stickyScroll",t[t.stickyTabStops=132]="stickyTabStops",t[t.stopRenderingLineAfter=133]="stopRenderingLineAfter",t[t.suggest=134]="suggest",t[t.suggestFontSize=135]="suggestFontSize",t[t.suggestLineHeight=136]="suggestLineHeight",t[t.suggestOnTriggerCharacters=137]="suggestOnTriggerCharacters",t[t.suggestSelection=138]="suggestSelection",t[t.tabCompletion=139]="tabCompletion",t[t.tabIndex=140]="tabIndex",t[t.trimWhitespaceOnDelete=141]="trimWhitespaceOnDelete",t[t.unicodeHighlighting=142]="unicodeHighlighting",t[t.unusualLineTerminators=143]="unusualLineTerminators",t[t.useShadowDOM=144]="useShadowDOM",t[t.useTabStops=145]="useTabStops",t[t.wordBreak=146]="wordBreak",t[t.wordSegmenterLocales=147]="wordSegmenterLocales",t[t.wordSeparators=148]="wordSeparators",t[t.wordWrap=149]="wordWrap",t[t.wordWrapBreakAfterCharacters=150]="wordWrapBreakAfterCharacters",t[t.wordWrapBreakBeforeCharacters=151]="wordWrapBreakBeforeCharacters",t[t.wordWrapColumn=152]="wordWrapColumn",t[t.wordWrapOverride1=153]="wordWrapOverride1",t[t.wordWrapOverride2=154]="wordWrapOverride2",t[t.wrappingIndent=155]="wrappingIndent",t[t.wrappingStrategy=156]="wrappingStrategy",t[t.showDeprecated=157]="showDeprecated",t[t.inertialScroll=158]="inertialScroll",t[t.inlayHints=159]="inlayHints",t[t.wrapOnEscapedLineFeeds=160]="wrapOnEscapedLineFeeds",t[t.effectiveCursorStyle=161]="effectiveCursorStyle",t[t.editorClassName=162]="editorClassName",t[t.pixelRatio=163]="pixelRatio",t[t.tabFocusMode=164]="tabFocusMode",t[t.layoutInfo=165]="layoutInfo",t[t.wrappingInfo=166]="wrappingInfo",t[t.defaultColorDecorators=167]="defaultColorDecorators",t[t.colorDecoratorsActivatedOn=168]="colorDecoratorsActivatedOn",t[t.inlineCompletionsAccessibilityVerbose=169]="inlineCompletionsAccessibilityVerbose",t[t.effectiveEditContext=170]="effectiveEditContext",t[t.scrollOnMiddleClick=171]="scrollOnMiddleClick",t[t.effectiveAllowVariableFonts=172]="effectiveAllowVariableFonts"})(Ma||(Ma={}));var za;(function(t){t[t.TextDefined=0]="TextDefined",t[t.LF=1]="LF",t[t.CRLF=2]="CRLF"})(za||(za={}));var Pa;(function(t){t[t.LF=0]="LF",t[t.CRLF=1]="CRLF"})(Pa||(Pa={}));var Ta;(function(t){t[t.Left=1]="Left",t[t.Center=2]="Center",t[t.Right=3]="Right"})(Ta||(Ta={}));var Oa;(function(t){t[t.Increase=0]="Increase",t[t.Decrease=1]="Decrease"})(Oa||(Oa={}));var Wa;(function(t){t[t.None=0]="None",t[t.Indent=1]="Indent",t[t.IndentOutdent=2]="IndentOutdent",t[t.Outdent=3]="Outdent"})(Wa||(Wa={}));var Va;(function(t){t[t.Both=0]="Both",t[t.Right=1]="Right",t[t.Left=2]="Left",t[t.None=3]="None"})(Va||(Va={}));var $a;(function(t){t[t.Type=1]="Type",t[t.Parameter=2]="Parameter"})($a||($a={}));var Ua;(function(t){t[t.Accepted=0]="Accepted",t[t.Rejected=1]="Rejected",t[t.Ignored=2]="Ignored"})(Ua||(Ua={}));var Ba;(function(t){t[t.Code=1]="Code",t[t.Label=2]="Label"})(Ba||(Ba={}));var qa;(function(t){t[t.Automatic=0]="Automatic",t[t.Explicit=1]="Explicit"})(qa||(qa={}));var di;(function(t){t[t.DependsOnKbLayout=-1]="DependsOnKbLayout",t[t.Unknown=0]="Unknown",t[t.Backspace=1]="Backspace",t[t.Tab=2]="Tab",t[t.Enter=3]="Enter",t[t.Shift=4]="Shift",t[t.Ctrl=5]="Ctrl",t[t.Alt=6]="Alt",t[t.PauseBreak=7]="PauseBreak",t[t.CapsLock=8]="CapsLock",t[t.Escape=9]="Escape",t[t.Space=10]="Space",t[t.PageUp=11]="PageUp",t[t.PageDown=12]="PageDown",t[t.End=13]="End",t[t.Home=14]="Home",t[t.LeftArrow=15]="LeftArrow",t[t.UpArrow=16]="UpArrow",t[t.RightArrow=17]="RightArrow",t[t.DownArrow=18]="DownArrow",t[t.Insert=19]="Insert",t[t.Delete=20]="Delete",t[t.Digit0=21]="Digit0",t[t.Digit1=22]="Digit1",t[t.Digit2=23]="Digit2",t[t.Digit3=24]="Digit3",t[t.Digit4=25]="Digit4",t[t.Digit5=26]="Digit5",t[t.Digit6=27]="Digit6",t[t.Digit7=28]="Digit7",t[t.Digit8=29]="Digit8",t[t.Digit9=30]="Digit9",t[t.KeyA=31]="KeyA",t[t.KeyB=32]="KeyB",t[t.KeyC=33]="KeyC",t[t.KeyD=34]="KeyD",t[t.KeyE=35]="KeyE",t[t.KeyF=36]="KeyF",t[t.KeyG=37]="KeyG",t[t.KeyH=38]="KeyH",t[t.KeyI=39]="KeyI",t[t.KeyJ=40]="KeyJ",t[t.KeyK=41]="KeyK",t[t.KeyL=42]="KeyL",t[t.KeyM=43]="KeyM",t[t.KeyN=44]="KeyN",t[t.KeyO=45]="KeyO",t[t.KeyP=46]="KeyP",t[t.KeyQ=47]="KeyQ",t[t.KeyR=48]="KeyR",t[t.KeyS=49]="KeyS",t[t.KeyT=50]="KeyT",t[t.KeyU=51]="KeyU",t[t.KeyV=52]="KeyV",t[t.KeyW=53]="KeyW",t[t.KeyX=54]="KeyX",t[t.KeyY=55]="KeyY",t[t.KeyZ=56]="KeyZ",t[t.Meta=57]="Meta",t[t.ContextMenu=58]="ContextMenu",t[t.F1=59]="F1",t[t.F2=60]="F2",t[t.F3=61]="F3",t[t.F4=62]="F4",t[t.F5=63]="F5",t[t.F6=64]="F6",t[t.F7=65]="F7",t[t.F8=66]="F8",t[t.F9=67]="F9",t[t.F10=68]="F10",t[t.F11=69]="F11",t[t.F12=70]="F12",t[t.F13=71]="F13",t[t.F14=72]="F14",t[t.F15=73]="F15",t[t.F16=74]="F16",t[t.F17=75]="F17",t[t.F18=76]="F18",t[t.F19=77]="F19",t[t.F20=78]="F20",t[t.F21=79]="F21",t[t.F22=80]="F22",t[t.F23=81]="F23",t[t.F24=82]="F24",t[t.NumLock=83]="NumLock",t[t.ScrollLock=84]="ScrollLock",t[t.Semicolon=85]="Semicolon",t[t.Equal=86]="Equal",t[t.Comma=87]="Comma",t[t.Minus=88]="Minus",t[t.Period=89]="Period",t[t.Slash=90]="Slash",t[t.Backquote=91]="Backquote",t[t.BracketLeft=92]="BracketLeft",t[t.Backslash=93]="Backslash",t[t.BracketRight=94]="BracketRight",t[t.Quote=95]="Quote",t[t.OEM_8=96]="OEM_8",t[t.IntlBackslash=97]="IntlBackslash",t[t.Numpad0=98]="Numpad0",t[t.Numpad1=99]="Numpad1",t[t.Numpad2=100]="Numpad2",t[t.Numpad3=101]="Numpad3",t[t.Numpad4=102]="Numpad4",t[t.Numpad5=103]="Numpad5",t[t.Numpad6=104]="Numpad6",t[t.Numpad7=105]="Numpad7",t[t.Numpad8=106]="Numpad8",t[t.Numpad9=107]="Numpad9",t[t.NumpadMultiply=108]="NumpadMultiply",t[t.NumpadAdd=109]="NumpadAdd",t[t.NUMPAD_SEPARATOR=110]="NUMPAD_SEPARATOR",t[t.NumpadSubtract=111]="NumpadSubtract",t[t.NumpadDecimal=112]="NumpadDecimal",t[t.NumpadDivide=113]="NumpadDivide",t[t.KEY_IN_COMPOSITION=114]="KEY_IN_COMPOSITION",t[t.ABNT_C1=115]="ABNT_C1",t[t.ABNT_C2=116]="ABNT_C2",t[t.AudioVolumeMute=117]="AudioVolumeMute",t[t.AudioVolumeUp=118]="AudioVolumeUp",t[t.AudioVolumeDown=119]="AudioVolumeDown",t[t.BrowserSearch=120]="BrowserSearch",t[t.BrowserHome=121]="BrowserHome",t[t.BrowserBack=122]="BrowserBack",t[t.BrowserForward=123]="BrowserForward",t[t.MediaTrackNext=124]="MediaTrackNext",t[t.MediaTrackPrevious=125]="MediaTrackPrevious",t[t.MediaStop=126]="MediaStop",t[t.MediaPlayPause=127]="MediaPlayPause",t[t.LaunchMediaPlayer=128]="LaunchMediaPlayer",t[t.LaunchMail=129]="LaunchMail",t[t.LaunchApp2=130]="LaunchApp2",t[t.Clear=131]="Clear",t[t.MAX_VALUE=132]="MAX_VALUE"})(di||(di={}));var ui;(function(t){t[t.Hint=1]="Hint",t[t.Info=2]="Info",t[t.Warning=4]="Warning",t[t.Error=8]="Error"})(ui||(ui={}));var pi;(function(t){t[t.Unnecessary=1]="Unnecessary",t[t.Deprecated=2]="Deprecated"})(pi||(pi={}));var ja;(function(t){t[t.Inline=1]="Inline",t[t.Gutter=2]="Gutter"})(ja||(ja={}));var Ha;(function(t){t[t.Normal=1]="Normal",t[t.Underlined=2]="Underlined"})(Ha||(Ha={}));var Ga;(function(t){t[t.UNKNOWN=0]="UNKNOWN",t[t.TEXTAREA=1]="TEXTAREA",t[t.GUTTER_GLYPH_MARGIN=2]="GUTTER_GLYPH_MARGIN",t[t.GUTTER_LINE_NUMBERS=3]="GUTTER_LINE_NUMBERS",t[t.GUTTER_LINE_DECORATIONS=4]="GUTTER_LINE_DECORATIONS",t[t.GUTTER_VIEW_ZONE=5]="GUTTER_VIEW_ZONE",t[t.CONTENT_TEXT=6]="CONTENT_TEXT",t[t.CONTENT_EMPTY=7]="CONTENT_EMPTY",t[t.CONTENT_VIEW_ZONE=8]="CONTENT_VIEW_ZONE",t[t.CONTENT_WIDGET=9]="CONTENT_WIDGET",t[t.OVERVIEW_RULER=10]="OVERVIEW_RULER",t[t.SCROLLBAR=11]="SCROLLBAR",t[t.OVERLAY_WIDGET=12]="OVERLAY_WIDGET",t[t.OUTSIDE_EDITOR=13]="OUTSIDE_EDITOR"})(Ga||(Ga={}));var Ja;(function(t){t[t.AIGenerated=1]="AIGenerated"})(Ja||(Ja={}));var Xa;(function(t){t[t.Invoke=0]="Invoke",t[t.Automatic=1]="Automatic"})(Xa||(Xa={}));var Ya;(function(t){t[t.TOP_RIGHT_CORNER=0]="TOP_RIGHT_CORNER",t[t.BOTTOM_RIGHT_CORNER=1]="BOTTOM_RIGHT_CORNER",t[t.TOP_CENTER=2]="TOP_CENTER"})(Ya||(Ya={}));var Qa;(function(t){t[t.Left=1]="Left",t[t.Center=2]="Center",t[t.Right=4]="Right",t[t.Full=7]="Full"})(Qa||(Qa={}));var Ka;(function(t){t[t.Word=0]="Word",t[t.Line=1]="Line",t[t.Suggest=2]="Suggest"})(Ka||(Ka={}));var Za;(function(t){t[t.Left=0]="Left",t[t.Right=1]="Right",t[t.None=2]="None",t[t.LeftOfInjectedText=3]="LeftOfInjectedText",t[t.RightOfInjectedText=4]="RightOfInjectedText"})(Za||(Za={}));var eo;(function(t){t[t.Off=0]="Off",t[t.On=1]="On",t[t.Relative=2]="Relative",t[t.Interval=3]="Interval",t[t.Custom=4]="Custom"})(eo||(eo={}));var to;(function(t){t[t.None=0]="None",t[t.Text=1]="Text",t[t.Blocks=2]="Blocks"})(to||(to={}));var no;(function(t){t[t.Smooth=0]="Smooth",t[t.Immediate=1]="Immediate"})(no||(no={}));var ro;(function(t){t[t.Auto=1]="Auto",t[t.Hidden=2]="Hidden",t[t.Visible=3]="Visible"})(ro||(ro={}));var mi;(function(t){t[t.LTR=0]="LTR",t[t.RTL=1]="RTL"})(mi||(mi={}));var io;(function(t){t.Off="off",t.OnCode="onCode",t.On="on"})(io||(io={}));var so;(function(t){t[t.Invoke=1]="Invoke",t[t.TriggerCharacter=2]="TriggerCharacter",t[t.ContentChange=3]="ContentChange"})(so||(so={}));var ao;(function(t){t[t.File=0]="File",t[t.Module=1]="Module",t[t.Namespace=2]="Namespace",t[t.Package=3]="Package",t[t.Class=4]="Class",t[t.Method=5]="Method",t[t.Property=6]="Property",t[t.Field=7]="Field",t[t.Constructor=8]="Constructor",t[t.Enum=9]="Enum",t[t.Interface=10]="Interface",t[t.Function=11]="Function",t[t.Variable=12]="Variable",t[t.Constant=13]="Constant",t[t.String=14]="String",t[t.Number=15]="Number",t[t.Boolean=16]="Boolean",t[t.Array=17]="Array",t[t.Object=18]="Object",t[t.Key=19]="Key",t[t.Null=20]="Null",t[t.EnumMember=21]="EnumMember",t[t.Struct=22]="Struct",t[t.Event=23]="Event",t[t.Operator=24]="Operator",t[t.TypeParameter=25]="TypeParameter"})(ao||(ao={}));var oo;(function(t){t[t.Deprecated=1]="Deprecated"})(oo||(oo={}));var lo;(function(t){t[t.LTR=0]="LTR",t[t.RTL=1]="RTL"})(lo||(lo={}));var co;(function(t){t[t.Hidden=0]="Hidden",t[t.Blink=1]="Blink",t[t.Smooth=2]="Smooth",t[t.Phase=3]="Phase",t[t.Expand=4]="Expand",t[t.Solid=5]="Solid"})(co||(co={}));var ho;(function(t){t[t.Line=1]="Line",t[t.Block=2]="Block",t[t.Underline=3]="Underline",t[t.LineThin=4]="LineThin",t[t.BlockOutline=5]="BlockOutline",t[t.UnderlineThin=6]="UnderlineThin"})(ho||(ho={}));var uo;(function(t){t[t.AlwaysGrowsWhenTypingAtEdges=0]="AlwaysGrowsWhenTypingAtEdges",t[t.NeverGrowsWhenTypingAtEdges=1]="NeverGrowsWhenTypingAtEdges",t[t.GrowsOnlyWhenTypingBefore=2]="GrowsOnlyWhenTypingBefore",t[t.GrowsOnlyWhenTypingAfter=3]="GrowsOnlyWhenTypingAfter"})(uo||(uo={}));var po;(function(t){t[t.None=0]="None",t[t.Same=1]="Same",t[t.Indent=2]="Indent",t[t.DeepIndent=3]="DeepIndent"})(po||(po={}));const cn=class cn{static chord(e,n){return ud(e,n)}};cn.CtrlCmd=2048,cn.Shift=1024,cn.Alt=512,cn.WinCtrl=256;let fi=cn;function Pd(){return{editor:void 0,languages:void 0,CancellationTokenSource:ld,Emitter:Be,KeyCode:di,KeyMod:fi,Position:re,Range:J,Selection:Re,SelectionDirection:mi,MarkerSeverity:ui,MarkerTag:pi,Uri:li,Token:zd}}var mo;class Td{constructor(){this[mo]="LinkedMap",this._map=new Map,this._head=void 0,this._tail=void 0,this._size=0,this._state=0}clear(){this._map.clear(),this._head=void 0,this._tail=void 0,this._size=0,this._state++}isEmpty(){return!this._head&&!this._tail}get size(){return this._size}get first(){var e;return(e=this._head)==null?void 0:e.value}get last(){var e;return(e=this._tail)==null?void 0:e.value}has(e){return this._map.has(e)}get(e,n=0){const r=this._map.get(e);if(r)return n!==0&&this.touch(r,n),r.value}set(e,n,r=0){let i=this._map.get(e);if(i)i.value=n,r!==0&&this.touch(i,r);else{switch(i={key:e,value:n,next:void 0,previous:void 0},r){case 0:this.addItemLast(i);break;case 1:this.addItemFirst(i);break;case 2:this.addItemLast(i);break;default:this.addItemLast(i);break}this._map.set(e,i),this._size++}return this}delete(e){return!!this.remove(e)}remove(e){const n=this._map.get(e);if(n)return this._map.delete(e),this.removeItem(n),this._size--,n.value}shift(){if(!this._head&&!this._tail)return;if(!this._head||!this._tail)throw new Error("Invalid list");const e=this._head;return this._map.delete(e.key),this.removeItem(e),this._size--,e.value}forEach(e,n){const r=this._state;let i=this._head;for(;i;){if(n?e.bind(n)(i.value,i.key,this):e(i.value,i.key,this),this._state!==r)throw new Error("LinkedMap got modified during iteration.");i=i.next}}keys(){const e=this,n=this._state;let r=this._head;const i={[Symbol.iterator](){return i},next(){if(e._state!==n)throw new Error("LinkedMap got modified during iteration.");if(r){const s={value:r.key,done:!1};return r=r.next,s}else return{value:void 0,done:!0}}};return i}values(){const e=this,n=this._state;let r=this._head;const i={[Symbol.iterator](){return i},next(){if(e._state!==n)throw new Error("LinkedMap got modified during iteration.");if(r){const s={value:r.value,done:!1};return r=r.next,s}else return{value:void 0,done:!0}}};return i}entries(){const e=this,n=this._state;let r=this._head;const i={[Symbol.iterator](){return i},next(){if(e._state!==n)throw new Error("LinkedMap got modified during iteration.");if(r){const s={value:[r.key,r.value],done:!1};return r=r.next,s}else return{value:void 0,done:!0}}};return i}[(mo=Symbol.toStringTag,Symbol.iterator)](){return this.entries()}trimOld(e){if(e>=this.size)return;if(e===0){this.clear();return}let n=this._head,r=this.size;for(;n&&r>e;)this._map.delete(n.key),n=n.next,r--;this._head=n,this._size=r,n&&(n.previous=void 0),this._state++}trimNew(e){if(e>=this.size)return;if(e===0){this.clear();return}let n=this._tail,r=this.size;for(;n&&r>e;)this._map.delete(n.key),n=n.previous,r--;this._tail=n,this._size=r,n&&(n.next=void 0),this._state++}addItemFirst(e){if(!this._head&&!this._tail)this._tail=e;else if(this._head)e.next=this._head,this._head.previous=e;else throw new Error("Invalid list");this._head=e,this._state++}addItemLast(e){if(!this._head&&!this._tail)this._head=e;else if(this._tail)e.previous=this._tail,this._tail.next=e;else throw new Error("Invalid list");this._tail=e,this._state++}removeItem(e){if(e===this._head&&e===this._tail)this._head=void 0,this._tail=void 0;else if(e===this._head){if(!e.next)throw new Error("Invalid list");e.next.previous=void 0,this._head=e.next}else if(e===this._tail){if(!e.previous)throw new Error("Invalid list");e.previous.next=void 0,this._tail=e.previous}else{const n=e.next,r=e.previous;if(!n||!r)throw new Error("Invalid list");n.previous=r,r.next=n}e.next=void 0,e.previous=void 0,this._state++}touch(e,n){if(!this._head||!this._tail)throw new Error("Invalid list");if(!(n!==1&&n!==2)){if(n===1){if(e===this._head)return;const r=e.next,i=e.previous;e===this._tail?(i.next=void 0,this._tail=i):(r.previous=i,i.next=r),e.previous=void 0,e.next=this._head,this._head.previous=e,this._head=e,this._state++}else if(n===2){if(e===this._tail)return;const r=e.next,i=e.previous;e===this._head?(r.previous=void 0,this._head=r):(r.previous=i,i.next=r),e.next=void 0,e.previous=this._tail,this._tail.next=e,this._tail=e,this._state++}}}toJSON(){const e=[];return this.forEach((n,r)=>{e.push([r,n])}),e}fromJSON(e){this.clear();for(const[n,r]of e)this.set(n,r)}}class Od extends Td{constructor(e,n=1){super(),this._limit=e,this._ratio=Math.min(Math.max(0,n),1)}get limit(){return this._limit}set limit(e){this._limit=e,this.checkTrim()}get(e,n=2){return super.get(e,n)}peek(e){return super.get(e,0)}set(e,n){return super.set(e,n,2),this}checkTrim(){this.size>this._limit&&this.trim(Math.round(this._limit*this._ratio))}}class Wd extends Od{constructor(e,n=1){super(e,n)}trim(e){this.trimOld(e)}set(e,n){return super.set(e,n),this.checkTrim(),this}}class Vd{constructor(){this.map=new Map}add(e,n){let r=this.map.get(e);r||(r=new Set,this.map.set(e,r)),r.add(n)}delete(e,n){const r=this.map.get(e);r&&(r.delete(n),r.size===0&&this.map.delete(e))}forEach(e,n){const r=this.map.get(e);r&&r.forEach(n)}}new Wd(10);var fo;(function(t){t[t.Left=1]="Left",t[t.Center=2]="Center",t[t.Right=4]="Right",t[t.Full=7]="Full"})(fo||(fo={}));var go;(function(t){t[t.Left=1]="Left",t[t.Center=2]="Center",t[t.Right=3]="Right"})(go||(go={}));var bo;(function(t){t[t.LTR=0]="LTR",t[t.RTL=1]="RTL"})(bo||(bo={}));var wo;(function(t){t[t.Both=0]="Both",t[t.Right=1]="Right",t[t.Left=2]="Left",t[t.None=3]="None"})(wo||(wo={}));function $d(t){if(!t||t.length===0)return!1;for(let e=0,n=t.length;e=n)break;const i=t.charCodeAt(e);if(i===110||i===114||i===87)return!0}}return!1}function Ud(t,e,n,r,i){if(r===0)return!0;const s=e.charCodeAt(r-1);if(t.get(s)!==0||s===13||s===10)return!0;if(i>0){const a=e.charCodeAt(r);if(t.get(a)!==0)return!0}return!1}function Bd(t,e,n,r,i){if(r+i===n)return!0;const s=e.charCodeAt(r+i);if(t.get(s)!==0||s===13||s===10)return!0;if(i>0){const a=e.charCodeAt(r+i-1);if(t.get(a)!==0)return!0}return!1}function qd(t,e,n,r,i){return Ud(t,e,n,r,i)&&Bd(t,e,n,r,i)}class jd{constructor(e,n){this._wordSeparators=e,this._searchRegex=n,this._prevMatchStartIndex=-1,this._prevMatchLength=0}reset(e){this._searchRegex.lastIndex=e,this._prevMatchStartIndex=-1,this._prevMatchLength=0}next(e){const n=e.length;let r;do{if(this._prevMatchStartIndex+this._prevMatchLength===n||(r=this._searchRegex.exec(e),!r))return null;const i=r.index,s=r[0].length;if(i===this._prevMatchStartIndex&&s===this._prevMatchLength){if(s===0){qh(e,n,this._searchRegex.lastIndex)>65535?this._searchRegex.lastIndex+=2:this._searchRegex.lastIndex+=1;continue}return null}if(this._prevMatchStartIndex=i,this._prevMatchLength=s,!this._wordSeparators||qd(this._wordSeparators,e,n,i,s))return r}while(r);return null}}const Hd="`~!@#$%^&*()-=+[{]}\\|;:'\",.<>/?";function Gd(t=""){let e="(-?\\d*\\.\\d\\w*)|([^";for(const n of Hd)t.indexOf(n)>=0||(e+="\\"+n);return e+="\\s]+)",new RegExp(e,"g")}const vo=Gd();function yo(t){let e=vo;if(t&&t instanceof RegExp)if(t.global)e=t;else{let n="g";t.ignoreCase&&(n+="i"),t.multiline&&(n+="m"),t.unicode&&(n+="u"),e=new RegExp(t.source,n)}return e.lastIndex=0,e}const xo=new wh;xo.unshift({maxLen:1e3,windowSize:15,timeBudget:150});function gi(t,e,n,r,i){if(e=yo(e),i||(i=Hn.first(xo)),n.length>i.maxLen){let c=t-i.maxLen/2;return c<0?c=0:r+=c,n=n.substring(c,t+i.maxLen/2),gi(t,e,n,r,i)}const s=Date.now(),a=t-1-r;let o=-1,l=null;for(let c=1;!(Date.now()-s>=i.timeBudget);c++){const d=a-i.windowSize*c;e.lastIndex=Math.max(0,d);const u=Jd(e,n,a,o);if(!u&&l||(l=u,d<=0))break;o=d}if(l){const c={word:l[0],startColumn:r+1+l.index,endColumn:r+1+l.index+l[0].length};return e.lastIndex=0,c}return null}function Jd(t,e,n,r){let i;for(;i=t.exec(e);){const s=i.index||0;if(s<=n&&t.lastIndex>=n)return i;if(r>0&&s>r)return null}return null}class Xd{static computeUnicodeHighlights(e,n,r){const i=r?r.startLineNumber:1,s=r?r.endLineNumber:e.getLineCount(),a=new So(n),o=a.getCandidateCodePoints();let l;o==="allNonBasicAscii"?l=new RegExp("[^\\t\\n\\r\\x20-\\x7E]","g"):l=new RegExp(`${Yd(Array.from(o))}`,"g");const c=new jd(null,l),d=[];let u=!1,m,f=0,g=0,b=0;e:for(let F=i,E=s;F<=E;F++){const I=e.getLineContent(F),_=I.length;c.reset(0);do if(m=c.next(I),m){let P=m.index,O=m.index+m[0].length;if(P>0){const z=I.charCodeAt(P-1);Kr(z)&&P--}if(O+1<_){const z=I.charCodeAt(O-1);Kr(z)&&O++}const V=I.substring(P,O);let R=gi(P+1,vo,I,0);R&&R.endColumn<=P+1&&(R=null);const N=a.shouldHighlightNonBasicASCII(V,R?R.word:null);if(N!==0){if(N===3?f++:N===2?g++:N===1?b++:uh(),d.length>=1e3){u=!0;break e}d.push(new J(F,P+1,F,O+1))}}while(m)}return{ranges:d,hasMore:u,ambiguousCharacterCount:f,invisibleCharacterCount:g,nonBasicAsciiCharacterCount:b}}static computeUnicodeHighlightReason(e,n){const r=new So(n);switch(r.shouldHighlightNonBasicASCII(e,null)){case 0:return null;case 2:return{kind:1};case 3:{const s=e.codePointAt(0),a=r.ambiguousCharacters.getPrimaryConfusable(s),o=fn.getLocales().filter(l=>!fn.getInstance(new Set([...n.allowedLocales,l])).isAmbiguous(s));return{kind:0,confusableWith:String.fromCodePoint(a),notAmbiguousInLocales:o}}case 1:return{kind:2}}}}function Yd(t,e){return`[${zh(t.map(r=>String.fromCodePoint(r)).join(""))}]`}class So{constructor(e){this.options=e,this.allowedCodePoints=new Set(e.allowedCodePoints),this.ambiguousCharacters=fn.getInstance(new Set(e.allowedLocales))}getCandidateCodePoints(){if(this.options.nonBasicASCII)return"allNonBasicAscii";const e=new Set;if(this.options.invisibleCharacters)for(const n of gn.codePoints)Co(String.fromCodePoint(n))||e.add(n);if(this.options.ambiguousCharacters)for(const n of this.ambiguousCharacters.getConfusableCodePoints())e.add(n);for(const n of this.allowedCodePoints)e.delete(n);return e}shouldHighlightNonBasicASCII(e,n){const r=e.codePointAt(0);if(this.allowedCodePoints.has(r))return 0;if(this.options.nonBasicASCII)return 1;let i=!1,s=!1;if(n)for(const a of n){const o=a.codePointAt(0),l=Hh(a);i=i||l,!l&&!this.ambiguousCharacters.isAmbiguous(o)&&!gn.isInvisibleCharacter(o)&&(s=!0)}return!i&&s?0:this.options.invisibleCharacters&&!Co(e)&&gn.isInvisibleCharacter(r)?2:this.options.ambiguousCharacters&&this.ambiguousCharacters.isAmbiguous(r)?3:0}}function Co(t){return t===" "||t===`
+`||t===" "}class rr{constructor(e,n,r){this.changes=e,this.moves=n,this.hitTimeout=r}}class Qd{constructor(e,n){this.lineRangeMapping=e,this.changes=n}}function Kd(t,e,n=(r,i)=>r===i){if(t===e)return!0;if(!t||!e||t.length!==e.length)return!1;for(let r=0,i=t.length;r0}t.isGreaterThan=r;function i(s){return s===0}t.isNeitherLessOrGreaterThan=i,t.greaterThan=1,t.lessThan=-1,t.neitherLessOrGreaterThan=0})(bi||(bi={}));function wn(t,e){return(n,r)=>e(t(n),t(r))}const vn=(t,e)=>t-e;function ru(t){return(e,n)=>-t(e,n)}const hn=class hn{constructor(e){this.iterate=e}toArray(){const e=[];return this.iterate(n=>(e.push(n),!0)),e}filter(e){return new hn(n=>this.iterate(r=>e(r)?n(r):!0))}map(e){return new hn(n=>this.iterate(r=>n(e(r))))}findLast(e){let n;return this.iterate(r=>(e(r)&&(n=r),!0)),n}findLastMaxBy(e){let n,r=!0;return this.iterate(i=>((r||bi.isGreaterThan(e(i,n)))&&(r=!1,n=i),!0)),n}};hn.empty=new hn(e=>{});let ko=hn;class Y{static fromTo(e,n){return new Y(e,n)}static addRange(e,n){let r=0;for(;rn))return new Y(e,n)}static ofLength(e){return new Y(0,e)}static ofStartAndLength(e,n){return new Y(e,e+n)}static emptyAt(e){return new Y(e,e)}constructor(e,n){if(this.start=e,this.endExclusive=n,e>n)throw new we(`Invalid range: ${this.toString()}`)}get isEmpty(){return this.start===this.endExclusive}delta(e){return new Y(this.start+e,this.endExclusive+e)}deltaStart(e){return new Y(this.start+e,this.endExclusive)}deltaEnd(e){return new Y(this.start,this.endExclusive+e)}get length(){return this.endExclusive-this.start}toString(){return`[${this.start}, ${this.endExclusive})`}equals(e){return this.start===e.start&&this.endExclusive===e.endExclusive}contains(e){return this.start<=e&&e=e.endExclusive}slice(e){return e.slice(this.start,this.endExclusive)}substring(e){return e.substring(this.start,this.endExclusive)}clip(e){if(this.isEmpty)throw new we(`Invalid clipping range: ${this.toString()}`);return Math.max(this.start,Math.min(this.endExclusive-1,e))}clipCyclic(e){if(this.isEmpty)throw new we(`Invalid clipping range: ${this.toString()}`);return e=this.endExclusive?this.start+(e-this.start)%this.length:e}forEach(e){for(let n=this.start;nn)throw new we(`startLineNumber ${e} cannot be after endLineNumberExclusive ${n}`);this.startLineNumber=e,this.endLineNumberExclusive=n}contains(e){return this.startLineNumber<=e&&ee.startLineNumber,vn);let Z=De;class je{constructor(e=[]){this._normalizedRanges=e}get ranges(){return this._normalizedRanges}addRange(e){if(e.length===0)return;const n=wi(this._normalizedRanges,i=>i.endLineNumberExclusive>=e.startLineNumber),r=Ut(this._normalizedRanges,i=>i.startLineNumber<=e.endLineNumberExclusive)+1;if(n===r)this._normalizedRanges.splice(n,0,e);else if(n===r-1){const i=this._normalizedRanges[n];this._normalizedRanges[n]=i.join(e)}else{const i=this._normalizedRanges[n].join(this._normalizedRanges[r-1]).join(e);this._normalizedRanges.splice(n,r-n,i)}}contains(e){const n=$t(this._normalizedRanges,r=>r.startLineNumber<=e);return!!n&&n.endLineNumberExclusive>e}intersects(e){const n=$t(this._normalizedRanges,r=>r.startLineNumbere.startLineNumber}getUnion(e){if(this._normalizedRanges.length===0)return e;if(e._normalizedRanges.length===0)return this;const n=[];let r=0,i=0,s=null;for(;r=a.startLineNumber?s=new Z(s.startLineNumber,Math.max(s.endLineNumberExclusive,a.endLineNumberExclusive)):(n.push(s),s=a)}return s!==null&&n.push(s),new je(n)}subtractFrom(e){const n=wi(this._normalizedRanges,a=>a.endLineNumberExclusive>=e.startLineNumber),r=Ut(this._normalizedRanges,a=>a.startLineNumber<=e.endLineNumberExclusive)+1;if(n===r)return new je([e]);const i=[];let s=e.startLineNumber;for(let a=n;as&&i.push(new Z(s,o.startLineNumber)),s=o.endLineNumberExclusive}return se.toString()).join(", ")}getIntersection(e){const n=[];let r=0,i=0;for(;rn.delta(e)))}}const Ue=class Ue{static betweenPositions(e,n){return e.lineNumber===n.lineNumber?new Ue(0,n.column-e.column):new Ue(n.lineNumber-e.lineNumber,n.column-1)}static fromPosition(e){return new Ue(e.lineNumber-1,e.column-1)}static ofRange(e){return Ue.betweenPositions(e.getStartPosition(),e.getEndPosition())}static ofText(e){let n=0,r=0;for(const i of e)i===`
+`?(n++,r=0):r++;return new Ue(n,r)}constructor(e,n){this.lineCount=e,this.columnCount=n}isGreaterThanOrEqualTo(e){return this.lineCount!==e.lineCount?this.lineCount>e.lineCount:this.columnCount>=e.columnCount}add(e){return e.lineCount===0?new Ue(this.lineCount,this.columnCount+e.columnCount):new Ue(this.lineCount+e.lineCount,e.columnCount)}createRange(e){return this.lineCount===0?new J(e.lineNumber,e.column,e.lineNumber,e.column+this.columnCount):new J(e.lineNumber,e.column,e.lineNumber+this.lineCount,this.columnCount+1)}toRange(){return new J(1,1,this.lineCount+1,this.columnCount+1)}toLineRange(){return Z.ofLength(1,this.lineCount+1)}addToPosition(e){return this.lineCount===0?new re(e.lineNumber,e.column+this.columnCount):new re(e.lineNumber+this.lineCount,this.columnCount+1)}toString(){return`${this.lineCount},${this.columnCount}`}};Ue.zero=new Ue(0,0);let yn=Ue;class su{getOffsetRange(e){return new Y(this.getOffset(e.getStartPosition()),this.getOffset(e.getEndPosition()))}getRange(e){return J.fromPositions(this.getPosition(e.start),this.getPosition(e.endExclusive))}getStringReplacement(e){return new Bt.deps.StringReplacement(this.getOffsetRange(e.range),e.text)}getTextReplacement(e){return new Bt.deps.TextReplacement(this.getRange(e.replaceRange),e.newText)}getTextEdit(e){const n=e.replacements.map(r=>this.getTextReplacement(r));return new Bt.deps.TextEdit(n)}}const zs=class zs{static get deps(){if(!this._deps)throw new Error("Dependencies not set. Call _setDependencies first.");return this._deps}};zs._deps=void 0;let Bt=zs;class au extends su{constructor(e){super(),this.text=e,this.lineStartOffsetByLineIdx=[],this.lineEndOffsetByLineIdx=[],this.lineStartOffsetByLineIdx.push(0);for(let n=0;n0&&e.charAt(n-1)==="\r"?this.lineEndOffsetByLineIdx.push(n-1):this.lineEndOffsetByLineIdx.push(n));this.lineEndOffsetByLineIdx.push(e.length)}getOffset(e){const n=this._validatePosition(e);return this.lineStartOffsetByLineIdx[n.lineNumber-1]+n.column-1}_validatePosition(e){if(e.lineNumber<1)return new re(1,1);const n=this.textLength.lineCount+1;if(e.lineNumber>n){const i=this.getLineLength(n);return new re(n,i+1)}if(e.column<1)return new re(e.lineNumber,1);const r=this.getLineLength(e.lineNumber);return e.column-1>r?new re(e.lineNumber,r+1):e}getPosition(e){const n=Ut(this.lineStartOffsetByLineIdx,s=>s<=e),r=n+1,i=e-this.lineStartOffsetByLineIdx[n]+1;return new re(r,i)}get textLength(){const e=this.lineStartOffsetByLineIdx.length-1;return new Bt.deps.TextLength(e,this.text.length-this.lineStartOffsetByLineIdx[e])}getLineLength(e){return this.lineEndOffsetByLineIdx[e-1]-this.lineStartOffsetByLineIdx[e-1]}}class ou{constructor(){this._transformer=void 0}get endPositionExclusive(){return this.length.addToPosition(new re(1,1))}get lineRange(){return this.length.toLineRange()}getValue(){return this.getValueOfRange(this.length.toRange())}getValueOfOffsetRange(e){return this.getValueOfRange(this.getTransformer().getRange(e))}getLineLength(e){return this.getValueOfRange(new J(e,1,e,Number.MAX_SAFE_INTEGER)).length}getTransformer(){return this._transformer||(this._transformer=new au(this.getValue())),this._transformer}getLineAt(e){return this.getValueOfRange(new J(e,1,e,Number.MAX_SAFE_INTEGER))}}class lu extends ou{constructor(e,n){ph(n>=1),super(),this._getLineContent=e,this._lineCount=n}getValueOfRange(e){if(e.startLineNumber===e.endLineNumber)return this._getLineContent(e.startLineNumber).substring(e.startColumn-1,e.endColumn-1);let n=this._getLineContent(e.startLineNumber).substring(e.startColumn-1);for(let r=e.startLineNumber+1;re[n-1],e.length)}}class ft{static joinReplacements(e,n){if(e.length===0)throw new we;if(e.length===1)return e[0];const r=e[0].range.getStartPosition(),i=e[e.length-1].range.getEndPosition();let s="";for(let a=0;a ${n.lineNumber},${n.column}): "${this.text}"`}}class Le{static inverse(e,n,r){const i=[];let s=1,a=1;for(const l of e){const c=new Le(new Z(s,l.original.startLineNumber),new Z(a,l.modified.startLineNumber));c.modified.isEmpty||i.push(c),s=l.original.endLineNumberExclusive,a=l.modified.endLineNumberExclusive}const o=new Le(new Z(s,n+1),new Z(a,r+1));return o.modified.isEmpty||i.push(o),i}static clip(e,n,r){const i=[];for(const s of e){const a=s.original.intersect(n),o=s.modified.intersect(r);a&&!a.isEmpty&&o&&!o.isEmpty&&i.push(new Le(a,o))}return i}constructor(e,n){this.original=e,this.modified=n}toString(){return`{${this.original.toString()}->${this.modified.toString()}}`}flip(){return new Le(this.modified,this.original)}join(e){return new Le(this.original.join(e.original),this.modified.join(e.modified))}toRangeMapping(){const e=this.original.toInclusiveRange(),n=this.modified.toInclusiveRange();if(e&&n)return new Ae(e,n);if(this.original.startLineNumber===1||this.modified.startLineNumber===1){if(!(this.modified.startLineNumber===1&&this.original.startLineNumber===1))throw new we("not a valid diff");return new Ae(new J(this.original.startLineNumber,1,this.original.endLineNumberExclusive,1),new J(this.modified.startLineNumber,1,this.modified.endLineNumberExclusive,1))}else return new Ae(new J(this.original.startLineNumber-1,Number.MAX_SAFE_INTEGER,this.original.endLineNumberExclusive-1,Number.MAX_SAFE_INTEGER),new J(this.modified.startLineNumber-1,Number.MAX_SAFE_INTEGER,this.modified.endLineNumberExclusive-1,Number.MAX_SAFE_INTEGER))}toRangeMapping2(e,n){if(_o(this.original.endLineNumberExclusive,e)&&_o(this.modified.endLineNumberExclusive,n))return new Ae(new J(this.original.startLineNumber,1,this.original.endLineNumberExclusive,1),new J(this.modified.startLineNumber,1,this.modified.endLineNumberExclusive,1));if(!this.original.isEmpty&&!this.modified.isEmpty)return new Ae(J.fromPositions(new re(this.original.startLineNumber,1),qt(new re(this.original.endLineNumberExclusive-1,Number.MAX_SAFE_INTEGER),e)),J.fromPositions(new re(this.modified.startLineNumber,1),qt(new re(this.modified.endLineNumberExclusive-1,Number.MAX_SAFE_INTEGER),n)));if(this.original.startLineNumber>1&&this.modified.startLineNumber>1)return new Ae(J.fromPositions(qt(new re(this.original.startLineNumber-1,Number.MAX_SAFE_INTEGER),e),qt(new re(this.original.endLineNumberExclusive-1,Number.MAX_SAFE_INTEGER),e)),J.fromPositions(qt(new re(this.modified.startLineNumber-1,Number.MAX_SAFE_INTEGER),n),qt(new re(this.modified.endLineNumberExclusive-1,Number.MAX_SAFE_INTEGER),n)));throw new we}}function qt(t,e){if(t.lineNumber<1)return new re(1,1);if(t.lineNumber>e.length)return new re(e.length,e[e.length-1].length+1);const n=e[t.lineNumber-1];return t.column>n.length+1?new re(t.lineNumber,n.length+1):t}function _o(t,e){return t>=1&&t<=e.length}class tt extends Le{static fromRangeMappings(e){const n=Z.join(e.map(i=>Z.fromRangeInclusive(i.originalRange))),r=Z.join(e.map(i=>Z.fromRangeInclusive(i.modifiedRange)));return new tt(n,r,e)}constructor(e,n,r){super(e,n),this.innerChanges=r}flip(){var e;return new tt(this.modified,this.original,(e=this.innerChanges)==null?void 0:e.map(n=>n.flip()))}withInnerChangesFromLineRanges(){return new tt(this.original,this.modified,[this.toRangeMapping()])}}class Ae{static fromEdit(e){const n=e.getNewRanges();return e.replacements.map((i,s)=>new Ae(i.range,n[s]))}static assertSorted(e){for(let n=1;n${this.modifiedRange.toString()}}`}flip(){return new Ae(this.modifiedRange,this.originalRange)}toTextEdit(e){const n=e.getValueOfRange(this.modifiedRange);return new ft(this.originalRange,n)}}function Eo(t,e,n,r=!1){const i=[];for(const s of Zd(t.map(a=>cu(a,e,n)),(a,o)=>a.original.intersectsOrTouches(o.original)||a.modified.intersectsOrTouches(o.modified))){const a=s[0],o=s[s.length-1];i.push(new tt(a.original.join(o.original),a.modified.join(o.modified),s.map(l=>l.innerChanges[0])))}return jn(()=>!r&&i.length>0&&(i[0].modified.startLineNumber!==i[0].original.startLineNumber||n.length.lineCount-i[i.length-1].modified.endLineNumberExclusive!==e.length.lineCount-i[i.length-1].original.endLineNumberExclusive)?!1:Ws(i,(s,a)=>a.original.startLineNumber-s.original.endLineNumberExclusive===a.modified.startLineNumber-s.modified.endLineNumberExclusive&&s.original.endLineNumberExclusive=n.getLineLength(t.modifiedRange.startLineNumber)&&t.originalRange.startColumn-1>=e.getLineLength(t.originalRange.startLineNumber)&&t.originalRange.startLineNumber<=t.originalRange.endLineNumber+i&&t.modifiedRange.startLineNumber<=t.modifiedRange.endLineNumber+i&&(r=1);const s=new Z(t.originalRange.startLineNumber+r,t.originalRange.endLineNumber+1+i),a=new Z(t.modifiedRange.startLineNumber+r,t.modifiedRange.endLineNumber+1+i);return new tt(s,a,[t])}const hu=3;class du{computeDiff(e,n,r){var l;const s=new mu(e,n,{maxComputationTime:r.maxComputationTimeMs,shouldIgnoreTrimWhitespace:r.ignoreTrimWhitespace,shouldComputeCharChanges:!0,shouldMakePrettyDiff:!0,shouldPostProcessCharChanges:!0}).computeDiff(),a=[];let o=null;for(const c of s.changes){let d;c.originalEndLineNumber===0?d=new Z(c.originalStartLineNumber+1,c.originalStartLineNumber+1):d=new Z(c.originalStartLineNumber,c.originalEndLineNumber+1);let u;c.modifiedEndLineNumber===0?u=new Z(c.modifiedStartLineNumber+1,c.modifiedStartLineNumber+1):u=new Z(c.modifiedStartLineNumber,c.modifiedEndLineNumber+1);let m=new tt(d,u,(l=c.charChanges)==null?void 0:l.map(f=>new Ae(new J(f.originalStartLineNumber,f.originalStartColumn,f.originalEndLineNumber,f.originalEndColumn),new J(f.modifiedStartLineNumber,f.modifiedStartColumn,f.modifiedEndLineNumber,f.modifiedEndColumn))));o&&(o.modified.endLineNumberExclusive===m.modified.startLineNumber||o.original.endLineNumberExclusive===m.original.startLineNumber)&&(m=new tt(o.original.join(m.original),o.modified.join(m.modified),o.innerChanges&&m.innerChanges?o.innerChanges.concat(m.innerChanges):void 0),a.pop()),a.push(m),o=m}return jn(()=>Ws(a,(c,d)=>d.original.startLineNumber-c.original.endLineNumberExclusive===d.modified.startLineNumber-c.modified.endLineNumberExclusive&&c.original.endLineNumberExclusive(e===10?"\\n":String.fromCharCode(e))+`-(${this._lineNumbers[n]},${this._columns[n]})`).join(", ")+"]"}_assertIndex(e,n){if(e<0||e>=n.length)throw new Error("Illegal index")}getElements(){return this._charCodes}getStartLineNumber(e){return e>0&&e===this._lineNumbers.length?this.getEndLineNumber(e-1):(this._assertIndex(e,this._lineNumbers),this._lineNumbers[e])}getEndLineNumber(e){return e===-1?this.getStartLineNumber(e+1):(this._assertIndex(e,this._lineNumbers),this._charCodes[e]===10?this._lineNumbers[e]+1:this._lineNumbers[e])}getStartColumn(e){return e>0&&e===this._columns.length?this.getEndColumn(e-1):(this._assertIndex(e,this._columns),this._columns[e])}getEndColumn(e){return e===-1?this.getStartColumn(e+1):(this._assertIndex(e,this._columns),this._charCodes[e]===10?1:this._columns[e]+1)}}class jt{constructor(e,n,r,i,s,a,o,l){this.originalStartLineNumber=e,this.originalStartColumn=n,this.originalEndLineNumber=r,this.originalEndColumn=i,this.modifiedStartLineNumber=s,this.modifiedStartColumn=a,this.modifiedEndLineNumber=o,this.modifiedEndColumn=l}static createFromDiffChange(e,n,r){const i=n.getStartLineNumber(e.originalStart),s=n.getStartColumn(e.originalStart),a=n.getEndLineNumber(e.originalStart+e.originalLength-1),o=n.getEndColumn(e.originalStart+e.originalLength-1),l=r.getStartLineNumber(e.modifiedStart),c=r.getStartColumn(e.modifiedStart),d=r.getEndLineNumber(e.modifiedStart+e.modifiedLength-1),u=r.getEndColumn(e.modifiedStart+e.modifiedLength-1);return new jt(i,s,a,o,l,c,d,u)}}function pu(t){if(t.length<=1)return t;const e=[t[0]];let n=e[0];for(let r=1,i=t.length;r0&&n.originalLength<20&&n.modifiedLength>0&&n.modifiedLength<20&&s()){const f=r.createCharSequence(e,n.originalStart,n.originalStart+n.originalLength-1),g=i.createCharSequence(e,n.modifiedStart,n.modifiedStart+n.modifiedLength-1);if(f.getElements().length>0&&g.getElements().length>0){let b=Fo(f,g,s,!0).changes;o&&(b=pu(b)),m=[];for(let F=0,E=b.length;F1&&b>1;){const F=m.charCodeAt(g-2),E=f.charCodeAt(b-2);if(F!==E)break;g--,b--}(g>1||b>1)&&this._pushTrimWhitespaceCharChange(i,s+1,1,g,a+1,1,b)}{let g=yi(m,1),b=yi(f,1);const F=m.length+1,E=f.length+1;for(;g!0;const e=Date.now();return()=>Date.now()-e{r.push(ce.fromOffsetPairs(i?i.getEndExclusives():rt.zero,s?s.getStarts():new rt(n,(i?i.seq2Range.endExclusive-i.seq1Range.endExclusive:0)+n)))}),r}static fromOffsetPairs(e,n){return new ce(new Y(e.offset1,n.offset1),new Y(e.offset2,n.offset2))}static assertSorted(e){let n;for(const r of e){if(n&&!(n.seq1Range.endExclusive<=r.seq1Range.start&&n.seq2Range.endExclusive<=r.seq2Range.start))throw new we("Sequence diffs must be sorted");n=r}}constructor(e,n){this.seq1Range=e,this.seq2Range=n}swap(){return new ce(this.seq2Range,this.seq1Range)}toString(){return`${this.seq1Range} <-> ${this.seq2Range}`}join(e){return new ce(this.seq1Range.join(e.seq1Range),this.seq2Range.join(e.seq2Range))}delta(e){return e===0?this:new ce(this.seq1Range.delta(e),this.seq2Range.delta(e))}deltaStart(e){return e===0?this:new ce(this.seq1Range.deltaStart(e),this.seq2Range.deltaStart(e))}deltaEnd(e){return e===0?this:new ce(this.seq1Range.deltaEnd(e),this.seq2Range.deltaEnd(e))}intersect(e){const n=this.seq1Range.intersect(e.seq1Range),r=this.seq2Range.intersect(e.seq2Range);if(!(!n||!r))return new ce(n,r)}getStarts(){return new rt(this.seq1Range.start,this.seq2Range.start)}getEndExclusives(){return new rt(this.seq1Range.endExclusive,this.seq2Range.endExclusive)}}const Dt=class Dt{constructor(e,n){this.offset1=e,this.offset2=n}toString(){return`${this.offset1} <-> ${this.offset2}`}delta(e){return e===0?this:new Dt(this.offset1+e,this.offset2+e)}equals(e){return this.offset1===e.offset1&&this.offset2===e.offset2}};Dt.zero=new Dt(0,0),Dt.max=new Dt(Number.MAX_SAFE_INTEGER,Number.MAX_SAFE_INTEGER);let rt=Dt;const Or=class Or{isValid(){return!0}};Or.instance=new Or;let Sn=Or;class fu{constructor(e){if(this.timeout=e,this.startTime=Date.now(),this.valid=!0,e<=0)throw new we("timeout must be positive")}isValid(){return!(Date.now()-this.startTime0&&b>0&&a.get(g-1,b-1)===3&&(I+=o.get(g-1,b-1)),I+=i?i(g,b):1):I=-1;const _=Math.max(F,E,I);if(_===I){const P=g>0&&b>0?o.get(g-1,b-1):0;o.set(g,b,P+1),a.set(g,b,3)}else _===F?(o.set(g,b,0),a.set(g,b,1)):_===E&&(o.set(g,b,0),a.set(g,b,2));s.set(g,b,_)}const l=[];let c=e.length,d=n.length;function u(g,b){(g+1!==c||b+1!==d)&&l.push(new ce(new Y(g+1,c),new Y(b+1,d))),c=g,d=b}let m=e.length-1,f=n.length-1;for(;m>=0&&f>=0;)a.get(m,f)===3?(u(m,f),m--,f--):a.get(m,f)===1?m--:f--;return u(-1,-1),l.reverse(),new nt(l,!1)}}class Io{compute(e,n,r=Sn.instance){if(e.length===0||n.length===0)return nt.trivial(e,n);const i=e,s=n;function a(b,F){for(;bi.length||P>s.length)continue;const O=a(_,P);l.set(d,O);const V=_===E?c.get(d+1):c.get(d-1);if(c.set(d,O!==_?new Do(V,_,P,O-_):V),l.get(d)===i.length&&l.get(d)-d===s.length)break e}}let u=c.get(d);const m=[];let f=i.length,g=s.length;for(;;){const b=u?u.x+u.length:0,F=u?u.y+u.length:0;if((b!==f||F!==g)&&m.push(new ce(new Y(b,f),new Y(F,g))),!u)break;f=u.x,g=u.y,u=u.prev}return m.reverse(),new nt(m,!1)}}class Do{constructor(e,n,r,i){this.prev=e,this.x=n,this.y=r,this.length=i}}class bu{constructor(){this.positiveArr=new Int32Array(10),this.negativeArr=new Int32Array(10)}get(e){return e<0?(e=-e-1,this.negativeArr[e]):this.positiveArr[e]}set(e,n){if(e<0){if(e=-e-1,e>=this.negativeArr.length){const r=this.negativeArr;this.negativeArr=new Int32Array(r.length*2),this.negativeArr.set(r)}this.negativeArr[e]=n}else{if(e>=this.positiveArr.length){const r=this.positiveArr;this.positiveArr=new Int32Array(r.length*2),this.positiveArr.set(r)}this.positiveArr[e]=n}}}class wu{constructor(){this.positiveArr=[],this.negativeArr=[]}get(e){return e<0?(e=-e-1,this.negativeArr[e]):this.positiveArr[e]}set(e,n){e<0?(e=-e-1,this.negativeArr[e]=n):this.positiveArr[e]=n}}class or{constructor(e,n,r){this.lines=e,this.range=n,this.considerWhitespaceChanges=r,this.elements=[],this.firstElementOffsetByLineIdx=[],this.lineStartOffsets=[],this.trimmedWsLengthsByLineIdx=[],this.firstElementOffsetByLineIdx.push(0);for(let i=this.range.startLineNumber;i<=this.range.endLineNumber;i++){let s=e[i-1],a=0;i===this.range.startLineNumber&&this.range.startColumn>1&&(a=this.range.startColumn-1,s=s.substring(a)),this.lineStartOffsets.push(a);let o=0;if(!r){const c=s.trimStart();o=s.length-c.length,s=c.trimEnd()}this.trimmedWsLengthsByLineIdx.push(o);const l=i===this.range.endLineNumber?Math.min(this.range.endColumn-1-a-o,s.length):s.length;for(let c=0;cString.fromCharCode(n)).join("")}getElement(e){return this.elements[e]}get length(){return this.elements.length}getBoundaryScore(e){const n=Mo(e>0?this.elements[e-1]:-1),r=Mo(es<=e),i=e-this.firstElementOffsetByLineIdx[r];return new re(this.range.startLineNumber+r,1+this.lineStartOffsets[r]+i+(i===0&&n==="left"?0:this.trimmedWsLengthsByLineIdx[r]))}translateRange(e){const n=this.translateOffset(e.start,"right"),r=this.translateOffset(e.endExclusive,"left");return r.isBefore(n)?J.fromPositions(r,r):J.fromPositions(n,r)}findWordContaining(e){if(e<0||e>=this.elements.length||!Ht(this.elements[e]))return;let n=e;for(;n>0&&Ht(this.elements[n-1]);)n--;let r=e;for(;r=this.elements.length||!Ht(this.elements[e]))return;let n=e;for(;n>0&&Ht(this.elements[n-1])&&!Lo(this.elements[n]);)n--;let r=e;for(;ri<=e.start)??0,r=iu(this.firstElementOffsetByLineIdx,i=>e.endExclusive<=i)??this.elements.length;return new Y(n,r)}}function Ht(t){return t>=97&&t<=122||t>=65&&t<=90||t>=48&&t<=57}function Lo(t){return t>=65&&t<=90}const vu={0:0,1:0,2:0,3:10,4:2,5:30,6:3,7:10,8:10};function Ao(t){return vu[t]}function Mo(t){return t===10?8:t===13?7:Si(t)?6:t>=97&&t<=122?0:t>=65&&t<=90?1:t>=48&&t<=57?2:t===-1?3:t===44||t===59?5:4}function yu(t,e,n,r,i,s){let{moves:a,excludedChanges:o}=Su(t,e,n,s);if(!s.isValid())return[];const l=t.filter(d=>!o.has(d)),c=Cu(l,r,i,e,n,s);return nu(a,c),a=ku(a),a=a.filter(d=>{const u=d.original.toOffsetRange().slice(e).map(f=>f.trim());return u.join(`
+`).length>=15&&xu(u,f=>f.length>=2)>=2}),a=_u(t,a),a}function xu(t,e){let n=0;for(const r of t)e(r)&&n++;return n}function Su(t,e,n,r){const i=[],s=t.filter(l=>l.modified.isEmpty&&l.original.length>=3).map(l=>new ar(l.original,e,l)),a=new Set(t.filter(l=>l.original.isEmpty&&l.modified.length>=3).map(l=>new ar(l.modified,n,l))),o=new Set;for(const l of s){let c=-1,d;for(const u of a){const m=l.computeSimilarity(u);m>c&&(c=m,d=u)}if(c>.9&&d&&(a.delete(d),i.push(new Le(l.range,d.range)),o.add(l.source),o.add(d.source)),!r.isValid())return{moves:i,excludedChanges:o}}return{moves:i,excludedChanges:o}}function Cu(t,e,n,r,i,s){const a=[],o=new Vd;for(const m of t)for(let f=m.original.startLineNumber;fm.modified.startLineNumber,vn));for(const m of t){let f=[];for(let g=m.modified.startLineNumber;g{for(const P of f)if(P.originalLineRange.endLineNumberExclusive+1===I.endLineNumberExclusive&&P.modifiedLineRange.endLineNumberExclusive+1===F.endLineNumberExclusive){P.originalLineRange=new Z(P.originalLineRange.startLineNumber,I.endLineNumberExclusive),P.modifiedLineRange=new Z(P.modifiedLineRange.startLineNumber,F.endLineNumberExclusive),E.push(P);return}const _={modifiedLineRange:F,originalLineRange:I};l.push(_),E.push(_)}),f=E}if(!s.isValid())return[]}l.sort(ru(wn(m=>m.modifiedLineRange.length,vn)));const c=new je,d=new je;for(const m of l){const f=m.modifiedLineRange.startLineNumber-m.originalLineRange.startLineNumber,g=c.subtractFrom(m.modifiedLineRange),b=d.subtractFrom(m.originalLineRange).getWithDelta(f),F=g.getIntersection(b);for(const E of F.ranges){if(E.length<3)continue;const I=E,_=E.delta(-f);a.push(new Le(_,I)),c.addRange(I),d.addRange(_)}}a.sort(wn(m=>m.original.startLineNumber,vn));const u=new ir(t);for(let m=0;mV.original.startLineNumber<=f.original.startLineNumber),b=$t(t,V=>V.modified.startLineNumber<=f.modified.startLineNumber),F=Math.max(f.original.startLineNumber-g.original.startLineNumber,f.modified.startLineNumber-b.modified.startLineNumber),E=u.findLastMonotonous(V=>V.original.startLineNumberV.modified.startLineNumberr.length||R>i.length||c.contains(R)||d.contains(V)||!zo(r[V-1],i[R-1],s))break}P>0&&(d.addRange(new Z(f.original.startLineNumber-P,f.original.startLineNumber)),c.addRange(new Z(f.modified.startLineNumber-P,f.modified.startLineNumber)));let O;for(O=0;O<_;O++){const V=f.original.endLineNumberExclusive+O,R=f.modified.endLineNumberExclusive+O;if(V>r.length||R>i.length||c.contains(R)||d.contains(V)||!zo(r[V-1],i[R-1],s))break}O>0&&(d.addRange(new Z(f.original.endLineNumberExclusive,f.original.endLineNumberExclusive+O)),c.addRange(new Z(f.modified.endLineNumberExclusive,f.modified.endLineNumberExclusive+O))),(P>0||O>0)&&(a[m]=new Le(new Z(f.original.startLineNumber-P,f.original.endLineNumberExclusive+O),new Z(f.modified.startLineNumber-P,f.modified.endLineNumberExclusive+O)))}return a}function zo(t,e,n){if(t.trim()===e.trim())return!0;if(t.length>300&&e.length>300)return!1;const i=new Io().compute(new or([t],new J(1,1,1,t.length),!1),new or([e],new J(1,1,1,e.length),!1),n);let s=0;const a=ce.invert(i.diffs,t.length);for(const d of a)d.seq1Range.forEach(u=>{Si(t.charCodeAt(u))||s++});function o(d){let u=0;for(let m=0;me.length?t:e);return s/l>.6&&l>10}function ku(t){if(t.length===0)return t;t.sort(wn(n=>n.original.startLineNumber,vn));const e=[t[0]];for(let n=1;n=0&&a>=0&&s+a<=2){e[e.length-1]=r.join(i);continue}e.push(i)}return e}function _u(t,e){const n=new ir(t);return e=e.filter(r=>{const i=n.findLastMonotonous(o=>o.original.startLineNumbero.modified.startLineNumber0&&(o=o.delta(c))}i.push(o)}return r.length>0&&i.push(r[r.length-1]),i}function Eu(t,e,n){if(!t.getBoundaryScore||!e.getBoundaryScore)return n;for(let r=0;r0?n[r-1]:void 0,s=n[r],a=r+1=r.start&&t.seq2Range.start-a>=i.start&&n.isStronglyEqual(t.seq2Range.start-a,t.seq2Range.endExclusive-a)&&a<100;)a++;a--;let o=0;for(;t.seq1Range.start+oc&&(c=g,l=d)}return t.delta(l)}function Fu(t,e,n){const r=[];for(const i of n){const s=r[r.length-1];if(!s){r.push(i);continue}i.seq1Range.start-s.seq1Range.endExclusive<=2||i.seq2Range.start-s.seq2Range.endExclusive<=2?r[r.length-1]=new ce(s.seq1Range.join(i.seq1Range),s.seq2Range.join(i.seq2Range)):r.push(i)}return r}function Wo(t,e,n,r,i=!1){const s=ce.invert(n,t.length),a=[];let o=new rt(0,0);function l(d,u){if(d.offset10;){const I=s[0];if(!(I.seq1Range.intersects(g.seq1Range)||I.seq2Range.intersects(g.seq2Range)))break;const P=r(t,I.seq1Range.start),O=r(e,I.seq2Range.start),V=new ce(P,O),R=V.intersect(I);if(F+=R.seq1Range.length,E+=R.seq2Range.length,g=g.join(V),g.seq1Range.endExclusive>=I.seq1Range.endExclusive)s.shift();else break}(i&&F+E0;){const d=s.shift();d.seq1Range.isEmpty||(l(d.getStarts(),d),l(d.getEndExclusives().delta(-1),d))}return Ru(n,a)}function Ru(t,e){const n=[];for(;t.length>0||e.length>0;){const r=t[0],i=e[0];let s;r&&(!i||r.seq1Range.start0&&n[n.length-1].seq1Range.endExclusive>=s.seq1Range.start?n[n.length-1]=n[n.length-1].join(s):n.push(s)}return n}function Nu(t,e,n){let r=n;if(r.length===0)return r;let i=0,s;do{s=!1;const a=[r[0]];for(let o=1;o5||f.seq1Range.length+f.seq2Range.length>5)};const l=r[o],c=a[a.length-1];d(c,l)?(s=!0,a[a.length-1]=a[a.length-1].join(l)):a.push(l)}r=a}while(i++<10&&s);return r}function Iu(t,e,n){let r=n;if(r.length===0)return r;let i=0,s;do{s=!1;const o=[r[0]];for(let l=1;l5||b.length>500)return!1;const E=t.getText(b).trim();if(E.length>20||E.split(/\r\n|\r|\n/).length>1)return!1;const I=t.countLinesIn(f.seq1Range),_=f.seq1Range.length,P=e.countLinesIn(f.seq2Range),O=f.seq2Range.length,V=t.countLinesIn(g.seq1Range),R=g.seq1Range.length,N=e.countLinesIn(g.seq2Range),z=g.seq2Range.length,$=2*40+50;function L(y){return Math.min(y,$)}return Math.pow(Math.pow(L(I*40+_),1.5)+Math.pow(L(P*40+O),1.5),1.5)+Math.pow(Math.pow(L(V*40+R),1.5)+Math.pow(L(N*40+z),1.5),1.5)>($**1.5)**1.5*1.3};const c=r[l],d=o[o.length-1];u(d,c)?(s=!0,o[o.length-1]=o[o.length-1].join(c)):o.push(c)}r=o}while(i++<10&&s);const a=[];return tu(r,(o,l,c)=>{let d=l;function u(E){return E.length>0&&E.trim().length<=3&&l.seq1Range.length+l.seq2Range.length>100}const m=t.extendToFullLines(l.seq1Range),f=t.getText(new Y(m.start,l.seq1Range.start));u(f)&&(d=d.deltaStart(-f.length));const g=t.getText(new Y(l.seq1Range.endExclusive,m.endExclusive));u(g)&&(d=d.deltaEnd(g.length));const b=ce.fromOffsetPairs(o?o.getEndExclusives():rt.zero,c?c.getStarts():rt.max),F=d.intersect(b);a.length>0&&F.getStarts().equals(a[a.length-1].getEndExclusives())?a[a.length-1]=a[a.length-1].join(F):a.push(F)}),a}class Vo{constructor(e,n){this.trimmedHash=e,this.lines=n}getElement(e){return this.trimmedHash[e]}get length(){return this.trimmedHash.length}getBoundaryScore(e){const n=e===0?0:$o(this.lines[e-1]),r=e===this.lines.length?0:$o(this.lines[e]);return 1e3-(n+r)}getText(e){return this.lines.slice(e.start,e.endExclusive).join(`
+`)}isStronglyEqual(e,n){return this.lines[e]===this.lines[n]}}function $o(t){let e=0;for(;eR===N))return new rr([],[],!1);if(e.length===1&&e[0].length===0||n.length===1&&n[0].length===0)return new rr([new tt(new Z(1,e.length+1),new Z(1,n.length+1),[new Ae(new J(1,1,e.length,e[e.length-1].length+1),new J(1,1,n.length,n[n.length-1].length+1))])],[],!1);const i=r.maxComputationTimeMs===0?Sn.instance:new fu(r.maxComputationTimeMs),s=!r.ignoreTrimWhitespace,a=new Map;function o(R){let N=a.get(R);return N===void 0&&(N=a.size,a.set(R,N)),N}const l=e.map(R=>o(R.trim())),c=n.map(R=>o(R.trim())),d=new Vo(l,e),u=new Vo(c,n),m=d.length+u.length<1700?this.dynamicProgrammingDiffing.compute(d,u,i,(R,N)=>e[R]===n[N]?n[N].length===0?.1:1+Math.log(1+n[N].length):.99):this.myersDiffingAlgorithm.compute(d,u,i);let f=m.diffs,g=m.hitTimeout;f=Po(d,u,f),f=Nu(d,u,f);const b=[],F=R=>{if(s)for(let N=0;NR.seq1Range.start-E===R.seq2Range.start-I);const N=R.seq1Range.start-E;F(N),E=R.seq1Range.endExclusive,I=R.seq2Range.endExclusive;const z=this.refineDiff(e,n,R,i,s,r);z.hitTimeout&&(g=!0);for(const $ of z.mappings)b.push($)}F(e.length-E);const _=new sr(e),P=new sr(n),O=Eo(b,_,P);let V=[];return r.computeMoves&&(V=this.computeMoves(O,e,n,l,c,i,s,r)),jn(()=>{function R(z,$){if(z.lineNumber<1||z.lineNumber>$.length)return!1;const L=$[z.lineNumber-1];return!(z.column<1||z.column>L.length+1)}function N(z,$){return!(z.startLineNumber<1||z.startLineNumber>$.length+1||z.endLineNumberExclusive<1||z.endLineNumberExclusive>$.length+1)}for(const z of O){if(!z.innerChanges)return!1;for(const $ of z.innerChanges)if(!(R($.modifiedRange.getStartPosition(),n)&&R($.modifiedRange.getEndPosition(),n)&&R($.originalRange.getStartPosition(),e)&&R($.originalRange.getEndPosition(),e)))return!1;if(!N(z.modified,n)||!N(z.original,e))return!1}return!0}),new rr(O,V,g)}computeMoves(e,n,r,i,s,a,o,l){return yu(e,n,r,i,s,a).map(u=>{const m=this.refineDiff(n,r,new ce(u.original.toOffsetRange(),u.modified.toOffsetRange()),a,o,l),f=Eo(m.mappings,new sr(n),new sr(r),!0);return new Qd(u,f)})}refineDiff(e,n,r,i,s,a){const l=Lu(r).toRangeMapping2(e,n),c=new or(e,l.originalRange,s),d=new or(n,l.modifiedRange,s),u=c.length+d.length<500?this.dynamicProgrammingDiffing.compute(c,d,i):this.myersDiffingAlgorithm.compute(c,d,i);let m=u.diffs;return m=Po(c,d,m),m=Wo(c,d,m,(g,b)=>g.findWordContaining(b)),a.extendToSubwords&&(m=Wo(c,d,m,(g,b)=>g.findSubWordContaining(b),!0)),m=Fu(c,d,m),m=Iu(c,d,m),{mappings:m.map(g=>new Ae(c.translateRange(g.seq1Range),d.translateRange(g.seq2Range))),hitTimeout:u.hitTimeout}}}function Lu(t){return new Le(new Z(t.seq1Range.start+1,t.seq1Range.endExclusive+1),new Z(t.seq2Range.start+1,t.seq2Range.endExclusive+1))}const Uo={getLegacy:()=>new du,getDefault:()=>new Du};function gt(t,e){const n=Math.pow(10,e);return Math.round(t*n)/n}class x{constructor(e,n,r,i=1){this._rgbaBrand=void 0,this.r=Math.min(255,Math.max(0,e))|0,this.g=Math.min(255,Math.max(0,n))|0,this.b=Math.min(255,Math.max(0,r))|0,this.a=gt(Math.max(Math.min(1,i),0),3)}static equals(e,n){return e.r===n.r&&e.g===n.g&&e.b===n.b&&e.a===n.a}}class Me{constructor(e,n,r,i){this._hslaBrand=void 0,this.h=Math.max(Math.min(360,e),0)|0,this.s=gt(Math.max(Math.min(1,n),0),3),this.l=gt(Math.max(Math.min(1,r),0),3),this.a=gt(Math.max(Math.min(1,i),0),3)}static equals(e,n){return e.h===n.h&&e.s===n.s&&e.l===n.l&&e.a===n.a}static fromRGBA(e){const n=e.r/255,r=e.g/255,i=e.b/255,s=e.a,a=Math.max(n,r,i),o=Math.min(n,r,i);let l=0,c=0;const d=(o+a)/2,u=a-o;if(u>0){switch(c=Math.min(d<=.5?u/(2*d):u/(2-2*d),1),a){case n:l=(r-i)/u+(r1&&(r-=1),r<1/6?e+(n-e)*6*r:r<1/2?n:r<2/3?e+(n-e)*(2/3-r)*6:e}static toRGBA(e){const n=e.h/360,{s:r,l:i,a:s}=e;let a,o,l;if(r===0)a=o=l=i;else{const c=i<.5?i*(1+r):i+r-i*r,d=2*i-c;a=Me._hue2rgb(d,c,n+1/3),o=Me._hue2rgb(d,c,n),l=Me._hue2rgb(d,c,n-1/3)}return new x(Math.round(a*255),Math.round(o*255),Math.round(l*255),s)}}class Gt{constructor(e,n,r,i){this._hsvaBrand=void 0,this.h=Math.max(Math.min(360,e),0)|0,this.s=gt(Math.max(Math.min(1,n),0),3),this.v=gt(Math.max(Math.min(1,r),0),3),this.a=gt(Math.max(Math.min(1,i),0),3)}static equals(e,n){return e.h===n.h&&e.s===n.s&&e.v===n.v&&e.a===n.a}static fromRGBA(e){const n=e.r/255,r=e.g/255,i=e.b/255,s=Math.max(n,r,i),a=Math.min(n,r,i),o=s-a,l=s===0?0:o/s;let c;return o===0?c=0:s===n?c=((r-i)/o%6+6)%6:s===r?c=(i-n)/o+2:c=(n-r)/o+4,new Gt(Math.round(c*60),l,s,e.a)}static toRGBA(e){const{h:n,s:r,v:i,a:s}=e,a=i*r,o=a*(1-Math.abs(n/60%2-1)),l=i-a;let[c,d,u]=[0,0,0];return n<60?(c=a,d=o):n<120?(c=o,d=a):n<180?(d=a,u=o):n<240?(d=o,u=a):n<300?(c=o,u=a):n<=360&&(c=a,u=o),c=Math.round((c+l)*255),d=Math.round((d+l)*255),u=Math.round((u+l)*255),new x(c,d,u,s)}}let lr=(ne=class{static fromHex(e){return ne.Format.CSS.parseHex(e)||ne.red}static equals(e,n){return!e&&!n?!0:!e||!n?!1:e.equals(n)}get hsla(){return this._hsla?this._hsla:Me.fromRGBA(this.rgba)}get hsva(){return this._hsva?this._hsva:Gt.fromRGBA(this.rgba)}constructor(e){if(e)if(e instanceof x)this.rgba=e;else if(e instanceof Me)this._hsla=e,this.rgba=Me.toRGBA(e);else if(e instanceof Gt)this._hsva=e,this.rgba=Gt.toRGBA(e);else throw new Error("Invalid color ctor argument");else throw new Error("Color needs a value")}equals(e){return!!e&&x.equals(this.rgba,e.rgba)&&Me.equals(this.hsla,e.hsla)&&Gt.equals(this.hsva,e.hsva)}getRelativeLuminance(){const e=ne._relativeLuminanceForComponent(this.rgba.r),n=ne._relativeLuminanceForComponent(this.rgba.g),r=ne._relativeLuminanceForComponent(this.rgba.b),i=.2126*e+.7152*n+.0722*r;return gt(i,4)}static _relativeLuminanceForComponent(e){const n=e/255;return n<=.03928?n/12.92:Math.pow((n+.055)/1.055,2.4)}isLighter(){return(this.rgba.r*299+this.rgba.g*587+this.rgba.b*114)/1e3>=128}isLighterThan(e){const n=this.getRelativeLuminance(),r=e.getRelativeLuminance();return n>r}isDarkerThan(e){const n=this.getRelativeLuminance(),r=e.getRelativeLuminance();return n>>0),this._toNumber32Bit}static getLighterColor(e,n,r){if(e.isLighterThan(n))return e;r=r||.5;const i=e.getRelativeLuminance(),s=n.getRelativeLuminance();return r=r*(s-i)/s,e.lighten(r)}static getDarkerColor(e,n,r){if(e.isDarkerThan(n))return e;r=r||.5;const i=e.getRelativeLuminance(),s=n.getRelativeLuminance();return r=r*(i-s)/i,e.darken(r)}},ne.white=new ne(new x(255,255,255,1)),ne.black=new ne(new x(0,0,0,1)),ne.red=new ne(new x(255,0,0,1)),ne.blue=new ne(new x(0,0,255,1)),ne.green=new ne(new x(0,255,0,1)),ne.cyan=new ne(new x(0,255,255,1)),ne.lightgrey=new ne(new x(211,211,211,1)),ne.transparent=new ne(new x(0,0,0,0)),ne);(function(t){(function(e){(function(n){function r(b){return b.rgba.a===1?`rgb(${b.rgba.r}, ${b.rgba.g}, ${b.rgba.b})`:t.Format.CSS.formatRGBA(b)}n.formatRGB=r;function i(b){return`rgba(${b.rgba.r}, ${b.rgba.g}, ${b.rgba.b}, ${+b.rgba.a.toFixed(2)})`}n.formatRGBA=i;function s(b){return b.hsla.a===1?`hsl(${b.hsla.h}, ${Math.round(b.hsla.s*100)}%, ${Math.round(b.hsla.l*100)}%)`:t.Format.CSS.formatHSLA(b)}n.formatHSL=s;function a(b){return`hsla(${b.hsla.h}, ${Math.round(b.hsla.s*100)}%, ${Math.round(b.hsla.l*100)}%, ${b.hsla.a.toFixed(2)})`}n.formatHSLA=a;function o(b){const F=b.toString(16);return F.length!==2?"0"+F:F}function l(b){return`#${o(b.rgba.r)}${o(b.rgba.g)}${o(b.rgba.b)}`}n.formatHex=l;function c(b,F=!1){return F&&b.rgba.a===1?t.Format.CSS.formatHex(b):`#${o(b.rgba.r)}${o(b.rgba.g)}${o(b.rgba.b)}${o(Math.round(b.rgba.a*255))}`}n.formatHexA=c;function d(b){return b.isOpaque()?t.Format.CSS.formatHex(b):t.Format.CSS.formatRGBA(b)}n.format=d;function u(b){var F,E,I,_,P,O,V;if(b==="transparent")return t.transparent;if(b.startsWith("#"))return f(b);if(b.startsWith("rgba(")){const R=b.match(/rgba\((?(?:\+|-)?\d+), *(?(?:\+|-)?\d+), *(?(?:\+|-)?\d+), *(?(?:\+|-)?\d+(\.\d+)?)\)/);if(!R)throw new Error("Invalid color format "+b);const N=parseInt(((F=R.groups)==null?void 0:F.r)??"0"),z=parseInt(((E=R.groups)==null?void 0:E.g)??"0"),$=parseInt(((I=R.groups)==null?void 0:I.b)??"0"),L=parseFloat(((_=R.groups)==null?void 0:_.a)??"0");return new t(new x(N,z,$,L))}if(b.startsWith("rgb(")){const R=b.match(/rgb\((?(?:\+|-)?\d+), *(?(?:\+|-)?\d+), *(?(?:\+|-)?\d+)\)/);if(!R)throw new Error("Invalid color format "+b);const N=parseInt(((P=R.groups)==null?void 0:P.r)??"0"),z=parseInt(((O=R.groups)==null?void 0:O.g)??"0"),$=parseInt(((V=R.groups)==null?void 0:V.b)??"0");return new t(new x(N,z,$))}return m(b)}n.parse=u;function m(b){switch(b){case"aliceblue":return new t(new x(240,248,255,1));case"antiquewhite":return new t(new x(250,235,215,1));case"aqua":return new t(new x(0,255,255,1));case"aquamarine":return new t(new x(127,255,212,1));case"azure":return new t(new x(240,255,255,1));case"beige":return new t(new x(245,245,220,1));case"bisque":return new t(new x(255,228,196,1));case"black":return new t(new x(0,0,0,1));case"blanchedalmond":return new t(new x(255,235,205,1));case"blue":return new t(new x(0,0,255,1));case"blueviolet":return new t(new x(138,43,226,1));case"brown":return new t(new x(165,42,42,1));case"burlywood":return new t(new x(222,184,135,1));case"cadetblue":return new t(new x(95,158,160,1));case"chartreuse":return new t(new x(127,255,0,1));case"chocolate":return new t(new x(210,105,30,1));case"coral":return new t(new x(255,127,80,1));case"cornflowerblue":return new t(new x(100,149,237,1));case"cornsilk":return new t(new x(255,248,220,1));case"crimson":return new t(new x(220,20,60,1));case"cyan":return new t(new x(0,255,255,1));case"darkblue":return new t(new x(0,0,139,1));case"darkcyan":return new t(new x(0,139,139,1));case"darkgoldenrod":return new t(new x(184,134,11,1));case"darkgray":return new t(new x(169,169,169,1));case"darkgreen":return new t(new x(0,100,0,1));case"darkgrey":return new t(new x(169,169,169,1));case"darkkhaki":return new t(new x(189,183,107,1));case"darkmagenta":return new t(new x(139,0,139,1));case"darkolivegreen":return new t(new x(85,107,47,1));case"darkorange":return new t(new x(255,140,0,1));case"darkorchid":return new t(new x(153,50,204,1));case"darkred":return new t(new x(139,0,0,1));case"darksalmon":return new t(new x(233,150,122,1));case"darkseagreen":return new t(new x(143,188,143,1));case"darkslateblue":return new t(new x(72,61,139,1));case"darkslategray":return new t(new x(47,79,79,1));case"darkslategrey":return new t(new x(47,79,79,1));case"darkturquoise":return new t(new x(0,206,209,1));case"darkviolet":return new t(new x(148,0,211,1));case"deeppink":return new t(new x(255,20,147,1));case"deepskyblue":return new t(new x(0,191,255,1));case"dimgray":return new t(new x(105,105,105,1));case"dimgrey":return new t(new x(105,105,105,1));case"dodgerblue":return new t(new x(30,144,255,1));case"firebrick":return new t(new x(178,34,34,1));case"floralwhite":return new t(new x(255,250,240,1));case"forestgreen":return new t(new x(34,139,34,1));case"fuchsia":return new t(new x(255,0,255,1));case"gainsboro":return new t(new x(220,220,220,1));case"ghostwhite":return new t(new x(248,248,255,1));case"gold":return new t(new x(255,215,0,1));case"goldenrod":return new t(new x(218,165,32,1));case"gray":return new t(new x(128,128,128,1));case"green":return new t(new x(0,128,0,1));case"greenyellow":return new t(new x(173,255,47,1));case"grey":return new t(new x(128,128,128,1));case"honeydew":return new t(new x(240,255,240,1));case"hotpink":return new t(new x(255,105,180,1));case"indianred":return new t(new x(205,92,92,1));case"indigo":return new t(new x(75,0,130,1));case"ivory":return new t(new x(255,255,240,1));case"khaki":return new t(new x(240,230,140,1));case"lavender":return new t(new x(230,230,250,1));case"lavenderblush":return new t(new x(255,240,245,1));case"lawngreen":return new t(new x(124,252,0,1));case"lemonchiffon":return new t(new x(255,250,205,1));case"lightblue":return new t(new x(173,216,230,1));case"lightcoral":return new t(new x(240,128,128,1));case"lightcyan":return new t(new x(224,255,255,1));case"lightgoldenrodyellow":return new t(new x(250,250,210,1));case"lightgray":return new t(new x(211,211,211,1));case"lightgreen":return new t(new x(144,238,144,1));case"lightgrey":return new t(new x(211,211,211,1));case"lightpink":return new t(new x(255,182,193,1));case"lightsalmon":return new t(new x(255,160,122,1));case"lightseagreen":return new t(new x(32,178,170,1));case"lightskyblue":return new t(new x(135,206,250,1));case"lightslategray":return new t(new x(119,136,153,1));case"lightslategrey":return new t(new x(119,136,153,1));case"lightsteelblue":return new t(new x(176,196,222,1));case"lightyellow":return new t(new x(255,255,224,1));case"lime":return new t(new x(0,255,0,1));case"limegreen":return new t(new x(50,205,50,1));case"linen":return new t(new x(250,240,230,1));case"magenta":return new t(new x(255,0,255,1));case"maroon":return new t(new x(128,0,0,1));case"mediumaquamarine":return new t(new x(102,205,170,1));case"mediumblue":return new t(new x(0,0,205,1));case"mediumorchid":return new t(new x(186,85,211,1));case"mediumpurple":return new t(new x(147,112,219,1));case"mediumseagreen":return new t(new x(60,179,113,1));case"mediumslateblue":return new t(new x(123,104,238,1));case"mediumspringgreen":return new t(new x(0,250,154,1));case"mediumturquoise":return new t(new x(72,209,204,1));case"mediumvioletred":return new t(new x(199,21,133,1));case"midnightblue":return new t(new x(25,25,112,1));case"mintcream":return new t(new x(245,255,250,1));case"mistyrose":return new t(new x(255,228,225,1));case"moccasin":return new t(new x(255,228,181,1));case"navajowhite":return new t(new x(255,222,173,1));case"navy":return new t(new x(0,0,128,1));case"oldlace":return new t(new x(253,245,230,1));case"olive":return new t(new x(128,128,0,1));case"olivedrab":return new t(new x(107,142,35,1));case"orange":return new t(new x(255,165,0,1));case"orangered":return new t(new x(255,69,0,1));case"orchid":return new t(new x(218,112,214,1));case"palegoldenrod":return new t(new x(238,232,170,1));case"palegreen":return new t(new x(152,251,152,1));case"paleturquoise":return new t(new x(175,238,238,1));case"palevioletred":return new t(new x(219,112,147,1));case"papayawhip":return new t(new x(255,239,213,1));case"peachpuff":return new t(new x(255,218,185,1));case"peru":return new t(new x(205,133,63,1));case"pink":return new t(new x(255,192,203,1));case"plum":return new t(new x(221,160,221,1));case"powderblue":return new t(new x(176,224,230,1));case"purple":return new t(new x(128,0,128,1));case"rebeccapurple":return new t(new x(102,51,153,1));case"red":return new t(new x(255,0,0,1));case"rosybrown":return new t(new x(188,143,143,1));case"royalblue":return new t(new x(65,105,225,1));case"saddlebrown":return new t(new x(139,69,19,1));case"salmon":return new t(new x(250,128,114,1));case"sandybrown":return new t(new x(244,164,96,1));case"seagreen":return new t(new x(46,139,87,1));case"seashell":return new t(new x(255,245,238,1));case"sienna":return new t(new x(160,82,45,1));case"silver":return new t(new x(192,192,192,1));case"skyblue":return new t(new x(135,206,235,1));case"slateblue":return new t(new x(106,90,205,1));case"slategray":return new t(new x(112,128,144,1));case"slategrey":return new t(new x(112,128,144,1));case"snow":return new t(new x(255,250,250,1));case"springgreen":return new t(new x(0,255,127,1));case"steelblue":return new t(new x(70,130,180,1));case"tan":return new t(new x(210,180,140,1));case"teal":return new t(new x(0,128,128,1));case"thistle":return new t(new x(216,191,216,1));case"tomato":return new t(new x(255,99,71,1));case"turquoise":return new t(new x(64,224,208,1));case"violet":return new t(new x(238,130,238,1));case"wheat":return new t(new x(245,222,179,1));case"white":return new t(new x(255,255,255,1));case"whitesmoke":return new t(new x(245,245,245,1));case"yellow":return new t(new x(255,255,0,1));case"yellowgreen":return new t(new x(154,205,50,1));default:return null}}function f(b){const F=b.length;if(F===0||b.charCodeAt(0)!==35)return null;if(F===7){const E=16*g(b.charCodeAt(1))+g(b.charCodeAt(2)),I=16*g(b.charCodeAt(3))+g(b.charCodeAt(4)),_=16*g(b.charCodeAt(5))+g(b.charCodeAt(6));return new t(new x(E,I,_,1))}if(F===9){const E=16*g(b.charCodeAt(1))+g(b.charCodeAt(2)),I=16*g(b.charCodeAt(3))+g(b.charCodeAt(4)),_=16*g(b.charCodeAt(5))+g(b.charCodeAt(6)),P=16*g(b.charCodeAt(7))+g(b.charCodeAt(8));return new t(new x(E,I,_,P/255))}if(F===4){const E=g(b.charCodeAt(1)),I=g(b.charCodeAt(2)),_=g(b.charCodeAt(3));return new t(new x(16*E+E,16*I+I,16*_+_))}if(F===5){const E=g(b.charCodeAt(1)),I=g(b.charCodeAt(2)),_=g(b.charCodeAt(3)),P=g(b.charCodeAt(4));return new t(new x(16*E+E,16*I+I,16*_+_,(16*P+P)/255))}return null}n.parseHex=f;function g(b){switch(b){case 48:return 0;case 49:return 1;case 50:return 2;case 51:return 3;case 52:return 4;case 53:return 5;case 54:return 6;case 55:return 7;case 56:return 8;case 57:return 9;case 97:return 10;case 65:return 10;case 98:return 11;case 66:return 11;case 99:return 12;case 67:return 12;case 100:return 13;case 68:return 13;case 101:return 14;case 69:return 14;case 102:return 15;case 70:return 15}return 0}})(e.CSS||(e.CSS={}))})(t.Format||(t.Format={}))})(lr||(lr={}));function Bo(t){const e=[];for(const n of t){const r=Number(n);(r||r===0&&n.replace(/\s/g,"")!=="")&&e.push(r)}return e}function Ci(t,e,n,r){return{red:t/255,blue:n/255,green:e/255,alpha:r}}function Cn(t,e){const n=e.index,r=e[0].length;if(n===void 0)return;const i=t.positionAt(n);return{startLineNumber:i.lineNumber,startColumn:i.column,endLineNumber:i.lineNumber,endColumn:i.column+r}}function Au(t,e){if(!t)return;const n=lr.Format.CSS.parseHex(e);if(n)return{range:t,color:Ci(n.rgba.r,n.rgba.g,n.rgba.b,n.rgba.a)}}function qo(t,e,n){if(!t||e.length!==1)return;const i=e[0].values(),s=Bo(i);return{range:t,color:Ci(s[0],s[1],s[2],n?s[3]:1)}}function jo(t,e,n){if(!t||e.length!==1)return;const i=e[0].values(),s=Bo(i),a=new lr(new Me(s[0],s[1]/100,s[2]/100,n?s[3]:1));return{range:t,color:Ci(a.rgba.r,a.rgba.g,a.rgba.b,a.rgba.a)}}function kn(t,e){return typeof t=="string"?[...t.matchAll(e)]:t.findMatches(e)}function Mu(t){const e=[],n=new RegExp(`\\b(rgb|rgba|hsl|hsla)(\\([0-9\\s,.\\%]*\\))|^(#)([A-Fa-f0-9]{3})\\b|^(#)([A-Fa-f0-9]{4})\\b|^(#)([A-Fa-f0-9]{6})\\b|^(#)([A-Fa-f0-9]{8})\\b|(?<=['"\\s])(#)([A-Fa-f0-9]{3})\\b|(?<=['"\\s])(#)([A-Fa-f0-9]{4})\\b|(?<=['"\\s])(#)([A-Fa-f0-9]{6})\\b|(?<=['"\\s])(#)([A-Fa-f0-9]{8})\\b`,"gm"),r=kn(t,n);if(r.length>0)for(const i of r){const s=i.filter(c=>c!==void 0),a=s[1],o=s[2];if(!o)continue;let l;if(a==="rgb"){const c=/^\(\s*(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]|[0-9])\s*,\s*(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]|[0-9])\s*,\s*(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]|[0-9])\s*\)$/gm;l=qo(Cn(t,i),kn(o,c),!1)}else if(a==="rgba"){const c=/^\(\s*(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]|[0-9])\s*,\s*(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]|[0-9])\s*,\s*(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]|[0-9])\s*,\s*(0[.][0-9]+|[.][0-9]+|[01][.]|[01])\s*\)$/gm;l=qo(Cn(t,i),kn(o,c),!0)}else if(a==="hsl"){const c=/^\(\s*((?:360(?:\.0+)?|(?:36[0]|3[0-5][0-9]|[12][0-9][0-9]|[1-9]?[0-9])(?:\.\d+)?))\s*[\s,]\s*(100|\d{1,2}[.]\d*|\d{1,2})%\s*[\s,]\s*(100|\d{1,2}[.]\d*|\d{1,2})%\s*\)$/gm;l=jo(Cn(t,i),kn(o,c),!1)}else if(a==="hsla"){const c=/^\(\s*((?:360(?:\.0+)?|(?:36[0]|3[0-5][0-9]|[12][0-9][0-9]|[1-9]?[0-9])(?:\.\d+)?))\s*[\s,]\s*(100|\d{1,2}[.]\d*|\d{1,2})%\s*[\s,]\s*(100|\d{1,2}[.]\d*|\d{1,2})%\s*[\s,]\s*(0[.][0-9]+|[.][0-9]+|[01][.]0*|[01])\s*\)$/gm;l=jo(Cn(t,i),kn(o,c),!0)}else a==="#"&&(l=Au(Cn(t,i),a+o));l&&e.push(l)}return e}function zu(t){return!t||typeof t.getValue!="function"||typeof t.positionAt!="function"?[]:Mu(t)}const Pu=/^-+|-+$/g,Ho=100,Tu=5;function Ou(t,e){var r;let n=[];if(e.findRegionSectionHeaders&&((r=e.foldingRules)!=null&&r.markers)){const i=Wu(t,e);n=n.concat(i)}if(e.findMarkSectionHeaders){const i=Vu(t,e);n=n.concat(i)}return n}function Wu(t,e){const n=[],r=t.getLineCount();for(let i=1;i<=r;i++){const s=t.getLineContent(i),a=s.match(e.foldingRules.markers.start);if(a){const o={startLineNumber:i,startColumn:a[0].length+1,endLineNumber:i,endColumn:s.length+1};if(o.endColumn>o.startColumn){const l={range:o,...$u(s.substring(a[0].length)),shouldBeInComments:!1};(l.text||l.hasSeparatorLine)&&n.push(l)}}}return n}function Vu(t,e){const n=[],r=t.getLineCount();if(!e.markSectionHeaderRegex||e.markSectionHeaderRegex.trim()==="")return n;const i=$d(e.markSectionHeaderRegex),s=new RegExp(e.markSectionHeaderRegex,`gdm${i?"s":""}`);if(Ph(s))return n;for(let a=1;a<=r;a+=Ho-Tu){const o=Math.min(a+Ho-1,r),l=[];for(let u=a;u<=o;u++)l.push(t.getLineContent(u));const c=l.join(`
+`);s.lastIndex=0;let d;for(;(d=s.exec(c))!==null;){const u=c.substring(0,d.index),m=(u.match(/\n/g)||[]).length,f=a+m,g=d[0].split(`
+`),b=g.length,F=f+b-1,E=u.lastIndexOf(`
+`)+1,I=d.index-E+1,_=g[g.length-1],P=b===1?I+d[0].length:_.length+1,O={startLineNumber:f,startColumn:I,endLineNumber:F,endColumn:P},V=(d.groups??{}).label??"",R=((d.groups??{}).separator??"")!=="",N={range:O,text:V,hasSeparatorLine:R,shouldBeInComments:!0};(N.text||N.hasSeparatorLine)&&(n.length===0||n[n.length-1].range.endLineNumber{this.completeCallback=e,this.errorCallback=n})}complete(e){return this.isSettled?Promise.resolve():new Promise(n=>{this.completeCallback(e),this.outcome={outcome:0,value:e},n()})}error(e){return this.isSettled?Promise.resolve():new Promise(n=>{this.errorCallback(e),this.outcome={outcome:1,value:e},n()})}cancel(){return this.error(new Os)}}var Go;(function(t){async function e(r){let i;const s=await Promise.all(r.map(a=>a.then(o=>o,o=>{i||(i=o)})));if(typeof i<"u")throw i;return s}t.settled=e;function n(r){return new Promise(async(i,s)=>{try{await r(i,s)}catch(a){s(a)}})}t.withAsyncBody=n})(Go||(Go={}));class Bu{constructor(){this._unsatisfiedConsumers=[],this._unconsumedValues=[]}get hasFinalValue(){return!!this._finalValue}produce(e){if(this._ensureNoFinalValue(),this._unsatisfiedConsumers.length>0){const n=this._unsatisfiedConsumers.shift();this._resolveOrRejectDeferred(n,e)}else this._unconsumedValues.push(e)}produceFinal(e){this._ensureNoFinalValue(),this._finalValue=e;for(const n of this._unsatisfiedConsumers)this._resolveOrRejectDeferred(n,e);this._unsatisfiedConsumers.length=0}_ensureNoFinalValue(){if(this._finalValue)throw new we("ProducerConsumer: cannot produce after final value has been set")}_resolveOrRejectDeferred(e,n){n.ok?e.complete(n.value):e.error(n.error)}consume(){if(this._unconsumedValues.length>0||this._finalValue){const e=this._unconsumedValues.length>0?this._unconsumedValues.shift():this._finalValue;return e.ok?Promise.resolve(e.value):Promise.reject(e.error)}else{const e=new Uu;return this._unsatisfiedConsumers.push(e),e.p}}}const Fe=class Fe{constructor(e,n){this._onReturn=n,this._producerConsumer=new Bu,this._iterator={next:()=>this._producerConsumer.consume(),return:()=>{var r;return(r=this._onReturn)==null||r.call(this),Promise.resolve({done:!0,value:void 0})},throw:async r=>(this._finishError(r),{done:!0,value:void 0})},queueMicrotask(async()=>{const r=e({emitOne:i=>this._producerConsumer.produce({ok:!0,value:{done:!1,value:i}}),emitMany:i=>{for(const s of i)this._producerConsumer.produce({ok:!0,value:{done:!1,value:s}})},reject:i=>this._finishError(i)});if(!this._producerConsumer.hasFinalValue)try{await r,this._finishOk()}catch(i){this._finishError(i)}})}static fromArray(e){return new Fe(n=>{n.emitMany(e)})}static fromPromise(e){return new Fe(async n=>{n.emitMany(await e)})}static fromPromisesResolveOrder(e){return new Fe(async n=>{await Promise.all(e.map(async r=>n.emitOne(await r)))})}static merge(e){return new Fe(async n=>{await Promise.all(e.map(async r=>{for await(const i of r)n.emitOne(i)}))})}static map(e,n){return new Fe(async r=>{for await(const i of e)r.emitOne(n(i))})}map(e){return Fe.map(this,e)}static coalesce(e){return Fe.filter(e,n=>!!n)}coalesce(){return Fe.coalesce(this)}static filter(e,n){return new Fe(async r=>{for await(const i of e)n(i)&&r.emitOne(i)})}filter(e){return Fe.filter(this,e)}_finishOk(){this._producerConsumer.hasFinalValue||this._producerConsumer.produceFinal({ok:!0,value:{done:!0,value:void 0}})}_finishError(e){this._producerConsumer.hasFinalValue||this._producerConsumer.produceFinal({ok:!1,error:e})}[Symbol.asyncIterator](){return this._iterator}};Fe.EMPTY=Fe.fromArray([]);let Jo=Fe;class qu{constructor(e){this.values=e,this.prefixSum=new Uint32Array(e.length),this.prefixSumValidIndex=new Int32Array(1),this.prefixSumValidIndex[0]=-1}insertValues(e,n){e=Ot(e);const r=this.values,i=this.prefixSum,s=n.length;return s===0?!1:(this.values=new Uint32Array(r.length+s),this.values.set(r.subarray(0,e),0),this.values.set(r.subarray(e),e+s),this.values.set(n,e),e-1=0&&this.prefixSum.set(i.subarray(0,this.prefixSumValidIndex[0]+1)),!0)}setValue(e,n){return e=Ot(e),n=Ot(n),this.values[e]===n?!1:(this.values[e]=n,e-1=r.length)return!1;const s=r.length-e;return n>=s&&(n=s),n===0?!1:(this.values=new Uint32Array(r.length-n),this.values.set(r.subarray(0,e),0),this.values.set(r.subarray(e+n),e),this.prefixSum=new Uint32Array(this.values.length),e-1=0&&this.prefixSum.set(i.subarray(0,this.prefixSumValidIndex[0]+1)),!0)}getTotalSum(){return this.values.length===0?0:this._getPrefixSum(this.values.length-1)}getPrefixSum(e){return e<0?0:(e=Ot(e),this._getPrefixSum(e))}_getPrefixSum(e){if(e<=this.prefixSumValidIndex[0])return this.prefixSum[e];let n=this.prefixSumValidIndex[0]+1;n===0&&(this.prefixSum[0]=this.values[0],n++),e>=this.values.length&&(e=this.values.length-1);for(let r=n;r<=e;r++)this.prefixSum[r]=this.prefixSum[r-1]+this.values[r];return this.prefixSumValidIndex[0]=Math.max(this.prefixSumValidIndex[0],e),this.prefixSum[e]}getIndexOf(e){e=Math.floor(e),this.getTotalSum();let n=0,r=this.values.length-1,i=0,s=0,a=0;for(;n<=r;)if(i=n+(r-n)/2|0,s=this.prefixSum[i],a=s-this.values[i],e=s)n=i+1;else break;return new ju(i,e-a)}}class ju{constructor(e,n){this.index=e,this.remainder=n,this._prefixSumIndexOfResultBrand=void 0,this.index=e,this.remainder=n}}class Hu{constructor(e,n,r,i){this._uri=e,this._lines=n,this._eol=r,this._versionId=i,this._lineStarts=null,this._cachedTextValue=null}dispose(){this._lines.length=0}get version(){return this._versionId}getText(){return this._cachedTextValue===null&&(this._cachedTextValue=this._lines.join(this._eol)),this._cachedTextValue}onEvents(e){e.eol&&e.eol!==this._eol&&(this._eol=e.eol,this._lineStarts=null);const n=e.changes;for(const r of n)this._acceptDeleteRange(r.range),this._acceptInsertText(new re(r.range.startLineNumber,r.range.startColumn),r.text);this._versionId=e.versionId,this._cachedTextValue=null}_ensureLineStarts(){if(!this._lineStarts){const e=this._eol.length,n=this._lines.length,r=new Uint32Array(n);for(let i=0;ie.push(this._models[n])),e}$acceptNewModel(e){this._models[e.url]=new Ju(li.parse(e.url),e.lines,e.EOL,e.versionId)}$acceptModelChanged(e,n){if(!this._models[e])return;this._models[e].onEvents(n)}$acceptRemovedModel(e){this._models[e]&&delete this._models[e]}}class Ju extends Hu{get uri(){return this._uri}get eol(){return this._eol}getValue(){return this.getText()}findMatches(e){const n=[];for(let r=0;rthis._lines.length)n=this._lines.length,r=this._lines[n-1].length+1,i=!0;else{const s=this._lines[n-1].length+1;r<1?(r=1,i=!0):r>s&&(r=s,i=!0)}return i?{lineNumber:n,column:r}:e}}const Lt=class Lt{constructor(e=null){this._foreignModule=e,this._requestHandlerBrand=void 0,this._workerTextModelSyncServer=new Gu}dispose(){}async $ping(){return"pong"}_getModel(e){return this._workerTextModelSyncServer.getModel(e)}getModels(){return this._workerTextModelSyncServer.getModels()}$acceptNewModel(e){this._workerTextModelSyncServer.$acceptNewModel(e)}$acceptModelChanged(e,n){this._workerTextModelSyncServer.$acceptModelChanged(e,n)}$acceptRemovedModel(e){this._workerTextModelSyncServer.$acceptRemovedModel(e)}async $computeUnicodeHighlights(e,n,r){const i=this._getModel(e);return i?Xd.computeUnicodeHighlights(i,n,r):{ranges:[],hasMore:!1,ambiguousCharacterCount:0,invisibleCharacterCount:0,nonBasicAsciiCharacterCount:0}}async $findSectionHeaders(e,n){const r=this._getModel(e);return r?Ou(r,n):[]}async $computeDiff(e,n,r,i){const s=this._getModel(e),a=this._getModel(n);return!s||!a?null:Lt.computeDiff(s,a,r,i)}static computeDiff(e,n,r,i){const s=i==="advanced"?Uo.getDefault():Uo.getLegacy(),a=e.getLinesContent(),o=n.getLinesContent(),l=s.computeDiff(a,o,r),c=l.changes.length>0?!1:this._modelsAreIdentical(e,n);function d(u){return u.map(m=>{var f;return[m.original.startLineNumber,m.original.endLineNumberExclusive,m.modified.startLineNumber,m.modified.endLineNumberExclusive,(f=m.innerChanges)==null?void 0:f.map(g=>[g.originalRange.startLineNumber,g.originalRange.startColumn,g.originalRange.endLineNumber,g.originalRange.endColumn,g.modifiedRange.startLineNumber,g.modifiedRange.startColumn,g.modifiedRange.endLineNumber,g.modifiedRange.endColumn])]})}return{identical:c,quitEarly:l.hitTimeout,changes:d(l.changes),moves:l.moves.map(u=>[u.lineRangeMapping.original.startLineNumber,u.lineRangeMapping.original.endLineNumberExclusive,u.lineRangeMapping.modified.startLineNumber,u.lineRangeMapping.modified.endLineNumberExclusive,d(u.changes)])}}static _modelsAreIdentical(e,n){const r=e.getLineCount(),i=n.getLineCount();if(r!==i)return!1;for(let s=1;s<=r;s++){const a=e.getLineContent(s),o=n.getLineContent(s);if(a!==o)return!1}return!0}async $computeMoreMinimalEdits(e,n,r){const i=this._getModel(e);if(!i)return n;const s=[];let a;n=n.slice(0).sort((l,c)=>{if(l.range&&c.range)return J.compareRangesUsingStarts(l.range,c.range);const d=l.range?0:1,u=c.range?0:1;return d-u});let o=0;for(let l=1;lLt._diffLimit){s.push({range:l,text:c});continue}const m=nd(u,c,r),f=i.offsetAt(J.lift(l).getStartPosition());for(const g of m){const b=i.positionAt(f+g.originalStart),F=i.positionAt(f+g.originalStart+g.originalLength),E={text:c.substr(g.modifiedStart,g.modifiedLength),range:{startLineNumber:b.lineNumber,startColumn:b.column,endLineNumber:F.lineNumber,endColumn:F.column}};i.getValueInRange(E.range)!==E.text&&s.push(E)}}return typeof a=="number"&&s.push({eol:a,text:"",range:{startLineNumber:0,startColumn:0,endLineNumber:0,endColumn:0}}),s}async $computeLinks(e){const n=this._getModel(e);return n?od(n):null}async $computeDefaultDocumentColors(e){const n=this._getModel(e);return n?zu(n):null}async $textualSuggest(e,n,r,i){const s=new Jn,a=new RegExp(r,i),o=new Set;e:for(const l of e){const c=this._getModel(l);if(c){for(const d of c.words(a))if(!(d===n||!isNaN(Number(d)))&&(o.add(d),o.size>Lt._suggestionsLimit))break e}}return{words:Array.from(o),duration:s.elapsed()}}async $computeWordRanges(e,n,r,i){const s=this._getModel(e);if(!s)return Object.create(null);const a=new RegExp(r,i),o=Object.create(null);for(let l=n.startLineNumber;l{const i=_i.getChannel(r),a={host:new Proxy({},{get(o,l,c){if(l!=="then"){if(typeof l!="string")throw new Error("Not supported");return(...d)=>i.$fhr(l,d)}}}),getMirrorModels:()=>n.requestHandler.getModels()};return e=t(a),new ki(e)});return e}function Yu(t){self.onmessage=e=>{Xu(n=>t(n,e.data))}}var p;(function(t){t[t.Ident=0]="Ident",t[t.AtKeyword=1]="AtKeyword",t[t.String=2]="String",t[t.BadString=3]="BadString",t[t.UnquotedString=4]="UnquotedString",t[t.Hash=5]="Hash",t[t.Num=6]="Num",t[t.Percentage=7]="Percentage",t[t.Dimension=8]="Dimension",t[t.UnicodeRange=9]="UnicodeRange",t[t.CDO=10]="CDO",t[t.CDC=11]="CDC",t[t.Colon=12]="Colon",t[t.SemiColon=13]="SemiColon",t[t.CurlyL=14]="CurlyL",t[t.CurlyR=15]="CurlyR",t[t.ParenthesisL=16]="ParenthesisL",t[t.ParenthesisR=17]="ParenthesisR",t[t.BracketL=18]="BracketL",t[t.BracketR=19]="BracketR",t[t.Whitespace=20]="Whitespace",t[t.Includes=21]="Includes",t[t.Dashmatch=22]="Dashmatch",t[t.SubstringOperator=23]="SubstringOperator",t[t.PrefixOperator=24]="PrefixOperator",t[t.SuffixOperator=25]="SuffixOperator",t[t.Delim=26]="Delim",t[t.EMS=27]="EMS",t[t.EXS=28]="EXS",t[t.Length=29]="Length",t[t.Angle=30]="Angle",t[t.Time=31]="Time",t[t.Freq=32]="Freq",t[t.Exclamation=33]="Exclamation",t[t.Resolution=34]="Resolution",t[t.Comma=35]="Comma",t[t.Charset=36]="Charset",t[t.EscapedJavaScript=37]="EscapedJavaScript",t[t.BadEscapedJavaScript=38]="BadEscapedJavaScript",t[t.Comment=39]="Comment",t[t.SingleLineComment=40]="SingleLineComment",t[t.EOF=41]="EOF",t[t.ContainerQueryLength=42]="ContainerQueryLength",t[t.CustomToken=43]="CustomToken"})(p||(p={}));class Xo{constructor(e){this.source=e,this.len=e.length,this.position=0}substring(e,n=this.position){return this.source.substring(e,n)}eos(){return this.len<=this.position}pos(){return this.position}goBackTo(e){this.position=e}goBack(e){this.position-=e}advance(e){this.position+=e}nextChar(){return this.source.charCodeAt(this.position++)||0}peekChar(e=0){return this.source.charCodeAt(this.position+e)||0}lookbackChar(e=0){return this.source.charCodeAt(this.position-e)||0}advanceIfChar(e){return e===this.source.charCodeAt(this.position)?(this.position++,!0):!1}advanceIfChars(e){if(this.position+e.length>this.source.length)return!1;let n=0;for(;nn&&r===rl?(e=!0,!1):(n=r===Ei,!0)),e&&this.stream.advance(1),!0}return!1}_number(){let e=0,n;return this.stream.peekChar()===al&&(e=1),n=this.stream.peekChar(e),n>=_n&&n<=En?(this.stream.advance(e+1),this.stream.advanceWhileChar(r=>r>=_n&&r<=En||e===0&&r===al),!0):!1}_newline(e){const n=this.stream.peekChar();switch(n){case Xt:case Rn:case Jt:return this.stream.advance(1),e.push(String.fromCharCode(n)),n===Xt&&this.stream.advanceIfChar(Jt)&&e.push(`
+`),!0}return!1}_escape(e,n){let r=this.stream.peekChar();if(r===Fi){this.stream.advance(1),r=this.stream.peekChar();let i=0;for(;i<6&&(r>=_n&&r<=En||r>=cr&&r<=Yo||r>=hr&&r<=Ko);)this.stream.advance(1),r=this.stream.peekChar(),i++;if(i>0){try{const s=parseInt(this.stream.substring(this.stream.pos()-i),16);s&&e.push(String.fromCharCode(s))}catch{}return r===Ri||r===Ni?this.stream.advance(1):this._newline([]),!0}if(r!==Xt&&r!==Rn&&r!==Jt)return this.stream.advance(1),e.push(String.fromCharCode(r)),!0;if(n)return this._newline(e)}return!1}_stringChar(e,n){const r=this.stream.peekChar();return r!==0&&r!==e&&r!==Fi&&r!==Xt&&r!==Rn&&r!==Jt?(this.stream.advance(1),n.push(String.fromCharCode(r)),!0):!1}_string(e){if(this.stream.peekChar()===sl||this.stream.peekChar()===il){const n=this.stream.nextChar();for(e.push(String.fromCharCode(n));this._stringChar(n,e)||this._escape(e,!0););return this.stream.peekChar()===n?(this.stream.nextChar(),e.push(String.fromCharCode(n)),p.String):p.BadString}return null}_unquotedChar(e){const n=this.stream.peekChar();return n!==0&&n!==Fi&&n!==sl&&n!==il&&n!==tl&&n!==nl&&n!==Ri&&n!==Ni&&n!==Jt&&n!==Rn&&n!==Xt?(this.stream.advance(1),e.push(String.fromCharCode(n)),!0):!1}_unquotedString(e){let n=!1;for(;this._unquotedChar(e)||this._escape(e);)n=!0;return n}_whitespace(){return this.stream.advanceWhileChar(n=>n===Ri||n===Ni||n===Jt||n===Rn||n===Xt)>0}_name(e){let n=!1;for(;this._identChar(e)||this._escape(e);)n=!0;return n}ident(e){const n=this.stream.pos();if(this._minus(e)){if(this._minus(e)||this._identFirstChar(e)||this._escape(e)){for(;this._identChar(e)||this._escape(e););return!0}}else if(this._identFirstChar(e)||this._escape(e)){for(;this._identChar(e)||this._escape(e););return!0}return this.stream.goBackTo(n),!1}_identFirstChar(e){const n=this.stream.peekChar();return n===el||n>=cr&&n<=Qo||n>=hr&&n<=Zo||n>=128&&n<=65535?(this.stream.advance(1),e.push(String.fromCharCode(n)),!0):!1}_minus(e){const n=this.stream.peekChar();return n===Et?(this.stream.advance(1),e.push(String.fromCharCode(n)),!0):!1}_identChar(e){const n=this.stream.peekChar();return n===el||n===Et||n>=cr&&n<=Qo||n>=hr&&n<=Zo||n>=_n&&n<=En||n>=128&&n<=65535?(this.stream.advance(1),e.push(String.fromCharCode(n)),!0):!1}_unicodeRange(){if(this.stream.advanceIfChar(mp)){const e=r=>r>=_n&&r<=En||r>=cr&&r<=Yo||r>=hr&&r<=Ko,n=this.stream.advanceWhileChar(e)+this.stream.advanceWhileChar(r=>r===pp);if(n>=1&&n<=6)if(this.stream.advanceIfChar(Et)){const r=this.stream.advanceWhileChar(e);if(r>=1&&r<=6)return!0}else return!0}return!1}}function pe(t,e){if(t.length0?t.lastIndexOf(e)===n:n===0?t===e:!1}function fp(t,e,n=4){let r=Math.abs(t.length-e.length);if(r>n)return 0;let i=[],s=[],a,o;for(a=0;a0;)(e&1)===1&&(n+=t),t+=t,e=e>>>1;return n}var v;(function(t){t[t.Undefined=0]="Undefined",t[t.Identifier=1]="Identifier",t[t.Stylesheet=2]="Stylesheet",t[t.Ruleset=3]="Ruleset",t[t.Selector=4]="Selector",t[t.SimpleSelector=5]="SimpleSelector",t[t.SelectorInterpolation=6]="SelectorInterpolation",t[t.SelectorCombinator=7]="SelectorCombinator",t[t.SelectorCombinatorParent=8]="SelectorCombinatorParent",t[t.SelectorCombinatorSibling=9]="SelectorCombinatorSibling",t[t.SelectorCombinatorAllSiblings=10]="SelectorCombinatorAllSiblings",t[t.SelectorCombinatorShadowPiercingDescendant=11]="SelectorCombinatorShadowPiercingDescendant",t[t.Page=12]="Page",t[t.PageBoxMarginBox=13]="PageBoxMarginBox",t[t.ClassSelector=14]="ClassSelector",t[t.IdentifierSelector=15]="IdentifierSelector",t[t.ElementNameSelector=16]="ElementNameSelector",t[t.PseudoSelector=17]="PseudoSelector",t[t.AttributeSelector=18]="AttributeSelector",t[t.Declaration=19]="Declaration",t[t.Declarations=20]="Declarations",t[t.Property=21]="Property",t[t.Expression=22]="Expression",t[t.BinaryExpression=23]="BinaryExpression",t[t.Term=24]="Term",t[t.Operator=25]="Operator",t[t.Value=26]="Value",t[t.StringLiteral=27]="StringLiteral",t[t.URILiteral=28]="URILiteral",t[t.EscapedValue=29]="EscapedValue",t[t.Function=30]="Function",t[t.NumericValue=31]="NumericValue",t[t.HexColorValue=32]="HexColorValue",t[t.RatioValue=33]="RatioValue",t[t.MixinDeclaration=34]="MixinDeclaration",t[t.MixinReference=35]="MixinReference",t[t.VariableName=36]="VariableName",t[t.VariableDeclaration=37]="VariableDeclaration",t[t.Prio=38]="Prio",t[t.Interpolation=39]="Interpolation",t[t.NestedProperties=40]="NestedProperties",t[t.ExtendsReference=41]="ExtendsReference",t[t.SelectorPlaceholder=42]="SelectorPlaceholder",t[t.Debug=43]="Debug",t[t.If=44]="If",t[t.Else=45]="Else",t[t.For=46]="For",t[t.Each=47]="Each",t[t.While=48]="While",t[t.MixinContentReference=49]="MixinContentReference",t[t.MixinContentDeclaration=50]="MixinContentDeclaration",t[t.Media=51]="Media",t[t.Keyframe=52]="Keyframe",t[t.FontFace=53]="FontFace",t[t.Import=54]="Import",t[t.Namespace=55]="Namespace",t[t.Invocation=56]="Invocation",t[t.FunctionDeclaration=57]="FunctionDeclaration",t[t.ReturnStatement=58]="ReturnStatement",t[t.MediaQuery=59]="MediaQuery",t[t.MediaCondition=60]="MediaCondition",t[t.MediaFeature=61]="MediaFeature",t[t.FunctionParameter=62]="FunctionParameter",t[t.FunctionArgument=63]="FunctionArgument",t[t.KeyframeSelector=64]="KeyframeSelector",t[t.ViewPort=65]="ViewPort",t[t.Document=66]="Document",t[t.AtApplyRule=67]="AtApplyRule",t[t.CustomPropertyDeclaration=68]="CustomPropertyDeclaration",t[t.CustomPropertySet=69]="CustomPropertySet",t[t.ListEntry=70]="ListEntry",t[t.Supports=71]="Supports",t[t.SupportsCondition=72]="SupportsCondition",t[t.NamespacePrefix=73]="NamespacePrefix",t[t.GridLine=74]="GridLine",t[t.Plugin=75]="Plugin",t[t.UnknownAtRule=76]="UnknownAtRule",t[t.Use=77]="Use",t[t.ModuleConfiguration=78]="ModuleConfiguration",t[t.Forward=79]="Forward",t[t.ForwardVisibility=80]="ForwardVisibility",t[t.Module=81]="Module",t[t.UnicodeRange=82]="UnicodeRange",t[t.Layer=83]="Layer",t[t.LayerNameList=84]="LayerNameList",t[t.LayerName=85]="LayerName",t[t.PropertyAtRule=86]="PropertyAtRule",t[t.Container=87]="Container"})(v||(v={}));var Q;(function(t){t[t.Mixin=0]="Mixin",t[t.Rule=1]="Rule",t[t.Variable=2]="Variable",t[t.Function=3]="Function",t[t.Keyframe=4]="Keyframe",t[t.Unknown=5]="Unknown",t[t.Module=6]="Module",t[t.Forward=7]="Forward",t[t.ForwardVisibility=8]="ForwardVisibility",t[t.Property=9]="Property"})(Q||(Q={}));function Ii(t,e){let n=null;return!t||et.end?null:(t.accept(r=>r.offset===-1&&r.length===-1?!0:r.offset<=e&&r.end>=e?(n?r.length<=n.length&&(n=r):n=r,!0):!1),n)}function Di(t,e){let n=Ii(t,e);const r=[];for(;n;)r.unshift(n),n=n.parent;return r}function bp(t){const e=t.findParent(v.Declaration),n=e&&e.getValue();return n&&n.encloses(t)?e:null}class W{get end(){return this.offset+this.length}constructor(e=-1,n=-1,r){this.parent=null,this.offset=e,this.length=n,r&&(this.nodeType=r)}set type(e){this.nodeType=e}get type(){return this.nodeType||v.Undefined}getTextProvider(){let e=this;for(;e&&!e.textProvider;)e=e.parent;return e?e.textProvider:()=>"unknown"}getText(){return this.getTextProvider()(this.offset,this.length)}matches(e){return this.length===e.length&&this.getTextProvider()(this.offset,this.length)===e}startsWith(e){return this.length>=e.length&&this.getTextProvider()(this.offset,e.length)===e}endsWith(e){return this.length>=e.length&&this.getTextProvider()(this.end-e.length,e.length)===e}accept(e){if(e(this)&&this.children)for(const n of this.children)n.accept(e)}acceptVisitor(e){this.accept(e.visitNode.bind(e))}adoptChild(e,n=-1){if(e.parent&&e.parent.children){const i=e.parent.children.indexOf(e);i>=0&&e.parent.children.splice(i,1)}e.parent=this;let r=this.children;return r||(r=this.children=[]),n!==-1?r.splice(n,0,e):r.push(e),e}attachTo(e,n=-1){return e&&e.adoptChild(this,n),this}collectIssues(e){this.issues&&e.push.apply(e,this.issues)}addIssue(e){this.issues||(this.issues=[]),this.issues.push(e)}hasIssue(e){return Array.isArray(this.issues)&&this.issues.some(n=>n.getRule()===e)}isErroneous(e=!1){return this.issues&&this.issues.length>0?!0:e&&Array.isArray(this.children)&&this.children.some(n=>n.isErroneous(!0))}setNode(e,n,r=-1){return n?(n.attachTo(this,r),this[e]=n,!0):!1}addChild(e){return e?(this.children||(this.children=[]),e.attachTo(this),this.updateOffsetAndLength(e),!0):!1}updateOffsetAndLength(e){(e.offsetthis.end||this.length===-1)&&(this.length=n-this.offset)}hasChildren(){return!!this.children&&this.children.length>0}getChildren(){return this.children?this.children.slice(0):[]}getChild(e){return this.children&&e=0;r--)if(n=this.children[r],n.offset<=e)return n}return null}findChildAtOffset(e,n){const r=this.findFirstChildBeforeOffset(e);return r&&r.end>=e?n&&r.findChildAtOffset(e,!0)||r:null}encloses(e){return this.offset<=e.offset&&this.offset+this.length>=e.offset+e.length}getParent(){let e=this.parent;for(;e instanceof ye;)e=e.parent;return e}findParent(e){let n=this;for(;n&&n.type!==e;)n=n.parent;return n}findAParent(...e){let n=this;for(;n&&!e.some(r=>n.type===r);)n=n.parent;return n}setData(e,n){this.options||(this.options={}),this.options[e]=n}getData(e){return!this.options||!this.options.hasOwnProperty(e)?null:this.options[e]}}class ye extends W{constructor(e,n=-1){super(-1,-1),this.attachTo(e,n),this.offset=-1,this.length=-1}}class wp extends W{constructor(e,n){super(e,n)}get type(){return v.UnicodeRange}setRangeStart(e){return this.setNode("rangeStart",e)}getRangeStart(){return this.rangeStart}setRangeEnd(e){return this.setNode("rangeEnd",e)}getRangeEnd(){return this.rangeEnd}}class ze extends W{constructor(e,n){super(e,n),this.isCustomProperty=!1}get type(){return v.Identifier}containsInterpolation(){return this.hasChildren()}}class vp extends W{constructor(e,n){super(e,n)}get type(){return v.Stylesheet}}class Li extends W{constructor(e,n){super(e,n)}get type(){return v.Declarations}}class oe extends W{constructor(e,n){super(e,n)}getDeclarations(){return this.declarations}setDeclarations(e){return this.setNode("declarations",e)}}class Ft extends oe{constructor(e,n){super(e,n)}get type(){return v.Ruleset}getSelectors(){return this.selectors||(this.selectors=new ye(this)),this.selectors}isNested(){return!!this.parent&&this.parent.findParent(v.Declarations)!==null}}class In extends W{constructor(e,n){super(e,n)}get type(){return v.Selector}}class Yt extends W{constructor(e,n){super(e,n)}get type(){return v.SimpleSelector}}class Ai extends W{constructor(e,n){super(e,n)}}class yp extends oe{constructor(e,n){super(e,n)}get type(){return v.CustomPropertySet}}class Pe extends Ai{constructor(e,n){super(e,n),this.property=null}get type(){return v.Declaration}setProperty(e){return this.setNode("property",e)}getProperty(){return this.property}getFullPropertyName(){const e=this.property?this.property.getName():"unknown";if(this.parent instanceof Li&&this.parent.getParent()instanceof ul){const n=this.parent.getParent().getParent();if(n instanceof Pe)return n.getFullPropertyName()+e}return e}getNonPrefixedPropertyName(){const e=this.getFullPropertyName();if(e&&e.charAt(0)==="-"){const n=e.indexOf("-",1);if(n!==-1)return e.substring(n+1)}return e}setValue(e){return this.setNode("value",e)}getValue(){return this.value}setNestedProperties(e){return this.setNode("nestedProperties",e)}getNestedProperties(){return this.nestedProperties}}class xp extends Pe{constructor(e,n){super(e,n)}get type(){return v.CustomPropertyDeclaration}setPropertySet(e){return this.setNode("propertySet",e)}getPropertySet(){return this.propertySet}}class Mi extends W{constructor(e,n){super(e,n)}get type(){return v.Property}setIdentifier(e){return this.setNode("identifier",e)}getIdentifier(){return this.identifier}getName(){return gp(this.getText(),/[_\+]+$/)}isCustomProperty(){return!!this.identifier&&this.identifier.isCustomProperty}}class Sp extends W{constructor(e,n){super(e,n)}get type(){return v.Invocation}getArguments(){return this.arguments||(this.arguments=new ye(this)),this.arguments}}class Dn extends Sp{constructor(e,n){super(e,n)}get type(){return v.Function}setIdentifier(e){return this.setNode("identifier",e,0)}getIdentifier(){return this.identifier}getName(){return this.identifier?this.identifier.getText():""}}class dr extends W{constructor(e,n){super(e,n)}get type(){return v.FunctionParameter}setIdentifier(e){return this.setNode("identifier",e,0)}getIdentifier(){return this.identifier}getName(){return this.identifier?this.identifier.getText():""}setDefaultValue(e){return this.setNode("defaultValue",e,0)}getDefaultValue(){return this.defaultValue}}class Qt extends W{constructor(e,n){super(e,n)}get type(){return v.FunctionArgument}setIdentifier(e){return this.setNode("identifier",e,0)}getIdentifier(){return this.identifier}getName(){return this.identifier?this.identifier.getText():""}setValue(e){return this.setNode("value",e,0)}getValue(){return this.value}}class Cp extends oe{constructor(e,n){super(e,n)}get type(){return v.If}setExpression(e){return this.setNode("expression",e,0)}setElseClause(e){return this.setNode("elseClause",e)}}class kp extends oe{constructor(e,n){super(e,n)}get type(){return v.For}setVariable(e){return this.setNode("variable",e,0)}}class _p extends oe{constructor(e,n){super(e,n)}get type(){return v.Each}getVariables(){return this.variables||(this.variables=new ye(this)),this.variables}}class Ep extends oe{constructor(e,n){super(e,n)}get type(){return v.While}}class Fp extends oe{constructor(e,n){super(e,n)}get type(){return v.Else}}class ur extends oe{constructor(e,n){super(e,n)}get type(){return v.FunctionDeclaration}setIdentifier(e){return this.setNode("identifier",e,0)}getIdentifier(){return this.identifier}getName(){return this.identifier?this.identifier.getText():""}getParameters(){return this.parameters||(this.parameters=new ye(this)),this.parameters}}class Rp extends oe{constructor(e,n){super(e,n)}get type(){return v.ViewPort}}class dl extends oe{constructor(e,n){super(e,n)}get type(){return v.FontFace}}class ul extends oe{constructor(e,n){super(e,n)}get type(){return v.NestedProperties}}class pl extends oe{constructor(e,n){super(e,n)}get type(){return v.Keyframe}setKeyword(e){return this.setNode("keyword",e,0)}getKeyword(){return this.keyword}setIdentifier(e){return this.setNode("identifier",e,0)}getIdentifier(){return this.identifier}getName(){return this.identifier?this.identifier.getText():""}}class ml extends oe{constructor(e,n){super(e,n)}get type(){return v.KeyframeSelector}}class zi extends W{constructor(e,n){super(e,n)}get type(){return v.Import}setMedialist(e){return e?(e.attachTo(this),!0):!1}}class Np extends W{get type(){return v.Use}getParameters(){return this.parameters||(this.parameters=new ye(this)),this.parameters}setIdentifier(e){return this.setNode("identifier",e,0)}getIdentifier(){return this.identifier}}class Ip extends W{get type(){return v.ModuleConfiguration}setIdentifier(e){return this.setNode("identifier",e,0)}getIdentifier(){return this.identifier}getName(){return this.identifier?this.identifier.getText():""}setValue(e){return this.setNode("value",e,0)}getValue(){return this.value}}class Dp extends W{get type(){return v.Forward}setIdentifier(e){return this.setNode("identifier",e,0)}getIdentifier(){return this.identifier}getMembers(){return this.members||(this.members=new ye(this)),this.members}getParameters(){return this.parameters||(this.parameters=new ye(this)),this.parameters}}class Lp extends W{get type(){return v.ForwardVisibility}setIdentifier(e){return this.setNode("identifier",e,0)}getIdentifier(){return this.identifier}}class Ap extends W{constructor(e,n){super(e,n)}get type(){return v.Namespace}}class Pi extends oe{constructor(e,n){super(e,n)}get type(){return v.Media}}class Ti extends oe{constructor(e,n){super(e,n)}get type(){return v.Supports}}class Mp extends oe{constructor(e,n){super(e,n)}get type(){return v.Layer}setNames(e){return this.setNode("names",e)}getNames(){return this.names}}class zp extends oe{constructor(e,n){super(e,n)}get type(){return v.PropertyAtRule}setName(e){return e?(e.attachTo(this),this.name=e,!0):!1}getName(){return this.name}}class Pp extends oe{constructor(e,n){super(e,n)}get type(){return v.Document}}class Tp extends oe{constructor(e,n){super(e,n)}get type(){return v.Container}}class fl extends W{constructor(e,n){super(e,n)}}class gl extends W{constructor(e,n){super(e,n)}get type(){return v.MediaQuery}}class Op extends W{constructor(e,n){super(e,n)}get type(){return v.MediaCondition}}class Wp extends W{constructor(e,n){super(e,n)}get type(){return v.MediaFeature}}class Ln extends W{constructor(e,n){super(e,n)}get type(){return v.SupportsCondition}}class Vp extends oe{constructor(e,n){super(e,n)}get type(){return v.Page}}class $p extends oe{constructor(e,n){super(e,n)}get type(){return v.PageBoxMarginBox}}class bl extends W{constructor(e,n){super(e,n)}get type(){return v.Expression}}class Oi extends W{constructor(e,n){super(e,n)}get type(){return v.BinaryExpression}setLeft(e){return this.setNode("left",e)}getLeft(){return this.left}setRight(e){return this.setNode("right",e)}getRight(){return this.right}setOperator(e){return this.setNode("operator",e)}getOperator(){return this.operator}}class Up extends W{constructor(e,n){super(e,n)}get type(){return v.Term}setOperator(e){return this.setNode("operator",e)}getOperator(){return this.operator}setExpression(e){return this.setNode("expression",e)}getExpression(){return this.expression}}class Bp extends W{constructor(e,n){super(e,n)}get type(){return v.AttributeSelector}setNamespacePrefix(e){return this.setNode("namespacePrefix",e)}getNamespacePrefix(){return this.namespacePrefix}setIdentifier(e){return this.setNode("identifier",e)}getIdentifier(){return this.identifier}setOperator(e){return this.setNode("operator",e)}getOperator(){return this.operator}setValue(e){return this.setNode("value",e)}getValue(){return this.value}}class Wi extends W{constructor(e,n){super(e,n)}get type(){return v.HexColorValue}}class qp extends W{constructor(e,n){super(e,n)}get type(){return v.RatioValue}}const jp=46,Hp=48,Gp=57;class Vi extends W{constructor(e,n){super(e,n)}get type(){return v.NumericValue}getValue(){const e=this.getText();let n=0,r;for(let i=0,s=e.length;i0&&(n+=`/${Array.isArray(e.comment)?e.comment.join(""):e.comment}`),i=e.args??{};return em(r,i)}var Zp=/{([^}]+)}/g;function em(t,e){return Object.keys(e).length===0?t:t.replace(Zp,(n,r)=>e[r]??n)}class te{constructor(e,n){this.id=e,this.message=n}}const S={NumberExpected:new te("css-numberexpected",w("number expected")),ConditionExpected:new te("css-conditionexpected",w("condition expected")),RuleOrSelectorExpected:new te("css-ruleorselectorexpected",w("at-rule or selector expected")),DotExpected:new te("css-dotexpected",w("dot expected")),ColonExpected:new te("css-colonexpected",w("colon expected")),SemiColonExpected:new te("css-semicolonexpected",w("semi-colon expected")),TermExpected:new te("css-termexpected",w("term expected")),ExpressionExpected:new te("css-expressionexpected",w("expression expected")),OperatorExpected:new te("css-operatorexpected",w("operator expected")),IdentifierExpected:new te("css-identifierexpected",w("identifier expected")),PercentageExpected:new te("css-percentageexpected",w("percentage expected")),URIOrStringExpected:new te("css-uriorstringexpected",w("uri or string expected")),URIExpected:new te("css-uriexpected",w("URI expected")),VariableNameExpected:new te("css-varnameexpected",w("variable name expected")),VariableValueExpected:new te("css-varvalueexpected",w("variable value expected")),PropertyValueExpected:new te("css-propertyvalueexpected",w("property value expected")),LeftCurlyExpected:new te("css-lcurlyexpected",w("{ expected")),RightCurlyExpected:new te("css-rcurlyexpected",w("} expected")),LeftSquareBracketExpected:new te("css-rbracketexpected",w("[ expected")),RightSquareBracketExpected:new te("css-lbracketexpected",w("] expected")),LeftParenthesisExpected:new te("css-lparentexpected",w("( expected")),RightParenthesisExpected:new te("css-rparentexpected",w(") expected")),CommaExpected:new te("css-commaexpected",w("comma expected")),PageDirectiveOrDeclarationExpected:new te("css-pagedirordeclexpected",w("page directive or declaraton expected")),UnknownAtRule:new te("css-unknownatrule",w("at-rule unknown")),UnknownKeyword:new te("css-unknownkeyword",w("unknown keyword")),SelectorExpected:new te("css-selectorexpected",w("selector expected")),StringLiteralExpected:new te("css-stringliteralexpected",w("string literal expected")),WhitespaceExpected:new te("css-whitespaceexpected",w("whitespace expected")),MediaQueryExpected:new te("css-mediaqueryexpected",w("media query expected")),IdentifierOrWildcardExpected:new te("css-idorwildcardexpected",w("identifier or wildcard expected")),WildcardExpected:new te("css-wildcardexpected",w("wildcard expected")),IdentifierOrVariableExpected:new te("css-idorvarexpected",w("identifier or variable expected"))};var xl;(function(t){function e(n){return typeof n=="string"}t.is=e})(xl||(xl={}));var qi;(function(t){function e(n){return typeof n=="string"}t.is=e})(qi||(qi={}));var Sl;(function(t){t.MIN_VALUE=-2147483648,t.MAX_VALUE=2147483647;function e(n){return typeof n=="number"&&t.MIN_VALUE<=n&&n<=t.MAX_VALUE}t.is=e})(Sl||(Sl={}));var fr;(function(t){t.MIN_VALUE=0,t.MAX_VALUE=2147483647;function e(n){return typeof n=="number"&&t.MIN_VALUE<=n&&n<=t.MAX_VALUE}t.is=e})(fr||(fr={}));var xe;(function(t){function e(r,i){return r===Number.MAX_VALUE&&(r=fr.MAX_VALUE),i===Number.MAX_VALUE&&(i=fr.MAX_VALUE),{line:r,character:i}}t.create=e;function n(r){let i=r;return C.objectLiteral(i)&&C.uinteger(i.line)&&C.uinteger(i.character)}t.is=n})(xe||(xe={}));var K;(function(t){function e(r,i,s,a){if(C.uinteger(r)&&C.uinteger(i)&&C.uinteger(s)&&C.uinteger(a))return{start:xe.create(r,i),end:xe.create(s,a)};if(xe.is(r)&&xe.is(i))return{start:r,end:i};throw new Error(`Range#create called with invalid arguments[${r}, ${i}, ${s}, ${a}]`)}t.create=e;function n(r){let i=r;return C.objectLiteral(i)&&xe.is(i.start)&&xe.is(i.end)}t.is=n})(K||(K={}));var zn;(function(t){function e(r,i){return{uri:r,range:i}}t.create=e;function n(r){let i=r;return C.objectLiteral(i)&&K.is(i.range)&&(C.string(i.uri)||C.undefined(i.uri))}t.is=n})(zn||(zn={}));var Cl;(function(t){function e(r,i,s,a){return{targetUri:r,targetRange:i,targetSelectionRange:s,originSelectionRange:a}}t.create=e;function n(r){let i=r;return C.objectLiteral(i)&&K.is(i.targetRange)&&C.string(i.targetUri)&&K.is(i.targetSelectionRange)&&(K.is(i.originSelectionRange)||C.undefined(i.originSelectionRange))}t.is=n})(Cl||(Cl={}));var ji;(function(t){function e(r,i,s,a){return{red:r,green:i,blue:s,alpha:a}}t.create=e;function n(r){const i=r;return C.objectLiteral(i)&&C.numberRange(i.red,0,1)&&C.numberRange(i.green,0,1)&&C.numberRange(i.blue,0,1)&&C.numberRange(i.alpha,0,1)}t.is=n})(ji||(ji={}));var kl;(function(t){function e(r,i){return{range:r,color:i}}t.create=e;function n(r){const i=r;return C.objectLiteral(i)&&K.is(i.range)&&ji.is(i.color)}t.is=n})(kl||(kl={}));var _l;(function(t){function e(r,i,s){return{label:r,textEdit:i,additionalTextEdits:s}}t.create=e;function n(r){const i=r;return C.objectLiteral(i)&&C.string(i.label)&&(C.undefined(i.textEdit)||j.is(i))&&(C.undefined(i.additionalTextEdits)||C.typedArray(i.additionalTextEdits,j.is))}t.is=n})(_l||(_l={}));var El;(function(t){t.Comment="comment",t.Imports="imports",t.Region="region"})(El||(El={}));var Fl;(function(t){function e(r,i,s,a,o,l){const c={startLine:r,endLine:i};return C.defined(s)&&(c.startCharacter=s),C.defined(a)&&(c.endCharacter=a),C.defined(o)&&(c.kind=o),C.defined(l)&&(c.collapsedText=l),c}t.create=e;function n(r){const i=r;return C.objectLiteral(i)&&C.uinteger(i.startLine)&&C.uinteger(i.startLine)&&(C.undefined(i.startCharacter)||C.uinteger(i.startCharacter))&&(C.undefined(i.endCharacter)||C.uinteger(i.endCharacter))&&(C.undefined(i.kind)||C.string(i.kind))}t.is=n})(Fl||(Fl={}));var Hi;(function(t){function e(r,i){return{location:r,message:i}}t.create=e;function n(r){let i=r;return C.defined(i)&&zn.is(i.location)&&C.string(i.message)}t.is=n})(Hi||(Hi={}));var gr;(function(t){t.Error=1,t.Warning=2,t.Information=3,t.Hint=4})(gr||(gr={}));var Rl;(function(t){t.Unnecessary=1,t.Deprecated=2})(Rl||(Rl={}));var Nl;(function(t){function e(n){const r=n;return C.objectLiteral(r)&&C.string(r.href)}t.is=e})(Nl||(Nl={}));var br;(function(t){function e(r,i,s,a,o,l){let c={range:r,message:i};return C.defined(s)&&(c.severity=s),C.defined(a)&&(c.code=a),C.defined(o)&&(c.source=o),C.defined(l)&&(c.relatedInformation=l),c}t.create=e;function n(r){var i;let s=r;return C.defined(s)&&K.is(s.range)&&C.string(s.message)&&(C.number(s.severity)||C.undefined(s.severity))&&(C.integer(s.code)||C.string(s.code)||C.undefined(s.code))&&(C.undefined(s.codeDescription)||C.string((i=s.codeDescription)===null||i===void 0?void 0:i.href))&&(C.string(s.source)||C.undefined(s.source))&&(C.undefined(s.relatedInformation)||C.typedArray(s.relatedInformation,Hi.is))}t.is=n})(br||(br={}));var Rt;(function(t){function e(r,i,...s){let a={title:r,command:i};return C.defined(s)&&s.length>0&&(a.arguments=s),a}t.create=e;function n(r){let i=r;return C.defined(i)&&C.string(i.title)&&C.string(i.command)}t.is=n})(Rt||(Rt={}));var j;(function(t){function e(s,a){return{range:s,newText:a}}t.replace=e;function n(s,a){return{range:{start:s,end:s},newText:a}}t.insert=n;function r(s){return{range:s,newText:""}}t.del=r;function i(s){const a=s;return C.objectLiteral(a)&&C.string(a.newText)&&K.is(a.range)}t.is=i})(j||(j={}));var Gi;(function(t){function e(r,i,s){const a={label:r};return i!==void 0&&(a.needsConfirmation=i),s!==void 0&&(a.description=s),a}t.create=e;function n(r){const i=r;return C.objectLiteral(i)&&C.string(i.label)&&(C.boolean(i.needsConfirmation)||i.needsConfirmation===void 0)&&(C.string(i.description)||i.description===void 0)}t.is=n})(Gi||(Gi={}));var Kt;(function(t){function e(n){const r=n;return C.string(r)}t.is=e})(Kt||(Kt={}));var Il;(function(t){function e(s,a,o){return{range:s,newText:a,annotationId:o}}t.replace=e;function n(s,a,o){return{range:{start:s,end:s},newText:a,annotationId:o}}t.insert=n;function r(s,a){return{range:s,newText:"",annotationId:a}}t.del=r;function i(s){const a=s;return j.is(a)&&(Gi.is(a.annotationId)||Kt.is(a.annotationId))}t.is=i})(Il||(Il={}));var wr;(function(t){function e(r,i){return{textDocument:r,edits:i}}t.create=e;function n(r){let i=r;return C.defined(i)&&Zi.is(i.textDocument)&&Array.isArray(i.edits)}t.is=n})(wr||(wr={}));var Ji;(function(t){function e(r,i,s){let a={kind:"create",uri:r};return i!==void 0&&(i.overwrite!==void 0||i.ignoreIfExists!==void 0)&&(a.options=i),s!==void 0&&(a.annotationId=s),a}t.create=e;function n(r){let i=r;return i&&i.kind==="create"&&C.string(i.uri)&&(i.options===void 0||(i.options.overwrite===void 0||C.boolean(i.options.overwrite))&&(i.options.ignoreIfExists===void 0||C.boolean(i.options.ignoreIfExists)))&&(i.annotationId===void 0||Kt.is(i.annotationId))}t.is=n})(Ji||(Ji={}));var Xi;(function(t){function e(r,i,s,a){let o={kind:"rename",oldUri:r,newUri:i};return s!==void 0&&(s.overwrite!==void 0||s.ignoreIfExists!==void 0)&&(o.options=s),a!==void 0&&(o.annotationId=a),o}t.create=e;function n(r){let i=r;return i&&i.kind==="rename"&&C.string(i.oldUri)&&C.string(i.newUri)&&(i.options===void 0||(i.options.overwrite===void 0||C.boolean(i.options.overwrite))&&(i.options.ignoreIfExists===void 0||C.boolean(i.options.ignoreIfExists)))&&(i.annotationId===void 0||Kt.is(i.annotationId))}t.is=n})(Xi||(Xi={}));var Yi;(function(t){function e(r,i,s){let a={kind:"delete",uri:r};return i!==void 0&&(i.recursive!==void 0||i.ignoreIfNotExists!==void 0)&&(a.options=i),s!==void 0&&(a.annotationId=s),a}t.create=e;function n(r){let i=r;return i&&i.kind==="delete"&&C.string(i.uri)&&(i.options===void 0||(i.options.recursive===void 0||C.boolean(i.options.recursive))&&(i.options.ignoreIfNotExists===void 0||C.boolean(i.options.ignoreIfNotExists)))&&(i.annotationId===void 0||Kt.is(i.annotationId))}t.is=n})(Yi||(Yi={}));var Qi;(function(t){function e(n){let r=n;return r&&(r.changes!==void 0||r.documentChanges!==void 0)&&(r.documentChanges===void 0||r.documentChanges.every(i=>C.string(i.kind)?Ji.is(i)||Xi.is(i)||Yi.is(i):wr.is(i)))}t.is=e})(Qi||(Qi={}));var Dl;(function(t){function e(r){return{uri:r}}t.create=e;function n(r){let i=r;return C.defined(i)&&C.string(i.uri)}t.is=n})(Dl||(Dl={}));var Ki;(function(t){function e(r,i){return{uri:r,version:i}}t.create=e;function n(r){let i=r;return C.defined(i)&&C.string(i.uri)&&C.integer(i.version)}t.is=n})(Ki||(Ki={}));var Zi;(function(t){function e(r,i){return{uri:r,version:i}}t.create=e;function n(r){let i=r;return C.defined(i)&&C.string(i.uri)&&(i.version===null||C.integer(i.version))}t.is=n})(Zi||(Zi={}));var Ll;(function(t){function e(r,i,s,a){return{uri:r,languageId:i,version:s,text:a}}t.create=e;function n(r){let i=r;return C.defined(i)&&C.string(i.uri)&&C.string(i.languageId)&&C.integer(i.version)&&C.string(i.text)}t.is=n})(Ll||(Ll={}));var Ge;(function(t){t.PlainText="plaintext",t.Markdown="markdown";function e(n){const r=n;return r===t.PlainText||r===t.Markdown}t.is=e})(Ge||(Ge={}));var Pn;(function(t){function e(n){const r=n;return C.objectLiteral(n)&&Ge.is(r.kind)&&C.string(r.value)}t.is=e})(Pn||(Pn={}));var q;(function(t){t.Text=1,t.Method=2,t.Function=3,t.Constructor=4,t.Field=5,t.Variable=6,t.Class=7,t.Interface=8,t.Module=9,t.Property=10,t.Unit=11,t.Value=12,t.Enum=13,t.Keyword=14,t.Snippet=15,t.Color=16,t.File=17,t.Reference=18,t.Folder=19,t.EnumMember=20,t.Constant=21,t.Struct=22,t.Event=23,t.Operator=24,t.TypeParameter=25})(q||(q={}));var Ie;(function(t){t.PlainText=1,t.Snippet=2})(Ie||(Ie={}));var Nt;(function(t){t.Deprecated=1})(Nt||(Nt={}));var Al;(function(t){function e(r,i,s){return{newText:r,insert:i,replace:s}}t.create=e;function n(r){const i=r;return i&&C.string(i.newText)&&K.is(i.insert)&&K.is(i.replace)}t.is=n})(Al||(Al={}));var Ml;(function(t){t.asIs=1,t.adjustIndentation=2})(Ml||(Ml={}));var zl;(function(t){function e(n){const r=n;return r&&(C.string(r.detail)||r.detail===void 0)&&(C.string(r.description)||r.description===void 0)}t.is=e})(zl||(zl={}));var Pl;(function(t){function e(n){return{label:n}}t.create=e})(Pl||(Pl={}));var Tl;(function(t){function e(n,r){return{items:n||[],isIncomplete:!!r}}t.create=e})(Tl||(Tl={}));var vr;(function(t){function e(r){return r.replace(/[\\`*_{}[\]()#+\-.!]/g,"\\$&")}t.fromPlainText=e;function n(r){const i=r;return C.string(i)||C.objectLiteral(i)&&C.string(i.language)&&C.string(i.value)}t.is=n})(vr||(vr={}));var Ol;(function(t){function e(n){let r=n;return!!r&&C.objectLiteral(r)&&(Pn.is(r.contents)||vr.is(r.contents)||C.typedArray(r.contents,vr.is))&&(n.range===void 0||K.is(n.range))}t.is=e})(Ol||(Ol={}));var Wl;(function(t){function e(n,r){return r?{label:n,documentation:r}:{label:n}}t.create=e})(Wl||(Wl={}));var Vl;(function(t){function e(n,r,...i){let s={label:n};return C.defined(r)&&(s.documentation=r),C.defined(i)?s.parameters=i:s.parameters=[],s}t.create=e})(Vl||(Vl={}));var Zt;(function(t){t.Text=1,t.Read=2,t.Write=3})(Zt||(Zt={}));var $l;(function(t){function e(n,r){let i={range:n};return C.number(r)&&(i.kind=r),i}t.create=e})($l||($l={}));var it;(function(t){t.File=1,t.Module=2,t.Namespace=3,t.Package=4,t.Class=5,t.Method=6,t.Property=7,t.Field=8,t.Constructor=9,t.Enum=10,t.Interface=11,t.Function=12,t.Variable=13,t.Constant=14,t.String=15,t.Number=16,t.Boolean=17,t.Array=18,t.Object=19,t.Key=20,t.Null=21,t.EnumMember=22,t.Struct=23,t.Event=24,t.Operator=25,t.TypeParameter=26})(it||(it={}));var Ul;(function(t){t.Deprecated=1})(Ul||(Ul={}));var Bl;(function(t){function e(n,r,i,s,a){let o={name:n,kind:r,location:{uri:s,range:i}};return a&&(o.containerName=a),o}t.create=e})(Bl||(Bl={}));var ql;(function(t){function e(n,r,i,s){return s!==void 0?{name:n,kind:r,location:{uri:i,range:s}}:{name:n,kind:r,location:{uri:i}}}t.create=e})(ql||(ql={}));var jl;(function(t){function e(r,i,s,a,o,l){let c={name:r,detail:i,kind:s,range:a,selectionRange:o};return l!==void 0&&(c.children=l),c}t.create=e;function n(r){let i=r;return i&&C.string(i.name)&&C.number(i.kind)&&K.is(i.range)&&K.is(i.selectionRange)&&(i.detail===void 0||C.string(i.detail))&&(i.deprecated===void 0||C.boolean(i.deprecated))&&(i.children===void 0||Array.isArray(i.children))&&(i.tags===void 0||Array.isArray(i.tags))}t.is=n})(jl||(jl={}));var es;(function(t){t.Empty="",t.QuickFix="quickfix",t.Refactor="refactor",t.RefactorExtract="refactor.extract",t.RefactorInline="refactor.inline",t.RefactorRewrite="refactor.rewrite",t.Source="source",t.SourceOrganizeImports="source.organizeImports",t.SourceFixAll="source.fixAll"})(es||(es={}));var yr;(function(t){t.Invoked=1,t.Automatic=2})(yr||(yr={}));var Hl;(function(t){function e(r,i,s){let a={diagnostics:r};return i!=null&&(a.only=i),s!=null&&(a.triggerKind=s),a}t.create=e;function n(r){let i=r;return C.defined(i)&&C.typedArray(i.diagnostics,br.is)&&(i.only===void 0||C.typedArray(i.only,C.string))&&(i.triggerKind===void 0||i.triggerKind===yr.Invoked||i.triggerKind===yr.Automatic)}t.is=n})(Hl||(Hl={}));var ts;(function(t){function e(r,i,s){let a={title:r},o=!0;return typeof i=="string"?(o=!1,a.kind=i):Rt.is(i)?a.command=i:a.edit=i,o&&s!==void 0&&(a.kind=s),a}t.create=e;function n(r){let i=r;return i&&C.string(i.title)&&(i.diagnostics===void 0||C.typedArray(i.diagnostics,br.is))&&(i.kind===void 0||C.string(i.kind))&&(i.edit!==void 0||i.command!==void 0)&&(i.command===void 0||Rt.is(i.command))&&(i.isPreferred===void 0||C.boolean(i.isPreferred))&&(i.edit===void 0||Qi.is(i.edit))}t.is=n})(ts||(ts={}));var Gl;(function(t){function e(r,i){let s={range:r};return C.defined(i)&&(s.data=i),s}t.create=e;function n(r){let i=r;return C.defined(i)&&K.is(i.range)&&(C.undefined(i.command)||Rt.is(i.command))}t.is=n})(Gl||(Gl={}));var Jl;(function(t){function e(r,i){return{tabSize:r,insertSpaces:i}}t.create=e;function n(r){let i=r;return C.defined(i)&&C.uinteger(i.tabSize)&&C.boolean(i.insertSpaces)}t.is=n})(Jl||(Jl={}));var Xl;(function(t){function e(r,i,s){return{range:r,target:i,data:s}}t.create=e;function n(r){let i=r;return C.defined(i)&&K.is(i.range)&&(C.undefined(i.target)||C.string(i.target))}t.is=n})(Xl||(Xl={}));var xr;(function(t){function e(r,i){return{range:r,parent:i}}t.create=e;function n(r){let i=r;return C.objectLiteral(i)&&K.is(i.range)&&(i.parent===void 0||t.is(i.parent))}t.is=n})(xr||(xr={}));var Yl;(function(t){t.namespace="namespace",t.type="type",t.class="class",t.enum="enum",t.interface="interface",t.struct="struct",t.typeParameter="typeParameter",t.parameter="parameter",t.variable="variable",t.property="property",t.enumMember="enumMember",t.event="event",t.function="function",t.method="method",t.macro="macro",t.keyword="keyword",t.modifier="modifier",t.comment="comment",t.string="string",t.number="number",t.regexp="regexp",t.operator="operator",t.decorator="decorator"})(Yl||(Yl={}));var Ql;(function(t){t.declaration="declaration",t.definition="definition",t.readonly="readonly",t.static="static",t.deprecated="deprecated",t.abstract="abstract",t.async="async",t.modification="modification",t.documentation="documentation",t.defaultLibrary="defaultLibrary"})(Ql||(Ql={}));var Kl;(function(t){function e(n){const r=n;return C.objectLiteral(r)&&(r.resultId===void 0||typeof r.resultId=="string")&&Array.isArray(r.data)&&(r.data.length===0||typeof r.data[0]=="number")}t.is=e})(Kl||(Kl={}));var Zl;(function(t){function e(r,i){return{range:r,text:i}}t.create=e;function n(r){const i=r;return i!=null&&K.is(i.range)&&C.string(i.text)}t.is=n})(Zl||(Zl={}));var ec;(function(t){function e(r,i,s){return{range:r,variableName:i,caseSensitiveLookup:s}}t.create=e;function n(r){const i=r;return i!=null&&K.is(i.range)&&C.boolean(i.caseSensitiveLookup)&&(C.string(i.variableName)||i.variableName===void 0)}t.is=n})(ec||(ec={}));var tc;(function(t){function e(r,i){return{range:r,expression:i}}t.create=e;function n(r){const i=r;return i!=null&&K.is(i.range)&&(C.string(i.expression)||i.expression===void 0)}t.is=n})(tc||(tc={}));var nc;(function(t){function e(r,i){return{frameId:r,stoppedLocation:i}}t.create=e;function n(r){const i=r;return C.defined(i)&&K.is(r.stoppedLocation)}t.is=n})(nc||(nc={}));var ns;(function(t){t.Type=1,t.Parameter=2;function e(n){return n===1||n===2}t.is=e})(ns||(ns={}));var rs;(function(t){function e(r){return{value:r}}t.create=e;function n(r){const i=r;return C.objectLiteral(i)&&(i.tooltip===void 0||C.string(i.tooltip)||Pn.is(i.tooltip))&&(i.location===void 0||zn.is(i.location))&&(i.command===void 0||Rt.is(i.command))}t.is=n})(rs||(rs={}));var rc;(function(t){function e(r,i,s){const a={position:r,label:i};return s!==void 0&&(a.kind=s),a}t.create=e;function n(r){const i=r;return C.objectLiteral(i)&&xe.is(i.position)&&(C.string(i.label)||C.typedArray(i.label,rs.is))&&(i.kind===void 0||ns.is(i.kind))&&i.textEdits===void 0||C.typedArray(i.textEdits,j.is)&&(i.tooltip===void 0||C.string(i.tooltip)||Pn.is(i.tooltip))&&(i.paddingLeft===void 0||C.boolean(i.paddingLeft))&&(i.paddingRight===void 0||C.boolean(i.paddingRight))}t.is=n})(rc||(rc={}));var ic;(function(t){function e(n){return{kind:"snippet",value:n}}t.createSnippet=e})(ic||(ic={}));var sc;(function(t){function e(n,r,i,s){return{insertText:n,filterText:r,range:i,command:s}}t.create=e})(sc||(sc={}));var ac;(function(t){function e(n){return{items:n}}t.create=e})(ac||(ac={}));var oc;(function(t){t.Invoked=0,t.Automatic=1})(oc||(oc={}));var lc;(function(t){function e(n,r){return{range:n,text:r}}t.create=e})(lc||(lc={}));var cc;(function(t){function e(n,r){return{triggerKind:n,selectedCompletionInfo:r}}t.create=e})(cc||(cc={}));var hc;(function(t){function e(n){const r=n;return C.objectLiteral(r)&&qi.is(r.uri)&&C.string(r.name)}t.is=e})(hc||(hc={}));var dc;(function(t){function e(s,a,o,l){return new tm(s,a,o,l)}t.create=e;function n(s){let a=s;return!!(C.defined(a)&&C.string(a.uri)&&(C.undefined(a.languageId)||C.string(a.languageId))&&C.uinteger(a.lineCount)&&C.func(a.getText)&&C.func(a.positionAt)&&C.func(a.offsetAt))}t.is=n;function r(s,a){let o=s.getText(),l=i(a,(d,u)=>{let m=d.range.start.line-u.range.start.line;return m===0?d.range.start.character-u.range.start.character:m}),c=o.length;for(let d=l.length-1;d>=0;d--){let u=l[d],m=s.offsetAt(u.range.start),f=s.offsetAt(u.range.end);if(f<=c)o=o.substring(0,m)+u.newText+o.substring(f,o.length);else throw new Error("Overlapping edit");c=m}return o}t.applyEdits=r;function i(s,a){if(s.length<=1)return s;const o=s.length/2|0,l=s.slice(0,o),c=s.slice(o);i(l,a),i(c,a);let d=0,u=0,m=0;for(;d0&&e.push(n.length),this._lineOffsets=e}return this._lineOffsets}positionAt(e){e=Math.max(Math.min(e,this._content.length),0);let n=this.getLineOffsets(),r=0,i=n.length;if(i===0)return xe.create(0,e);for(;re?i=a:r=a+1}let s=r-1;return xe.create(s,e-n[s])}offsetAt(e){let n=this.getLineOffsets();if(e.line>=n.length)return this._content.length;if(e.line<0)return 0;let r=n[e.line],i=e.line+1"u"}t.undefined=r;function i(f){return f===!0||f===!1}t.boolean=i;function s(f){return e.call(f)==="[object String]"}t.string=s;function a(f){return e.call(f)==="[object Number]"}t.number=a;function o(f,g,b){return e.call(f)==="[object Number]"&&g<=f&&f<=b}t.numberRange=o;function l(f){return e.call(f)==="[object Number]"&&-2147483648<=f&&f<=2147483647}t.integer=l;function c(f){return e.call(f)==="[object Number]"&&0<=f&&f<=2147483647}t.uinteger=c;function d(f){return e.call(f)==="[object Function]"}t.func=d;function u(f){return f!==null&&typeof f=="object"}t.objectLiteral=u;function m(f,g){return Array.isArray(f)&&f.every(g)}t.typedArray=m})(C||(C={}));class Tn{constructor(e,n,r,i){this._uri=e,this._languageId=n,this._version=r,this._content=i,this._lineOffsets=void 0}get uri(){return this._uri}get languageId(){return this._languageId}get version(){return this._version}getText(e){if(e){const n=this.offsetAt(e.start),r=this.offsetAt(e.end);return this._content.substring(n,r)}return this._content}update(e,n){for(let r of e)if(Tn.isIncremental(r)){const i=pc(r.range),s=this.offsetAt(i.start),a=this.offsetAt(i.end);this._content=this._content.substring(0,s)+r.text+this._content.substring(a,this._content.length);const o=Math.max(i.start.line,0),l=Math.max(i.end.line,0);let c=this._lineOffsets;const d=uc(r.text,!1,s);if(l-o===d.length)for(let m=0,f=d.length;me?i=a:r=a+1}let s=r-1;return{line:s,character:e-n[s]}}offsetAt(e){let n=this.getLineOffsets();if(e.line>=n.length)return this._content.length;if(e.line<0)return 0;let r=n[e.line],i=e.line+1{let m=d.range.start.line-u.range.start.line;return m===0?d.range.start.character-u.range.start.character:m}),l=0;const c=[];for(const d of o){let u=i.offsetAt(d.range.start);if(ul&&c.push(a.substring(l,u)),d.newText.length&&c.push(d.newText),l=i.offsetAt(d.range.end)}return c.push(a.substr(l)),c.join("")}t.applyEdits=r})(is||(is={}));function ss(t,e){if(t.length<=1)return t;const n=t.length/2|0,r=t.slice(0,n),i=t.slice(n);ss(r,e),ss(i,e);let s=0,a=0,o=0;for(;sn.line||e.line===n.line&&e.character>n.character?{start:n,end:e}:t}function nm(t){const e=pc(t.range);return e!==t.range?{newText:t.newText,range:e}:t}var mc;(function(t){t.LATEST={textDocument:{completion:{completionItem:{documentationFormat:[Ge.Markdown,Ge.PlainText]}},hover:{contentFormat:[Ge.Markdown,Ge.PlainText]}}}})(mc||(mc={}));var On;(function(t){t[t.Unknown=0]="Unknown",t[t.File=1]="File",t[t.Directory=2]="Directory",t[t.SymbolicLink=64]="SymbolicLink"})(On||(On={}));const rm=/(^#([0-9A-F]{3}){1,2}$)|(^#([0-9A-F]{4}){1,2}$)/i,im=[{label:"rgb",func:"rgb($red, $green, $blue)",insertText:"rgb(${1:red}, ${2:green}, ${3:blue})",desc:w("Creates a Color from red, green, and blue values.")},{label:"rgba",func:"rgba($red, $green, $blue, $alpha)",insertText:"rgba(${1:red}, ${2:green}, ${3:blue}, ${4:alpha})",desc:w("Creates a Color from red, green, blue, and alpha values.")},{label:"rgb relative",func:"rgb(from $color $red $green $blue)",insertText:"rgb(from ${1:color} ${2:r} ${3:g} ${4:b})",desc:w("Creates a Color from the red, green, and blue values of another Color.")},{label:"hsl",func:"hsl($hue, $saturation, $lightness)",insertText:"hsl(${1:hue}, ${2:saturation}, ${3:lightness})",desc:w("Creates a Color from hue, saturation, and lightness values.")},{label:"hsla",func:"hsla($hue, $saturation, $lightness, $alpha)",insertText:"hsla(${1:hue}, ${2:saturation}, ${3:lightness}, ${4:alpha})",desc:w("Creates a Color from hue, saturation, lightness, and alpha values.")},{label:"hsl relative",func:"hsl(from $color $hue $saturation $lightness)",insertText:"hsl(from ${1:color} ${2:h} ${3:s} ${4:l})",desc:w("Creates a Color from the hue, saturation, and lightness values of another Color.")},{label:"hwb",func:"hwb($hue $white $black)",insertText:"hwb(${1:hue} ${2:white} ${3:black})",desc:w("Creates a Color from hue, white, and black values.")},{label:"hwb relative",func:"hwb(from $color $hue $white $black)",insertText:"hwb(from ${1:color} ${2:h} ${3:w} ${4:b})",desc:w("Creates a Color from the hue, white, and black values of another Color.")},{label:"lab",func:"lab($lightness $a $b)",insertText:"lab(${1:lightness} ${2:a} ${3:b})",desc:w("Creates a Color from lightness, a, and b values.")},{label:"lab relative",func:"lab(from $color $lightness $a $b)",insertText:"lab(from ${1:color} ${2:l} ${3:a} ${4:b})",desc:w("Creates a Color from the lightness, a, and b values of another Color.")},{label:"oklab",func:"oklab($lightness $a $b)",insertText:"oklab(${1:lightness} ${2:a} ${3:b})",desc:w("Creates a Color from lightness, a, and b values.")},{label:"oklab relative",func:"oklab(from $color $lightness $a $b)",insertText:"oklab(from ${1:color} ${2:l} ${3:a} ${4:b})",desc:w("Creates a Color from the lightness, a, and b values of another Color.")},{label:"lch",func:"lch($lightness $chroma $hue)",insertText:"lch(${1:lightness} ${2:chroma} ${3:hue})",desc:w("Creates a Color from lightness, chroma, and hue values.")},{label:"lch relative",func:"lch(from $color $lightness $chroma $hue)",insertText:"lch(from ${1:color} ${2:l} ${3:c} ${4:h})",desc:w("Creates a Color from the lightness, chroma, and hue values of another Color.")},{label:"oklch",func:"oklch($lightness $chroma $hue)",insertText:"oklch(${1:lightness} ${2:chroma} ${3:hue})",desc:w("Creates a Color from lightness, chroma, and hue values.")},{label:"oklch relative",func:"oklch(from $color $lightness $chroma $hue)",insertText:"oklch(from ${1:color} ${2:l} ${3:c} ${4:h})",desc:w("Creates a Color from the lightness, chroma, and hue values of another Color.")},{label:"color",func:"color($color-space $red $green $blue)",insertText:"color(${1|srgb,srgb-linear,display-p3,a98-rgb,prophoto-rgb,rec2020,xyx,xyz-d50,xyz-d65|} ${2:red} ${3:green} ${4:blue})",desc:w("Creates a Color in a specific color space from red, green, and blue values.")},{label:"color relative",func:"color(from $color $color-space $red $green $blue)",insertText:"color(from ${1:color} ${2|srgb,srgb-linear,display-p3,a98-rgb,prophoto-rgb,rec2020,xyx,xyz-d50,xyz-d65|} ${3:r} ${4:g} ${5:b})",desc:w("Creates a Color in a specific color space from the red, green, and blue values of another Color.")},{label:"color-mix",func:"color-mix(in $color-space, $color $percentage, $color $percentage)",insertText:"color-mix(in ${1|srgb,srgb-linear,lab,oklab,xyz,xyz-d50,xyz-d65|}, ${3:color} ${4:percentage}, ${5:color} ${6:percentage})",desc:w("Mix two colors together in a rectangular color space.")},{label:"color-mix hue",func:"color-mix(in $color-space $interpolation-method hue, $color $percentage, $color $percentage)",insertText:"color-mix(in ${1|hsl,hwb,lch,oklch|} ${2|shorter hue,longer hue,increasing hue,decreasing hue|}, ${3:color} ${4:percentage}, ${5:color} ${6:percentage})",desc:w("Mix two colors together in a polar color space.")}],sm=/^(rgb|rgba|hsl|hsla|hwb)$/i,Sr={aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgrey:"#a9a9a9",darkgreen:"#006400",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",darkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",grey:"#808080",green:"#008000",greenyellow:"#adff2f",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgrey:"#d3d3d3",lightgreen:"#90ee90",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370d8",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhite:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#d87093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",red:"#ff0000",rebeccapurple:"#663399",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a460",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"},am=new RegExp(`^(${Object.keys(Sr).join("|")})$`,"i"),as={currentColor:"The value of the 'color' property. The computed value of the 'currentColor' keyword is the computed value of the 'color' property. If the 'currentColor' keyword is set on the 'color' property itself, it is treated as 'color:inherit' at parse time.",transparent:"Fully transparent. This keyword can be considered a shorthand for rgba(0,0,0,0) which is its computed value."},om=new RegExp(`^(${Object.keys(as).join("|")})$`,"i");function bt(t,e){const r=t.getText().match(/^([-+]?[0-9]*\.?[0-9]+)(%?)$/);if(r){r[2]&&(e=100);const i=parseFloat(r[1])/e;if(i>=0&&i<=1)return i}throw new Error}function fc(t){const e=t.getText(),n=e.match(/^([-+]?[0-9]*\.?[0-9]+)(deg|rad|grad|turn)?$/);if(n)switch(n[2]){case"deg":return parseFloat(e)%360;case"rad":return parseFloat(e)*180/Math.PI%360;case"grad":return parseFloat(e)*.9%360;case"turn":return parseFloat(e)*360%360;default:if(typeof n[2]>"u")return parseFloat(e)%360}throw new Error}function lm(t){const e=t.getName();return e?sm.test(e):!1}function gc(t){return rm.test(t)||am.test(t)||om.test(t)}const bc=48,cm=57,hm=65,Cr=97,dm=102;function de(t){return t=Cr&&t<=dm?t-Cr+10:0)}function wc(t){if(t[0]!=="#")return null;switch(t.length){case 4:return{red:de(t.charCodeAt(1))*17/255,green:de(t.charCodeAt(2))*17/255,blue:de(t.charCodeAt(3))*17/255,alpha:1};case 5:return{red:de(t.charCodeAt(1))*17/255,green:de(t.charCodeAt(2))*17/255,blue:de(t.charCodeAt(3))*17/255,alpha:de(t.charCodeAt(4))*17/255};case 7:return{red:(de(t.charCodeAt(1))*16+de(t.charCodeAt(2)))/255,green:(de(t.charCodeAt(3))*16+de(t.charCodeAt(4)))/255,blue:(de(t.charCodeAt(5))*16+de(t.charCodeAt(6)))/255,alpha:1};case 9:return{red:(de(t.charCodeAt(1))*16+de(t.charCodeAt(2)))/255,green:(de(t.charCodeAt(3))*16+de(t.charCodeAt(4)))/255,blue:(de(t.charCodeAt(5))*16+de(t.charCodeAt(6)))/255,alpha:(de(t.charCodeAt(7))*16+de(t.charCodeAt(8)))/255}}return null}function vc(t,e,n,r=1){if(t=t/60,e===0)return{red:n,green:n,blue:n,alpha:r};{const i=(o,l,c)=>{for(;c<0;)c+=6;for(;c>=6;)c-=6;return c<1?(l-o)*c+o:c<3?l:c<4?(l-o)*(4-c)+o:o},s=n<=.5?n*(e+1):n+e-n*e,a=n*2-s;return{red:i(a,s,t+2),green:i(a,s,t),blue:i(a,s,t-2),alpha:r}}}function yc(t){const e=t.red,n=t.green,r=t.blue,i=t.alpha,s=Math.max(e,n,r),a=Math.min(e,n,r);let o=0,l=0;const c=(a+s)/2,d=s-a;if(d>0){switch(l=Math.min(c<=.5?d/(2*c):d/(2-2*c),1),s){case e:o=(n-r)/d+(n=1){const l=e/(e+n);return{red:l,green:l,blue:l,alpha:r}}const i=vc(t,1,.5,r);let s=i.red;s*=1-e-n,s+=e;let a=i.green;a*=1-e-n,a+=e;let o=i.blue;return o*=1-e-n,o+=e,{red:s,green:a,blue:o,alpha:r}}function pm(t){const e=yc(t),n=Math.min(t.red,t.green,t.blue),r=1-Math.max(t.red,t.green,t.blue);return{h:e.h,w:n,b:r,a:e.a}}function mm(t){if(t.type===v.HexColorValue){const e=t.getText();return wc(e)}else if(t.type===v.Function){const e=t,n=e.getName();let r=e.getArguments().getChildren();if(r.length===1){const i=r[0].getChildren();if(i.length===1&&i[0].type===v.Expression&&(r=i[0].getChildren(),r.length===3)){const s=r[2];if(s instanceof Oi){const a=s.getLeft(),o=s.getRight(),l=s.getOperator();a&&o&&l&&l.matches("/")&&(r=[r[0],r[1],a,o])}}}if(!n||r.length<3||r.length>4)return null;try{const i=r.length===4?bt(r[3],1):1;if(n==="rgb"||n==="rgba")return{red:bt(r[0],255),green:bt(r[1],255),blue:bt(r[2],255),alpha:i};if(n==="hsl"||n==="hsla"){const s=fc(r[0]),a=bt(r[1],100),o=bt(r[2],100);return vc(s,a,o,i)}else if(n==="hwb"){const s=fc(r[0]),a=bt(r[1],100),o=bt(r[2],100);return um(s,a,o,i)}}catch{return null}}else if(t.type===v.Identifier){if(t.parent&&t.parent.type!==v.Term)return null;const e=t.parent;if(e&&e.parent&&e.parent.type===v.BinaryExpression){const i=e.parent;if(i.parent&&i.parent.type===v.ListEntry&&i.parent.key===i)return null}const n=t.getText().toLowerCase();if(n==="none")return null;const r=Sr[n];if(r)return wc(r)}return null}const xc={bottom:"Computes to ‘100%’ for the vertical position if one or two values are given, otherwise specifies the bottom edge as the origin for the next offset.",center:"Computes to ‘50%’ (‘left 50%’) for the horizontal position if the horizontal position is not otherwise specified, or ‘50%’ (‘top 50%’) for the vertical position if it is.",left:"Computes to ‘0%’ for the horizontal position if one or two values are given, otherwise specifies the left edge as the origin for the next offset.",right:"Computes to ‘100%’ for the horizontal position if one or two values are given, otherwise specifies the right edge as the origin for the next offset.",top:"Computes to ‘0%’ for the vertical position if one or two values are given, otherwise specifies the top edge as the origin for the next offset."},Sc={"no-repeat":"Placed once and not repeated in this direction.",repeat:"Repeated in this direction as often as needed to cover the background painting area.","repeat-x":"Computes to ‘repeat no-repeat’.","repeat-y":"Computes to ‘no-repeat repeat’.",round:"Repeated as often as will fit within the background positioning area. If it doesn’t fit a whole number of times, it is rescaled so that it does.",space:"Repeated as often as will fit within the background positioning area without being clipped and then the images are spaced out to fill the area."},Cc={dashed:"A series of square-ended dashes.",dotted:"A series of round dots.",double:"Two parallel solid lines with some space between them.",groove:"Looks as if it were carved in the canvas.",hidden:"Same as ‘none’, but has different behavior in the border conflict resolution rules for border-collapsed tables.",inset:"Looks as if the content on the inside of the border is sunken into the canvas.",none:"No border. Color and width are ignored.",outset:"Looks as if the content on the inside of the border is coming out of the canvas.",ridge:"Looks as if it were coming out of the canvas.",solid:"A single line segment."},fm=["medium","thick","thin"],kc={"border-box":"The background is painted within (clipped to) the border box.","content-box":"The background is painted within (clipped to) the content box.","padding-box":"The background is painted within (clipped to) the padding box."},_c={"margin-box":"Uses the margin box as reference box.","fill-box":"Uses the object bounding box as reference box.","stroke-box":"Uses the stroke bounding box as reference box.","view-box":"Uses the nearest SVG viewport as reference box."},Ec={initial:"Represents the value specified as the property’s initial value.",inherit:"Represents the computed value of the property on the element’s parent.",unset:"Acts as either `inherit` or `initial`, depending on whether the property is inherited or not."},Fc={"var()":"Evaluates the value of a custom variable.","calc()":"Evaluates an mathematical expression. The following operators can be used: + - * /."},Rc={"url()":"Reference an image file by URL","image()":"Provide image fallbacks and annotations.","-webkit-image-set()":"Provide multiple resolutions. Remember to use unprefixed image-set() in addition.","image-set()":"Provide multiple resolutions of an image and const the UA decide which is most appropriate in a given situation.","-moz-element()":"Use an element in the document as an image. Remember to use unprefixed element() in addition.","element()":"Use an element in the document as an image.","cross-fade()":"Indicates the two images to be combined and how far along in the transition the combination is.","-webkit-gradient()":"Deprecated. Use modern linear-gradient() or radial-gradient() instead.","-webkit-linear-gradient()":"Linear gradient. Remember to use unprefixed version in addition.","-moz-linear-gradient()":"Linear gradient. Remember to use unprefixed version in addition.","-o-linear-gradient()":"Linear gradient. Remember to use unprefixed version in addition.","linear-gradient()":"A linear gradient is created by specifying a straight gradient line, and then several colors placed along that line.","-webkit-repeating-linear-gradient()":"Repeating Linear gradient. Remember to use unprefixed version in addition.","-moz-repeating-linear-gradient()":"Repeating Linear gradient. Remember to use unprefixed version in addition.","-o-repeating-linear-gradient()":"Repeating Linear gradient. Remember to use unprefixed version in addition.","repeating-linear-gradient()":"Same as linear-gradient, except the color-stops are repeated infinitely in both directions, with their positions shifted by multiples of the difference between the last specified color-stop’s position and the first specified color-stop’s position.","-webkit-radial-gradient()":"Radial gradient. Remember to use unprefixed version in addition.","-moz-radial-gradient()":"Radial gradient. Remember to use unprefixed version in addition.","radial-gradient()":"Colors emerge from a single point and smoothly spread outward in a circular or elliptical shape.","-webkit-repeating-radial-gradient()":"Repeating radial gradient. Remember to use unprefixed version in addition.","-moz-repeating-radial-gradient()":"Repeating radial gradient. Remember to use unprefixed version in addition.","repeating-radial-gradient()":"Same as radial-gradient, except the color-stops are repeated infinitely in both directions, with their positions shifted by multiples of the difference between the last specified color-stop’s position and the first specified color-stop’s position."},Nc={ease:"Equivalent to cubic-bezier(0.25, 0.1, 0.25, 1.0).","ease-in":"Equivalent to cubic-bezier(0.42, 0, 1.0, 1.0).","ease-in-out":"Equivalent to cubic-bezier(0.42, 0, 0.58, 1.0).","ease-out":"Equivalent to cubic-bezier(0, 0, 0.58, 1.0).",linear:"Equivalent to cubic-bezier(0.0, 0.0, 1.0, 1.0).","step-end":"Equivalent to steps(1, end).","step-start":"Equivalent to steps(1, start).","steps()":"The first parameter specifies the number of intervals in the function. The second parameter, which is optional, is either the value “start” or “end”.","cubic-bezier()":"Specifies a cubic-bezier curve. The four values specify points P1 and P2 of the curve as (x1, y1, x2, y2).","cubic-bezier(0.6, -0.28, 0.735, 0.045)":"Ease-in Back. Overshoots.","cubic-bezier(0.68, -0.55, 0.265, 1.55)":"Ease-in-out Back. Overshoots.","cubic-bezier(0.175, 0.885, 0.32, 1.275)":"Ease-out Back. Overshoots.","cubic-bezier(0.6, 0.04, 0.98, 0.335)":"Ease-in Circular. Based on half circle.","cubic-bezier(0.785, 0.135, 0.15, 0.86)":"Ease-in-out Circular. Based on half circle.","cubic-bezier(0.075, 0.82, 0.165, 1)":"Ease-out Circular. Based on half circle.","cubic-bezier(0.55, 0.055, 0.675, 0.19)":"Ease-in Cubic. Based on power of three.","cubic-bezier(0.645, 0.045, 0.355, 1)":"Ease-in-out Cubic. Based on power of three.","cubic-bezier(0.215, 0.610, 0.355, 1)":"Ease-out Cubic. Based on power of three.","cubic-bezier(0.95, 0.05, 0.795, 0.035)":"Ease-in Exponential. Based on two to the power ten.","cubic-bezier(1, 0, 0, 1)":"Ease-in-out Exponential. Based on two to the power ten.","cubic-bezier(0.19, 1, 0.22, 1)":"Ease-out Exponential. Based on two to the power ten.","cubic-bezier(0.47, 0, 0.745, 0.715)":"Ease-in Sine.","cubic-bezier(0.445, 0.05, 0.55, 0.95)":"Ease-in-out Sine.","cubic-bezier(0.39, 0.575, 0.565, 1)":"Ease-out Sine.","cubic-bezier(0.55, 0.085, 0.68, 0.53)":"Ease-in Quadratic. Based on power of two.","cubic-bezier(0.455, 0.03, 0.515, 0.955)":"Ease-in-out Quadratic. Based on power of two.","cubic-bezier(0.25, 0.46, 0.45, 0.94)":"Ease-out Quadratic. Based on power of two.","cubic-bezier(0.895, 0.03, 0.685, 0.22)":"Ease-in Quartic. Based on power of four.","cubic-bezier(0.77, 0, 0.175, 1)":"Ease-in-out Quartic. Based on power of four.","cubic-bezier(0.165, 0.84, 0.44, 1)":"Ease-out Quartic. Based on power of four.","cubic-bezier(0.755, 0.05, 0.855, 0.06)":"Ease-in Quintic. Based on power of five.","cubic-bezier(0.86, 0, 0.07, 1)":"Ease-in-out Quintic. Based on power of five.","cubic-bezier(0.23, 1, 0.320, 1)":"Ease-out Quintic. Based on power of five."},Ic={"circle()":"Defines a circle.","ellipse()":"Defines an ellipse.","inset()":"Defines an inset rectangle.","polygon()":"Defines a polygon."},Dc={length:["cap","ch","cm","cqb","cqh","cqi","cqmax","cqmin","cqw","dvb","dvh","dvi","dvw","em","ex","ic","in","lh","lvb","lvh","lvi","lvw","mm","pc","pt","px","q","rcap","rch","rem","rex","ric","rlh","svb","svh","svi","svw","vb","vh","vi","vmax","vmin","vw"],angle:["deg","rad","grad","turn"],time:["ms","s"],frequency:["Hz","kHz"],resolution:["dpi","dpcm","dppx"],percentage:["%","fr"]},gm=["a","abbr","address","area","article","aside","audio","b","base","bdi","bdo","blockquote","body","br","button","canvas","caption","cite","code","col","colgroup","data","datalist","dd","del","details","dfn","dialog","div","dl","dt","em","embed","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","head","header","hgroup","hr","html","i","iframe","img","input","ins","kbd","keygen","label","legend","li","link","main","map","mark","menu","menuitem","meta","meter","nav","noscript","object","ol","optgroup","option","output","p","param","picture","pre","progress","q","rb","rp","rt","rtc","ruby","s","samp","script","section","select","small","source","span","strong","style","sub","summary","sup","table","tbody","td","template","textarea","tfoot","th","thead","time","title","tr","track","u","ul","const","video","wbr"],bm=["circle","clipPath","cursor","defs","desc","ellipse","feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feDistantLight","feDropShadow","feFlood","feFuncA","feFuncB","feFuncG","feFuncR","feGaussianBlur","feImage","feMerge","feMergeNode","feMorphology","feOffset","fePointLight","feSpecularLighting","feSpotLight","feTile","feTurbulence","filter","foreignObject","g","hatch","hatchpath","image","line","linearGradient","marker","mask","mesh","meshpatch","meshrow","metadata","mpath","path","pattern","polygon","polyline","radialGradient","rect","set","solidcolor","stop","svg","switch","symbol","text","textPath","tspan","use","view"],wm=["@bottom-center","@bottom-left","@bottom-left-corner","@bottom-right","@bottom-right-corner","@left-bottom","@left-middle","@left-top","@right-bottom","@right-middle","@right-top","@top-center","@top-left","@top-left-corner","@top-right","@top-right-corner"];function kr(t){return Object.keys(t).map(e=>t[e])}function Te(t){return typeof t<"u"}class _r{constructor(e=new Nn){this.keyframeRegex=/^@(\-(webkit|ms|moz|o)\-)?keyframes$/i,this.scanner=e,this.token={type:p.EOF,offset:-1,len:0,text:""},this.prevToken=void 0}peekIdent(e){return p.Ident===this.token.type&&e.length===this.token.text.length&&e===this.token.text.toLowerCase()}peekKeyword(e){return p.AtKeyword===this.token.type&&e.length===this.token.text.length&&e===this.token.text.toLowerCase()}peekDelim(e){return p.Delim===this.token.type&&e===this.token.text}peek(e){return e===this.token.type}peekOne(...e){return e.indexOf(this.token.type)!==-1}peekRegExp(e,n){return e!==this.token.type?!1:n.test(this.token.text)}hasWhitespace(){return!!this.prevToken&&this.prevToken.offset+this.prevToken.len!==this.token.offset}consumeToken(){this.prevToken=this.token,this.token=this.scanner.scan()}acceptUnicodeRange(){const e=this.scanner.tryScanUnicode();return e?(this.prevToken=e,this.token=this.scanner.scan(),!0):!1}mark(){return{prev:this.prevToken,curr:this.token,pos:this.scanner.pos()}}restoreAtMark(e){this.prevToken=e.prev,this.token=e.curr,this.scanner.goBackTo(e.pos)}try(e){const n=this.mark(),r=e();return r||(this.restoreAtMark(n),null)}acceptOneKeyword(e){if(p.AtKeyword===this.token.type){for(const n of e)if(n.length===this.token.text.length&&n===this.token.text.toLowerCase())return this.consumeToken(),!0}return!1}accept(e){return e===this.token.type?(this.consumeToken(),!0):!1}acceptIdent(e){return this.peekIdent(e)?(this.consumeToken(),!0):!1}acceptKeyword(e){return this.peekKeyword(e)?(this.consumeToken(),!0):!1}acceptDelim(e){return this.peekDelim(e)?(this.consumeToken(),!0):!1}acceptRegexp(e){return e.test(this.token.text)?(this.consumeToken(),!0):!1}_parseRegexp(e){let n=this.createNode(v.Identifier);do;while(this.acceptRegexp(e));return this.finish(n)}acceptUnquotedString(){const e=this.scanner.pos();this.scanner.goBackTo(this.token.offset);const n=this.scanner.scanUnquotedString();return n?(this.token=n,this.consumeToken(),!0):(this.scanner.goBackTo(e),!1)}resync(e,n){for(;;){if(e&&e.indexOf(this.token.type)!==-1)return this.consumeToken(),!0;if(n&&n.indexOf(this.token.type)!==-1)return!0;if(this.token.type===p.EOF)return!1;this.token=this.scanner.scan()}}createNode(e){return new W(this.token.offset,this.token.len,e)}create(e){return new e(this.token.offset,this.token.len)}finish(e,n,r,i){if(!(e instanceof ye)&&(n&&this.markError(e,n,r,i),this.prevToken)){const s=this.prevToken.offset+this.prevToken.len;e.length=s>e.offset?s-e.offset:0}return e}markError(e,n,r,i){this.token!==this.lastErrorToken&&(e.addIssue(new yl(e,n,Ne.Error,void 0,this.token.offset,this.token.len)),this.lastErrorToken=this.token),(r||i)&&this.resync(r,i)}parseStylesheet(e){const n=e.version,r=e.getText(),i=(s,a)=>{if(e.version!==n)throw new Error("Underlying model has changed, AST is no longer valid");return r.substr(s,a)};return this.internalParse(r,this._parseStylesheet,i)}internalParse(e,n,r){this.scanner.setSource(e),this.token=this.scanner.scan();const i=n.bind(this)();return i&&(r?i.textProvider=r:i.textProvider=(s,a)=>e.substr(s,a)),i}_parseStylesheet(){const e=this.create(vp);for(;e.addChild(this._parseStylesheetStart()););let n=!1;do{let r=!1;do{r=!1;const i=this._parseStylesheetStatement();for(i&&(e.addChild(i),r=!0,n=!1,!this.peek(p.EOF)&&this._needsSemicolonAfter(i)&&!this.accept(p.SemiColon)&&this.markError(e,S.SemiColonExpected));this.accept(p.SemiColon)||this.accept(p.CDO)||this.accept(p.CDC);)r=!0,n=!1}while(r);if(this.peek(p.EOF))break;n||(this.peek(p.AtKeyword)?this.markError(e,S.UnknownAtRule):this.markError(e,S.RuleOrSelectorExpected),n=!0),this.consumeToken()}while(!this.peek(p.EOF));return this.finish(e)}_parseStylesheetStart(){return this._parseCharset()}_parseStylesheetStatement(e=!1){return this.peek(p.AtKeyword)?this._parseStylesheetAtStatement(e):this._parseRuleset(e)}_parseStylesheetAtStatement(e=!1){return this._parseImport()||this._parseMedia(e)||this._parsePage()||this._parseFontFace()||this._parseKeyframe()||this._parseSupports(e)||this._parseLayer(e)||this._parsePropertyAtRule()||this._parseViewPort()||this._parseNamespace()||this._parseDocument()||this._parseContainer(e)||this._parseUnknownAtRule()}_tryParseRuleset(e){const n=this.mark();if(this._parseSelector(e)){for(;this.accept(p.Comma)&&this._parseSelector(e););if(this.accept(p.CurlyL))return this.restoreAtMark(n),this._parseRuleset(e)}return this.restoreAtMark(n),null}_parseRuleset(e=!1){const n=this.create(Ft),r=n.getSelectors();if(!r.addChild(this._parseSelector(e)))return null;for(;this.accept(p.Comma);)if(!r.addChild(this._parseSelector(e)))return this.finish(n,S.SelectorExpected);return this._parseBody(n,this._parseRuleSetDeclaration.bind(this))}_parseRuleSetDeclarationAtStatement(){return this._parseMedia(!0)||this._parseSupports(!0)||this._parseLayer(!0)||this._parseContainer(!0)||this._parseUnknownAtRule()}_parseRuleSetDeclaration(){return this.peek(p.AtKeyword)?this._parseRuleSetDeclarationAtStatement():this.peek(p.Ident)?this._tryParseRuleset(!0)||this._parseDeclaration():this._parseRuleset(!0)}_needsSemicolonAfter(e){switch(e.type){case v.Keyframe:case v.ViewPort:case v.Media:case v.Ruleset:case v.Namespace:case v.If:case v.For:case v.Each:case v.While:case v.MixinDeclaration:case v.FunctionDeclaration:case v.MixinContentDeclaration:return!1;case v.ExtendsReference:case v.MixinContentReference:case v.ReturnStatement:case v.MediaQuery:case v.Debug:case v.Import:case v.AtApplyRule:case v.CustomPropertyDeclaration:return!0;case v.VariableDeclaration:return e.needsSemicolon;case v.MixinReference:return!e.getContent();case v.Declaration:return!e.getNestedProperties()}return!1}_parseDeclarations(e){const n=this.create(Li);if(!this.accept(p.CurlyL))return null;let r=e();for(;n.addChild(r)&&!this.peek(p.CurlyR);){if(this._needsSemicolonAfter(r)&&!this.accept(p.SemiColon))return this.finish(n,S.SemiColonExpected,[p.SemiColon,p.CurlyR]);for(r&&this.prevToken&&this.prevToken.type===p.SemiColon&&(r.semicolonPosition=this.prevToken.offset);this.accept(p.SemiColon););r=e()}return this.accept(p.CurlyR)?this.finish(n):this.finish(n,S.RightCurlyExpected,[p.CurlyR,p.SemiColon])}_parseBody(e,n){return e.setDeclarations(this._parseDeclarations(n))?this.finish(e):this.finish(e,S.LeftCurlyExpected,[p.CurlyR,p.SemiColon])}_parseSelector(e){const n=this.create(In);let r=!1;for(e&&(r=n.addChild(this._parseCombinator()));n.addChild(this._parseSimpleSelector());)r=!0,n.addChild(this._parseCombinator());return r?this.finish(n):null}_parseDeclaration(e){const n=this._tryParseCustomPropertyDeclaration(e);if(n)return n;const r=this.create(Pe);return r.setProperty(this._parseProperty())?this.accept(p.Colon)?(this.prevToken&&(r.colonPosition=this.prevToken.offset),r.setValue(this._parseExpr())?(r.addChild(this._parsePrio()),this.peek(p.SemiColon)&&(r.semicolonPosition=this.token.offset),this.finish(r)):this.finish(r,S.PropertyValueExpected)):this.finish(r,S.ColonExpected,[p.Colon],e||[p.SemiColon]):null}_tryParseCustomPropertyDeclaration(e){if(!this.peekRegExp(p.Ident,/^--/))return null;const n=this.create(xp);if(!n.setProperty(this._parseProperty()))return null;if(!this.accept(p.Colon))return this.finish(n,S.ColonExpected,[p.Colon]);this.prevToken&&(n.colonPosition=this.prevToken.offset);const r=this.mark();if(this.peek(p.CurlyL)){const s=this.create(yp),a=this._parseDeclarations(this._parseRuleSetDeclaration.bind(this));if(s.setDeclarations(a)&&!a.isErroneous(!0)&&(s.addChild(this._parsePrio()),this.peek(p.SemiColon)))return this.finish(s),n.setPropertySet(s),n.semicolonPosition=this.token.offset,this.finish(n);this.restoreAtMark(r)}const i=this._parseExpr();return i&&!i.isErroneous(!0)&&(this._parsePrio(),this.peekOne(...e||[],p.SemiColon,p.EOF))?(n.setValue(i),this.peek(p.SemiColon)&&(n.semicolonPosition=this.token.offset),this.finish(n)):(this.restoreAtMark(r),n.addChild(this._parseCustomPropertyValue(e)),n.addChild(this._parsePrio()),Te(n.colonPosition)&&this.token.offset===n.colonPosition+1?this.finish(n,S.PropertyValueExpected):this.finish(n))}_parseCustomPropertyValue(e=[p.CurlyR]){const n=this.create(W),r=()=>s===0&&a===0&&o===0,i=()=>e.indexOf(this.token.type)!==-1;let s=0,a=0,o=0;e:for(;;){switch(this.token.type){case p.SemiColon:if(r())break e;break;case p.Exclamation:if(r())break e;break;case p.CurlyL:s++;break;case p.CurlyR:if(s--,s<0){if(i()&&a===0&&o===0)break e;return this.finish(n,S.LeftCurlyExpected)}break;case p.ParenthesisL:a++;break;case p.ParenthesisR:if(a--,a<0){if(i()&&o===0&&s===0)break e;return this.finish(n,S.LeftParenthesisExpected)}break;case p.BracketL:o++;break;case p.BracketR:if(o--,o<0)return this.finish(n,S.LeftSquareBracketExpected);break;case p.BadString:break e;case p.EOF:let l=S.RightCurlyExpected;return o>0?l=S.RightSquareBracketExpected:a>0&&(l=S.RightParenthesisExpected),this.finish(n,l)}this.consumeToken()}return this.finish(n)}_tryToParseDeclaration(e){const n=this.mark();return this._parseProperty()&&this.accept(p.Colon)?(this.restoreAtMark(n),this._parseDeclaration(e)):(this.restoreAtMark(n),null)}_parseProperty(){const e=this.create(Mi),n=this.mark();return(this.acceptDelim("*")||this.acceptDelim("_"))&&this.hasWhitespace()?(this.restoreAtMark(n),null):e.setIdentifier(this._parsePropertyIdentifier())?this.finish(e):null}_parsePropertyIdentifier(){return this._parseIdent()}_parseCharset(){if(!this.peek(p.Charset))return null;const e=this.create(W);return this.consumeToken(),this.accept(p.String)?this.accept(p.SemiColon)?this.finish(e):this.finish(e,S.SemiColonExpected):this.finish(e,S.IdentifierExpected)}_parseImport(){if(!this.peekKeyword("@import"))return null;const e=this.create(zi);return this.consumeToken(),!e.addChild(this._parseURILiteral())&&!e.addChild(this._parseStringLiteral())?this.finish(e,S.URIOrStringExpected):this._completeParseImport(e)}_completeParseImport(e){if(this.acceptIdent("layer")&&this.accept(p.ParenthesisL)){if(!e.addChild(this._parseLayerName()))return this.finish(e,S.IdentifierExpected,[p.SemiColon]);if(!this.accept(p.ParenthesisR))return this.finish(e,S.RightParenthesisExpected,[p.ParenthesisR],[])}return this.acceptIdent("supports")&&this.accept(p.ParenthesisL)&&(e.addChild(this._tryToParseDeclaration()||this._parseSupportsCondition()),!this.accept(p.ParenthesisR))?this.finish(e,S.RightParenthesisExpected,[p.ParenthesisR],[]):(!this.peek(p.SemiColon)&&!this.peek(p.EOF)&&e.setMedialist(this._parseMediaQueryList()),this.finish(e))}_parseNamespace(){if(!this.peekKeyword("@namespace"))return null;const e=this.create(Ap);return this.consumeToken(),!e.addChild(this._parseURILiteral())&&(e.addChild(this._parseIdent()),!e.addChild(this._parseURILiteral())&&!e.addChild(this._parseStringLiteral()))?this.finish(e,S.URIExpected,[p.SemiColon]):this.accept(p.SemiColon)?this.finish(e):this.finish(e,S.SemiColonExpected)}_parseFontFace(){if(!this.peekKeyword("@font-face"))return null;const e=this.create(dl);return this.consumeToken(),this._parseBody(e,this._parseRuleSetDeclaration.bind(this))}_parseViewPort(){if(!this.peekKeyword("@-ms-viewport")&&!this.peekKeyword("@-o-viewport")&&!this.peekKeyword("@viewport"))return null;const e=this.create(Rp);return this.consumeToken(),this._parseBody(e,this._parseRuleSetDeclaration.bind(this))}_parseKeyframe(){if(!this.peekRegExp(p.AtKeyword,this.keyframeRegex))return null;const e=this.create(pl),n=this.create(W);return this.consumeToken(),e.setKeyword(this.finish(n)),n.matches("@-ms-keyframes")&&this.markError(n,S.UnknownKeyword),e.setIdentifier(this._parseKeyframeIdent())?this._parseBody(e,this._parseKeyframeSelector.bind(this)):this.finish(e,S.IdentifierExpected,[p.CurlyR])}_parseKeyframeIdent(){return this._parseIdent([Q.Keyframe])}_parseKeyframeSelector(){const e=this.create(ml);let n=!1;if(e.addChild(this._parseIdent())&&(n=!0),this.accept(p.Percentage)&&(n=!0),!n)return null;for(;this.accept(p.Comma);)if(n=!1,e.addChild(this._parseIdent())&&(n=!0),this.accept(p.Percentage)&&(n=!0),!n)return this.finish(e,S.PercentageExpected);return this._parseBody(e,this._parseRuleSetDeclaration.bind(this))}_tryParseKeyframeSelector(){const e=this.create(ml),n=this.mark();let r=!1;if(e.addChild(this._parseIdent())&&(r=!0),this.accept(p.Percentage)&&(r=!0),!r)return null;for(;this.accept(p.Comma);)if(r=!1,e.addChild(this._parseIdent())&&(r=!0),this.accept(p.Percentage)&&(r=!0),!r)return this.restoreAtMark(n),null;return this.peek(p.CurlyL)?this._parseBody(e,this._parseRuleSetDeclaration.bind(this)):(this.restoreAtMark(n),null)}_parsePropertyAtRule(){if(!this.peekKeyword("@property"))return null;const e=this.create(zp);return this.consumeToken(),!this.peekRegExp(p.Ident,/^--/)||!e.setName(this._parseIdent([Q.Property]))?this.finish(e,S.IdentifierExpected):this._parseBody(e,this._parseDeclaration.bind(this))}_parseLayer(e=!1){if(!this.peekKeyword("@layer"))return null;const n=this.create(Mp);this.consumeToken();const r=this._parseLayerNameList();return r&&n.setNames(r),(!r||r.getChildren().length===1)&&this.peek(p.CurlyL)?this._parseBody(n,this._parseLayerDeclaration.bind(this,e)):this.accept(p.SemiColon)?this.finish(n):this.finish(n,S.SemiColonExpected)}_parseLayerDeclaration(e=!1){return e?this._tryParseRuleset(!0)||this._tryToParseDeclaration()||this._parseStylesheetStatement(!0):this._parseStylesheetStatement(!1)}_parseLayerNameList(){const e=this.createNode(v.LayerNameList);if(!e.addChild(this._parseLayerName()))return null;for(;this.accept(p.Comma);)if(!e.addChild(this._parseLayerName()))return this.finish(e,S.IdentifierExpected);return this.finish(e)}_parseLayerName(){const e=this.createNode(v.LayerName);if(!e.addChild(this._parseIdent()))return null;for(;!this.hasWhitespace()&&this.acceptDelim(".");)if(this.hasWhitespace()||!e.addChild(this._parseIdent()))return this.finish(e,S.IdentifierExpected);return this.finish(e)}_parseSupports(e=!1){if(!this.peekKeyword("@supports"))return null;const n=this.create(Ti);return this.consumeToken(),n.addChild(this._parseSupportsCondition()),this._parseBody(n,this._parseSupportsDeclaration.bind(this,e))}_parseSupportsDeclaration(e=!1){return e?this._tryParseRuleset(!0)||this._tryToParseDeclaration()||this._parseStylesheetStatement(!0):this._parseStylesheetStatement(!1)}_parseSupportsCondition(){const e=this.create(Ln);if(this.acceptIdent("not"))e.addChild(this._parseSupportsConditionInParens());else if(e.addChild(this._parseSupportsConditionInParens()),this.peekRegExp(p.Ident,/^(and|or)$/i)){const n=this.token.text.toLowerCase();for(;this.acceptIdent(n);)e.addChild(this._parseSupportsConditionInParens())}return this.finish(e)}_parseSupportsConditionInParens(){const e=this.create(Ln);if(this.accept(p.ParenthesisL))return this.prevToken&&(e.lParent=this.prevToken.offset),!e.addChild(this._tryToParseDeclaration([p.ParenthesisR]))&&!this._parseSupportsCondition()?this.finish(e,S.ConditionExpected):this.accept(p.ParenthesisR)?(this.prevToken&&(e.rParent=this.prevToken.offset),this.finish(e)):this.finish(e,S.RightParenthesisExpected,[p.ParenthesisR],[]);if(this.peek(p.Ident)){const n=this.mark();if(this.consumeToken(),!this.hasWhitespace()&&this.accept(p.ParenthesisL)){let r=1;for(;this.token.type!==p.EOF&&r!==0;)this.token.type===p.ParenthesisL?r++:this.token.type===p.ParenthesisR&&r--,this.consumeToken();return this.finish(e)}else this.restoreAtMark(n)}return this.finish(e,S.LeftParenthesisExpected,[],[p.ParenthesisL])}_parseMediaDeclaration(e=!1){return e?this._tryParseRuleset(!0)||this._tryToParseDeclaration()||this._parseStylesheetStatement(!0):this._parseStylesheetStatement(!1)}_parseMedia(e=!1){if(!this.peekKeyword("@media"))return null;const n=this.create(Pi);return this.consumeToken(),n.addChild(this._parseMediaQueryList())?this._parseBody(n,this._parseMediaDeclaration.bind(this,e)):this.finish(n,S.MediaQueryExpected)}_parseMediaQueryList(){const e=this.create(fl);if(!e.addChild(this._parseMediaQuery()))return this.finish(e,S.MediaQueryExpected);for(;this.accept(p.Comma);)if(!e.addChild(this._parseMediaQuery()))return this.finish(e,S.MediaQueryExpected);return this.finish(e)}_parseMediaQuery(){const e=this.create(gl),n=this.mark();if(this.acceptIdent("not"),this.peek(p.ParenthesisL))this.restoreAtMark(n),e.addChild(this._parseMediaCondition());else{if(this.acceptIdent("only"),!e.addChild(this._parseIdent()))return null;this.acceptIdent("and")&&e.addChild(this._parseMediaCondition())}return this.finish(e)}_parseRatio(){const e=this.mark(),n=this.create(qp);return this._parseNumeric()?this.acceptDelim("/")?this._parseNumeric()?this.finish(n):this.finish(n,S.NumberExpected):(this.restoreAtMark(e),null):null}_parseMediaCondition(){const e=this.create(Op);this.acceptIdent("not");let n=!0;for(;n;){if(!this.accept(p.ParenthesisL))return this.finish(e,S.LeftParenthesisExpected,[],[p.CurlyL]);if(this.peek(p.ParenthesisL)||this.peekIdent("not")?e.addChild(this._parseMediaCondition()):e.addChild(this._parseMediaFeature()),!this.accept(p.ParenthesisR))return this.finish(e,S.RightParenthesisExpected,[],[p.CurlyL]);n=this.acceptIdent("and")||this.acceptIdent("or")}return this.finish(e)}_parseMediaFeature(){const e=[p.ParenthesisR],n=this.create(Wp);if(n.addChild(this._parseMediaFeatureName())){if(this.accept(p.Colon)){if(!n.addChild(this._parseMediaFeatureValue()))return this.finish(n,S.TermExpected,[],e)}else if(this._parseMediaFeatureRangeOperator()){if(!n.addChild(this._parseMediaFeatureValue()))return this.finish(n,S.TermExpected,[],e);if(this._parseMediaFeatureRangeOperator()&&!n.addChild(this._parseMediaFeatureValue()))return this.finish(n,S.TermExpected,[],e)}}else if(n.addChild(this._parseMediaFeatureValue())){if(!this._parseMediaFeatureRangeOperator())return this.finish(n,S.OperatorExpected,[],e);if(!n.addChild(this._parseMediaFeatureName()))return this.finish(n,S.IdentifierExpected,[],e);if(this._parseMediaFeatureRangeOperator()&&!n.addChild(this._parseMediaFeatureValue()))return this.finish(n,S.TermExpected,[],e)}else return this.finish(n,S.IdentifierExpected,[],e);return this.finish(n)}_parseMediaFeatureRangeOperator(){return this.acceptDelim("<")||this.acceptDelim(">")?(this.hasWhitespace()||this.acceptDelim("="),!0):!!this.acceptDelim("=")}_parseMediaFeatureName(){return this._parseIdent()}_parseMediaFeatureValue(){return this._parseRatio()||this._parseTermExpression()}_parseMedium(){const e=this.create(W);return e.addChild(this._parseIdent())?this.finish(e):null}_parsePageDeclaration(){return this._parsePageMarginBox()||this._parseRuleSetDeclaration()}_parsePage(){if(!this.peekKeyword("@page"))return null;const e=this.create(Vp);if(this.consumeToken(),e.addChild(this._parsePageSelector())){for(;this.accept(p.Comma);)if(!e.addChild(this._parsePageSelector()))return this.finish(e,S.IdentifierExpected)}return this._parseBody(e,this._parsePageDeclaration.bind(this))}_parsePageMarginBox(){if(!this.peek(p.AtKeyword))return null;const e=this.create($p);return this.acceptOneKeyword(wm)||this.markError(e,S.UnknownAtRule,[],[p.CurlyL]),this._parseBody(e,this._parseRuleSetDeclaration.bind(this))}_parsePageSelector(){if(!this.peek(p.Ident)&&!this.peek(p.Colon))return null;const e=this.create(W);return e.addChild(this._parseIdent()),this.accept(p.Colon)&&!e.addChild(this._parseIdent())?this.finish(e,S.IdentifierExpected):this.finish(e)}_parseDocument(){if(!this.peekKeyword("@-moz-document"))return null;const e=this.create(Pp);return this.consumeToken(),this.resync([],[p.CurlyL]),this._parseBody(e,this._parseStylesheetStatement.bind(this))}_parseContainerDeclaration(e=!1){return e?this._tryParseRuleset(!0)||this._tryToParseDeclaration()||this._parseStylesheetStatement(!0):this._parseStylesheetStatement(!1)}_parseContainer(e=!1){if(!this.peekKeyword("@container"))return null;const n=this.create(Tp);return this.consumeToken(),n.addChild(this._parseIdent()),n.addChild(this._parseContainerQuery()),this._parseBody(n,this._parseContainerDeclaration.bind(this,e))}_parseContainerQuery(){const e=this.create(W);if(this.acceptIdent("not"))e.addChild(this._parseContainerQueryInParens());else if(e.addChild(this._parseContainerQueryInParens()),this.peekIdent("and"))for(;this.acceptIdent("and");)e.addChild(this._parseContainerQueryInParens());else if(this.peekIdent("or"))for(;this.acceptIdent("or");)e.addChild(this._parseContainerQueryInParens());return this.finish(e)}_parseContainerQueryInParens(){const e=this.create(W);if(this.accept(p.ParenthesisL)){if(this.peekIdent("not")||this.peek(p.ParenthesisL)?e.addChild(this._parseContainerQuery()):e.addChild(this._parseMediaFeature()),!this.accept(p.ParenthesisR))return this.finish(e,S.RightParenthesisExpected,[],[p.CurlyL])}else if(this.acceptIdent("style")){if(this.hasWhitespace()||!this.accept(p.ParenthesisL))return this.finish(e,S.LeftParenthesisExpected,[],[p.CurlyL]);if(e.addChild(this._parseStyleQuery()),!this.accept(p.ParenthesisR))return this.finish(e,S.RightParenthesisExpected,[],[p.CurlyL])}else return this.finish(e,S.LeftParenthesisExpected,[],[p.CurlyL]);return this.finish(e)}_parseStyleQuery(){const e=this.create(W);if(this.acceptIdent("not"))e.addChild(this._parseStyleInParens());else if(this.peek(p.ParenthesisL)){if(e.addChild(this._parseStyleInParens()),this.peekIdent("and"))for(;this.acceptIdent("and");)e.addChild(this._parseStyleInParens());else if(this.peekIdent("or"))for(;this.acceptIdent("or");)e.addChild(this._parseStyleInParens())}else e.addChild(this._parseDeclaration([p.ParenthesisR]));return this.finish(e)}_parseStyleInParens(){const e=this.create(W);if(this.accept(p.ParenthesisL)){if(e.addChild(this._parseStyleQuery()),!this.accept(p.ParenthesisR))return this.finish(e,S.RightParenthesisExpected,[],[p.CurlyL])}else return this.finish(e,S.LeftParenthesisExpected,[],[p.CurlyL]);return this.finish(e)}_parseUnknownAtRule(){if(!this.peek(p.AtKeyword))return null;const e=this.create(wl);e.addChild(this._parseUnknownAtRuleName());const n=()=>i===0&&s===0&&a===0;let r=0,i=0,s=0,a=0;e:for(;;){switch(this.token.type){case p.SemiColon:if(n())break e;break;case p.EOF:return i>0?this.finish(e,S.RightCurlyExpected):a>0?this.finish(e,S.RightSquareBracketExpected):s>0?this.finish(e,S.RightParenthesisExpected):this.finish(e);case p.CurlyL:r++,i++;break;case p.CurlyR:if(i--,r>0&&i===0){if(this.consumeToken(),a>0)return this.finish(e,S.RightSquareBracketExpected);if(s>0)return this.finish(e,S.RightParenthesisExpected);break e}if(i<0){if(s===0&&a===0)break e;return this.finish(e,S.LeftCurlyExpected)}break;case p.ParenthesisL:s++;break;case p.ParenthesisR:if(s--,s<0)return this.finish(e,S.LeftParenthesisExpected);break;case p.BracketL:a++;break;case p.BracketR:if(a--,a<0)return this.finish(e,S.LeftSquareBracketExpected);break}this.consumeToken()}return e}_parseUnknownAtRuleName(){const e=this.create(W);return this.accept(p.AtKeyword)?this.finish(e):e}_parseOperator(){if(this.peekDelim("/")||this.peekDelim("*")||this.peekDelim("+")||this.peekDelim("-")||this.peek(p.Dashmatch)||this.peek(p.Includes)||this.peek(p.SubstringOperator)||this.peek(p.PrefixOperator)||this.peek(p.SuffixOperator)||this.peekDelim("=")){const e=this.createNode(v.Operator);return this.consumeToken(),this.finish(e)}else return null}_parseUnaryOperator(){if(!this.peekDelim("+")&&!this.peekDelim("-"))return null;const e=this.create(W);return this.consumeToken(),this.finish(e)}_parseCombinator(){if(this.peekDelim(">")){const e=this.create(W);this.consumeToken();const n=this.mark();if(!this.hasWhitespace()&&this.acceptDelim(">")){if(!this.hasWhitespace()&&this.acceptDelim(">"))return e.type=v.SelectorCombinatorShadowPiercingDescendant,this.finish(e);this.restoreAtMark(n)}return e.type=v.SelectorCombinatorParent,this.finish(e)}else if(this.peekDelim("+")){const e=this.create(W);return this.consumeToken(),e.type=v.SelectorCombinatorSibling,this.finish(e)}else if(this.peekDelim("~")){const e=this.create(W);return this.consumeToken(),e.type=v.SelectorCombinatorAllSiblings,this.finish(e)}else if(this.peekDelim("/")){const e=this.create(W);this.consumeToken();const n=this.mark();if(!this.hasWhitespace()&&this.acceptIdent("deep")&&!this.hasWhitespace()&&this.acceptDelim("/"))return e.type=v.SelectorCombinatorShadowPiercingDescendant,this.finish(e);this.restoreAtMark(n)}return null}_parseSimpleSelector(){const e=this.create(Yt);let n=0;for(e.addChild(this._parseElementName()||this._parseNestingSelector())&&n++;(n===0||!this.hasWhitespace())&&e.addChild(this._parseSimpleSelectorBody());)n++;return n>0?this.finish(e):null}_parseNestingSelector(){if(this.peekDelim("&")){const e=this.createNode(v.SelectorCombinator);return this.consumeToken(),this.finish(e)}return null}_parseSimpleSelectorBody(){return this._parsePseudo()||this._parseHash()||this._parseClass()||this._parseAttrib()}_parseSelectorIdent(){return this._parseIdent()}_parseHash(){if(!this.peek(p.Hash)&&!this.peekDelim("#"))return null;const e=this.createNode(v.IdentifierSelector);if(this.acceptDelim("#")){if(this.hasWhitespace()||!e.addChild(this._parseSelectorIdent()))return this.finish(e,S.IdentifierExpected)}else this.consumeToken();return this.finish(e)}_parseClass(){if(!this.peekDelim("."))return null;const e=this.createNode(v.ClassSelector);return this.consumeToken(),this.hasWhitespace()||!e.addChild(this._parseSelectorIdent())?this.finish(e,S.IdentifierExpected):this.finish(e)}_parseElementName(){const e=this.mark(),n=this.createNode(v.ElementNameSelector);return n.addChild(this._parseNamespacePrefix()),!n.addChild(this._parseSelectorIdent())&&!this.acceptDelim("*")?(this.restoreAtMark(e),null):this.finish(n)}_parseNamespacePrefix(){const e=this.mark(),n=this.createNode(v.NamespacePrefix);return!n.addChild(this._parseIdent())&&this.acceptDelim("*"),this.acceptDelim("|")?this.finish(n):(this.restoreAtMark(e),null)}_parseAttrib(){if(!this.peek(p.BracketL))return null;const e=this.create(Bp);return this.consumeToken(),e.setNamespacePrefix(this._parseNamespacePrefix()),e.setIdentifier(this._parseIdent())?(e.setOperator(this._parseOperator())&&(e.setValue(this._parseBinaryExpr()),this.acceptIdent("i"),this.acceptIdent("s")),this.accept(p.BracketR)?this.finish(e):this.finish(e,S.RightSquareBracketExpected)):this.finish(e,S.IdentifierExpected)}_parsePseudo(){const e=this._tryParsePseudoIdentifier();if(e){if(!this.hasWhitespace()&&this.accept(p.ParenthesisL)){const n=()=>{const i=this.create(W);if(!i.addChild(this._parseSelector(!0)))return null;for(;this.accept(p.Comma)&&i.addChild(this._parseSelector(!0)););return this.peek(p.ParenthesisR)?this.finish(i):null};if(!e.addChild(this.try(n))&&e.addChild(this._parseBinaryExpr())&&this.acceptIdent("of")&&!e.addChild(this.try(n)))return this.finish(e,S.SelectorExpected);if(!this.accept(p.ParenthesisR))return this.finish(e,S.RightParenthesisExpected)}return this.finish(e)}return null}_tryParsePseudoIdentifier(){if(!this.peek(p.Colon))return null;const e=this.mark(),n=this.createNode(v.PseudoSelector);return this.consumeToken(),this.hasWhitespace()?(this.restoreAtMark(e),null):(this.accept(p.Colon),this.hasWhitespace()||!n.addChild(this._parseIdent())?this.finish(n,S.IdentifierExpected):this.finish(n))}_tryParsePrio(){const e=this.mark(),n=this._parsePrio();return n||(this.restoreAtMark(e),null)}_parsePrio(){if(!this.peek(p.Exclamation))return null;const e=this.createNode(v.Prio);return this.accept(p.Exclamation)&&this.acceptIdent("important")?this.finish(e):null}_parseExpr(e=!1){const n=this.create(bl);if(!n.addChild(this._parseBinaryExpr()))return null;for(;;){if(this.peek(p.Comma)){if(e)return this.finish(n);this.consumeToken()}if(!n.addChild(this._parseBinaryExpr()))break}return this.finish(n)}_parseUnicodeRange(){if(!this.peekIdent("u"))return null;const e=this.create(wp);return this.acceptUnicodeRange()?this.finish(e):null}_parseNamedLine(){if(!this.peek(p.BracketL))return null;const e=this.createNode(v.GridLine);for(this.consumeToken();e.addChild(this._parseIdent()););return this.accept(p.BracketR)?this.finish(e):this.finish(e,S.RightSquareBracketExpected)}_parseBinaryExpr(e,n){let r=this.create(Oi);if(!r.setLeft(e||this._parseTerm()))return null;if(!r.setOperator(n||this._parseOperator()))return this.finish(r);if(!r.setRight(this._parseTerm()))return this.finish(r,S.TermExpected);r=this.finish(r);const i=this._parseOperator();return i&&(r=this._parseBinaryExpr(r,i)),this.finish(r)}_parseTerm(){let e=this.create(Up);return e.setOperator(this._parseUnaryOperator()),e.setExpression(this._parseTermExpression())?this.finish(e):null}_parseTermExpression(){return this._parseURILiteral()||this._parseUnicodeRange()||this._parseFunction()||this._parseIdent()||this._parseStringLiteral()||this._parseNumeric()||this._parseHexColor()||this._parseOperation()||this._parseNamedLine()}_parseOperation(){if(!this.peek(p.ParenthesisL))return null;const e=this.create(W);return this.consumeToken(),e.addChild(this._parseExpr()),this.accept(p.ParenthesisR)?this.finish(e):this.finish(e,S.RightParenthesisExpected)}_parseNumeric(){if(this.peek(p.Num)||this.peek(p.Percentage)||this.peek(p.Resolution)||this.peek(p.Length)||this.peek(p.EMS)||this.peek(p.EXS)||this.peek(p.Angle)||this.peek(p.Time)||this.peek(p.Dimension)||this.peek(p.ContainerQueryLength)||this.peek(p.Freq)){const e=this.create(Vi);return this.consumeToken(),this.finish(e)}return null}_parseStringLiteral(){if(!this.peek(p.String)&&!this.peek(p.BadString))return null;const e=this.createNode(v.StringLiteral);return this.consumeToken(),this.finish(e)}_parseURILiteral(){if(!this.peekRegExp(p.Ident,/^url(-prefix)?$/i))return null;const e=this.mark(),n=this.createNode(v.URILiteral);return this.accept(p.Ident),this.hasWhitespace()||!this.peek(p.ParenthesisL)?(this.restoreAtMark(e),null):(this.scanner.inURL=!0,this.consumeToken(),n.addChild(this._parseURLArgument()),this.scanner.inURL=!1,this.accept(p.ParenthesisR)?this.finish(n):this.finish(n,S.RightParenthesisExpected))}_parseURLArgument(){const e=this.create(W);return!this.accept(p.String)&&!this.accept(p.BadString)&&!this.acceptUnquotedString()?null:this.finish(e)}_parseIdent(e){if(!this.peek(p.Ident))return null;const n=this.create(ze);return e&&(n.referenceTypes=e),n.isCustomProperty=this.peekRegExp(p.Ident,/^--/),this.consumeToken(),this.finish(n)}_parseFunction(){const e=this.mark(),n=this.create(Dn);if(!n.setIdentifier(this._parseFunctionIdentifier()))return null;if(this.hasWhitespace()||!this.accept(p.ParenthesisL))return this.restoreAtMark(e),null;if(n.getArguments().addChild(this._parseFunctionArgument()))for(;this.accept(p.Comma)&&!this.peek(p.ParenthesisR);)n.getArguments().addChild(this._parseFunctionArgument())||this.markError(n,S.ExpressionExpected);return this.accept(p.ParenthesisR)?this.finish(n):this.finish(n,S.RightParenthesisExpected)}_parseFunctionIdentifier(){if(!this.peek(p.Ident))return null;const e=this.create(ze);if(e.referenceTypes=[Q.Function],this.acceptIdent("progid")){if(this.accept(p.Colon))for(;this.accept(p.Ident)&&this.acceptDelim("."););return this.finish(e)}return this.consumeToken(),this.finish(e)}_parseFunctionArgument(){const e=this.create(Qt);return e.setValue(this._parseExpr(!0))?this.finish(e):null}_parseHexColor(){if(this.peekRegExp(p.Hash,/^#([A-Fa-f0-9]{3}|[A-Fa-f0-9]{4}|[A-Fa-f0-9]{6}|[A-Fa-f0-9]{8})$/g)){const e=this.create(Wi);return this.consumeToken(),this.finish(e)}else return null}}function vm(t,e){let n=0,r=t.length;if(r===0)return 0;for(;ne+n||this.offset===e&&this.length===n?this.findInScope(e,n):null}findInScope(e,n=0){const r=e+n,i=vm(this.children,a=>a.offset>r);if(i===0)return this;const s=this.children[i-1];return s.offset<=e&&s.offset+s.length>=e+n?s.findInScope(e,n):this}addSymbol(e){this.symbols.push(e)}getSymbol(e,n){for(let r=0;r/g,">")}function Sm(t,e){if(!t.description||t.description==="")return"";if(typeof t.description!="string")return t.description.value;let n="";if((e==null?void 0:e.documentation)!==!1){t.status&&(n+=zc(t.status)),n+=t.description;const r=Pc(t.browsers);r&&(n+=`
+(`+r+")"),"syntax"in t&&(n+=`
+
+Syntax: ${t.syntax}`)}return t.references&&t.references.length>0&&(e==null?void 0:e.references)!==!1&&(n.length>0&&(n+=`
+
+`),n+=t.references.map(r=>`${r.name}: ${r.url}`).join(" | ")),n}function Cm(t,e){if(!t.description||t.description==="")return"";let n="";if((e==null?void 0:e.documentation)!==!1){t.status&&(n+=zc(t.status)),typeof t.description=="string"?n+=Rr(t.description):n+=t.description.kind===Ge.Markdown?t.description.value:Rr(t.description.value);const r=Pc(t.browsers);r&&(n+=`
+
+(`+Rr(r)+")"),"syntax"in t&&t.syntax&&(n+=`
+
+Syntax: ${Rr(t.syntax)}`)}return t.references&&t.references.length>0&&(e==null?void 0:e.references)!==!1&&(n.length>0&&(n+=`
+
+`),n+=t.references.map(r=>`[${r.name}](${r.url})`).join(" | ")),n}function Pc(t=[]){return t.length===0?null:t.map(e=>{let n="";const r=e.match(/([A-Z]+)(\d+)?/),i=r[1],s=r[2];return i in Mc&&(n+=Mc[i]),s&&(n+=" "+s),n}).join(", ")}var Tc;(()=>{var t={470:i=>{function s(l){if(typeof l!="string")throw new TypeError("Path must be a string. Received "+JSON.stringify(l))}function a(l,c){for(var d,u="",m=0,f=-1,g=0,b=0;b<=l.length;++b){if(b2){var F=u.lastIndexOf("/");if(F!==u.length-1){F===-1?(u="",m=0):m=(u=u.slice(0,F)).length-1-u.lastIndexOf("/"),f=b,g=0;continue}}else if(u.length===2||u.length===1){u="",m=0,f=b,g=0;continue}}c&&(u.length>0?u+="/..":u="..",m=2)}else u.length>0?u+="/"+l.slice(f+1,b):u=l.slice(f+1,b),m=b-f-1;f=b,g=0}else d===46&&g!==-1?++g:g=-1}return u}var o={resolve:function(){for(var l,c="",d=!1,u=arguments.length-1;u>=-1&&!d;u--){var m;u>=0?m=arguments[u]:(l===void 0&&(l=process.cwd()),m=l),s(m),m.length!==0&&(c=m+"/"+c,d=m.charCodeAt(0)===47)}return c=a(c,!d),d?c.length>0?"/"+c:"/":c.length>0?c:"."},normalize:function(l){if(s(l),l.length===0)return".";var c=l.charCodeAt(0)===47,d=l.charCodeAt(l.length-1)===47;return(l=a(l,!c)).length!==0||c||(l="."),l.length>0&&d&&(l+="/"),c?"/"+l:l},isAbsolute:function(l){return s(l),l.length>0&&l.charCodeAt(0)===47},join:function(){if(arguments.length===0)return".";for(var l,c=0;c0&&(l===void 0?l=d:l+="/"+d)}return l===void 0?".":o.normalize(l)},relative:function(l,c){if(s(l),s(c),l===c||(l=o.resolve(l))===(c=o.resolve(c)))return"";for(var d=1;db){if(c.charCodeAt(f+E)===47)return c.slice(f+E+1);if(E===0)return c.slice(f+E)}else m>b&&(l.charCodeAt(d+E)===47?F=E:E===0&&(F=0));break}var I=l.charCodeAt(d+E);if(I!==c.charCodeAt(f+E))break;I===47&&(F=E)}var _="";for(E=d+F+1;E<=u;++E)E!==u&&l.charCodeAt(E)!==47||(_.length===0?_+="..":_+="/..");return _.length>0?_+c.slice(f+F):(f+=F,c.charCodeAt(f)===47&&++f,c.slice(f))},_makeLong:function(l){return l},dirname:function(l){if(s(l),l.length===0)return".";for(var c=l.charCodeAt(0),d=c===47,u=-1,m=!0,f=l.length-1;f>=1;--f)if((c=l.charCodeAt(f))===47){if(!m){u=f;break}}else m=!1;return u===-1?d?"/":".":d&&u===1?"//":l.slice(0,u)},basename:function(l,c){if(c!==void 0&&typeof c!="string")throw new TypeError('"ext" argument must be a string');s(l);var d,u=0,m=-1,f=!0;if(c!==void 0&&c.length>0&&c.length<=l.length){if(c.length===l.length&&c===l)return"";var g=c.length-1,b=-1;for(d=l.length-1;d>=0;--d){var F=l.charCodeAt(d);if(F===47){if(!f){u=d+1;break}}else b===-1&&(f=!1,b=d+1),g>=0&&(F===c.charCodeAt(g)?--g==-1&&(m=d):(g=-1,m=b))}return u===m?m=b:m===-1&&(m=l.length),l.slice(u,m)}for(d=l.length-1;d>=0;--d)if(l.charCodeAt(d)===47){if(!f){u=d+1;break}}else m===-1&&(f=!1,m=d+1);return m===-1?"":l.slice(u,m)},extname:function(l){s(l);for(var c=-1,d=0,u=-1,m=!0,f=0,g=l.length-1;g>=0;--g){var b=l.charCodeAt(g);if(b!==47)u===-1&&(m=!1,u=g+1),b===46?c===-1?c=g:f!==1&&(f=1):c!==-1&&(f=-1);else if(!m){d=g+1;break}}return c===-1||u===-1||f===0||f===1&&c===u-1&&c===d+1?"":l.slice(c,u)},format:function(l){if(l===null||typeof l!="object")throw new TypeError('The "pathObject" argument must be of type Object. Received type '+typeof l);return function(c,d){var u=d.dir||d.root,m=d.base||(d.name||"")+(d.ext||"");return u?u===d.root?u+m:u+"/"+m:m}(0,l)},parse:function(l){s(l);var c={root:"",dir:"",base:"",ext:"",name:""};if(l.length===0)return c;var d,u=l.charCodeAt(0),m=u===47;m?(c.root="/",d=1):d=0;for(var f=-1,g=0,b=-1,F=!0,E=l.length-1,I=0;E>=d;--E)if((u=l.charCodeAt(E))!==47)b===-1&&(F=!1,b=E+1),u===46?f===-1?f=E:I!==1&&(I=1):f!==-1&&(I=-1);else if(!F){g=E+1;break}return f===-1||b===-1||I===0||I===1&&f===b-1&&f===g+1?b!==-1&&(c.base=c.name=g===0&&m?l.slice(1,b):l.slice(g,b)):(g===0&&m?(c.name=l.slice(1,f),c.base=l.slice(1,b)):(c.name=l.slice(g,f),c.base=l.slice(g,b)),c.ext=l.slice(f,b)),g>0?c.dir=l.slice(0,g-1):m&&(c.dir="/"),c},sep:"/",delimiter:":",win32:null,posix:null};o.posix=o,i.exports=o}},e={};function n(i){var s=e[i];if(s!==void 0)return s.exports;var a=e[i]={exports:{}};return t[i](a,a.exports,n),a.exports}n.d=(i,s)=>{for(var a in s)n.o(s,a)&&!n.o(i,a)&&Object.defineProperty(i,a,{enumerable:!0,get:s[a]})},n.o=(i,s)=>Object.prototype.hasOwnProperty.call(i,s),n.r=i=>{typeof Symbol<"u"&&Symbol.toStringTag&&Object.defineProperty(i,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(i,"__esModule",{value:!0})};var r={};(()=>{let i;n.r(r),n.d(r,{URI:()=>m,Utils:()=>$}),typeof process=="object"?i=process.platform==="win32":typeof navigator=="object"&&(i=navigator.userAgent.indexOf("Windows")>=0);const s=/^\w[\w\d+.-]*$/,a=/^\//,o=/^\/\//;function l(L,y){if(!L.scheme&&y)throw new Error(`[UriError]: Scheme is missing: {scheme: "", authority: "${L.authority}", path: "${L.path}", query: "${L.query}", fragment: "${L.fragment}"}`);if(L.scheme&&!s.test(L.scheme))throw new Error("[UriError]: Scheme contains illegal characters.");if(L.path){if(L.authority){if(!a.test(L.path))throw new Error('[UriError]: If a URI contains an authority component, then the path component must either be empty or begin with a slash ("/") character')}else if(o.test(L.path))throw new Error('[UriError]: If a URI does not contain an authority component, then the path cannot begin with two slash characters ("//")')}}const c="",d="/",u=/^(([^:/?#]+?):)?(\/\/([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?/;class m{constructor(y,k,D,A,M,T=!1){yt(this,"scheme");yt(this,"authority");yt(this,"path");yt(this,"query");yt(this,"fragment");typeof y=="object"?(this.scheme=y.scheme||c,this.authority=y.authority||c,this.path=y.path||c,this.query=y.query||c,this.fragment=y.fragment||c):(this.scheme=function(H,ee){return H||ee?H:"file"}(y,T),this.authority=k||c,this.path=function(H,ee){switch(H){case"https":case"http":case"file":ee?ee[0]!==d&&(ee=d+ee):ee=d}return ee}(this.scheme,D||c),this.query=A||c,this.fragment=M||c,l(this,T))}static isUri(y){return y instanceof m||!!y&&typeof y.authority=="string"&&typeof y.fragment=="string"&&typeof y.path=="string"&&typeof y.query=="string"&&typeof y.scheme=="string"&&typeof y.fsPath=="string"&&typeof y.with=="function"&&typeof y.toString=="function"}get fsPath(){return I(this)}with(y){if(!y)return this;let{scheme:k,authority:D,path:A,query:M,fragment:T}=y;return k===void 0?k=this.scheme:k===null&&(k=c),D===void 0?D=this.authority:D===null&&(D=c),A===void 0?A=this.path:A===null&&(A=c),M===void 0?M=this.query:M===null&&(M=c),T===void 0?T=this.fragment:T===null&&(T=c),k===this.scheme&&D===this.authority&&A===this.path&&M===this.query&&T===this.fragment?this:new g(k,D,A,M,T)}static parse(y,k=!1){const D=u.exec(y);return D?new g(D[2]||c,V(D[4]||c),V(D[5]||c),V(D[7]||c),V(D[9]||c),k):new g(c,c,c,c,c)}static file(y){let k=c;if(i&&(y=y.replace(/\\/g,d)),y[0]===d&&y[1]===d){const D=y.indexOf(d,2);D===-1?(k=y.substring(2),y=d):(k=y.substring(2,D),y=y.substring(D)||d)}return new g("file",k,y,c,c)}static from(y){const k=new g(y.scheme,y.authority,y.path,y.query,y.fragment);return l(k,!0),k}toString(y=!1){return _(this,y)}toJSON(){return this}static revive(y){if(y){if(y instanceof m)return y;{const k=new g(y);return k._formatted=y.external,k._fsPath=y._sep===f?y.fsPath:null,k}}return y}}const f=i?1:void 0;class g extends m{constructor(){super(...arguments);yt(this,"_formatted",null);yt(this,"_fsPath",null)}get fsPath(){return this._fsPath||(this._fsPath=I(this)),this._fsPath}toString(k=!1){return k?_(this,!0):(this._formatted||(this._formatted=_(this,!1)),this._formatted)}toJSON(){const k={$mid:1};return this._fsPath&&(k.fsPath=this._fsPath,k._sep=f),this._formatted&&(k.external=this._formatted),this.path&&(k.path=this.path),this.scheme&&(k.scheme=this.scheme),this.authority&&(k.authority=this.authority),this.query&&(k.query=this.query),this.fragment&&(k.fragment=this.fragment),k}}const b={58:"%3A",47:"%2F",63:"%3F",35:"%23",91:"%5B",93:"%5D",64:"%40",33:"%21",36:"%24",38:"%26",39:"%27",40:"%28",41:"%29",42:"%2A",43:"%2B",44:"%2C",59:"%3B",61:"%3D",32:"%20"};function F(L,y,k){let D,A=-1;for(let M=0;M=97&&T<=122||T>=65&&T<=90||T>=48&&T<=57||T===45||T===46||T===95||T===126||y&&T===47||k&&T===91||k&&T===93||k&&T===58)A!==-1&&(D+=encodeURIComponent(L.substring(A,M)),A=-1),D!==void 0&&(D+=L.charAt(M));else{D===void 0&&(D=L.substr(0,M));const H=b[T];H!==void 0?(A!==-1&&(D+=encodeURIComponent(L.substring(A,M)),A=-1),D+=H):A===-1&&(A=M)}}return A!==-1&&(D+=encodeURIComponent(L.substring(A))),D!==void 0?D:L}function E(L){let y;for(let k=0;k1&&L.scheme==="file"?`//${L.authority}${L.path}`:L.path.charCodeAt(0)===47&&(L.path.charCodeAt(1)>=65&&L.path.charCodeAt(1)<=90||L.path.charCodeAt(1)>=97&&L.path.charCodeAt(1)<=122)&&L.path.charCodeAt(2)===58?L.path[1].toLowerCase()+L.path.substr(2):L.path,i&&(k=k.replace(/\//g,"\\")),k}function _(L,y){const k=y?E:F;let D="",{scheme:A,authority:M,path:T,query:H,fragment:ee}=L;if(A&&(D+=A,D+=":"),(M||A==="file")&&(D+=d,D+=d),M){let G=M.indexOf("@");if(G!==-1){const Se=M.substr(0,G);M=M.substr(G+1),G=Se.lastIndexOf(":"),G===-1?D+=k(Se,!1,!1):(D+=k(Se.substr(0,G),!1,!1),D+=":",D+=k(Se.substr(G+1),!1,!0)),D+="@"}M=M.toLowerCase(),G=M.lastIndexOf(":"),G===-1?D+=k(M,!1,!0):(D+=k(M.substr(0,G),!1,!0),D+=M.substr(G))}if(T){if(T.length>=3&&T.charCodeAt(0)===47&&T.charCodeAt(2)===58){const G=T.charCodeAt(1);G>=65&&G<=90&&(T=`/${String.fromCharCode(G+32)}:${T.substr(3)}`)}else if(T.length>=2&&T.charCodeAt(1)===58){const G=T.charCodeAt(0);G>=65&&G<=90&&(T=`${String.fromCharCode(G+32)}:${T.substr(2)}`)}D+=k(T,!0,!1)}return H&&(D+="?",D+=k(H,!1,!1)),ee&&(D+="#",D+=y?ee:F(ee,!1,!1)),D}function P(L){try{return decodeURIComponent(L)}catch{return L.length>3?L.substr(0,3)+P(L.substr(3)):L}}const O=/(%[0-9A-Za-z][0-9A-Za-z])+/g;function V(L){return L.match(O)?L.replace(O,y=>P(y)):L}var R=n(470);const N=R.posix||R,z="/";var $;(function(L){L.joinPath=function(y,...k){return y.with({path:N.join(y.path,...k)})},L.resolvePath=function(y,...k){let D=y.path,A=!1;D[0]!==z&&(D=z+D,A=!0);let M=N.resolve(D,...k);return A&&M[0]===z&&!y.authority&&(M=M.substring(1)),y.with({path:M})},L.dirname=function(y){if(y.path.length===0||y.path===z)return y;let k=N.dirname(y.path);return k.length===1&&k.charCodeAt(0)===46&&(k=""),y.with({path:k})},L.basename=function(y){return N.basename(y.path)},L.extname=function(y){return N.extname(y.path)}})($||($={}))})(),Tc=r})();const{URI:ls,Utils:vt}=Tc;function cs(t){return vt.dirname(ls.parse(t)).toString(!0)}function en(t,...e){return vt.joinPath(ls.parse(t),...e).toString(!0)}class km{constructor(e){this.readDirectory=e,this.literalCompletions=[],this.importCompletions=[]}onCssURILiteralValue(e){this.literalCompletions.push(e)}onCssImportPath(e){this.importCompletions.push(e)}async computeCompletions(e,n){const r={items:[],isIncomplete:!1};for(const i of this.literalCompletions){const s=i.uriValue,a=hs(s);if(a==="."||a==="..")r.isIncomplete=!0;else{const o=await this.providePathSuggestions(s,i.position,i.range,e,n);for(let l of o)r.items.push(l)}}for(const i of this.importCompletions){const s=i.pathValue,a=hs(s);if(a==="."||a==="..")r.isIncomplete=!0;else{let o=await this.providePathSuggestions(s,i.position,i.range,e,n);e.languageId==="scss"&&o.forEach(l=>{pe(l.label,"_")&&ll(l.label,".scss")&&(l.textEdit?l.textEdit.newText=l.label.slice(1,-5):l.label=l.label.slice(1,-5))});for(let l of o)r.items.push(l)}}return r}async providePathSuggestions(e,n,r,i,s){const a=hs(e),o=pe(e,"'")||pe(e,'"'),l=o?a.slice(0,n.character-(r.start.character+1)):a.slice(0,n.character-r.start.character),c=i.uri,d=o?Rm(r,1,-1):r,u=Em(l,a,d),m=l.substring(0,l.lastIndexOf("/")+1);let f=s.resolveReference(m||".",c);if(f)try{const g=[],b=await this.readDirectory(f);for(const[F,E]of b)F.charCodeAt(0)!==_m&&(E===On.Directory||en(f,F)!==c)&&g.push(Fm(F,E===On.Directory,u));return g}catch{}return[]}}const _m=46;function hs(t){return pe(t,"'")||pe(t,'"')?t.slice(1,-1):t}function Em(t,e,n){let r;const i=t.lastIndexOf("/");if(i===-1)r=n;else{const s=e.slice(i+1),a=Ir(n.end,-s.length),o=s.indexOf(" ");let l;o!==-1?l=Ir(a,o):l=n.end,r=K.create(a,l)}return r}function Fm(t,e,n){return e?(t=t+"/",{label:Nr(t),kind:q.Folder,textEdit:j.replace(n,Nr(t)),command:{title:"Suggest",command:"editor.action.triggerSuggest"}}):{label:Nr(t),kind:q.File,textEdit:j.replace(n,Nr(t))}}function Nr(t){return t.replace(/(\s|\(|\)|,|"|')/g,"\\$1")}function Ir(t,e){return xe.create(t.line,t.character+e)}function Rm(t,e,n){const r=Ir(t.start,e),i=Ir(t.end,n);return K.create(r,i)}const st=Ie.Snippet,Oc={title:"Suggest",command:"editor.action.triggerSuggest"};var Je;(function(t){t.Enums=" ",t.Normal="d",t.VendorPrefixed="x",t.Term="y",t.Variable="z"})(Je||(Je={}));class ds{constructor(e=null,n,r){this.variablePrefix=e,this.lsOptions=n,this.cssDataManager=r,this.completionParticipants=[]}configure(e){this.defaultSettings=e}getSymbolContext(){return this.symbolContext||(this.symbolContext=new os(this.styleSheet)),this.symbolContext}setCompletionParticipants(e){this.completionParticipants=e||[]}async doComplete2(e,n,r,i,s=this.defaultSettings){if(!this.lsOptions.fileSystemProvider||!this.lsOptions.fileSystemProvider.readDirectory)return this.doComplete(e,n,r,s);const a=new km(this.lsOptions.fileSystemProvider.readDirectory),o=this.completionParticipants;this.completionParticipants=[a].concat(o);const l=this.doComplete(e,n,r,s);try{const c=await a.computeCompletions(e,i);return{isIncomplete:l.isIncomplete||c.isIncomplete,itemDefaults:l.itemDefaults,items:c.items.concat(l.items)}}finally{this.completionParticipants=o}}doComplete(e,n,r,i){this.offset=e.offsetAt(n),this.position=n,this.currentWord=Lm(e,this.offset),this.defaultReplaceRange=K.create(xe.create(this.position.line,this.position.character-this.currentWord.length),this.position),this.textDocument=e,this.styleSheet=r,this.documentSettings=i;try{const s={isIncomplete:!1,itemDefaults:{editRange:{start:{line:n.line,character:n.character-this.currentWord.length},end:n}},items:[]};this.nodePath=Di(this.styleSheet,this.offset);for(let a=this.nodePath.length-1;a>=0;a--){const o=this.nodePath[a];if(o instanceof Mi)this.getCompletionsForDeclarationProperty(o.getParent(),s);else if(o instanceof bl)o.parent instanceof $i?this.getVariableProposals(null,s):this.getCompletionsForExpression(o,s);else if(o instanceof Yt){const l=o.findAParent(v.ExtendsReference,v.Ruleset);if(l)if(l.type===v.ExtendsReference)this.getCompletionsForExtendsReference(l,o,s);else{const c=l;this.getCompletionsForSelector(c,c&&c.isNested(),s)}}else if(o instanceof Qt)this.getCompletionsForFunctionArgument(o,o.getParent(),s);else if(o instanceof Li)this.getCompletionsForDeclarations(o,s);else if(o instanceof pr)this.getCompletionsForVariableDeclaration(o,s);else if(o instanceof Ft)this.getCompletionsForRuleSet(o,s);else if(o instanceof $i)this.getCompletionsForInterpolation(o,s);else if(o instanceof ur)this.getCompletionsForFunctionDeclaration(o,s);else if(o instanceof mr)this.getCompletionsForMixinReference(o,s);else if(o instanceof Dn)this.getCompletionsForFunctionArgument(null,o,s);else if(o instanceof Ti)this.getCompletionsForSupports(o,s);else if(o instanceof Ln)this.getCompletionsForSupportsCondition(o,s);else if(o instanceof An)this.getCompletionsForExtendsReference(o,null,s);else if(o.type===v.URILiteral)this.getCompletionForUriLiteralValue(o,s);else if(o.parent===null)this.getCompletionForTopLevel(s);else if(o.type===v.StringLiteral&&this.isImportPathParent(o.parent.type))this.getCompletionForImportPath(o,s);else continue;if(s.items.length>0||this.offset>o.offset)return this.finalize(s)}return this.getCompletionsForStylesheet(s),s.items.length===0&&this.variablePrefix&&this.currentWord.indexOf(this.variablePrefix)===0&&this.getVariableProposals(null,s),this.finalize(s)}finally{this.position=null,this.currentWord=null,this.textDocument=null,this.styleSheet=null,this.symbolContext=null,this.defaultReplaceRange=null,this.nodePath=null}}isImportPathParent(e){return e===v.Import}finalize(e){return e}findInNodePath(...e){for(let n=this.nodePath.length-1;n>=0;n--){const r=this.nodePath[n];if(e.indexOf(r.type)!==-1)return r}return null}getCompletionsForDeclarationProperty(e,n){return this.getPropertyProposals(e,n)}getPropertyProposals(e,n){const r=this.isTriggerPropertyValueCompletionEnabled,i=this.isCompletePropertyWithSemicolonEnabled;return this.cssDataManager.getProperties().forEach(a=>{let o,l,c=!1;e?(o=this.getCompletionRange(e.getProperty()),l=a.name,Te(e.colonPosition)||(l+=": ",c=!0)):(o=this.getCompletionRange(null),l=a.name+": ",c=!0),!e&&i&&(l+="$0;"),e&&!e.semicolonPosition&&i&&this.offset>=this.textDocument.offsetAt(o.end)&&(l+="$0;");const d={label:a.name,documentation:wt(a,this.doesSupportMarkdown()),tags:Wn(a)?[Nt.Deprecated]:[],textEdit:j.replace(o,l),insertTextFormat:Ie.Snippet,kind:q.Property};a.restrictions||(c=!1),r&&c&&(d.command=Oc);const m=(255-(typeof a.relevance=="number"?Math.min(Math.max(a.relevance,0),99):50)).toString(16),f=pe(a.name,"-")?Je.VendorPrefixed:Je.Normal;d.sortText=f+"_"+m,n.items.push(d)}),this.completionParticipants.forEach(a=>{a.onCssProperty&&a.onCssProperty({propertyName:this.currentWord,range:this.defaultReplaceRange})}),n}get isTriggerPropertyValueCompletionEnabled(){var e;return((e=this.documentSettings)==null?void 0:e.triggerPropertyValueCompletion)??!0}get isCompletePropertyWithSemicolonEnabled(){var e;return((e=this.documentSettings)==null?void 0:e.completePropertyWithSemicolon)??!0}getCompletionsForDeclarationValue(e,n){const r=e.getFullPropertyName(),i=this.cssDataManager.getProperty(r);let s=e.getValue()||null;for(;s&&s.hasChildren();)s=s.findChildAtOffset(this.offset,!1);if(this.completionParticipants.forEach(a=>{a.onCssPropertyValue&&a.onCssPropertyValue({propertyName:r,propertyValue:this.currentWord,range:this.getCompletionRange(s)})}),i){if(i.restrictions)for(const a of i.restrictions)switch(a){case"color":this.getColorProposals(i,s,n);break;case"position":this.getPositionProposals(i,s,n);break;case"repeat":this.getRepeatStyleProposals(i,s,n);break;case"line-style":this.getLineStyleProposals(i,s,n);break;case"line-width":this.getLineWidthProposals(i,s,n);break;case"geometry-box":this.getGeometryBoxProposals(i,s,n);break;case"box":this.getBoxProposals(i,s,n);break;case"image":this.getImageProposals(i,s,n);break;case"timing-function":this.getTimingFunctionProposals(i,s,n);break;case"shape":this.getBasicShapeProposals(i,s,n);break}this.getValueEnumProposals(i,s,n),this.getCSSWideKeywordProposals(i,s,n),this.getUnitProposals(i,s,n)}else{const a=Nm(this.styleSheet,e);for(const o of a.getEntries())n.items.push({label:o,textEdit:j.replace(this.getCompletionRange(s),o),kind:q.Value})}return this.getVariableProposals(s,n),this.getTermProposals(i,s,n),n}getValueEnumProposals(e,n,r){if(e.values)for(const i of e.values){let s=i.name,a;if(ll(s,")")){const c=s.lastIndexOf("(");c!==-1&&(s=s.substring(0,c+1)+"$1"+s.substring(c+1),a=st)}let o=Je.Enums;pe(i.name,"-")&&(o+=Je.VendorPrefixed);const l={label:i.name,documentation:wt(i,this.doesSupportMarkdown()),tags:Wn(e)?[Nt.Deprecated]:[],textEdit:j.replace(this.getCompletionRange(n),s),sortText:o,kind:q.Value,insertTextFormat:a};r.items.push(l)}return r}getCSSWideKeywordProposals(e,n,r){for(const i in Ec)r.items.push({label:i,documentation:Ec[i],textEdit:j.replace(this.getCompletionRange(n),i),kind:q.Value});for(const i in Fc){const s=tn(i);r.items.push({label:i,documentation:Fc[i],textEdit:j.replace(this.getCompletionRange(n),s),kind:q.Function,insertTextFormat:st,command:pe(i,"var")?Oc:void 0})}return r}getCompletionsForInterpolation(e,n){return this.offset>=e.offset+2&&this.getVariableProposals(null,n),n}getVariableProposals(e,n){const r=this.getSymbolContext().findSymbolsAtOffset(this.offset,Q.Variable);for(const i of r){const s=pe(i.name,"--")?`var(${i.name})`:i.name,a={label:i.name,documentation:i.value?cl(i.value):i.value,textEdit:j.replace(this.getCompletionRange(e),s),kind:q.Variable,sortText:Je.Variable};if(typeof a.documentation=="string"&&gc(a.documentation)&&(a.kind=q.Color),i.node.type===v.FunctionParameter){const o=i.node.getParent();o.type===v.MixinDeclaration&&(a.detail=w("argument from '{0}'",o.getName()))}n.items.push(a)}return n}getVariableProposalsForCSSVarFunction(e){const n=new us;this.styleSheet.acceptVisitor(new Dm(n,this.offset));let r=this.getSymbolContext().findSymbolsAtOffset(this.offset,Q.Variable);for(const i of r){if(pe(i.name,"--")){const s={label:i.name,documentation:i.value?cl(i.value):i.value,textEdit:j.replace(this.getCompletionRange(null),i.name),kind:q.Variable};typeof s.documentation=="string"&&gc(s.documentation)&&(s.kind=q.Color),e.items.push(s)}n.remove(i.name)}for(const i of n.getEntries())if(pe(i,"--")){const s={label:i,textEdit:j.replace(this.getCompletionRange(null),i),kind:q.Variable};e.items.push(s)}return e}getUnitProposals(e,n,r){let i="0";if(this.currentWord.length>0){const s=this.currentWord.match(/^-?\d[\.\d+]*/);s&&(i=s[0],r.isIncomplete=i.length===this.currentWord.length)}else this.currentWord.length===0&&(r.isIncomplete=!0);if(n&&n.parent&&n.parent.type===v.Term&&(n=n.getParent()),e.restrictions)for(const s of e.restrictions){const a=Dc[s];if(a)for(const o of a){const l=i+o;r.items.push({label:l,textEdit:j.replace(this.getCompletionRange(n),l),kind:q.Unit})}}return r}getCompletionRange(e){if(e&&e.offset<=this.offset&&this.offset<=e.end){const n=e.end!==-1?this.textDocument.positionAt(e.end):this.position,r=this.textDocument.positionAt(e.offset);if(r.line===n.line)return K.create(r,n)}return this.defaultReplaceRange}getColorProposals(e,n,r){for(const s in Sr)r.items.push({label:s,documentation:Sr[s],textEdit:j.replace(this.getCompletionRange(n),s),kind:q.Color});for(const s in as)r.items.push({label:s,documentation:as[s],textEdit:j.replace(this.getCompletionRange(n),s),kind:q.Value});const i=new us;this.styleSheet.acceptVisitor(new Im(i,this.offset));for(const s of i.getEntries())r.items.push({label:s,textEdit:j.replace(this.getCompletionRange(n),s),kind:q.Color});for(const s of im)r.items.push({label:s.label,detail:s.func,documentation:s.desc,textEdit:j.replace(this.getCompletionRange(n),s.insertText),insertTextFormat:st,kind:q.Function});return r}getPositionProposals(e,n,r){for(const i in xc)r.items.push({label:i,documentation:xc[i],textEdit:j.replace(this.getCompletionRange(n),i),kind:q.Value});return r}getRepeatStyleProposals(e,n,r){for(const i in Sc)r.items.push({label:i,documentation:Sc[i],textEdit:j.replace(this.getCompletionRange(n),i),kind:q.Value});return r}getLineStyleProposals(e,n,r){for(const i in Cc)r.items.push({label:i,documentation:Cc[i],textEdit:j.replace(this.getCompletionRange(n),i),kind:q.Value});return r}getLineWidthProposals(e,n,r){for(const i of fm)r.items.push({label:i,textEdit:j.replace(this.getCompletionRange(n),i),kind:q.Value});return r}getGeometryBoxProposals(e,n,r){for(const i in _c)r.items.push({label:i,documentation:_c[i],textEdit:j.replace(this.getCompletionRange(n),i),kind:q.Value});return r}getBoxProposals(e,n,r){for(const i in kc)r.items.push({label:i,documentation:kc[i],textEdit:j.replace(this.getCompletionRange(n),i),kind:q.Value});return r}getImageProposals(e,n,r){for(const i in Rc){const s=tn(i);r.items.push({label:i,documentation:Rc[i],textEdit:j.replace(this.getCompletionRange(n),s),kind:q.Function,insertTextFormat:i!==s?st:void 0})}return r}getTimingFunctionProposals(e,n,r){for(const i in Nc){const s=tn(i);r.items.push({label:i,documentation:Nc[i],textEdit:j.replace(this.getCompletionRange(n),s),kind:q.Function,insertTextFormat:i!==s?st:void 0})}return r}getBasicShapeProposals(e,n,r){for(const i in Ic){const s=tn(i);r.items.push({label:i,documentation:Ic[i],textEdit:j.replace(this.getCompletionRange(n),s),kind:q.Function,insertTextFormat:i!==s?st:void 0})}return r}getCompletionsForStylesheet(e){const n=this.styleSheet.findFirstChildBeforeOffset(this.offset);return n?n instanceof Ft?this.getCompletionsForRuleSet(n,e):n instanceof Ti?this.getCompletionsForSupports(n,e):e:this.getCompletionForTopLevel(e)}getCompletionForTopLevel(e){return this.cssDataManager.getAtDirectives().forEach(n=>{e.items.push({label:n.name,textEdit:j.replace(this.getCompletionRange(null),n.name),documentation:wt(n,this.doesSupportMarkdown()),tags:Wn(n)?[Nt.Deprecated]:[],kind:q.Keyword})}),this.getCompletionsForSelector(null,!1,e),e}getCompletionsForRuleSet(e,n){const r=e.getDeclarations();return r&&r.endsWith("}")&&this.offset>=r.end?this.getCompletionForTopLevel(n):!r||this.offset<=r.offset?this.getCompletionsForSelector(e,e.isNested(),n):this.getCompletionsForDeclarations(e.getDeclarations(),n)}getCompletionsForSelector(e,n,r){const i=this.findInNodePath(v.PseudoSelector,v.IdentifierSelector,v.ClassSelector,v.ElementNameSelector);if(!i&&this.hasCharacterAtPosition(this.offset-this.currentWord.length-1,":")&&(this.currentWord=":"+this.currentWord,this.hasCharacterAtPosition(this.offset-this.currentWord.length-1,":")&&(this.currentWord=":"+this.currentWord),this.defaultReplaceRange=K.create(xe.create(this.position.line,this.position.character-this.currentWord.length),this.position)),this.cssDataManager.getPseudoClasses().forEach(c=>{const d=tn(c.name),u={label:c.name,textEdit:j.replace(this.getCompletionRange(i),d),documentation:wt(c,this.doesSupportMarkdown()),tags:Wn(c)?[Nt.Deprecated]:[],kind:q.Function,insertTextFormat:c.name!==d?st:void 0};pe(c.name,":-")&&(u.sortText=Je.VendorPrefixed),r.items.push(u)}),this.cssDataManager.getPseudoElements().forEach(c=>{const d=tn(c.name),u={label:c.name,textEdit:j.replace(this.getCompletionRange(i),d),documentation:wt(c,this.doesSupportMarkdown()),tags:Wn(c)?[Nt.Deprecated]:[],kind:q.Function,insertTextFormat:c.name!==d?st:void 0};pe(c.name,"::-")&&(u.sortText=Je.VendorPrefixed),r.items.push(u)}),!n){for(const c of gm)r.items.push({label:c,textEdit:j.replace(this.getCompletionRange(i),c),kind:q.Keyword});for(const c of bm)r.items.push({label:c,textEdit:j.replace(this.getCompletionRange(i),c),kind:q.Keyword})}const o={};o[this.currentWord]=!0;const l=this.textDocument.getText();if(this.styleSheet.accept(c=>{if(c.type===v.SimpleSelector&&c.length>0){const d=l.substr(c.offset,c.length);return d.charAt(0)==="."&&!o[d]&&(o[d]=!0,r.items.push({label:d,textEdit:j.replace(this.getCompletionRange(i),d),kind:q.Keyword})),!1}return!0}),e&&e.isNested()){const c=e.getSelectors().findFirstChildBeforeOffset(this.offset);c&&e.getSelectors().getChildren().indexOf(c)===0&&this.getPropertyProposals(null,r)}return r}getCompletionsForDeclarations(e,n){if(!e||this.offset===e.offset)return n;const r=e.findFirstChildBeforeOffset(this.offset);if(!r)return this.getCompletionsForDeclarationProperty(null,n);if(r instanceof Ai){const i=r;if(!Te(i.colonPosition)||this.offset<=i.colonPosition)return this.getCompletionsForDeclarationProperty(i,n);if(Te(i.semicolonPosition)&&i.semicolonPositione.colonPosition&&this.getVariableProposals(e.getValue()||null,n),n}getCompletionsForExpression(e,n){const r=e.getParent();if(r instanceof Qt)return this.getCompletionsForFunctionArgument(r,r.getParent(),n),n;const i=e.findParent(v.Declaration);if(!i)return this.getTermProposals(void 0,null,n),n;const s=e.findChildAtOffset(this.offset,!0);return s?s instanceof Vi||s instanceof ze?this.getCompletionsForDeclarationValue(i,n):n:this.getCompletionsForDeclarationValue(i,n)}getCompletionsForFunctionArgument(e,n,r){const i=n.getIdentifier();return i&&i.matches("var")&&(!n.getArguments().hasChildren()||n.getArguments().getChild(0)===e)&&this.getVariableProposalsForCSSVarFunction(r),r}getCompletionsForFunctionDeclaration(e,n){const r=e.getDeclarations();return r&&this.offset>r.offset&&this.offset{s.onCssMixinReference&&s.onCssMixinReference({mixinName:this.currentWord,range:this.getCompletionRange(i)})}),n}getTermProposals(e,n,r){const i=this.getSymbolContext().findSymbolsAtOffset(this.offset,Q.Function);for(const s of i)s.node instanceof ur&&r.items.push(this.makeTermProposal(s,s.node.getParameters(),n));return r}makeTermProposal(e,n,r){e.node;const i=n.getChildren().map(a=>a instanceof dr?a.getName():a.getText()),s=e.name+"("+i.map((a,o)=>"${"+(o+1)+":"+a+"}").join(", ")+")";return{label:e.name,detail:e.name+"("+i.join(", ")+")",textEdit:j.replace(this.getCompletionRange(r),s),insertTextFormat:st,kind:q.Function,sortText:Je.Term}}getCompletionsForSupportsCondition(e,n){const r=e.findFirstChildBeforeOffset(this.offset);if(r){if(r instanceof Pe)return!Te(r.colonPosition)||this.offset<=r.colonPosition?this.getCompletionsForDeclarationProperty(r,n):this.getCompletionsForDeclarationValue(r,n);if(r instanceof Ln)return this.getCompletionsForSupportsCondition(r,n)}return Te(e.lParent)&&this.offset>e.lParent&&(!Te(e.rParent)||this.offset<=e.rParent)?this.getCompletionsForDeclarationProperty(null,n):n}getCompletionsForSupports(e,n){const r=e.getDeclarations();if(!r||this.offset<=r.offset){const s=e.findFirstChildBeforeOffset(this.offset);return s instanceof Ln?this.getCompletionsForSupportsCondition(s,n):n}return this.getCompletionForTopLevel(n)}getCompletionsForExtendsReference(e,n,r){return r}getCompletionForUriLiteralValue(e,n){let r,i,s;if(e.hasChildren()){const a=e.getChild(0);r=a.getText(),i=this.position,s=this.getCompletionRange(a)}else{r="",i=this.position;const a=this.textDocument.positionAt(e.offset+4);s=K.create(a,a)}return this.completionParticipants.forEach(a=>{a.onCssURILiteralValue&&a.onCssURILiteralValue({uriValue:r,position:i,range:s})}),n}getCompletionForImportPath(e,n){return this.completionParticipants.forEach(r=>{r.onCssImportPath&&r.onCssImportPath({pathValue:e.getText(),position:this.position,range:this.getCompletionRange(e)})}),n}hasCharacterAtPosition(e,n){const r=this.textDocument.getText();return e>=0&&e=0&&`
+\r":{[()]},*>+`.indexOf(r.charAt(n))===-1;)n--;return r.substring(n+1,e)}let ps=class Ts{constructor(){this.parent=null,this.children=null,this.attributes=null}findAttribute(e){if(this.attributes){for(const n of this.attributes)if(n.name===e)return n.value}return null}addChild(e){e instanceof Ts&&(e.parent=this),this.children||(this.children=[]),this.children.push(e)}append(e){if(this.attributes){const n=this.attributes[this.attributes.length-1];n.value=n.value+e}}prepend(e){if(this.attributes){const n=this.attributes[0];n.value=e+n.value}}findRoot(){let e=this;for(;e.parent&&!(e.parent instanceof nn);)e=e.parent;return e}removeChild(e){if(this.children){const n=this.children.indexOf(e);if(n!==-1)return this.children.splice(n,1),!0}return!1}addAttr(e,n){this.attributes||(this.attributes=[]);for(const r of this.attributes)if(r.name===e){r.value+=" "+n;return}this.attributes.push({name:e,value:n})}clone(e=!0){const n=new Ts;if(this.attributes){n.attributes=[];for(const r of this.attributes)n.addAttr(r.name,r.value)}if(e&&this.children){n.children=[];for(let r=0;r"),this.writeLine(n,i.join(""))}}var at;(function(t){function e(r,i){return i+n(r)+i}t.ensure=e;function n(r){const i=r.match(/^['"](.*)["']$/);return i?i[1]:r}t.remove=n})(at||(at={}));class fs{constructor(){this.id=0,this.attr=0,this.tag=0}}function Vc(t,e){let n=new ps;for(const r of t.getChildren())switch(r.type){case v.SelectorCombinator:if(e){const o=r.getText().split("&");if(o.length===1){n.addAttr("name",o[0]);break}n=e.cloneWithParent(),o[0]&&n.findRoot().prepend(o[0]);for(let l=1;l1){const c=e.cloneWithParent();n.addChild(c.findRoot()),n=c}n.append(o[l])}}break;case v.SelectorPlaceholder:if(r.matches("@at-root"))return n;case v.ElementNameSelector:const i=r.getText();n.addAttr("name",i==="*"?"element":Oe(i));break;case v.ClassSelector:n.addAttr("class",Oe(r.getText().substring(1)));break;case v.IdentifierSelector:n.addAttr("id",Oe(r.getText().substring(1)));break;case v.MixinDeclaration:n.addAttr("class",r.getName());break;case v.PseudoSelector:n.addAttr(Oe(r.getText()),"");break;case v.AttributeSelector:const s=r,a=s.getIdentifier();if(a){const o=s.getValue(),l=s.getOperator();let c;if(o&&l)switch(Oe(l.getText())){case"|=":c=`${at.remove(Oe(o.getText()))}-…`;break;case"^=":c=`${at.remove(Oe(o.getText()))}…`;break;case"$=":c=`…${at.remove(Oe(o.getText()))}`;break;case"~=":c=` … ${at.remove(Oe(o.getText()))} … `;break;case"*=":c=`…${at.remove(Oe(o.getText()))}…`;break;default:c=at.remove(Oe(o.getText()));break}n.addAttr(Oe(a.getText()),c)}break}return n}function Oe(t){const e=new Nn;e.setSource(t);const n=e.scanUnquotedString();return n?n.text:t}class Am{constructor(e){this.cssDataManager=e}selectorToMarkedString(e,n){const r=Pm(e);if(r){const i=new Wc('"').print(r,n);return i.push(this.selectorToSpecificityMarkedString(e)),i}else return[]}simpleSelectorToMarkedString(e){const n=Vc(e),r=new Wc('"').print(n);return r.push(this.selectorToSpecificityMarkedString(e)),r}isPseudoElementIdentifier(e){const n=e.match(/^::?([\w-]+)/);return n?!!this.cssDataManager.getPseudoElement("::"+n[1]):!1}selectorToSpecificityMarkedString(e){const n=s=>{const a=new fs;let o=new fs;for(const l of s)for(const c of l.getChildren()){const d=r(c);if(d.id>o.id){o=d;continue}else if(d.ido.attr){o=d;continue}else if(d.attro.tag){o=d;continue}}return a.id+=o.id,a.attr+=o.attr,a.tag+=o.tag,a},r=s=>{const a=new fs;e:for(const o of s.getChildren()){switch(o.type){case v.IdentifierSelector:a.id++;break;case v.ClassSelector:case v.AttributeSelector:a.attr++;break;case v.ElementNameSelector:if(o.matches("*"))break;a.tag++;break;case v.PseudoSelector:const l=o.getText(),c=o.getChildren();if(this.isPseudoElementIdentifier(l)){if(l.match(/^::slotted/i)&&c.length>0){a.tag++;let d=n(c);a.id+=d.id,a.attr+=d.attr,a.tag+=d.tag;continue e}a.tag++;continue e}if(l.match(/^:where/i))continue e;if(l.match(/^:(?:not|has|is)/i)&&c.length>0){let d=n(c);a.id+=d.id,a.attr+=d.attr,a.tag+=d.tag;continue e}if(l.match(/^:(?:host|host-context)/i)&&c.length>0){a.attr++;let d=n(c);a.id+=d.id,a.attr+=d.attr,a.tag+=d.tag;continue e}if(l.match(/^:(?:nth-child|nth-last-child)/i)&&c.length>0){if(a.attr++,c.length===3&&c[1].type===23){let g=n(c[2].getChildren());a.id+=g.id,a.attr+=g.attr,a.tag+=g.tag;continue e}const d=new _r,u=c[1].getText();d.scanner.setSource(u);const m=d.scanner.scan(),f=d.scanner.scan();if(m.text==="n"||m.text==="-n"&&f.text==="of"){const g=[],F=u.slice(f.offset+2).split(",");for(const I of F){const _=d.internalParse(I,d._parseSelector);_&&g.push(_)}let E=n(g);a.id+=E.id,a.attr+=E.attr,a.tag+=E.tag;continue e}continue e}a.attr++;continue e}if(o.getChildren().length>0){const l=r(o);a.id+=l.id,a.attr+=l.attr,a.tag+=l.tag}}return a},i=r(e);return`[${w("Selector Specificity")}](https://developer.mozilla.org/docs/Web/CSS/Specificity): (${i.id}, ${i.attr}, ${i.tag})`}}class Mm{constructor(e){this.prev=null,this.element=e}processSelector(e){let n=null;if(!(this.element instanceof nn)&&e.getChildren().some(r=>r.hasChildren()&&r.getChild(0).type===v.SelectorCombinator)){const r=this.element.findRoot();r.parent instanceof nn&&(n=this.element,this.element=r.parent,this.element.removeChild(r),this.prev=null)}for(const r of e.getChildren()){if(r instanceof Yt){if(this.prev instanceof Yt){const a=new ms("…");this.element.addChild(a),this.element=a}else this.prev&&(this.prev.matches("+")||this.prev.matches("~"))&&this.element.parent&&(this.element=this.element.parent);this.prev&&this.prev.matches("~")&&this.element.addChild(new ms("⋮"));const i=Vc(r,n),s=i.findRoot();this.element.addChild(s),this.element=i}(r instanceof Yt||r.type===v.SelectorCombinatorParent||r.type===v.SelectorCombinatorShadowPiercingDescendant||r.type===v.SelectorCombinatorSibling||r.type===v.SelectorCombinatorAllSiblings)&&(this.prev=r)}}}function zm(t){switch(t.type){case v.MixinDeclaration:case v.Stylesheet:return!0}return!1}function Pm(t){if(t.matches("@at-root"))return null;const e=new nn,n=[],r=t.getParent();if(r instanceof Ft){let s=r.getParent();for(;s&&!zm(s);){if(s instanceof Ft){if(s.getSelectors().matches("@at-root"))break;n.push(s)}s=s.getParent()}}const i=new Mm(e);for(let s=n.length-1;s>=0;s--){const a=n[s].getSelectors().getChild(0);a&&i.processSelector(a)}return i.processSelector(t),e}class gs{constructor(e,n){this.clientCapabilities=e,this.cssDataManager=n,this.selectorPrinting=new Am(n)}configure(e){this.defaultSettings=e}doHover(e,n,r,i=this.defaultSettings){function s(d){return K.create(e.positionAt(d.offset),e.positionAt(d.end))}const a=e.offsetAt(n),o=Di(r,a);let l=null,c;for(let d=0;dtypeof n=="string"?n:n.value):e.value}doesSupportMarkdown(){if(!Te(this.supportsMarkdown)){if(!Te(this.clientCapabilities))return this.supportsMarkdown=!0,this.supportsMarkdown;const e=this.clientCapabilities.textDocument&&this.clientCapabilities.textDocument.hover;this.supportsMarkdown=e&&e.contentFormat&&Array.isArray(e.contentFormat)&&e.contentFormat.indexOf(Ge.Markdown)!==-1}return this.supportsMarkdown}}const $c=/^\w+:\/\//,Uc=/^data:/;class bs{constructor(e,n){this.fileSystemProvider=e,this.resolveModuleReferences=n}configure(e){this.defaultSettings=e}findDefinition(e,n,r){const i=new os(r),s=e.offsetAt(n),a=Ii(r,s);if(!a)return null;const o=i.findSymbolFromNode(a);return o?{uri:e.uri,range:ot(o.node,e)}:null}findReferences(e,n,r){return this.findDocumentHighlights(e,n,r).map(s=>({uri:e.uri,range:s.range}))}getHighlightNode(e,n,r){const i=e.offsetAt(n);let s=Ii(r,i);if(!(!s||s.type===v.Stylesheet||s.type===v.Declarations))return s.type===v.Identifier&&s.parent&&s.parent.type===v.ClassSelector&&(s=s.parent),s}findDocumentHighlights(e,n,r){const i=[],s=this.getHighlightNode(e,n,r);if(!s)return i;const a=new os(r),o=a.findSymbolFromNode(s),l=s.getText();return r.accept(c=>{if(o){if(a.matchesSymbol(c,o))return i.push({kind:qc(c),range:ot(c,e)}),!1}else s&&s.type===c.type&&c.matches(l)&&i.push({kind:qc(c),range:ot(c,e)});return!0}),i}isRawStringDocumentLinkNode(e){return e.type===v.Import}findDocumentLinks(e,n,r){const i=this.findUnresolvedLinks(e,n),s=[];for(let a of i){const o=a.link,l=o.target;if(!(!l||Uc.test(l)))if($c.test(l))s.push(o);else{const c=r.resolveReference(l,e.uri);c&&(o.target=c),s.push(o)}}return s}async findDocumentLinks2(e,n,r){const i=this.findUnresolvedLinks(e,n),s=[];for(let a of i){const o=a.link,l=o.target;if(!(!l||Uc.test(l)))if($c.test(l))s.push(o);else{const c=await this.resolveReference(l,e.uri,r,a.isRawLink);c!==void 0&&(o.target=c,s.push(o))}}return s}findUnresolvedLinks(e,n){const r=[],i=s=>{let a=s.getText();const o=ot(s,e);if(o.start.line===o.end.line&&o.start.character===o.end.character)return;(pe(a,"'")||pe(a,'"'))&&(a=a.slice(1,-1));const l=s.parent?this.isRawStringDocumentLinkNode(s.parent):!1;r.push({link:{target:a,range:o},isRawLink:l})};return n.accept(s=>{if(s.type===v.URILiteral){const a=s.getChild(0);return a&&i(a),!1}if(s.parent&&this.isRawStringDocumentLinkNode(s.parent)){const a=s.getText();return(pe(a,"'")||pe(a,'"'))&&i(s),!1}return!0}),r}findSymbolInformations(e,n){const r=[],i=(s,a,o)=>{const l=o instanceof W?ot(o,e):o,c={name:s||w(""),kind:a,location:zn.create(e.uri,l)};r.push(c)};return this.collectDocumentSymbols(e,n,i),r}findDocumentSymbols(e,n){const r=[],i=[],s=(a,o,l,c,d)=>{const u=l instanceof W?ot(l,e):l;let m=c instanceof W?ot(c,e):c;(!m||!Bc(u,m))&&(m=K.create(u.start,u.start));const f={name:a||w(""),kind:o,range:u,selectionRange:m};let g=i.pop();for(;g&&!Bc(g[1],u);)g=i.pop();if(g){const b=g[0];b.children||(b.children=[]),b.children.push(f),i.push(g)}else r.push(f);d&&i.push([f,ot(d,e)])};return this.collectDocumentSymbols(e,n,s),r}collectDocumentSymbols(e,n,r){n.accept(i=>{if(i instanceof Ft){for(const s of i.getSelectors().getChildren())if(s instanceof In){const a=K.create(e.positionAt(s.offset),e.positionAt(i.end));r(s.getText(),it.Class,a,s,i.getDeclarations())}}else if(i instanceof pr)r(i.getName(),it.Variable,i,i.getVariable(),void 0);else if(i instanceof Mn)r(i.getName(),it.Method,i,i.getIdentifier(),i.getDeclarations());else if(i instanceof ur)r(i.getName(),it.Function,i,i.getIdentifier(),i.getDeclarations());else if(i instanceof pl){const s=w("@keyframes {0}",i.getName());r(s,it.Class,i,i.getIdentifier(),i.getDeclarations())}else if(i instanceof dl){const s=w("@font-face");r(s,it.Class,i,void 0,i.getDeclarations())}else if(i instanceof Pi){const s=i.getChild(0);if(s instanceof fl){const a="@media "+s.getText();r(a,it.Module,i,s,i.getDeclarations())}}return!0})}findDocumentColors(e,n){const r=[];return n.accept(i=>{const s=Tm(i,e);return s&&r.push(s),!0}),r}getColorPresentations(e,n,r,i){const s=[],a=Math.round(r.red*255),o=Math.round(r.green*255),l=Math.round(r.blue*255);let c;r.alpha===1?c=`rgb(${a}, ${o}, ${l})`:c=`rgba(${a}, ${o}, ${l}, ${r.alpha})`,s.push({label:c,textEdit:j.replace(i,c)}),r.alpha===1?c=`#${It(a)}${It(o)}${It(l)}`:c=`#${It(a)}${It(o)}${It(l)}${It(Math.round(r.alpha*255))}`,s.push({label:c,textEdit:j.replace(i,c)});const d=yc(r);d.a===1?c=`hsl(${d.h}, ${Math.round(d.s*100)}%, ${Math.round(d.l*100)}%)`:c=`hsla(${d.h}, ${Math.round(d.s*100)}%, ${Math.round(d.l*100)}%, ${d.a})`,s.push({label:c,textEdit:j.replace(i,c)});const u=pm(r);return u.a===1?c=`hwb(${u.h} ${Math.round(u.w*100)}% ${Math.round(u.b*100)}%)`:c=`hwb(${u.h} ${Math.round(u.w*100)}% ${Math.round(u.b*100)}% / ${u.a})`,s.push({label:c,textEdit:j.replace(i,c)}),s}prepareRename(e,n,r){const i=this.getHighlightNode(e,n,r);if(i)return K.create(e.positionAt(i.offset),e.positionAt(i.end))}doRename(e,n,r,i){const a=this.findDocumentHighlights(e,n,i).map(o=>j.replace(o.range,r));return{changes:{[e.uri]:a}}}async resolveModuleReference(e,n,r){if(pe(n,"file://")){const i=Om(e);if(i&&i!=="."&&i!==".."){const s=r.resolveReference("/",n),a=cs(n),o=await this.resolvePathToModule(i,a,s);if(o){const l=e.substring(i.length+1);return en(o,l)}}}}async mapReference(e,n){return e}async resolveReference(e,n,r,i=!1,s=this.defaultSettings){if(e[0]==="~"&&e[1]!=="/"&&this.fileSystemProvider)return e=e.substring(1),this.mapReference(await this.resolveModuleReference(e,n,r),i);const a=await this.mapReference(r.resolveReference(e,n),i);if(this.resolveModuleReferences){if(a&&await this.fileExists(a))return a;const o=await this.mapReference(await this.resolveModuleReference(e,n,r),i);if(o)return o}if(a&&!await this.fileExists(a)){const o=r.resolveReference("/",n);if(s&&o){if(e in s)return this.mapReference(en(o,s[e]),i);const l=e.indexOf("/"),c=`${e.substring(0,l)}/`;if(c in s){const d=s[c].slice(0,-1);let u=en(o,d);return this.mapReference(u=en(u,e.substring(c.length-1)),i)}}}return a}async resolvePathToModule(e,n,r){const i=en(n,"node_modules",e,"package.json");if(await this.fileExists(i))return cs(i);if(r&&n.startsWith(r)&&n.length!==r.length)return this.resolvePathToModule(e,cs(n),r)}async fileExists(e){if(!this.fileSystemProvider)return!1;try{const n=await this.fileSystemProvider.stat(e);return!(n.type===On.Unknown&&n.size===-1)}catch{return!1}}}function Tm(t,e){const n=mm(t);if(n){const r=ot(t,e);return{color:n,range:r}}return null}function ot(t,e){return K.create(e.positionAt(t.offset),e.positionAt(t.end))}function Bc(t,e){const n=e.start.line,r=e.end.line,i=t.start.line,s=t.end.line;return!(ns||r>s||n===i&&e.start.charactert.end.character)}function qc(t){if(t.type===v.Selector||t instanceof ze&&t.parent&&t.parent instanceof Mi&&t.isCustomProperty)return Zt.Write;if(t.parent)switch(t.parent.type){case v.FunctionDeclaration:case v.MixinDeclaration:case v.Keyframe:case v.VariableDeclaration:case v.FunctionParameter:return Zt.Write}return Zt.Read}function It(t){const e=t.toString(16);return e.length!==2?"0"+e:e}function Om(t){const e=t.indexOf("/");if(e===-1)return"";if(t[0]==="@"){const n=t.indexOf("/",e+1);return n===-1?t:t.substring(0,n)}return t.substring(0,e)}const rn=Ne.Warning,jc=Ne.Error,$e=Ne.Ignore;class me{constructor(e,n,r){this.id=e,this.message=n,this.defaultValue=r}}class Wm{constructor(e,n,r){this.id=e,this.message=n,this.defaultValue=r}}const ie={AllVendorPrefixes:new me("compatibleVendorPrefixes",w("When using a vendor-specific prefix make sure to also include all other vendor-specific properties"),$e),IncludeStandardPropertyWhenUsingVendorPrefix:new me("vendorPrefix",w("When using a vendor-specific prefix also include the standard property"),rn),DuplicateDeclarations:new me("duplicateProperties",w("Do not use duplicate style definitions"),$e),EmptyRuleSet:new me("emptyRules",w("Do not use empty rulesets"),rn),ImportStatemement:new me("importStatement",w("Import statements do not load in parallel"),$e),BewareOfBoxModelSize:new me("boxModel",w("Do not use width or height when using padding or border"),$e),UniversalSelector:new me("universalSelector",w("The universal selector (*) is known to be slow"),$e),ZeroWithUnit:new me("zeroUnits",w("No unit for zero needed"),$e),RequiredPropertiesForFontFace:new me("fontFaceProperties",w("@font-face rule must define 'src' and 'font-family' properties"),rn),HexColorLength:new me("hexColorLength",w("Hex colors must consist of three, four, six or eight hex numbers"),jc),ArgsInColorFunction:new me("argumentsInColorFunction",w("Invalid number of parameters"),jc),UnknownProperty:new me("unknownProperties",w("Unknown property."),rn),UnknownAtRules:new me("unknownAtRules",w("Unknown at-rule."),rn),IEStarHack:new me("ieHack",w("IE hacks are only necessary when supporting IE7 and older"),$e),UnknownVendorSpecificProperty:new me("unknownVendorSpecificProperties",w("Unknown vendor specific property."),$e),PropertyIgnoredDueToDisplay:new me("propertyIgnoredDueToDisplay",w("Property is ignored due to the display."),rn),AvoidImportant:new me("important",w("Avoid using !important. It is an indication that the specificity of the entire CSS has gotten out of control and needs to be refactored."),$e),AvoidFloat:new me("float",w("Avoid using 'float'. Floats lead to fragile CSS that is easy to break if one aspect of the layout changes."),$e),AvoidIdSelector:new me("idSelector",w("Selectors should not contain IDs because these rules are too tightly coupled with the HTML."),$e)},Vm={ValidProperties:new Wm("validProperties",w("A list of properties that are not validated against the `unknownProperties` rule."),[])};class $m{constructor(e={}){this.conf=e}getRule(e){if(this.conf.hasOwnProperty(e.id)){const n=Um(this.conf[e.id]);if(n)return n}return e.defaultValue}getSetting(e){return this.conf[e.id]}}function Um(t){switch(t){case"ignore":return Ne.Ignore;case"warning":return Ne.Warning;case"error":return Ne.Error}return null}class ws{constructor(e){this.cssDataManager=e}doCodeActions(e,n,r,i){return this.doCodeActions2(e,n,r,i).map(s=>{const a=s.edit&&s.edit.documentChanges&&s.edit.documentChanges[0];return Rt.create(s.title,"_css.applyCodeAction",e.uri,e.version,a&&a.edits)})}doCodeActions2(e,n,r,i){const s=[];if(r.diagnostics)for(const a of r.diagnostics)this.appendFixesForMarker(e,i,a,s);return s}getFixesForUnknownProperty(e,n,r,i){const s=n.getName(),a=[];this.cssDataManager.getProperties().forEach(l=>{const c=fp(s,l.name);c>=s.length/2&&a.push({property:l.name,score:c})}),a.sort((l,c)=>c.score-l.score||l.property.localeCompare(c.property));let o=3;for(const l of a){const c=l.property,d=w("Rename to '{0}'",c),u=j.replace(r.range,c),m=Ki.create(e.uri,e.version),f={documentChanges:[wr.create(m,[u])]},g=ts.create(d,f,es.QuickFix);if(g.diagnostics=[r],i.push(g),--o<=0)return}}appendFixesForMarker(e,n,r,i){if(r.code!==ie.UnknownProperty.id)return;const s=e.offsetAt(r.range.start),a=e.offsetAt(r.range.end),o=Di(n,s);for(let l=o.length-1;l>=0;l--){const c=o[l];if(c instanceof Pe){const d=c.getProperty();if(d&&d.offset===s&&d.end===a){this.getFixesForUnknownProperty(e,d,r,i);return}}}}}class Bm{constructor(e){this.fullPropertyName=e.getFullPropertyName().toLowerCase(),this.node=e}}function Vn(t,e,n,r){const i=t[e];i.value=n,n&&(Lc(i.properties,r)||i.properties.push(r))}function qm(t,e,n){Vn(t,"top",e,n),Vn(t,"right",e,n),Vn(t,"bottom",e,n),Vn(t,"left",e,n)}function ve(t,e,n,r){e==="top"||e==="right"||e==="bottom"||e==="left"?Vn(t,e,n,r):qm(t,n,r)}function vs(t,e,n){switch(e.length){case 1:ve(t,void 0,e[0],n);break;case 2:ve(t,"top",e[0],n),ve(t,"bottom",e[0],n),ve(t,"right",e[1],n),ve(t,"left",e[1],n);break;case 3:ve(t,"top",e[0],n),ve(t,"right",e[1],n),ve(t,"left",e[1],n),ve(t,"bottom",e[2],n);break;case 4:ve(t,"top",e[0],n),ve(t,"right",e[1],n),ve(t,"bottom",e[2],n),ve(t,"left",e[3],n);break}}function ys(t,e){for(let n of e)if(t.matches(n))return!0;return!1}function $n(t,e=!0){return e&&ys(t,["initial","unset"])?!1:parseFloat(t.getText())!==0}function Hc(t,e=!0){return t.map(n=>$n(n,e))}function Dr(t,e=!0){return!(ys(t,["none","hidden"])||e&&ys(t,["initial","unset"]))}function jm(t,e=!0){return t.map(n=>Dr(n,e))}function Hm(t){const e=t.getChildren();if(e.length===1){const n=e[0];return $n(n)&&Dr(n)}for(const n of e){const r=n;if(!$n(r,!1)||!Dr(r,!1))return!1}return!0}function Gm(t){const e={top:{value:!1,properties:[]},right:{value:!1,properties:[]},bottom:{value:!1,properties:[]},left:{value:!1,properties:[]}};for(const n of t){const r=n.node.value;if(!(typeof r>"u"))switch(n.fullPropertyName){case"box-sizing":return{top:{value:!1,properties:[]},right:{value:!1,properties:[]},bottom:{value:!1,properties:[]},left:{value:!1,properties:[]}};case"width":e.width=n;break;case"height":e.height=n;break;default:const i=n.fullPropertyName.split("-");switch(i[0]){case"border":switch(i[1]){case void 0:case"top":case"right":case"bottom":case"left":switch(i[2]){case void 0:ve(e,i[1],Hm(r),n);break;case"width":ve(e,i[1],$n(r,!1),n);break;case"style":ve(e,i[1],Dr(r,!0),n);break}break;case"width":vs(e,Hc(r.getChildren(),!1),n);break;case"style":vs(e,jm(r.getChildren(),!0),n);break}break;case"padding":i.length===1?vs(e,Hc(r.getChildren(),!0),n):ve(e,i[1],$n(r,!0),n);break}break}}return e}class Gc{constructor(){this.data={}}add(e,n,r){let i=this.data[e];i||(i={nodes:[],names:[]},this.data[e]=i),i.names.push(n),r&&i.nodes.push(r)}}class sn{static entries(e,n,r,i,s){const a=new sn(n,r,i);return e.acceptVisitor(a),a.completeValidations(),a.getEntries(s)}constructor(e,n,r){this.cssDataManager=r,this.warnings=[],this.settings=n,this.documentText=e.getText(),this.keyframes=new Gc,this.validProperties={};const i=n.getSetting(Vm.ValidProperties);Array.isArray(i)&&i.forEach(s=>{if(typeof s=="string"){const a=s.trim().toLowerCase();a.length&&(this.validProperties[a]=!0)}})}isValidPropertyDeclaration(e){const n=e.fullPropertyName;return this.validProperties[n]}fetch(e,n){const r=[];for(const i of e)i.fullPropertyName===n&&r.push(i);return r}fetchWithValue(e,n,r){const i=[];for(const s of e)if(s.fullPropertyName===n){const a=s.node.getValue();a&&this.findValueInExpression(a,r)&&i.push(s)}return i}findValueInExpression(e,n){let r=!1;return e.accept(i=>(i.type===v.Identifier&&i.matches(n)&&(r=!0),!r)),r}getEntries(e=Ne.Warning|Ne.Error){return this.warnings.filter(n=>(n.getLevel()&e)!==0)}addEntry(e,n,r){const i=new yl(e,n,this.settings.getRule(n),r);this.warnings.push(i)}getMissingNames(e,n){const r=e.slice(0);for(let s=0;s0){const l=this.fetch(r,"float");for(let c=0;c0){const l=this.fetch(r,"vertical-align");for(let c=0;c1)for(let m=0;mO.startsWith(P))&&g.delete(I)}}const b=[];for(let E=0,I=sn.prefixes.length;Es instanceof Oi?(i+=1,!1):!0),i!==r&&this.addEntry(e,ie.ArgsInColorFunction)),!0}}sn.prefixes=["-ms-","-moz-","-o-","-webkit-"];class xs{constructor(e){this.cssDataManager=e}configure(e){this.settings=e}doValidation(e,n,r=this.settings){if(r&&r.validate===!1)return[];const i=[];i.push.apply(i,Bi.entries(n)),i.push.apply(i,sn.entries(n,e,new $m(r&&r.lint),this.cssDataManager));const s=[];for(const o in ie)s.push(ie[o].id);function a(o){const l=K.create(e.positionAt(o.getOffset()),e.positionAt(o.getOffset()+o.getLength())),c=e.languageId;return{code:o.getRule().id,source:c,message:o.getMessage(),severity:o.getLevel()===Ne.Warning?gr.Warning:gr.Error,range:l}}return i.filter(o=>o.getLevel()!==Ne.Ignore).map(a)}}const Jc=47,Jm=10,Xm=13,Ym=12,Qm=36,Km=35,Zm=123,Un=61,ef=33,tf=60,nf=62,Ss=46;let lt=p.CustomToken;const Cs=lt++,Lr=lt++;lt++;const Xc=lt++,Yc=lt++,ks=lt++,_s=lt++,Ar=lt++;lt++;class Qc extends Nn{scanNext(e){if(this.stream.advanceIfChar(Qm)){const n=["$"];if(this.ident(n))return this.finishToken(e,Cs,n.join(""));this.stream.goBackTo(e)}return this.stream.advanceIfChars([Km,Zm])?this.finishToken(e,Lr):this.stream.advanceIfChars([Un,Un])?this.finishToken(e,Xc):this.stream.advanceIfChars([ef,Un])?this.finishToken(e,Yc):this.stream.advanceIfChar(tf)?this.stream.advanceIfChar(Un)?this.finishToken(e,_s):this.finishToken(e,p.Delim):this.stream.advanceIfChar(nf)?this.stream.advanceIfChar(Un)?this.finishToken(e,ks):this.finishToken(e,p.Delim):this.stream.advanceIfChars([Ss,Ss,Ss])?this.finishToken(e,Ar):super.scanNext(e)}comment(){return super.comment()?!0:!this.inURL&&this.stream.advanceIfChars([Jc,Jc])?(this.stream.advanceWhileChar(e=>{switch(e){case Jm:case Xm:case Ym:return!1;default:return!0}}),!0):!1}}class Es{constructor(e,n){this.id=e,this.message=n}}const Fs={FromExpected:new Es("scss-fromexpected",w("'from' expected")),ThroughOrToExpected:new Es("scss-throughexpected",w("'through' or 'to' expected")),InExpected:new Es("scss-fromexpected",w("'in' expected"))};class rf extends _r{constructor(){super(new Qc)}_parseStylesheetStatement(e=!1){return this.peek(p.AtKeyword)?this._parseWarnAndDebug()||this._parseControlStatement()||this._parseMixinDeclaration()||this._parseMixinContent()||this._parseMixinReference()||this._parseFunctionDeclaration()||this._parseForward()||this._parseUse()||this._parseRuleset(e)||super._parseStylesheetAtStatement(e):this._parseRuleset(!0)||this._parseVariableDeclaration()}_parseImport(){if(!this.peekKeyword("@import"))return null;const e=this.create(zi);if(this.consumeToken(),!e.addChild(this._parseURILiteral())&&!e.addChild(this._parseStringLiteral()))return this.finish(e,S.URIOrStringExpected);for(;this.accept(p.Comma);)if(!e.addChild(this._parseURILiteral())&&!e.addChild(this._parseStringLiteral()))return this.finish(e,S.URIOrStringExpected);return this._completeParseImport(e)}_parseVariableDeclaration(e=[]){if(!this.peek(Cs))return null;const n=this.create(pr);if(!n.setVariable(this._parseVariable()))return null;if(!this.accept(p.Colon))return this.finish(n,S.ColonExpected);if(this.prevToken&&(n.colonPosition=this.prevToken.offset),!n.setValue(this._parseExpr()))return this.finish(n,S.VariableValueExpected,[],e);for(;this.peek(p.Exclamation);)if(!n.addChild(this._tryParsePrio())){if(this.consumeToken(),!this.peekRegExp(p.Ident,/^(default|global)$/))return this.finish(n,S.UnknownKeyword);this.consumeToken()}return this.peek(p.SemiColon)&&(n.semicolonPosition=this.token.offset),this.finish(n)}_parseMediaCondition(){return this._parseInterpolation()||super._parseMediaCondition()}_parseMediaFeatureRangeOperator(){return this.accept(_s)||this.accept(ks)||super._parseMediaFeatureRangeOperator()}_parseMediaFeatureName(){return this._parseModuleMember()||this._parseFunction()||this._parseIdent()||this._parseVariable()}_parseKeyframeSelector(){return this._tryParseKeyframeSelector()||this._parseControlStatement(this._parseKeyframeSelector.bind(this))||this._parseWarnAndDebug()||this._parseMixinReference()||this._parseFunctionDeclaration()||this._parseVariableDeclaration()||this._parseMixinContent()}_parseVariable(){if(!this.peek(Cs))return null;const e=this.create(Ui);return this.consumeToken(),e}_parseModuleMember(){const e=this.mark(),n=this.create(vl);return n.setIdentifier(this._parseIdent([Q.Module]))?this.hasWhitespace()||!this.acceptDelim(".")||this.hasWhitespace()?(this.restoreAtMark(e),null):n.addChild(this._parseVariable()||this._parseFunction())?n:this.finish(n,S.IdentifierOrVariableExpected):null}_parseIdent(e){if(!this.peek(p.Ident)&&!this.peek(Lr)&&!this.peekDelim("-"))return null;const n=this.create(ze);n.referenceTypes=e,n.isCustomProperty=this.peekRegExp(p.Ident,/^--/);let r=!1;const i=()=>{const s=this.mark();return this.acceptDelim("-")&&(this.hasWhitespace()||this.acceptDelim("-"),this.hasWhitespace())?(this.restoreAtMark(s),null):this._parseInterpolation()};for(;(this.accept(p.Ident)||n.addChild(i())||r&&this.acceptRegexp(/^[\w-]/))&&(r=!0,!this.hasWhitespace()););return r?this.finish(n):null}_parseTermExpression(){return this._parseModuleMember()||this._parseVariable()||this._parseNestingSelector()||super._parseTermExpression()}_parseInterpolation(){if(this.peek(Lr)){const e=this.create($i);return this.consumeToken(),!e.addChild(this._parseExpr())&&!this._parseNestingSelector()?this.accept(p.CurlyR)?this.finish(e):this.finish(e,S.ExpressionExpected):this.accept(p.CurlyR)?this.finish(e):this.finish(e,S.RightCurlyExpected)}return null}_parseOperator(){if(this.peek(Xc)||this.peek(Yc)||this.peek(ks)||this.peek(_s)||this.peekDelim(">")||this.peekDelim("<")||this.peekIdent("and")||this.peekIdent("or")||this.peekDelim("%")){const e=this.createNode(v.Operator);return this.consumeToken(),this.finish(e)}return super._parseOperator()}_parseUnaryOperator(){if(this.peekIdent("not")){const e=this.create(W);return this.consumeToken(),this.finish(e)}return super._parseUnaryOperator()}_parseRuleSetDeclaration(){return this.peek(p.AtKeyword)?this._parseKeyframe()||this._parseImport()||this._parseMedia(!0)||this._parseFontFace()||this._parseWarnAndDebug()||this._parseControlStatement()||this._parseFunctionDeclaration()||this._parseExtends()||this._parseMixinReference()||this._parseMixinContent()||this._parseMixinDeclaration()||this._parseRuleset(!0)||this._parseSupports(!0)||this._parseLayer()||this._parsePropertyAtRule()||this._parseContainer(!0)||this._parseRuleSetDeclarationAtStatement():this._parseVariableDeclaration()||this._tryParseRuleset(!0)||this._parseDeclaration()}_parseDeclaration(e){const n=this._tryParseCustomPropertyDeclaration(e);if(n)return n;const r=this.create(Pe);if(!r.setProperty(this._parseProperty()))return null;if(!this.accept(p.Colon))return this.finish(r,S.ColonExpected,[p.Colon],e||[p.SemiColon]);this.prevToken&&(r.colonPosition=this.prevToken.offset);let i=!1;if(r.setValue(this._parseExpr())&&(i=!0,r.addChild(this._parsePrio())),this.peek(p.CurlyL))r.setNestedProperties(this._parseNestedProperties());else if(!i)return this.finish(r,S.PropertyValueExpected);return this.peek(p.SemiColon)&&(r.semicolonPosition=this.token.offset),this.finish(r)}_parseNestedProperties(){const e=this.create(ul);return this._parseBody(e,this._parseDeclaration.bind(this))}_parseExtends(){if(this.peekKeyword("@extend")){const e=this.create(An);if(this.consumeToken(),!e.getSelectors().addChild(this._parseSimpleSelector()))return this.finish(e,S.SelectorExpected);for(;this.accept(p.Comma);)e.getSelectors().addChild(this._parseSimpleSelector());return this.accept(p.Exclamation)&&!this.acceptIdent("optional")?this.finish(e,S.UnknownKeyword):this.finish(e)}return null}_parseSimpleSelectorBody(){return this._parseSelectorPlaceholder()||super._parseSimpleSelectorBody()}_parseNestingSelector(){if(this.peekDelim("&")){const e=this.createNode(v.SelectorCombinator);for(this.consumeToken();!this.hasWhitespace()&&(this.acceptDelim("-")||this.accept(p.Num)||this.accept(p.Dimension)||e.addChild(this._parseIdent())||this.acceptDelim("&")););return this.finish(e)}return null}_parseSelectorPlaceholder(){if(this.peekDelim("%")){const e=this.createNode(v.SelectorPlaceholder);return this.consumeToken(),this._parseIdent(),this.finish(e)}else if(this.peekKeyword("@at-root")){const e=this.createNode(v.SelectorPlaceholder);if(this.consumeToken(),this.accept(p.ParenthesisL)){if(!this.acceptIdent("with")&&!this.acceptIdent("without"))return this.finish(e,S.IdentifierExpected);if(!this.accept(p.Colon))return this.finish(e,S.ColonExpected);if(!e.addChild(this._parseIdent()))return this.finish(e,S.IdentifierExpected);if(!this.accept(p.ParenthesisR))return this.finish(e,S.RightParenthesisExpected,[p.CurlyR])}return this.finish(e)}return null}_parseElementName(){const e=this.mark(),n=super._parseElementName();return n&&!this.hasWhitespace()&&this.peek(p.ParenthesisL)?(this.restoreAtMark(e),null):n}_tryParsePseudoIdentifier(){return this._parseInterpolation()||super._tryParsePseudoIdentifier()}_parseWarnAndDebug(){if(!this.peekKeyword("@debug")&&!this.peekKeyword("@warn")&&!this.peekKeyword("@error"))return null;const e=this.createNode(v.Debug);return this.consumeToken(),e.addChild(this._parseExpr()),this.finish(e)}_parseControlStatement(e=this._parseRuleSetDeclaration.bind(this)){return this.peek(p.AtKeyword)?this._parseIfStatement(e)||this._parseForStatement(e)||this._parseEachStatement(e)||this._parseWhileStatement(e):null}_parseIfStatement(e){return this.peekKeyword("@if")?this._internalParseIfStatement(e):null}_internalParseIfStatement(e){const n=this.create(Cp);if(this.consumeToken(),!n.setExpression(this._parseExpr(!0)))return this.finish(n,S.ExpressionExpected);if(this._parseBody(n,e),this.acceptKeyword("@else")){if(this.peekIdent("if"))n.setElseClause(this._internalParseIfStatement(e));else if(this.peek(p.CurlyL)){const r=this.create(Fp);this._parseBody(r,e),n.setElseClause(r)}}return this.finish(n)}_parseForStatement(e){if(!this.peekKeyword("@for"))return null;const n=this.create(kp);return this.consumeToken(),n.setVariable(this._parseVariable())?this.acceptIdent("from")?n.addChild(this._parseBinaryExpr())?!this.acceptIdent("to")&&!this.acceptIdent("through")?this.finish(n,Fs.ThroughOrToExpected,[p.CurlyR]):n.addChild(this._parseBinaryExpr())?this._parseBody(n,e):this.finish(n,S.ExpressionExpected,[p.CurlyR]):this.finish(n,S.ExpressionExpected,[p.CurlyR]):this.finish(n,Fs.FromExpected,[p.CurlyR]):this.finish(n,S.VariableNameExpected,[p.CurlyR])}_parseEachStatement(e){if(!this.peekKeyword("@each"))return null;const n=this.create(_p);this.consumeToken();const r=n.getVariables();if(!r.addChild(this._parseVariable()))return this.finish(n,S.VariableNameExpected,[p.CurlyR]);for(;this.accept(p.Comma);)if(!r.addChild(this._parseVariable()))return this.finish(n,S.VariableNameExpected,[p.CurlyR]);return this.finish(r),this.acceptIdent("in")?n.addChild(this._parseExpr())?this._parseBody(n,e):this.finish(n,S.ExpressionExpected,[p.CurlyR]):this.finish(n,Fs.InExpected,[p.CurlyR])}_parseWhileStatement(e){if(!this.peekKeyword("@while"))return null;const n=this.create(Ep);return this.consumeToken(),n.addChild(this._parseBinaryExpr())?this._parseBody(n,e):this.finish(n,S.ExpressionExpected,[p.CurlyR])}_parseFunctionBodyDeclaration(){return this._parseVariableDeclaration()||this._parseReturnStatement()||this._parseWarnAndDebug()||this._parseControlStatement(this._parseFunctionBodyDeclaration.bind(this))}_parseFunctionDeclaration(){if(!this.peekKeyword("@function"))return null;const e=this.create(ur);if(this.consumeToken(),!e.setIdentifier(this._parseIdent([Q.Function])))return this.finish(e,S.IdentifierExpected,[p.CurlyR]);if(!this.accept(p.ParenthesisL))return this.finish(e,S.LeftParenthesisExpected,[p.CurlyR]);if(e.getParameters().addChild(this._parseParameterDeclaration())){for(;this.accept(p.Comma)&&!this.peek(p.ParenthesisR);)if(!e.getParameters().addChild(this._parseParameterDeclaration()))return this.finish(e,S.VariableNameExpected)}return this.accept(p.ParenthesisR)?this._parseBody(e,this._parseFunctionBodyDeclaration.bind(this)):this.finish(e,S.RightParenthesisExpected,[p.CurlyR])}_parseReturnStatement(){if(!this.peekKeyword("@return"))return null;const e=this.createNode(v.ReturnStatement);return this.consumeToken(),e.addChild(this._parseExpr())?this.finish(e):this.finish(e,S.ExpressionExpected)}_parseMixinDeclaration(){if(!this.peekKeyword("@mixin"))return null;const e=this.create(Mn);if(this.consumeToken(),!e.setIdentifier(this._parseIdent([Q.Mixin])))return this.finish(e,S.IdentifierExpected,[p.CurlyR]);if(this.accept(p.ParenthesisL)){if(e.getParameters().addChild(this._parseParameterDeclaration())){for(;this.accept(p.Comma)&&!this.peek(p.ParenthesisR);)if(!e.getParameters().addChild(this._parseParameterDeclaration()))return this.finish(e,S.VariableNameExpected)}if(!this.accept(p.ParenthesisR))return this.finish(e,S.RightParenthesisExpected,[p.CurlyR])}return this._parseBody(e,this._parseRuleSetDeclaration.bind(this))}_parseParameterDeclaration(){const e=this.create(dr);return e.setIdentifier(this._parseVariable())?(this.accept(Ar),this.accept(p.Colon)&&!e.setDefaultValue(this._parseExpr(!0))?this.finish(e,S.VariableValueExpected,[],[p.Comma,p.ParenthesisR]):this.finish(e)):null}_parseMixinContent(){if(!this.peekKeyword("@content"))return null;const e=this.create(Jp);if(this.consumeToken(),this.accept(p.ParenthesisL)){if(e.getArguments().addChild(this._parseFunctionArgument())){for(;this.accept(p.Comma)&&!this.peek(p.ParenthesisR);)if(!e.getArguments().addChild(this._parseFunctionArgument()))return this.finish(e,S.ExpressionExpected)}if(!this.accept(p.ParenthesisR))return this.finish(e,S.RightParenthesisExpected)}return this.finish(e)}_parseMixinReference(){if(!this.peekKeyword("@include"))return null;const e=this.create(mr);this.consumeToken();const n=this._parseIdent([Q.Mixin]);if(!e.setIdentifier(n))return this.finish(e,S.IdentifierExpected,[p.CurlyR]);if(!this.hasWhitespace()&&this.acceptDelim(".")&&!this.hasWhitespace()){const r=this._parseIdent([Q.Mixin]);if(!r)return this.finish(e,S.IdentifierExpected,[p.CurlyR]);const i=this.create(vl);n.referenceTypes=[Q.Module],i.setIdentifier(n),e.setIdentifier(r),e.addChild(i)}if(this.accept(p.ParenthesisL)){if(e.getArguments().addChild(this._parseFunctionArgument())){for(;this.accept(p.Comma)&&!this.peek(p.ParenthesisR);)if(!e.getArguments().addChild(this._parseFunctionArgument()))return this.finish(e,S.ExpressionExpected)}if(!this.accept(p.ParenthesisR))return this.finish(e,S.RightParenthesisExpected)}return(this.peekIdent("using")||this.peek(p.CurlyL))&&e.setContent(this._parseMixinContentDeclaration()),this.finish(e)}_parseMixinContentDeclaration(){const e=this.create(Xp);if(this.acceptIdent("using")){if(!this.accept(p.ParenthesisL))return this.finish(e,S.LeftParenthesisExpected,[p.CurlyL]);if(e.getParameters().addChild(this._parseParameterDeclaration())){for(;this.accept(p.Comma)&&!this.peek(p.ParenthesisR);)if(!e.getParameters().addChild(this._parseParameterDeclaration()))return this.finish(e,S.VariableNameExpected)}if(!this.accept(p.ParenthesisR))return this.finish(e,S.RightParenthesisExpected,[p.CurlyL])}return this.peek(p.CurlyL)&&this._parseBody(e,this._parseMixinReferenceBodyStatement.bind(this)),this.finish(e)}_parseMixinReferenceBodyStatement(){return this._tryParseKeyframeSelector()||this._parseRuleSetDeclaration()}_parseFunctionArgument(){const e=this.create(Qt),n=this.mark(),r=this._parseVariable();if(r)if(this.accept(p.Colon))e.setIdentifier(r);else{if(this.accept(Ar))return e.setValue(r),this.finish(e);this.restoreAtMark(n)}return e.setValue(this._parseExpr(!0))?(this.accept(Ar),e.addChild(this._parsePrio()),this.finish(e)):e.setValue(this._tryParsePrio())?this.finish(e):null}_parseURLArgument(){const e=this.mark(),n=super._parseURLArgument();if(!n||!this.peek(p.ParenthesisR)){this.restoreAtMark(e);const r=this.create(W);return r.addChild(this._parseBinaryExpr()),this.finish(r)}return n}_parseOperation(){if(!this.peek(p.ParenthesisL))return null;const e=this.create(W);for(this.consumeToken();e.addChild(this._parseListElement());)this.accept(p.Comma);return this.accept(p.ParenthesisR)?this.finish(e):this.finish(e,S.RightParenthesisExpected)}_parseListElement(){const e=this.create(Yp),n=this._parseBinaryExpr();if(!n)return null;if(this.accept(p.Colon)){if(e.setKey(n),!e.setValue(this._parseBinaryExpr()))return this.finish(e,S.ExpressionExpected)}else e.setValue(n);return this.finish(e)}_parseUse(){if(!this.peekKeyword("@use"))return null;const e=this.create(Np);if(this.consumeToken(),!e.addChild(this._parseStringLiteral()))return this.finish(e,S.StringLiteralExpected);if(!this.peek(p.SemiColon)&&!this.peek(p.EOF)){if(!this.peekRegExp(p.Ident,/as|with/))return this.finish(e,S.UnknownKeyword);if(this.acceptIdent("as")&&!e.setIdentifier(this._parseIdent([Q.Module]))&&!this.acceptDelim("*"))return this.finish(e,S.IdentifierOrWildcardExpected);if(this.acceptIdent("with")){if(!this.accept(p.ParenthesisL))return this.finish(e,S.LeftParenthesisExpected,[p.ParenthesisR]);if(!e.getParameters().addChild(this._parseModuleConfigDeclaration()))return this.finish(e,S.VariableNameExpected);for(;this.accept(p.Comma)&&!this.peek(p.ParenthesisR);)if(!e.getParameters().addChild(this._parseModuleConfigDeclaration()))return this.finish(e,S.VariableNameExpected);if(!this.accept(p.ParenthesisR))return this.finish(e,S.RightParenthesisExpected)}}return!this.accept(p.SemiColon)&&!this.accept(p.EOF)?this.finish(e,S.SemiColonExpected):this.finish(e)}_parseModuleConfigDeclaration(){const e=this.create(Ip);return e.setIdentifier(this._parseVariable())?!this.accept(p.Colon)||!e.setValue(this._parseExpr(!0))?this.finish(e,S.VariableValueExpected,[],[p.Comma,p.ParenthesisR]):this.accept(p.Exclamation)&&(this.hasWhitespace()||!this.acceptIdent("default"))?this.finish(e,S.UnknownKeyword):this.finish(e):null}_parseForward(){if(!this.peekKeyword("@forward"))return null;const e=this.create(Dp);if(this.consumeToken(),!e.addChild(this._parseStringLiteral()))return this.finish(e,S.StringLiteralExpected);if(this.acceptIdent("as")){const n=this._parseIdent([Q.Forward]);if(!e.setIdentifier(n))return this.finish(e,S.IdentifierExpected);if(this.hasWhitespace()||!this.acceptDelim("*"))return this.finish(e,S.WildcardExpected)}if(this.acceptIdent("with")){if(!this.accept(p.ParenthesisL))return this.finish(e,S.LeftParenthesisExpected,[p.ParenthesisR]);if(!e.getParameters().addChild(this._parseModuleConfigDeclaration()))return this.finish(e,S.VariableNameExpected);for(;this.accept(p.Comma)&&!this.peek(p.ParenthesisR);)if(!e.getParameters().addChild(this._parseModuleConfigDeclaration()))return this.finish(e,S.VariableNameExpected);if(!this.accept(p.ParenthesisR))return this.finish(e,S.RightParenthesisExpected)}else if((this.peekIdent("hide")||this.peekIdent("show"))&&!e.addChild(this._parseForwardVisibility()))return this.finish(e,S.IdentifierOrVariableExpected);return!this.accept(p.SemiColon)&&!this.accept(p.EOF)?this.finish(e,S.SemiColonExpected):this.finish(e)}_parseForwardVisibility(){const e=this.create(Lp);for(e.setIdentifier(this._parseIdent());e.addChild(this._parseVariable()||this._parseIdent());)this.accept(p.Comma);return e.getChildren().length>1?e:null}_parseSupportsCondition(){return this._parseInterpolation()||super._parseSupportsCondition()}}const ct=w("Sass documentation");class be extends ds{constructor(e,n){super("$",e,n),Kc(be.scssModuleLoaders),Kc(be.scssModuleBuiltIns)}isImportPathParent(e){return e===v.Forward||e===v.Use||super.isImportPathParent(e)}getCompletionForImportPath(e,n){const r=e.getParent().type;if(r===v.Forward||r===v.Use)for(let i of be.scssModuleBuiltIns){const s={label:i.label,documentation:i.documentation,textEdit:j.replace(this.getCompletionRange(e),`'${i.label}'`),kind:q.Module};n.items.push(s)}return super.getCompletionForImportPath(e,n)}createReplaceFunction(){let e=1;return(n,r)=>"\\"+r+": ${"+e+++":"+(be.variableDefaults[r]||"")+"}"}createFunctionProposals(e,n,r,i){for(const s of e){const a=s.func.replace(/\[?(\$\w+)\]?/g,this.createReplaceFunction()),l={label:s.func.substr(0,s.func.indexOf("(")),detail:s.func,documentation:s.desc,textEdit:j.replace(this.getCompletionRange(n),a),insertTextFormat:Ie.Snippet,kind:q.Function};r&&(l.sortText="z"),i.items.push(l)}return i}getCompletionsForSelector(e,n,r){return this.createFunctionProposals(be.selectorFuncs,null,!0,r),super.getCompletionsForSelector(e,n,r)}getTermProposals(e,n,r){let i=be.builtInFuncs;return e&&(i=i.filter(s=>!s.type||!e.restrictions||e.restrictions.indexOf(s.type)!==-1)),this.createFunctionProposals(i,n,!0,r),super.getTermProposals(e,n,r)}getColorProposals(e,n,r){return this.createFunctionProposals(be.colorProposals,n,!1,r),super.getColorProposals(e,n,r)}getCompletionsForDeclarationProperty(e,n){return this.getCompletionForAtDirectives(n),this.getCompletionsForSelector(null,!0,n),super.getCompletionsForDeclarationProperty(e,n)}getCompletionsForExtendsReference(e,n,r){const i=this.getSymbolContext().findSymbolsAtOffset(this.offset,Q.Rule);for(const s of i){const a={label:s.name,textEdit:j.replace(this.getCompletionRange(n),s.name),kind:q.Function};r.items.push(a)}return r}getCompletionForAtDirectives(e){return e.items.push(...be.scssAtDirectives),e}getCompletionForTopLevel(e){return this.getCompletionForAtDirectives(e),this.getCompletionForModuleLoaders(e),super.getCompletionForTopLevel(e),e}getCompletionForModuleLoaders(e){return e.items.push(...be.scssModuleLoaders),e}}be.variableDefaults={$red:"1",$green:"2",$blue:"3",$alpha:"1.0",$color:"#000000",$weight:"0.5",$hue:"0",$saturation:"0%",$lightness:"0%",$degrees:"0",$amount:"0",$string:'""',$substring:'"s"',$number:"0",$limit:"1"},be.colorProposals=[{func:"red($color)",desc:w("Gets the red component of a color.")},{func:"green($color)",desc:w("Gets the green component of a color.")},{func:"blue($color)",desc:w("Gets the blue component of a color.")},{func:"mix($color, $color, [$weight])",desc:w("Mixes two colors together.")},{func:"hue($color)",desc:w("Gets the hue component of a color.")},{func:"saturation($color)",desc:w("Gets the saturation component of a color.")},{func:"lightness($color)",desc:w("Gets the lightness component of a color.")},{func:"adjust-hue($color, $degrees)",desc:w("Changes the hue of a color.")},{func:"lighten($color, $amount)",desc:w("Makes a color lighter.")},{func:"darken($color, $amount)",desc:w("Makes a color darker.")},{func:"saturate($color, $amount)",desc:w("Makes a color more saturated.")},{func:"desaturate($color, $amount)",desc:w("Makes a color less saturated.")},{func:"grayscale($color)",desc:w("Converts a color to grayscale.")},{func:"complement($color)",desc:w("Returns the complement of a color.")},{func:"invert($color)",desc:w("Returns the inverse of a color.")},{func:"alpha($color)",desc:w("Gets the opacity component of a color.")},{func:"opacity($color)",desc:"Gets the alpha component (opacity) of a color."},{func:"rgba($color, $alpha)",desc:w("Changes the alpha component for a color.")},{func:"opacify($color, $amount)",desc:w("Makes a color more opaque.")},{func:"fade-in($color, $amount)",desc:w("Makes a color more opaque.")},{func:"transparentize($color, $amount)",desc:w("Makes a color more transparent.")},{func:"fade-out($color, $amount)",desc:w("Makes a color more transparent.")},{func:"adjust-color($color, [$red], [$green], [$blue], [$hue], [$saturation], [$lightness], [$alpha])",desc:w("Increases or decreases one or more components of a color.")},{func:"scale-color($color, [$red], [$green], [$blue], [$saturation], [$lightness], [$alpha])",desc:w("Fluidly scales one or more properties of a color.")},{func:"change-color($color, [$red], [$green], [$blue], [$hue], [$saturation], [$lightness], [$alpha])",desc:w("Changes one or more properties of a color.")},{func:"ie-hex-str($color)",desc:w("Converts a color into the format understood by IE filters.")}],be.selectorFuncs=[{func:"selector-nest($selectors…)",desc:w("Nests selector beneath one another like they would be nested in the stylesheet.")},{func:"selector-append($selectors…)",desc:w("Appends selectors to one another without spaces in between.")},{func:"selector-extend($selector, $extendee, $extender)",desc:w("Extends $extendee with $extender within $selector.")},{func:"selector-replace($selector, $original, $replacement)",desc:w("Replaces $original with $replacement within $selector.")},{func:"selector-unify($selector1, $selector2)",desc:w("Unifies two selectors to produce a selector that matches elements matched by both.")},{func:"is-superselector($super, $sub)",desc:w("Returns whether $super matches all the elements $sub does, and possibly more.")},{func:"simple-selectors($selector)",desc:w("Returns the simple selectors that comprise a compound selector.")},{func:"selector-parse($selector)",desc:w("Parses a selector into the format returned by &.")}],be.builtInFuncs=[{func:"unquote($string)",desc:w("Removes quotes from a string.")},{func:"quote($string)",desc:w("Adds quotes to a string.")},{func:"str-length($string)",desc:w("Returns the number of characters in a string.")},{func:"str-insert($string, $insert, $index)",desc:w("Inserts $insert into $string at $index.")},{func:"str-index($string, $substring)",desc:w("Returns the index of the first occurance of $substring in $string.")},{func:"str-slice($string, $start-at, [$end-at])",desc:w("Extracts a substring from $string.")},{func:"to-upper-case($string)",desc:w("Converts a string to upper case.")},{func:"to-lower-case($string)",desc:w("Converts a string to lower case.")},{func:"percentage($number)",desc:w("Converts a unitless number to a percentage."),type:"percentage"},{func:"round($number)",desc:w("Rounds a number to the nearest whole number.")},{func:"ceil($number)",desc:w("Rounds a number up to the next whole number.")},{func:"floor($number)",desc:w("Rounds a number down to the previous whole number.")},{func:"abs($number)",desc:w("Returns the absolute value of a number.")},{func:"min($numbers)",desc:w("Finds the minimum of several numbers.")},{func:"max($numbers)",desc:w("Finds the maximum of several numbers.")},{func:"random([$limit])",desc:w("Returns a random number.")},{func:"length($list)",desc:w("Returns the length of a list.")},{func:"nth($list, $n)",desc:w("Returns a specific item in a list.")},{func:"set-nth($list, $n, $value)",desc:w("Replaces the nth item in a list.")},{func:"join($list1, $list2, [$separator])",desc:w("Joins together two lists into one.")},{func:"append($list1, $val, [$separator])",desc:w("Appends a single value onto the end of a list.")},{func:"zip($lists)",desc:w("Combines several lists into a single multidimensional list.")},{func:"index($list, $value)",desc:w("Returns the position of a value within a list.")},{func:"list-separator(#list)",desc:w("Returns the separator of a list.")},{func:"map-get($map, $key)",desc:w("Returns the value in a map associated with a given key.")},{func:"map-merge($map1, $map2)",desc:w("Merges two maps together into a new map.")},{func:"map-remove($map, $keys)",desc:w("Returns a new map with keys removed.")},{func:"map-keys($map)",desc:w("Returns a list of all keys in a map.")},{func:"map-values($map)",desc:w("Returns a list of all values in a map.")},{func:"map-has-key($map, $key)",desc:w("Returns whether a map has a value associated with a given key.")},{func:"keywords($args)",desc:w("Returns the keywords passed to a function that takes variable arguments.")},{func:"feature-exists($feature)",desc:w("Returns whether a feature exists in the current Sass runtime.")},{func:"variable-exists($name)",desc:w("Returns whether a variable with the given name exists in the current scope.")},{func:"global-variable-exists($name)",desc:w("Returns whether a variable with the given name exists in the global scope.")},{func:"function-exists($name)",desc:w("Returns whether a function with the given name exists.")},{func:"mixin-exists($name)",desc:w("Returns whether a mixin with the given name exists.")},{func:"inspect($value)",desc:w("Returns the string representation of a value as it would be represented in Sass.")},{func:"type-of($value)",desc:w("Returns the type of a value.")},{func:"unit($number)",desc:w("Returns the unit(s) associated with a number.")},{func:"unitless($number)",desc:w("Returns whether a number has units.")},{func:"comparable($number1, $number2)",desc:w("Returns whether two numbers can be added, subtracted, or compared.")},{func:"call($name, $args…)",desc:w("Dynamically calls a Sass function.")}],be.scssAtDirectives=[{label:"@extend",documentation:w("Inherits the styles of another selector."),kind:q.Keyword},{label:"@at-root",documentation:w("Causes one or more rules to be emitted at the root of the document."),kind:q.Keyword},{label:"@debug",documentation:w("Prints the value of an expression to the standard error output stream. Useful for debugging complicated Sass files."),kind:q.Keyword},{label:"@warn",documentation:w("Prints the value of an expression to the standard error output stream. Useful for libraries that need to warn users of deprecations or recovering from minor mixin usage mistakes. Warnings can be turned off with the `--quiet` command-line option or the `:quiet` Sass option."),kind:q.Keyword},{label:"@error",documentation:w("Throws the value of an expression as a fatal error with stack trace. Useful for validating arguments to mixins and functions."),kind:q.Keyword},{label:"@if",documentation:w("Includes the body if the expression does not evaluate to `false` or `null`."),insertText:`@if \${1:expr} {
+ $0
+}`,insertTextFormat:Ie.Snippet,kind:q.Keyword},{label:"@for",documentation:w("For loop that repeatedly outputs a set of styles for each `$var` in the `from/through` or `from/to` clause."),insertText:"@for \\$${1:var} from ${2:start} ${3|to,through|} ${4:end} {\n $0\n}",insertTextFormat:Ie.Snippet,kind:q.Keyword},{label:"@each",documentation:w("Each loop that sets `$var` to each item in the list or map, then outputs the styles it contains using that value of `$var`."),insertText:"@each \\$${1:var} in ${2:list} {\n $0\n}",insertTextFormat:Ie.Snippet,kind:q.Keyword},{label:"@while",documentation:w("While loop that takes an expression and repeatedly outputs the nested styles until the statement evaluates to `false`."),insertText:`@while \${1:condition} {
+ $0
+}`,insertTextFormat:Ie.Snippet,kind:q.Keyword},{label:"@mixin",documentation:w("Defines styles that can be re-used throughout the stylesheet with `@include`."),insertText:`@mixin \${1:name} {
+ $0
+}`,insertTextFormat:Ie.Snippet,kind:q.Keyword},{label:"@include",documentation:w("Includes the styles defined by another mixin into the current rule."),kind:q.Keyword},{label:"@function",documentation:w("Defines complex operations that can be re-used throughout stylesheets."),kind:q.Keyword}],be.scssModuleLoaders=[{label:"@use",documentation:w("Loads mixins, functions, and variables from other Sass stylesheets as 'modules', and combines CSS from multiple stylesheets together."),references:[{name:ct,url:"https://sass-lang.com/documentation/at-rules/use"}],insertText:"@use $0;",insertTextFormat:Ie.Snippet,kind:q.Keyword},{label:"@forward",documentation:w("Loads a Sass stylesheet and makes its mixins, functions, and variables available when this stylesheet is loaded with the @use rule."),references:[{name:ct,url:"https://sass-lang.com/documentation/at-rules/forward"}],insertText:"@forward $0;",insertTextFormat:Ie.Snippet,kind:q.Keyword}],be.scssModuleBuiltIns=[{label:"sass:math",documentation:w("Provides functions that operate on numbers."),references:[{name:ct,url:"https://sass-lang.com/documentation/modules/math"}]},{label:"sass:string",documentation:w("Makes it easy to combine, search, or split apart strings."),references:[{name:ct,url:"https://sass-lang.com/documentation/modules/string"}]},{label:"sass:color",documentation:w("Generates new colors based on existing ones, making it easy to build color themes."),references:[{name:ct,url:"https://sass-lang.com/documentation/modules/color"}]},{label:"sass:list",documentation:w("Lets you access and modify values in lists."),references:[{name:ct,url:"https://sass-lang.com/documentation/modules/list"}]},{label:"sass:map",documentation:w("Makes it possible to look up the value associated with a key in a map, and much more."),references:[{name:ct,url:"https://sass-lang.com/documentation/modules/map"}]},{label:"sass:selector",documentation:w("Provides access to Sass’s powerful selector engine."),references:[{name:ct,url:"https://sass-lang.com/documentation/modules/selector"}]},{label:"sass:meta",documentation:w("Exposes the details of Sass’s inner workings."),references:[{name:ct,url:"https://sass-lang.com/documentation/modules/meta"}]}];function Kc(t){t.forEach(e=>{if(e.documentation&&e.references&&e.references.length>0){const n=typeof e.documentation=="string"?{kind:"markdown",value:e.documentation}:{kind:"markdown",value:e.documentation.value};n.value+=`
+
+`,n.value+=e.references.map(r=>`[${r.name}](${r.url})`).join(" | "),e.documentation=n}})}const Zc=47,sf=10,af=13,of=12,Rs=96,Ns=46;let lf=p.CustomToken;const Is=lf++;class eh extends Nn{scanNext(e){const n=this.escapedJavaScript();return n!==null?this.finishToken(e,n):this.stream.advanceIfChars([Ns,Ns,Ns])?this.finishToken(e,Is):super.scanNext(e)}comment(){return super.comment()?!0:!this.inURL&&this.stream.advanceIfChars([Zc,Zc])?(this.stream.advanceWhileChar(e=>{switch(e){case sf:case af:case of:return!1;default:return!0}}),!0):!1}escapedJavaScript(){return this.stream.peekChar()===Rs?(this.stream.advance(1),this.stream.advanceWhileChar(n=>n!==Rs),this.stream.advanceIfChar(Rs)?p.EscapedJavaScript:p.BadEscapedJavaScript):null}}class cf extends _r{constructor(){super(new eh)}_parseStylesheetStatement(e=!1){return this.peek(p.AtKeyword)?this._parseVariableDeclaration()||this._parsePlugin()||super._parseStylesheetAtStatement(e):this._tryParseMixinDeclaration()||this._tryParseMixinReference()||this._parseFunction()||this._parseRuleset(!0)}_parseImport(){if(!this.peekKeyword("@import")&&!this.peekKeyword("@import-once"))return null;const e=this.create(zi);if(this.consumeToken(),this.accept(p.ParenthesisL)){if(!this.accept(p.Ident))return this.finish(e,S.IdentifierExpected,[p.SemiColon]);do if(!this.accept(p.Comma))break;while(this.accept(p.Ident));if(!this.accept(p.ParenthesisR))return this.finish(e,S.RightParenthesisExpected,[p.SemiColon])}return!e.addChild(this._parseURILiteral())&&!e.addChild(this._parseStringLiteral())?this.finish(e,S.URIOrStringExpected,[p.SemiColon]):(!this.peek(p.SemiColon)&&!this.peek(p.EOF)&&e.setMedialist(this._parseMediaQueryList()),this._completeParseImport(e))}_parsePlugin(){if(!this.peekKeyword("@plugin"))return null;const e=this.createNode(v.Plugin);return this.consumeToken(),e.addChild(this._parseStringLiteral())?this.accept(p.SemiColon)?this.finish(e):this.finish(e,S.SemiColonExpected):this.finish(e,S.StringLiteralExpected)}_parseMediaQuery(){const e=super._parseMediaQuery();if(!e){const n=this.create(gl);return n.addChild(this._parseVariable())?this.finish(n):null}return e}_parseMediaDeclaration(e=!1){return this._tryParseRuleset(e)||this._tryToParseDeclaration()||this._tryParseMixinDeclaration()||this._tryParseMixinReference()||this._parseDetachedRuleSetMixin()||this._parseStylesheetStatement(e)}_parseMediaFeatureName(){return this._parseIdent()||this._parseVariable()}_parseVariableDeclaration(e=[]){const n=this.create(pr),r=this.mark();if(!n.setVariable(this._parseVariable(!0)))return null;if(this.accept(p.Colon)){if(this.prevToken&&(n.colonPosition=this.prevToken.offset),n.setValue(this._parseDetachedRuleSet()))n.needsSemicolon=!1;else if(!n.setValue(this._parseExpr()))return this.finish(n,S.VariableValueExpected,[],e);n.addChild(this._parsePrio())}else return this.restoreAtMark(r),null;return this.peek(p.SemiColon)&&(n.semicolonPosition=this.token.offset),this.finish(n)}_parseDetachedRuleSet(){let e=this.mark();if(this.peekDelim("#")||this.peekDelim("."))if(this.consumeToken(),!this.hasWhitespace()&&this.accept(p.ParenthesisL)){let r=this.create(Mn);if(r.getParameters().addChild(this._parseMixinParameter()))for(;(this.accept(p.Comma)||this.accept(p.SemiColon))&&!this.peek(p.ParenthesisR);)r.getParameters().addChild(this._parseMixinParameter())||this.markError(r,S.IdentifierExpected,[],[p.ParenthesisR]);if(!this.accept(p.ParenthesisR))return this.restoreAtMark(e),null}else return this.restoreAtMark(e),null;if(!this.peek(p.CurlyL))return null;const n=this.create(oe);return this._parseBody(n,this._parseDetachedRuleSetBody.bind(this)),this.finish(n)}_parseDetachedRuleSetBody(){return this._tryParseKeyframeSelector()||this._parseRuleSetDeclaration()}_addLookupChildren(e){if(!e.addChild(this._parseLookupValue()))return!1;let n=!1;for(;this.peek(p.BracketL)&&(n=!0),!!e.addChild(this._parseLookupValue());)n=!1;return!n}_parseLookupValue(){const e=this.create(W),n=this.mark();return this.accept(p.BracketL)?(e.addChild(this._parseVariable(!1,!0))||e.addChild(this._parsePropertyIdentifier()))&&this.accept(p.BracketR)||this.accept(p.BracketR)?e:(this.restoreAtMark(n),null):(this.restoreAtMark(n),null)}_parseVariable(e=!1,n=!1){const r=!e&&this.peekDelim("$");if(!this.peekDelim("@")&&!r&&!this.peek(p.AtKeyword))return null;const i=this.create(Ui),s=this.mark();for(;this.acceptDelim("@")||!e&&this.acceptDelim("$");)if(this.hasWhitespace())return this.restoreAtMark(s),null;return!this.accept(p.AtKeyword)&&!this.accept(p.Ident)?(this.restoreAtMark(s),null):!n&&this.peek(p.BracketL)&&!this._addLookupChildren(i)?(this.restoreAtMark(s),null):i}_parseTermExpression(){return this._parseVariable()||this._parseEscaped()||super._parseTermExpression()||this._tryParseMixinReference(!1)}_parseEscaped(){if(this.peek(p.EscapedJavaScript)||this.peek(p.BadEscapedJavaScript)){const e=this.createNode(v.EscapedValue);return this.consumeToken(),this.finish(e)}if(this.peekDelim("~")){const e=this.createNode(v.EscapedValue);return this.consumeToken(),this.accept(p.String)||this.accept(p.EscapedJavaScript)?this.finish(e):this.finish(e,S.TermExpected)}return null}_parseOperator(){const e=this._parseGuardOperator();return e||super._parseOperator()}_parseGuardOperator(){if(this.peekDelim(">")){const e=this.createNode(v.Operator);return this.consumeToken(),this.acceptDelim("="),e}else if(this.peekDelim("=")){const e=this.createNode(v.Operator);return this.consumeToken(),this.acceptDelim("<"),e}else if(this.peekDelim("<")){const e=this.createNode(v.Operator);return this.consumeToken(),this.acceptDelim("="),e}return null}_parseRuleSetDeclaration(){return this.peek(p.AtKeyword)?this._parseKeyframe()||this._parseMedia(!0)||this._parseImport()||this._parseSupports(!0)||this._parseLayer()||this._parsePropertyAtRule()||this._parseContainer(!0)||this._parseDetachedRuleSetMixin()||this._parseVariableDeclaration()||this._parseRuleSetDeclarationAtStatement():this._tryParseMixinDeclaration()||this._tryParseRuleset(!0)||this._tryParseMixinReference()||this._parseFunction()||this._parseExtend()||this._parseDeclaration()}_parseKeyframeIdent(){return this._parseIdent([Q.Keyframe])||this._parseVariable()}_parseKeyframeSelector(){return this._parseDetachedRuleSetMixin()||super._parseKeyframeSelector()}_parseSelector(e){const n=this.create(In);let r=!1;for(e&&(r=n.addChild(this._parseCombinator()));n.addChild(this._parseSimpleSelector());){r=!0;const i=this.mark();if(n.addChild(this._parseGuard())&&this.peek(p.CurlyL))break;this.restoreAtMark(i),n.addChild(this._parseCombinator())}return r?this.finish(n):null}_parseNestingSelector(){if(this.peekDelim("&")){const e=this.createNode(v.SelectorCombinator);for(this.consumeToken();!this.hasWhitespace()&&(this.acceptDelim("-")||this.accept(p.Num)||this.accept(p.Dimension)||e.addChild(this._parseIdent())||this.acceptDelim("&")););return this.finish(e)}return null}_parseSelectorIdent(){if(!this.peekInterpolatedIdent())return null;const e=this.createNode(v.SelectorInterpolation);return this._acceptInterpolatedIdent(e)?this.finish(e):null}_parsePropertyIdentifier(e=!1){const n=/^[\w-]+/;if(!this.peekInterpolatedIdent()&&!this.peekRegExp(this.token.type,n))return null;const r=this.mark(),i=this.create(ze);i.isCustomProperty=this.acceptDelim("-")&&this.acceptDelim("-");let s=!1;return e?i.isCustomProperty?s=i.addChild(this._parseIdent()):s=i.addChild(this._parseRegexp(n)):i.isCustomProperty?s=this._acceptInterpolatedIdent(i):s=this._acceptInterpolatedIdent(i,n),s?(!e&&!this.hasWhitespace()&&(this.acceptDelim("+"),this.hasWhitespace()||this.acceptIdent("_")),this.finish(i)):(this.restoreAtMark(r),null)}peekInterpolatedIdent(){return this.peek(p.Ident)||this.peekDelim("@")||this.peekDelim("$")||this.peekDelim("-")}_acceptInterpolatedIdent(e,n){let r=!1;const i=()=>{const a=this.mark();return this.acceptDelim("-")&&(this.hasWhitespace()||this.acceptDelim("-"),this.hasWhitespace())?(this.restoreAtMark(a),null):this._parseInterpolation()},s=n?()=>this.acceptRegexp(n):()=>this.accept(p.Ident);for(;(s()||e.addChild(this._parseInterpolation()||this.try(i)))&&(r=!0,!this.hasWhitespace()););return r}_parseInterpolation(){const e=this.mark();if(this.peekDelim("@")||this.peekDelim("$")){const n=this.createNode(v.Interpolation);return this.consumeToken(),this.hasWhitespace()||!this.accept(p.CurlyL)?(this.restoreAtMark(e),null):n.addChild(this._parseIdent())?this.accept(p.CurlyR)?this.finish(n):this.finish(n,S.RightCurlyExpected):this.finish(n,S.IdentifierExpected)}return null}_tryParseMixinDeclaration(){const e=this.mark(),n=this.create(Mn);if(!n.setIdentifier(this._parseMixinDeclarationIdentifier())||!this.accept(p.ParenthesisL))return this.restoreAtMark(e),null;if(n.getParameters().addChild(this._parseMixinParameter()))for(;(this.accept(p.Comma)||this.accept(p.SemiColon))&&!this.peek(p.ParenthesisR);)n.getParameters().addChild(this._parseMixinParameter())||this.markError(n,S.IdentifierExpected,[],[p.ParenthesisR]);return this.accept(p.ParenthesisR)?(n.setGuard(this._parseGuard()),this.peek(p.CurlyL)?this._parseBody(n,this._parseMixInBodyDeclaration.bind(this)):(this.restoreAtMark(e),null)):(this.restoreAtMark(e),null)}_parseMixInBodyDeclaration(){return this._parseFontFace()||this._parseRuleSetDeclaration()}_parseMixinDeclarationIdentifier(){let e;if(this.peekDelim("#")||this.peekDelim(".")){if(e=this.create(ze),this.consumeToken(),this.hasWhitespace()||!e.addChild(this._parseIdent()))return null}else if(this.peek(p.Hash))e=this.create(ze),this.consumeToken();else return null;return e.referenceTypes=[Q.Mixin],this.finish(e)}_parsePseudo(){if(!this.peek(p.Colon))return null;const e=this.mark(),n=this.create(An);return this.consumeToken(),this.acceptIdent("extend")?this._completeExtends(n):(this.restoreAtMark(e),super._parsePseudo())}_parseExtend(){if(!this.peekDelim("&"))return null;const e=this.mark(),n=this.create(An);return this.consumeToken(),this.hasWhitespace()||!this.accept(p.Colon)||!this.acceptIdent("extend")?(this.restoreAtMark(e),null):this._completeExtends(n)}_completeExtends(e){if(!this.accept(p.ParenthesisL))return this.finish(e,S.LeftParenthesisExpected);const n=e.getSelectors();if(!n.addChild(this._parseSelector(!0)))return this.finish(e,S.SelectorExpected);for(;this.accept(p.Comma);)if(!n.addChild(this._parseSelector(!0)))return this.finish(e,S.SelectorExpected);return this.accept(p.ParenthesisR)?this.finish(e):this.finish(e,S.RightParenthesisExpected)}_parseDetachedRuleSetMixin(){if(!this.peek(p.AtKeyword))return null;const e=this.mark(),n=this.create(mr);return n.addChild(this._parseVariable(!0))&&(this.hasWhitespace()||!this.accept(p.ParenthesisL))?(this.restoreAtMark(e),null):this.accept(p.ParenthesisR)?this.finish(n):this.finish(n,S.RightParenthesisExpected)}_tryParseMixinReference(e=!0){const n=this.mark(),r=this.create(mr);let i=this._parseMixinDeclarationIdentifier();for(;i;){this.acceptDelim(">");const a=this._parseMixinDeclarationIdentifier();if(a)r.getNamespaces().addChild(i),i=a;else break}if(!r.setIdentifier(i))return this.restoreAtMark(n),null;let s=!1;if(this.accept(p.ParenthesisL)){if(s=!0,r.getArguments().addChild(this._parseMixinArgument())){for(;(this.accept(p.Comma)||this.accept(p.SemiColon))&&!this.peek(p.ParenthesisR);)if(!r.getArguments().addChild(this._parseMixinArgument()))return this.finish(r,S.ExpressionExpected)}if(!this.accept(p.ParenthesisR))return this.finish(r,S.RightParenthesisExpected);i.referenceTypes=[Q.Mixin]}else i.referenceTypes=[Q.Mixin,Q.Rule];return this.peek(p.BracketL)?e||this._addLookupChildren(r):r.addChild(this._parsePrio()),!s&&!this.peek(p.SemiColon)&&!this.peek(p.CurlyR)&&!this.peek(p.EOF)?(this.restoreAtMark(n),null):this.finish(r)}_parseMixinArgument(){const e=this.create(Qt),n=this.mark(),r=this._parseVariable();return r&&(this.accept(p.Colon)?e.setIdentifier(r):this.restoreAtMark(n)),e.setValue(this._parseDetachedRuleSet()||this._parseExpr(!0))?this.finish(e):(this.restoreAtMark(n),null)}_parseMixinParameter(){const e=this.create(dr);if(this.peekKeyword("@rest")){const r=this.create(W);return this.consumeToken(),this.accept(Is)?(e.setIdentifier(this.finish(r)),this.finish(e)):this.finish(e,S.DotExpected,[],[p.Comma,p.ParenthesisR])}if(this.peek(Is)){const r=this.create(W);return this.consumeToken(),e.setIdentifier(this.finish(r)),this.finish(e)}let n=!1;return e.setIdentifier(this._parseVariable())&&(this.accept(p.Colon),n=!0),!e.setDefaultValue(this._parseDetachedRuleSet()||this._parseExpr(!0))&&!n?null:this.finish(e)}_parseGuard(){if(!this.peekIdent("when"))return null;const e=this.create(Qp);if(this.consumeToken(),!e.getConditions().addChild(this._parseGuardCondition()))return this.finish(e,S.ConditionExpected);for(;this.acceptIdent("and")||this.accept(p.Comma);)if(!e.getConditions().addChild(this._parseGuardCondition()))return this.finish(e,S.ConditionExpected);return this.finish(e)}_parseGuardCondition(){const e=this.create(Kp);return e.isNegated=this.acceptIdent("not"),this.accept(p.ParenthesisL)?(e.addChild(this._parseExpr()),this.accept(p.ParenthesisR)?this.finish(e):this.finish(e,S.RightParenthesisExpected)):e.isNegated?this.finish(e,S.LeftParenthesisExpected):null}_parseFunction(){const e=this.mark(),n=this.create(Dn);if(!n.setIdentifier(this._parseFunctionIdentifier()))return null;if(this.hasWhitespace()||!this.accept(p.ParenthesisL))return this.restoreAtMark(e),null;if(n.getArguments().addChild(this._parseMixinArgument())){for(;(this.accept(p.Comma)||this.accept(p.SemiColon))&&!this.peek(p.ParenthesisR);)if(!n.getArguments().addChild(this._parseMixinArgument()))return this.finish(n,S.ExpressionExpected)}return this.accept(p.ParenthesisR)?this.finish(n):this.finish(n,S.RightParenthesisExpected)}_parseFunctionIdentifier(){if(this.peekDelim("%")){const e=this.create(ze);return e.referenceTypes=[Q.Function],this.consumeToken(),this.finish(e)}return super._parseFunctionIdentifier()}_parseURLArgument(){const e=this.mark(),n=super._parseURLArgument();if(!n||!this.peek(p.ParenthesisR)){this.restoreAtMark(e);const r=this.create(W);return r.addChild(this._parseBinaryExpr()),this.finish(r)}return n}}class an extends ds{constructor(e,n){super("@",e,n)}createFunctionProposals(e,n,r,i){for(const s of e){const a={label:s.name,detail:s.example,documentation:s.description,textEdit:j.replace(this.getCompletionRange(n),s.name+"($0)"),insertTextFormat:Ie.Snippet,kind:q.Function};r&&(a.sortText="z"),i.items.push(a)}return i}getTermProposals(e,n,r){let i=an.builtInProposals;return e&&(i=i.filter(s=>!s.type||!e.restrictions||e.restrictions.indexOf(s.type)!==-1)),this.createFunctionProposals(i,n,!0,r),super.getTermProposals(e,n,r)}getColorProposals(e,n,r){return this.createFunctionProposals(an.colorProposals,n,!1,r),super.getColorProposals(e,n,r)}getCompletionsForDeclarationProperty(e,n){return this.getCompletionsForSelector(null,!0,n),super.getCompletionsForDeclarationProperty(e,n)}}an.builtInProposals=[{name:"if",example:"if(condition, trueValue [, falseValue]);",description:w("returns one of two values depending on a condition.")},{name:"boolean",example:"boolean(condition);",description:w('"store" a boolean test for later evaluation in a guard or if().')},{name:"length",example:"length(@list);",description:w("returns the number of elements in a value list")},{name:"extract",example:"extract(@list, index);",description:w("returns a value at the specified position in the list")},{name:"range",example:"range([start, ] end [, step]);",description:w("generate a list spanning a range of values")},{name:"each",example:"each(@list, ruleset);",description:w("bind the evaluation of a ruleset to each member of a list.")},{name:"escape",example:"escape(@string);",description:w("URL encodes a string")},{name:"e",example:"e(@string);",description:w("escape string content")},{name:"replace",example:"replace(@string, @pattern, @replacement[, @flags]);",description:w("string replace")},{name:"unit",example:"unit(@dimension, [@unit: '']);",description:w("remove or change the unit of a dimension")},{name:"color",example:"color(@string);",description:w("parses a string to a color"),type:"color"},{name:"convert",example:"convert(@value, unit);",description:w("converts numbers from one type into another")},{name:"data-uri",example:"data-uri([mimetype,] url);",description:w("inlines a resource and falls back to `url()`"),type:"url"},{name:"abs",description:w("absolute value of a number"),example:"abs(number);"},{name:"acos",description:w("arccosine - inverse of cosine function"),example:"acos(number);"},{name:"asin",description:w("arcsine - inverse of sine function"),example:"asin(number);"},{name:"ceil",example:"ceil(@number);",description:w("rounds up to an integer")},{name:"cos",description:w("cosine function"),example:"cos(number);"},{name:"floor",description:w("rounds down to an integer"),example:"floor(@number);"},{name:"percentage",description:w("converts to a %, e.g. 0.5 > 50%"),example:"percentage(@number);",type:"percentage"},{name:"round",description:w("rounds a number to a number of places"),example:"round(number, [places: 0]);"},{name:"sqrt",description:w("calculates square root of a number"),example:"sqrt(number);"},{name:"sin",description:w("sine function"),example:"sin(number);"},{name:"tan",description:w("tangent function"),example:"tan(number);"},{name:"atan",description:w("arctangent - inverse of tangent function"),example:"atan(number);"},{name:"pi",description:w("returns pi"),example:"pi();"},{name:"pow",description:w("first argument raised to the power of the second argument"),example:"pow(@base, @exponent);"},{name:"mod",description:w("first argument modulus second argument"),example:"mod(number, number);"},{name:"min",description:w("returns the lowest of one or more values"),example:"min(@x, @y);"},{name:"max",description:w("returns the lowest of one or more values"),example:"max(@x, @y);"}],an.colorProposals=[{name:"argb",example:"argb(@color);",description:w("creates a #AARRGGBB")},{name:"hsl",example:"hsl(@hue, @saturation, @lightness);",description:w("creates a color")},{name:"hsla",example:"hsla(@hue, @saturation, @lightness, @alpha);",description:w("creates a color")},{name:"hsv",example:"hsv(@hue, @saturation, @value);",description:w("creates a color")},{name:"hsva",example:"hsva(@hue, @saturation, @value, @alpha);",description:w("creates a color")},{name:"hue",example:"hue(@color);",description:w("returns the `hue` channel of `@color` in the HSL space")},{name:"saturation",example:"saturation(@color);",description:w("returns the `saturation` channel of `@color` in the HSL space")},{name:"lightness",example:"lightness(@color);",description:w("returns the `lightness` channel of `@color` in the HSL space")},{name:"hsvhue",example:"hsvhue(@color);",description:w("returns the `hue` channel of `@color` in the HSV space")},{name:"hsvsaturation",example:"hsvsaturation(@color);",description:w("returns the `saturation` channel of `@color` in the HSV space")},{name:"hsvvalue",example:"hsvvalue(@color);",description:w("returns the `value` channel of `@color` in the HSV space")},{name:"red",example:"red(@color);",description:w("returns the `red` channel of `@color`")},{name:"green",example:"green(@color);",description:w("returns the `green` channel of `@color`")},{name:"blue",example:"blue(@color);",description:w("returns the `blue` channel of `@color`")},{name:"alpha",example:"alpha(@color);",description:w("returns the `alpha` channel of `@color`")},{name:"luma",example:"luma(@color);",description:w("returns the `luma` value (perceptual brightness) of `@color`")},{name:"saturate",example:"saturate(@color, 10%);",description:w("return `@color` 10% points more saturated")},{name:"desaturate",example:"desaturate(@color, 10%);",description:w("return `@color` 10% points less saturated")},{name:"lighten",example:"lighten(@color, 10%);",description:w("return `@color` 10% points lighter")},{name:"darken",example:"darken(@color, 10%);",description:w("return `@color` 10% points darker")},{name:"fadein",example:"fadein(@color, 10%);",description:w("return `@color` 10% points less transparent")},{name:"fadeout",example:"fadeout(@color, 10%);",description:w("return `@color` 10% points more transparent")},{name:"fade",example:"fade(@color, 50%);",description:w("return `@color` with 50% transparency")},{name:"spin",example:"spin(@color, 10);",description:w("return `@color` with a 10 degree larger in hue")},{name:"mix",example:"mix(@color1, @color2, [@weight: 50%]);",description:w("return a mix of `@color1` and `@color2`")},{name:"greyscale",example:"greyscale(@color);",description:w("returns a grey, 100% desaturated color")},{name:"contrast",example:"contrast(@color1, [@darkcolor: black], [@lightcolor: white], [@threshold: 43%]);",description:w("return `@darkcolor` if `@color1 is> 43% luma` otherwise return `@lightcolor`, see notes")},{name:"multiply",example:"multiply(@color1, @color2);"},{name:"screen",example:"screen(@color1, @color2);"},{name:"overlay",example:"overlay(@color1, @color2);"},{name:"softlight",example:"softlight(@color1, @color2);"},{name:"hardlight",example:"hardlight(@color1, @color2);"},{name:"difference",example:"difference(@color1, @color2);"},{name:"exclusion",example:"exclusion(@color1, @color2);"},{name:"average",example:"average(@color1, @color2);"},{name:"negation",example:"negation(@color1, @color2);"}];function hf(t,e){const n=df(t);return uf(n,e)}function df(t){function e(d){return t.positionAt(d.offset).line}function n(d){return t.positionAt(d.offset+d.len).line}function r(){switch(t.languageId){case"scss":return new Qc;case"less":return new eh;default:return new Nn}}function i(d,u){const m=e(d),f=n(d);return m!==f?{startLine:m,endLine:f,kind:u}:null}const s=[],a=[],o=r();o.ignoreComment=!1,o.setSource(t.getText());let l=o.scan(),c=null;for(;l.type!==p.EOF;){switch(l.type){case p.CurlyL:case Lr:{a.push({line:e(l),type:"brace",isStart:!0});break}case p.CurlyR:{if(a.length!==0){const d=th(a,"brace");if(!d)break;let u=n(l);d.type==="brace"&&(c&&n(c)!==u&&u--,d.line!==u&&s.push({startLine:d.line,endLine:u,kind:void 0}))}break}case p.Comment:{const d=f=>f==="#region"?{line:e(l),type:"comment",isStart:!0}:{line:n(l),type:"comment",isStart:!1},m=(f=>{const g=f.text.match(/^\s*\/\*\s*(#region|#endregion)\b\s*(.*?)\s*\*\//);if(g)return d(g[1]);if(t.languageId==="scss"||t.languageId==="less"){const b=f.text.match(/^\s*\/\/\s*(#region|#endregion)\b\s*(.*?)\s*/);if(b)return d(b[1])}return null})(l);if(m)if(m.isStart)a.push(m);else{const f=th(a,"comment");if(!f)break;f.type==="comment"&&f.line!==m.line&&s.push({startLine:f.line,endLine:m.line,kind:"region"})}else{const f=i(l,"comment");f&&s.push(f)}break}}c=l,l=o.scan()}return s}function th(t,e){if(t.length===0)return null;for(let n=t.length-1;n>=0;n--)if(t[n].type===e&&t[n].isStart)return t.splice(n,1)[0];return null}function uf(t,e){const n=e&&e.rangeLimit||Number.MAX_VALUE,r=t.sort((a,o)=>{let l=a.startLine-o.startLine;return l===0&&(l=a.endLine-o.endLine),l}),i=[];let s=-1;return r.forEach(a=>{a.startLine=0;c--)if(this.__items[c].match(l))return!0;return!1},s.prototype.set_indent=function(l,c){this.is_empty()&&(this.__indent_count=l||0,this.__alignment_count=c||0,this.__character_count=this.__parent.get_indent_size(this.__indent_count,this.__alignment_count))},s.prototype._set_wrap_point=function(){this.__parent.wrap_line_length&&(this.__wrap_point_index=this.__items.length,this.__wrap_point_character_count=this.__character_count,this.__wrap_point_indent_count=this.__parent.next_line.__indent_count,this.__wrap_point_alignment_count=this.__parent.next_line.__alignment_count)},s.prototype._should_wrap=function(){return this.__wrap_point_index&&this.__character_count>this.__parent.wrap_line_length&&this.__wrap_point_character_count>this.__parent.next_line.__character_count},s.prototype._allow_wrap=function(){if(this._should_wrap()){this.__parent.add_new_line();var l=this.__parent.current_line;return l.set_indent(this.__wrap_point_indent_count,this.__wrap_point_alignment_count),l.__items=this.__items.slice(this.__wrap_point_index),this.__items=this.__items.slice(0,this.__wrap_point_index),l.__character_count+=this.__character_count-this.__wrap_point_character_count,this.__character_count=this.__wrap_point_character_count,l.__items[0]===" "&&(l.__items.splice(0,1),l.__character_count-=1),!0}return!1},s.prototype.is_empty=function(){return this.__items.length===0},s.prototype.last=function(){return this.is_empty()?null:this.__items[this.__items.length-1]},s.prototype.push=function(l){this.__items.push(l);var c=l.lastIndexOf(`
+`);c!==-1?this.__character_count=l.length-c:this.__character_count+=l.length},s.prototype.pop=function(){var l=null;return this.is_empty()||(l=this.__items.pop(),this.__character_count-=l.length),l},s.prototype._remove_indent=function(){this.__indent_count>0&&(this.__indent_count-=1,this.__character_count-=this.__parent.indent_size)},s.prototype._remove_wrap_indent=function(){this.__wrap_point_indent_count>0&&(this.__wrap_point_indent_count-=1)},s.prototype.trim=function(){for(;this.last()===" ";)this.__items.pop(),this.__character_count-=1},s.prototype.toString=function(){var l="";return this.is_empty()?this.__parent.indent_empty_lines&&(l=this.__parent.get_indent_string(this.__indent_count)):(l=this.__parent.get_indent_string(this.__indent_count,this.__alignment_count),l+=this.__items.join("")),l};function a(l,c){this.__cache=[""],this.__indent_size=l.indent_size,this.__indent_string=l.indent_char,l.indent_with_tabs||(this.__indent_string=new Array(l.indent_size+1).join(l.indent_char)),c=c||"",l.indent_level>0&&(c=new Array(l.indent_level+1).join(this.__indent_string)),this.__base_string=c,this.__base_string_length=c.length}a.prototype.get_indent_size=function(l,c){var d=this.__base_string_length;return c=c||0,l<0&&(d=0),d+=l*this.__indent_size,d+=c,d},a.prototype.get_indent_string=function(l,c){var d=this.__base_string;return c=c||0,l<0&&(l=0,d=""),c+=l*this.__indent_size,this.__ensure_cache(c),d+=this.__cache[c],d},a.prototype.__ensure_cache=function(l){for(;l>=this.__cache.length;)this.__add_column()},a.prototype.__add_column=function(){var l=this.__cache.length,c=0,d="";this.__indent_size&&l>=this.__indent_size&&(c=Math.floor(l/this.__indent_size),l-=c*this.__indent_size,d=new Array(c+1).join(this.__indent_string)),l&&(d+=new Array(l+1).join(" ")),this.__cache.push(d)};function o(l,c){this.__indent_cache=new a(l,c),this.raw=!1,this._end_with_newline=l.end_with_newline,this.indent_size=l.indent_size,this.wrap_line_length=l.wrap_line_length,this.indent_empty_lines=l.indent_empty_lines,this.__lines=[],this.previous_line=null,this.current_line=null,this.next_line=new s(this),this.space_before_token=!1,this.non_breaking_space=!1,this.previous_token_wrapped=!1,this.__add_outputline()}o.prototype.__add_outputline=function(){this.previous_line=this.current_line,this.current_line=this.next_line.clone_empty(),this.__lines.push(this.current_line)},o.prototype.get_line_number=function(){return this.__lines.length},o.prototype.get_indent_string=function(l,c){return this.__indent_cache.get_indent_string(l,c)},o.prototype.get_indent_size=function(l,c){return this.__indent_cache.get_indent_size(l,c)},o.prototype.is_empty=function(){return!this.previous_line&&this.current_line.is_empty()},o.prototype.add_new_line=function(l){return this.is_empty()||!l&&this.just_added_newline()?!1:(this.raw||this.__add_outputline(),!0)},o.prototype.get_code=function(l){this.trim(!0);var c=this.current_line.pop();c&&(c[c.length-1]===`
+`&&(c=c.replace(/\n+$/g,"")),this.current_line.push(c)),this._end_with_newline&&this.__add_outputline();var d=this.__lines.join(`
+`);return l!==`
+`&&(d=d.replace(/[\n]/g,l)),d},o.prototype.set_wrap_point=function(){this.current_line._set_wrap_point()},o.prototype.set_indent=function(l,c){return l=l||0,c=c||0,this.next_line.set_indent(l,c),this.__lines.length>1?(this.current_line.set_indent(l,c),!0):(this.current_line.set_indent(),!1)},o.prototype.add_raw_token=function(l){for(var c=0;c1&&this.current_line.is_empty();)this.__lines.pop(),this.current_line=this.__lines[this.__lines.length-1],this.current_line.trim();this.previous_line=this.__lines.length>1?this.__lines[this.__lines.length-2]:null},o.prototype.just_added_newline=function(){return this.current_line.is_empty()},o.prototype.just_added_blankline=function(){return this.is_empty()||this.current_line.is_empty()&&this.previous_line.is_empty()},o.prototype.ensure_empty_line_above=function(l,c){for(var d=this.__lines.length-2;d>=0;){var u=this.__lines[d];if(u.is_empty())break;if(u.item(0).indexOf(l)!==0&&u.item(-1)!==c){this.__lines.splice(d+1,0,new s(this)),this.previous_line=this.__lines[this.__lines.length-2];break}d--}},i.exports.Output=o},,,,function(i){function s(l,c){this.raw_options=a(l,c),this.disabled=this._get_boolean("disabled"),this.eol=this._get_characters("eol","auto"),this.end_with_newline=this._get_boolean("end_with_newline"),this.indent_size=this._get_number("indent_size",4),this.indent_char=this._get_characters("indent_char"," "),this.indent_level=this._get_number("indent_level"),this.preserve_newlines=this._get_boolean("preserve_newlines",!0),this.max_preserve_newlines=this._get_number("max_preserve_newlines",32786),this.preserve_newlines||(this.max_preserve_newlines=0),this.indent_with_tabs=this._get_boolean("indent_with_tabs",this.indent_char===" "),this.indent_with_tabs&&(this.indent_char=" ",this.indent_size===1&&(this.indent_size=4)),this.wrap_line_length=this._get_number("wrap_line_length",this._get_number("max_char")),this.indent_empty_lines=this._get_boolean("indent_empty_lines"),this.templating=this._get_selection_list("templating",["auto","none","angular","django","erb","handlebars","php","smarty"],["auto"])}s.prototype._get_array=function(l,c){var d=this.raw_options[l],u=c||[];return typeof d=="object"?d!==null&&typeof d.concat=="function"&&(u=d.concat()):typeof d=="string"&&(u=d.split(/[^a-zA-Z0-9_\/\-]+/)),u},s.prototype._get_boolean=function(l,c){var d=this.raw_options[l],u=d===void 0?!!c:!!d;return u},s.prototype._get_characters=function(l,c){var d=this.raw_options[l],u=c||"";return typeof d=="string"&&(u=d.replace(/\\r/,"\r").replace(/\\n/,`
+`).replace(/\\t/," ")),u},s.prototype._get_number=function(l,c){var d=this.raw_options[l];c=parseInt(c,10),isNaN(c)&&(c=0);var u=parseInt(d,10);return isNaN(u)&&(u=c),u},s.prototype._get_selection=function(l,c,d){var u=this._get_selection_list(l,c,d);if(u.length!==1)throw new Error("Invalid Option Value: The option '"+l+`' can only be one of the following values:
+`+c+`
+You passed in: '`+this.raw_options[l]+"'");return u[0]},s.prototype._get_selection_list=function(l,c,d){if(!c||c.length===0)throw new Error("Selection list cannot be empty.");if(d=d||[c[0]],!this._is_valid_selection(d,c))throw new Error("Invalid Default Value!");var u=this._get_array(l,d);if(!this._is_valid_selection(u,c))throw new Error("Invalid Option Value: The option '"+l+`' can contain only the following values:
+`+c+`
+You passed in: '`+this.raw_options[l]+"'");return u},s.prototype._is_valid_selection=function(l,c){return l.length&&c.length&&!l.some(function(d){return c.indexOf(d)===-1})};function a(l,c){var d={};l=o(l);var u;for(u in l)u!==c&&(d[u]=l[u]);if(c&&l[c])for(u in l[c])d[u]=l[c][u];return d}function o(l){var c={},d;for(d in l){var u=d.replace(/-/g,"_");c[u]=l[d]}return c}i.exports.Options=s,i.exports.normalizeOpts=o,i.exports.mergeOpts=a},,function(i){var s=RegExp.prototype.hasOwnProperty("sticky");function a(o){this.__input=o||"",this.__input_length=this.__input.length,this.__position=0}a.prototype.restart=function(){this.__position=0},a.prototype.back=function(){this.__position>0&&(this.__position-=1)},a.prototype.hasNext=function(){return this.__position=0&&o=0&&l=o.length&&this.__input.substring(l-o.length,l).toLowerCase()===o},i.exports.InputScanner=a},,,,,function(i){function s(a,o){a=typeof a=="string"?a:a.source,o=typeof o=="string"?o:o.source,this.__directives_block_pattern=new RegExp(a+/ beautify( \w+[:]\w+)+ /.source+o,"g"),this.__directive_pattern=/ (\w+)[:](\w+)/g,this.__directives_end_ignore_pattern=new RegExp(a+/\sbeautify\signore:end\s/.source+o,"g")}s.prototype.get_directives=function(a){if(!a.match(this.__directives_block_pattern))return null;var o={};this.__directive_pattern.lastIndex=0;for(var l=this.__directive_pattern.exec(a);l;)o[l[1]]=l[2],l=this.__directive_pattern.exec(a);return o},s.prototype.readIgnored=function(a){return a.readUntilAfter(this.__directives_end_ignore_pattern)},i.exports.Directives=s},,function(i,s,a){var o=a(16).Beautifier,l=a(17).Options;function c(d,u){var m=new o(d,u);return m.beautify()}i.exports=c,i.exports.defaultOptions=function(){return new l}},function(i,s,a){var o=a(17).Options,l=a(2).Output,c=a(8).InputScanner,d=a(13).Directives,u=new d(/\/\*/,/\*\//),m=/\r\n|[\r\n]/,f=/\r\n|[\r\n]/g,g=/\s/,b=/(?:\s|\n)+/g,F=/\/\*(?:[\s\S]*?)((?:\*\/)|$)/g,E=/\/\/(?:[^\n\r\u2028\u2029]*)/g;function I(_,P){this._source_text=_||"",this._options=new o(P),this._ch=null,this._input=null,this.NESTED_AT_RULE={page:!0,"font-face":!0,keyframes:!0,media:!0,supports:!0,document:!0},this.CONDITIONAL_GROUP_RULE={media:!0,supports:!0,document:!0},this.NON_SEMICOLON_NEWLINE_PROPERTY=["grid-template-areas","grid-template"]}I.prototype.eatString=function(_){var P="";for(this._ch=this._input.next();this._ch;){if(P+=this._ch,this._ch==="\\")P+=this._input.next();else if(_.indexOf(this._ch)!==-1||this._ch===`
+`)break;this._ch=this._input.next()}return P},I.prototype.eatWhitespace=function(_){for(var P=g.test(this._input.peek()),O=0;g.test(this._input.peek());)this._ch=this._input.next(),_&&this._ch===`
+`&&(O===0||O0&&this._indentLevel--},I.prototype.beautify=function(){if(this._options.disabled)return this._source_text;var _=this._source_text,P=this._options.eol;P==="auto"&&(P=`
+`,_&&m.test(_||"")&&(P=_.match(m)[0])),_=_.replace(f,`
+`);var O=_.match(/^[\t ]*/)[0];this._output=new l(this._options,O),this._input=new c(_),this._indentLevel=0,this._nestedLevel=0,this._ch=null;for(var V=0,R=!1,N=!1,z=!1,$=!1,L=!1,y=this._ch,k=!1,D,A,M;D=this._input.read(b),A=D!=="",M=y,this._ch=this._input.next(),this._ch==="\\"&&this._input.hasNext()&&(this._ch+=this._input.next()),y=this._ch,this._ch;)if(this._ch==="/"&&this._input.peek()==="*"){this._output.add_new_line(),this._input.back();var T=this._input.read(F),H=u.get_directives(T);H&&H.ignore==="start"&&(T+=u.readIgnored(this._input)),this.print_string(T),this.eatWhitespace(!0),this._output.add_new_line()}else if(this._ch==="/"&&this._input.peek()==="/")this._output.space_before_token=!0,this._input.back(),this.print_string(this._input.read(E)),this.eatWhitespace(!0);else if(this._ch==="$"){this.preserveSingleSpace(A),this.print_string(this._ch);var ee=this._input.peekUntilAfter(/[: ,;{}()[\]\/='"]/g);ee.match(/[ :]$/)&&(ee=this.eatString(": ").replace(/\s+$/,""),this.print_string(ee),this._output.space_before_token=!0),V===0&&ee.indexOf(":")!==-1&&(N=!0,this.indent())}else if(this._ch==="@")if(this.preserveSingleSpace(A),this._input.peek()==="{")this.print_string(this._ch+this.eatString("}"));else{this.print_string(this._ch);var G=this._input.peekUntilAfter(/[: ,;{}()[\]\/='"]/g);G.match(/[ :]$/)&&(G=this.eatString(": ").replace(/\s+$/,""),this.print_string(G),this._output.space_before_token=!0),V===0&&G.indexOf(":")!==-1?(N=!0,this.indent()):G in this.NESTED_AT_RULE?(this._nestedLevel+=1,G in this.CONDITIONAL_GROUP_RULE&&(z=!0)):V===0&&!N&&($=!0)}else if(this._ch==="#"&&this._input.peek()==="{")this.preserveSingleSpace(A),this.print_string(this._ch+this.eatString("}"));else if(this._ch==="{")N&&(N=!1,this.outdent()),$=!1,z?(z=!1,R=this._indentLevel>=this._nestedLevel):R=this._indentLevel>=this._nestedLevel-1,this._options.newline_between_rules&&R&&this._output.previous_line&&this._output.previous_line.item(-1)!=="{"&&this._output.ensure_empty_line_above("/",","),this._output.space_before_token=!0,this._options.brace_style==="expand"?(this._output.add_new_line(),this.print_string(this._ch),this.indent(),this._output.set_indent(this._indentLevel)):(M==="("?this._output.space_before_token=!1:M!==","&&this.indent(),this.print_string(this._ch)),this.eatWhitespace(!0),this._output.add_new_line();else if(this._ch==="}")this.outdent(),this._output.add_new_line(),M==="{"&&this._output.trim(!0),N&&(this.outdent(),N=!1),this.print_string(this._ch),R=!1,this._nestedLevel&&this._nestedLevel--,this.eatWhitespace(!0),this._output.add_new_line(),this._options.newline_between_rules&&!this._output.just_added_blankline()&&this._input.peek()!=="}"&&this._output.add_new_line(!0),this._input.peek()===")"&&(this._output.trim(!0),this._options.brace_style==="expand"&&this._output.add_new_line(!0));else if(this._ch===":"){for(var Se=0;Se"||this._ch==="+"||this._ch==="~")&&!N&&V===0)this._options.space_around_combinator?(this._output.space_before_token=!0,this.print_string(this._ch),this._output.space_before_token=!0):(this.print_string(this._ch),this.eatWhitespace(),this._ch&&g.test(this._ch)&&(this._ch=""));else if(this._ch==="]")this.print_string(this._ch);else if(this._ch==="[")this.preserveSingleSpace(A),this.print_string(this._ch);else if(this._ch==="=")this.eatWhitespace(),this.print_string("="),g.test(this._ch)&&(this._ch="");else if(this._ch==="!"&&!this._input.lookBack("\\"))this._output.space_before_token=!0,this.print_string(this._ch);else{var Ps=M==='"'||M==="'";this.preserveSingleSpace(Ps||A),this.print_string(this._ch),!this._output.just_added_newline()&&this._input.peek()===`
+`&&k&&this._output.add_new_line()}var un=this._output.get_code(P);return un},i.exports.Beautifier=I},function(i,s,a){var o=a(6).Options;function l(c){o.call(this,c,"css"),this.selector_separator_newline=this._get_boolean("selector_separator_newline",!0),this.newline_between_rules=this._get_boolean("newline_between_rules",!0);var d=this._get_boolean("space_around_selector_separator");this.space_around_combinator=this._get_boolean("space_around_combinator")||d;var u=this._get_selection_list("brace_style",["collapse","expand","end-expand","none","preserve-inline"]);this.brace_style="collapse";for(var m=0;m0&&sh(r,u-1);)u--;u===0||ih(r,u-1)?d=u:u0){const d=n.insertSpaces?hl(" ",o*s):hl(" ",s);c=c.split(`
+`).join(`
+`+d),e.start.character===0&&(c=d+c)}return[{range:e,newText:c}]}function rh(t){return t.replace(/^\s+/,"")}const ff=123,gf=125;function bf(t,e){for(;e>=0;){const n=t.charCodeAt(e);if(n===ff)return!0;if(n===gf)return!1;e--}return!1}function ht(t,e,n){if(t&&t.hasOwnProperty(e)){const r=t[e];if(r!==null)return r}return n}function wf(t,e,n){let r=e,i=0;const s=n.tabSize||4;for(;r && ]#",relevance:50,description:"@counter-style descriptor. Specifies the symbols used by the marker-construction algorithm specified by the system descriptor. Needs to be specified if the counter system is 'additive'.",restrictions:["integer","string","image","identifier"]},{name:"align-content",browsers:["E12","FF28","S9","C29","IE11","O16"],values:[{name:"center",description:"Lines are packed toward the center of the flex container."},{name:"flex-end",description:"Lines are packed toward the end of the flex container."},{name:"flex-start",description:"Lines are packed toward the start of the flex container."},{name:"space-around",description:"Lines are evenly distributed in the flex container, with half-size spaces on either end."},{name:"space-between",description:"Lines are evenly distributed in the flex container."},{name:"stretch",description:"Lines stretch to take up the remaining space."},{name:"start"},{name:"end"},{name:"normal"},{name:"baseline"},{name:"first baseline"},{name:"last baseline"},{name:"space-around"},{name:"space-between"},{name:"space-evenly"},{name:"stretch"},{name:"safe"},{name:"unsafe"}],syntax:"normal | | | ? ",relevance:66,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/align-content"}],description:"Aligns a flex container's lines within the flex container when there is extra space in the cross-axis, similar to how 'justify-content' aligns individual items within the main-axis.",restrictions:["enum"]},{name:"align-items",browsers:["E12","FF20","S9","C29","IE11","O16"],values:[{name:"baseline",description:"If the flex item's inline axis is the same as the cross axis, this value is identical to 'flex-start'. Otherwise, it participates in baseline alignment."},{name:"center",description:"The flex item's margin box is centered in the cross axis within the line."},{name:"flex-end",description:"The cross-end margin edge of the flex item is placed flush with the cross-end edge of the line."},{name:"flex-start",description:"The cross-start margin edge of the flex item is placed flush with the cross-start edge of the line."},{name:"stretch",description:"If the cross size property of the flex item computes to auto, and neither of the cross-axis margins are auto, the flex item is stretched."},{name:"normal"},{name:"start"},{name:"end"},{name:"self-start"},{name:"self-end"},{name:"first baseline"},{name:"last baseline"},{name:"stretch"},{name:"safe"},{name:"unsafe"}],syntax:"normal | stretch | | [ ? ]",relevance:87,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/align-items"}],description:"Aligns flex items along the cross axis of the current line of the flex container.",restrictions:["enum"]},{name:"justify-items",browsers:["E12","FF20","S9","C52","IE11","O12.1"],values:[{name:"auto"},{name:"normal"},{name:"end"},{name:"start"},{name:"flex-end",description:'"Flex items are packed toward the end of the line."'},{name:"flex-start",description:'"Flex items are packed toward the start of the line."'},{name:"self-end",description:"The item is packed flush to the edge of the alignment container of the end side of the item, in the appropriate axis."},{name:"self-start",description:"The item is packed flush to the edge of the alignment container of the start side of the item, in the appropriate axis.."},{name:"center",description:"The items are packed flush to each other toward the center of the of the alignment container."},{name:"left"},{name:"right"},{name:"baseline"},{name:"first baseline"},{name:"last baseline"},{name:"stretch",description:"If the cross size property of the flex item computes to auto, and neither of the cross-axis margins are auto, the flex item is stretched."},{name:"safe"},{name:"unsafe"},{name:"legacy"}],syntax:"normal | stretch | | ? [ | left | right ] | legacy | legacy && [ left | right | center ]",relevance:53,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/justify-items"}],description:"Defines the default justify-self for all items of the box, giving them the default way of justifying each box along the appropriate axis",restrictions:["enum"]},{name:"justify-self",browsers:["E16","FF45","S10.1","C57","IE10","O44"],values:[{name:"auto"},{name:"normal"},{name:"end"},{name:"start"},{name:"flex-end",description:'"Flex items are packed toward the end of the line."'},{name:"flex-start",description:'"Flex items are packed toward the start of the line."'},{name:"self-end",description:"The item is packed flush to the edge of the alignment container of the end side of the item, in the appropriate axis."},{name:"self-start",description:"The item is packed flush to the edge of the alignment container of the start side of the item, in the appropriate axis.."},{name:"center",description:"The items are packed flush to each other toward the center of the of the alignment container."},{name:"left"},{name:"right"},{name:"baseline"},{name:"first baseline"},{name:"last baseline"},{name:"stretch",description:"If the cross size property of the flex item computes to auto, and neither of the cross-axis margins are auto, the flex item is stretched."},{name:"save"},{name:"unsave"}],syntax:"auto | normal | stretch | | ? [ | left | right ]",relevance:55,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/justify-self"}],description:"Defines the way of justifying a box inside its container along the appropriate axis.",restrictions:["enum"]},{name:"align-self",browsers:["E12","FF20","S9","C29","IE10","O12.1"],values:[{name:"auto",description:"Computes to the value of 'align-items' on the element's parent, or 'stretch' if the element has no parent. On absolutely positioned elements, it computes to itself."},{name:"normal"},{name:"self-end"},{name:"self-start"},{name:"baseline",description:"If the flex item's inline axis is the same as the cross axis, this value is identical to 'flex-start'. Otherwise, it participates in baseline alignment."},{name:"center",description:"The flex item's margin box is centered in the cross axis within the line."},{name:"flex-end",description:"The cross-end margin edge of the flex item is placed flush with the cross-end edge of the line."},{name:"flex-start",description:"The cross-start margin edge of the flex item is placed flush with the cross-start edge of the line."},{name:"stretch",description:"If the cross size property of the flex item computes to auto, and neither of the cross-axis margins are auto, the flex item is stretched."},{name:"baseline"},{name:"first baseline"},{name:"last baseline"},{name:"safe"},{name:"unsafe"}],syntax:"auto | normal | stretch | | ? ",relevance:73,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/align-self"}],description:"Allows the default alignment along the cross axis to be overridden for individual flex items.",restrictions:["enum"]},{name:"all",browsers:["E79","FF27","S9.1","C37","O24"],values:[],syntax:"initial | inherit | unset | revert | revert-layer",relevance:53,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/all"}],description:"Shorthand that resets all properties except 'direction' and 'unicode-bidi'.",restrictions:["enum"]},{name:"alt",browsers:["S9"],values:[],relevance:50,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/alt"}],description:"Provides alternative text for assistive technology to replace the generated content of a ::before or ::after element.",restrictions:["string","enum"]},{name:"animation",browsers:["E12","FF16","S9","C43","IE10","O30"],values:[{name:"alternate",description:"The animation cycle iterations that are odd counts are played in the normal direction, and the animation cycle iterations that are even counts are played in a reverse direction."},{name:"alternate-reverse",description:"The animation cycle iterations that are odd counts are played in the reverse direction, and the animation cycle iterations that are even counts are played in a normal direction."},{name:"backwards",description:"The beginning property value (as defined in the first @keyframes at-rule) is applied before the animation is displayed, during the period defined by 'animation-delay'."},{name:"both",description:"Both forwards and backwards fill modes are applied."},{name:"forwards",description:"The final property value (as defined in the last @keyframes at-rule) is maintained after the animation completes."},{name:"infinite",description:"Causes the animation to repeat forever."},{name:"none",description:"No animation is performed"},{name:"normal",description:"Normal playback."},{name:"reverse",description:"All iterations of the animation are played in the reverse direction from the way they were specified."}],syntax:"#",relevance:82,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/animation"}],description:"Shorthand property combines six of the animation properties into a single property.",restrictions:["time","timing-function","enum","identifier","number"]},{name:"animation-delay",browsers:["E12","FF16","S9","C43","IE10","O30"],syntax:"#",relevance:66,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/animation-delay"}],description:"Defines when the animation will start.",restrictions:["time"]},{name:"animation-direction",browsers:["E12","FF16","S9","C43","IE10","O30"],values:[{name:"alternate",description:"The animation cycle iterations that are odd counts are played in the normal direction, and the animation cycle iterations that are even counts are played in a reverse direction."},{name:"alternate-reverse",description:"The animation cycle iterations that are odd counts are played in the reverse direction, and the animation cycle iterations that are even counts are played in a normal direction."},{name:"normal",description:"Normal playback."},{name:"reverse",description:"All iterations of the animation are played in the reverse direction from the way they were specified."}],syntax:"#",relevance:58,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/animation-direction"}],description:"Defines whether or not the animation should play in reverse on alternate cycles.",restrictions:["enum"]},{name:"animation-duration",browsers:["E12","FF16","S9","C43","IE10","O30"],syntax:"#",relevance:72,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/animation-duration"}],description:"Defines the length of time that an animation takes to complete one cycle.",restrictions:["time"]},{name:"animation-fill-mode",browsers:["E12","FF16","S9","C43","IE10","O30"],values:[{name:"backwards",description:"The beginning property value (as defined in the first @keyframes at-rule) is applied before the animation is displayed, during the period defined by 'animation-delay'."},{name:"both",description:"Both forwards and backwards fill modes are applied."},{name:"forwards",description:"The final property value (as defined in the last @keyframes at-rule) is maintained after the animation completes."},{name:"none",description:"There is no change to the property value between the time the animation is applied and the time the animation begins playing or after the animation completes."}],syntax:"#",relevance:65,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/animation-fill-mode"}],description:"Defines what values are applied by the animation outside the time it is executing.",restrictions:["enum"]},{name:"animation-iteration-count",browsers:["E12","FF16","S9","C43","IE10","O30"],values:[{name:"infinite",description:"Causes the animation to repeat forever."}],syntax:"#",relevance:64,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/animation-iteration-count"}],description:"Defines the number of times an animation cycle is played. The default value is one, meaning the animation will play from beginning to end once.",restrictions:["number","enum"]},{name:"animation-name",browsers:["E12","FF16","S9","C43","IE10","O30"],values:[{name:"none",description:"No animation is performed"}],syntax:"[ none | ]#",relevance:72,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/animation-name"}],description:"Defines a list of animations that apply. Each name is used to select the keyframe at-rule that provides the property values for the animation.",restrictions:["identifier","enum"]},{name:"animation-play-state",browsers:["E12","FF16","S9","C43","IE10","O30"],values:[{name:"paused",description:"A running animation will be paused."},{name:"running",description:"Resume playback of a paused animation."}],syntax:"#",relevance:55,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/animation-play-state"}],description:"Defines whether the animation is running or paused.",restrictions:["enum"]},{name:"animation-timing-function",browsers:["E12","FF16","S9","C43","IE10","O30"],syntax:"#",relevance:71,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/animation-timing-function"}],description:"Describes how the animation will progress over one cycle of its duration.",restrictions:["timing-function"]},{name:"backface-visibility",browsers:["E12","FF16","S15.4","C36","IE10","O23"],values:[{name:"hidden",description:"Back side is hidden."},{name:"visible",description:"Back side is visible."}],syntax:"visible | hidden",relevance:60,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/backface-visibility"}],description:"Determines whether or not the 'back' side of a transformed element is visible when facing the viewer. With an identity transform, the front side of an element faces the viewer.",restrictions:["enum"]},{name:"background",browsers:["E12","FF1","S1","C1","IE4","O3.5"],values:[{name:"fixed",description:"The background is fixed with regard to the viewport. In paged media where there is no viewport, a 'fixed' background is fixed with respect to the page box and therefore replicated on every page."},{name:"local",description:"The background is fixed with regard to the element's contents: if the element has a scrolling mechanism, the background scrolls with the element's contents."},{name:"none",description:"A value of 'none' counts as an image layer but draws nothing."},{name:"scroll",description:"The background is fixed with regard to the element itself and does not scroll with its contents. (It is effectively attached to the element's border.)"}],syntax:"[ , ]* ",relevance:93,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/background"}],description:"Shorthand property for setting most background properties at the same place in the style sheet.",restrictions:["enum","image","color","position","length","repeat","percentage","box"]},{name:"background-attachment",browsers:["E12","FF1","S1","C1","IE4","O3.5"],values:[{name:"fixed",description:"The background is fixed with regard to the viewport. In paged media where there is no viewport, a 'fixed' background is fixed with respect to the page box and therefore replicated on every page."},{name:"local",browsers:["E12","FF1","S1","C1","IE4","O3.5"],description:"The background is fixed with regard to the element's contents: if the element has a scrolling mechanism, the background scrolls with the element's contents."},{name:"scroll",description:"The background is fixed with regard to the element itself and does not scroll with its contents. (It is effectively attached to the element's border.)"}],syntax:"#",relevance:54,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/background-attachment"}],description:"Specifies whether the background images are fixed with regard to the viewport ('fixed') or scroll along with the element ('scroll') or its contents ('local').",restrictions:["enum"]},{name:"background-blend-mode",browsers:["E79","FF30","S8","C35","O22"],values:[{name:"normal",description:"Default attribute which specifies no blending"},{name:"multiply",description:"The source color is multiplied by the destination color and replaces the destination."},{name:"screen",description:"Multiplies the complements of the backdrop and source color values, then complements the result."},{name:"overlay",description:"Multiplies or screens the colors, depending on the backdrop color value."},{name:"darken",description:"Selects the darker of the backdrop and source colors."},{name:"lighten",description:"Selects the lighter of the backdrop and source colors."},{name:"color-dodge",description:"Brightens the backdrop color to reflect the source color."},{name:"color-burn",description:"Darkens the backdrop color to reflect the source color."},{name:"hard-light",description:"Multiplies or screens the colors, depending on the source color value."},{name:"soft-light",description:"Darkens or lightens the colors, depending on the source color value."},{name:"difference",description:"Subtracts the darker of the two constituent colors from the lighter color.."},{name:"exclusion",description:"Produces an effect similar to that of the Difference mode but lower in contrast."},{name:"hue",browsers:["E79","FF30","S8","C35","O22"],description:"Creates a color with the hue of the source color and the saturation and luminosity of the backdrop color."},{name:"saturation",browsers:["E79","FF30","S8","C35","O22"],description:"Creates a color with the saturation of the source color and the hue and luminosity of the backdrop color."},{name:"color",browsers:["E79","FF30","S8","C35","O22"],description:"Creates a color with the hue and saturation of the source color and the luminosity of the backdrop color."},{name:"luminosity",browsers:["E79","FF30","S8","C35","O22"],description:"Creates a color with the luminosity of the source color and the hue and saturation of the backdrop color."}],syntax:"#",relevance:52,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/background-blend-mode"}],description:"Defines the blending mode of each background layer.",restrictions:["enum"]},{name:"background-clip",browsers:["E12","FF4","S5","C1","IE9","O10.5"],syntax:"#",relevance:69,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/background-clip"}],description:"Determines the background painting area.",restrictions:["box"]},{name:"background-color",browsers:["E12","FF1","S1","C1","IE4","O3.5"],syntax:"",relevance:94,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/background-color"}],description:"Sets the background color of an element.",restrictions:["color"]},{name:"background-image",browsers:["E12","FF1","S1","C1","IE4","O3.5"],values:[{name:"none",description:"Counts as an image layer but draws nothing."}],syntax:"#",relevance:88,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/background-image"}],description:"Sets the background image(s) of an element.",restrictions:["image","enum"]},{name:"background-origin",browsers:["E12","FF4","S3","C1","IE9","O10.5"],syntax:"#",relevance:53,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/background-origin"}],description:"For elements rendered as a single box, specifies the background positioning area. For elements rendered as multiple boxes (e.g., inline boxes on several lines, boxes on several pages) specifies which boxes 'box-decoration-break' operates on to determine the background positioning area(s).",restrictions:["box"]},{name:"background-position",browsers:["E12","FF1","S1","C1","IE4","O3.5"],syntax:"#",relevance:87,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/background-position"}],description:"Specifies the initial position of the background image(s) (after any resizing) within their corresponding background positioning area.",restrictions:["position","length","percentage"]},{name:"background-position-x",browsers:["E12","FF49","S1","C1","IE6","O15"],values:[{name:"center",description:"Equivalent to '50%' ('left 50%') for the horizontal position if the horizontal position is not otherwise specified, or '50%' ('top 50%') for the vertical position if it is."},{name:"left",description:"Equivalent to '0%' for the horizontal position if one or two values are given, otherwise specifies the left edge as the origin for the next offset."},{name:"right",description:"Equivalent to '100%' for the horizontal position if one or two values are given, otherwise specifies the right edge as the origin for the next offset."}],syntax:"[ center | [ [ left | right | x-start | x-end ]? ? ]! ]#",relevance:55,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/background-position-x"}],description:"If background images have been specified, this property specifies their initial position (after any resizing) within their corresponding background positioning area.",restrictions:["length","percentage"]},{name:"background-position-y",browsers:["E12","FF49","S1","C1","IE6","O15"],values:[{name:"bottom",description:"Equivalent to '100%' for the vertical position if one or two values are given, otherwise specifies the bottom edge as the origin for the next offset."},{name:"center",description:"Equivalent to '50%' ('left 50%') for the horizontal position if the horizontal position is not otherwise specified, or '50%' ('top 50%') for the vertical position if it is."},{name:"top",description:"Equivalent to '0%' for the vertical position if one or two values are given, otherwise specifies the top edge as the origin for the next offset."}],syntax:"[ center | [ [ top | bottom | y-start | y-end ]? ? ]! ]#",relevance:53,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/background-position-y"}],description:"If background images have been specified, this property specifies their initial position (after any resizing) within their corresponding background positioning area.",restrictions:["length","percentage"]},{name:"background-repeat",browsers:["E12","FF1","S1","C1","IE4","O3.5"],values:[],syntax:"#",relevance:85,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/background-repeat"}],description:"Specifies how background images are tiled after they have been sized and positioned.",restrictions:["repeat"]},{name:"background-size",browsers:["E12","FF4","S5","C3","IE9","O10"],values:[{name:"auto",description:"Resolved by using the image's intrinsic ratio and the size of the other dimension, or failing that, using the image's intrinsic size, or failing that, treating it as 100%."},{name:"contain",description:"Scale the image, while preserving its intrinsic aspect ratio (if any), to the largest size such that both its width and its height can fit inside the background positioning area."},{name:"cover",description:"Scale the image, while preserving its intrinsic aspect ratio (if any), to the smallest size such that both its width and its height can completely cover the background positioning area."}],syntax:"#",relevance:85,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/background-size"}],description:"Specifies the size of the background images.",restrictions:["length","percentage"]},{name:"behavior",browsers:["IE6"],relevance:50,description:"IE only. Used to extend behaviors of the browser.",restrictions:["url"]},{name:"block-size",browsers:["E79","FF41","S12.1","C57","O44"],values:[{name:"auto",description:"Depends on the values of other properties."}],syntax:"<'width'>",relevance:53,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/block-size"}],description:"Size of an element in the direction opposite that of the direction specified by 'writing-mode'.",restrictions:["length","percentage"]},{name:"border",browsers:["E12","FF1","S1","C1","IE4","O3.5"],syntax:" || || ",relevance:95,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/border"}],description:"Shorthand property for setting border width, style, and color.",restrictions:["length","line-width","line-style","color"]},{name:"border-block-end",browsers:["E79","FF41","S12.1","C69","O56"],syntax:"<'border-top-width'> || <'border-top-style'> || ",relevance:50,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/border-block-end"}],description:"Logical 'border-bottom'. Mapping depends on the parent element's 'writing-mode', 'direction', and 'text-orientation'.",restrictions:["length","line-width","line-style","color"]},{name:"border-block-start",browsers:["E79","FF41","S12.1","C69","O56"],syntax:"<'border-top-width'> || <'border-top-style'> || ",relevance:50,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/border-block-start"}],description:"Logical 'border-top'. Mapping depends on the parent element's 'writing-mode', 'direction', and 'text-orientation'.",restrictions:["length","line-width","line-style","color"]},{name:"border-block-end-color",browsers:["E79","FF41","S12.1","C69","O56"],syntax:"<'border-top-color'>",relevance:50,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/border-block-end-color"}],description:"Logical 'border-bottom-color'. Mapping depends on the parent element's 'writing-mode', 'direction', and 'text-orientation'.",restrictions:["color"]},{name:"border-block-start-color",browsers:["E79","FF41","S12.1","C69","O56"],syntax:"<'border-top-color'>",relevance:50,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/border-block-start-color"}],description:"Logical 'border-top-color'. Mapping depends on the parent element's 'writing-mode', 'direction', and 'text-orientation'.",restrictions:["color"]},{name:"border-block-end-style",browsers:["E79","FF41","S12.1","C69","O56"],syntax:"<'border-top-style'>",relevance:50,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/border-block-end-style"}],description:"Logical 'border-bottom-style'. Mapping depends on the parent element's 'writing-mode', 'direction', and 'text-orientation'.",restrictions:["line-style"]},{name:"border-block-start-style",browsers:["E79","FF41","S12.1","C69","O56"],syntax:"<'border-top-style'>",relevance:50,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/border-block-start-style"}],description:"Logical 'border-top-style'. Mapping depends on the parent element's 'writing-mode', 'direction', and 'text-orientation'.",restrictions:["line-style"]},{name:"border-block-end-width",browsers:["E79","FF41","S12.1","C69","O56"],syntax:"<'border-top-width'>",relevance:50,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/border-block-end-width"}],description:"Logical 'border-bottom-width'. Mapping depends on the parent element's 'writing-mode', 'direction', and 'text-orientation'.",restrictions:["length","line-width"]},{name:"border-block-start-width",browsers:["E79","FF41","S12.1","C69","O56"],syntax:"<'border-top-width'>",relevance:50,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/border-block-start-width"}],description:"Logical 'border-top-width'. Mapping depends on the parent element's 'writing-mode', 'direction', and 'text-orientation'.",restrictions:["length","line-width"]},{name:"border-bottom",browsers:["E12","FF1","S1","C1","IE4","O3.5"],syntax:" || || ",relevance:87,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/border-bottom"}],description:"Shorthand property for setting border width, style and color.",restrictions:["length","line-width","line-style","color"]},{name:"border-bottom-color",browsers:["E12","FF1","S1","C1","IE4","O3.5"],syntax:"<'border-top-color'>",relevance:70,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/border-bottom-color"}],description:"Sets the color of the bottom border.",restrictions:["color"]},{name:"border-bottom-left-radius",browsers:["E12","FF4","S5","C4","IE9","O10.5"],syntax:"{1,2}",relevance:74,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/border-bottom-left-radius"}],description:"Defines the radii of the bottom left outer border edge.",restrictions:["length","percentage"]},{name:"border-bottom-right-radius",browsers:["E12","FF4","S5","C4","IE9","O10.5"],syntax:"{1,2}",relevance:74,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/border-bottom-right-radius"}],description:"Defines the radii of the bottom right outer border edge.",restrictions:["length","percentage"]},{name:"border-bottom-style",browsers:["E12","FF1","S1","C1","IE5.5","O9.2"],syntax:"",relevance:60,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/border-bottom-style"}],description:"Sets the style of the bottom border.",restrictions:["line-style"]},{name:"border-bottom-width",browsers:["E12","FF1","S1","C1","IE4","O3.5"],syntax:"",relevance:65,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/border-bottom-width"}],description:"Sets the thickness of the bottom border.",restrictions:["length","line-width"]},{name:"border-collapse",browsers:["E12","FF1","S1.2","C1","IE5","O4"],values:[{name:"collapse",description:"Selects the collapsing borders model."},{name:"separate",description:"Selects the separated borders border model."}],syntax:"collapse | separate",relevance:71,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/border-collapse"}],description:"Selects a table's border model.",restrictions:["enum"]},{name:"border-color",browsers:["E12","FF1","S1","C1","IE4","O3.5"],values:[],syntax:"{1,4}",relevance:86,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/border-color"}],description:"The color of the border around all four edges of an element.",restrictions:["color"]},{name:"border-image",browsers:["E12","FF15","S6","C16","IE11","O11"],values:[{name:"auto",description:"If 'auto' is specified then the border image width is the intrinsic width or height (whichever is applicable) of the corresponding image slice. If the image does not have the required intrinsic dimension then the corresponding border-width is used instead."},{name:"fill",description:"Causes the middle part of the border-image to be preserved."},{name:"none",description:"Use the border styles."},{name:"repeat",description:"The image is tiled (repeated) to fill the area."},{name:"round",description:"The image is tiled (repeated) to fill the area. If it does not fill the area with a whole number of tiles, the image is rescaled so that it does."},{name:"space",description:"The image is tiled (repeated) to fill the area. If it does not fill the area with a whole number of tiles, the extra space is distributed around the tiles."},{name:"stretch",description:"The image is stretched to fill the area."},{name:"url()"}],syntax:"<'border-image-source'> || <'border-image-slice'> [ / <'border-image-width'> | / <'border-image-width'>? / <'border-image-outset'> ]? || <'border-image-repeat'>",relevance:52,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/border-image"}],description:"Shorthand property for setting 'border-image-source', 'border-image-slice', 'border-image-width', 'border-image-outset' and 'border-image-repeat'. Omitted values are set to their initial values.",restrictions:["length","percentage","number","url","enum"]},{name:"border-image-outset",browsers:["E12","FF15","S6","C15","IE11","O15"],syntax:"[ | ]{1,4}",relevance:50,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/border-image-outset"}],description:"The values specify the amount by which the border image area extends beyond the border box on the top, right, bottom, and left sides respectively. If the fourth value is absent, it is the same as the second. If the third one is also absent, it is the same as the first. If the second one is also absent, it is the same as the first. Numbers represent multiples of the corresponding border-width.",restrictions:["length","number"]},{name:"border-image-repeat",browsers:["E12","FF15","S6","C15","IE11","O15"],values:[{name:"repeat",description:"The image is tiled (repeated) to fill the area."},{name:"round",description:"The image is tiled (repeated) to fill the area. If it does not fill the area with a whole number of tiles, the image is rescaled so that it does."},{name:"space",description:"The image is tiled (repeated) to fill the area. If it does not fill the area with a whole number of tiles, the extra space is distributed around the tiles."},{name:"stretch",description:"The image is stretched to fill the area."}],syntax:"[ stretch | repeat | round | space ]{1,2}",relevance:50,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/border-image-repeat"}],description:"Specifies how the images for the sides and the middle part of the border image are scaled and tiled. If the second keyword is absent, it is assumed to be the same as the first.",restrictions:["enum"]},{name:"border-image-slice",browsers:["E12","FF15","S6","C15","IE11","O15"],values:[{name:"fill",description:"Causes the middle part of the border-image to be preserved."}],syntax:"