diff --git a/.github/actions/setup-js/action.yml b/.github/actions/setup-js/action.yml new file mode 100644 index 0000000..45b2a02 --- /dev/null +++ b/.github/actions/setup-js/action.yml @@ -0,0 +1,28 @@ +name: Setup JS +description: Sets up Node.js and install NPM dependencies + +inputs: + enable-cache: + description: Determines if actions/setup-node will have cache enabled + required: true + type: boolean + +runs: + using: composite + steps: + - name: Setup Node.js (with cache) + if: ${{ inputs.enable-cache }} + uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0 + with: + cache: yarn + node-version: 24 + + - name: Setup Node.js (without cache) + if: ${{ !inputs.enable-cache }} + uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0 + with: + node-version: 24 + + - name: Install NPM dependencies + run: yarn install --immutable + shell: bash diff --git a/.github/workflows/lint-cpp-objc.yaml b/.github/workflows/lint-cpp-objc.yaml index 87e2503..4af3910 100644 --- a/.github/workflows/lint-cpp-objc.yaml +++ b/.github/workflows/lint-cpp-objc.yaml @@ -21,41 +21,26 @@ concurrency: ${{ github.workflow }}-${{ github.ref }} jobs: lint-cpp-objc: name: Lint cpp and objc - runs-on: ubuntu-24.04 + runs-on: ubuntu-latest + strategy: + matrix: + path: + - 'cpp' + - 'encoding-core' + - 'native-tests' steps: - - name: Checkout Repo - uses: actions/checkout@v4 + - name: Checkout + uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd #v6.0.2 with: fetch-depth: 0 - - name: Setup Node.js - uses: actions/setup-node@v4 + - name: Setup JS + uses: ./.github/actions/setup-js with: - cache: 'yarn' - node-version: 20 + enable-cache: true - - name: Install dependencies - run: yarn install --immutable - shell: bash - - # https://dev.to/mayankpareek/introducing-ci-pipeline-for-clang-format-checks-in-faker-cxx-35go - # - name: Cache clang-format dependencies - # uses: actions/cache@v4 - # with: - # path: /tmp/apt-cache - # key: clang-format-${{ runner.os }}-${{ hashFiles('**/apt-packages.txt') }} - # restore-keys: | - # clang-format-${{ runner.os }}- - - # - name: Install clang-format - # run: | - # if [ ! -f /tmp/apt-cache/clang-format-16 ]; then - # sudo apt-get update - # sudo apt-get install -y clang-format-16 - # touch /tmp/apt-cache/clang-format-16 - # fi - - - name: Run clang-format - run: | - yarn lint:cpp - yarn lint:objc + - name: Run ClangFormat + uses: jidicula/clang-format-action@654a770daa28443dd111d133e4083e21c1075674 #v4.18.0 + with: + check-path: ${{ matrix.path }} + exclude-regex: '^encoding-core/base64.hpp$' diff --git a/.github/workflows/lint-js-typecheck.yaml b/.github/workflows/lint-js-typecheck.yaml index 6180635..225d682 100644 --- a/.github/workflows/lint-js-typecheck.yaml +++ b/.github/workflows/lint-js-typecheck.yaml @@ -23,25 +23,22 @@ concurrency: ${{ github.workflow }}-${{ github.ref }} jobs: lint-js-typecheck: name: JS lint and typecheck - runs-on: ubuntu-24.04 + runs-on: ubuntu-latest steps: - - name: Checkout Repo - uses: actions/checkout@v4 + - name: Checkout + uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd #v6.0.2 with: fetch-depth: 0 - - name: Setup Node.js - uses: actions/setup-node@v4 + - name: Setup JS + uses: ./.github/actions/setup-js with: - cache: 'yarn' - node-version: 20 - - - name: Install dependencies - run: yarn install --immutable - shell: bash + enable-cache: true - name: Run ESLint run: yarn lint:js + shell: bash - name: Run TypeScript run: yarn typecheck + shell: bash diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml deleted file mode 100644 index c6cb4be..0000000 --- a/.github/workflows/release.yml +++ /dev/null @@ -1,49 +0,0 @@ -name: Release - -on: - push: - branches: - - main - -permissions: - id-token: write # Required for OIDC - contents: read - -concurrency: ${{ github.workflow }}-${{ github.ref }} - -jobs: - release: - name: Release - runs-on: ubuntu-latest - steps: - - name: Checkout Repo - uses: actions/checkout@v4 - with: - fetch-depth: 0 - - - name: Setup Node.js - uses: actions/setup-node@v4 - with: - node-version: 20 - cache: yarn - - # Ensure npm 11.5.1 or later is installed - - name: Update npm - run: npm install -g npm@latest - shell: bash - - - name: Install Dependencies - run: yarn install --immutable - shell: bash - - # Uncomment when Changesets starts supporting only publish to NPM without pushing changes back to repo - # - name: Create Release Pull Request or Publish to npm - # id: changesets - # uses: changesets/action@v1 - # with: - # version: yarn run version - # commit: "chore: version packages" - # title: "chore: version packages" - # publish: yarn release - # env: - # GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/test-cpp.yaml b/.github/workflows/test-cpp.yaml index 0e5793b..ca29136 100644 --- a/.github/workflows/test-cpp.yaml +++ b/.github/workflows/test-cpp.yaml @@ -19,22 +19,18 @@ concurrency: ${{ github.workflow }}-${{ github.ref }} jobs: test-cpp: name: Run GTest suite - runs-on: ubuntu-24.04 + runs-on: ubuntu-latest steps: - - name: Checkout Repo - uses: actions/checkout@v4 + - name: Checkout + uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd #v6.0.2 with: fetch-depth: 0 - - name: Setup Node.js - uses: actions/setup-node@v4 + - name: Setup JS + uses: ./.github/actions/setup-js with: - cache: 'yarn' - node-version: 20 - - - name: Install dependencies - run: yarn install --immutable - shell: bash + enable-cache: true - name: Run GTest run: yarn test:cpp:prepare + shell: bash diff --git a/.github/workflows/test-js.yaml b/.github/workflows/test-js.yaml index 338d399..6bd5287 100644 --- a/.github/workflows/test-js.yaml +++ b/.github/workflows/test-js.yaml @@ -17,22 +17,18 @@ concurrency: ${{ github.workflow }}-${{ github.ref }} jobs: test-js: name: Run Jest suite - runs-on: ubuntu-24.04 + runs-on: ubuntu-latest steps: - - name: Checkout Repo - uses: actions/checkout@v4 + - name: Checkout + uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd #v6.0.2 with: fetch-depth: 0 - - name: Setup Node.js - uses: actions/setup-node@v4 + - name: Setup JS + uses: ./.github/actions/setup-js with: - cache: 'yarn' - node-version: 20 - - - name: Install dependencies - run: yarn install --immutable - shell: bash + enable-cache: true - name: Run Jest run: yarn test:js + shell: bash diff --git a/.gitignore b/.gitignore index b32efff..0f85cb8 100644 --- a/.gitignore +++ b/.gitignore @@ -9,3 +9,5 @@ node_modules/ build/ lib/ + +.DS_Store diff --git a/PUBLISHING.md b/PUBLISHING.md new file mode 100644 index 0000000..5dd189c --- /dev/null +++ b/PUBLISHING.md @@ -0,0 +1,5 @@ +# How to publish release? + +**Prerequisites:** authenticate via `npm login` + +Run `yarn release` and follow changeset's flow diff --git a/native-tests/ReactNativeEncodingDataset.h b/native-tests/ReactNativeEncodingDataset.h index c1353ce..015d04c 100644 --- a/native-tests/ReactNativeEncodingDataset.h +++ b/native-tests/ReactNativeEncodingDataset.h @@ -24,14 +24,12 @@ static const Dataset set4 = {"Lewis Hamilton", "TGV3aXMgSGFtaWx0b24=", "4c657769 static const Dataset set5 = {"Charles Leclerc", "Q2hhcmxlcyBMZWNsZXJj", "436861726c6573204c65636c657263"}; static const Dataset set6 = {"Randy Orton", "UmFuZHkgT3J0b24=", "52616e6479204f72746f6e"}; static const Dataset set7 = {"CM Punk", "Q00gUHVuaw==", "434d2050756e6b"}; -static const Dataset set8 = { - "Roman Reigns and Bloodline", - "Um9tYW4gUmVpZ25zIGFuZCBCbG9vZGxpbmU=", - "526f6d616e20526569676e7320616e6420426c6f6f646c696e65"}; -static const Dataset set9 = { - "The Visionary Seth Freakin Rollins", - "VGhlIFZpc2lvbmFyeSBTZXRoIEZyZWFraW4gUm9sbGlucw==", - "54686520566973696f6e617279205365746820467265616b696e20526f6c6c696e73"}; +static const Dataset set8 = {"Roman Reigns and Bloodline", + "Um9tYW4gUmVpZ25zIGFuZCBCbG9vZGxpbmU=", + "526f6d616e20526569676e7320616e6420426c6f6f646c696e65"}; +static const Dataset set9 = {"The Visionary Seth Freakin Rollins", + "VGhlIFZpc2lvbmFyeSBTZXRoIEZyZWFraW4gUm9sbGlucw==", + "54686520566973696f6e617279205365746820467265616b696e20526f6c6c696e73"}; static const Dataset set10 = {"Christian Cage", "Q2hyaXN0aWFuIENhZ2U=", "43687269737469616e2043616765"}; static const Dataset set11 = { "IvPDxZYknWd6lVDWrtsagZ8IqmsSxsi23GrUguVhm2d4GGIwzdKP4PcTRFmG1X7Gjbspfz2o3d0ss2MReREYIYc14T8VkrHFcwRCOiyNiWqWizwblpmdmZeokboKOIW0hk6SKrP8z3fJL4tXQrgIsY5P6CN4J6mXx6LnoNMJcKYyWY3QpXPqWRq10BOed4cha8E9Vs8NyKPcPXKblXKghItikkI4dichTjmLG5UP3tBjy4BPxSb2oMRKYJC7Huti48Ocb5lTO8fM4cNNsVDpxOVAHBCGxBV3YnIZHUy1i9HVNlt34nGY40Ia4aI7F4Fi", @@ -45,12 +43,15 @@ static const Dataset set13 = { "lEBYMFDXfOlKVnt1i2Azp2ORrOHqFmK0LsUHWdGFej51PYayOiH99ZhLOehtqkMf6twKMoZXfkgwLKhtzSvdtl9EjoqupO8j2vBJQsgu8zrFT1q9nzofTRZPP3mFVTI62KAv75eKU6UAchSkehsD4r2OweNhhhXLCrI395H5e83iXpxoggBslbUqDzUU5WqfPWMAT9oMrkayHo0hNub6TEMqasDzHVfFu4cExuxorol5qYWPO89RMZKd01811klXMK4pQLplkiVwat2G0IOch2vbmsaLmOm1USakDvg52fGUpyizHUTYrzXSiiXcNPrl", "bEVCWU1GRFhmT2xLVm50MWkyQXpwMk9Sck9IcUZtSzBMc1VIV2RHRmVqNTFQWWF5T2lIOTlaaExPZWh0cWtNZjZ0d0tNb1pYZmtnd0xLaHR6U3ZkdGw5RWpvcXVwTzhqMnZCSlFzZ3U4enJGVDFxOW56b2ZUUlpQUDNtRlZUSTYyS0F2NzVlS1U2VUFjaFNrZWhzRDRyMk93ZU5oaGhYTENySTM5NUg1ZTgzaVhweG9nZ0JzbGJVcUR6VVU1V3FmUFdNQVQ5b01ya2F5SG8waE51YjZURU1xYXNEekhWZkZ1NGNFeHV4b3JvbDVxWVdQTzg5Uk1aS2QwMTgxMWtsWE1LNHBRTHBsa2lWd2F0MkcwSU9jaDJ2Ym1zYUxtT20xVVNha0R2ZzUyZkdVcHlpekhVVFlyelhTaWlYY05Qcmw=", "6c4542594d464458664f6c4b566e74316932417a70324f52724f4871466d4b304c73554857644746656a3531505961794f694839395a684c4f656874716b4d663674774b4d6f5a58666b67774c4b68747a537664746c39456a6f7175704f386a3276424a51736775387a7246543171396e7a6f6654525a5050336d4656544936324b41763735654b553655416368536b656873443472324f77654e686868584c4372493339354835653833695870786f676742736c625571447a55553557716650574d4154396f4d726b6179486f30684e75623654454d716173447a48566646753463457875786f726f6c35715957504f3839524d5a4b6430313831316b6c584d4b3470514c706c6b6956776174324730494f63683276626d73614c6d4f6d315553616b44766735326647557079697a48555459727a5853696958634e50726c"}; -static const Dataset set14 = - {"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed euismod magna at vehicula commodo. Sed in ullamcorper lacus, sed fermentum massa. Praesent ornare nunc ante, vitae sodales diam fermentum eget. Pellentesque sollicitudin augue et elit rutrum dignissim non vitae leo. Duis quis ipsum ullamcorper velit varius eleifend. Suspendisse nec ipsum lacinia, sodales augue vel, pretium ligula. Integer neque lorem, egestas id hendrerit non, volutpat a nisl. Aenean fringilla neque sed posuere mattis. Praesent nulla ipsum, interdum at interdum vitae, aliquam eu massa. Mauris vitae tristique justo. Curabitur ullamcorper id ipsum eget ullamcorper. Praesent malesuada placerat nisi eu pellentesque. Fusce augue odio, cursus sit amet lobortis ac, suscipit vel massa. Pellentesque nec vestibulum quam. In quis orci id diam aliquet ullamcorper. Interdum et malesuada fames ac ante ipsum primis in faucibus. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Etiam mattis molestie lacus. Nunc posuere turpis ullamcorper rutrum bibendum. Nam placerat vulputate ante ac auctor. Etiam vestibulum nisl felis, tristique dictum tellus lobortis et. Aliquam in enim viverra lorem mollis mattis vitae a metus. Donec eget turpis est. Nunc non mi euismod, iaculis quam in, aliquet lectus. Cras vel tempor odio. Vivamus auctor erat vel eros ullamcorper pulvinar. Curabitur et turpis non nibh pellentesque ultrices. Vestibulum ultrices laoreet convallis. Sed vel vestibulum ipsum. Pellentesque sollicitudin, quam in dictum rutrum, massa nulla imperdiet odio, nec egestas lorem dui vel turpis. Donec porttitor erat neque, a consectetur purus dignissim in. Praesent id velit et augue auctor maximus. Curabitur quis mauris in sapien blandit faucibus. Nullam facilisis euismod odio, sed ultrices neque molestie eget. Integer a mollis magna. Suspendisse venenatis mi sed tellus varius, sed pulvinar ipsum porta. Donec quis risus et dolor ultrices vestibulum sit amet fringilla ex. Integer bibendum magna non nisl pharetra tempus. Phasellus tincidunt augue et tellus cursus volutpat. Nam ac vulputate dui. Nunc tincidunt mauris porta dui dapibus, id blandit metus blandit. Fusce in velit ullamcorper, aliquet diam vel, pellentesque ligula. Sed aliquet justo ut dolor sagittis ornare. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Nulla non purus nec massa vehicula euismod non pulvinar dui. Donec vulputate interdum elementum. Curabitur tempor arcu ut ullamcorper placerat. Sed tincidunt elementum neque, a vehicula enim. Praesent interdum massa id lacus condimentum posuere. Vestibulum sem dolor, fringilla quis quam ac, consectetur aliquam lorem. Duis in pretium orci, eget aliquam risus. Praesent accumsan vulputate tortor at rhoncus. Suspendisse vulputate in lacus ut efficitur. Pellentesque lacinia urna id libero aliquet, eu tincidunt tortor elementum. Proin consequat, magna id vehicula laoreet, magna eros mattis sem, id placerat eros arcu quis metus. Curabitur eget neque id nisl tincidunt dictum. Suspendisse potenti. Donec bibendum auctor eros. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed hendrerit massa quis lacus ornare varius. Aliquam aliquam metus sit amet lectus vehicula, id interdum purus imperdiet. Sed non ante tempor, eleifend ex vitae, feugiat libero. Donec diam dolor, faucibus non ipsum id, ultrices lobortis massa. Proin ornare justo a aliquet efficitur. Etiam pellentesque neque et dui malesuada aliquet. Suspendisse potenti. Nam at convallis odio. Aenean placerat massa ac felis ornare, eu eleifend massa volutpat. Quisque eros urna, commodo convallis turpis in, tristique egestas felis. Etiam id vehicula lorem, a mattis enim. Cras metus erat, laoreet sit amet rutrum in, rutrum vitae sem. Nulla facilisi. Morbi accumsan, tellus ac ullamcorper lobortis, velit quam faucibus odio, et imperdiet odio dui ac sapien. Aliquam vulputate, metus ut faucibus tincidunt, odio purus ultricies mi, vitae pretium felis est rutrum justo. Proin convallis tellus dignissim mauris lacinia, et ornare libero feugiat. Integer pretium gravida tellus gravida auctor. Nullam mattis hendrerit commodo. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Interdum et malesuada fames ac ante ipsum primis in faucibus. Praesent porta tellus sit amet egestas aliquam. Cras blandit venenatis vehicula. Nam at eros ac nulla maximus condimentum in at metus. Nunc non eros a sapien blandit molestie. Etiam faucibus nisi lacus, vitae vestibulum turpis scelerisque sit amet. Mauris ullamcorper vel quam sit amet aliquam. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Sed quis magna a purus porttitor bibendum ut eu quam. Quisque sit amet tellus id felis efficitur maximus. Integer vel risus risus. Vivamus eleifend augue id mi sollicitudin, sed pulvinar felis semper.", "TG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQsIGNvbnNlY3RldHVyIGFkaXBpc2NpbmcgZWxpdC4gU2VkIGV1aXNtb2QgbWFnbmEgYXQgdmVoaWN1bGEgY29tbW9kby4gU2VkIGluIHVsbGFtY29ycGVyIGxhY3VzLCBzZWQgZmVybWVudHVtIG1hc3NhLiBQcmFlc2VudCBvcm5hcmUgbnVuYyBhbnRlLCB2aXRhZSBzb2RhbGVzIGRpYW0gZmVybWVudHVtIGVnZXQuIFBlbGxlbnRlc3F1ZSBzb2xsaWNpdHVkaW4gYXVndWUgZXQgZWxpdCBydXRydW0gZGlnbmlzc2ltIG5vbiB2aXRhZSBsZW8uIER1aXMgcXVpcyBpcHN1bSB1bGxhbWNvcnBlciB2ZWxpdCB2YXJpdXMgZWxlaWZlbmQuIFN1c3BlbmRpc3NlIG5lYyBpcHN1bSBsYWNpbmlhLCBzb2RhbGVzIGF1Z3VlIHZlbCwgcHJldGl1bSBsaWd1bGEuIEludGVnZXIgbmVxdWUgbG9yZW0sIGVnZXN0YXMgaWQgaGVuZHJlcml0IG5vbiwgdm9sdXRwYXQgYSBuaXNsLiBBZW5lYW4gZnJpbmdpbGxhIG5lcXVlIHNlZCBwb3N1ZXJlIG1hdHRpcy4gUHJhZXNlbnQgbnVsbGEgaXBzdW0sIGludGVyZHVtIGF0IGludGVyZHVtIHZpdGFlLCBhbGlxdWFtIGV1IG1hc3NhLiBNYXVyaXMgdml0YWUgdHJpc3RpcXVlIGp1c3RvLiBDdXJhYml0dXIgdWxsYW1jb3JwZXIgaWQgaXBzdW0gZWdldCB1bGxhbWNvcnBlci4gUHJhZXNlbnQgbWFsZXN1YWRhIHBsYWNlcmF0IG5pc2kgZXUgcGVsbGVudGVzcXVlLiBGdXNjZSBhdWd1ZSBvZGlvLCBjdXJzdXMgc2l0IGFtZXQgbG9ib3J0aXMgYWMsIHN1c2NpcGl0IHZlbCBtYXNzYS4gUGVsbGVudGVzcXVlIG5lYyB2ZXN0aWJ1bHVtIHF1YW0uIEluIHF1aXMgb3JjaSBpZCBkaWFtIGFsaXF1ZXQgdWxsYW1jb3JwZXIuIEludGVyZHVtIGV0IG1hbGVzdWFkYSBmYW1lcyBhYyBhbnRlIGlwc3VtIHByaW1pcyBpbiBmYXVjaWJ1cy4gTG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQsIGNvbnNlY3RldHVyIGFkaXBpc2NpbmcgZWxpdC4gRXRpYW0gbWF0dGlzIG1vbGVzdGllIGxhY3VzLiBOdW5jIHBvc3VlcmUgdHVycGlzIHVsbGFtY29ycGVyIHJ1dHJ1bSBiaWJlbmR1bS4gTmFtIHBsYWNlcmF0IHZ1bHB1dGF0ZSBhbnRlIGFjIGF1Y3Rvci4gRXRpYW0gdmVzdGlidWx1bSBuaXNsIGZlbGlzLCB0cmlzdGlxdWUgZGljdHVtIHRlbGx1cyBsb2JvcnRpcyBldC4gQWxpcXVhbSBpbiBlbmltIHZpdmVycmEgbG9yZW0gbW9sbGlzIG1hdHRpcyB2aXRhZSBhIG1ldHVzLiBEb25lYyBlZ2V0IHR1cnBpcyBlc3QuIE51bmMgbm9uIG1pIGV1aXNtb2QsIGlhY3VsaXMgcXVhbSBpbiwgYWxpcXVldCBsZWN0dXMuIENyYXMgdmVsIHRlbXBvciBvZGlvLiBWaXZhbXVzIGF1Y3RvciBlcmF0IHZlbCBlcm9zIHVsbGFtY29ycGVyIHB1bHZpbmFyLiBDdXJhYml0dXIgZXQgdHVycGlzIG5vbiBuaWJoIHBlbGxlbnRlc3F1ZSB1bHRyaWNlcy4gVmVzdGlidWx1bSB1bHRyaWNlcyBsYW9yZWV0IGNvbnZhbGxpcy4gU2VkIHZlbCB2ZXN0aWJ1bHVtIGlwc3VtLiBQZWxsZW50ZXNxdWUgc29sbGljaXR1ZGluLCBxdWFtIGluIGRpY3R1bSBydXRydW0sIG1hc3NhIG51bGxhIGltcGVyZGlldCBvZGlvLCBuZWMgZWdlc3RhcyBsb3JlbSBkdWkgdmVsIHR1cnBpcy4gRG9uZWMgcG9ydHRpdG9yIGVyYXQgbmVxdWUsIGEgY29uc2VjdGV0dXIgcHVydXMgZGlnbmlzc2ltIGluLiBQcmFlc2VudCBpZCB2ZWxpdCBldCBhdWd1ZSBhdWN0b3IgbWF4aW11cy4gQ3VyYWJpdHVyIHF1aXMgbWF1cmlzIGluIHNhcGllbiBibGFuZGl0IGZhdWNpYnVzLiBOdWxsYW0gZmFjaWxpc2lzIGV1aXNtb2Qgb2Rpbywgc2VkIHVsdHJpY2VzIG5lcXVlIG1vbGVzdGllIGVnZXQuIEludGVnZXIgYSBtb2xsaXMgbWFnbmEuIFN1c3BlbmRpc3NlIHZlbmVuYXRpcyBtaSBzZWQgdGVsbHVzIHZhcml1cywgc2VkIHB1bHZpbmFyIGlwc3VtIHBvcnRhLiBEb25lYyBxdWlzIHJpc3VzIGV0IGRvbG9yIHVsdHJpY2VzIHZlc3RpYnVsdW0gc2l0IGFtZXQgZnJpbmdpbGxhIGV4LiBJbnRlZ2VyIGJpYmVuZHVtIG1hZ25hIG5vbiBuaXNsIHBoYXJldHJhIHRlbXB1cy4gUGhhc2VsbHVzIHRpbmNpZHVudCBhdWd1ZSBldCB0ZWxsdXMgY3Vyc3VzIHZvbHV0cGF0LiBOYW0gYWMgdnVscHV0YXRlIGR1aS4gTnVuYyB0aW5jaWR1bnQgbWF1cmlzIHBvcnRhIGR1aSBkYXBpYnVzLCBpZCBibGFuZGl0IG1ldHVzIGJsYW5kaXQuIEZ1c2NlIGluIHZlbGl0IHVsbGFtY29ycGVyLCBhbGlxdWV0IGRpYW0gdmVsLCBwZWxsZW50ZXNxdWUgbGlndWxhLiBTZWQgYWxpcXVldCBqdXN0byB1dCBkb2xvciBzYWdpdHRpcyBvcm5hcmUuIFBlbGxlbnRlc3F1ZSBoYWJpdGFudCBtb3JiaSB0cmlzdGlxdWUgc2VuZWN0dXMgZXQgbmV0dXMgZXQgbWFsZXN1YWRhIGZhbWVzIGFjIHR1cnBpcyBlZ2VzdGFzLiBOdWxsYSBub24gcHVydXMgbmVjIG1hc3NhIHZlaGljdWxhIGV1aXNtb2Qgbm9uIHB1bHZpbmFyIGR1aS4gRG9uZWMgdnVscHV0YXRlIGludGVyZHVtIGVsZW1lbnR1bS4gQ3VyYWJpdHVyIHRlbXBvciBhcmN1IHV0IHVsbGFtY29ycGVyIHBsYWNlcmF0LiBTZWQgdGluY2lkdW50IGVsZW1lbnR1bSBuZXF1ZSwgYSB2ZWhpY3VsYSBlbmltLiBQcmFlc2VudCBpbnRlcmR1bSBtYXNzYSBpZCBsYWN1cyBjb25kaW1lbnR1bSBwb3N1ZXJlLiBWZXN0aWJ1bHVtIHNlbSBkb2xvciwgZnJpbmdpbGxhIHF1aXMgcXVhbSBhYywgY29uc2VjdGV0dXIgYWxpcXVhbSBsb3JlbS4gRHVpcyBpbiBwcmV0aXVtIG9yY2ksIGVnZXQgYWxpcXVhbSByaXN1cy4gUHJhZXNlbnQgYWNjdW1zYW4gdnVscHV0YXRlIHRvcnRvciBhdCByaG9uY3VzLiBTdXNwZW5kaXNzZSB2dWxwdXRhdGUgaW4gbGFjdXMgdXQgZWZmaWNpdHVyLiBQZWxsZW50ZXNxdWUgbGFjaW5pYSB1cm5hIGlkIGxpYmVybyBhbGlxdWV0LCBldSB0aW5jaWR1bnQgdG9ydG9yIGVsZW1lbnR1bS4gUHJvaW4gY29uc2VxdWF0LCBtYWduYSBpZCB2ZWhpY3VsYSBsYW9yZWV0LCBtYWduYSBlcm9zIG1hdHRpcyBzZW0sIGlkIHBsYWNlcmF0IGVyb3MgYXJjdSBxdWlzIG1ldHVzLiBDdXJhYml0dXIgZWdldCBuZXF1ZSBpZCBuaXNsIHRpbmNpZHVudCBkaWN0dW0uIFN1c3BlbmRpc3NlIHBvdGVudGkuIERvbmVjIGJpYmVuZHVtIGF1Y3RvciBlcm9zLiBPcmNpIHZhcml1cyBuYXRvcXVlIHBlbmF0aWJ1cyBldCBtYWduaXMgZGlzIHBhcnR1cmllbnQgbW9udGVzLCBuYXNjZXR1ciByaWRpY3VsdXMgbXVzLiBTZWQgaGVuZHJlcml0IG1hc3NhIHF1aXMgbGFjdXMgb3JuYXJlIHZhcml1cy4gQWxpcXVhbSBhbGlxdWFtIG1ldHVzIHNpdCBhbWV0IGxlY3R1cyB2ZWhpY3VsYSwgaWQgaW50ZXJkdW0gcHVydXMgaW1wZXJkaWV0LiBTZWQgbm9uIGFudGUgdGVtcG9yLCBlbGVpZmVuZCBleCB2aXRhZSwgZmV1Z2lhdCBsaWJlcm8uIERvbmVjIGRpYW0gZG9sb3IsIGZhdWNpYnVzIG5vbiBpcHN1bSBpZCwgdWx0cmljZXMgbG9ib3J0aXMgbWFzc2EuIFByb2luIG9ybmFyZSBqdXN0byBhIGFsaXF1ZXQgZWZmaWNpdHVyLiBFdGlhbSBwZWxsZW50ZXNxdWUgbmVxdWUgZXQgZHVpIG1hbGVzdWFkYSBhbGlxdWV0LiBTdXNwZW5kaXNzZSBwb3RlbnRpLiBOYW0gYXQgY29udmFsbGlzIG9kaW8uIEFlbmVhbiBwbGFjZXJhdCBtYXNzYSBhYyBmZWxpcyBvcm5hcmUsIGV1IGVsZWlmZW5kIG1hc3NhIHZvbHV0cGF0LiBRdWlzcXVlIGVyb3MgdXJuYSwgY29tbW9kbyBjb252YWxsaXMgdHVycGlzIGluLCB0cmlzdGlxdWUgZWdlc3RhcyBmZWxpcy4gRXRpYW0gaWQgdmVoaWN1bGEgbG9yZW0sIGEgbWF0dGlzIGVuaW0uIENyYXMgbWV0dXMgZXJhdCwgbGFvcmVldCBzaXQgYW1ldCBydXRydW0gaW4sIHJ1dHJ1bSB2aXRhZSBzZW0uIE51bGxhIGZhY2lsaXNpLiBNb3JiaSBhY2N1bXNhbiwgdGVsbHVzIGFjIHVsbGFtY29ycGVyIGxvYm9ydGlzLCB2ZWxpdCBxdWFtIGZhdWNpYnVzIG9kaW8sIGV0IGltcGVyZGlldCBvZGlvIGR1aSBhYyBzYXBpZW4uIEFsaXF1YW0gdnVscHV0YXRlLCBtZXR1cyB1dCBmYXVjaWJ1cyB0aW5jaWR1bnQsIG9kaW8gcHVydXMgdWx0cmljaWVzIG1pLCB2aXRhZSBwcmV0aXVtIGZlbGlzIGVzdCBydXRydW0ganVzdG8uIFByb2luIGNvbnZhbGxpcyB0ZWxsdXMgZGlnbmlzc2ltIG1hdXJpcyBsYWNpbmlhLCBldCBvcm5hcmUgbGliZXJvIGZldWdpYXQuIEludGVnZXIgcHJldGl1bSBncmF2aWRhIHRlbGx1cyBncmF2aWRhIGF1Y3Rvci4gTnVsbGFtIG1hdHRpcyBoZW5kcmVyaXQgY29tbW9kby4gTG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQsIGNvbnNlY3RldHVyIGFkaXBpc2NpbmcgZWxpdC4gSW50ZXJkdW0gZXQgbWFsZXN1YWRhIGZhbWVzIGFjIGFudGUgaXBzdW0gcHJpbWlzIGluIGZhdWNpYnVzLiBQcmFlc2VudCBwb3J0YSB0ZWxsdXMgc2l0IGFtZXQgZWdlc3RhcyBhbGlxdWFtLiBDcmFzIGJsYW5kaXQgdmVuZW5hdGlzIHZlaGljdWxhLiBOYW0gYXQgZXJvcyBhYyBudWxsYSBtYXhpbXVzIGNvbmRpbWVudHVtIGluIGF0IG1ldHVzLiBOdW5jIG5vbiBlcm9zIGEgc2FwaWVuIGJsYW5kaXQgbW9sZXN0aWUuIEV0aWFtIGZhdWNpYnVzIG5pc2kgbGFjdXMsIHZpdGFlIHZlc3RpYnVsdW0gdHVycGlzIHNjZWxlcmlzcXVlIHNpdCBhbWV0LiBNYXVyaXMgdWxsYW1jb3JwZXIgdmVsIHF1YW0gc2l0IGFtZXQgYWxpcXVhbS4gUGVsbGVudGVzcXVlIGhhYml0YW50IG1vcmJpIHRyaXN0aXF1ZSBzZW5lY3R1cyBldCBuZXR1cyBldCBtYWxlc3VhZGEgZmFtZXMgYWMgdHVycGlzIGVnZXN0YXMuIFNlZCBxdWlzIG1hZ25hIGEgcHVydXMgcG9ydHRpdG9yIGJpYmVuZHVtIHV0IGV1IHF1YW0uIFF1aXNxdWUgc2l0IGFtZXQgdGVsbHVzIGlkIGZlbGlzIGVmZmljaXR1ciBtYXhpbXVzLiBJbnRlZ2VyIHZlbCByaXN1cyByaXN1cy4gVml2YW11cyBlbGVpZmVuZCBhdWd1ZSBpZCBtaSBzb2xsaWNpdHVkaW4sIHNlZCBwdWx2aW5hciBmZWxpcyBzZW1wZXIu", "4c6f72656d20697073756d20646f6c6f722073697420616d65742c20636f6e73656374657475722061646970697363696e6720656c69742e2053656420657569736d6f64206d61676e61206174207665686963756c6120636f6d6d6f646f2e2053656420696e20756c6c616d636f72706572206c616375732c20736564206665726d656e74756d206d617373612e205072616573656e74206f726e617265206e756e6320616e74652c20766974616520736f64616c6573206469616d206665726d656e74756d20656765742e2050656c6c656e74657371756520736f6c6c696369747564696e20617567756520657420656c69742072757472756d206469676e697373696d206e6f6e207669746165206c656f2e2044756973207175697320697073756d20756c6c616d636f727065722076656c69742076617269757320656c656966656e642e2053757370656e6469737365206e656320697073756d206c6163696e69612c20736f64616c65732061756775652076656c2c207072657469756d206c6967756c612e20496e7465676572206e65717565206c6f72656d2c20656765737461732069642068656e647265726974206e6f6e2c20766f6c75747061742061206e69736c2e2041656e65616e206672696e67696c6c61206e657175652073656420706f7375657265206d61747469732e205072616573656e74206e756c6c6120697073756d2c20696e74657264756d20617420696e74657264756d2076697461652c20616c697175616d206575206d617373612e204d617572697320766974616520747269737469717565206a7573746f2e2043757261626974757220756c6c616d636f7270657220696420697073756d206567657420756c6c616d636f727065722e205072616573656e74206d616c65737561646120706c616365726174206e6973692065752070656c6c656e7465737175652e204675736365206175677565206f64696f2c206375727375732073697420616d6574206c6f626f727469732061632c2073757363697069742076656c206d617373612e2050656c6c656e746573717565206e656320766573746962756c756d207175616d2e20496e2071756973206f726369206964206469616d20616c697175657420756c6c616d636f727065722e20496e74657264756d206574206d616c6573756164612066616d657320616320616e746520697073756d207072696d697320696e2066617563696275732e204c6f72656d20697073756d20646f6c6f722073697420616d65742c20636f6e73656374657475722061646970697363696e6720656c69742e20457469616d206d6174746973206d6f6c6573746965206c616375732e204e756e6320706f73756572652074757270697320756c6c616d636f727065722072757472756d20626962656e64756d2e204e616d20706c6163657261742076756c70757461746520616e746520616320617563746f722e20457469616d20766573746962756c756d206e69736c2066656c69732c207472697374697175652064696374756d2074656c6c7573206c6f626f727469732065742e20416c697175616d20696e20656e696d2076697665727261206c6f72656d206d6f6c6c6973206d61747469732076697461652061206d657475732e20446f6e6563206567657420747572706973206573742e204e756e63206e6f6e206d6920657569736d6f642c20696163756c6973207175616d20696e2c20616c6971756574206c65637475732e20437261732076656c2074656d706f72206f64696f2e20566976616d757320617563746f7220657261742076656c2065726f7320756c6c616d636f727065722070756c76696e61722e2043757261626974757220657420747572706973206e6f6e206e6962682070656c6c656e74657371756520756c7472696365732e20566573746962756c756d20756c747269636573206c616f7265657420636f6e76616c6c69732e205365642076656c20766573746962756c756d20697073756d2e2050656c6c656e74657371756520736f6c6c696369747564696e2c207175616d20696e2064696374756d2072757472756d2c206d61737361206e756c6c6120696d70657264696574206f64696f2c206e65632065676573746173206c6f72656d206475692076656c207475727069732e20446f6e656320706f72747469746f722065726174206e657175652c206120636f6e7365637465747572207075727573206469676e697373696d20696e2e205072616573656e742069642076656c697420657420617567756520617563746f72206d6178696d75732e204375726162697475722071756973206d617572697320696e2073617069656e20626c616e6469742066617563696275732e204e756c6c616d20666163696c6973697320657569736d6f64206f64696f2c2073656420756c747269636573206e65717565206d6f6c657374696520656765742e20496e74656765722061206d6f6c6c6973206d61676e612e2053757370656e64697373652076656e656e61746973206d69207365642074656c6c7573207661726975732c207365642070756c76696e617220697073756d20706f7274612e20446f6e6563207175697320726973757320657420646f6c6f7220756c74726963657320766573746962756c756d2073697420616d6574206672696e67696c6c612065782e20496e746567657220626962656e64756d206d61676e61206e6f6e206e69736c2070686172657472612074656d7075732e2050686173656c6c75732074696e636964756e742061756775652065742074656c6c75732063757273757320766f6c75747061742e204e616d2061632076756c707574617465206475692e204e756e632074696e636964756e74206d617572697320706f7274612064756920646170696275732c20696420626c616e646974206d6574757320626c616e6469742e20467573636520696e2076656c697420756c6c616d636f727065722c20616c6971756574206469616d2076656c2c2070656c6c656e746573717565206c6967756c612e2053656420616c6971756574206a7573746f20757420646f6c6f72207361676974746973206f726e6172652e2050656c6c656e746573717565206861626974616e74206d6f726269207472697374697175652073656e6563747573206574206e65747573206574206d616c6573756164612066616d65732061632074757270697320656765737461732e204e756c6c61206e6f6e207075727573206e6563206d61737361207665686963756c6120657569736d6f64206e6f6e2070756c76696e6172206475692e20446f6e65632076756c70757461746520696e74657264756d20656c656d656e74756d2e204375726162697475722074656d706f72206172637520757420756c6c616d636f7270657220706c6163657261742e205365642074696e636964756e7420656c656d656e74756d206e657175652c2061207665686963756c6120656e696d2e205072616573656e7420696e74657264756d206d61737361206964206c6163757320636f6e64696d656e74756d20706f73756572652e20566573746962756c756d2073656d20646f6c6f722c206672696e67696c6c612071756973207175616d2061632c20636f6e736563746574757220616c697175616d206c6f72656d2e204475697320696e207072657469756d206f7263692c206567657420616c697175616d2072697375732e205072616573656e7420616363756d73616e2076756c70757461746520746f72746f722061742072686f6e6375732e2053757370656e64697373652076756c70757461746520696e206c61637573207574206566666963697475722e2050656c6c656e746573717565206c6163696e69612075726e61206964206c696265726f20616c69717565742c2065752074696e636964756e7420746f72746f7220656c656d656e74756d2e2050726f696e20636f6e7365717561742c206d61676e61206964207665686963756c61206c616f726565742c206d61676e612065726f73206d61747469732073656d2c20696420706c6163657261742065726f7320617263752071756973206d657475732e204375726162697475722065676574206e65717565206964206e69736c2074696e636964756e742064696374756d2e2053757370656e646973736520706f74656e74692e20446f6e656320626962656e64756d20617563746f722065726f732e204f72636920766172697573206e61746f7175652070656e617469627573206574206d61676e6973206469732070617274757269656e74206d6f6e7465732c206e61736365747572207269646963756c7573206d75732e205365642068656e647265726974206d617373612071756973206c61637573206f726e617265207661726975732e20416c697175616d20616c697175616d206d657475732073697420616d6574206c6563747573207665686963756c612c20696420696e74657264756d20707572757320696d706572646965742e20536564206e6f6e20616e74652074656d706f722c20656c656966656e642065782076697461652c2066657567696174206c696265726f2e20446f6e6563206469616d20646f6c6f722c206661756369627573206e6f6e20697073756d2069642c20756c747269636573206c6f626f72746973206d617373612e2050726f696e206f726e617265206a7573746f206120616c6971756574206566666963697475722e20457469616d2070656c6c656e746573717565206e6571756520657420647569206d616c65737561646120616c69717565742e2053757370656e646973736520706f74656e74692e204e616d20617420636f6e76616c6c6973206f64696f2e2041656e65616e20706c616365726174206d617373612061632066656c6973206f726e6172652c20657520656c656966656e64206d6173736120766f6c75747061742e20517569737175652065726f732075726e612c20636f6d6d6f646f20636f6e76616c6c69732074757270697320696e2c2074726973746971756520656765737461732066656c69732e20457469616d206964207665686963756c61206c6f72656d2c2061206d617474697320656e696d2e2043726173206d6574757320657261742c206c616f726565742073697420616d65742072757472756d20696e2c2072757472756d2076697461652073656d2e204e756c6c6120666163696c6973692e204d6f72626920616363756d73616e2c2074656c6c757320616320756c6c616d636f72706572206c6f626f727469732c2076656c6974207175616d206661756369627573206f64696f2c20657420696d70657264696574206f64696f206475692061632073617069656e2e20416c697175616d2076756c7075746174652c206d657475732075742066617563696275732074696e636964756e742c206f64696f20707572757320756c74726963696573206d692c207669746165207072657469756d2066656c6973206573742072757472756d206a7573746f2e2050726f696e20636f6e76616c6c69732074656c6c7573206469676e697373696d206d6175726973206c6163696e69612c206574206f726e617265206c696265726f20666575676961742e20496e7465676572207072657469756d20677261766964612074656c6c7573206772617669646120617563746f722e204e756c6c616d206d61747469732068656e64726572697420636f6d6d6f646f2e204c6f72656d20697073756d20646f6c6f722073697420616d65742c20636f6e73656374657475722061646970697363696e6720656c69742e20496e74657264756d206574206d616c6573756164612066616d657320616320616e746520697073756d207072696d697320696e2066617563696275732e205072616573656e7420706f7274612074656c6c75732073697420616d6574206567657374617320616c697175616d2e204372617320626c616e6469742076656e656e61746973207665686963756c612e204e616d2061742065726f73206163206e756c6c61206d6178696d757320636f6e64696d656e74756d20696e206174206d657475732e204e756e63206e6f6e2065726f7320612073617069656e20626c616e646974206d6f6c65737469652e20457469616d206661756369627573206e697369206c616375732c20766974616520766573746962756c756d20747572706973207363656c657269737175652073697420616d65742e204d617572697320756c6c616d636f727065722076656c207175616d2073697420616d657420616c697175616d2e2050656c6c656e746573717565206861626974616e74206d6f726269207472697374697175652073656e6563747573206574206e65747573206574206d616c6573756164612066616d65732061632074757270697320656765737461732e205365642071756973206d61676e61206120707572757320706f72747469746f7220626962656e64756d207574206575207175616d2e20517569737175652073697420616d65742074656c6c75732069642066656c697320656666696369747572206d6178696d75732e20496e74656765722076656c2072697375732072697375732e20566976616d757320656c656966656e64206175677565206964206d6920736f6c6c696369747564696e2c207365642070756c76696e61722066656c69732073656d7065722e"}; -static const Dataset set15 = - {"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed euismod magna at vehicula commodo. Sed in ullamcorper lacus, sed fermentum massa. Praesent ornare nunc ante, vitae sodales diam fermentum eget. Pellentesque sollicitudin augue et elit rutrum dignissim non vitae leo. Duis quis ipsum ullamcorper velit varius eleifend. Suspendisse nec ipsum lacinia, sodales augue vel, pretium ligula. Integer neque lorem, egestas id hendrerit non, volutpat a nisl. Aenean fringilla neque sed posuere mattis. Praesent nulla ipsum, interdum at interdum vitae, aliquam eu massa. Mauris vitae tristique justo. Curabitur ullamcorper id ipsum eget ullamcorper. Praesent malesuada placerat nisi eu pellentesque. Fusce augue odio, cursus sit amet lobortis ac, suscipit vel massa. Pellentesque nec vestibulum quam. In quis orci id diam aliquet ullamcorper. Interdum et malesuada fames ac ante ipsum primis in faucibus. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Etiam mattis molestie lacus. Nunc posuere turpis ullamcorper rutrum bibendum. Nam placerat vulputate ante ac auctor. Etiam vestibulum nisl felis, tristique dictum tellus lobortis et. Aliquam in enim viverra lorem mollis mattis vitae a metus. Donec eget turpis est. Nunc non mi euismod, iaculis quam in, aliquet lectus. Cras vel tempor odio. Vivamus auctor erat vel eros ullamcorper pulvinar. Curabitur et turpis non nibh pellentesque ultrices. Vestibulum ultrices laoreet convallis. Sed vel vestibulum ipsum. Pellentesque sollicitudin, quam in dictum rutrum, massa nulla imperdiet odio, nec egestas lorem dui vel turpis. Donec porttitor erat neque, a consectetur purus dignissim in. Praesent id velit et augue auctor maximus. Curabitur quis mauris in sapien blandit faucibus. Nullam facilisis euismod odio, sed ultrices neque molestie eget. Integer a mollis magna. Suspendisse venenatis mi sed tellus varius, sed pulvinar ipsum porta. Donec quis risus et dolor ultrices vestibulum sit amet fringilla ex. Integer bibendum magna non nisl pharetra tempus. Phasellus tincidunt augue et tellus cursus volutpat. Nam ac vulputate dui. Nunc tincidunt mauris porta dui dapibus, id blandit metus blandit. Fusce in velit ullamcorper, aliquet diam vel, pellentesque ligula. Sed aliquet justo ut dolor sagittis ornare. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Nulla non purus nec massa vehicula euismod non pulvinar dui. Donec vulputate interdum elementum. Curabitur tempor arcu ut ullamcorper placerat. Sed tincidunt elementum neque, a vehicula enim. Praesent interdum massa id lacus condimentum posuere. Vestibulum sem dolor, fringilla quis quam ac, consectetur aliquam lorem. Duis in pretium orci, eget aliquam risus. Praesent accumsan vulputate tortor at rhoncus. Suspendisse vulputate in lacus ut efficitur. Pellentesque lacinia urna id libero aliquet, eu tincidunt tortor elementum. Proin consequat, magna id vehicula laoreet, magna eros mattis sem, id placerat eros arcu quis metus. Curabitur eget neque id nisl tincidunt dictum. Suspendisse potenti. Donec bibendum auctor eros. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed hendrerit massa quis lacus ornare varius. Aliquam aliquam metus sit amet lectus vehicula, id interdum purus imperdiet. Sed non ante tempor, eleifend ex vitae, feugiat libero. Donec diam dolor, faucibus non ipsum id, ultrices lobortis massa. Proin ornare justo a aliquet efficitur. Etiam pellentesque neque et dui malesuada aliquet. Suspendisse potenti. Nam at convallis odio. Aenean placerat massa ac felis ornare, eu eleifend massa volutpat. Quisque eros urna, commodo convallis turpis in, tristique egestas felis. Etiam id vehicula lorem, a mattis enim. Cras metus erat, laoreet sit amet rutrum in, rutrum vitae sem. Nulla facilisi. Morbi accumsan, tellus ac ullamcorper lobortis, velit quam faucibus odio, et imperdiet odio dui ac sapien. Aliquam vulputate, metus ut faucibus tincidunt, odio purus ultricies mi, vitae pretium felis est rutrum justo. Proin convallis tellus dignissim mauris lacinia, et ornare libero feugiat. Integer pretium gravida tellus gravida auctor. Nullam mattis hendrerit commodo. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Interdum et malesuada fames ac ante ipsum primis in faucibus. Praesent porta tellus sit amet egestas aliquam. Cras blandit venenatis vehicula. Nam at eros ac nulla maximus condimentum in at metus. Nunc non eros a sapien blandit molestie. Etiam faucibus nisi lacus, vitae vestibulum turpis scelerisque sit amet. Mauris ullamcorper vel quam sit amet aliquam. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Sed quis magna a purus porttitor bibendum ut eu quam. Quisque sit amet tellus id felis efficitur maximus. Integer vel risus risus. Vivamus eleifend augue id mi sollicitudin, sed pulvinar felis semper", "TG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQsIGNvbnNlY3RldHVyIGFkaXBpc2NpbmcgZWxpdC4gU2VkIGV1aXNtb2QgbWFnbmEgYXQgdmVoaWN1bGEgY29tbW9kby4gU2VkIGluIHVsbGFtY29ycGVyIGxhY3VzLCBzZWQgZmVybWVudHVtIG1hc3NhLiBQcmFlc2VudCBvcm5hcmUgbnVuYyBhbnRlLCB2aXRhZSBzb2RhbGVzIGRpYW0gZmVybWVudHVtIGVnZXQuIFBlbGxlbnRlc3F1ZSBzb2xsaWNpdHVkaW4gYXVndWUgZXQgZWxpdCBydXRydW0gZGlnbmlzc2ltIG5vbiB2aXRhZSBsZW8uIER1aXMgcXVpcyBpcHN1bSB1bGxhbWNvcnBlciB2ZWxpdCB2YXJpdXMgZWxlaWZlbmQuIFN1c3BlbmRpc3NlIG5lYyBpcHN1bSBsYWNpbmlhLCBzb2RhbGVzIGF1Z3VlIHZlbCwgcHJldGl1bSBsaWd1bGEuIEludGVnZXIgbmVxdWUgbG9yZW0sIGVnZXN0YXMgaWQgaGVuZHJlcml0IG5vbiwgdm9sdXRwYXQgYSBuaXNsLiBBZW5lYW4gZnJpbmdpbGxhIG5lcXVlIHNlZCBwb3N1ZXJlIG1hdHRpcy4gUHJhZXNlbnQgbnVsbGEgaXBzdW0sIGludGVyZHVtIGF0IGludGVyZHVtIHZpdGFlLCBhbGlxdWFtIGV1IG1hc3NhLiBNYXVyaXMgdml0YWUgdHJpc3RpcXVlIGp1c3RvLiBDdXJhYml0dXIgdWxsYW1jb3JwZXIgaWQgaXBzdW0gZWdldCB1bGxhbWNvcnBlci4gUHJhZXNlbnQgbWFsZXN1YWRhIHBsYWNlcmF0IG5pc2kgZXUgcGVsbGVudGVzcXVlLiBGdXNjZSBhdWd1ZSBvZGlvLCBjdXJzdXMgc2l0IGFtZXQgbG9ib3J0aXMgYWMsIHN1c2NpcGl0IHZlbCBtYXNzYS4gUGVsbGVudGVzcXVlIG5lYyB2ZXN0aWJ1bHVtIHF1YW0uIEluIHF1aXMgb3JjaSBpZCBkaWFtIGFsaXF1ZXQgdWxsYW1jb3JwZXIuIEludGVyZHVtIGV0IG1hbGVzdWFkYSBmYW1lcyBhYyBhbnRlIGlwc3VtIHByaW1pcyBpbiBmYXVjaWJ1cy4gTG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQsIGNvbnNlY3RldHVyIGFkaXBpc2NpbmcgZWxpdC4gRXRpYW0gbWF0dGlzIG1vbGVzdGllIGxhY3VzLiBOdW5jIHBvc3VlcmUgdHVycGlzIHVsbGFtY29ycGVyIHJ1dHJ1bSBiaWJlbmR1bS4gTmFtIHBsYWNlcmF0IHZ1bHB1dGF0ZSBhbnRlIGFjIGF1Y3Rvci4gRXRpYW0gdmVzdGlidWx1bSBuaXNsIGZlbGlzLCB0cmlzdGlxdWUgZGljdHVtIHRlbGx1cyBsb2JvcnRpcyBldC4gQWxpcXVhbSBpbiBlbmltIHZpdmVycmEgbG9yZW0gbW9sbGlzIG1hdHRpcyB2aXRhZSBhIG1ldHVzLiBEb25lYyBlZ2V0IHR1cnBpcyBlc3QuIE51bmMgbm9uIG1pIGV1aXNtb2QsIGlhY3VsaXMgcXVhbSBpbiwgYWxpcXVldCBsZWN0dXMuIENyYXMgdmVsIHRlbXBvciBvZGlvLiBWaXZhbXVzIGF1Y3RvciBlcmF0IHZlbCBlcm9zIHVsbGFtY29ycGVyIHB1bHZpbmFyLiBDdXJhYml0dXIgZXQgdHVycGlzIG5vbiBuaWJoIHBlbGxlbnRlc3F1ZSB1bHRyaWNlcy4gVmVzdGlidWx1bSB1bHRyaWNlcyBsYW9yZWV0IGNvbnZhbGxpcy4gU2VkIHZlbCB2ZXN0aWJ1bHVtIGlwc3VtLiBQZWxsZW50ZXNxdWUgc29sbGljaXR1ZGluLCBxdWFtIGluIGRpY3R1bSBydXRydW0sIG1hc3NhIG51bGxhIGltcGVyZGlldCBvZGlvLCBuZWMgZWdlc3RhcyBsb3JlbSBkdWkgdmVsIHR1cnBpcy4gRG9uZWMgcG9ydHRpdG9yIGVyYXQgbmVxdWUsIGEgY29uc2VjdGV0dXIgcHVydXMgZGlnbmlzc2ltIGluLiBQcmFlc2VudCBpZCB2ZWxpdCBldCBhdWd1ZSBhdWN0b3IgbWF4aW11cy4gQ3VyYWJpdHVyIHF1aXMgbWF1cmlzIGluIHNhcGllbiBibGFuZGl0IGZhdWNpYnVzLiBOdWxsYW0gZmFjaWxpc2lzIGV1aXNtb2Qgb2Rpbywgc2VkIHVsdHJpY2VzIG5lcXVlIG1vbGVzdGllIGVnZXQuIEludGVnZXIgYSBtb2xsaXMgbWFnbmEuIFN1c3BlbmRpc3NlIHZlbmVuYXRpcyBtaSBzZWQgdGVsbHVzIHZhcml1cywgc2VkIHB1bHZpbmFyIGlwc3VtIHBvcnRhLiBEb25lYyBxdWlzIHJpc3VzIGV0IGRvbG9yIHVsdHJpY2VzIHZlc3RpYnVsdW0gc2l0IGFtZXQgZnJpbmdpbGxhIGV4LiBJbnRlZ2VyIGJpYmVuZHVtIG1hZ25hIG5vbiBuaXNsIHBoYXJldHJhIHRlbXB1cy4gUGhhc2VsbHVzIHRpbmNpZHVudCBhdWd1ZSBldCB0ZWxsdXMgY3Vyc3VzIHZvbHV0cGF0LiBOYW0gYWMgdnVscHV0YXRlIGR1aS4gTnVuYyB0aW5jaWR1bnQgbWF1cmlzIHBvcnRhIGR1aSBkYXBpYnVzLCBpZCBibGFuZGl0IG1ldHVzIGJsYW5kaXQuIEZ1c2NlIGluIHZlbGl0IHVsbGFtY29ycGVyLCBhbGlxdWV0IGRpYW0gdmVsLCBwZWxsZW50ZXNxdWUgbGlndWxhLiBTZWQgYWxpcXVldCBqdXN0byB1dCBkb2xvciBzYWdpdHRpcyBvcm5hcmUuIFBlbGxlbnRlc3F1ZSBoYWJpdGFudCBtb3JiaSB0cmlzdGlxdWUgc2VuZWN0dXMgZXQgbmV0dXMgZXQgbWFsZXN1YWRhIGZhbWVzIGFjIHR1cnBpcyBlZ2VzdGFzLiBOdWxsYSBub24gcHVydXMgbmVjIG1hc3NhIHZlaGljdWxhIGV1aXNtb2Qgbm9uIHB1bHZpbmFyIGR1aS4gRG9uZWMgdnVscHV0YXRlIGludGVyZHVtIGVsZW1lbnR1bS4gQ3VyYWJpdHVyIHRlbXBvciBhcmN1IHV0IHVsbGFtY29ycGVyIHBsYWNlcmF0LiBTZWQgdGluY2lkdW50IGVsZW1lbnR1bSBuZXF1ZSwgYSB2ZWhpY3VsYSBlbmltLiBQcmFlc2VudCBpbnRlcmR1bSBtYXNzYSBpZCBsYWN1cyBjb25kaW1lbnR1bSBwb3N1ZXJlLiBWZXN0aWJ1bHVtIHNlbSBkb2xvciwgZnJpbmdpbGxhIHF1aXMgcXVhbSBhYywgY29uc2VjdGV0dXIgYWxpcXVhbSBsb3JlbS4gRHVpcyBpbiBwcmV0aXVtIG9yY2ksIGVnZXQgYWxpcXVhbSByaXN1cy4gUHJhZXNlbnQgYWNjdW1zYW4gdnVscHV0YXRlIHRvcnRvciBhdCByaG9uY3VzLiBTdXNwZW5kaXNzZSB2dWxwdXRhdGUgaW4gbGFjdXMgdXQgZWZmaWNpdHVyLiBQZWxsZW50ZXNxdWUgbGFjaW5pYSB1cm5hIGlkIGxpYmVybyBhbGlxdWV0LCBldSB0aW5jaWR1bnQgdG9ydG9yIGVsZW1lbnR1bS4gUHJvaW4gY29uc2VxdWF0LCBtYWduYSBpZCB2ZWhpY3VsYSBsYW9yZWV0LCBtYWduYSBlcm9zIG1hdHRpcyBzZW0sIGlkIHBsYWNlcmF0IGVyb3MgYXJjdSBxdWlzIG1ldHVzLiBDdXJhYml0dXIgZWdldCBuZXF1ZSBpZCBuaXNsIHRpbmNpZHVudCBkaWN0dW0uIFN1c3BlbmRpc3NlIHBvdGVudGkuIERvbmVjIGJpYmVuZHVtIGF1Y3RvciBlcm9zLiBPcmNpIHZhcml1cyBuYXRvcXVlIHBlbmF0aWJ1cyBldCBtYWduaXMgZGlzIHBhcnR1cmllbnQgbW9udGVzLCBuYXNjZXR1ciByaWRpY3VsdXMgbXVzLiBTZWQgaGVuZHJlcml0IG1hc3NhIHF1aXMgbGFjdXMgb3JuYXJlIHZhcml1cy4gQWxpcXVhbSBhbGlxdWFtIG1ldHVzIHNpdCBhbWV0IGxlY3R1cyB2ZWhpY3VsYSwgaWQgaW50ZXJkdW0gcHVydXMgaW1wZXJkaWV0LiBTZWQgbm9uIGFudGUgdGVtcG9yLCBlbGVpZmVuZCBleCB2aXRhZSwgZmV1Z2lhdCBsaWJlcm8uIERvbmVjIGRpYW0gZG9sb3IsIGZhdWNpYnVzIG5vbiBpcHN1bSBpZCwgdWx0cmljZXMgbG9ib3J0aXMgbWFzc2EuIFByb2luIG9ybmFyZSBqdXN0byBhIGFsaXF1ZXQgZWZmaWNpdHVyLiBFdGlhbSBwZWxsZW50ZXNxdWUgbmVxdWUgZXQgZHVpIG1hbGVzdWFkYSBhbGlxdWV0LiBTdXNwZW5kaXNzZSBwb3RlbnRpLiBOYW0gYXQgY29udmFsbGlzIG9kaW8uIEFlbmVhbiBwbGFjZXJhdCBtYXNzYSBhYyBmZWxpcyBvcm5hcmUsIGV1IGVsZWlmZW5kIG1hc3NhIHZvbHV0cGF0LiBRdWlzcXVlIGVyb3MgdXJuYSwgY29tbW9kbyBjb252YWxsaXMgdHVycGlzIGluLCB0cmlzdGlxdWUgZWdlc3RhcyBmZWxpcy4gRXRpYW0gaWQgdmVoaWN1bGEgbG9yZW0sIGEgbWF0dGlzIGVuaW0uIENyYXMgbWV0dXMgZXJhdCwgbGFvcmVldCBzaXQgYW1ldCBydXRydW0gaW4sIHJ1dHJ1bSB2aXRhZSBzZW0uIE51bGxhIGZhY2lsaXNpLiBNb3JiaSBhY2N1bXNhbiwgdGVsbHVzIGFjIHVsbGFtY29ycGVyIGxvYm9ydGlzLCB2ZWxpdCBxdWFtIGZhdWNpYnVzIG9kaW8sIGV0IGltcGVyZGlldCBvZGlvIGR1aSBhYyBzYXBpZW4uIEFsaXF1YW0gdnVscHV0YXRlLCBtZXR1cyB1dCBmYXVjaWJ1cyB0aW5jaWR1bnQsIG9kaW8gcHVydXMgdWx0cmljaWVzIG1pLCB2aXRhZSBwcmV0aXVtIGZlbGlzIGVzdCBydXRydW0ganVzdG8uIFByb2luIGNvbnZhbGxpcyB0ZWxsdXMgZGlnbmlzc2ltIG1hdXJpcyBsYWNpbmlhLCBldCBvcm5hcmUgbGliZXJvIGZldWdpYXQuIEludGVnZXIgcHJldGl1bSBncmF2aWRhIHRlbGx1cyBncmF2aWRhIGF1Y3Rvci4gTnVsbGFtIG1hdHRpcyBoZW5kcmVyaXQgY29tbW9kby4gTG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQsIGNvbnNlY3RldHVyIGFkaXBpc2NpbmcgZWxpdC4gSW50ZXJkdW0gZXQgbWFsZXN1YWRhIGZhbWVzIGFjIGFudGUgaXBzdW0gcHJpbWlzIGluIGZhdWNpYnVzLiBQcmFlc2VudCBwb3J0YSB0ZWxsdXMgc2l0IGFtZXQgZWdlc3RhcyBhbGlxdWFtLiBDcmFzIGJsYW5kaXQgdmVuZW5hdGlzIHZlaGljdWxhLiBOYW0gYXQgZXJvcyBhYyBudWxsYSBtYXhpbXVzIGNvbmRpbWVudHVtIGluIGF0IG1ldHVzLiBOdW5jIG5vbiBlcm9zIGEgc2FwaWVuIGJsYW5kaXQgbW9sZXN0aWUuIEV0aWFtIGZhdWNpYnVzIG5pc2kgbGFjdXMsIHZpdGFlIHZlc3RpYnVsdW0gdHVycGlzIHNjZWxlcmlzcXVlIHNpdCBhbWV0LiBNYXVyaXMgdWxsYW1jb3JwZXIgdmVsIHF1YW0gc2l0IGFtZXQgYWxpcXVhbS4gUGVsbGVudGVzcXVlIGhhYml0YW50IG1vcmJpIHRyaXN0aXF1ZSBzZW5lY3R1cyBldCBuZXR1cyBldCBtYWxlc3VhZGEgZmFtZXMgYWMgdHVycGlzIGVnZXN0YXMuIFNlZCBxdWlzIG1hZ25hIGEgcHVydXMgcG9ydHRpdG9yIGJpYmVuZHVtIHV0IGV1IHF1YW0uIFF1aXNxdWUgc2l0IGFtZXQgdGVsbHVzIGlkIGZlbGlzIGVmZmljaXR1ciBtYXhpbXVzLiBJbnRlZ2VyIHZlbCByaXN1cyByaXN1cy4gVml2YW11cyBlbGVpZmVuZCBhdWd1ZSBpZCBtaSBzb2xsaWNpdHVkaW4sIHNlZCBwdWx2aW5hciBmZWxpcyBzZW1wZXI=", "4c6f72656d20697073756d20646f6c6f722073697420616d65742c20636f6e73656374657475722061646970697363696e6720656c69742e2053656420657569736d6f64206d61676e61206174207665686963756c6120636f6d6d6f646f2e2053656420696e20756c6c616d636f72706572206c616375732c20736564206665726d656e74756d206d617373612e205072616573656e74206f726e617265206e756e6320616e74652c20766974616520736f64616c6573206469616d206665726d656e74756d20656765742e2050656c6c656e74657371756520736f6c6c696369747564696e20617567756520657420656c69742072757472756d206469676e697373696d206e6f6e207669746165206c656f2e2044756973207175697320697073756d20756c6c616d636f727065722076656c69742076617269757320656c656966656e642e2053757370656e6469737365206e656320697073756d206c6163696e69612c20736f64616c65732061756775652076656c2c207072657469756d206c6967756c612e20496e7465676572206e65717565206c6f72656d2c20656765737461732069642068656e647265726974206e6f6e2c20766f6c75747061742061206e69736c2e2041656e65616e206672696e67696c6c61206e657175652073656420706f7375657265206d61747469732e205072616573656e74206e756c6c6120697073756d2c20696e74657264756d20617420696e74657264756d2076697461652c20616c697175616d206575206d617373612e204d617572697320766974616520747269737469717565206a7573746f2e2043757261626974757220756c6c616d636f7270657220696420697073756d206567657420756c6c616d636f727065722e205072616573656e74206d616c65737561646120706c616365726174206e6973692065752070656c6c656e7465737175652e204675736365206175677565206f64696f2c206375727375732073697420616d6574206c6f626f727469732061632c2073757363697069742076656c206d617373612e2050656c6c656e746573717565206e656320766573746962756c756d207175616d2e20496e2071756973206f726369206964206469616d20616c697175657420756c6c616d636f727065722e20496e74657264756d206574206d616c6573756164612066616d657320616320616e746520697073756d207072696d697320696e2066617563696275732e204c6f72656d20697073756d20646f6c6f722073697420616d65742c20636f6e73656374657475722061646970697363696e6720656c69742e20457469616d206d6174746973206d6f6c6573746965206c616375732e204e756e6320706f73756572652074757270697320756c6c616d636f727065722072757472756d20626962656e64756d2e204e616d20706c6163657261742076756c70757461746520616e746520616320617563746f722e20457469616d20766573746962756c756d206e69736c2066656c69732c207472697374697175652064696374756d2074656c6c7573206c6f626f727469732065742e20416c697175616d20696e20656e696d2076697665727261206c6f72656d206d6f6c6c6973206d61747469732076697461652061206d657475732e20446f6e6563206567657420747572706973206573742e204e756e63206e6f6e206d6920657569736d6f642c20696163756c6973207175616d20696e2c20616c6971756574206c65637475732e20437261732076656c2074656d706f72206f64696f2e20566976616d757320617563746f7220657261742076656c2065726f7320756c6c616d636f727065722070756c76696e61722e2043757261626974757220657420747572706973206e6f6e206e6962682070656c6c656e74657371756520756c7472696365732e20566573746962756c756d20756c747269636573206c616f7265657420636f6e76616c6c69732e205365642076656c20766573746962756c756d20697073756d2e2050656c6c656e74657371756520736f6c6c696369747564696e2c207175616d20696e2064696374756d2072757472756d2c206d61737361206e756c6c6120696d70657264696574206f64696f2c206e65632065676573746173206c6f72656d206475692076656c207475727069732e20446f6e656320706f72747469746f722065726174206e657175652c206120636f6e7365637465747572207075727573206469676e697373696d20696e2e205072616573656e742069642076656c697420657420617567756520617563746f72206d6178696d75732e204375726162697475722071756973206d617572697320696e2073617069656e20626c616e6469742066617563696275732e204e756c6c616d20666163696c6973697320657569736d6f64206f64696f2c2073656420756c747269636573206e65717565206d6f6c657374696520656765742e20496e74656765722061206d6f6c6c6973206d61676e612e2053757370656e64697373652076656e656e61746973206d69207365642074656c6c7573207661726975732c207365642070756c76696e617220697073756d20706f7274612e20446f6e6563207175697320726973757320657420646f6c6f7220756c74726963657320766573746962756c756d2073697420616d6574206672696e67696c6c612065782e20496e746567657220626962656e64756d206d61676e61206e6f6e206e69736c2070686172657472612074656d7075732e2050686173656c6c75732074696e636964756e742061756775652065742074656c6c75732063757273757320766f6c75747061742e204e616d2061632076756c707574617465206475692e204e756e632074696e636964756e74206d617572697320706f7274612064756920646170696275732c20696420626c616e646974206d6574757320626c616e6469742e20467573636520696e2076656c697420756c6c616d636f727065722c20616c6971756574206469616d2076656c2c2070656c6c656e746573717565206c6967756c612e2053656420616c6971756574206a7573746f20757420646f6c6f72207361676974746973206f726e6172652e2050656c6c656e746573717565206861626974616e74206d6f726269207472697374697175652073656e6563747573206574206e65747573206574206d616c6573756164612066616d65732061632074757270697320656765737461732e204e756c6c61206e6f6e207075727573206e6563206d61737361207665686963756c6120657569736d6f64206e6f6e2070756c76696e6172206475692e20446f6e65632076756c70757461746520696e74657264756d20656c656d656e74756d2e204375726162697475722074656d706f72206172637520757420756c6c616d636f7270657220706c6163657261742e205365642074696e636964756e7420656c656d656e74756d206e657175652c2061207665686963756c6120656e696d2e205072616573656e7420696e74657264756d206d61737361206964206c6163757320636f6e64696d656e74756d20706f73756572652e20566573746962756c756d2073656d20646f6c6f722c206672696e67696c6c612071756973207175616d2061632c20636f6e736563746574757220616c697175616d206c6f72656d2e204475697320696e207072657469756d206f7263692c206567657420616c697175616d2072697375732e205072616573656e7420616363756d73616e2076756c70757461746520746f72746f722061742072686f6e6375732e2053757370656e64697373652076756c70757461746520696e206c61637573207574206566666963697475722e2050656c6c656e746573717565206c6163696e69612075726e61206964206c696265726f20616c69717565742c2065752074696e636964756e7420746f72746f7220656c656d656e74756d2e2050726f696e20636f6e7365717561742c206d61676e61206964207665686963756c61206c616f726565742c206d61676e612065726f73206d61747469732073656d2c20696420706c6163657261742065726f7320617263752071756973206d657475732e204375726162697475722065676574206e65717565206964206e69736c2074696e636964756e742064696374756d2e2053757370656e646973736520706f74656e74692e20446f6e656320626962656e64756d20617563746f722065726f732e204f72636920766172697573206e61746f7175652070656e617469627573206574206d61676e6973206469732070617274757269656e74206d6f6e7465732c206e61736365747572207269646963756c7573206d75732e205365642068656e647265726974206d617373612071756973206c61637573206f726e617265207661726975732e20416c697175616d20616c697175616d206d657475732073697420616d6574206c6563747573207665686963756c612c20696420696e74657264756d20707572757320696d706572646965742e20536564206e6f6e20616e74652074656d706f722c20656c656966656e642065782076697461652c2066657567696174206c696265726f2e20446f6e6563206469616d20646f6c6f722c206661756369627573206e6f6e20697073756d2069642c20756c747269636573206c6f626f72746973206d617373612e2050726f696e206f726e617265206a7573746f206120616c6971756574206566666963697475722e20457469616d2070656c6c656e746573717565206e6571756520657420647569206d616c65737561646120616c69717565742e2053757370656e646973736520706f74656e74692e204e616d20617420636f6e76616c6c6973206f64696f2e2041656e65616e20706c616365726174206d617373612061632066656c6973206f726e6172652c20657520656c656966656e64206d6173736120766f6c75747061742e20517569737175652065726f732075726e612c20636f6d6d6f646f20636f6e76616c6c69732074757270697320696e2c2074726973746971756520656765737461732066656c69732e20457469616d206964207665686963756c61206c6f72656d2c2061206d617474697320656e696d2e2043726173206d6574757320657261742c206c616f726565742073697420616d65742072757472756d20696e2c2072757472756d2076697461652073656d2e204e756c6c6120666163696c6973692e204d6f72626920616363756d73616e2c2074656c6c757320616320756c6c616d636f72706572206c6f626f727469732c2076656c6974207175616d206661756369627573206f64696f2c20657420696d70657264696574206f64696f206475692061632073617069656e2e20416c697175616d2076756c7075746174652c206d657475732075742066617563696275732074696e636964756e742c206f64696f20707572757320756c74726963696573206d692c207669746165207072657469756d2066656c6973206573742072757472756d206a7573746f2e2050726f696e20636f6e76616c6c69732074656c6c7573206469676e697373696d206d6175726973206c6163696e69612c206574206f726e617265206c696265726f20666575676961742e20496e7465676572207072657469756d20677261766964612074656c6c7573206772617669646120617563746f722e204e756c6c616d206d61747469732068656e64726572697420636f6d6d6f646f2e204c6f72656d20697073756d20646f6c6f722073697420616d65742c20636f6e73656374657475722061646970697363696e6720656c69742e20496e74657264756d206574206d616c6573756164612066616d657320616320616e746520697073756d207072696d697320696e2066617563696275732e205072616573656e7420706f7274612074656c6c75732073697420616d6574206567657374617320616c697175616d2e204372617320626c616e6469742076656e656e61746973207665686963756c612e204e616d2061742065726f73206163206e756c6c61206d6178696d757320636f6e64696d656e74756d20696e206174206d657475732e204e756e63206e6f6e2065726f7320612073617069656e20626c616e646974206d6f6c65737469652e20457469616d206661756369627573206e697369206c616375732c20766974616520766573746962756c756d20747572706973207363656c657269737175652073697420616d65742e204d617572697320756c6c616d636f727065722076656c207175616d2073697420616d657420616c697175616d2e2050656c6c656e746573717565206861626974616e74206d6f726269207472697374697175652073656e6563747573206574206e65747573206574206d616c6573756164612066616d65732061632074757270697320656765737461732e205365642071756973206d61676e61206120707572757320706f72747469746f7220626962656e64756d207574206575207175616d2e20517569737175652073697420616d65742074656c6c75732069642066656c697320656666696369747572206d6178696d75732e20496e74656765722076656c2072697375732072697375732e20566976616d757320656c656966656e64206175677565206964206d6920736f6c6c696369747564696e2c207365642070756c76696e61722066656c69732073656d706572"}; -static const Dataset set16 = - {"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed euismod magna at vehicula commodo. Sed in ullamcorper lacus, sed fermentum massa. Praesent ornare nunc ante, vitae sodales diam fermentum eget. Pellentesque sollicitudin augue et elit rutrum dignissim non vitae leo. Duis quis ipsum ullamcorper velit varius eleifend. Suspendisse nec ipsum lacinia, sodales augue vel, pretium ligula. Integer neque lorem, egestas id hendrerit non, volutpat a nisl. Aenean fringilla neque sed posuere mattis. Praesent nulla ipsum, interdum at interdum vitae, aliquam eu massa. Mauris vitae tristique justo. Curabitur ullamcorper id ipsum eget ullamcorper. Praesent malesuada placerat nisi eu pellentesque. Fusce augue odio, cursus sit amet lobortis ac, suscipit vel massa. Pellentesque nec vestibulum quam. In quis orci id diam aliquet ullamcorper. Interdum et malesuada fames ac ante ipsum primis in faucibus. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Etiam mattis molestie lacus. Nunc posuere turpis ullamcorper rutrum bibendum. Nam placerat vulputate ante ac auctor. Etiam vestibulum nisl felis, tristique dictum tellus lobortis et. Aliquam in enim viverra lorem mollis mattis vitae a metus. Donec eget turpis est. Nunc non mi euismod, iaculis quam in, aliquet lectus. Cras vel tempor odio. Vivamus auctor erat vel eros ullamcorper pulvinar. Curabitur et turpis non nibh pellentesque ultrices. Vestibulum ultrices laoreet convallis. Sed vel vestibulum ipsum. Pellentesque sollicitudin, quam in dictum rutrum, massa nulla imperdiet odio, nec egestas lorem dui vel turpis. Donec porttitor erat neque, a consectetur purus dignissim in. Praesent id velit et augue auctor maximus. Curabitur quis mauris in sapien blandit faucibus. Nullam facilisis euismod odio, sed ultrices neque molestie eget. Integer a mollis magna. Suspendisse venenatis mi sed tellus varius, sed pulvinar ipsum porta. Donec quis risus et dolor ultrices vestibulum sit amet fringilla ex. Integer bibendum magna non nisl pharetra tempus. Phasellus tincidunt augue et tellus cursus volutpat. Nam ac vulputate dui. Nunc tincidunt mauris porta dui dapibus, id blandit metus blandit. Fusce in velit ullamcorper, aliquet diam vel, pellentesque ligula. Sed aliquet justo ut dolor sagittis ornare. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Nulla non purus nec massa vehicula euismod non pulvinar dui. Donec vulputate interdum elementum. Curabitur tempor arcu ut ullamcorper placerat. Sed tincidunt elementum neque, a vehicula enim. Praesent interdum massa id lacus condimentum posuere. Vestibulum sem dolor, fringilla quis quam ac, consectetur aliquam lorem. Duis in pretium orci, eget aliquam risus. Praesent accumsan vulputate tortor at rhoncus. Suspendisse vulputate in lacus ut efficitur. Pellentesque lacinia urna id libero aliquet, eu tincidunt tortor elementum. Proin consequat, magna id vehicula laoreet, magna eros mattis sem, id placerat eros arcu quis metus. Curabitur eget neque id nisl tincidunt dictum. Suspendisse potenti. Donec bibendum auctor eros. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed hendrerit massa quis lacus ornare varius. Aliquam aliquam metus sit amet lectus vehicula, id interdum purus imperdiet. Sed non ante tempor, eleifend ex vitae, feugiat libero. Donec diam dolor, faucibus non ipsum id, ultrices lobortis massa. Proin ornare justo a aliquet efficitur. Etiam pellentesque neque et dui malesuada aliquet. Suspendisse potenti. Nam at convallis odio. Aenean placerat massa ac felis ornare, eu eleifend massa volutpat. Quisque eros urna, commodo convallis turpis in, tristique egestas felis. Etiam id vehicula lorem, a mattis enim. Cras metus erat, laoreet sit amet rutrum in, rutrum vitae sem. Nulla facilisi. Morbi accumsan, tellus ac ullamcorper lobortis, velit quam faucibus odio, et imperdiet odio dui ac sapien. Aliquam vulputate, metus ut faucibus tincidunt, odio purus ultricies mi, vitae pretium felis est rutrum justo. Proin convallis tellus dignissim mauris lacinia, et ornare libero feugiat. Integer pretium gravida tellus gravida auctor. Nullam mattis hendrerit commodo. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Interdum et malesuada fames ac ante ipsum primis in faucibus. Praesent porta tellus sit amet egestas aliquam. Cras blandit venenatis vehicula. Nam at eros ac nulla maximus condimentum in at metus. Nunc non eros a sapien blandit molestie. Etiam faucibus nisi lacus, vitae vestibulum turpis scelerisque sit amet. Mauris ullamcorper vel quam sit amet aliquam. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Sed quis magna a purus porttitor bibendum ut eu quam. Quisque sit amet tellus id felis efficitur maximus. Integer vel risus risus. Vivamus eleifend augue id mi sollicitudin, sed pulvinar felis sempe", "TG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQsIGNvbnNlY3RldHVyIGFkaXBpc2NpbmcgZWxpdC4gU2VkIGV1aXNtb2QgbWFnbmEgYXQgdmVoaWN1bGEgY29tbW9kby4gU2VkIGluIHVsbGFtY29ycGVyIGxhY3VzLCBzZWQgZmVybWVudHVtIG1hc3NhLiBQcmFlc2VudCBvcm5hcmUgbnVuYyBhbnRlLCB2aXRhZSBzb2RhbGVzIGRpYW0gZmVybWVudHVtIGVnZXQuIFBlbGxlbnRlc3F1ZSBzb2xsaWNpdHVkaW4gYXVndWUgZXQgZWxpdCBydXRydW0gZGlnbmlzc2ltIG5vbiB2aXRhZSBsZW8uIER1aXMgcXVpcyBpcHN1bSB1bGxhbWNvcnBlciB2ZWxpdCB2YXJpdXMgZWxlaWZlbmQuIFN1c3BlbmRpc3NlIG5lYyBpcHN1bSBsYWNpbmlhLCBzb2RhbGVzIGF1Z3VlIHZlbCwgcHJldGl1bSBsaWd1bGEuIEludGVnZXIgbmVxdWUgbG9yZW0sIGVnZXN0YXMgaWQgaGVuZHJlcml0IG5vbiwgdm9sdXRwYXQgYSBuaXNsLiBBZW5lYW4gZnJpbmdpbGxhIG5lcXVlIHNlZCBwb3N1ZXJlIG1hdHRpcy4gUHJhZXNlbnQgbnVsbGEgaXBzdW0sIGludGVyZHVtIGF0IGludGVyZHVtIHZpdGFlLCBhbGlxdWFtIGV1IG1hc3NhLiBNYXVyaXMgdml0YWUgdHJpc3RpcXVlIGp1c3RvLiBDdXJhYml0dXIgdWxsYW1jb3JwZXIgaWQgaXBzdW0gZWdldCB1bGxhbWNvcnBlci4gUHJhZXNlbnQgbWFsZXN1YWRhIHBsYWNlcmF0IG5pc2kgZXUgcGVsbGVudGVzcXVlLiBGdXNjZSBhdWd1ZSBvZGlvLCBjdXJzdXMgc2l0IGFtZXQgbG9ib3J0aXMgYWMsIHN1c2NpcGl0IHZlbCBtYXNzYS4gUGVsbGVudGVzcXVlIG5lYyB2ZXN0aWJ1bHVtIHF1YW0uIEluIHF1aXMgb3JjaSBpZCBkaWFtIGFsaXF1ZXQgdWxsYW1jb3JwZXIuIEludGVyZHVtIGV0IG1hbGVzdWFkYSBmYW1lcyBhYyBhbnRlIGlwc3VtIHByaW1pcyBpbiBmYXVjaWJ1cy4gTG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQsIGNvbnNlY3RldHVyIGFkaXBpc2NpbmcgZWxpdC4gRXRpYW0gbWF0dGlzIG1vbGVzdGllIGxhY3VzLiBOdW5jIHBvc3VlcmUgdHVycGlzIHVsbGFtY29ycGVyIHJ1dHJ1bSBiaWJlbmR1bS4gTmFtIHBsYWNlcmF0IHZ1bHB1dGF0ZSBhbnRlIGFjIGF1Y3Rvci4gRXRpYW0gdmVzdGlidWx1bSBuaXNsIGZlbGlzLCB0cmlzdGlxdWUgZGljdHVtIHRlbGx1cyBsb2JvcnRpcyBldC4gQWxpcXVhbSBpbiBlbmltIHZpdmVycmEgbG9yZW0gbW9sbGlzIG1hdHRpcyB2aXRhZSBhIG1ldHVzLiBEb25lYyBlZ2V0IHR1cnBpcyBlc3QuIE51bmMgbm9uIG1pIGV1aXNtb2QsIGlhY3VsaXMgcXVhbSBpbiwgYWxpcXVldCBsZWN0dXMuIENyYXMgdmVsIHRlbXBvciBvZGlvLiBWaXZhbXVzIGF1Y3RvciBlcmF0IHZlbCBlcm9zIHVsbGFtY29ycGVyIHB1bHZpbmFyLiBDdXJhYml0dXIgZXQgdHVycGlzIG5vbiBuaWJoIHBlbGxlbnRlc3F1ZSB1bHRyaWNlcy4gVmVzdGlidWx1bSB1bHRyaWNlcyBsYW9yZWV0IGNvbnZhbGxpcy4gU2VkIHZlbCB2ZXN0aWJ1bHVtIGlwc3VtLiBQZWxsZW50ZXNxdWUgc29sbGljaXR1ZGluLCBxdWFtIGluIGRpY3R1bSBydXRydW0sIG1hc3NhIG51bGxhIGltcGVyZGlldCBvZGlvLCBuZWMgZWdlc3RhcyBsb3JlbSBkdWkgdmVsIHR1cnBpcy4gRG9uZWMgcG9ydHRpdG9yIGVyYXQgbmVxdWUsIGEgY29uc2VjdGV0dXIgcHVydXMgZGlnbmlzc2ltIGluLiBQcmFlc2VudCBpZCB2ZWxpdCBldCBhdWd1ZSBhdWN0b3IgbWF4aW11cy4gQ3VyYWJpdHVyIHF1aXMgbWF1cmlzIGluIHNhcGllbiBibGFuZGl0IGZhdWNpYnVzLiBOdWxsYW0gZmFjaWxpc2lzIGV1aXNtb2Qgb2Rpbywgc2VkIHVsdHJpY2VzIG5lcXVlIG1vbGVzdGllIGVnZXQuIEludGVnZXIgYSBtb2xsaXMgbWFnbmEuIFN1c3BlbmRpc3NlIHZlbmVuYXRpcyBtaSBzZWQgdGVsbHVzIHZhcml1cywgc2VkIHB1bHZpbmFyIGlwc3VtIHBvcnRhLiBEb25lYyBxdWlzIHJpc3VzIGV0IGRvbG9yIHVsdHJpY2VzIHZlc3RpYnVsdW0gc2l0IGFtZXQgZnJpbmdpbGxhIGV4LiBJbnRlZ2VyIGJpYmVuZHVtIG1hZ25hIG5vbiBuaXNsIHBoYXJldHJhIHRlbXB1cy4gUGhhc2VsbHVzIHRpbmNpZHVudCBhdWd1ZSBldCB0ZWxsdXMgY3Vyc3VzIHZvbHV0cGF0LiBOYW0gYWMgdnVscHV0YXRlIGR1aS4gTnVuYyB0aW5jaWR1bnQgbWF1cmlzIHBvcnRhIGR1aSBkYXBpYnVzLCBpZCBibGFuZGl0IG1ldHVzIGJsYW5kaXQuIEZ1c2NlIGluIHZlbGl0IHVsbGFtY29ycGVyLCBhbGlxdWV0IGRpYW0gdmVsLCBwZWxsZW50ZXNxdWUgbGlndWxhLiBTZWQgYWxpcXVldCBqdXN0byB1dCBkb2xvciBzYWdpdHRpcyBvcm5hcmUuIFBlbGxlbnRlc3F1ZSBoYWJpdGFudCBtb3JiaSB0cmlzdGlxdWUgc2VuZWN0dXMgZXQgbmV0dXMgZXQgbWFsZXN1YWRhIGZhbWVzIGFjIHR1cnBpcyBlZ2VzdGFzLiBOdWxsYSBub24gcHVydXMgbmVjIG1hc3NhIHZlaGljdWxhIGV1aXNtb2Qgbm9uIHB1bHZpbmFyIGR1aS4gRG9uZWMgdnVscHV0YXRlIGludGVyZHVtIGVsZW1lbnR1bS4gQ3VyYWJpdHVyIHRlbXBvciBhcmN1IHV0IHVsbGFtY29ycGVyIHBsYWNlcmF0LiBTZWQgdGluY2lkdW50IGVsZW1lbnR1bSBuZXF1ZSwgYSB2ZWhpY3VsYSBlbmltLiBQcmFlc2VudCBpbnRlcmR1bSBtYXNzYSBpZCBsYWN1cyBjb25kaW1lbnR1bSBwb3N1ZXJlLiBWZXN0aWJ1bHVtIHNlbSBkb2xvciwgZnJpbmdpbGxhIHF1aXMgcXVhbSBhYywgY29uc2VjdGV0dXIgYWxpcXVhbSBsb3JlbS4gRHVpcyBpbiBwcmV0aXVtIG9yY2ksIGVnZXQgYWxpcXVhbSByaXN1cy4gUHJhZXNlbnQgYWNjdW1zYW4gdnVscHV0YXRlIHRvcnRvciBhdCByaG9uY3VzLiBTdXNwZW5kaXNzZSB2dWxwdXRhdGUgaW4gbGFjdXMgdXQgZWZmaWNpdHVyLiBQZWxsZW50ZXNxdWUgbGFjaW5pYSB1cm5hIGlkIGxpYmVybyBhbGlxdWV0LCBldSB0aW5jaWR1bnQgdG9ydG9yIGVsZW1lbnR1bS4gUHJvaW4gY29uc2VxdWF0LCBtYWduYSBpZCB2ZWhpY3VsYSBsYW9yZWV0LCBtYWduYSBlcm9zIG1hdHRpcyBzZW0sIGlkIHBsYWNlcmF0IGVyb3MgYXJjdSBxdWlzIG1ldHVzLiBDdXJhYml0dXIgZWdldCBuZXF1ZSBpZCBuaXNsIHRpbmNpZHVudCBkaWN0dW0uIFN1c3BlbmRpc3NlIHBvdGVudGkuIERvbmVjIGJpYmVuZHVtIGF1Y3RvciBlcm9zLiBPcmNpIHZhcml1cyBuYXRvcXVlIHBlbmF0aWJ1cyBldCBtYWduaXMgZGlzIHBhcnR1cmllbnQgbW9udGVzLCBuYXNjZXR1ciByaWRpY3VsdXMgbXVzLiBTZWQgaGVuZHJlcml0IG1hc3NhIHF1aXMgbGFjdXMgb3JuYXJlIHZhcml1cy4gQWxpcXVhbSBhbGlxdWFtIG1ldHVzIHNpdCBhbWV0IGxlY3R1cyB2ZWhpY3VsYSwgaWQgaW50ZXJkdW0gcHVydXMgaW1wZXJkaWV0LiBTZWQgbm9uIGFudGUgdGVtcG9yLCBlbGVpZmVuZCBleCB2aXRhZSwgZmV1Z2lhdCBsaWJlcm8uIERvbmVjIGRpYW0gZG9sb3IsIGZhdWNpYnVzIG5vbiBpcHN1bSBpZCwgdWx0cmljZXMgbG9ib3J0aXMgbWFzc2EuIFByb2luIG9ybmFyZSBqdXN0byBhIGFsaXF1ZXQgZWZmaWNpdHVyLiBFdGlhbSBwZWxsZW50ZXNxdWUgbmVxdWUgZXQgZHVpIG1hbGVzdWFkYSBhbGlxdWV0LiBTdXNwZW5kaXNzZSBwb3RlbnRpLiBOYW0gYXQgY29udmFsbGlzIG9kaW8uIEFlbmVhbiBwbGFjZXJhdCBtYXNzYSBhYyBmZWxpcyBvcm5hcmUsIGV1IGVsZWlmZW5kIG1hc3NhIHZvbHV0cGF0LiBRdWlzcXVlIGVyb3MgdXJuYSwgY29tbW9kbyBjb252YWxsaXMgdHVycGlzIGluLCB0cmlzdGlxdWUgZWdlc3RhcyBmZWxpcy4gRXRpYW0gaWQgdmVoaWN1bGEgbG9yZW0sIGEgbWF0dGlzIGVuaW0uIENyYXMgbWV0dXMgZXJhdCwgbGFvcmVldCBzaXQgYW1ldCBydXRydW0gaW4sIHJ1dHJ1bSB2aXRhZSBzZW0uIE51bGxhIGZhY2lsaXNpLiBNb3JiaSBhY2N1bXNhbiwgdGVsbHVzIGFjIHVsbGFtY29ycGVyIGxvYm9ydGlzLCB2ZWxpdCBxdWFtIGZhdWNpYnVzIG9kaW8sIGV0IGltcGVyZGlldCBvZGlvIGR1aSBhYyBzYXBpZW4uIEFsaXF1YW0gdnVscHV0YXRlLCBtZXR1cyB1dCBmYXVjaWJ1cyB0aW5jaWR1bnQsIG9kaW8gcHVydXMgdWx0cmljaWVzIG1pLCB2aXRhZSBwcmV0aXVtIGZlbGlzIGVzdCBydXRydW0ganVzdG8uIFByb2luIGNvbnZhbGxpcyB0ZWxsdXMgZGlnbmlzc2ltIG1hdXJpcyBsYWNpbmlhLCBldCBvcm5hcmUgbGliZXJvIGZldWdpYXQuIEludGVnZXIgcHJldGl1bSBncmF2aWRhIHRlbGx1cyBncmF2aWRhIGF1Y3Rvci4gTnVsbGFtIG1hdHRpcyBoZW5kcmVyaXQgY29tbW9kby4gTG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQsIGNvbnNlY3RldHVyIGFkaXBpc2NpbmcgZWxpdC4gSW50ZXJkdW0gZXQgbWFsZXN1YWRhIGZhbWVzIGFjIGFudGUgaXBzdW0gcHJpbWlzIGluIGZhdWNpYnVzLiBQcmFlc2VudCBwb3J0YSB0ZWxsdXMgc2l0IGFtZXQgZWdlc3RhcyBhbGlxdWFtLiBDcmFzIGJsYW5kaXQgdmVuZW5hdGlzIHZlaGljdWxhLiBOYW0gYXQgZXJvcyBhYyBudWxsYSBtYXhpbXVzIGNvbmRpbWVudHVtIGluIGF0IG1ldHVzLiBOdW5jIG5vbiBlcm9zIGEgc2FwaWVuIGJsYW5kaXQgbW9sZXN0aWUuIEV0aWFtIGZhdWNpYnVzIG5pc2kgbGFjdXMsIHZpdGFlIHZlc3RpYnVsdW0gdHVycGlzIHNjZWxlcmlzcXVlIHNpdCBhbWV0LiBNYXVyaXMgdWxsYW1jb3JwZXIgdmVsIHF1YW0gc2l0IGFtZXQgYWxpcXVhbS4gUGVsbGVudGVzcXVlIGhhYml0YW50IG1vcmJpIHRyaXN0aXF1ZSBzZW5lY3R1cyBldCBuZXR1cyBldCBtYWxlc3VhZGEgZmFtZXMgYWMgdHVycGlzIGVnZXN0YXMuIFNlZCBxdWlzIG1hZ25hIGEgcHVydXMgcG9ydHRpdG9yIGJpYmVuZHVtIHV0IGV1IHF1YW0uIFF1aXNxdWUgc2l0IGFtZXQgdGVsbHVzIGlkIGZlbGlzIGVmZmljaXR1ciBtYXhpbXVzLiBJbnRlZ2VyIHZlbCByaXN1cyByaXN1cy4gVml2YW11cyBlbGVpZmVuZCBhdWd1ZSBpZCBtaSBzb2xsaWNpdHVkaW4sIHNlZCBwdWx2aW5hciBmZWxpcyBzZW1wZQ==", "4c6f72656d20697073756d20646f6c6f722073697420616d65742c20636f6e73656374657475722061646970697363696e6720656c69742e2053656420657569736d6f64206d61676e61206174207665686963756c6120636f6d6d6f646f2e2053656420696e20756c6c616d636f72706572206c616375732c20736564206665726d656e74756d206d617373612e205072616573656e74206f726e617265206e756e6320616e74652c20766974616520736f64616c6573206469616d206665726d656e74756d20656765742e2050656c6c656e74657371756520736f6c6c696369747564696e20617567756520657420656c69742072757472756d206469676e697373696d206e6f6e207669746165206c656f2e2044756973207175697320697073756d20756c6c616d636f727065722076656c69742076617269757320656c656966656e642e2053757370656e6469737365206e656320697073756d206c6163696e69612c20736f64616c65732061756775652076656c2c207072657469756d206c6967756c612e20496e7465676572206e65717565206c6f72656d2c20656765737461732069642068656e647265726974206e6f6e2c20766f6c75747061742061206e69736c2e2041656e65616e206672696e67696c6c61206e657175652073656420706f7375657265206d61747469732e205072616573656e74206e756c6c6120697073756d2c20696e74657264756d20617420696e74657264756d2076697461652c20616c697175616d206575206d617373612e204d617572697320766974616520747269737469717565206a7573746f2e2043757261626974757220756c6c616d636f7270657220696420697073756d206567657420756c6c616d636f727065722e205072616573656e74206d616c65737561646120706c616365726174206e6973692065752070656c6c656e7465737175652e204675736365206175677565206f64696f2c206375727375732073697420616d6574206c6f626f727469732061632c2073757363697069742076656c206d617373612e2050656c6c656e746573717565206e656320766573746962756c756d207175616d2e20496e2071756973206f726369206964206469616d20616c697175657420756c6c616d636f727065722e20496e74657264756d206574206d616c6573756164612066616d657320616320616e746520697073756d207072696d697320696e2066617563696275732e204c6f72656d20697073756d20646f6c6f722073697420616d65742c20636f6e73656374657475722061646970697363696e6720656c69742e20457469616d206d6174746973206d6f6c6573746965206c616375732e204e756e6320706f73756572652074757270697320756c6c616d636f727065722072757472756d20626962656e64756d2e204e616d20706c6163657261742076756c70757461746520616e746520616320617563746f722e20457469616d20766573746962756c756d206e69736c2066656c69732c207472697374697175652064696374756d2074656c6c7573206c6f626f727469732065742e20416c697175616d20696e20656e696d2076697665727261206c6f72656d206d6f6c6c6973206d61747469732076697461652061206d657475732e20446f6e6563206567657420747572706973206573742e204e756e63206e6f6e206d6920657569736d6f642c20696163756c6973207175616d20696e2c20616c6971756574206c65637475732e20437261732076656c2074656d706f72206f64696f2e20566976616d757320617563746f7220657261742076656c2065726f7320756c6c616d636f727065722070756c76696e61722e2043757261626974757220657420747572706973206e6f6e206e6962682070656c6c656e74657371756520756c7472696365732e20566573746962756c756d20756c747269636573206c616f7265657420636f6e76616c6c69732e205365642076656c20766573746962756c756d20697073756d2e2050656c6c656e74657371756520736f6c6c696369747564696e2c207175616d20696e2064696374756d2072757472756d2c206d61737361206e756c6c6120696d70657264696574206f64696f2c206e65632065676573746173206c6f72656d206475692076656c207475727069732e20446f6e656320706f72747469746f722065726174206e657175652c206120636f6e7365637465747572207075727573206469676e697373696d20696e2e205072616573656e742069642076656c697420657420617567756520617563746f72206d6178696d75732e204375726162697475722071756973206d617572697320696e2073617069656e20626c616e6469742066617563696275732e204e756c6c616d20666163696c6973697320657569736d6f64206f64696f2c2073656420756c747269636573206e65717565206d6f6c657374696520656765742e20496e74656765722061206d6f6c6c6973206d61676e612e2053757370656e64697373652076656e656e61746973206d69207365642074656c6c7573207661726975732c207365642070756c76696e617220697073756d20706f7274612e20446f6e6563207175697320726973757320657420646f6c6f7220756c74726963657320766573746962756c756d2073697420616d6574206672696e67696c6c612065782e20496e746567657220626962656e64756d206d61676e61206e6f6e206e69736c2070686172657472612074656d7075732e2050686173656c6c75732074696e636964756e742061756775652065742074656c6c75732063757273757320766f6c75747061742e204e616d2061632076756c707574617465206475692e204e756e632074696e636964756e74206d617572697320706f7274612064756920646170696275732c20696420626c616e646974206d6574757320626c616e6469742e20467573636520696e2076656c697420756c6c616d636f727065722c20616c6971756574206469616d2076656c2c2070656c6c656e746573717565206c6967756c612e2053656420616c6971756574206a7573746f20757420646f6c6f72207361676974746973206f726e6172652e2050656c6c656e746573717565206861626974616e74206d6f726269207472697374697175652073656e6563747573206574206e65747573206574206d616c6573756164612066616d65732061632074757270697320656765737461732e204e756c6c61206e6f6e207075727573206e6563206d61737361207665686963756c6120657569736d6f64206e6f6e2070756c76696e6172206475692e20446f6e65632076756c70757461746520696e74657264756d20656c656d656e74756d2e204375726162697475722074656d706f72206172637520757420756c6c616d636f7270657220706c6163657261742e205365642074696e636964756e7420656c656d656e74756d206e657175652c2061207665686963756c6120656e696d2e205072616573656e7420696e74657264756d206d61737361206964206c6163757320636f6e64696d656e74756d20706f73756572652e20566573746962756c756d2073656d20646f6c6f722c206672696e67696c6c612071756973207175616d2061632c20636f6e736563746574757220616c697175616d206c6f72656d2e204475697320696e207072657469756d206f7263692c206567657420616c697175616d2072697375732e205072616573656e7420616363756d73616e2076756c70757461746520746f72746f722061742072686f6e6375732e2053757370656e64697373652076756c70757461746520696e206c61637573207574206566666963697475722e2050656c6c656e746573717565206c6163696e69612075726e61206964206c696265726f20616c69717565742c2065752074696e636964756e7420746f72746f7220656c656d656e74756d2e2050726f696e20636f6e7365717561742c206d61676e61206964207665686963756c61206c616f726565742c206d61676e612065726f73206d61747469732073656d2c20696420706c6163657261742065726f7320617263752071756973206d657475732e204375726162697475722065676574206e65717565206964206e69736c2074696e636964756e742064696374756d2e2053757370656e646973736520706f74656e74692e20446f6e656320626962656e64756d20617563746f722065726f732e204f72636920766172697573206e61746f7175652070656e617469627573206574206d61676e6973206469732070617274757269656e74206d6f6e7465732c206e61736365747572207269646963756c7573206d75732e205365642068656e647265726974206d617373612071756973206c61637573206f726e617265207661726975732e20416c697175616d20616c697175616d206d657475732073697420616d6574206c6563747573207665686963756c612c20696420696e74657264756d20707572757320696d706572646965742e20536564206e6f6e20616e74652074656d706f722c20656c656966656e642065782076697461652c2066657567696174206c696265726f2e20446f6e6563206469616d20646f6c6f722c206661756369627573206e6f6e20697073756d2069642c20756c747269636573206c6f626f72746973206d617373612e2050726f696e206f726e617265206a7573746f206120616c6971756574206566666963697475722e20457469616d2070656c6c656e746573717565206e6571756520657420647569206d616c65737561646120616c69717565742e2053757370656e646973736520706f74656e74692e204e616d20617420636f6e76616c6c6973206f64696f2e2041656e65616e20706c616365726174206d617373612061632066656c6973206f726e6172652c20657520656c656966656e64206d6173736120766f6c75747061742e20517569737175652065726f732075726e612c20636f6d6d6f646f20636f6e76616c6c69732074757270697320696e2c2074726973746971756520656765737461732066656c69732e20457469616d206964207665686963756c61206c6f72656d2c2061206d617474697320656e696d2e2043726173206d6574757320657261742c206c616f726565742073697420616d65742072757472756d20696e2c2072757472756d2076697461652073656d2e204e756c6c6120666163696c6973692e204d6f72626920616363756d73616e2c2074656c6c757320616320756c6c616d636f72706572206c6f626f727469732c2076656c6974207175616d206661756369627573206f64696f2c20657420696d70657264696574206f64696f206475692061632073617069656e2e20416c697175616d2076756c7075746174652c206d657475732075742066617563696275732074696e636964756e742c206f64696f20707572757320756c74726963696573206d692c207669746165207072657469756d2066656c6973206573742072757472756d206a7573746f2e2050726f696e20636f6e76616c6c69732074656c6c7573206469676e697373696d206d6175726973206c6163696e69612c206574206f726e617265206c696265726f20666575676961742e20496e7465676572207072657469756d20677261766964612074656c6c7573206772617669646120617563746f722e204e756c6c616d206d61747469732068656e64726572697420636f6d6d6f646f2e204c6f72656d20697073756d20646f6c6f722073697420616d65742c20636f6e73656374657475722061646970697363696e6720656c69742e20496e74657264756d206574206d616c6573756164612066616d657320616320616e746520697073756d207072696d697320696e2066617563696275732e205072616573656e7420706f7274612074656c6c75732073697420616d6574206567657374617320616c697175616d2e204372617320626c616e6469742076656e656e61746973207665686963756c612e204e616d2061742065726f73206163206e756c6c61206d6178696d757320636f6e64696d656e74756d20696e206174206d657475732e204e756e63206e6f6e2065726f7320612073617069656e20626c616e646974206d6f6c65737469652e20457469616d206661756369627573206e697369206c616375732c20766974616520766573746962756c756d20747572706973207363656c657269737175652073697420616d65742e204d617572697320756c6c616d636f727065722076656c207175616d2073697420616d657420616c697175616d2e2050656c6c656e746573717565206861626974616e74206d6f726269207472697374697175652073656e6563747573206574206e65747573206574206d616c6573756164612066616d65732061632074757270697320656765737461732e205365642071756973206d61676e61206120707572757320706f72747469746f7220626962656e64756d207574206575207175616d2e20517569737175652073697420616d65742074656c6c75732069642066656c697320656666696369747572206d6178696d75732e20496e74656765722076656c2072697375732072697375732e20566976616d757320656c656966656e64206175677565206964206d6920736f6c6c696369747564696e2c207365642070756c76696e61722066656c69732073656d7065"}; +static const Dataset set14 = {"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed euismod magna at vehicula commodo. Sed in ullamcorper lacus, sed fermentum massa. Praesent ornare nunc ante, vitae sodales diam fermentum eget. Pellentesque sollicitudin augue et elit rutrum dignissim non vitae leo. Duis quis ipsum ullamcorper velit varius eleifend. Suspendisse nec ipsum lacinia, sodales augue vel, pretium ligula. Integer neque lorem, egestas id hendrerit non, volutpat a nisl. Aenean fringilla neque sed posuere mattis. Praesent nulla ipsum, interdum at interdum vitae, aliquam eu massa. Mauris vitae tristique justo. Curabitur ullamcorper id ipsum eget ullamcorper. Praesent malesuada placerat nisi eu pellentesque. Fusce augue odio, cursus sit amet lobortis ac, suscipit vel massa. Pellentesque nec vestibulum quam. In quis orci id diam aliquet ullamcorper. Interdum et malesuada fames ac ante ipsum primis in faucibus. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Etiam mattis molestie lacus. Nunc posuere turpis ullamcorper rutrum bibendum. Nam placerat vulputate ante ac auctor. Etiam vestibulum nisl felis, tristique dictum tellus lobortis et. Aliquam in enim viverra lorem mollis mattis vitae a metus. Donec eget turpis est. Nunc non mi euismod, iaculis quam in, aliquet lectus. Cras vel tempor odio. Vivamus auctor erat vel eros ullamcorper pulvinar. Curabitur et turpis non nibh pellentesque ultrices. Vestibulum ultrices laoreet convallis. Sed vel vestibulum ipsum. Pellentesque sollicitudin, quam in dictum rutrum, massa nulla imperdiet odio, nec egestas lorem dui vel turpis. Donec porttitor erat neque, a consectetur purus dignissim in. Praesent id velit et augue auctor maximus. Curabitur quis mauris in sapien blandit faucibus. Nullam facilisis euismod odio, sed ultrices neque molestie eget. Integer a mollis magna. Suspendisse venenatis mi sed tellus varius, sed pulvinar ipsum porta. Donec quis risus et dolor ultrices vestibulum sit amet fringilla ex. Integer bibendum magna non nisl pharetra tempus. Phasellus tincidunt augue et tellus cursus volutpat. Nam ac vulputate dui. Nunc tincidunt mauris porta dui dapibus, id blandit metus blandit. Fusce in velit ullamcorper, aliquet diam vel, pellentesque ligula. Sed aliquet justo ut dolor sagittis ornare. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Nulla non purus nec massa vehicula euismod non pulvinar dui. Donec vulputate interdum elementum. Curabitur tempor arcu ut ullamcorper placerat. Sed tincidunt elementum neque, a vehicula enim. Praesent interdum massa id lacus condimentum posuere. Vestibulum sem dolor, fringilla quis quam ac, consectetur aliquam lorem. Duis in pretium orci, eget aliquam risus. Praesent accumsan vulputate tortor at rhoncus. Suspendisse vulputate in lacus ut efficitur. Pellentesque lacinia urna id libero aliquet, eu tincidunt tortor elementum. Proin consequat, magna id vehicula laoreet, magna eros mattis sem, id placerat eros arcu quis metus. Curabitur eget neque id nisl tincidunt dictum. Suspendisse potenti. Donec bibendum auctor eros. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed hendrerit massa quis lacus ornare varius. Aliquam aliquam metus sit amet lectus vehicula, id interdum purus imperdiet. Sed non ante tempor, eleifend ex vitae, feugiat libero. Donec diam dolor, faucibus non ipsum id, ultrices lobortis massa. Proin ornare justo a aliquet efficitur. Etiam pellentesque neque et dui malesuada aliquet. Suspendisse potenti. Nam at convallis odio. Aenean placerat massa ac felis ornare, eu eleifend massa volutpat. Quisque eros urna, commodo convallis turpis in, tristique egestas felis. Etiam id vehicula lorem, a mattis enim. Cras metus erat, laoreet sit amet rutrum in, rutrum vitae sem. Nulla facilisi. Morbi accumsan, tellus ac ullamcorper lobortis, velit quam faucibus odio, et imperdiet odio dui ac sapien. Aliquam vulputate, metus ut faucibus tincidunt, odio purus ultricies mi, vitae pretium felis est rutrum justo. Proin convallis tellus dignissim mauris lacinia, et ornare libero feugiat. Integer pretium gravida tellus gravida auctor. Nullam mattis hendrerit commodo. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Interdum et malesuada fames ac ante ipsum primis in faucibus. Praesent porta tellus sit amet egestas aliquam. Cras blandit venenatis vehicula. Nam at eros ac nulla maximus condimentum in at metus. Nunc non eros a sapien blandit molestie. Etiam faucibus nisi lacus, vitae vestibulum turpis scelerisque sit amet. Mauris ullamcorper vel quam sit amet aliquam. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Sed quis magna a purus porttitor bibendum ut eu quam. Quisque sit amet tellus id felis efficitur maximus. Integer vel risus risus. Vivamus eleifend augue id mi sollicitudin, sed pulvinar felis semper.", + "TG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQsIGNvbnNlY3RldHVyIGFkaXBpc2NpbmcgZWxpdC4gU2VkIGV1aXNtb2QgbWFnbmEgYXQgdmVoaWN1bGEgY29tbW9kby4gU2VkIGluIHVsbGFtY29ycGVyIGxhY3VzLCBzZWQgZmVybWVudHVtIG1hc3NhLiBQcmFlc2VudCBvcm5hcmUgbnVuYyBhbnRlLCB2aXRhZSBzb2RhbGVzIGRpYW0gZmVybWVudHVtIGVnZXQuIFBlbGxlbnRlc3F1ZSBzb2xsaWNpdHVkaW4gYXVndWUgZXQgZWxpdCBydXRydW0gZGlnbmlzc2ltIG5vbiB2aXRhZSBsZW8uIER1aXMgcXVpcyBpcHN1bSB1bGxhbWNvcnBlciB2ZWxpdCB2YXJpdXMgZWxlaWZlbmQuIFN1c3BlbmRpc3NlIG5lYyBpcHN1bSBsYWNpbmlhLCBzb2RhbGVzIGF1Z3VlIHZlbCwgcHJldGl1bSBsaWd1bGEuIEludGVnZXIgbmVxdWUgbG9yZW0sIGVnZXN0YXMgaWQgaGVuZHJlcml0IG5vbiwgdm9sdXRwYXQgYSBuaXNsLiBBZW5lYW4gZnJpbmdpbGxhIG5lcXVlIHNlZCBwb3N1ZXJlIG1hdHRpcy4gUHJhZXNlbnQgbnVsbGEgaXBzdW0sIGludGVyZHVtIGF0IGludGVyZHVtIHZpdGFlLCBhbGlxdWFtIGV1IG1hc3NhLiBNYXVyaXMgdml0YWUgdHJpc3RpcXVlIGp1c3RvLiBDdXJhYml0dXIgdWxsYW1jb3JwZXIgaWQgaXBzdW0gZWdldCB1bGxhbWNvcnBlci4gUHJhZXNlbnQgbWFsZXN1YWRhIHBsYWNlcmF0IG5pc2kgZXUgcGVsbGVudGVzcXVlLiBGdXNjZSBhdWd1ZSBvZGlvLCBjdXJzdXMgc2l0IGFtZXQgbG9ib3J0aXMgYWMsIHN1c2NpcGl0IHZlbCBtYXNzYS4gUGVsbGVudGVzcXVlIG5lYyB2ZXN0aWJ1bHVtIHF1YW0uIEluIHF1aXMgb3JjaSBpZCBkaWFtIGFsaXF1ZXQgdWxsYW1jb3JwZXIuIEludGVyZHVtIGV0IG1hbGVzdWFkYSBmYW1lcyBhYyBhbnRlIGlwc3VtIHByaW1pcyBpbiBmYXVjaWJ1cy4gTG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQsIGNvbnNlY3RldHVyIGFkaXBpc2NpbmcgZWxpdC4gRXRpYW0gbWF0dGlzIG1vbGVzdGllIGxhY3VzLiBOdW5jIHBvc3VlcmUgdHVycGlzIHVsbGFtY29ycGVyIHJ1dHJ1bSBiaWJlbmR1bS4gTmFtIHBsYWNlcmF0IHZ1bHB1dGF0ZSBhbnRlIGFjIGF1Y3Rvci4gRXRpYW0gdmVzdGlidWx1bSBuaXNsIGZlbGlzLCB0cmlzdGlxdWUgZGljdHVtIHRlbGx1cyBsb2JvcnRpcyBldC4gQWxpcXVhbSBpbiBlbmltIHZpdmVycmEgbG9yZW0gbW9sbGlzIG1hdHRpcyB2aXRhZSBhIG1ldHVzLiBEb25lYyBlZ2V0IHR1cnBpcyBlc3QuIE51bmMgbm9uIG1pIGV1aXNtb2QsIGlhY3VsaXMgcXVhbSBpbiwgYWxpcXVldCBsZWN0dXMuIENyYXMgdmVsIHRlbXBvciBvZGlvLiBWaXZhbXVzIGF1Y3RvciBlcmF0IHZlbCBlcm9zIHVsbGFtY29ycGVyIHB1bHZpbmFyLiBDdXJhYml0dXIgZXQgdHVycGlzIG5vbiBuaWJoIHBlbGxlbnRlc3F1ZSB1bHRyaWNlcy4gVmVzdGlidWx1bSB1bHRyaWNlcyBsYW9yZWV0IGNvbnZhbGxpcy4gU2VkIHZlbCB2ZXN0aWJ1bHVtIGlwc3VtLiBQZWxsZW50ZXNxdWUgc29sbGljaXR1ZGluLCBxdWFtIGluIGRpY3R1bSBydXRydW0sIG1hc3NhIG51bGxhIGltcGVyZGlldCBvZGlvLCBuZWMgZWdlc3RhcyBsb3JlbSBkdWkgdmVsIHR1cnBpcy4gRG9uZWMgcG9ydHRpdG9yIGVyYXQgbmVxdWUsIGEgY29uc2VjdGV0dXIgcHVydXMgZGlnbmlzc2ltIGluLiBQcmFlc2VudCBpZCB2ZWxpdCBldCBhdWd1ZSBhdWN0b3IgbWF4aW11cy4gQ3VyYWJpdHVyIHF1aXMgbWF1cmlzIGluIHNhcGllbiBibGFuZGl0IGZhdWNpYnVzLiBOdWxsYW0gZmFjaWxpc2lzIGV1aXNtb2Qgb2Rpbywgc2VkIHVsdHJpY2VzIG5lcXVlIG1vbGVzdGllIGVnZXQuIEludGVnZXIgYSBtb2xsaXMgbWFnbmEuIFN1c3BlbmRpc3NlIHZlbmVuYXRpcyBtaSBzZWQgdGVsbHVzIHZhcml1cywgc2VkIHB1bHZpbmFyIGlwc3VtIHBvcnRhLiBEb25lYyBxdWlzIHJpc3VzIGV0IGRvbG9yIHVsdHJpY2VzIHZlc3RpYnVsdW0gc2l0IGFtZXQgZnJpbmdpbGxhIGV4LiBJbnRlZ2VyIGJpYmVuZHVtIG1hZ25hIG5vbiBuaXNsIHBoYXJldHJhIHRlbXB1cy4gUGhhc2VsbHVzIHRpbmNpZHVudCBhdWd1ZSBldCB0ZWxsdXMgY3Vyc3VzIHZvbHV0cGF0LiBOYW0gYWMgdnVscHV0YXRlIGR1aS4gTnVuYyB0aW5jaWR1bnQgbWF1cmlzIHBvcnRhIGR1aSBkYXBpYnVzLCBpZCBibGFuZGl0IG1ldHVzIGJsYW5kaXQuIEZ1c2NlIGluIHZlbGl0IHVsbGFtY29ycGVyLCBhbGlxdWV0IGRpYW0gdmVsLCBwZWxsZW50ZXNxdWUgbGlndWxhLiBTZWQgYWxpcXVldCBqdXN0byB1dCBkb2xvciBzYWdpdHRpcyBvcm5hcmUuIFBlbGxlbnRlc3F1ZSBoYWJpdGFudCBtb3JiaSB0cmlzdGlxdWUgc2VuZWN0dXMgZXQgbmV0dXMgZXQgbWFsZXN1YWRhIGZhbWVzIGFjIHR1cnBpcyBlZ2VzdGFzLiBOdWxsYSBub24gcHVydXMgbmVjIG1hc3NhIHZlaGljdWxhIGV1aXNtb2Qgbm9uIHB1bHZpbmFyIGR1aS4gRG9uZWMgdnVscHV0YXRlIGludGVyZHVtIGVsZW1lbnR1bS4gQ3VyYWJpdHVyIHRlbXBvciBhcmN1IHV0IHVsbGFtY29ycGVyIHBsYWNlcmF0LiBTZWQgdGluY2lkdW50IGVsZW1lbnR1bSBuZXF1ZSwgYSB2ZWhpY3VsYSBlbmltLiBQcmFlc2VudCBpbnRlcmR1bSBtYXNzYSBpZCBsYWN1cyBjb25kaW1lbnR1bSBwb3N1ZXJlLiBWZXN0aWJ1bHVtIHNlbSBkb2xvciwgZnJpbmdpbGxhIHF1aXMgcXVhbSBhYywgY29uc2VjdGV0dXIgYWxpcXVhbSBsb3JlbS4gRHVpcyBpbiBwcmV0aXVtIG9yY2ksIGVnZXQgYWxpcXVhbSByaXN1cy4gUHJhZXNlbnQgYWNjdW1zYW4gdnVscHV0YXRlIHRvcnRvciBhdCByaG9uY3VzLiBTdXNwZW5kaXNzZSB2dWxwdXRhdGUgaW4gbGFjdXMgdXQgZWZmaWNpdHVyLiBQZWxsZW50ZXNxdWUgbGFjaW5pYSB1cm5hIGlkIGxpYmVybyBhbGlxdWV0LCBldSB0aW5jaWR1bnQgdG9ydG9yIGVsZW1lbnR1bS4gUHJvaW4gY29uc2VxdWF0LCBtYWduYSBpZCB2ZWhpY3VsYSBsYW9yZWV0LCBtYWduYSBlcm9zIG1hdHRpcyBzZW0sIGlkIHBsYWNlcmF0IGVyb3MgYXJjdSBxdWlzIG1ldHVzLiBDdXJhYml0dXIgZWdldCBuZXF1ZSBpZCBuaXNsIHRpbmNpZHVudCBkaWN0dW0uIFN1c3BlbmRpc3NlIHBvdGVudGkuIERvbmVjIGJpYmVuZHVtIGF1Y3RvciBlcm9zLiBPcmNpIHZhcml1cyBuYXRvcXVlIHBlbmF0aWJ1cyBldCBtYWduaXMgZGlzIHBhcnR1cmllbnQgbW9udGVzLCBuYXNjZXR1ciByaWRpY3VsdXMgbXVzLiBTZWQgaGVuZHJlcml0IG1hc3NhIHF1aXMgbGFjdXMgb3JuYXJlIHZhcml1cy4gQWxpcXVhbSBhbGlxdWFtIG1ldHVzIHNpdCBhbWV0IGxlY3R1cyB2ZWhpY3VsYSwgaWQgaW50ZXJkdW0gcHVydXMgaW1wZXJkaWV0LiBTZWQgbm9uIGFudGUgdGVtcG9yLCBlbGVpZmVuZCBleCB2aXRhZSwgZmV1Z2lhdCBsaWJlcm8uIERvbmVjIGRpYW0gZG9sb3IsIGZhdWNpYnVzIG5vbiBpcHN1bSBpZCwgdWx0cmljZXMgbG9ib3J0aXMgbWFzc2EuIFByb2luIG9ybmFyZSBqdXN0byBhIGFsaXF1ZXQgZWZmaWNpdHVyLiBFdGlhbSBwZWxsZW50ZXNxdWUgbmVxdWUgZXQgZHVpIG1hbGVzdWFkYSBhbGlxdWV0LiBTdXNwZW5kaXNzZSBwb3RlbnRpLiBOYW0gYXQgY29udmFsbGlzIG9kaW8uIEFlbmVhbiBwbGFjZXJhdCBtYXNzYSBhYyBmZWxpcyBvcm5hcmUsIGV1IGVsZWlmZW5kIG1hc3NhIHZvbHV0cGF0LiBRdWlzcXVlIGVyb3MgdXJuYSwgY29tbW9kbyBjb252YWxsaXMgdHVycGlzIGluLCB0cmlzdGlxdWUgZWdlc3RhcyBmZWxpcy4gRXRpYW0gaWQgdmVoaWN1bGEgbG9yZW0sIGEgbWF0dGlzIGVuaW0uIENyYXMgbWV0dXMgZXJhdCwgbGFvcmVldCBzaXQgYW1ldCBydXRydW0gaW4sIHJ1dHJ1bSB2aXRhZSBzZW0uIE51bGxhIGZhY2lsaXNpLiBNb3JiaSBhY2N1bXNhbiwgdGVsbHVzIGFjIHVsbGFtY29ycGVyIGxvYm9ydGlzLCB2ZWxpdCBxdWFtIGZhdWNpYnVzIG9kaW8sIGV0IGltcGVyZGlldCBvZGlvIGR1aSBhYyBzYXBpZW4uIEFsaXF1YW0gdnVscHV0YXRlLCBtZXR1cyB1dCBmYXVjaWJ1cyB0aW5jaWR1bnQsIG9kaW8gcHVydXMgdWx0cmljaWVzIG1pLCB2aXRhZSBwcmV0aXVtIGZlbGlzIGVzdCBydXRydW0ganVzdG8uIFByb2luIGNvbnZhbGxpcyB0ZWxsdXMgZGlnbmlzc2ltIG1hdXJpcyBsYWNpbmlhLCBldCBvcm5hcmUgbGliZXJvIGZldWdpYXQuIEludGVnZXIgcHJldGl1bSBncmF2aWRhIHRlbGx1cyBncmF2aWRhIGF1Y3Rvci4gTnVsbGFtIG1hdHRpcyBoZW5kcmVyaXQgY29tbW9kby4gTG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQsIGNvbnNlY3RldHVyIGFkaXBpc2NpbmcgZWxpdC4gSW50ZXJkdW0gZXQgbWFsZXN1YWRhIGZhbWVzIGFjIGFudGUgaXBzdW0gcHJpbWlzIGluIGZhdWNpYnVzLiBQcmFlc2VudCBwb3J0YSB0ZWxsdXMgc2l0IGFtZXQgZWdlc3RhcyBhbGlxdWFtLiBDcmFzIGJsYW5kaXQgdmVuZW5hdGlzIHZlaGljdWxhLiBOYW0gYXQgZXJvcyBhYyBudWxsYSBtYXhpbXVzIGNvbmRpbWVudHVtIGluIGF0IG1ldHVzLiBOdW5jIG5vbiBlcm9zIGEgc2FwaWVuIGJsYW5kaXQgbW9sZXN0aWUuIEV0aWFtIGZhdWNpYnVzIG5pc2kgbGFjdXMsIHZpdGFlIHZlc3RpYnVsdW0gdHVycGlzIHNjZWxlcmlzcXVlIHNpdCBhbWV0LiBNYXVyaXMgdWxsYW1jb3JwZXIgdmVsIHF1YW0gc2l0IGFtZXQgYWxpcXVhbS4gUGVsbGVudGVzcXVlIGhhYml0YW50IG1vcmJpIHRyaXN0aXF1ZSBzZW5lY3R1cyBldCBuZXR1cyBldCBtYWxlc3VhZGEgZmFtZXMgYWMgdHVycGlzIGVnZXN0YXMuIFNlZCBxdWlzIG1hZ25hIGEgcHVydXMgcG9ydHRpdG9yIGJpYmVuZHVtIHV0IGV1IHF1YW0uIFF1aXNxdWUgc2l0IGFtZXQgdGVsbHVzIGlkIGZlbGlzIGVmZmljaXR1ciBtYXhpbXVzLiBJbnRlZ2VyIHZlbCByaXN1cyByaXN1cy4gVml2YW11cyBlbGVpZmVuZCBhdWd1ZSBpZCBtaSBzb2xsaWNpdHVkaW4sIHNlZCBwdWx2aW5hciBmZWxpcyBzZW1wZXIu", + "4c6f72656d20697073756d20646f6c6f722073697420616d65742c20636f6e73656374657475722061646970697363696e6720656c69742e2053656420657569736d6f64206d61676e61206174207665686963756c6120636f6d6d6f646f2e2053656420696e20756c6c616d636f72706572206c616375732c20736564206665726d656e74756d206d617373612e205072616573656e74206f726e617265206e756e6320616e74652c20766974616520736f64616c6573206469616d206665726d656e74756d20656765742e2050656c6c656e74657371756520736f6c6c696369747564696e20617567756520657420656c69742072757472756d206469676e697373696d206e6f6e207669746165206c656f2e2044756973207175697320697073756d20756c6c616d636f727065722076656c69742076617269757320656c656966656e642e2053757370656e6469737365206e656320697073756d206c6163696e69612c20736f64616c65732061756775652076656c2c207072657469756d206c6967756c612e20496e7465676572206e65717565206c6f72656d2c20656765737461732069642068656e647265726974206e6f6e2c20766f6c75747061742061206e69736c2e2041656e65616e206672696e67696c6c61206e657175652073656420706f7375657265206d61747469732e205072616573656e74206e756c6c6120697073756d2c20696e74657264756d20617420696e74657264756d2076697461652c20616c697175616d206575206d617373612e204d617572697320766974616520747269737469717565206a7573746f2e2043757261626974757220756c6c616d636f7270657220696420697073756d206567657420756c6c616d636f727065722e205072616573656e74206d616c65737561646120706c616365726174206e6973692065752070656c6c656e7465737175652e204675736365206175677565206f64696f2c206375727375732073697420616d6574206c6f626f727469732061632c2073757363697069742076656c206d617373612e2050656c6c656e746573717565206e656320766573746962756c756d207175616d2e20496e2071756973206f726369206964206469616d20616c697175657420756c6c616d636f727065722e20496e74657264756d206574206d616c6573756164612066616d657320616320616e746520697073756d207072696d697320696e2066617563696275732e204c6f72656d20697073756d20646f6c6f722073697420616d65742c20636f6e73656374657475722061646970697363696e6720656c69742e20457469616d206d6174746973206d6f6c6573746965206c616375732e204e756e6320706f73756572652074757270697320756c6c616d636f727065722072757472756d20626962656e64756d2e204e616d20706c6163657261742076756c70757461746520616e746520616320617563746f722e20457469616d20766573746962756c756d206e69736c2066656c69732c207472697374697175652064696374756d2074656c6c7573206c6f626f727469732065742e20416c697175616d20696e20656e696d2076697665727261206c6f72656d206d6f6c6c6973206d61747469732076697461652061206d657475732e20446f6e6563206567657420747572706973206573742e204e756e63206e6f6e206d6920657569736d6f642c20696163756c6973207175616d20696e2c20616c6971756574206c65637475732e20437261732076656c2074656d706f72206f64696f2e20566976616d757320617563746f7220657261742076656c2065726f7320756c6c616d636f727065722070756c76696e61722e2043757261626974757220657420747572706973206e6f6e206e6962682070656c6c656e74657371756520756c7472696365732e20566573746962756c756d20756c747269636573206c616f7265657420636f6e76616c6c69732e205365642076656c20766573746962756c756d20697073756d2e2050656c6c656e74657371756520736f6c6c696369747564696e2c207175616d20696e2064696374756d2072757472756d2c206d61737361206e756c6c6120696d70657264696574206f64696f2c206e65632065676573746173206c6f72656d206475692076656c207475727069732e20446f6e656320706f72747469746f722065726174206e657175652c206120636f6e7365637465747572207075727573206469676e697373696d20696e2e205072616573656e742069642076656c697420657420617567756520617563746f72206d6178696d75732e204375726162697475722071756973206d617572697320696e2073617069656e20626c616e6469742066617563696275732e204e756c6c616d20666163696c6973697320657569736d6f64206f64696f2c2073656420756c747269636573206e65717565206d6f6c657374696520656765742e20496e74656765722061206d6f6c6c6973206d61676e612e2053757370656e64697373652076656e656e61746973206d69207365642074656c6c7573207661726975732c207365642070756c76696e617220697073756d20706f7274612e20446f6e6563207175697320726973757320657420646f6c6f7220756c74726963657320766573746962756c756d2073697420616d6574206672696e67696c6c612065782e20496e746567657220626962656e64756d206d61676e61206e6f6e206e69736c2070686172657472612074656d7075732e2050686173656c6c75732074696e636964756e742061756775652065742074656c6c75732063757273757320766f6c75747061742e204e616d2061632076756c707574617465206475692e204e756e632074696e636964756e74206d617572697320706f7274612064756920646170696275732c20696420626c616e646974206d6574757320626c616e6469742e20467573636520696e2076656c697420756c6c616d636f727065722c20616c6971756574206469616d2076656c2c2070656c6c656e746573717565206c6967756c612e2053656420616c6971756574206a7573746f20757420646f6c6f72207361676974746973206f726e6172652e2050656c6c656e746573717565206861626974616e74206d6f726269207472697374697175652073656e6563747573206574206e65747573206574206d616c6573756164612066616d65732061632074757270697320656765737461732e204e756c6c61206e6f6e207075727573206e6563206d61737361207665686963756c6120657569736d6f64206e6f6e2070756c76696e6172206475692e20446f6e65632076756c70757461746520696e74657264756d20656c656d656e74756d2e204375726162697475722074656d706f72206172637520757420756c6c616d636f7270657220706c6163657261742e205365642074696e636964756e7420656c656d656e74756d206e657175652c2061207665686963756c6120656e696d2e205072616573656e7420696e74657264756d206d61737361206964206c6163757320636f6e64696d656e74756d20706f73756572652e20566573746962756c756d2073656d20646f6c6f722c206672696e67696c6c612071756973207175616d2061632c20636f6e736563746574757220616c697175616d206c6f72656d2e204475697320696e207072657469756d206f7263692c206567657420616c697175616d2072697375732e205072616573656e7420616363756d73616e2076756c70757461746520746f72746f722061742072686f6e6375732e2053757370656e64697373652076756c70757461746520696e206c61637573207574206566666963697475722e2050656c6c656e746573717565206c6163696e69612075726e61206964206c696265726f20616c69717565742c2065752074696e636964756e7420746f72746f7220656c656d656e74756d2e2050726f696e20636f6e7365717561742c206d61676e61206964207665686963756c61206c616f726565742c206d61676e612065726f73206d61747469732073656d2c20696420706c6163657261742065726f7320617263752071756973206d657475732e204375726162697475722065676574206e65717565206964206e69736c2074696e636964756e742064696374756d2e2053757370656e646973736520706f74656e74692e20446f6e656320626962656e64756d20617563746f722065726f732e204f72636920766172697573206e61746f7175652070656e617469627573206574206d61676e6973206469732070617274757269656e74206d6f6e7465732c206e61736365747572207269646963756c7573206d75732e205365642068656e647265726974206d617373612071756973206c61637573206f726e617265207661726975732e20416c697175616d20616c697175616d206d657475732073697420616d6574206c6563747573207665686963756c612c20696420696e74657264756d20707572757320696d706572646965742e20536564206e6f6e20616e74652074656d706f722c20656c656966656e642065782076697461652c2066657567696174206c696265726f2e20446f6e6563206469616d20646f6c6f722c206661756369627573206e6f6e20697073756d2069642c20756c747269636573206c6f626f72746973206d617373612e2050726f696e206f726e617265206a7573746f206120616c6971756574206566666963697475722e20457469616d2070656c6c656e746573717565206e6571756520657420647569206d616c65737561646120616c69717565742e2053757370656e646973736520706f74656e74692e204e616d20617420636f6e76616c6c6973206f64696f2e2041656e65616e20706c616365726174206d617373612061632066656c6973206f726e6172652c20657520656c656966656e64206d6173736120766f6c75747061742e20517569737175652065726f732075726e612c20636f6d6d6f646f20636f6e76616c6c69732074757270697320696e2c2074726973746971756520656765737461732066656c69732e20457469616d206964207665686963756c61206c6f72656d2c2061206d617474697320656e696d2e2043726173206d6574757320657261742c206c616f726565742073697420616d65742072757472756d20696e2c2072757472756d2076697461652073656d2e204e756c6c6120666163696c6973692e204d6f72626920616363756d73616e2c2074656c6c757320616320756c6c616d636f72706572206c6f626f727469732c2076656c6974207175616d206661756369627573206f64696f2c20657420696d70657264696574206f64696f206475692061632073617069656e2e20416c697175616d2076756c7075746174652c206d657475732075742066617563696275732074696e636964756e742c206f64696f20707572757320756c74726963696573206d692c207669746165207072657469756d2066656c6973206573742072757472756d206a7573746f2e2050726f696e20636f6e76616c6c69732074656c6c7573206469676e697373696d206d6175726973206c6163696e69612c206574206f726e617265206c696265726f20666575676961742e20496e7465676572207072657469756d20677261766964612074656c6c7573206772617669646120617563746f722e204e756c6c616d206d61747469732068656e64726572697420636f6d6d6f646f2e204c6f72656d20697073756d20646f6c6f722073697420616d65742c20636f6e73656374657475722061646970697363696e6720656c69742e20496e74657264756d206574206d616c6573756164612066616d657320616320616e746520697073756d207072696d697320696e2066617563696275732e205072616573656e7420706f7274612074656c6c75732073697420616d6574206567657374617320616c697175616d2e204372617320626c616e6469742076656e656e61746973207665686963756c612e204e616d2061742065726f73206163206e756c6c61206d6178696d757320636f6e64696d656e74756d20696e206174206d657475732e204e756e63206e6f6e2065726f7320612073617069656e20626c616e646974206d6f6c65737469652e20457469616d206661756369627573206e697369206c616375732c20766974616520766573746962756c756d20747572706973207363656c657269737175652073697420616d65742e204d617572697320756c6c616d636f727065722076656c207175616d2073697420616d657420616c697175616d2e2050656c6c656e746573717565206861626974616e74206d6f726269207472697374697175652073656e6563747573206574206e65747573206574206d616c6573756164612066616d65732061632074757270697320656765737461732e205365642071756973206d61676e61206120707572757320706f72747469746f7220626962656e64756d207574206575207175616d2e20517569737175652073697420616d65742074656c6c75732069642066656c697320656666696369747572206d6178696d75732e20496e74656765722076656c2072697375732072697375732e20566976616d757320656c656966656e64206175677565206964206d6920736f6c6c696369747564696e2c207365642070756c76696e61722066656c69732073656d7065722e"}; +static const Dataset set15 = {"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed euismod magna at vehicula commodo. Sed in ullamcorper lacus, sed fermentum massa. Praesent ornare nunc ante, vitae sodales diam fermentum eget. Pellentesque sollicitudin augue et elit rutrum dignissim non vitae leo. Duis quis ipsum ullamcorper velit varius eleifend. Suspendisse nec ipsum lacinia, sodales augue vel, pretium ligula. Integer neque lorem, egestas id hendrerit non, volutpat a nisl. Aenean fringilla neque sed posuere mattis. Praesent nulla ipsum, interdum at interdum vitae, aliquam eu massa. Mauris vitae tristique justo. Curabitur ullamcorper id ipsum eget ullamcorper. Praesent malesuada placerat nisi eu pellentesque. Fusce augue odio, cursus sit amet lobortis ac, suscipit vel massa. Pellentesque nec vestibulum quam. In quis orci id diam aliquet ullamcorper. Interdum et malesuada fames ac ante ipsum primis in faucibus. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Etiam mattis molestie lacus. Nunc posuere turpis ullamcorper rutrum bibendum. Nam placerat vulputate ante ac auctor. Etiam vestibulum nisl felis, tristique dictum tellus lobortis et. Aliquam in enim viverra lorem mollis mattis vitae a metus. Donec eget turpis est. Nunc non mi euismod, iaculis quam in, aliquet lectus. Cras vel tempor odio. Vivamus auctor erat vel eros ullamcorper pulvinar. Curabitur et turpis non nibh pellentesque ultrices. Vestibulum ultrices laoreet convallis. Sed vel vestibulum ipsum. Pellentesque sollicitudin, quam in dictum rutrum, massa nulla imperdiet odio, nec egestas lorem dui vel turpis. Donec porttitor erat neque, a consectetur purus dignissim in. Praesent id velit et augue auctor maximus. Curabitur quis mauris in sapien blandit faucibus. Nullam facilisis euismod odio, sed ultrices neque molestie eget. Integer a mollis magna. Suspendisse venenatis mi sed tellus varius, sed pulvinar ipsum porta. Donec quis risus et dolor ultrices vestibulum sit amet fringilla ex. Integer bibendum magna non nisl pharetra tempus. Phasellus tincidunt augue et tellus cursus volutpat. Nam ac vulputate dui. Nunc tincidunt mauris porta dui dapibus, id blandit metus blandit. Fusce in velit ullamcorper, aliquet diam vel, pellentesque ligula. Sed aliquet justo ut dolor sagittis ornare. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Nulla non purus nec massa vehicula euismod non pulvinar dui. Donec vulputate interdum elementum. Curabitur tempor arcu ut ullamcorper placerat. Sed tincidunt elementum neque, a vehicula enim. Praesent interdum massa id lacus condimentum posuere. Vestibulum sem dolor, fringilla quis quam ac, consectetur aliquam lorem. Duis in pretium orci, eget aliquam risus. Praesent accumsan vulputate tortor at rhoncus. Suspendisse vulputate in lacus ut efficitur. Pellentesque lacinia urna id libero aliquet, eu tincidunt tortor elementum. Proin consequat, magna id vehicula laoreet, magna eros mattis sem, id placerat eros arcu quis metus. Curabitur eget neque id nisl tincidunt dictum. Suspendisse potenti. Donec bibendum auctor eros. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed hendrerit massa quis lacus ornare varius. Aliquam aliquam metus sit amet lectus vehicula, id interdum purus imperdiet. Sed non ante tempor, eleifend ex vitae, feugiat libero. Donec diam dolor, faucibus non ipsum id, ultrices lobortis massa. Proin ornare justo a aliquet efficitur. Etiam pellentesque neque et dui malesuada aliquet. Suspendisse potenti. Nam at convallis odio. Aenean placerat massa ac felis ornare, eu eleifend massa volutpat. Quisque eros urna, commodo convallis turpis in, tristique egestas felis. Etiam id vehicula lorem, a mattis enim. Cras metus erat, laoreet sit amet rutrum in, rutrum vitae sem. Nulla facilisi. Morbi accumsan, tellus ac ullamcorper lobortis, velit quam faucibus odio, et imperdiet odio dui ac sapien. Aliquam vulputate, metus ut faucibus tincidunt, odio purus ultricies mi, vitae pretium felis est rutrum justo. Proin convallis tellus dignissim mauris lacinia, et ornare libero feugiat. Integer pretium gravida tellus gravida auctor. Nullam mattis hendrerit commodo. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Interdum et malesuada fames ac ante ipsum primis in faucibus. Praesent porta tellus sit amet egestas aliquam. Cras blandit venenatis vehicula. Nam at eros ac nulla maximus condimentum in at metus. Nunc non eros a sapien blandit molestie. Etiam faucibus nisi lacus, vitae vestibulum turpis scelerisque sit amet. Mauris ullamcorper vel quam sit amet aliquam. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Sed quis magna a purus porttitor bibendum ut eu quam. Quisque sit amet tellus id felis efficitur maximus. Integer vel risus risus. Vivamus eleifend augue id mi sollicitudin, sed pulvinar felis semper", + "TG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQsIGNvbnNlY3RldHVyIGFkaXBpc2NpbmcgZWxpdC4gU2VkIGV1aXNtb2QgbWFnbmEgYXQgdmVoaWN1bGEgY29tbW9kby4gU2VkIGluIHVsbGFtY29ycGVyIGxhY3VzLCBzZWQgZmVybWVudHVtIG1hc3NhLiBQcmFlc2VudCBvcm5hcmUgbnVuYyBhbnRlLCB2aXRhZSBzb2RhbGVzIGRpYW0gZmVybWVudHVtIGVnZXQuIFBlbGxlbnRlc3F1ZSBzb2xsaWNpdHVkaW4gYXVndWUgZXQgZWxpdCBydXRydW0gZGlnbmlzc2ltIG5vbiB2aXRhZSBsZW8uIER1aXMgcXVpcyBpcHN1bSB1bGxhbWNvcnBlciB2ZWxpdCB2YXJpdXMgZWxlaWZlbmQuIFN1c3BlbmRpc3NlIG5lYyBpcHN1bSBsYWNpbmlhLCBzb2RhbGVzIGF1Z3VlIHZlbCwgcHJldGl1bSBsaWd1bGEuIEludGVnZXIgbmVxdWUgbG9yZW0sIGVnZXN0YXMgaWQgaGVuZHJlcml0IG5vbiwgdm9sdXRwYXQgYSBuaXNsLiBBZW5lYW4gZnJpbmdpbGxhIG5lcXVlIHNlZCBwb3N1ZXJlIG1hdHRpcy4gUHJhZXNlbnQgbnVsbGEgaXBzdW0sIGludGVyZHVtIGF0IGludGVyZHVtIHZpdGFlLCBhbGlxdWFtIGV1IG1hc3NhLiBNYXVyaXMgdml0YWUgdHJpc3RpcXVlIGp1c3RvLiBDdXJhYml0dXIgdWxsYW1jb3JwZXIgaWQgaXBzdW0gZWdldCB1bGxhbWNvcnBlci4gUHJhZXNlbnQgbWFsZXN1YWRhIHBsYWNlcmF0IG5pc2kgZXUgcGVsbGVudGVzcXVlLiBGdXNjZSBhdWd1ZSBvZGlvLCBjdXJzdXMgc2l0IGFtZXQgbG9ib3J0aXMgYWMsIHN1c2NpcGl0IHZlbCBtYXNzYS4gUGVsbGVudGVzcXVlIG5lYyB2ZXN0aWJ1bHVtIHF1YW0uIEluIHF1aXMgb3JjaSBpZCBkaWFtIGFsaXF1ZXQgdWxsYW1jb3JwZXIuIEludGVyZHVtIGV0IG1hbGVzdWFkYSBmYW1lcyBhYyBhbnRlIGlwc3VtIHByaW1pcyBpbiBmYXVjaWJ1cy4gTG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQsIGNvbnNlY3RldHVyIGFkaXBpc2NpbmcgZWxpdC4gRXRpYW0gbWF0dGlzIG1vbGVzdGllIGxhY3VzLiBOdW5jIHBvc3VlcmUgdHVycGlzIHVsbGFtY29ycGVyIHJ1dHJ1bSBiaWJlbmR1bS4gTmFtIHBsYWNlcmF0IHZ1bHB1dGF0ZSBhbnRlIGFjIGF1Y3Rvci4gRXRpYW0gdmVzdGlidWx1bSBuaXNsIGZlbGlzLCB0cmlzdGlxdWUgZGljdHVtIHRlbGx1cyBsb2JvcnRpcyBldC4gQWxpcXVhbSBpbiBlbmltIHZpdmVycmEgbG9yZW0gbW9sbGlzIG1hdHRpcyB2aXRhZSBhIG1ldHVzLiBEb25lYyBlZ2V0IHR1cnBpcyBlc3QuIE51bmMgbm9uIG1pIGV1aXNtb2QsIGlhY3VsaXMgcXVhbSBpbiwgYWxpcXVldCBsZWN0dXMuIENyYXMgdmVsIHRlbXBvciBvZGlvLiBWaXZhbXVzIGF1Y3RvciBlcmF0IHZlbCBlcm9zIHVsbGFtY29ycGVyIHB1bHZpbmFyLiBDdXJhYml0dXIgZXQgdHVycGlzIG5vbiBuaWJoIHBlbGxlbnRlc3F1ZSB1bHRyaWNlcy4gVmVzdGlidWx1bSB1bHRyaWNlcyBsYW9yZWV0IGNvbnZhbGxpcy4gU2VkIHZlbCB2ZXN0aWJ1bHVtIGlwc3VtLiBQZWxsZW50ZXNxdWUgc29sbGljaXR1ZGluLCBxdWFtIGluIGRpY3R1bSBydXRydW0sIG1hc3NhIG51bGxhIGltcGVyZGlldCBvZGlvLCBuZWMgZWdlc3RhcyBsb3JlbSBkdWkgdmVsIHR1cnBpcy4gRG9uZWMgcG9ydHRpdG9yIGVyYXQgbmVxdWUsIGEgY29uc2VjdGV0dXIgcHVydXMgZGlnbmlzc2ltIGluLiBQcmFlc2VudCBpZCB2ZWxpdCBldCBhdWd1ZSBhdWN0b3IgbWF4aW11cy4gQ3VyYWJpdHVyIHF1aXMgbWF1cmlzIGluIHNhcGllbiBibGFuZGl0IGZhdWNpYnVzLiBOdWxsYW0gZmFjaWxpc2lzIGV1aXNtb2Qgb2Rpbywgc2VkIHVsdHJpY2VzIG5lcXVlIG1vbGVzdGllIGVnZXQuIEludGVnZXIgYSBtb2xsaXMgbWFnbmEuIFN1c3BlbmRpc3NlIHZlbmVuYXRpcyBtaSBzZWQgdGVsbHVzIHZhcml1cywgc2VkIHB1bHZpbmFyIGlwc3VtIHBvcnRhLiBEb25lYyBxdWlzIHJpc3VzIGV0IGRvbG9yIHVsdHJpY2VzIHZlc3RpYnVsdW0gc2l0IGFtZXQgZnJpbmdpbGxhIGV4LiBJbnRlZ2VyIGJpYmVuZHVtIG1hZ25hIG5vbiBuaXNsIHBoYXJldHJhIHRlbXB1cy4gUGhhc2VsbHVzIHRpbmNpZHVudCBhdWd1ZSBldCB0ZWxsdXMgY3Vyc3VzIHZvbHV0cGF0LiBOYW0gYWMgdnVscHV0YXRlIGR1aS4gTnVuYyB0aW5jaWR1bnQgbWF1cmlzIHBvcnRhIGR1aSBkYXBpYnVzLCBpZCBibGFuZGl0IG1ldHVzIGJsYW5kaXQuIEZ1c2NlIGluIHZlbGl0IHVsbGFtY29ycGVyLCBhbGlxdWV0IGRpYW0gdmVsLCBwZWxsZW50ZXNxdWUgbGlndWxhLiBTZWQgYWxpcXVldCBqdXN0byB1dCBkb2xvciBzYWdpdHRpcyBvcm5hcmUuIFBlbGxlbnRlc3F1ZSBoYWJpdGFudCBtb3JiaSB0cmlzdGlxdWUgc2VuZWN0dXMgZXQgbmV0dXMgZXQgbWFsZXN1YWRhIGZhbWVzIGFjIHR1cnBpcyBlZ2VzdGFzLiBOdWxsYSBub24gcHVydXMgbmVjIG1hc3NhIHZlaGljdWxhIGV1aXNtb2Qgbm9uIHB1bHZpbmFyIGR1aS4gRG9uZWMgdnVscHV0YXRlIGludGVyZHVtIGVsZW1lbnR1bS4gQ3VyYWJpdHVyIHRlbXBvciBhcmN1IHV0IHVsbGFtY29ycGVyIHBsYWNlcmF0LiBTZWQgdGluY2lkdW50IGVsZW1lbnR1bSBuZXF1ZSwgYSB2ZWhpY3VsYSBlbmltLiBQcmFlc2VudCBpbnRlcmR1bSBtYXNzYSBpZCBsYWN1cyBjb25kaW1lbnR1bSBwb3N1ZXJlLiBWZXN0aWJ1bHVtIHNlbSBkb2xvciwgZnJpbmdpbGxhIHF1aXMgcXVhbSBhYywgY29uc2VjdGV0dXIgYWxpcXVhbSBsb3JlbS4gRHVpcyBpbiBwcmV0aXVtIG9yY2ksIGVnZXQgYWxpcXVhbSByaXN1cy4gUHJhZXNlbnQgYWNjdW1zYW4gdnVscHV0YXRlIHRvcnRvciBhdCByaG9uY3VzLiBTdXNwZW5kaXNzZSB2dWxwdXRhdGUgaW4gbGFjdXMgdXQgZWZmaWNpdHVyLiBQZWxsZW50ZXNxdWUgbGFjaW5pYSB1cm5hIGlkIGxpYmVybyBhbGlxdWV0LCBldSB0aW5jaWR1bnQgdG9ydG9yIGVsZW1lbnR1bS4gUHJvaW4gY29uc2VxdWF0LCBtYWduYSBpZCB2ZWhpY3VsYSBsYW9yZWV0LCBtYWduYSBlcm9zIG1hdHRpcyBzZW0sIGlkIHBsYWNlcmF0IGVyb3MgYXJjdSBxdWlzIG1ldHVzLiBDdXJhYml0dXIgZWdldCBuZXF1ZSBpZCBuaXNsIHRpbmNpZHVudCBkaWN0dW0uIFN1c3BlbmRpc3NlIHBvdGVudGkuIERvbmVjIGJpYmVuZHVtIGF1Y3RvciBlcm9zLiBPcmNpIHZhcml1cyBuYXRvcXVlIHBlbmF0aWJ1cyBldCBtYWduaXMgZGlzIHBhcnR1cmllbnQgbW9udGVzLCBuYXNjZXR1ciByaWRpY3VsdXMgbXVzLiBTZWQgaGVuZHJlcml0IG1hc3NhIHF1aXMgbGFjdXMgb3JuYXJlIHZhcml1cy4gQWxpcXVhbSBhbGlxdWFtIG1ldHVzIHNpdCBhbWV0IGxlY3R1cyB2ZWhpY3VsYSwgaWQgaW50ZXJkdW0gcHVydXMgaW1wZXJkaWV0LiBTZWQgbm9uIGFudGUgdGVtcG9yLCBlbGVpZmVuZCBleCB2aXRhZSwgZmV1Z2lhdCBsaWJlcm8uIERvbmVjIGRpYW0gZG9sb3IsIGZhdWNpYnVzIG5vbiBpcHN1bSBpZCwgdWx0cmljZXMgbG9ib3J0aXMgbWFzc2EuIFByb2luIG9ybmFyZSBqdXN0byBhIGFsaXF1ZXQgZWZmaWNpdHVyLiBFdGlhbSBwZWxsZW50ZXNxdWUgbmVxdWUgZXQgZHVpIG1hbGVzdWFkYSBhbGlxdWV0LiBTdXNwZW5kaXNzZSBwb3RlbnRpLiBOYW0gYXQgY29udmFsbGlzIG9kaW8uIEFlbmVhbiBwbGFjZXJhdCBtYXNzYSBhYyBmZWxpcyBvcm5hcmUsIGV1IGVsZWlmZW5kIG1hc3NhIHZvbHV0cGF0LiBRdWlzcXVlIGVyb3MgdXJuYSwgY29tbW9kbyBjb252YWxsaXMgdHVycGlzIGluLCB0cmlzdGlxdWUgZWdlc3RhcyBmZWxpcy4gRXRpYW0gaWQgdmVoaWN1bGEgbG9yZW0sIGEgbWF0dGlzIGVuaW0uIENyYXMgbWV0dXMgZXJhdCwgbGFvcmVldCBzaXQgYW1ldCBydXRydW0gaW4sIHJ1dHJ1bSB2aXRhZSBzZW0uIE51bGxhIGZhY2lsaXNpLiBNb3JiaSBhY2N1bXNhbiwgdGVsbHVzIGFjIHVsbGFtY29ycGVyIGxvYm9ydGlzLCB2ZWxpdCBxdWFtIGZhdWNpYnVzIG9kaW8sIGV0IGltcGVyZGlldCBvZGlvIGR1aSBhYyBzYXBpZW4uIEFsaXF1YW0gdnVscHV0YXRlLCBtZXR1cyB1dCBmYXVjaWJ1cyB0aW5jaWR1bnQsIG9kaW8gcHVydXMgdWx0cmljaWVzIG1pLCB2aXRhZSBwcmV0aXVtIGZlbGlzIGVzdCBydXRydW0ganVzdG8uIFByb2luIGNvbnZhbGxpcyB0ZWxsdXMgZGlnbmlzc2ltIG1hdXJpcyBsYWNpbmlhLCBldCBvcm5hcmUgbGliZXJvIGZldWdpYXQuIEludGVnZXIgcHJldGl1bSBncmF2aWRhIHRlbGx1cyBncmF2aWRhIGF1Y3Rvci4gTnVsbGFtIG1hdHRpcyBoZW5kcmVyaXQgY29tbW9kby4gTG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQsIGNvbnNlY3RldHVyIGFkaXBpc2NpbmcgZWxpdC4gSW50ZXJkdW0gZXQgbWFsZXN1YWRhIGZhbWVzIGFjIGFudGUgaXBzdW0gcHJpbWlzIGluIGZhdWNpYnVzLiBQcmFlc2VudCBwb3J0YSB0ZWxsdXMgc2l0IGFtZXQgZWdlc3RhcyBhbGlxdWFtLiBDcmFzIGJsYW5kaXQgdmVuZW5hdGlzIHZlaGljdWxhLiBOYW0gYXQgZXJvcyBhYyBudWxsYSBtYXhpbXVzIGNvbmRpbWVudHVtIGluIGF0IG1ldHVzLiBOdW5jIG5vbiBlcm9zIGEgc2FwaWVuIGJsYW5kaXQgbW9sZXN0aWUuIEV0aWFtIGZhdWNpYnVzIG5pc2kgbGFjdXMsIHZpdGFlIHZlc3RpYnVsdW0gdHVycGlzIHNjZWxlcmlzcXVlIHNpdCBhbWV0LiBNYXVyaXMgdWxsYW1jb3JwZXIgdmVsIHF1YW0gc2l0IGFtZXQgYWxpcXVhbS4gUGVsbGVudGVzcXVlIGhhYml0YW50IG1vcmJpIHRyaXN0aXF1ZSBzZW5lY3R1cyBldCBuZXR1cyBldCBtYWxlc3VhZGEgZmFtZXMgYWMgdHVycGlzIGVnZXN0YXMuIFNlZCBxdWlzIG1hZ25hIGEgcHVydXMgcG9ydHRpdG9yIGJpYmVuZHVtIHV0IGV1IHF1YW0uIFF1aXNxdWUgc2l0IGFtZXQgdGVsbHVzIGlkIGZlbGlzIGVmZmljaXR1ciBtYXhpbXVzLiBJbnRlZ2VyIHZlbCByaXN1cyByaXN1cy4gVml2YW11cyBlbGVpZmVuZCBhdWd1ZSBpZCBtaSBzb2xsaWNpdHVkaW4sIHNlZCBwdWx2aW5hciBmZWxpcyBzZW1wZXI=", + "4c6f72656d20697073756d20646f6c6f722073697420616d65742c20636f6e73656374657475722061646970697363696e6720656c69742e2053656420657569736d6f64206d61676e61206174207665686963756c6120636f6d6d6f646f2e2053656420696e20756c6c616d636f72706572206c616375732c20736564206665726d656e74756d206d617373612e205072616573656e74206f726e617265206e756e6320616e74652c20766974616520736f64616c6573206469616d206665726d656e74756d20656765742e2050656c6c656e74657371756520736f6c6c696369747564696e20617567756520657420656c69742072757472756d206469676e697373696d206e6f6e207669746165206c656f2e2044756973207175697320697073756d20756c6c616d636f727065722076656c69742076617269757320656c656966656e642e2053757370656e6469737365206e656320697073756d206c6163696e69612c20736f64616c65732061756775652076656c2c207072657469756d206c6967756c612e20496e7465676572206e65717565206c6f72656d2c20656765737461732069642068656e647265726974206e6f6e2c20766f6c75747061742061206e69736c2e2041656e65616e206672696e67696c6c61206e657175652073656420706f7375657265206d61747469732e205072616573656e74206e756c6c6120697073756d2c20696e74657264756d20617420696e74657264756d2076697461652c20616c697175616d206575206d617373612e204d617572697320766974616520747269737469717565206a7573746f2e2043757261626974757220756c6c616d636f7270657220696420697073756d206567657420756c6c616d636f727065722e205072616573656e74206d616c65737561646120706c616365726174206e6973692065752070656c6c656e7465737175652e204675736365206175677565206f64696f2c206375727375732073697420616d6574206c6f626f727469732061632c2073757363697069742076656c206d617373612e2050656c6c656e746573717565206e656320766573746962756c756d207175616d2e20496e2071756973206f726369206964206469616d20616c697175657420756c6c616d636f727065722e20496e74657264756d206574206d616c6573756164612066616d657320616320616e746520697073756d207072696d697320696e2066617563696275732e204c6f72656d20697073756d20646f6c6f722073697420616d65742c20636f6e73656374657475722061646970697363696e6720656c69742e20457469616d206d6174746973206d6f6c6573746965206c616375732e204e756e6320706f73756572652074757270697320756c6c616d636f727065722072757472756d20626962656e64756d2e204e616d20706c6163657261742076756c70757461746520616e746520616320617563746f722e20457469616d20766573746962756c756d206e69736c2066656c69732c207472697374697175652064696374756d2074656c6c7573206c6f626f727469732065742e20416c697175616d20696e20656e696d2076697665727261206c6f72656d206d6f6c6c6973206d61747469732076697461652061206d657475732e20446f6e6563206567657420747572706973206573742e204e756e63206e6f6e206d6920657569736d6f642c20696163756c6973207175616d20696e2c20616c6971756574206c65637475732e20437261732076656c2074656d706f72206f64696f2e20566976616d757320617563746f7220657261742076656c2065726f7320756c6c616d636f727065722070756c76696e61722e2043757261626974757220657420747572706973206e6f6e206e6962682070656c6c656e74657371756520756c7472696365732e20566573746962756c756d20756c747269636573206c616f7265657420636f6e76616c6c69732e205365642076656c20766573746962756c756d20697073756d2e2050656c6c656e74657371756520736f6c6c696369747564696e2c207175616d20696e2064696374756d2072757472756d2c206d61737361206e756c6c6120696d70657264696574206f64696f2c206e65632065676573746173206c6f72656d206475692076656c207475727069732e20446f6e656320706f72747469746f722065726174206e657175652c206120636f6e7365637465747572207075727573206469676e697373696d20696e2e205072616573656e742069642076656c697420657420617567756520617563746f72206d6178696d75732e204375726162697475722071756973206d617572697320696e2073617069656e20626c616e6469742066617563696275732e204e756c6c616d20666163696c6973697320657569736d6f64206f64696f2c2073656420756c747269636573206e65717565206d6f6c657374696520656765742e20496e74656765722061206d6f6c6c6973206d61676e612e2053757370656e64697373652076656e656e61746973206d69207365642074656c6c7573207661726975732c207365642070756c76696e617220697073756d20706f7274612e20446f6e6563207175697320726973757320657420646f6c6f7220756c74726963657320766573746962756c756d2073697420616d6574206672696e67696c6c612065782e20496e746567657220626962656e64756d206d61676e61206e6f6e206e69736c2070686172657472612074656d7075732e2050686173656c6c75732074696e636964756e742061756775652065742074656c6c75732063757273757320766f6c75747061742e204e616d2061632076756c707574617465206475692e204e756e632074696e636964756e74206d617572697320706f7274612064756920646170696275732c20696420626c616e646974206d6574757320626c616e6469742e20467573636520696e2076656c697420756c6c616d636f727065722c20616c6971756574206469616d2076656c2c2070656c6c656e746573717565206c6967756c612e2053656420616c6971756574206a7573746f20757420646f6c6f72207361676974746973206f726e6172652e2050656c6c656e746573717565206861626974616e74206d6f726269207472697374697175652073656e6563747573206574206e65747573206574206d616c6573756164612066616d65732061632074757270697320656765737461732e204e756c6c61206e6f6e207075727573206e6563206d61737361207665686963756c6120657569736d6f64206e6f6e2070756c76696e6172206475692e20446f6e65632076756c70757461746520696e74657264756d20656c656d656e74756d2e204375726162697475722074656d706f72206172637520757420756c6c616d636f7270657220706c6163657261742e205365642074696e636964756e7420656c656d656e74756d206e657175652c2061207665686963756c6120656e696d2e205072616573656e7420696e74657264756d206d61737361206964206c6163757320636f6e64696d656e74756d20706f73756572652e20566573746962756c756d2073656d20646f6c6f722c206672696e67696c6c612071756973207175616d2061632c20636f6e736563746574757220616c697175616d206c6f72656d2e204475697320696e207072657469756d206f7263692c206567657420616c697175616d2072697375732e205072616573656e7420616363756d73616e2076756c70757461746520746f72746f722061742072686f6e6375732e2053757370656e64697373652076756c70757461746520696e206c61637573207574206566666963697475722e2050656c6c656e746573717565206c6163696e69612075726e61206964206c696265726f20616c69717565742c2065752074696e636964756e7420746f72746f7220656c656d656e74756d2e2050726f696e20636f6e7365717561742c206d61676e61206964207665686963756c61206c616f726565742c206d61676e612065726f73206d61747469732073656d2c20696420706c6163657261742065726f7320617263752071756973206d657475732e204375726162697475722065676574206e65717565206964206e69736c2074696e636964756e742064696374756d2e2053757370656e646973736520706f74656e74692e20446f6e656320626962656e64756d20617563746f722065726f732e204f72636920766172697573206e61746f7175652070656e617469627573206574206d61676e6973206469732070617274757269656e74206d6f6e7465732c206e61736365747572207269646963756c7573206d75732e205365642068656e647265726974206d617373612071756973206c61637573206f726e617265207661726975732e20416c697175616d20616c697175616d206d657475732073697420616d6574206c6563747573207665686963756c612c20696420696e74657264756d20707572757320696d706572646965742e20536564206e6f6e20616e74652074656d706f722c20656c656966656e642065782076697461652c2066657567696174206c696265726f2e20446f6e6563206469616d20646f6c6f722c206661756369627573206e6f6e20697073756d2069642c20756c747269636573206c6f626f72746973206d617373612e2050726f696e206f726e617265206a7573746f206120616c6971756574206566666963697475722e20457469616d2070656c6c656e746573717565206e6571756520657420647569206d616c65737561646120616c69717565742e2053757370656e646973736520706f74656e74692e204e616d20617420636f6e76616c6c6973206f64696f2e2041656e65616e20706c616365726174206d617373612061632066656c6973206f726e6172652c20657520656c656966656e64206d6173736120766f6c75747061742e20517569737175652065726f732075726e612c20636f6d6d6f646f20636f6e76616c6c69732074757270697320696e2c2074726973746971756520656765737461732066656c69732e20457469616d206964207665686963756c61206c6f72656d2c2061206d617474697320656e696d2e2043726173206d6574757320657261742c206c616f726565742073697420616d65742072757472756d20696e2c2072757472756d2076697461652073656d2e204e756c6c6120666163696c6973692e204d6f72626920616363756d73616e2c2074656c6c757320616320756c6c616d636f72706572206c6f626f727469732c2076656c6974207175616d206661756369627573206f64696f2c20657420696d70657264696574206f64696f206475692061632073617069656e2e20416c697175616d2076756c7075746174652c206d657475732075742066617563696275732074696e636964756e742c206f64696f20707572757320756c74726963696573206d692c207669746165207072657469756d2066656c6973206573742072757472756d206a7573746f2e2050726f696e20636f6e76616c6c69732074656c6c7573206469676e697373696d206d6175726973206c6163696e69612c206574206f726e617265206c696265726f20666575676961742e20496e7465676572207072657469756d20677261766964612074656c6c7573206772617669646120617563746f722e204e756c6c616d206d61747469732068656e64726572697420636f6d6d6f646f2e204c6f72656d20697073756d20646f6c6f722073697420616d65742c20636f6e73656374657475722061646970697363696e6720656c69742e20496e74657264756d206574206d616c6573756164612066616d657320616320616e746520697073756d207072696d697320696e2066617563696275732e205072616573656e7420706f7274612074656c6c75732073697420616d6574206567657374617320616c697175616d2e204372617320626c616e6469742076656e656e61746973207665686963756c612e204e616d2061742065726f73206163206e756c6c61206d6178696d757320636f6e64696d656e74756d20696e206174206d657475732e204e756e63206e6f6e2065726f7320612073617069656e20626c616e646974206d6f6c65737469652e20457469616d206661756369627573206e697369206c616375732c20766974616520766573746962756c756d20747572706973207363656c657269737175652073697420616d65742e204d617572697320756c6c616d636f727065722076656c207175616d2073697420616d657420616c697175616d2e2050656c6c656e746573717565206861626974616e74206d6f726269207472697374697175652073656e6563747573206574206e65747573206574206d616c6573756164612066616d65732061632074757270697320656765737461732e205365642071756973206d61676e61206120707572757320706f72747469746f7220626962656e64756d207574206575207175616d2e20517569737175652073697420616d65742074656c6c75732069642066656c697320656666696369747572206d6178696d75732e20496e74656765722076656c2072697375732072697375732e20566976616d757320656c656966656e64206175677565206964206d6920736f6c6c696369747564696e2c207365642070756c76696e61722066656c69732073656d706572"}; +static const Dataset set16 = {"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed euismod magna at vehicula commodo. Sed in ullamcorper lacus, sed fermentum massa. Praesent ornare nunc ante, vitae sodales diam fermentum eget. Pellentesque sollicitudin augue et elit rutrum dignissim non vitae leo. Duis quis ipsum ullamcorper velit varius eleifend. Suspendisse nec ipsum lacinia, sodales augue vel, pretium ligula. Integer neque lorem, egestas id hendrerit non, volutpat a nisl. Aenean fringilla neque sed posuere mattis. Praesent nulla ipsum, interdum at interdum vitae, aliquam eu massa. Mauris vitae tristique justo. Curabitur ullamcorper id ipsum eget ullamcorper. Praesent malesuada placerat nisi eu pellentesque. Fusce augue odio, cursus sit amet lobortis ac, suscipit vel massa. Pellentesque nec vestibulum quam. In quis orci id diam aliquet ullamcorper. Interdum et malesuada fames ac ante ipsum primis in faucibus. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Etiam mattis molestie lacus. Nunc posuere turpis ullamcorper rutrum bibendum. Nam placerat vulputate ante ac auctor. Etiam vestibulum nisl felis, tristique dictum tellus lobortis et. Aliquam in enim viverra lorem mollis mattis vitae a metus. Donec eget turpis est. Nunc non mi euismod, iaculis quam in, aliquet lectus. Cras vel tempor odio. Vivamus auctor erat vel eros ullamcorper pulvinar. Curabitur et turpis non nibh pellentesque ultrices. Vestibulum ultrices laoreet convallis. Sed vel vestibulum ipsum. Pellentesque sollicitudin, quam in dictum rutrum, massa nulla imperdiet odio, nec egestas lorem dui vel turpis. Donec porttitor erat neque, a consectetur purus dignissim in. Praesent id velit et augue auctor maximus. Curabitur quis mauris in sapien blandit faucibus. Nullam facilisis euismod odio, sed ultrices neque molestie eget. Integer a mollis magna. Suspendisse venenatis mi sed tellus varius, sed pulvinar ipsum porta. Donec quis risus et dolor ultrices vestibulum sit amet fringilla ex. Integer bibendum magna non nisl pharetra tempus. Phasellus tincidunt augue et tellus cursus volutpat. Nam ac vulputate dui. Nunc tincidunt mauris porta dui dapibus, id blandit metus blandit. Fusce in velit ullamcorper, aliquet diam vel, pellentesque ligula. Sed aliquet justo ut dolor sagittis ornare. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Nulla non purus nec massa vehicula euismod non pulvinar dui. Donec vulputate interdum elementum. Curabitur tempor arcu ut ullamcorper placerat. Sed tincidunt elementum neque, a vehicula enim. Praesent interdum massa id lacus condimentum posuere. Vestibulum sem dolor, fringilla quis quam ac, consectetur aliquam lorem. Duis in pretium orci, eget aliquam risus. Praesent accumsan vulputate tortor at rhoncus. Suspendisse vulputate in lacus ut efficitur. Pellentesque lacinia urna id libero aliquet, eu tincidunt tortor elementum. Proin consequat, magna id vehicula laoreet, magna eros mattis sem, id placerat eros arcu quis metus. Curabitur eget neque id nisl tincidunt dictum. Suspendisse potenti. Donec bibendum auctor eros. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed hendrerit massa quis lacus ornare varius. Aliquam aliquam metus sit amet lectus vehicula, id interdum purus imperdiet. Sed non ante tempor, eleifend ex vitae, feugiat libero. Donec diam dolor, faucibus non ipsum id, ultrices lobortis massa. Proin ornare justo a aliquet efficitur. Etiam pellentesque neque et dui malesuada aliquet. Suspendisse potenti. Nam at convallis odio. Aenean placerat massa ac felis ornare, eu eleifend massa volutpat. Quisque eros urna, commodo convallis turpis in, tristique egestas felis. Etiam id vehicula lorem, a mattis enim. Cras metus erat, laoreet sit amet rutrum in, rutrum vitae sem. Nulla facilisi. Morbi accumsan, tellus ac ullamcorper lobortis, velit quam faucibus odio, et imperdiet odio dui ac sapien. Aliquam vulputate, metus ut faucibus tincidunt, odio purus ultricies mi, vitae pretium felis est rutrum justo. Proin convallis tellus dignissim mauris lacinia, et ornare libero feugiat. Integer pretium gravida tellus gravida auctor. Nullam mattis hendrerit commodo. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Interdum et malesuada fames ac ante ipsum primis in faucibus. Praesent porta tellus sit amet egestas aliquam. Cras blandit venenatis vehicula. Nam at eros ac nulla maximus condimentum in at metus. Nunc non eros a sapien blandit molestie. Etiam faucibus nisi lacus, vitae vestibulum turpis scelerisque sit amet. Mauris ullamcorper vel quam sit amet aliquam. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Sed quis magna a purus porttitor bibendum ut eu quam. Quisque sit amet tellus id felis efficitur maximus. Integer vel risus risus. Vivamus eleifend augue id mi sollicitudin, sed pulvinar felis sempe", + "TG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQsIGNvbnNlY3RldHVyIGFkaXBpc2NpbmcgZWxpdC4gU2VkIGV1aXNtb2QgbWFnbmEgYXQgdmVoaWN1bGEgY29tbW9kby4gU2VkIGluIHVsbGFtY29ycGVyIGxhY3VzLCBzZWQgZmVybWVudHVtIG1hc3NhLiBQcmFlc2VudCBvcm5hcmUgbnVuYyBhbnRlLCB2aXRhZSBzb2RhbGVzIGRpYW0gZmVybWVudHVtIGVnZXQuIFBlbGxlbnRlc3F1ZSBzb2xsaWNpdHVkaW4gYXVndWUgZXQgZWxpdCBydXRydW0gZGlnbmlzc2ltIG5vbiB2aXRhZSBsZW8uIER1aXMgcXVpcyBpcHN1bSB1bGxhbWNvcnBlciB2ZWxpdCB2YXJpdXMgZWxlaWZlbmQuIFN1c3BlbmRpc3NlIG5lYyBpcHN1bSBsYWNpbmlhLCBzb2RhbGVzIGF1Z3VlIHZlbCwgcHJldGl1bSBsaWd1bGEuIEludGVnZXIgbmVxdWUgbG9yZW0sIGVnZXN0YXMgaWQgaGVuZHJlcml0IG5vbiwgdm9sdXRwYXQgYSBuaXNsLiBBZW5lYW4gZnJpbmdpbGxhIG5lcXVlIHNlZCBwb3N1ZXJlIG1hdHRpcy4gUHJhZXNlbnQgbnVsbGEgaXBzdW0sIGludGVyZHVtIGF0IGludGVyZHVtIHZpdGFlLCBhbGlxdWFtIGV1IG1hc3NhLiBNYXVyaXMgdml0YWUgdHJpc3RpcXVlIGp1c3RvLiBDdXJhYml0dXIgdWxsYW1jb3JwZXIgaWQgaXBzdW0gZWdldCB1bGxhbWNvcnBlci4gUHJhZXNlbnQgbWFsZXN1YWRhIHBsYWNlcmF0IG5pc2kgZXUgcGVsbGVudGVzcXVlLiBGdXNjZSBhdWd1ZSBvZGlvLCBjdXJzdXMgc2l0IGFtZXQgbG9ib3J0aXMgYWMsIHN1c2NpcGl0IHZlbCBtYXNzYS4gUGVsbGVudGVzcXVlIG5lYyB2ZXN0aWJ1bHVtIHF1YW0uIEluIHF1aXMgb3JjaSBpZCBkaWFtIGFsaXF1ZXQgdWxsYW1jb3JwZXIuIEludGVyZHVtIGV0IG1hbGVzdWFkYSBmYW1lcyBhYyBhbnRlIGlwc3VtIHByaW1pcyBpbiBmYXVjaWJ1cy4gTG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQsIGNvbnNlY3RldHVyIGFkaXBpc2NpbmcgZWxpdC4gRXRpYW0gbWF0dGlzIG1vbGVzdGllIGxhY3VzLiBOdW5jIHBvc3VlcmUgdHVycGlzIHVsbGFtY29ycGVyIHJ1dHJ1bSBiaWJlbmR1bS4gTmFtIHBsYWNlcmF0IHZ1bHB1dGF0ZSBhbnRlIGFjIGF1Y3Rvci4gRXRpYW0gdmVzdGlidWx1bSBuaXNsIGZlbGlzLCB0cmlzdGlxdWUgZGljdHVtIHRlbGx1cyBsb2JvcnRpcyBldC4gQWxpcXVhbSBpbiBlbmltIHZpdmVycmEgbG9yZW0gbW9sbGlzIG1hdHRpcyB2aXRhZSBhIG1ldHVzLiBEb25lYyBlZ2V0IHR1cnBpcyBlc3QuIE51bmMgbm9uIG1pIGV1aXNtb2QsIGlhY3VsaXMgcXVhbSBpbiwgYWxpcXVldCBsZWN0dXMuIENyYXMgdmVsIHRlbXBvciBvZGlvLiBWaXZhbXVzIGF1Y3RvciBlcmF0IHZlbCBlcm9zIHVsbGFtY29ycGVyIHB1bHZpbmFyLiBDdXJhYml0dXIgZXQgdHVycGlzIG5vbiBuaWJoIHBlbGxlbnRlc3F1ZSB1bHRyaWNlcy4gVmVzdGlidWx1bSB1bHRyaWNlcyBsYW9yZWV0IGNvbnZhbGxpcy4gU2VkIHZlbCB2ZXN0aWJ1bHVtIGlwc3VtLiBQZWxsZW50ZXNxdWUgc29sbGljaXR1ZGluLCBxdWFtIGluIGRpY3R1bSBydXRydW0sIG1hc3NhIG51bGxhIGltcGVyZGlldCBvZGlvLCBuZWMgZWdlc3RhcyBsb3JlbSBkdWkgdmVsIHR1cnBpcy4gRG9uZWMgcG9ydHRpdG9yIGVyYXQgbmVxdWUsIGEgY29uc2VjdGV0dXIgcHVydXMgZGlnbmlzc2ltIGluLiBQcmFlc2VudCBpZCB2ZWxpdCBldCBhdWd1ZSBhdWN0b3IgbWF4aW11cy4gQ3VyYWJpdHVyIHF1aXMgbWF1cmlzIGluIHNhcGllbiBibGFuZGl0IGZhdWNpYnVzLiBOdWxsYW0gZmFjaWxpc2lzIGV1aXNtb2Qgb2Rpbywgc2VkIHVsdHJpY2VzIG5lcXVlIG1vbGVzdGllIGVnZXQuIEludGVnZXIgYSBtb2xsaXMgbWFnbmEuIFN1c3BlbmRpc3NlIHZlbmVuYXRpcyBtaSBzZWQgdGVsbHVzIHZhcml1cywgc2VkIHB1bHZpbmFyIGlwc3VtIHBvcnRhLiBEb25lYyBxdWlzIHJpc3VzIGV0IGRvbG9yIHVsdHJpY2VzIHZlc3RpYnVsdW0gc2l0IGFtZXQgZnJpbmdpbGxhIGV4LiBJbnRlZ2VyIGJpYmVuZHVtIG1hZ25hIG5vbiBuaXNsIHBoYXJldHJhIHRlbXB1cy4gUGhhc2VsbHVzIHRpbmNpZHVudCBhdWd1ZSBldCB0ZWxsdXMgY3Vyc3VzIHZvbHV0cGF0LiBOYW0gYWMgdnVscHV0YXRlIGR1aS4gTnVuYyB0aW5jaWR1bnQgbWF1cmlzIHBvcnRhIGR1aSBkYXBpYnVzLCBpZCBibGFuZGl0IG1ldHVzIGJsYW5kaXQuIEZ1c2NlIGluIHZlbGl0IHVsbGFtY29ycGVyLCBhbGlxdWV0IGRpYW0gdmVsLCBwZWxsZW50ZXNxdWUgbGlndWxhLiBTZWQgYWxpcXVldCBqdXN0byB1dCBkb2xvciBzYWdpdHRpcyBvcm5hcmUuIFBlbGxlbnRlc3F1ZSBoYWJpdGFudCBtb3JiaSB0cmlzdGlxdWUgc2VuZWN0dXMgZXQgbmV0dXMgZXQgbWFsZXN1YWRhIGZhbWVzIGFjIHR1cnBpcyBlZ2VzdGFzLiBOdWxsYSBub24gcHVydXMgbmVjIG1hc3NhIHZlaGljdWxhIGV1aXNtb2Qgbm9uIHB1bHZpbmFyIGR1aS4gRG9uZWMgdnVscHV0YXRlIGludGVyZHVtIGVsZW1lbnR1bS4gQ3VyYWJpdHVyIHRlbXBvciBhcmN1IHV0IHVsbGFtY29ycGVyIHBsYWNlcmF0LiBTZWQgdGluY2lkdW50IGVsZW1lbnR1bSBuZXF1ZSwgYSB2ZWhpY3VsYSBlbmltLiBQcmFlc2VudCBpbnRlcmR1bSBtYXNzYSBpZCBsYWN1cyBjb25kaW1lbnR1bSBwb3N1ZXJlLiBWZXN0aWJ1bHVtIHNlbSBkb2xvciwgZnJpbmdpbGxhIHF1aXMgcXVhbSBhYywgY29uc2VjdGV0dXIgYWxpcXVhbSBsb3JlbS4gRHVpcyBpbiBwcmV0aXVtIG9yY2ksIGVnZXQgYWxpcXVhbSByaXN1cy4gUHJhZXNlbnQgYWNjdW1zYW4gdnVscHV0YXRlIHRvcnRvciBhdCByaG9uY3VzLiBTdXNwZW5kaXNzZSB2dWxwdXRhdGUgaW4gbGFjdXMgdXQgZWZmaWNpdHVyLiBQZWxsZW50ZXNxdWUgbGFjaW5pYSB1cm5hIGlkIGxpYmVybyBhbGlxdWV0LCBldSB0aW5jaWR1bnQgdG9ydG9yIGVsZW1lbnR1bS4gUHJvaW4gY29uc2VxdWF0LCBtYWduYSBpZCB2ZWhpY3VsYSBsYW9yZWV0LCBtYWduYSBlcm9zIG1hdHRpcyBzZW0sIGlkIHBsYWNlcmF0IGVyb3MgYXJjdSBxdWlzIG1ldHVzLiBDdXJhYml0dXIgZWdldCBuZXF1ZSBpZCBuaXNsIHRpbmNpZHVudCBkaWN0dW0uIFN1c3BlbmRpc3NlIHBvdGVudGkuIERvbmVjIGJpYmVuZHVtIGF1Y3RvciBlcm9zLiBPcmNpIHZhcml1cyBuYXRvcXVlIHBlbmF0aWJ1cyBldCBtYWduaXMgZGlzIHBhcnR1cmllbnQgbW9udGVzLCBuYXNjZXR1ciByaWRpY3VsdXMgbXVzLiBTZWQgaGVuZHJlcml0IG1hc3NhIHF1aXMgbGFjdXMgb3JuYXJlIHZhcml1cy4gQWxpcXVhbSBhbGlxdWFtIG1ldHVzIHNpdCBhbWV0IGxlY3R1cyB2ZWhpY3VsYSwgaWQgaW50ZXJkdW0gcHVydXMgaW1wZXJkaWV0LiBTZWQgbm9uIGFudGUgdGVtcG9yLCBlbGVpZmVuZCBleCB2aXRhZSwgZmV1Z2lhdCBsaWJlcm8uIERvbmVjIGRpYW0gZG9sb3IsIGZhdWNpYnVzIG5vbiBpcHN1bSBpZCwgdWx0cmljZXMgbG9ib3J0aXMgbWFzc2EuIFByb2luIG9ybmFyZSBqdXN0byBhIGFsaXF1ZXQgZWZmaWNpdHVyLiBFdGlhbSBwZWxsZW50ZXNxdWUgbmVxdWUgZXQgZHVpIG1hbGVzdWFkYSBhbGlxdWV0LiBTdXNwZW5kaXNzZSBwb3RlbnRpLiBOYW0gYXQgY29udmFsbGlzIG9kaW8uIEFlbmVhbiBwbGFjZXJhdCBtYXNzYSBhYyBmZWxpcyBvcm5hcmUsIGV1IGVsZWlmZW5kIG1hc3NhIHZvbHV0cGF0LiBRdWlzcXVlIGVyb3MgdXJuYSwgY29tbW9kbyBjb252YWxsaXMgdHVycGlzIGluLCB0cmlzdGlxdWUgZWdlc3RhcyBmZWxpcy4gRXRpYW0gaWQgdmVoaWN1bGEgbG9yZW0sIGEgbWF0dGlzIGVuaW0uIENyYXMgbWV0dXMgZXJhdCwgbGFvcmVldCBzaXQgYW1ldCBydXRydW0gaW4sIHJ1dHJ1bSB2aXRhZSBzZW0uIE51bGxhIGZhY2lsaXNpLiBNb3JiaSBhY2N1bXNhbiwgdGVsbHVzIGFjIHVsbGFtY29ycGVyIGxvYm9ydGlzLCB2ZWxpdCBxdWFtIGZhdWNpYnVzIG9kaW8sIGV0IGltcGVyZGlldCBvZGlvIGR1aSBhYyBzYXBpZW4uIEFsaXF1YW0gdnVscHV0YXRlLCBtZXR1cyB1dCBmYXVjaWJ1cyB0aW5jaWR1bnQsIG9kaW8gcHVydXMgdWx0cmljaWVzIG1pLCB2aXRhZSBwcmV0aXVtIGZlbGlzIGVzdCBydXRydW0ganVzdG8uIFByb2luIGNvbnZhbGxpcyB0ZWxsdXMgZGlnbmlzc2ltIG1hdXJpcyBsYWNpbmlhLCBldCBvcm5hcmUgbGliZXJvIGZldWdpYXQuIEludGVnZXIgcHJldGl1bSBncmF2aWRhIHRlbGx1cyBncmF2aWRhIGF1Y3Rvci4gTnVsbGFtIG1hdHRpcyBoZW5kcmVyaXQgY29tbW9kby4gTG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQsIGNvbnNlY3RldHVyIGFkaXBpc2NpbmcgZWxpdC4gSW50ZXJkdW0gZXQgbWFsZXN1YWRhIGZhbWVzIGFjIGFudGUgaXBzdW0gcHJpbWlzIGluIGZhdWNpYnVzLiBQcmFlc2VudCBwb3J0YSB0ZWxsdXMgc2l0IGFtZXQgZWdlc3RhcyBhbGlxdWFtLiBDcmFzIGJsYW5kaXQgdmVuZW5hdGlzIHZlaGljdWxhLiBOYW0gYXQgZXJvcyBhYyBudWxsYSBtYXhpbXVzIGNvbmRpbWVudHVtIGluIGF0IG1ldHVzLiBOdW5jIG5vbiBlcm9zIGEgc2FwaWVuIGJsYW5kaXQgbW9sZXN0aWUuIEV0aWFtIGZhdWNpYnVzIG5pc2kgbGFjdXMsIHZpdGFlIHZlc3RpYnVsdW0gdHVycGlzIHNjZWxlcmlzcXVlIHNpdCBhbWV0LiBNYXVyaXMgdWxsYW1jb3JwZXIgdmVsIHF1YW0gc2l0IGFtZXQgYWxpcXVhbS4gUGVsbGVudGVzcXVlIGhhYml0YW50IG1vcmJpIHRyaXN0aXF1ZSBzZW5lY3R1cyBldCBuZXR1cyBldCBtYWxlc3VhZGEgZmFtZXMgYWMgdHVycGlzIGVnZXN0YXMuIFNlZCBxdWlzIG1hZ25hIGEgcHVydXMgcG9ydHRpdG9yIGJpYmVuZHVtIHV0IGV1IHF1YW0uIFF1aXNxdWUgc2l0IGFtZXQgdGVsbHVzIGlkIGZlbGlzIGVmZmljaXR1ciBtYXhpbXVzLiBJbnRlZ2VyIHZlbCByaXN1cyByaXN1cy4gVml2YW11cyBlbGVpZmVuZCBhdWd1ZSBpZCBtaSBzb2xsaWNpdHVkaW4sIHNlZCBwdWx2aW5hciBmZWxpcyBzZW1wZQ==", + "4c6f72656d20697073756d20646f6c6f722073697420616d65742c20636f6e73656374657475722061646970697363696e6720656c69742e2053656420657569736d6f64206d61676e61206174207665686963756c6120636f6d6d6f646f2e2053656420696e20756c6c616d636f72706572206c616375732c20736564206665726d656e74756d206d617373612e205072616573656e74206f726e617265206e756e6320616e74652c20766974616520736f64616c6573206469616d206665726d656e74756d20656765742e2050656c6c656e74657371756520736f6c6c696369747564696e20617567756520657420656c69742072757472756d206469676e697373696d206e6f6e207669746165206c656f2e2044756973207175697320697073756d20756c6c616d636f727065722076656c69742076617269757320656c656966656e642e2053757370656e6469737365206e656320697073756d206c6163696e69612c20736f64616c65732061756775652076656c2c207072657469756d206c6967756c612e20496e7465676572206e65717565206c6f72656d2c20656765737461732069642068656e647265726974206e6f6e2c20766f6c75747061742061206e69736c2e2041656e65616e206672696e67696c6c61206e657175652073656420706f7375657265206d61747469732e205072616573656e74206e756c6c6120697073756d2c20696e74657264756d20617420696e74657264756d2076697461652c20616c697175616d206575206d617373612e204d617572697320766974616520747269737469717565206a7573746f2e2043757261626974757220756c6c616d636f7270657220696420697073756d206567657420756c6c616d636f727065722e205072616573656e74206d616c65737561646120706c616365726174206e6973692065752070656c6c656e7465737175652e204675736365206175677565206f64696f2c206375727375732073697420616d6574206c6f626f727469732061632c2073757363697069742076656c206d617373612e2050656c6c656e746573717565206e656320766573746962756c756d207175616d2e20496e2071756973206f726369206964206469616d20616c697175657420756c6c616d636f727065722e20496e74657264756d206574206d616c6573756164612066616d657320616320616e746520697073756d207072696d697320696e2066617563696275732e204c6f72656d20697073756d20646f6c6f722073697420616d65742c20636f6e73656374657475722061646970697363696e6720656c69742e20457469616d206d6174746973206d6f6c6573746965206c616375732e204e756e6320706f73756572652074757270697320756c6c616d636f727065722072757472756d20626962656e64756d2e204e616d20706c6163657261742076756c70757461746520616e746520616320617563746f722e20457469616d20766573746962756c756d206e69736c2066656c69732c207472697374697175652064696374756d2074656c6c7573206c6f626f727469732065742e20416c697175616d20696e20656e696d2076697665727261206c6f72656d206d6f6c6c6973206d61747469732076697461652061206d657475732e20446f6e6563206567657420747572706973206573742e204e756e63206e6f6e206d6920657569736d6f642c20696163756c6973207175616d20696e2c20616c6971756574206c65637475732e20437261732076656c2074656d706f72206f64696f2e20566976616d757320617563746f7220657261742076656c2065726f7320756c6c616d636f727065722070756c76696e61722e2043757261626974757220657420747572706973206e6f6e206e6962682070656c6c656e74657371756520756c7472696365732e20566573746962756c756d20756c747269636573206c616f7265657420636f6e76616c6c69732e205365642076656c20766573746962756c756d20697073756d2e2050656c6c656e74657371756520736f6c6c696369747564696e2c207175616d20696e2064696374756d2072757472756d2c206d61737361206e756c6c6120696d70657264696574206f64696f2c206e65632065676573746173206c6f72656d206475692076656c207475727069732e20446f6e656320706f72747469746f722065726174206e657175652c206120636f6e7365637465747572207075727573206469676e697373696d20696e2e205072616573656e742069642076656c697420657420617567756520617563746f72206d6178696d75732e204375726162697475722071756973206d617572697320696e2073617069656e20626c616e6469742066617563696275732e204e756c6c616d20666163696c6973697320657569736d6f64206f64696f2c2073656420756c747269636573206e65717565206d6f6c657374696520656765742e20496e74656765722061206d6f6c6c6973206d61676e612e2053757370656e64697373652076656e656e61746973206d69207365642074656c6c7573207661726975732c207365642070756c76696e617220697073756d20706f7274612e20446f6e6563207175697320726973757320657420646f6c6f7220756c74726963657320766573746962756c756d2073697420616d6574206672696e67696c6c612065782e20496e746567657220626962656e64756d206d61676e61206e6f6e206e69736c2070686172657472612074656d7075732e2050686173656c6c75732074696e636964756e742061756775652065742074656c6c75732063757273757320766f6c75747061742e204e616d2061632076756c707574617465206475692e204e756e632074696e636964756e74206d617572697320706f7274612064756920646170696275732c20696420626c616e646974206d6574757320626c616e6469742e20467573636520696e2076656c697420756c6c616d636f727065722c20616c6971756574206469616d2076656c2c2070656c6c656e746573717565206c6967756c612e2053656420616c6971756574206a7573746f20757420646f6c6f72207361676974746973206f726e6172652e2050656c6c656e746573717565206861626974616e74206d6f726269207472697374697175652073656e6563747573206574206e65747573206574206d616c6573756164612066616d65732061632074757270697320656765737461732e204e756c6c61206e6f6e207075727573206e6563206d61737361207665686963756c6120657569736d6f64206e6f6e2070756c76696e6172206475692e20446f6e65632076756c70757461746520696e74657264756d20656c656d656e74756d2e204375726162697475722074656d706f72206172637520757420756c6c616d636f7270657220706c6163657261742e205365642074696e636964756e7420656c656d656e74756d206e657175652c2061207665686963756c6120656e696d2e205072616573656e7420696e74657264756d206d61737361206964206c6163757320636f6e64696d656e74756d20706f73756572652e20566573746962756c756d2073656d20646f6c6f722c206672696e67696c6c612071756973207175616d2061632c20636f6e736563746574757220616c697175616d206c6f72656d2e204475697320696e207072657469756d206f7263692c206567657420616c697175616d2072697375732e205072616573656e7420616363756d73616e2076756c70757461746520746f72746f722061742072686f6e6375732e2053757370656e64697373652076756c70757461746520696e206c61637573207574206566666963697475722e2050656c6c656e746573717565206c6163696e69612075726e61206964206c696265726f20616c69717565742c2065752074696e636964756e7420746f72746f7220656c656d656e74756d2e2050726f696e20636f6e7365717561742c206d61676e61206964207665686963756c61206c616f726565742c206d61676e612065726f73206d61747469732073656d2c20696420706c6163657261742065726f7320617263752071756973206d657475732e204375726162697475722065676574206e65717565206964206e69736c2074696e636964756e742064696374756d2e2053757370656e646973736520706f74656e74692e20446f6e656320626962656e64756d20617563746f722065726f732e204f72636920766172697573206e61746f7175652070656e617469627573206574206d61676e6973206469732070617274757269656e74206d6f6e7465732c206e61736365747572207269646963756c7573206d75732e205365642068656e647265726974206d617373612071756973206c61637573206f726e617265207661726975732e20416c697175616d20616c697175616d206d657475732073697420616d6574206c6563747573207665686963756c612c20696420696e74657264756d20707572757320696d706572646965742e20536564206e6f6e20616e74652074656d706f722c20656c656966656e642065782076697461652c2066657567696174206c696265726f2e20446f6e6563206469616d20646f6c6f722c206661756369627573206e6f6e20697073756d2069642c20756c747269636573206c6f626f72746973206d617373612e2050726f696e206f726e617265206a7573746f206120616c6971756574206566666963697475722e20457469616d2070656c6c656e746573717565206e6571756520657420647569206d616c65737561646120616c69717565742e2053757370656e646973736520706f74656e74692e204e616d20617420636f6e76616c6c6973206f64696f2e2041656e65616e20706c616365726174206d617373612061632066656c6973206f726e6172652c20657520656c656966656e64206d6173736120766f6c75747061742e20517569737175652065726f732075726e612c20636f6d6d6f646f20636f6e76616c6c69732074757270697320696e2c2074726973746971756520656765737461732066656c69732e20457469616d206964207665686963756c61206c6f72656d2c2061206d617474697320656e696d2e2043726173206d6574757320657261742c206c616f726565742073697420616d65742072757472756d20696e2c2072757472756d2076697461652073656d2e204e756c6c6120666163696c6973692e204d6f72626920616363756d73616e2c2074656c6c757320616320756c6c616d636f72706572206c6f626f727469732c2076656c6974207175616d206661756369627573206f64696f2c20657420696d70657264696574206f64696f206475692061632073617069656e2e20416c697175616d2076756c7075746174652c206d657475732075742066617563696275732074696e636964756e742c206f64696f20707572757320756c74726963696573206d692c207669746165207072657469756d2066656c6973206573742072757472756d206a7573746f2e2050726f696e20636f6e76616c6c69732074656c6c7573206469676e697373696d206d6175726973206c6163696e69612c206574206f726e617265206c696265726f20666575676961742e20496e7465676572207072657469756d20677261766964612074656c6c7573206772617669646120617563746f722e204e756c6c616d206d61747469732068656e64726572697420636f6d6d6f646f2e204c6f72656d20697073756d20646f6c6f722073697420616d65742c20636f6e73656374657475722061646970697363696e6720656c69742e20496e74657264756d206574206d616c6573756164612066616d657320616320616e746520697073756d207072696d697320696e2066617563696275732e205072616573656e7420706f7274612074656c6c75732073697420616d6574206567657374617320616c697175616d2e204372617320626c616e6469742076656e656e61746973207665686963756c612e204e616d2061742065726f73206163206e756c6c61206d6178696d757320636f6e64696d656e74756d20696e206174206d657475732e204e756e63206e6f6e2065726f7320612073617069656e20626c616e646974206d6f6c65737469652e20457469616d206661756369627573206e697369206c616375732c20766974616520766573746962756c756d20747572706973207363656c657269737175652073697420616d65742e204d617572697320756c6c616d636f727065722076656c207175616d2073697420616d657420616c697175616d2e2050656c6c656e746573717565206861626974616e74206d6f726269207472697374697175652073656e6563747573206574206e65747573206574206d616c6573756164612066616d65732061632074757270697320656765737461732e205365642071756973206d61676e61206120707572757320706f72747469746f7220626962656e64756d207574206575207175616d2e20517569737175652073697420616d65742074656c6c75732069642066656c697320656666696369747572206d6178696d75732e20496e74656765722076656c2072697375732072697375732e20566976616d757320656c656966656e64206175677565206964206d6920736f6c6c696369747564696e2c207365642070756c76696e61722066656c69732073656d7065"}; static const Dataset set17 = {"ąćęłńóśźż", "xIXEh8SZxYLFhMOzxZvFusW8", "c485c487c499c582c584c3b3c59bc5bac5bc"}; static const Dataset set18 = {"ÄÖÜẞ", "w4TDlsOc4bqe", "c384c396c39ce1ba9e"}; static const Dataset set19 = { diff --git a/native-tests/ReactNativeEncodingTests.cpp b/native-tests/ReactNativeEncodingTests.cpp index 8ffbb0e..25b9970 100644 --- a/native-tests/ReactNativeEncodingTests.cpp +++ b/native-tests/ReactNativeEncodingTests.cpp @@ -12,11 +12,12 @@ TEST_P(Base64DecodeTest, ShouldDecodeBase64BufferToUTF8String) { EXPECT_EQ(result, this->output); } -INSTANTIATE_TEST_SUITE_P( - Base64DecodeTestSuite, - Base64DecodeTest, - testing::ValuesIn(dataset), - [](const testing::TestParamInfo &info) { return std::to_string(info.index); }); +INSTANTIATE_TEST_SUITE_P(Base64DecodeTestSuite, + Base64DecodeTest, + testing::ValuesIn(dataset), + [](const testing::TestParamInfo &info) { + return std::to_string(info.index); + }); TEST_P(Base64EncodeTest, ShouldEncodeUTF8BufferToBase64String) { auto result = @@ -24,30 +25,33 @@ TEST_P(Base64EncodeTest, ShouldEncodeUTF8BufferToBase64String) { EXPECT_EQ(result, this->output); } -INSTANTIATE_TEST_SUITE_P( - Base64EncodeTestSuite, - Base64EncodeTest, - testing::ValuesIn(dataset), - [](const testing::TestParamInfo &info) { return std::to_string(info.index); }); +INSTANTIATE_TEST_SUITE_P(Base64EncodeTestSuite, + Base64EncodeTest, + testing::ValuesIn(dataset), + [](const testing::TestParamInfo &info) { + return std::to_string(info.index); + }); TEST_P(HexDecodeTest, ShouldDecodeHexStringToUTF8String) { auto result = decodeFromHexStringToUTF8String(this->input); EXPECT_EQ(result, this->output); } -INSTANTIATE_TEST_SUITE_P( - HexDecodeTestSuite, - HexDecodeTest, - testing::ValuesIn(dataset), - [](const testing::TestParamInfo &info) { return std::to_string(info.index); }); +INSTANTIATE_TEST_SUITE_P(HexDecodeTestSuite, + HexDecodeTest, + testing::ValuesIn(dataset), + [](const testing::TestParamInfo &info) { + return std::to_string(info.index); + }); TEST_P(HexEncodeTest, ShouldEncodeUTF8StringToHexString) { auto result = encodeFromUTF8StringToHexString(this->input); EXPECT_EQ(result, this->output); } -INSTANTIATE_TEST_SUITE_P( - HexEncodeTestSuite, - HexEncodeTest, - testing::ValuesIn(dataset), - [](const testing::TestParamInfo &info) { return std::to_string(info.index); }); +INSTANTIATE_TEST_SUITE_P(HexEncodeTestSuite, + HexEncodeTest, + testing::ValuesIn(dataset), + [](const testing::TestParamInfo &info) { + return std::to_string(info.index); + });