diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 5c2b3f22..f923475e 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -25,13 +25,11 @@ jobs: runs-on: ${{ matrix.os }} steps: - uses: actions/checkout@v2 - with: - submodules: recursive - - name: Install Rust 1.68.2 + - name: Install Rust 1.77.1 run: | - rustup toolchain install 1.68.2 - rustup target add wasm32-wasi --toolchain 1.68.2 + rustup toolchain install 1.77.1 + rustup target add wasm32-wasi --toolchain 1.77.1 - uses: actions/setup-node@v2 with: @@ -45,3 +43,37 @@ jobs: - name: StarlingMonkey E2E & Integration Tests run: | CTEST_OUTPUT_ON_FAILURE=1 ctest --test-dir cmake-build-debug -j4 + + wpt: + name: Web Platform Tests + strategy: + matrix: + build: [release] + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + with: + submodules: recursive + + - name: Install Rust 1.77.1 + run: | + rustup toolchain install 1.77.1 + rustup target add wasm32-wasi --toolchain 1.77.1 + + - uses: actions/setup-node@v2 + with: + node-version: 'lts/*' + + - name: Build StarlingMonkey WPT + run: | + cmake -S . -B cmake-build-${{ matrix.build }} -DENABLE_WPT:BOOL=ON -DCMAKE_BUILD_TYPE=${{ matrix.build == 'release' && 'Release' || 'Debug' }} + cmake --build cmake-build-${{ matrix.build }} --parallel 4 --target wpt-runtime + + - name: Prepare WPT hosts + run: | + cat deps/wpt-hosts | sudo tee -a /etc/hosts + + - name: StarlingMonkey WPT Test + env: + CTEST_OUTPUT_ON_FAILURE: 1 + run: ctest -R wpt --test-dir cmake-build-${{ matrix.build }} --verbose diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 00000000..e69de29b diff --git a/README.md b/README.md index c0bde81f..5929d292 100644 --- a/README.md +++ b/README.md @@ -73,33 +73,41 @@ cd cmake-build-release ./componentize.sh ../tests/smoke.js ``` +## Web Platform Tests -## Thorough testing with the Web Platform Tests suite +To run the [Web Platform Tests](https://web-platform-tests.org/) suite, the WPT runner requires `Node.js` to be installed, and during build configuration the option `ENABLE_WPT:BOOL=ON` must be set. -StarlingMonkey includes a test runner for the [Web Platform Tests](https://web-platform-tests.org/) suite. The test runner is built as part of the `starling.wasm` runtime, and can be run using the `wpt-test` target. +```bash +cmake -S . -B cmake-build-debug -DENABLE_WPT:BOOL=ON -DCMAKE_BUILD_TYPE=Debug +cmake --build cmake-build-debug --parallel 8 --target wpt-runtime +cd cmake-build-debug +ctest -R wpt --verbose # Note: some of the tests run fairly slowly in debug builds, so be patient +``` + +The Web Platform Tests checkout can also be customized by setting the `WPT_ROOT=[path to your WPT checkout]` environment variable to the cmake command. -### Requirements +WPT tests can be filtered with the `WPT_FILTER=string` variable, for example: -The WPT runner requires `Node.js` to be installed, and during build configuration the option `ENABLE_WPT:BOOL=ON` must be set. +```bash +WPT_FILTER=fetch ctest -R wpt -v +``` -When running the test, `WPT_ROOT` must be set to the path of a checkout of the WPT suite at revision `1014eae5e66f8f334610d5a1521756f7a2fb769f`: +Custom flags can also be passed to the test runner via `WPT_FLAGS="..."`, for example to update expectations use: ```bash -WPT_ROOT=[path to your WPT checkout] cmake -S . -B cmake-build-debug -DENABLE_WPT:BOOL=ON -DCMAKE_BUILD_TYPE=Debug -cmake --build cmake-build-debug --parallel 8 --target wpt-runtime -cd cmake-build-debug -ctest --verbose # Note: some of the tests run fairly slowly in debug builds, so be patient +WPT_FLAGS="--update-expectations" ctest -R wpt -v ``` ## Configuring available builtins + StarlingMonkey supports enabling/disabling bundled builtins using CMake options. You can get a full list of bundled builtins by running the following shell command: + ```shell cmake -P [PATH_TO_STARLING_MONKEY]/cmake/builtins.cmake ``` Note that it's required to include builtins defining all exports defined by the used host API. Using the default WASI 0.2.0 host API, that means including the `fetch_event` builtin. - ## Using StarlingMonkey as a CMake sub-project StarlingMonkey can be used as a subproject in a larger CMake project. @@ -145,6 +153,10 @@ If your builtin requires multiple `.cpp` files, you can pass all of them to `add ### Providing a custom host API implementation -The [host-apis](host-apis) directory contains implementations of the host API for different versions of WASI. Those can be selected by setting the `HOST_API` environment variable to the name of one of the directories. By default, the [wasi-0.2.0](host-apis/wasi-0.2.0) host API is used. +The [host-apis](host-apis) directory can contain implementations of the host API for different +versions of WASI—or in theory any other host interface. Those can be selected by setting the +`HOST_API` environment variable to the +name of one of the directories. Currently, only an implementation in terms of [wasi-0.2.0] +(host-apis/wasi-0.2.0) is provided, and used by default. To provide a custom host API implementation, you can set `HOST_API` to the (absolute) path of a directory containing that implementation. diff --git a/builtins/web/base64.cpp b/builtins/web/base64.cpp index 5b34dd23..76106543 100644 --- a/builtins/web/base64.cpp +++ b/builtins/web/base64.cpp @@ -1,18 +1,21 @@ #include "base64.h" #include "mozilla/Try.h" +#include "builtin.h" + +DEF_ERR(InvalidCharacterError, JSEXN_RANGEERR, "String contains an invalid character", 0) namespace builtins { namespace web { namespace base64 { -JS::Result convertJSValueToByteString(JSContext *cx, JS::Handle v) { +JS::Result valueToJSByteString(JSContext *cx, JS::Handle v) { JS::RootedString s(cx); if (v.isString()) { s = v.toString(); } else { s = JS::ToString(cx, v); if (!s) { - JS_ReportErrorNumberUTF8(cx, GetErrorMessage, nullptr, JSMSG_INVALID_CHARACTER_ERROR); + api::throw_error(cx, InvalidCharacterError); return JS::Result(JS::Error()); } } @@ -20,35 +23,33 @@ JS::Result convertJSValueToByteString(JSContext *cx, JS::Handle(JS::Error()); - } - - for (size_t i = 0; i < length; i++) { - if (chars[i] > 255) { - foundBadChar = true; - break; - } - } + JS::AutoCheckCannotGC nogc(cx); + const char16_t *chars = JS_GetTwoByteStringCharsAndLength(cx, nogc, s, &length); + if (!chars) { + // Reset the nogc guard, since otherwise we can't throw errors. + nogc.reset(); + api::throw_error(cx, InvalidCharacterError); + return JS::Result(JS::Error()); } - if (foundBadChar) { - JS_ReportErrorNumberUTF8(cx, GetErrorMessage, nullptr, JSMSG_INVALID_CHARACTER_ERROR); - return JS::Result(JS::Error()); + for (size_t i = 0; i < length; i++) { + if (chars[i] > 255) { + // Reset the nogc guard, since otherwise we can't throw errors. + nogc.reset(); + api::throw_error(cx, InvalidCharacterError); + return JS::Result(JS::Error()); + } } + auto latin1_z = + JS::LossyTwoByteCharsToNewLatin1CharsZ(cx, chars, length); + result = UniqueChars(reinterpret_cast(latin1_z.get())); } else { length = JS::GetStringLength(s); + result = JS_EncodeStringToLatin1(cx, s); } - UniqueChars result = JS_EncodeStringToLatin1(cx, s); if (!result) { return JS::Result(JS::Error()); } @@ -56,10 +57,10 @@ JS::Result convertJSValueToByteString(JSContext *cx, JS::Handle convertJSValueToByteString(JSContext *cx, std::string v) { +JS::Result stringToJSByteString(JSContext *cx, std::string v) { JS::RootedValue s(cx); s.setString(JS_NewStringCopyN(cx, v.c_str(), v.length())); - return convertJSValueToByteString(cx, s); + return valueToJSByteString(cx, s); } // Maps an encoded character to a value in the Base64 alphabet, per @@ -297,7 +298,7 @@ bool atob(JSContext *cx, unsigned argc, Value *vp) { if (!args.requireAtLeast(cx, "atob", 1)) { return false; } - auto dataResult = convertJSValueToByteString(cx, args.get(0)); + auto dataResult = valueToJSByteString(cx, args.get(0)); if (dataResult.isErr()) { return false; } @@ -309,8 +310,7 @@ bool atob(JSContext *cx, unsigned argc, Value *vp) { // 2. If decodedData is failure, then throw an "InvalidCharacterError" // DOMException. if (decoded_result.isErr()) { - JS_ReportErrorNumberUTF8(cx, GetErrorMessage, nullptr, JSMSG_INVALID_CHARACTER_ERROR); - return false; + return api::throw_error(cx, InvalidCharacterError); } auto decoded = decoded_result.unwrap(); RootedString decodedData(cx, JS_NewStringCopyN(cx, decoded.c_str(), decoded.length())); @@ -407,7 +407,7 @@ bool btoa(JSContext *cx, unsigned argc, Value *vp) { // Note: We do not check if data contains any character whose code point is // greater than U+00FF before calling convertJSValueToByteString as // convertJSValueToByteString does the same check - auto byteStringResult = convertJSValueToByteString(cx, data); + auto byteStringResult = valueToJSByteString(cx, data); if (byteStringResult.isErr()) { return false; } @@ -417,9 +417,7 @@ bool btoa(JSContext *cx, unsigned argc, Value *vp) { JSString *str = JS_NewStringCopyN(cx, result.c_str(), result.length()); if (!str) { - JS_ReportErrorNumberUTF8(cx, GetErrorMessage, nullptr, JSMSG_INVALID_CHARACTER_ERROR); - - return false; + return api::throw_error(cx, InvalidCharacterError); } out.setString(str); diff --git a/builtins/web/base64.h b/builtins/web/base64.h index d72eb498..ece79139 100644 --- a/builtins/web/base64.h +++ b/builtins/web/base64.h @@ -17,7 +17,8 @@ extern const char base64URLEncodeTable[65]; std::string forgivingBase64Encode(std::string_view data, const char *encodeTable); JS::Result forgivingBase64Decode(std::string_view data, const uint8_t *decodeTable); -JS::Result convertJSValueToByteString(JSContext *cx, std::string v); +JS::Result valueToJSByteString(JSContext *cx, HandleValue v); +JS::Result stringToJSByteString(JSContext *cx, std::string v); } // namespace base64 } // namespace web diff --git a/builtins/web/crypto/crypto-algorithm.cpp b/builtins/web/crypto/crypto-algorithm.cpp index f4959549..4ecb1e41 100644 --- a/builtins/web/crypto/crypto-algorithm.cpp +++ b/builtins/web/crypto/crypto-algorithm.cpp @@ -10,6 +10,7 @@ #include "../base64.h" #include "../dom-exception.h" #include "crypto-algorithm.h" + #include "crypto-key-ec-components.h" #include "crypto-key-rsa-components.h" #include "encode.h" @@ -166,7 +167,7 @@ std::unique_ptr createRSAPublicKeyFromJWK(JSContext *cx, if (modulus.starts_with('0')) { modulus = modulus.erase(0, 1); } - auto dataResult = base64::convertJSValueToByteString(cx, jwk->e.value()); + auto dataResult = base64::stringToJSByteString(cx, jwk->e.value()); if (dataResult.isErr()) { DOMException::raise(cx, "Data provided to an operation does not meet requirements", "DataError"); @@ -258,7 +259,7 @@ std::unique_ptr createRSAPrivateKeyFromJWK(JSContext *cx if (modulus.starts_with('0')) { modulus = modulus.erase(0, 1); } - auto dataResult = base64::convertJSValueToByteString(cx, jwk->e.value()); + auto dataResult = base64::stringToJSByteString(cx, jwk->e.value()); if (dataResult.isErr()) { DOMException::raise(cx, "Data provided to an operation does not meet requirements", "DataError"); @@ -895,12 +896,10 @@ JSObject *CryptoAlgorithmECDSA_Sign_Verify::sign(JSContext *cx, JS::HandleObject // 7. Return the result of creating an ArrayBuffer containing result. JS::RootedObject buffer(cx, JS::NewArrayBufferWithContents(cx, resultSize, result.get(), JS::NewArrayBufferOutOfMemory::CallerMustFreeMemory)); if (!buffer) { - // We can be here is the array buffer was too large -- if that was the case then a - // JSMSG_BAD_ARRAY_LENGTH will have been created. No other failure scenarios in this path will - // create a JS exception and so we need to create one. + // We can be here if the array buffer was too large -- if that was the case then a + // JSMSG_BAD_ARRAY_LENGTH will have been created. Otherwise we're probably out of memory. if (!JS_IsExceptionPending(cx)) { - // TODO Rename error to InternalError - JS_ReportErrorLatin1(cx, "InternalError"); + js::ReportOutOfMemory(cx); } return nullptr; } @@ -1049,12 +1048,10 @@ JSObject *CryptoAlgorithmRSASSA_PKCS1_v1_5_Sign_Verify::sign(JSContext *cx, JS:: // containing the bytes of signature. JS::RootedObject buffer(cx, JS::NewArrayBufferWithContents(cx, signature_length, signature.get(), JS::NewArrayBufferOutOfMemory::CallerMustFreeMemory)); if (!buffer) { - // We can be here is the array buffer was too large -- if that was the case then a - // JSMSG_BAD_ARRAY_LENGTH will have been created. No other failure scenarios in this path will - // create a JS exception and so we need to create one. + // We can be here if the array buffer was too large -- if that was the case then a + // JSMSG_BAD_ARRAY_LENGTH will have been created. Otherwise we're probably out of memory. if (!JS_IsExceptionPending(cx)) { - // TODO Rename error to InternalError - JS_ReportErrorLatin1(cx, "InternalError"); + js::ReportOutOfMemory(cx); } return nullptr; } @@ -1201,8 +1198,8 @@ JSObject *CryptoAlgorithmHMAC_Import::importKey(JSContext *cx, CryptoKeyFormat f // 2. If usages contains an entry which is not "sign" or "verify", then throw a SyntaxError. if (!usages.canOnlySignOrVerify()) { - // TODO Rename error to SyntaxError - JS_ReportErrorLatin1(cx, "HMAC keys only support 'sign' and 'verify' operations"); + DOMException::raise(cx, "HMAC keys only support 'sign' and 'verify' operations", + "SyntaxError"); return nullptr; } @@ -1231,7 +1228,7 @@ JSObject *CryptoAlgorithmHMAC_Import::importKey(JSContext *cx, CryptoKeyFormat f // 6.3 Throw a DataError. auto jwk = std::get(keyData); if (!jwk) { - JS_ReportErrorLatin1(cx, "Supplied format is not a JSONWebKey"); + DOMException::raise(cx, "Supplied keyData is not a JSONWebKey", "DataError"); return nullptr; } // 6.4 If the kty field of jwk is not "oct", then throw a DataError. @@ -1451,7 +1448,7 @@ JSObject *CryptoAlgorithmECDSA_Import::importKey(JSContext *cx, CryptoKeyFormat // Throw a DataError. auto jwk = std::get(keyData); if (!jwk) { - JS_ReportErrorLatin1(cx, "Supplied format is not a JSONWebKey"); + DOMException::raise(cx, "Supplied keyData is not a JSONWebKey", "DataError"); return nullptr; } // 2.2. If the "d" field is present and usages contains a value which is not "sign", @@ -1709,7 +1706,7 @@ JSObject *CryptoAlgorithmRSASSA_PKCS1_v1_5_Import::importKey(JSContext *cx, Cryp // Throw a DataError. auto jwk = std::get(keyData); if (!jwk) { - JS_ReportErrorLatin1(cx, "Supplied format is not a JSONWebKey"); + DOMException::raise(cx, "Supplied keyData is not a JSONWebKey", "DataError"); return nullptr; } @@ -1726,10 +1723,9 @@ JSObject *CryptoAlgorithmRSASSA_PKCS1_v1_5_Import::importKey(JSContext *cx, Cryp isUsagesAllowed = usages.canOnlyVerify(); } if (!isUsagesAllowed) { - // TODO Rename error to SyntaxError - JS_ReportErrorLatin1(cx, - "The JWK 'key_ops' member was inconsistent with that specified by the " - "Web Crypto call. The JWK usage must be a superset of those requested"); + DOMException::raise(cx, + "The JWK 'key_ops' member was inconsistent with that specified by the " + "Web Crypto call. The JWK usage must be a superset of those requested", "DataError"); return nullptr; } @@ -1805,8 +1801,9 @@ JSObject *CryptoAlgorithmRSASSA_PKCS1_v1_5_Import::importKey(JSContext *cx, Cryp } } if (!isMatched) { - JS_ReportErrorLatin1( - cx, "The JWK 'alg' member was inconsistent with that specified by the Web Crypto call"); + DOMException::raise(cx, + "The JWK 'alg' member was inconsistent with that specified by the Web Crypto call", + "DataError"); return nullptr; } diff --git a/builtins/web/crypto/crypto-key.cpp b/builtins/web/crypto/crypto-key.cpp index 82e0c3ad..57dc66e1 100644 --- a/builtins/web/crypto/crypto-key.cpp +++ b/builtins/web/crypto/crypto-key.cpp @@ -65,8 +65,7 @@ CryptoKeyUsages CryptoKeyUsages::from(std::vector key_usages) { return CryptoKeyUsages(mask); } -JS::Result CryptoKeyUsages::from(JSContext *cx, JS::HandleValue key_usages, - std::string_view error_message) { +JS::Result CryptoKeyUsages::from(JSContext *cx, JS::HandleValue key_usages) { bool key_usages_is_array; if (!JS::IsArrayObject(cx, key_usages, &key_usages_is_array)) { return JS::Result(JS::Error()); @@ -75,28 +74,20 @@ JS::Result CryptoKeyUsages::from(JSContext *cx, JS::HandleValue if (!key_usages_is_array) { // TODO: This should check if the JS::HandleValue is iterable and if so, should convert it into // a JS Array - JS_ReportErrorASCII(cx, "The provided value cannot be converted to a sequence"); + api::throw_error(cx, api::Errors::TypeError, "crypto.subtle.importKey", + "keyUsages", "be a sequence"); return JS::Result(JS::Error()); } - uint32_t key_usages_length; JS::RootedObject array(cx, &key_usages.toObject()); - if (!array) { - JS_ReportErrorNumberASCII(cx, GetErrorMessage, nullptr, JSMSG_SUBTLE_CRYPTO_ERROR, - error_message.data()); - return JS::Result(JS::Error()); - } + uint32_t key_usages_length; if (!JS::GetArrayLength(cx, array, &key_usages_length)) { - JS_ReportErrorNumberASCII(cx, GetErrorMessage, nullptr, JSMSG_SUBTLE_CRYPTO_ERROR, - error_message.data()); return JS::Result(JS::Error()); } uint8_t mask = 0; for (uint32_t index = 0; index < key_usages_length; index++) { JS::RootedValue val(cx); if (!JS_GetElement(cx, array, index, &val)) { - JS_ReportErrorNumberASCII(cx, GetErrorMessage, nullptr, JSMSG_SUBTLE_CRYPTO_ERROR, - error_message.data()); return JS::Result(JS::Error()); } @@ -124,8 +115,11 @@ JS::Result CryptoKeyUsages::from(JSContext *cx, JS::HandleValue } else if (usage == "unwrapKey") { mask |= unwrap_key_flag; } else { - JS_ReportErrorNumberASCII(cx, GetErrorMessage, nullptr, JSMSG_SUBTLE_CRYPTO_ERROR, - error_message.data()); + api::throw_error(cx, api::Errors::TypeError, + "crypto.subtle.importKey", + "each value in the 'keyUsages' list", + "be one of 'encrypt', 'decrypt', 'sign', 'verify', 'deriveKey', 'deriveBits', " + "'wrapKey', or 'unwrapKey'"); return JS::Result(JS::Error()); } } @@ -135,14 +129,9 @@ JS::Result CryptoKeyUsages::from(JSContext *cx, JS::HandleValue bool CryptoKey::algorithm_get(JSContext *cx, unsigned argc, JS::Value *vp) { METHOD_HEADER(0); - // TODO: Should we move this into the METHOD_HEADER macro? - // CryptoKey.prototype passes the receiver check in the above macro but is not actually an - // instance of CryptoKey. We check if `self` is `CryptoKey.prototype` and if it is, we throw a JS - // Error. + // TODO: Change this class so that its prototype isn't an instance of the class if (self == proto_obj.get()) { - JS_ReportErrorNumberASCII(cx, GetErrorMessage, nullptr, JSMSG_INCOMPATIBLE_INSTANCE, __func__, - CryptoKey::class_.name); - return false; + return api::throw_error(cx, api::Errors::WrongReceiver, "algorithm get", "CryptoKey"); } auto algorithm = &JS::GetReservedSlot(self, Slots::Algorithm).toObject(); @@ -158,14 +147,9 @@ bool CryptoKey::algorithm_get(JSContext *cx, unsigned argc, JS::Value *vp) { bool CryptoKey::extractable_get(JSContext *cx, unsigned argc, JS::Value *vp) { METHOD_HEADER(0); - // TODO: Should we move this into the METHOD_HEADER macro? - // CryptoKey.prototype passes the receiver check in the above macro but is not actually an - // instance of CryptoKey. We check if `self` is `CryptoKey.prototype` and if it is, we throw a JS - // Error. + // TODO: Change this class so that its prototype isn't an instance of the class if (self == proto_obj.get()) { - JS_ReportErrorNumberASCII(cx, GetErrorMessage, nullptr, JSMSG_INVALID_INTERFACE, - "extractable get", "CryptoKey"); - return false; + return api::throw_error(cx, api::Errors::WrongReceiver, "extractable get", "CryptoKey"); } auto extractable = JS::GetReservedSlot(self, Slots::Extractable).toBoolean(); @@ -177,15 +161,11 @@ bool CryptoKey::extractable_get(JSContext *cx, unsigned argc, JS::Value *vp) { bool CryptoKey::type_get(JSContext *cx, unsigned argc, JS::Value *vp) { METHOD_HEADER(0) - // TODO: Should we move this into the METHOD_HEADER macro? - // CryptoKey.prototype passes the receiver check in the above macro but is not actually an - // instance of CryptoKey. We check if `self` is `CryptoKey.prototype` and if it is, we throw a JS - // Error. + // TODO: Change this class so that its prototype isn't an instance of the class if (self == proto_obj.get()) { - JS_ReportErrorNumberASCII(cx, GetErrorMessage, nullptr, JSMSG_INVALID_INTERFACE, "type get", - "CryptoKey"); - return false; + return api::throw_error(cx, api::Errors::WrongReceiver, "type get", "CryptoKey"); } + auto type = static_cast(JS::GetReservedSlot(self, Slots::Type).toInt32()); // We store the type internally as a CryptoKeyType variant and need to @@ -225,14 +205,9 @@ bool CryptoKey::type_get(JSContext *cx, unsigned argc, JS::Value *vp) { bool CryptoKey::usages_get(JSContext *cx, unsigned argc, JS::Value *vp) { METHOD_HEADER(0); - // TODO: Should we move this into the METHOD_HEADER macro? - // CryptoKey.prototype passes the receiver check in the above macro but is not actually an - // instance of CryptoKey. We check if `self` is `CryptoKey.prototype` and if it is, we throw a JS - // Error. + // TODO: Change this class so that its prototype isn't an instance of the class if (self == proto_obj.get()) { - JS_ReportErrorNumberASCII(cx, GetErrorMessage, nullptr, JSMSG_INVALID_INTERFACE, "usages get", - "CryptoKey"); - return false; + return api::throw_error(cx, api::Errors::WrongReceiver, "usages get", "CryptoKey"); } // If the JS Array has already been created previously, return it. @@ -330,14 +305,6 @@ const JSPropertySpec CryptoKey::properties[] = { JS_STRING_SYM_PS(toStringTag, "CryptoKey", JSPROP_READONLY), JS_PS_END}; -// There is no directly exposed constructor in the CryptoKey interface -// https://w3c.github.io/webcrypto/#cryptokey-interface We throw a JS Error if the application -// attempts to call the CryptoKey constructor directly -bool CryptoKey::constructor(JSContext *cx, unsigned argc, JS::Value *vp) { - JS_ReportErrorNumberASCII(cx, GetErrorMessage, nullptr, JSMSG_ILLEGAL_CTOR); - return false; -} - bool CryptoKey::init_class(JSContext *cx, JS::HandleObject global) { return BuiltinImpl::init_class_impl(cx, global); } @@ -665,11 +632,9 @@ JSObject *CryptoKey::createRSA(JSContext *cx, CryptoAlgorithmRSASSA_PKCS1_v1_5_I // if the call was not successful, we need to free `p` before exiting from the function. if (!buffer) { // We can be here if the array buffer was too large -- if that was the case then a - // JSMSG_BAD_ARRAY_LENGTH will have been created. No other failure scenarios in this path will - // create a JS exception and so we need to create one. + // JSMSG_BAD_ARRAY_LENGTH will have been created. Otherwise we're probably out of memory. if (!JS_IsExceptionPending(cx)) { - // TODO Rename error to InternalError - JS_ReportErrorLatin1(cx, "InternalError"); + js::ReportOutOfMemory(cx); } return nullptr; } diff --git a/builtins/web/crypto/crypto-key.h b/builtins/web/crypto/crypto-key.h index 0036bfbb..44375271 100644 --- a/builtins/web/crypto/crypto-key.h +++ b/builtins/web/crypto/crypto-key.h @@ -37,8 +37,7 @@ class CryptoKeyUsages { CryptoKeyUsages(bool encrypt, bool decrypt, bool sign, bool verify, bool derive_key, bool derive_bits, bool wrap_key, bool unwrap_key); static CryptoKeyUsages from(std::vector key_usages); - static JS::Result from(JSContext *cx, JS::HandleValue key_usages, - std::string_view error_message); + static JS::Result from(JSContext *cx, JS::HandleValue key_usages); uint8_t toInt() { return this->mask; }; @@ -65,7 +64,7 @@ class CryptoKeyUsages { bool canOnlyUnwrapKey() { return this->mask == unwrap_key_flag; }; }; -class CryptoKey : public BuiltinImpl { +class CryptoKey : public BuiltinNoConstructor { public: static const int ctor_length = 0; static constexpr const char *class_name = "CryptoKey"; @@ -118,7 +117,7 @@ class CryptoKey : public BuiltinImpl { static const JSPropertySpec static_properties[]; static const JSFunctionSpec methods[]; static const JSPropertySpec properties[]; - static bool constructor(JSContext *cx, unsigned argc, JS::Value *vp); + static bool init_class(JSContext *cx, JS::HandleObject global); static JSObject *createHMAC(JSContext *cx, CryptoAlgorithmHMAC_Import *algorithm, diff --git a/builtins/web/crypto/crypto.cpp b/builtins/web/crypto/crypto.cpp index 773f9bc3..83f87551 100644 --- a/builtins/web/crypto/crypto.cpp +++ b/builtins/web/crypto/crypto.cpp @@ -54,6 +54,7 @@ bool Crypto::get_random_values(JSContext *cx, unsigned argc, JS::Value *vp) { auto res = host_api::Random::get_bytes(byte_length); if (auto *err = res.to_err()) { + noGC.reset(); HANDLE_ERROR(cx, *err); return false; } @@ -184,11 +185,9 @@ JS::PersistentRooted Crypto::subtle; JS::PersistentRooted crypto; bool Crypto::subtle_get(JSContext *cx, unsigned argc, JS::Value *vp) { - METHOD_HEADER(0); + METHOD_HEADER_WITH_NAME(0, "subtle get"); if (self != crypto.get()) { - JS_ReportErrorNumberASCII(cx, GetErrorMessage, nullptr, JSMSG_INVALID_INTERFACE, "subtle get", - "Crypto"); - return false; + return api::throw_error(cx, api::Errors::WrongReceiver, "subtle get", "Crypto"); } args.rval().setObject(*subtle); @@ -211,19 +210,12 @@ const JSPropertySpec Crypto::properties[] = { JS_PSG("subtle", subtle_get, JSPROP_ENUMERATE), JS_STRING_SYM_PS(toStringTag, "Crypto", JSPROP_READONLY), JS_PS_END}; -bool Crypto::constructor(JSContext *cx, unsigned argc, JS::Value *vp) { - JS_ReportErrorNumberASCII(cx, GetErrorMessage, nullptr, JSMSG_ILLEGAL_CTOR); - return false; -} - bool crypto_get(JSContext *cx, unsigned argc, JS::Value *vp) { JS::CallArgs args = CallArgsFromVp(argc, vp); JS::RootedObject global(cx, JS::CurrentGlobalOrNull(cx)); auto thisv = args.thisv(); if (thisv != JS::UndefinedHandleValue && thisv != JS::ObjectValue(*global)) { - JS_ReportErrorNumberASCII(cx, GetErrorMessage, nullptr, JSMSG_INVALID_INTERFACE, "crypto get", - "Window"); - return false; + return api::throw_error(cx, api::Errors::WrongReceiver, "crypto get", "Window"); } args.rval().setObject(*crypto); return true; diff --git a/builtins/web/crypto/crypto.h b/builtins/web/crypto/crypto.h index e1784998..0e2c1963 100644 --- a/builtins/web/crypto/crypto.h +++ b/builtins/web/crypto/crypto.h @@ -7,7 +7,7 @@ namespace builtins { namespace web { namespace crypto { -class Crypto : public BuiltinImpl { +class Crypto : public BuiltinNoConstructor { private: public: static constexpr const char *class_name = "Crypto"; @@ -25,7 +25,6 @@ class Crypto : public BuiltinImpl { static bool get_random_values(JSContext *cx, unsigned argc, JS::Value *vp); static bool random_uuid(JSContext *cx, unsigned argc, JS::Value *vp); - static bool constructor(JSContext *cx, unsigned argc, JS::Value *vp); static bool init_class(JSContext *cx, JS::HandleObject global); }; diff --git a/builtins/web/crypto/json-web-key.cpp b/builtins/web/crypto/json-web-key.cpp index 2b43b7b5..f663d59a 100644 --- a/builtins/web/crypto/json-web-key.cpp +++ b/builtins/web/crypto/json-web-key.cpp @@ -12,10 +12,13 @@ #include "jsfriendapi.h" #pragma clang diagnostic pop +#include "../dom-exception.h" #include "builtin.h" #include "encode.h" #include "json-web-key.h" +#include + namespace builtins { namespace web { namespace crypto { @@ -46,7 +49,8 @@ extractStringPropertyFromObject(JSContext *cx, JS::HandleObject object, std::str std::unique_ptr JsonWebKey::parse(JSContext *cx, JS::HandleValue value, std::string_view required_kty_value) { if (!value.isObject()) { - JS_ReportErrorLatin1(cx, "The provided value is not of type JsonWebKey"); + api::throw_error(cx, api::Errors::TypeError, "crypto.subtle.importKey", + "keyData", "be a JSONWebKey"); return nullptr; } JS::RootedObject object(cx, &value.toObject()); @@ -58,13 +62,15 @@ std::unique_ptr JsonWebKey::parse(JSContext *cx, JS::HandleValue val } auto kty_option = kty_result.unwrap(); if (!kty_option.has_value()) { - JS_ReportErrorASCII(cx, "The required JWK member 'kty' was missing"); + api::throw_error(cx, api::Errors::TypeError, "crypto.subtle.importKey", + "keyData", "be a JSONWebKey"); return nullptr; } auto kty = kty_option.value(); if (kty != required_kty_value) { - JS_ReportErrorNumberASCII(cx, GetErrorMessage, nullptr, - JSMSG_SUBTLE_CRYPTO_INVALID_JWK_KTY_VALUE, required_kty_value.data()); + auto message = fmt::format("crypto.subtle.importkey: The JWK member 'kty' was not '{}'", + required_kty_value); + dom_exception::DOMException::raise(cx, message, "DataError"); return nullptr; } @@ -198,10 +204,10 @@ std::unique_ptr JsonWebKey::parse(JSContext *cx, JS::HandleValue val return nullptr; } if (!key_ops_is_array) { - // TODO: Check if key_ops_val is iterable via Symbol.iterator and if so, convert to a JS - // Array - JS_ReportErrorASCII(cx, "Failed to read the 'key_ops' property from 'JsonWebKey': The " - "provided value cannot be converted to a sequence"); + // TODO: Check if key_ops_val is iterable via Symbol.iterator and if so, convert to a JS Array + dom_exception::DOMException::raise(cx, + "crypto.subtle.importkey: The JWK member 'key_ops' was not a sequence", + "DataError"); return nullptr; } uint32_t length; @@ -235,16 +241,21 @@ std::unique_ptr JsonWebKey::parse(JSContext *cx, JS::HandleValue val std::string op(op_chars.begin(), op_chars.len); if (op != "encrypt" && op != "decrypt" && op != "sign" && op != "verify" && - op != "deriveKey" && op != "deriveBits" && op != "wrapKey" && op != "unwrapKey") { - JS_ReportErrorNumberASCII(cx, GetErrorMessage, nullptr, - JSMSG_SUBTLE_CRYPTO_INVALID_KEY_USAGES_VALUE); + op != "deriveKey" && op != "deriveBits" && op != "wrapKey" && op != "unwrapKey") { + dom_exception::DOMException::raise(cx, + "crypto.subtle.importKey parameter 'keyData': " + "each value in the 'key_ops' list must be one of 'encrypt', 'decrypt', " + "'sign', 'verify', 'deriveKey', 'deriveBits', 'wrapKey', or 'unwrapKey'", + "DataError"); return nullptr; } // No duplicates allowed if (std::find(key_ops.begin(), key_ops.end(), op) != key_ops.end()) { - JS_ReportErrorASCII( - cx, "The 'key_ops' member of the JWK dictionary contains duplicate usages"); + dom_exception::DOMException::raise(cx, + "crypto.subtle.importKey parameter 'keyData': " + "'key_ops' list must not contain duplicate entries", + "DataError"); return nullptr; } @@ -271,8 +282,9 @@ std::unique_ptr JsonWebKey::parse(JSContext *cx, JS::HandleValue val } if (!oth_is_array) { // TODO: Check if oth_val is iterable via Symbol.iterator and if so, convert to a JS Array - JS_ReportErrorASCII(cx, "Failed to read the 'oth' property from 'JsonWebKey': The provided " - "value cannot be converted to a sequence"); + dom_exception::DOMException::raise(cx, + "crypto.subtle.importkey: The JWK member 'oth' was not a sequence", + "DataError"); return nullptr; } uint32_t length; @@ -299,8 +311,9 @@ std::unique_ptr JsonWebKey::parse(JSContext *cx, JS::HandleValue val } if (!info_val.isObject()) { - JS_ReportErrorASCII(cx, "Failed to read the 'oth' property from 'JsonWebKey': The " - "provided value is not of type 'RsaOtherPrimesInfo'"); + api::throw_error(cx, api::Errors::TypeError, + "crypto.subtle.importKey parameter 'keyData'", + "'oth' list", "be an RsaOtherPrimesInfo object"); return nullptr; } JS::RootedObject info_obj(cx, &info_val.toObject()); @@ -311,8 +324,9 @@ std::unique_ptr JsonWebKey::parse(JSContext *cx, JS::HandleValue val } auto r_chars = core::encode(cx, info_val); if (!r_chars) { - JS_ReportErrorASCII(cx, "Failed to read the 'oth' property from 'JsonWebKey': The " - "provided value is not of type 'RsaOtherPrimesInfo'"); + api::throw_error(cx, api::Errors::TypeError, + "crypto.subtle.importKey parameter 'keyData'", + "'oth' list", "be an RsaOtherPrimesInfo object"); return nullptr; } std::string r(r_chars.begin(), r_chars.len); @@ -322,8 +336,9 @@ std::unique_ptr JsonWebKey::parse(JSContext *cx, JS::HandleValue val } auto d_chars = core::encode(cx, info_val); if (!d_chars) { - JS_ReportErrorASCII(cx, "Failed to read the 'oth' property from 'JsonWebKey': The " - "provided value is not of type 'RsaOtherPrimesInfo'"); + api::throw_error(cx, api::Errors::TypeError, + "crypto.subtle.importKey parameter 'keyData'", + "'oth' list", "be an RsaOtherPrimesInfo object"); return nullptr; } std::string d(d_chars.begin(), d_chars.len); @@ -334,8 +349,9 @@ std::unique_ptr JsonWebKey::parse(JSContext *cx, JS::HandleValue val } auto t_chars = core::encode(cx, info_val); if (!t_chars) { - JS_ReportErrorASCII(cx, "Failed to read the 'oth' property from 'JsonWebKey': The " - "provided value is not of type 'RsaOtherPrimesInfo'"); + api::throw_error(cx, api::Errors::TypeError, + "crypto.subtle.importKey parameter 'keyData'", + "'oth' list", "be an RsaOtherPrimesInfo object"); return nullptr; } std::string t(t_chars.begin(), t_chars.len); diff --git a/builtins/web/crypto/subtle-crypto.cpp b/builtins/web/crypto/subtle-crypto.cpp index f85e67de..b98955c0 100644 --- a/builtins/web/crypto/subtle-crypto.cpp +++ b/builtins/web/crypto/subtle-crypto.cpp @@ -89,7 +89,7 @@ bool SubtleCrypto::importKey(JSContext *cx, unsigned argc, JS::Value *vp) { auto format_arg = args.get(0); // Convert into a String following https://tc39.es/ecma262/#sec-tostring auto format_chars = core::encode(cx, format_arg); - if (!format_chars || format_chars.len == 0) { + if (!format_chars.ptr) { return ReturnPromiseRejectedWithPendingError(cx, args); } std::string_view format_string = format_chars; @@ -102,9 +102,10 @@ bool SubtleCrypto::importKey(JSContext *cx, unsigned argc, JS::Value *vp) { } else if (format_string == "raw") { format = CryptoKeyFormat::Raw; } else { - // TODO: Change to a SyntaxError instance - JS_ReportErrorLatin1(cx, "Provided format parameter is not supported. Supported formats are: " - "'spki', 'pkcs8', 'jwk', and 'raw'"); + DOMException::raise(cx, + "crypto.subtle.importkey: Provided format parameter is not supported. " + "Supported formats are: 'spki', 'pkcs8', 'jwk', and 'raw'", + "NotSupportedError"); return ReturnPromiseRejectedWithPendingError(cx, args); } } @@ -115,8 +116,7 @@ bool SubtleCrypto::importKey(JSContext *cx, unsigned argc, JS::Value *vp) { { auto usages_arg = args.get(4); - std::string_view error_message("SubtleCrypto.importKey: Invalid keyUsages argument"); - auto keyUsageMaskResult = CryptoKeyUsages::from(cx, usages_arg, error_message); + auto keyUsageMaskResult = CryptoKeyUsages::from(cx, usages_arg); if (keyUsageMaskResult.isErr()) { return ReturnPromiseRejectedWithPendingError(cx, args); } @@ -134,7 +134,6 @@ bool SubtleCrypto::importKey(JSContext *cx, unsigned argc, JS::Value *vp) { // 5. Let promise be a new Promise. JS::RootedObject promise(cx, JS::NewPromiseObject(cx, nullptr)); if (!promise) { - JS_ReportErrorASCII(cx, "InternalError"); return ReturnPromiseRejectedWithPendingError(cx, args); } @@ -184,20 +183,17 @@ bool SubtleCrypto::sign(JSContext *cx, unsigned argc, JS::Value *vp) { // respectively. auto algorithm = args.get(0); auto key_arg = args.get(1); - if (!key_arg.isObject()) { - JS_ReportErrorLatin1(cx, "parameter 2 is not of type 'CryptoKey'"); + if (!CryptoKey::is_instance(key_arg)) { + api::throw_error(cx, api::Errors::TypeError, "crypto.subtle.sign", "key", + "be a CryptoKey object"); return ReturnPromiseRejectedWithPendingError(cx, args); } JS::RootedObject key(cx, &key_arg.toObject()); - if (!CryptoKey::is_instance(key)) { - JS_ReportErrorLatin1(cx, "parameter 2 is not of type 'CryptoKey'"); - return ReturnPromiseRejectedWithPendingError(cx, args); - } // 2. Let data be the result of getting a copy of the bytes held by the data parameter passed to // the sign() method. std::optional> dataOptional = - value_to_buffer(cx, args.get(2), "SubtleCrypto.sign: data"); + value_to_buffer(cx, args.get(2), "crypto.subtle.sign: data"); if (!dataOptional.has_value()) { // value_to_buffer would have already created a JS exception so we don't need to create one // ourselves. @@ -280,18 +276,13 @@ bool SubtleCrypto::verify(JSContext *cx, unsigned argc, JS::Value *vp) { // respectively. auto algorithm = args.get(0); auto key_arg = args.get(1); - if (!key_arg.isObject()) { - JS_ReportErrorLatin1(cx, "parameter 2 is not of type 'CryptoKey'"); + if (!CryptoKey::is_instance(key_arg)) { + api::throw_error(cx, api::Errors::TypeError, "crypto.subtle.verify", "key", + "be a CryptoKey object"); return ReturnPromiseRejectedWithPendingError(cx, args); } JS::RootedObject key(cx, &key_arg.toObject()); - if (!CryptoKey::is_instance(key)) { - JS_ReportErrorASCII( - cx, "SubtleCrypto.verify: key (argument 2) does not implement interface CryptoKey"); - return ReturnPromiseRejectedWithPendingError(cx, args); - } - // 2. Let signature be the result of getting a copy of the bytes held by the signature // parameter passed to the verify() method. std::optional> signature = @@ -373,12 +364,7 @@ const JSFunctionSpec SubtleCrypto::methods[] = { const JSPropertySpec SubtleCrypto::properties[] = { JS_STRING_SYM_PS(toStringTag, "SubtleCrypto", JSPROP_READONLY), JS_PS_END}; -bool SubtleCrypto::constructor(JSContext *cx, unsigned argc, JS::Value *vp) { - JS_ReportErrorNumberASCII(cx, GetErrorMessage, nullptr, JSMSG_ILLEGAL_CTOR); - return false; -} - bool SubtleCrypto::init_class(JSContext *cx, JS::HandleObject global) { - return BuiltinImpl::init_class_impl(cx, global); + return init_class_impl(cx, global); } } // namespace builtins::web::crypto diff --git a/builtins/web/crypto/subtle-crypto.h b/builtins/web/crypto/subtle-crypto.h index 1f211308..54cfe17d 100644 --- a/builtins/web/crypto/subtle-crypto.h +++ b/builtins/web/crypto/subtle-crypto.h @@ -22,7 +22,7 @@ enum class Operations : uint8_t { GetKeyLength }; -class SubtleCrypto : public BuiltinImpl { +class SubtleCrypto : public BuiltinNoConstructor { private: public: static constexpr const char *class_name = "SubtleCrypto"; @@ -38,7 +38,6 @@ class SubtleCrypto : public BuiltinImpl { static bool sign(JSContext *cx, unsigned argc, JS::Value *vp); static bool verify(JSContext *cx, unsigned argc, JS::Value *vp); - static bool constructor(JSContext *cx, unsigned argc, JS::Value *vp); static bool init_class(JSContext *cx, JS::HandleObject global); }; diff --git a/builtins/web/dom-exception.cpp b/builtins/web/dom-exception.cpp index 63b9b916..37ea9def 100644 --- a/builtins/web/dom-exception.cpp +++ b/builtins/web/dom-exception.cpp @@ -7,10 +7,9 @@ namespace builtins::web::dom_exception { bool DOMException::name_get(JSContext *cx, unsigned argc, JS::Value *vp) { METHOD_HEADER(0); + // TODO: Change this class so that its prototype isn't an instance of the class if (self == proto_obj) { - JS_ReportErrorNumberASCII(cx, GetErrorMessage, nullptr, JSMSG_INVALID_INTERFACE, "name get", - "DOMException"); - return false; + return api::throw_error(cx, api::Errors::WrongReceiver, "name get", "DOMException"); } args.rval().setString(JS::GetReservedSlot(self, Slots::Name).toString()); return true; @@ -18,10 +17,9 @@ bool DOMException::name_get(JSContext *cx, unsigned argc, JS::Value *vp) { bool DOMException::message_get(JSContext *cx, unsigned argc, JS::Value *vp) { METHOD_HEADER(0); + // TODO: Change this class so that its prototype isn't an instance of the class if (self == proto_obj) { - JS_ReportErrorNumberASCII(cx, GetErrorMessage, nullptr, JSMSG_INVALID_INTERFACE, "name get", - "DOMException"); - return false; + return api::throw_error(cx, api::Errors::WrongReceiver, "message get", "DOMException"); } args.rval().setString(JS::GetReservedSlot(self, Slots::Message).toString()); return true; @@ -29,10 +27,9 @@ bool DOMException::message_get(JSContext *cx, unsigned argc, JS::Value *vp) { bool DOMException::code_get(JSContext *cx, unsigned argc, JS::Value *vp) { METHOD_HEADER(0); + // TODO: Change this class so that its prototype isn't an instance of the class if (self == proto_obj) { - JS_ReportErrorNumberASCII(cx, GetErrorMessage, nullptr, JSMSG_INVALID_INTERFACE, "name get", - "DOMException"); - return false; + return api::throw_error(cx, api::Errors::WrongReceiver, "code get", "DOMException"); } JS::RootedString name_string(cx, JS::GetReservedSlot(self, Slots::Name).toString()); auto chars = core::encode(cx, name_string); @@ -185,11 +182,12 @@ JSObject *DOMException::create(JSContext *cx, std::string_view message, std::str return instance; } -void DOMException::raise(JSContext *cx, std::string_view message, std::string_view name) { +bool DOMException::raise(JSContext *cx, std::string_view message, std::string_view name) { JS::RootedObject errorObj(cx); errorObj.set(DOMException::create(cx, message, name)); JS::RootedValue er(cx, JS::ObjectValue(*errorObj)); JS_SetPendingException(cx, er); + return false; } // constructor(optional DOMString message = "", optional DOMString name = "Error"); diff --git a/builtins/web/dom-exception.h b/builtins/web/dom-exception.h index e0d17402..342ec8e9 100644 --- a/builtins/web/dom-exception.h +++ b/builtins/web/dom-exception.h @@ -24,7 +24,7 @@ class DOMException : public BuiltinImpl { static bool init_class(JSContext *cx, JS::HandleObject global); static bool constructor(JSContext *cx, unsigned argc, JS::Value *vp); static JSObject *create(JSContext *cx, std::string_view message, std::string_view name); - static void raise(JSContext *cx, std::string_view message, std::string_view name); + static bool raise(JSContext *cx, std::string_view message, std::string_view name); }; bool install(api::Engine *engine); diff --git a/builtins/web/fetch/fetch-api.cpp b/builtins/web/fetch/fetch-api.cpp index 9ce1e1ce..8ee6cc7d 100644 --- a/builtins/web/fetch/fetch-api.cpp +++ b/builtins/web/fetch/fetch-api.cpp @@ -26,13 +26,12 @@ bool fetch(JSContext *cx, unsigned argc, Value *vp) { return ReturnPromiseRejectedWithPendingError(cx, args); } - RootedObject request_obj( - cx, JS_NewObjectWithGivenProto(cx, &Request::class_, Request::proto_obj)); + RootedObject request_obj(cx, Request::create(cx)); if (!request_obj) { return ReturnPromiseRejectedWithPendingError(cx, args); } - if (!Request::create(cx, request_obj, args[0], args.get(1))) { + if (!Request::initialize(cx, request_obj, args[0], args.get(1))) { return ReturnPromiseRejectedWithPendingError(cx, args); } @@ -69,7 +68,7 @@ bool fetch(JSContext *cx, unsigned argc, Value *vp) { return ReturnPromiseRejectedWithPendingError(cx, args); bool streaming = false; - if (!RequestOrResponse::maybe_stream_body(cx, request_obj, &streaming)) { + if (!RequestOrResponse::maybe_stream_body(cx, request_obj, request, &streaming)) { return false; } if (streaming) { @@ -91,7 +90,6 @@ bool fetch(JSContext *cx, unsigned argc, Value *vp) { // If the request body is streamed, we need to wait for streaming to complete // before marking the request as pending. if (!streaming) { - ENGINE->incr_event_loop_interest("fetch: not streaming"); ENGINE->queue_async_task(new ResponseFutureTask(request_obj, pending_handle)); } @@ -104,19 +102,13 @@ bool fetch(JSContext *cx, unsigned argc, Value *vp) { return true; } -bool runEventLoopUntilInterest(JSContext *cx, unsigned argc, Value *vp) { - ENGINE->run_event_loop_until_interest(); - return true; -} - -bool runEventLoop(JSContext *cx, unsigned argc, Value *vp) { - ENGINE->run_event_loop(); - return true; +bool run_event_loop_until_interest(JSContext *cx, unsigned argc, Value *vp) { + return ENGINE->run_event_loop_until_interest(); } const JSFunctionSpec methods[] = { JS_FN("fetch", fetch, 2, JSPROP_ENUMERATE), - JS_FN("runEventLoopUntilInterest", runEventLoopUntilInterest, 0, JSPROP_ENUMERATE), + JS_FN("runEventLoopUntilInterest", run_event_loop_until_interest, 0, JSPROP_ENUMERATE), JS_FS_END, }; diff --git a/builtins/web/fetch/fetch-errors.h b/builtins/web/fetch/fetch-errors.h new file mode 100644 index 00000000..b74403a0 --- /dev/null +++ b/builtins/web/fetch/fetch-errors.h @@ -0,0 +1,23 @@ +#ifndef FETCH_ERRORS_H +#define FETCH_ERRORS_H + +#include "builtin.h" + +namespace FetchErrors { +DEF_ERR(FetchNetworkError, JSEXN_TYPEERR, "NetworkError when attempting to fetch resource", 0) +DEF_ERR(InvalidRespondWithArg, JSEXN_TYPEERR, "FetchEvent#respondWith must be called with a Response " + "object or a Promise resolving to a Response object as " + "the first argument", 0) +DEF_ERR(InvalidInitArg, JSEXN_TYPEERR, "{0}: |init| parameter can't be converted to a dictionary", 1) +DEF_ERR(NonBodyRequestWithBody, JSEXN_TYPEERR, "Request constructor: HEAD or GET Request cannot have a body", 0) +DEF_ERR(NonBodyResponseWithBody, JSEXN_TYPEERR, "Response constructor: response with status {0} cannot have a body", 1) +DEF_ERR(BodyStreamUnusable, JSEXN_TYPEERR, "Can't use a ReadableStream that's locked or has ever been read from or canceled", 0) +DEF_ERR(InvalidStatus, JSEXN_RANGEERR, "{0}: invalid status {1}", 2) +DEF_ERR(InvalidStreamChunk, JSEXN_TYPEERR, "ReadableStream used as a Request or Response body must produce Uint8Array values", 0) +DEF_ERR(EmptyHeaderName, JSEXN_TYPEERR, "{0}: Header name can't be empty", 1) +DEF_ERR(InvalidHeaderName, JSEXN_TYPEERR, "{0}: Invalid header name \"{1}\"", 2) +DEF_ERR(InvalidHeaderValue, JSEXN_TYPEERR, "{0}: Invalid header value \"{1}\"", 2) +DEF_ERR(HeadersCloningFailed, JSEXN_ERR, "Failed to clone headers", 0) +}; // namespace FetchErrors + +#endif // FETCH_ERRORS_H diff --git a/builtins/web/fetch/fetch_event.cpp b/builtins/web/fetch/fetch_event.cpp index 17c87675..1448f847 100644 --- a/builtins/web/fetch/fetch_event.cpp +++ b/builtins/web/fetch/fetch_event.cpp @@ -5,7 +5,7 @@ #include "encode.h" #include "request-response.h" -#include "bindings.h" +#include "../dom-exception.h" #include #include @@ -30,13 +30,10 @@ void inc_pending_promise_count(JSObject *self) { auto count = JS::GetReservedSlot(self, static_cast(FetchEvent::Slots::PendingPromiseCount)) .toInt32(); - if (count == 0) { - ENGINE->incr_event_loop_interest("inc_pending_promise_count count 0"); - } count++; MOZ_ASSERT(count > 0); if (count == 1) { - ENGINE->incr_event_loop_interest("inc_pending_promise_count count 1"); + ENGINE->incr_event_loop_interest(); } JS::SetReservedSlot(self, static_cast(FetchEvent::Slots::PendingPromiseCount), JS::Int32Value(count)); @@ -50,7 +47,7 @@ void dec_pending_promise_count(JSObject *self) { MOZ_ASSERT(count > 0); count--; if (count == 0) { - ENGINE->decr_event_loop_interest("dec_pending_promise_count"); + ENGINE->decr_event_loop_interest(); } JS::SetReservedSlot(self, static_cast(FetchEvent::Slots::PendingPromiseCount), JS::Int32Value(count)); @@ -74,11 +71,11 @@ bool add_pending_promise(JSContext *cx, JS::HandleObject self, JS::HandleObject } // namespace JSObject *FetchEvent::prepare_downstream_request(JSContext *cx) { - JS::RootedObject requestInstance( - cx, JS_NewObjectWithGivenProto(cx, &Request::class_, Request::proto_obj)); - if (!requestInstance) + JS::RootedObject request(cx, Request::create(cx)); + if (!request) return nullptr; - return Request::create(cx, requestInstance); + Request::init_slots(request); + return request; } bool FetchEvent::init_incoming_request(JSContext *cx, JS::HandleObject self, @@ -168,7 +165,7 @@ bool send_response(host_api::HttpOutgoingResponse *response, JS::HandleObject se return true; } -bool start_response(JSContext *cx, JS::HandleObject response_obj, bool streaming) { +bool start_response(JSContext *cx, JS::HandleObject response_obj) { auto status = Response::status(response_obj); auto headers = RequestOrResponse::headers_handle_clone(cx, response_obj, host_api::HttpHeadersGuard::Response); @@ -178,42 +175,23 @@ bool start_response(JSContext *cx, JS::HandleObject response_obj, bool streaming host_api::HttpOutgoingResponse* response = host_api::HttpOutgoingResponse::make(status, std::move(headers)); - if (streaming) { - // Get the body here, so it will be stored on the response object. - // Otherwise, it'd not be available anymore, because the response handle itself - // is consumed by sending it off. - auto body = response->body().unwrap(); - MOZ_RELEASE_ASSERT(body); - } - MOZ_RELEASE_ASSERT(response); auto existing_handle = Response::response_handle(response_obj); if (existing_handle) { MOZ_ASSERT(existing_handle->is_incoming()); - if (streaming) { - auto *source_body = static_cast(existing_handle)->body().unwrap(); - auto *dest_body = response->body().unwrap(); - - // TODO: check if we should add a callback here and do something in response to body - // streaming being finished. - auto res = dest_body->append(ENGINE, source_body, nullptr, nullptr); - if (auto *err = res.to_err()) { - HANDLE_ERROR(cx, *err); - return false; - } - MOZ_RELEASE_ASSERT(RequestOrResponse::mark_body_used(cx, response_obj)); - } } else { SetReservedSlot(response_obj, static_cast(Response::Slots::Response), PrivateValue(response)); } - if (streaming && response->has_body()) { - STREAMING_BODY = response->body().unwrap(); + bool streaming = false; + if (!RequestOrResponse::maybe_stream_body(cx, response_obj, response, &streaming)) { + return false; } if (streaming) { - ENGINE->incr_event_loop_interest("start_response: streaming"); + STREAMING_BODY = response->body().unwrap(); + FetchEvent::increase_interest(); } return send_response(response, FetchEvent::instance(), @@ -232,9 +210,7 @@ bool response_promise_then_handler(JSContext *cx, JS::HandleObject event, JS::Ha // of a Promise wrapping it, so either the value is a Response, or we have to // bail. if (!Response::is_instance(args.get(0))) { - JS_ReportErrorUTF8(cx, "FetchEvent#respondWith must be called with a Response " - "object or a Promise resolving to a Response object as " - "the first argument"); + api::throw_error(cx, FetchErrors::InvalidRespondWithArg); JS::RootedObject rejection(cx, PromiseRejectedWithPendingError(cx)); if (!rejection) return false; @@ -245,13 +221,7 @@ bool response_promise_then_handler(JSContext *cx, JS::HandleObject event, JS::Ha // Step 10.2 (very roughly: the way we handle responses and their bodies is // very different.) JS::RootedObject response_obj(cx, &args[0].toObject()); - - bool streaming = false; - if (!RequestOrResponse::maybe_stream_body(cx, response_obj, &streaming)) { - return false; - } - - return start_response(cx, response_obj, streaming); + return start_response(cx, response_obj); } // Steps in this function refer to the spec at @@ -282,15 +252,16 @@ bool FetchEvent::respondWith(JSContext *cx, unsigned argc, JS::Value *vp) { // Step 2 if (!is_dispatching(self)) { - JS_ReportErrorUTF8(cx, "FetchEvent#respondWith must be called synchronously from " - "within a FetchEvent handler"); - return false; + return dom_exception::DOMException::raise(cx, + "FetchEvent#respondWith must be called synchronously from within a FetchEvent handler", + "InvalidStateError"); } // Step 3 if (state(self) != State::unhandled) { - JS_ReportErrorUTF8(cx, "FetchEvent#respondWith can't be called twice on the same event"); - return false; + return dom_exception::DOMException::raise(cx, + "FetchEvent#respondWith can't be called twice on the same event", + "InvalidStateError"); } // Step 4 @@ -359,8 +330,10 @@ bool FetchEvent::waitUntil(JSContext *cx, unsigned argc, JS::Value *vp) { // Step 2 if (!is_active(self)) { - JS_ReportErrorUTF8(cx, "FetchEvent#waitUntil called on inactive event"); - return false; + return dom_exception::DOMException::raise( + cx, + "waitUntil called on a FetchEvent that isn't active anymore", + "InvalidStateError"); } // Steps 3-4 @@ -450,13 +423,11 @@ bool FetchEvent::is_dispatching(JSObject *self) { void FetchEvent::start_dispatching(JSObject *self) { MOZ_ASSERT(!is_dispatching(self)); - ENGINE->incr_event_loop_interest("FetchEvent::start_dispatching"); JS::SetReservedSlot(self, static_cast(Slots::Dispatch), JS::TrueValue()); } void FetchEvent::stop_dispatching(JSObject *self) { MOZ_ASSERT(is_dispatching(self)); - ENGINE->decr_event_loop_interest("FetchEvent::stop_dispatching"); JS::SetReservedSlot(self, static_cast(Slots::Dispatch), JS::FalseValue()); } @@ -468,9 +439,18 @@ FetchEvent::State FetchEvent::state(JSObject *self) { void FetchEvent::set_state(JSObject *self, State new_state) { MOZ_ASSERT(is_instance(self)); - MOZ_ASSERT((uint8_t)new_state > (uint8_t)state(self)); + auto current_state = state(self); + MOZ_ASSERT((uint8_t)new_state > (uint8_t)current_state); JS::SetReservedSlot(self, static_cast(Slots::State), JS::Int32Value(static_cast(new_state))); + + if (current_state == State::responseStreaming && + (new_state == State::responseDone || new_state == State::respondedWithError)) { + if (STREAMING_BODY && STREAMING_BODY->valid()) { + STREAMING_BODY->close(); + } + decrease_interest(); + } } bool FetchEvent::response_started(JSObject *self) { @@ -537,49 +517,75 @@ static void dispatch_fetch_event(HandleObject event, double *total_compute) { // LOG("Request handler took %fms\n", diff / 1000); } -bool handle_incoming_request(host_api::HttpIncomingRequest * request) { - if (!ENGINE->toplevel_evaluated()) { - JS::SourceText source; - auto body = request->body().unwrap(); - auto pollable = body->subscribe().unwrap(); - size_t len = 0; - vector chunks; - - while (true) { - host_api::block_on_pollable_handle(pollable); - auto result = body->read(4096); - if (result.unwrap().done) { - break; - } - - auto chunk = std::move(result.unwrap().bytes); - len += chunk.size(); - chunks.push_back(std::move(chunk)); +/** + * Reads the incoming request's body and evaluates it as a script. + * + * Mainly useful for debugging purposes, and only even reachable in components that + * were created without an input script during wizening. + */ +bool eval_request_body(host_api::HttpIncomingRequest *request) { + JS::SourceText source; + auto body = request->body().unwrap(); + auto pollable = body->subscribe().unwrap(); + size_t len = 0; + vector chunks; + + while (true) { + host_api::block_on_pollable_handle(pollable); + auto result = body->read(4096); + if (result.unwrap().done) { + break; } - // Merge all chunks into one buffer - auto buffer = new char[len]; - size_t offset = 0; - for (auto &chunk : chunks) { - memcpy(buffer + offset, chunk.ptr.get(), chunk.size()); - offset += chunk.size(); - } + auto chunk = std::move(result.unwrap().bytes); + len += chunk.size(); + chunks.push_back(std::move(chunk)); + } - if (!source.init(CONTEXT, buffer, len, JS::SourceOwnership::TakeOwnership)) { - return false; - } + // Merge all chunks into one buffer + auto buffer = new char[len]; + size_t offset = 0; + for (auto &chunk : chunks) { + memcpy(buffer + offset, chunk.ptr.get(), chunk.size()); + offset += chunk.size(); + } - RootedValue rval(ENGINE->cx()); - if (!ENGINE->eval_toplevel(source, "", &rval)) { - if (JS_IsExceptionPending(ENGINE->cx())) { - ENGINE->dump_pending_exception("Runtime script evaluation"); - } - return false; + if (len == 0) { + fprintf(stderr, "Error: Failed to evaluate incoming request body. " + "Components without an initialized script have to be invoked with a body" + "that can be run as a JS script\n"); + return false; + } + + if (!source.init(CONTEXT, buffer, len, JS::SourceOwnership::TakeOwnership)) { + return false; + } + + RootedValue rval(ENGINE->cx()); + if (!ENGINE->eval_toplevel(source, "", &rval)) { + if (JS_IsExceptionPending(ENGINE->cx())) { + ENGINE->dump_pending_exception("Runtime script evaluation"); } + return false; } + return true; +} + +bool handle_incoming_request(host_api::HttpIncomingRequest * request) { +#ifdef DEBUG + fprintf(stderr, "Warning: Using a DEBUG build. Expect things to be SLOW.\n"); +#endif HandleObject fetch_event = FetchEvent::instance(); MOZ_ASSERT(FetchEvent::is_instance(fetch_event)); + + if (!ENGINE->toplevel_evaluated()) { + if (!eval_request_body(request)) { + FetchEvent::respondWithError(ENGINE->cx(), fetch_event); + return true; + } + } + if (!FetchEvent::init_incoming_request(ENGINE->cx(), fetch_event, request)) { ENGINE->dump_pending_exception("initialization of FetchEvent"); return false; diff --git a/builtins/web/fetch/headers.cpp b/builtins/web/fetch/headers.cpp index 632a2f7b..064f82fd 100644 --- a/builtins/web/fetch/headers.cpp +++ b/builtins/web/fetch/headers.cpp @@ -1,6 +1,7 @@ #include "headers.h" #include "encode.h" #include "decode.h" +#include "fetch-errors.h" #include "sequence.hpp" #include "js/Conversions.h" @@ -81,7 +82,7 @@ host_api::HostString normalize_header_name(JSContext *cx, HandleValue name_val, } if (name.len == 0) { - JS_ReportErrorASCII(cx, "%s: Header name can't be empty", fun_name); + api::throw_error(cx, FetchErrors::EmptyHeaderName, fun_name); return nullptr; } @@ -89,7 +90,7 @@ host_api::HostString normalize_header_name(JSContext *cx, HandleValue name_val, for (size_t i = 0; i < name.len; i++) { const unsigned char ch = name_chars[i]; if (ch > 127 || !VALID_NAME_CHARS[ch]) { - JS_ReportErrorUTF8(cx, "%s: Invalid header name '%s'", fun_name, name_chars); + api::throw_error(cx, FetchErrors::InvalidHeaderName, fun_name, name_chars); return nullptr; } @@ -153,7 +154,7 @@ host_api::HostString normalize_header_value(JSContext *cx, HandleValue value_val for (size_t i = start; i < end; i++) { unsigned char ch = value_chars[i]; if (ch == '\r' || ch == '\n' || ch == '\0') { - JS_ReportErrorUTF8(cx, "%s: Invalid header value '%s'", fun_name, value_chars); + api::throw_error(cx, FetchErrors::InvalidHeaderValue, fun_name, value_chars); return nullptr; } } @@ -188,7 +189,7 @@ bool retrieve_value_for_header_from_handle(JSContext *cx, JS::HandleObject self, RootedString res_str(cx); RootedString val_str(cx); for (auto &str : values.value()) { - val_str = JS_NewStringCopyUTF8N(cx, JS::UTF8Chars(str.ptr.get(), str.len)); + val_str = JS_NewStringCopyN(cx, reinterpret_cast(str.ptr.get()), str.len); if (!val_str) { return false; } @@ -282,18 +283,12 @@ static bool switch_mode(JSContext* cx, HandleObject self, const Headers::Mode mo } if (current_mode == Headers::Mode::Uninitialized) { - if (mode == Headers::Mode::ContentOnly) { - RootedObject map(cx, JS::NewMapObject(cx)); - if (!map) { - return false; - } - SetReservedSlot(self, static_cast(Headers::Slots::Entries), ObjectValue(*map)); - } else { - MOZ_ASSERT(mode == Headers::Mode::HostOnly); - auto handle = new host_api::HttpHeaders(Headers::guard(self)); - SetReservedSlot(self, static_cast(Headers::Slots::Handle), PrivateValue(handle)); + MOZ_ASSERT(mode == Headers::Mode::ContentOnly); + RootedObject map(cx, JS::NewMapObject(cx)); + if (!map) { + return false; } - + SetReservedSlot(self, static_cast(Headers::Slots::Entries), ObjectValue(*map)); SetReservedSlot(self, static_cast(Headers::Slots::Mode), JS::Int32Value(static_cast(mode))); return true; } @@ -353,8 +348,7 @@ static bool switch_mode(JSContext* cx, HandleObject self, const Headers::Mode mo auto handle = host_api::HttpHeaders::FromEntries(Headers::guard(self), string_entries); if (handle.is_err()) { - JS_ReportErrorASCII(cx, "Failed to clone headers"); - return false; + return api::throw_error(cx, FetchErrors::HeadersCloningFailed); } SetReservedSlot(self, static_cast(Headers::Slots::Handle), PrivateValue(handle.unwrap())); @@ -403,8 +397,6 @@ static bool switch_mode(JSContext* cx, HandleObject self, const Headers::Mode mo auto handle = get_handle(self); delete handle; SetReservedSlot(self, static_cast(Headers::Slots::Handle), PrivateValue(nullptr)); - SetReservedSlot(self, static_cast(Headers::Slots::Mode), - JS::Int32Value(static_cast(Headers::Mode::CachedInContent))); } SetReservedSlot(self, static_cast(Headers::Slots::Mode), @@ -419,8 +411,7 @@ bool prepare_for_entries_modification(JSContext* cx, JS::HandleObject self) { if (!handle->is_writable()) { auto new_handle = handle->clone(Headers::guard(self)); if (!new_handle) { - JS_ReportErrorASCII(cx, "Failed to clone headers"); - return false; + return api::throw_error(cx, FetchErrors::HeadersCloningFailed); } delete handle; SetReservedSlot(self, static_cast(Headers::Slots::Handle), PrivateValue(new_handle)); @@ -520,14 +511,6 @@ bool Headers::append_header_value(JSContext *cx, JS::HandleObject self, JS::Hand return true; } -void init_from_handle(JSObject* self, host_api::HttpHeadersReadOnly* handle) { - MOZ_ASSERT(Headers::is_instance(self)); - MOZ_ASSERT(Headers::mode(self) == Headers::Mode::Uninitialized); - SetReservedSlot(self, static_cast(Headers::Slots::Mode), - JS::Int32Value(static_cast(Headers::Mode::HostOnly))); - SetReservedSlot(self, static_cast(Headers::Slots::Handle), PrivateValue(handle)); -} - JSObject *Headers::create(JSContext *cx, host_api::HttpHeadersGuard guard) { JSObject* self = JS_NewObjectWithGivenProto(cx, &class_, proto_obj); if (!self) { @@ -547,7 +530,10 @@ JSObject *Headers::create(JSContext *cx, host_api::HttpHeadersReadOnly *handle, return nullptr; } - init_from_handle(self, handle); + MOZ_ASSERT(Headers::mode(self) == Headers::Mode::Uninitialized); + SetReservedSlot(self, static_cast(Headers::Slots::Mode), + JS::Int32Value(static_cast(Headers::Mode::HostOnly))); + SetReservedSlot(self, static_cast(Headers::Slots::Handle), PrivateValue(handle)); return self; } @@ -556,24 +542,28 @@ JSObject *Headers::create(JSContext *cx, HandleValue init_headers, host_api::Htt if (!self) { return nullptr; } - return init_entries(cx, self, init_headers); + if (!init_entries(cx, self, init_headers)) { + return nullptr; + } + MOZ_ASSERT(mode(self) == Headers::Mode::ContentOnly || mode(self) == Headers::Mode::Uninitialized); + return self; } -JSObject *Headers::init_entries(JSContext *cx, HandleObject self, HandleValue initv) { +bool Headers::init_entries(JSContext *cx, HandleObject self, HandleValue initv) { // TODO: check if initv is a Headers instance and clone its handle if so. // TODO: But note: forbidden headers have to be applied correctly. bool consumed = false; if (!core::maybe_consume_sequence_or_record(cx, initv, self, &consumed, "Headers")) { - return nullptr; + return false; } if (!consumed) { - core::report_sequence_or_record_arg_error(cx, "Headers", ""); - return nullptr; + api::throw_error(cx, api::Errors::InvalidSequence, "Headers", ""); + return false; } - return self; + return true; } bool Headers::get(JSContext *cx, unsigned argc, JS::Value *vp) { @@ -792,9 +782,7 @@ bool Headers::forEach(JSContext *cx, unsigned argc, JS::Value *vp) { HEADERS_ITERATION_METHOD(1) if (!args[0].isObject() || !JS::IsCallable(&args[0].toObject())) { - JS_ReportErrorASCII(cx, "Failed to execute 'forEach' on 'Headers': " - "parameter 1 is not of type 'Function'"); - return false; + return api::throw_error(cx, api::Errors::ForEachCallback, "Headers"); } JS::RootedValueArray<3> newArgs(cx); @@ -882,12 +870,10 @@ bool Headers::constructor(JSContext *cx, unsigned argc, JS::Value *vp) { } SetReservedSlot(headersInstance, static_cast(Slots::Guard), JS::Int32Value(static_cast(host_api::HttpHeadersGuard::None))); - JS::RootedObject headers(cx, init_entries(cx, headersInstance, headersInit)); - if (!headers) { + if (!init_entries(cx, headersInstance, headersInit)) { return false; } - - args.rval().setObject(*headers); + args.rval().setObject(*headersInstance); return true; } @@ -939,7 +925,7 @@ unique_ptr Headers::handle_clone(JSContext* cx, HandleObj auto handle = unique_ptr(get_handle(self)->clone(guard(self))); if (!handle) { - JS_ReportErrorASCII(cx, "Failed to clone headers"); + api::throw_error(cx, FetchErrors::HeadersCloningFailed); return nullptr; } return handle; diff --git a/builtins/web/fetch/headers.h b/builtins/web/fetch/headers.h index ab4fd10c..3beba950 100644 --- a/builtins/web/fetch/headers.h +++ b/builtins/web/fetch/headers.h @@ -111,7 +111,7 @@ class Headers final : public BuiltinImpl { static JSObject *create(JSContext *cx, host_api::HttpHeadersReadOnly *handle, host_api::HttpHeadersGuard guard); - static JSObject *init_entries(JSContext *cx, HandleObject self, HandleValue init_headers); + static bool init_entries(JSContext *cx, HandleObject self, HandleValue init_headers); /// Returns a Map object containing the headers. /// diff --git a/builtins/web/fetch/request-response.cpp b/builtins/web/fetch/request-response.cpp index 786ea5af..637715ba 100644 --- a/builtins/web/fetch/request-response.cpp +++ b/builtins/web/fetch/request-response.cpp @@ -72,7 +72,6 @@ class BodyFutureTask final : public api::AsyncTask { } [[nodiscard]] bool run(api::Engine *engine) override { - ENGINE->decr_event_loop_interest("BodyFutureTask run"); // MOZ_ASSERT(ready()); JSContext *cx = engine->cx(); RootedObject owner(cx, streams::NativeStreamSource::owner(body_source_)); @@ -234,8 +233,7 @@ bool RequestOrResponse::mark_body_used(JSContext *cx, JS::HandleObject obj) { // it's a disturbed ReadableStream. To improve error reporting, we clear // the current exception and throw a better one. JS_ClearPendingException(cx); - JS_ReportErrorLatin1(cx, "The ReadableStream body is already locked and can't be consumed"); - return false; + return api::throw_error(cx, FetchErrors::BodyStreamUnusable); } } @@ -298,9 +296,7 @@ bool RequestOrResponse::extract_body(JSContext *cx, JS::HandleObject self, if (body_obj && JS::IsReadableStream(body_obj)) { if (RequestOrResponse::body_unusable(cx, body_obj)) { - JS_ReportErrorLatin1(cx, "Can't use a ReadableStream that's locked or has ever been " - "read from or canceled as a Request or Response body."); - return false; + return api::throw_error(cx, FetchErrors::BodyStreamUnusable); } JS_SetReservedSlot(self, static_cast(RequestOrResponse::Slots::BodyStream), body_val); @@ -445,11 +441,19 @@ unique_ptr RequestOrResponse::headers_handle_clone(JSCont } bool finish_outgoing_body_streaming(JSContext* cx, HandleObject body_owner) { - // The only response we ever send is the one passed to - // `FetchEvent#respondWith` to send to the client. As such, we can be - // certain that if we have a response here, we can advance the FetchState to + // If no `body_owner` was passed, that means we sent a response: those aren't always + // reified during `respondWith` processing, and we don't need the instance here. + // That means, if we don't have the `body_owner`, we can advance the FetchState to // `responseDone`. + // (Note that even if we encountered an error while streaming, `responseDone` is the + // right state: `respondedWithError` is for when sending a response at all failed.) // TODO(TS): factor this out to remove dependency on fetch-event.h + if (!body_owner || Response::is_instance(body_owner)) { + fetch_event::FetchEvent::set_state(fetch_event::FetchEvent::instance(), + fetch_event::FetchEvent::State::responseDone); + return true; + } + auto body = RequestOrResponse::outgoing_body_handle(body_owner); auto res = body->close(); if (auto *err = res.to_err()) { @@ -457,18 +461,12 @@ bool finish_outgoing_body_streaming(JSContext* cx, HandleObject body_owner) { return false; } - if (Response::is_instance(body_owner)) { - fetch_event::FetchEvent::set_state(fetch_event::FetchEvent::instance(), - fetch_event::FetchEvent::State::responseDone); - } - if (Request::is_instance(body_owner)) { auto pending_handle = static_cast( GetReservedSlot(body_owner, static_cast(Request::Slots::PendingResponseHandle)) .toPrivate()); SetReservedSlot(body_owner, static_cast(Request::Slots::PendingResponseHandle), PrivateValue(nullptr)); - ENGINE->incr_event_loop_interest("finish_outgoing_body_streaming"); ENGINE->queue_async_task(new ResponseFutureTask(body_owner, pending_handle)); } @@ -478,6 +476,7 @@ bool finish_outgoing_body_streaming(JSContext* cx, HandleObject body_owner) { bool RequestOrResponse::append_body(JSContext *cx, JS::HandleObject self, JS::HandleObject source) { MOZ_ASSERT(!body_used(source)); MOZ_ASSERT(!body_used(self)); + MOZ_ASSERT(self != source); host_api::HttpIncomingBody *source_body = incoming_body_handle(source); host_api::HttpOutgoingBody *dest_body = outgoing_body_handle(self); auto res = dest_body->append(ENGINE, source_body, finish_outgoing_body_streaming, self); @@ -624,71 +623,44 @@ bool RequestOrResponse::content_stream_read_then_handler(JSContext *cx, JS::Hand if (!JS::GetArrayLength(cx, contents, &contentsLength)) { return false; } - // TODO(performance): investigate whether we can infer the size directly from `contents` - size_t buf_size = HANDLE_READ_CHUNK_SIZE; - // TODO(performance): make use of malloc slack. - // https://github.com/fastly/js-compute-runtime/issues/217 - size_t offset = 0; - // In this loop we are finding the length of each entry in `contents` and resizing the `buf` - // until it is large enough to fit all the entries in `contents` - for (uint32_t index = 0; index < contentsLength; index++) { - JS::RootedValue val(cx); + + size_t total_length = 0; + RootedValue val(cx); + + for (size_t index = 0; index < contentsLength; index++) { if (!JS_GetElement(cx, contents, index, &val)) { return false; } - { - JS::AutoCheckCannotGC nogc; - MOZ_ASSERT(val.isObject()); - JSObject *array = &val.toObject(); - MOZ_ASSERT(JS_IsUint8Array(array)); - size_t length = JS_GetTypedArrayByteLength(array); - if (length) { - offset += length; - // if buf is not big enough to fit the next uint8array's bytes then resize - if (offset > buf_size) { - buf_size = - buf_size + (HANDLE_READ_CHUNK_SIZE * ((length / HANDLE_READ_CHUNK_SIZE) + 1)); - } - } - } + JSObject *array = &val.toObject(); + size_t length = JS_GetTypedArrayByteLength(array); + total_length += length; } - JS::UniqueChars buf{static_cast(JS_malloc(cx, buf_size + 1))}; + JS::UniqueChars buf{static_cast(JS_malloc(cx, total_length))}; if (!buf) { JS_ReportOutOfMemory(cx); return false; } - // reset the offset for the next loop - offset = 0; + + size_t offset = 0; // In this loop we are inserting each entry in `contents` into `buf` for (uint32_t index = 0; index < contentsLength; index++) { - JS::RootedValue val(cx); if (!JS_GetElement(cx, contents, index, &val)) { return false; } - { - JS::AutoCheckCannotGC nogc; - MOZ_ASSERT(val.isObject()); - JSObject *array = &val.toObject(); - MOZ_ASSERT(JS_IsUint8Array(array)); - bool is_shared; - size_t length = JS_GetTypedArrayByteLength(array); - if (length) { - static_assert(CHAR_BIT == 8, "Strange char"); - auto bytes = reinterpret_cast(JS_GetUint8ArrayData(array, &is_shared, nogc)); - memcpy(buf.get() + offset, bytes, length); - offset += length; - } - } - } - buf[offset] = '\0'; -#ifdef DEBUG - bool foundBodyParser; - if (!JS_HasElement(cx, catch_handler, 2, &foundBodyParser)) { - return false; + JSObject *array = &val.toObject(); + bool is_shared; + size_t length = JS_GetTypedArrayByteLength(array); + JS::AutoCheckCannotGC nogc(cx); + auto bytes = reinterpret_cast(JS_GetUint8ArrayData(array, &is_shared, nogc)); + memcpy(buf.get() + offset, bytes, length); + offset += length; } + + mozilla::DebugOnly foundBodyParser = false; + MOZ_ASSERT(JS_HasElement(cx, catch_handler, 2, &foundBodyParser)); MOZ_ASSERT(foundBodyParser); -#endif + // Now we can call parse_body on the result JS::RootedValue body_parser(cx); if (!JS_GetElement(cx, catch_handler, 2, &body_parser)) { @@ -706,7 +678,7 @@ bool RequestOrResponse::content_stream_read_then_handler(JSContext *cx, JS::Hand // The read operation can return anything since this stream comes from the guest // If it is not a UInt8Array -- reject with a TypeError if (!val.isObject() || !JS_IsUint8Array(&val.toObject())) { - JS_ReportErrorNumberASCII(cx, GetErrorMessage, nullptr, JSMSG_RESPONSE_VALUE_NOT_UINT8ARRAY); + api::throw_error(cx, FetchErrors::InvalidStreamChunk); JS::RootedObject result_promise(cx); result_promise = &JS::GetReservedSlot(self, static_cast(Slots::BodyAllPromise)).toObject(); @@ -778,8 +750,7 @@ bool RequestOrResponse::consume_content_stream_for_bodyAll(JSContext *cx, JS::Ha } MOZ_ASSERT(JS::IsReadableStream(stream)); if (RequestOrResponse::body_unusable(cx, stream)) { - JS_ReportErrorNumberASCII(cx, GetErrorMessage, nullptr, - JSMSG_RESPONSE_BODY_DISTURBED_OR_LOCKED); + api::throw_error(cx, FetchErrors::BodyStreamUnusable); JS::RootedObject result_promise(cx); result_promise = &JS::GetReservedSlot(self, static_cast(Slots::BodyAllPromise)).toObject(); @@ -843,8 +814,7 @@ template bool RequestOrResponse::bodyAll(JSContext *cx, JS::CallArgs args, JS::HandleObject self) { // TODO: mark body as consumed when operating on stream, too. if (body_used(self)) { - JS_ReportErrorNumberASCII(cx, GetErrorMessage, nullptr, - JSMSG_RESPONSE_BODY_DISTURBED_OR_LOCKED); + api::throw_error(cx, FetchErrors::BodyStreamUnusable); return ReturnPromiseRejectedWithPendingError(cx, args); } @@ -923,7 +893,6 @@ bool RequestOrResponse::body_source_pull_algorithm(JSContext *cx, CallArgs args, } } - ENGINE->incr_event_loop_interest("RequestOrResponse::body_source_pull_algorithm"); ENGINE->queue_async_task(new BodyFutureTask(source)); args.rval().setUndefined(); @@ -956,7 +925,6 @@ bool reader_for_outgoing_body_then_handler(JSContext *cx, JS::HandleObject body_ return false; if (done_val.toBoolean()) { - fetch_event::FetchEvent::decrease_interest(); return finish_outgoing_body_streaming(cx, body_owner); } @@ -970,8 +938,7 @@ bool reader_for_outgoing_body_then_handler(JSContext *cx, JS::HandleObject body_ if (Request::is_instance(body_owner)) { JS::RootedObject response_promise(cx, Request::response_promise(body_owner)); - // TODO: this should be a TypeError, but I'm not sure how to make that work - JS_ReportErrorUTF8(cx, "TypeError"); + api::throw_error(cx, FetchErrors::InvalidStreamChunk); return RejectPromiseWithPendingError(cx, response_promise); } @@ -983,17 +950,16 @@ bool reader_for_outgoing_body_then_handler(JSContext *cx, JS::HandleObject body_ return false; } - host_api::Result res; - { - JS::AutoCheckCannotGC nogc; - JSObject *array = &val.toObject(); - bool is_shared; - uint8_t *bytes = JS_GetUint8ArrayData(array, &is_shared, nogc); - size_t length = JS_GetTypedArrayByteLength(array); - // TODO: change this to write in chunks, respecting backpressure. - auto body = RequestOrResponse::outgoing_body_handle(body_owner); - res = body->write_all(bytes, length); - } + RootedObject array(cx, &val.toObject()); + size_t length = JS_GetTypedArrayByteLength(array); + bool is_shared; + RootedObject buffer(cx, JS_GetArrayBufferViewBuffer(cx, array, &is_shared)); + MOZ_ASSERT(!is_shared); + auto bytes = static_cast(StealArrayBufferContents(cx, buffer)); + // TODO: change this to write in chunks, respecting backpressure. + auto body = RequestOrResponse::outgoing_body_handle(body_owner); + auto res = body->write_all(bytes, length); + js_free(bytes); // Needs to be outside the nogc block in case we need to create an exception. if (auto *err = res.to_err()) { @@ -1028,18 +994,30 @@ bool reader_for_outgoing_body_catch_handler(JSContext *cx, JS::HandleObject body // `responseDone`. (Note that even though we encountered an error, // `responseDone` is the right state: `respondedWithError` is for when sending // a response at all failed.) - // TODO(TS): investigate why this is disabled. - // if (Response::is_instance(body_owner)) { - // FetchEvent::set_state(FetchEvent::instance(), FetchEvent::State::responseDone); - // } return finish_outgoing_body_streaming(cx, body_owner); } bool RequestOrResponse::maybe_stream_body(JSContext *cx, JS::HandleObject body_owner, + host_api::HttpOutgoingBodyOwner* destination, bool *requires_streaming) { *requires_streaming = false; + if (!has_body(body_owner)) { + return true; + } + + // First, handle direct forwarding of incoming bodies. + // Those can be handled by direct use of async tasks and the host API, without needing + // to use JS streams at all. + if (is_incoming(body_owner)) { + auto *source_body = incoming_body_handle(body_owner); + auto *dest_body = destination->body().unwrap(); + auto res = dest_body->append(ENGINE, source_body, finish_outgoing_body_streaming, nullptr); + if (auto *err = res.to_err()) { + HANDLE_ERROR(cx, *err); + return false; + } + MOZ_RELEASE_ASSERT(RequestOrResponse::mark_body_used(cx, body_owner)); - if (is_incoming(body_owner) && has_body(body_owner)) { *requires_streaming = true; return true; } @@ -1050,17 +1028,7 @@ bool RequestOrResponse::maybe_stream_body(JSContext *cx, JS::HandleObject body_o } if (body_unusable(cx, stream)) { - JS_ReportErrorNumberASCII(cx, GetErrorMessage, nullptr, - JSMSG_RESPONSE_BODY_DISTURBED_OR_LOCKED); - return false; - } - - if (streams::TransformStream::is_ts_readable(cx, stream)) { - JSObject *ts = streams::TransformStream::ts_from_readable(cx, stream); - if (streams::TransformStream::readable_used_as_body(ts)) { - *requires_streaming = true; - return true; - } + return api::throw_error(cx, FetchErrors::BodyStreamUnusable); } // If the body stream is backed by an HTTP body handle, we can directly pipe @@ -1108,8 +1076,6 @@ bool RequestOrResponse::maybe_stream_body(JSContext *cx, JS::HandleObject body_o if (!JS::AddPromiseReactions(cx, promise, then_handler, catch_handler)) return false; - // fetch_event::FetchEvent::increase_interest(); - *requires_streaming = true; return true; } @@ -1244,12 +1210,11 @@ JSString *GET_atom; // auto hasBody = RequestOrResponse::has_body(self); // if (hasBody) { -// if (RequestOrResponse::body_used(self)) { -// JS_ReportErrorLatin1(cx, "Request.prototype.clone: the request's body isn't usable."); -// return false; +// if (RequestOrResponse::body_unusable(self)) { +// return api::throw_error(cx, FetchErrors::BodyStreamUnusable); // } -// // Here we get the current requests body stream and call ReadableStream.prototype.tee to +// // Here we get the current request's body stream and call ReadableStream.prototype.tee to // return // // two versions of the stream. Once we get the two streams, we create a new request handle // and @@ -1298,9 +1263,7 @@ JSString *GET_atom; // } // body_stream.set(&body1_val.toObject()); // if (RequestOrResponse::body_unusable(cx, body_stream)) { -// JS_ReportErrorLatin1(cx, "Can't use a ReadableStream that's locked or has ever been " -// "read from or canceled as a Request body."); -// return false; +// return api::throw_error(cx, FetchErrors::BodyStreamUnusable); // } // JS::SetReservedSlot(requestInstance, static_cast(Slots::Body), @@ -1402,7 +1365,7 @@ bool Request::init_class(JSContext *cx, JS::HandleObject global) { return !!GET_atom; } -JSObject *Request::create(JSContext *cx, JS::HandleObject requestInstance) { +void Request::init_slots(JSObject *requestInstance) { JS::SetReservedSlot(requestInstance, static_cast(Slots::Request), JS::PrivateValue(nullptr)); JS::SetReservedSlot(requestInstance, static_cast(Slots::Headers), JS::NullValue()); JS::SetReservedSlot(requestInstance, static_cast(Slots::BodyStream), JS::NullValue()); @@ -1410,8 +1373,6 @@ JSObject *Request::create(JSContext *cx, JS::HandleObject requestInstance) { JS::SetReservedSlot(requestInstance, static_cast(Slots::BodyUsed), JS::FalseValue()); JS::SetReservedSlot(requestInstance, static_cast(Slots::Method), JS::StringValue(GET_atom)); - - return requestInstance; } /** @@ -1421,9 +1382,9 @@ JSObject *Request::create(JSContext *cx, JS::HandleObject requestInstance) { * "Roughly" because not all aspects of Request handling make sense in C@E. * The places where we deviate from the spec are called out inline. */ -JSObject *Request::create(JSContext *cx, JS::HandleObject requestInstance, JS::HandleValue input, - JS::HandleValue init_val) { - create(cx, requestInstance); +bool Request::initialize(JSContext *cx, JS::HandleObject request, JS::HandleValue input, + JS::HandleValue init_val) { + init_slots(request); JS::RootedString url_str(cx); JS::RootedString method_str(cx); bool method_needs_normalization = false; @@ -1464,7 +1425,7 @@ JSObject *Request::create(JSContext *cx, JS::HandleObject requestInstance, JS::H // method: `request`’s method. method_str = Request::method(cx, input_request); if (!method_str) { - return nullptr; + return false; } // referrer: `request`’s referrer. @@ -1501,14 +1462,14 @@ JSObject *Request::create(JSContext *cx, JS::HandleObject requestInstance, JS::H JS::RootedObject url_instance( cx, JS_NewObjectWithGivenProto(cx, &url::URL::class_, url::URL::proto_obj)); if (!url_instance) - return nullptr; + return false; JS::RootedObject parsedURL( cx, url::URL::create(cx, url_instance, input, worker_location::WorkerLocation::url)); // 2. If `parsedURL` is failure, then throw a `TypeError`. if (!parsedURL) { - return nullptr; + return false; } // 3. If `parsedURL` includes credentials, then throw a `TypeError`. @@ -1519,7 +1480,7 @@ JSObject *Request::create(JSContext *cx, JS::HandleObject requestInstance, JS::H JS::RootedValue url_val(cx, JS::ObjectValue(*parsedURL)); url_str = JS::ToString(cx, url_val); if (!url_str) { - return nullptr; + return false; } // 5. Set `fallbackMode` to "`cors`". @@ -1553,12 +1514,11 @@ JSObject *Request::create(JSContext *cx, JS::HandleObject requestInstance, JS::H if (!JS_GetProperty(cx, init, "method", &method_val) || !JS_GetProperty(cx, init, "headers", &headers_val) || !JS_GetProperty(cx, init, "body", &body_val)) { - return nullptr; + return false; } } else if (!init_val.isNullOrUndefined()) { - JS_ReportErrorLatin1(cx, "Request constructor: |init| parameter can't be converted to " - "a dictionary"); - return nullptr; + api::throw_error(cx, FetchErrors::InvalidInitArg, "Request constructor"); + return false; } // 13. If `init` is not empty, then: @@ -1618,7 +1578,7 @@ JSObject *Request::create(JSContext *cx, JS::HandleObject requestInstance, JS::H // 1. Let `method` be `init["method"]`. method_str = JS::ToString(cx, method_val); if (!method_str) { - return nullptr; + return false; } // 2. If `method` is not a method or `method` is a forbidden method, then @@ -1639,13 +1599,13 @@ JSObject *Request::create(JSContext *cx, JS::HandleObject requestInstance, JS::H // This only needs to happen if the method was set explicitly and isn't the // default `GET`. if (method_str && !JS_StringEqualsLiteral(cx, method_str, "GET", &is_get)) { - return nullptr; + return false; } if (!is_get) { method = core::encode(cx, method_str); if (!method) { - return nullptr; + return false; } if (method_needs_normalization) { @@ -1653,7 +1613,7 @@ JSObject *Request::create(JSContext *cx, JS::HandleObject requestInstance, JS::H // Replace the JS string with the normalized name. method_str = JS_NewStringCopyN(cx, method.begin(), method.len); if (!method_str) { - return nullptr; + return false; } } } @@ -1706,7 +1666,7 @@ JSObject *Request::create(JSContext *cx, JS::HandleObject requestInstance, JS::H if (!headers_val.isUndefined()) { headers = Headers::create(cx, headers_val, host_api::HttpHeadersGuard::Request); if (!headers) { - return nullptr; + return false; } } @@ -1719,8 +1679,8 @@ JSObject *Request::create(JSContext *cx, JS::HandleObject requestInstance, JS::H // non-null, and `request`’s method is ``GET`` or ``HEAD``, then throw a // TypeError. if ((input_has_body || !body_val.isNullOrUndefined()) && is_get_or_head) { - JS_ReportErrorLatin1(cx, "Request constructor: HEAD or GET Request cannot have a body."); - return nullptr; + api::throw_error(cx, FetchErrors::NonBodyRequestWithBody); + return false; } // 35. Let `initBody` be null. @@ -1733,16 +1693,7 @@ JSObject *Request::create(JSContext *cx, JS::HandleObject requestInstance, JS::H auto url = core::encode(cx, url_str); if (!url) { - return nullptr; - } - - // Actually create the instance, now that we have all the parts required for - // it. We have to delay this step to here because the wasi-http API requires - // that all the request's properties are provided to the constructor. - // auto request_handle = host_api::HttpOutgoingRequest::make(method, std::move(url), headers); - RootedObject request(cx, create(cx, requestInstance)); - if (!request) { - return nullptr; + return false; } // Store the URL, method, and headers derived above on the JS object. @@ -1767,7 +1718,7 @@ JSObject *Request::create(JSContext *cx, JS::HandleObject requestInstance, JS::H // this’s headers. // Note: these steps are all inlined into RequestOrResponse::extract_body. if (!RequestOrResponse::extract_body(cx, request, body_val)) { - return nullptr; + return false; } } else if (input_has_body) { // 37. Let `inputOrInitBody` be `initBody` if it is non-null; otherwise @@ -1795,8 +1746,8 @@ JSObject *Request::create(JSContext *cx, JS::HandleObject requestInstance, JS::H // Throw an error if the input request's body isn't usable. if (RequestOrResponse::body_used(input_request) || (inputBody && RequestOrResponse::body_unusable(cx, inputBody))) { - JS_ReportErrorLatin1(cx, "Request constructor: the input request's body isn't usable."); - return nullptr; + api::throw_error(cx, FetchErrors::BodyStreamUnusable); + return false; } if (!inputBody) { @@ -1808,7 +1759,7 @@ JSObject *Request::create(JSContext *cx, JS::HandleObject requestInstance, JS::H } else { inputBody = streams::TransformStream::create_rs_proxy(cx, inputBody); if (!inputBody) { - return nullptr; + return false; } streams::TransformStream::set_readable_used_as_body(cx, inputBody, request); @@ -1822,21 +1773,21 @@ JSObject *Request::create(JSContext *cx, JS::HandleObject requestInstance, JS::H // 41. Set this’s requests body to `finalBody`. // (implicit) - return request; + return true; } -JSObject *Request::create_instance(JSContext *cx) { +JSObject *Request::create(JSContext *cx) { JS::RootedObject requestInstance( cx, JS_NewObjectWithGivenProto(cx, &Request::class_, Request::proto_obj)); return requestInstance; } bool Request::constructor(JSContext *cx, unsigned argc, JS::Value *vp) { - CTOR_HEADER("Reques", 1); - JS::RootedObject requestInstance(cx, JS_NewObjectForConstructor(cx, &class_, args)); - JS::RootedObject request(cx, create(cx, requestInstance, args[0], args.get(1))); - if (!request) + CTOR_HEADER("Request", 1); + JS::RootedObject request(cx, JS_NewObjectForConstructor(cx, &class_, args)); + if (!request || !initialize(cx, request, args[0], args.get(1))) { return false; + } args.rval().setObject(*request); return true; @@ -2136,121 +2087,66 @@ bool Response::bodyUsed_get(JSContext *cx, unsigned argc, JS::Value *vp) { // https://fetch.spec.whatwg.org/#dom-response-redirect // [NewObject] static Response redirect(USVString url, optional unsigned short status = 302); -// bool Response::redirect(JSContext *cx, unsigned argc, JS::Value *vp) { -// JS::CallArgs args = JS::CallArgsFromVp(argc, vp); -// if (!args.requireAtLeast(cx, "redirect", 1)) { -// return false; -// } -// // auto url = args.get(0); -// // // 1. Let parsedURL be the result of parsing url with current settings object’s API base -// URL. -// // JS::RootedObject urlInstance( -// // cx, JS_NewObjectWithGivenProto(cx, &url::URL::class_, url::URL::proto_obj)); -// // if (!urlInstance) { -// // return false; -// // } -// // JS::RootedObject parsedURL( -// // cx, url::URL::create(cx, urlInstance, url, worker_location::WorkerLocation::url)); -// // // 2. If parsedURL is failure, then throw a TypeError. -// // if (!parsedURL) { -// // JS_ReportErrorNumberASCII(cx, GetErrorMessage, nullptr, -// JSMSG_RESPONSE_REDIRECT_INVALID_URI); -// // return false; -// // } -// // JS::RootedValue url_val(cx, JS::ObjectValue(*parsedURL)); -// // auto url_str = core::encode(cx, url_val); -// // if (!url_str) { -// // return false; -// // } -// // 3. If status is not a redirect status, then throw a RangeError. -// // A redirect status is a status that is 301, 302, 303, 307, or 308. -// auto statusVal = args.get(1); -// uint16_t status; -// if (statusVal.isUndefined()) { -// status = 302; -// } else { -// if (!JS::ToUint16(cx, statusVal, &status)) { -// return false; -// } -// } -// if (status != 301 && status != 302 && status != 303 && status != 307 && status != 308) { -// JS_ReportErrorNumberASCII(cx, GetErrorMessage, nullptr, -// JSMSG_RESPONSE_REDIRECT_INVALID_STATUS); return false; -// } -// // 4. Let responseObject be the result of creating a Response object, given a new response, -// // "immutable", and this’s relevant Realm. -// auto response_handle_res = host_api::HttpResp::make(); -// if (auto *err = response_handle_res.to_err()) { -// HANDLE_ERROR(cx, *err); -// return false; -// } - -// auto response_handle = response_handle_res.unwrap(); -// if (!response_handle.is_valid()) { -// return false; -// } +bool Response::redirect(JSContext *cx, unsigned argc, Value *vp) { + CallArgs args = JS::CallArgsFromVp(argc, vp); + if (!args.requireAtLeast(cx, "redirect", 1)) { + return false; + } -// auto make_res = host_api::HttpBody::make(response_handle); -// if (auto *err = make_res.to_err()) { -// HANDLE_ERROR(cx, *err); -// return false; -// } + // 1. Let parsedURL be the result of parsing url with current settings object’s API base + // URL. + jsurl::SpecString url_str = core::encode(cx, args.get(0)); + if (!url_str.data) { + return false; + } + auto parsedURL = new_jsurl_with_base(&url_str, url::URL::url(worker_location::WorkerLocation::url)); + if (!parsedURL) { + return api::throw_error(cx, api::Errors::TypeError, "Response.redirect", "url", "be a valid URL"); + } -// auto body = make_res.unwrap(); -// JS::RootedObject response_instance(cx, JS_NewObjectWithGivenProto(cx, &Response::class_, -// Response::proto_obj)); -// if (!response_instance) { -// return false; -// } -// JS::RootedObject response( -// cx, create(cx, response_instance, response_handle, body, false)); -// if (!response) { -// return false; -// } + // 3. If status is not a redirect status, then throw a RangeError. + // A redirect status is a status that is 301, 302, 303, 307, or 308. + auto statusVal = args.get(1); + uint16_t status; + if (statusVal.isUndefined()) { + status = 302; + } else { + if (!ToUint16(cx, statusVal, &status)) { + return false; + } + } + if (status != 301 && status != 302 && status != 303 && status != 307 && status != 308) { + auto status_str = std::to_string(status); + return api::throw_error(cx, FetchErrors::InvalidStatus, "Response.redirect", + status_str.c_str()); + } -// // 5. Set responseObject’s response’s status to status. -// auto set_res = response_handle.set_status(status); -// if (auto *err = set_res.to_err()) { -// HANDLE_ERROR(cx, *err); -// return false; -// } -// // To ensure that we really have the same status value as the host, -// // we always read it back here. -// auto get_res = response_handle.get_status(); -// if (auto *err = get_res.to_err()) { -// HANDLE_ERROR(cx, *err); -// return false; -// } -// status = get_res.unwrap(); + // 4. Let responseObject be the result of creating a Response object, given a new response, + // "immutable", and this’s relevant Realm. + RootedObject responseObject(cx, create(cx)); + if (!responseObject) { + return false; + } -// JS::SetReservedSlot(response, static_cast(Slots::Status), JS::Int32Value(status)); -// JS::SetReservedSlot(response, static_cast(Slots::StatusMessage), -// JS::StringValue(JS_GetEmptyString(cx))); -// // 6. Let value be parsedURL, serialized and isomorphic encoded. -// // 7. Append (`Location`, value) to responseObject’s response’s header list. -// JS::RootedObject headers(cx); -// JS::RootedObject headersInstance( -// cx, JS_NewObjectWithGivenProto(cx, &Headers::class_, Headers::proto_obj)); -// if (!headersInstance) -// return false; + // 5. Set responseObject’s response’s status to status. + SetReservedSlot(responseObject, static_cast(Slots::Status), JS::Int32Value(status)); + SetReservedSlot(responseObject, static_cast(Slots::StatusMessage), + JS::StringValue(JS_GetEmptyString(cx))); -// headers = Headers::create(cx, headersInstance, Headers::Mode::ProxyToResponse, -// response); -// if (!headers) { -// return false; -// } -// // TODO: support use of baseURL -// // if (!Headers::maybe_add(cx, headers, "location", url_str.begin())) { -// // return false; -// // } -// JS::SetReservedSlot(response, static_cast(Slots::Headers), -// JS::ObjectValue(*headers)); JS::SetReservedSlot(response, -// static_cast(Slots::Redirected), JS::FalseValue()); -// // 8. Return responseObject. + // 6. Let value be parsedURL, serialized and isomorphic encoded. + // 7. Append (`Location`, value) to responseObject’s response’s header list. + RootedObject headers(cx, RequestOrResponse::headers(cx, responseObject)); + if (!headers) { + return false; + } + if (!Headers::set_if_undefined(cx, headers, "location", url_str)) { + return false; + } -// args.rval().setObjectOrNull(response); -// return true; -// } + // 8. Return responseObject. + args.rval().setObjectOrNull(responseObject); + return true; +} // namespace { // bool callbackCalled; @@ -2280,8 +2176,7 @@ bool Response::bodyUsed_get(JSContext *cx, unsigned argc, JS::Value *vp) { // return false; // } // if (!callbackCalled) { -// JS_ReportErrorNumberASCII(cx, GetErrorMessage, nullptr, JSMSG_RESPONSE_JSON_INVALID_VALUE); -// return false; +// return api::throw_error(cx, api::Errors::WrongType, "Response.json", "data", "be a valid JSON value"); // } // // 2. Let body be the result of extracting bytes. @@ -2307,9 +2202,9 @@ bool Response::bodyUsed_get(JSContext *cx, unsigned argc, JS::Value *vp) { // } // if (status == 204 || status == 205 || status == 304) { -// JS_ReportErrorNumberASCII(cx, GetErrorMessage, nullptr, -// JSMSG_RESPONSE_NULL_BODY_STATUS_WITH_BODY); -// return false; +// auto status_str = std::to_string(status); +// return api::throw_error(cx, FetchErrors::NonBodyResponseWithBody, "Response.json", +// status_str.c_str()); // } // if (!statusText_val.isUndefined() && !(statusText = JS::ToString(cx, statusText_val))) { @@ -2317,9 +2212,7 @@ bool Response::bodyUsed_get(JSContext *cx, unsigned argc, JS::Value *vp) { // } // } else if (!init_val.isNullOrUndefined()) { -// JS_ReportErrorLatin1(cx, "Response constructor: |init| parameter can't be converted to " -// "a dictionary"); -// return false; +// return api::throw_error(cx, FetchErrors::InvalidInitArg, "Response.json"); // } // auto response_handle_res = host_api::HttpResp::make(); @@ -2410,7 +2303,7 @@ bool Response::bodyUsed_get(JSContext *cx, unsigned argc, JS::Value *vp) { // } const JSFunctionSpec Response::static_methods[] = { - // JS_FN("redirect", redirect, 1, JSPROP_ENUMERATE), + JS_FN("redirect", redirect, 1, JSPROP_ENUMERATE), // JS_FN("json", json, 1, JSPROP_ENUMERATE), JS_FS_END, }; @@ -2474,16 +2367,14 @@ bool Response::constructor(JSContext *cx, unsigned argc, JS::Value *vp) { } } else if (!init_val.isNullOrUndefined()) { - JS_ReportErrorLatin1(cx, "Response constructor: |init| parameter can't be converted to " - "a dictionary"); - return false; + return api::throw_error(cx, FetchErrors::InvalidInitArg, "Response constructor"); } // 1. If `init`["status"] is not in the range 200 to 599, inclusive, then // `throw` a ``RangeError``. if (status < 200 || status > 599) { - JS_ReportErrorLatin1(cx, "Response constructor: invalid status %u", status); - return false; + auto status_str = std::to_string(status); + return api::throw_error(cx, FetchErrors::InvalidStatus, "Response constructor", status_str.c_str()); } // 2. If `init`["statusText"] does not match the `reason-phrase` token @@ -2500,14 +2391,11 @@ bool Response::constructor(JSContext *cx, unsigned argc, JS::Value *vp) { return false; } - JS::RootedObject responseInstance(cx, JS_NewObjectForConstructor(cx, &class_, args)); - if (!responseInstance) { - return false; - } - JS::RootedObject response(cx, create(cx, responseInstance)); + JS::RootedObject response(cx, JS_NewObjectForConstructor(cx, &class_, args)); if (!response) { return false; } + init_slots(response); JS::SetReservedSlot(response, static_cast(Slots::Headers), JS::ObjectValue(*headers)); @@ -2540,9 +2428,9 @@ bool Response::constructor(JSContext *cx, unsigned argc, JS::Value *vp) { // 1. If `init`["status"] is a `null body status`, then `throw` a // ``TypeError``. if (status == 204 || status == 205 || status == 304) { - JS_ReportErrorLatin1(cx, "Response constructor: Response body is given " - "with a null body status."); - return false; + auto status_str = std::to_string(status); + return api::throw_error(cx, FetchErrors::NonBodyResponseWithBody, "Response constructor", + status_str.c_str()); } // 2. Let `Content-Type` be null. @@ -2574,8 +2462,16 @@ bool Response::init_class(JSContext *cx, JS::HandleObject global) { (type_error_atom = JS_AtomizeAndPinString(cx, "error")); } -JSObject *Response::create(JSContext *cx, JS::HandleObject response) { - MOZ_ASSERT(cx); +JSObject *Response::create(JSContext *cx){ + RootedObject self(cx, JS_NewObjectWithGivenProto(cx, &class_, proto_obj)); + if (!self) { + return nullptr; + } + init_slots(self); + return self; +} + +JSObject *Response::init_slots(HandleObject response) { MOZ_ASSERT(is_instance(response)); JS::SetReservedSlot(response, static_cast(Slots::Response), JS::PrivateValue(nullptr)); @@ -2588,8 +2484,8 @@ JSObject *Response::create(JSContext *cx, JS::HandleObject response) { return response; } -JSObject * Response::create_incoming(JSContext *cx, HandleObject obj, host_api::HttpIncomingResponse *response) { - RootedObject self(cx, create(cx, obj)); +JSObject * Response::create_incoming(JSContext *cx, host_api::HttpIncomingResponse *response) { + RootedObject self(cx, create(cx)); if (!self) { return nullptr; } diff --git a/builtins/web/fetch/request-response.h b/builtins/web/fetch/request-response.h index 075dedca..c98fa5fa 100644 --- a/builtins/web/fetch/request-response.h +++ b/builtins/web/fetch/request-response.h @@ -3,6 +3,7 @@ #include "headers.h" #include "host_api.h" +#include "fetch-errors.h" namespace builtins { namespace web { @@ -102,6 +103,7 @@ class RequestOrResponse final { * to `true`. */ static bool maybe_stream_body(JSContext *cx, JS::HandleObject body_owner, + host_api::HttpOutgoingBodyOwner *destination, bool *requires_streaming); static JSObject *create_body_stream(JSContext *cx, JS::HandleObject owner); @@ -155,11 +157,11 @@ class Request final : public BuiltinImpl { static bool init_class(JSContext *cx, JS::HandleObject global); static bool constructor(JSContext *cx, unsigned argc, JS::Value *vp); - static JSObject *create(JSContext *cx, JS::HandleObject requestInstance); - static JSObject *create(JSContext *cx, JS::HandleObject requestInstance, JS::HandleValue input, - JS::HandleValue init_val); + static JSObject *create(JSContext *cx); + static bool initialize(JSContext *cx, JS::HandleObject requestInstance, JS::HandleValue input, + JS::HandleValue init_val); - static JSObject *create_instance(JSContext *cx); + static void init_slots(JSObject *requestInstance); }; class Response final : public BuiltinImpl { @@ -204,9 +206,9 @@ class Response final : public BuiltinImpl { static bool init_class(JSContext *cx, JS::HandleObject global); static bool constructor(JSContext *cx, unsigned argc, JS::Value *vp); - static JSObject *create(JSContext *cx, JS::HandleObject response); - static JSObject* create_incoming(JSContext * cx, HandleObject self, - host_api::HttpIncomingResponse* response); + static JSObject *create(JSContext *cx); + static JSObject *init_slots(HandleObject response); + static JSObject* create_incoming(JSContext * cx, host_api::HttpIncomingResponse* response); static host_api::HttpResponse *response_handle(JSObject *obj); static uint16_t status(JSObject *obj); @@ -229,7 +231,6 @@ class ResponseFutureTask final : public api::AsyncTask { [[nodiscard]] bool run(api::Engine *engine) override { // MOZ_ASSERT(ready()); - engine->decr_event_loop_interest("ResponseFutureTask::run"); JSContext *cx = engine->cx(); const RootedObject request(cx, request_); @@ -237,20 +238,14 @@ class ResponseFutureTask final : public api::AsyncTask { auto res = future_->maybe_response(); if (res.is_err()) { - JS_ReportErrorUTF8(cx, "NetworkError when attempting to fetch resource."); + api::throw_error(cx, FetchErrors::FetchNetworkError); return RejectPromiseWithPendingError(cx, response_promise); } auto maybe_response = res.unwrap(); MOZ_ASSERT(maybe_response.has_value()); auto response = maybe_response.value(); - RootedObject response_obj( - cx, JS_NewObjectWithGivenProto(cx, &Response::class_, Response::proto_obj)); - if (!response_obj) { - return false; - } - - response_obj = Response::create_incoming(cx, response_obj, response); + RootedObject response_obj(cx, Response::create_incoming(cx, response)); if (!response_obj) { return false; } diff --git a/builtins/web/global_self.cpp b/builtins/web/global_self.cpp index f9898c81..2977e89a 100644 --- a/builtins/web/global_self.cpp +++ b/builtins/web/global_self.cpp @@ -14,8 +14,7 @@ bool self_set(JSContext *cx, unsigned argc, Value *vp) { RootedObject global(cx, JS::CurrentGlobalOrNull(cx)); if (args.thisv() != ObjectValue(*global)) { - JS_ReportErrorLatin1(cx, "globalThis.self setter can only be called on the global object"); - return false; + return api::throw_error(cx, api::Errors::WrongReceiver, "set self", "globalThis"); } if (!JS_DefineProperty(cx, global, "self", args[0], JSPROP_ENUMERATE)) { diff --git a/builtins/web/performance.cpp b/builtins/web/performance.cpp index 315ef65f..af2ff336 100644 --- a/builtins/web/performance.cpp +++ b/builtins/web/performance.cpp @@ -57,11 +57,6 @@ bool Performance::create(JSContext *cx, JS::HandleObject global) { return JS_DefineFunctions(cx, performance, methods); } -bool Performance::constructor(JSContext *cx, unsigned argc, JS::Value *vp) { - JS_ReportErrorUTF8(cx, "%s can't be instantiated directly", class_name); - return false; -} - bool Performance::init_class(JSContext *cx, JS::HandleObject global) { return init_class_impl(cx, global); } diff --git a/builtins/web/performance.h b/builtins/web/performance.h index dd6d549f..59670aeb 100644 --- a/builtins/web/performance.h +++ b/builtins/web/performance.h @@ -7,8 +7,7 @@ namespace builtins { namespace web { namespace performance { -class Performance : public BuiltinImpl { -private: +class Performance : public BuiltinNoConstructor { public: static constexpr const char *class_name = "Performance"; static const int ctor_length = 0; @@ -23,7 +22,6 @@ class Performance : public BuiltinImpl { static bool timeOrigin_get(JSContext *cx, unsigned argc, JS::Value *vp); static bool create(JSContext *cx, JS::HandleObject global); - static bool constructor(JSContext *cx, unsigned argc, JS::Value *vp); static bool init_class(JSContext *cx, JS::HandleObject global); }; diff --git a/builtins/web/queue-microtask.cpp b/builtins/web/queue-microtask.cpp index d388eb63..5d923c0b 100644 --- a/builtins/web/queue-microtask.cpp +++ b/builtins/web/queue-microtask.cpp @@ -15,8 +15,8 @@ bool queueMicrotask(JSContext *cx, unsigned argc, Value *vp) { } if (!args[0].isObject() || !JS::IsCallable(&args[0].toObject())) { - JS_ReportErrorLatin1(cx, "queueMicrotask: Argument 1 is not a function"); - return false; + return api::throw_error(cx, api::Errors::TypeError, "queueMicrotask", "first argument", + "be a function"); } RootedObject callback(cx, &args[0].toObject()); diff --git a/builtins/web/streams/compression-stream.cpp b/builtins/web/streams/compression-stream.cpp index 7774f28a..4f2a5642 100644 --- a/builtins/web/streams/compression-stream.cpp +++ b/builtins/web/streams/compression-stream.cpp @@ -9,6 +9,7 @@ #include "compression-stream.h" #include "encode.h" +#include "stream-errors.h" #include "transform-stream-default-controller.h" #include "transform-stream.h" @@ -116,8 +117,7 @@ bool deflate_chunk(JSContext *cx, JS::HandleObject self, JS::HandleValue chunk, zstream->next_out = buffer; int err = deflate(zstream, finished ? Z_FINISH : Z_NO_FLUSH); if (!((finished && err == Z_STREAM_END) || err == Z_OK)) { - JS_ReportErrorASCII(cx, "CompressionStream transform: error compressing chunk"); - return false; + return api::throw_error(cx, StreamErrors::CompressingChunkFailed); } size_t bytes = BUFFER_SIZE - zstream->avail_out; @@ -129,7 +129,7 @@ bool deflate_chunk(JSContext *cx, JS::HandleObject self, JS::HandleValue chunk, { bool is_shared; - JS::AutoCheckCannotGC nogc; + JS::AutoCheckCannotGC nogc(cx); uint8_t *out_buffer = JS_GetUint8ArrayData(out_obj, &is_shared, nogc); memcpy(out_buffer, buffer, bytes); } @@ -274,7 +274,7 @@ JSObject *create(JSContext *cx, JS::HandleObject stream, Format format) { int err = deflateInit2(zstream, COMPRESSION_LEVEL, Z_DEFLATED, window_bits, 8, Z_DEFAULT_STRATEGY); if (err != Z_OK) { - JS_ReportErrorASCII(cx, "Error initializing compression stream"); + api::throw_error(cx, StreamErrors::StreamInitializationFailed, "compression"); return nullptr; } @@ -304,11 +304,7 @@ bool CompressionStream::constructor(JSContext *cx, unsigned argc, JS::Value *vp) } else if (!strcmp(format_chars.begin(), "gzip")) { format = Format::GZIP; } else { - JS_ReportErrorUTF8(cx, - "'format' has to be \"deflate\" or \"gzip\", " - "but got \"%s\"", - format_chars.begin()); - return false; + return api::throw_error(cx, StreamErrors::InvalidCompressionFormat, format_chars.begin()); } JS::RootedObject compressionStreamInstance(cx, JS_NewObjectForConstructor(cx, &class_, args)); diff --git a/builtins/web/streams/decompression-stream.cpp b/builtins/web/streams/decompression-stream.cpp index 6b33346f..7db7d6c2 100644 --- a/builtins/web/streams/decompression-stream.cpp +++ b/builtins/web/streams/decompression-stream.cpp @@ -12,6 +12,8 @@ #include "transform-stream-default-controller.h" #include "transform-stream.h" +#include "stream-errors.h" + namespace builtins { namespace web { namespace streams { @@ -84,8 +86,7 @@ bool inflate_chunk(JSContext *cx, JS::HandleObject self, JS::HandleValue chunk, // Step 2 of flush: // 2. If the end of the compressed input has not been reached, then throw a TypeError. if (zstream->avail_in != 0) { - JS_ReportErrorNumberUTF8(cx, GetErrorMessage, nullptr, JSMSG_DECOMPRESSING_ERROR); - return false; + return api::throw_error(cx, StreamErrors::DecompressingChunkFailed); } // This just sets up step 3. The actual decompression happens in the `do` loop // below. @@ -118,8 +119,6 @@ bool inflate_chunk(JSContext *cx, JS::HandleObject self, JS::HandleValue chunk, int err = inflate(zstream, finished ? Z_FINISH : Z_NO_FLUSH); if (err != Z_OK && err != Z_STREAM_END && err != Z_BUF_ERROR) { - JS_ReportErrorNumberUTF8(cx, GetErrorMessage, nullptr, JSMSG_DECOMPRESSING_ERROR); - return false; } size_t bytes = BUFFER_SIZE - zstream->avail_out; @@ -278,7 +277,7 @@ JSObject *create(JSContext *cx, JS::HandleObject stream, Format format) { int err = inflateInit2(zstream, window_bits); if (err != Z_OK) { - JS_ReportErrorASCII(cx, "Error initializing decompression stream"); + api::throw_error(cx, StreamErrors::StreamInitializationFailed, "decompression"); return nullptr; } @@ -308,9 +307,8 @@ bool DecompressionStream::constructor(JSContext *cx, unsigned argc, JS::Value *v } else if (!strcmp(format_chars.begin(), "gzip")) { format = Format::GZIP; } else { - JS_ReportErrorNumberUTF8(cx, GetErrorMessage, nullptr, JSMSG_INVALID_COMPRESSION_FORMAT, - format_chars.begin()); - return false; + return api::throw_error(cx, api::Errors::TypeError, "DecompressionStream constructor", + "format", "be 'deflate', 'deflate-raw', or 'gzip'"); } JS::RootedObject decompressionStreamInstance(cx, JS_NewObjectForConstructor(cx, &class_, args)); diff --git a/builtins/web/streams/native-stream-source.cpp b/builtins/web/streams/native-stream-source.cpp index fb8b56c4..875c2ece 100644 --- a/builtins/web/streams/native-stream-source.cpp +++ b/builtins/web/streams/native-stream-source.cpp @@ -10,6 +10,8 @@ #include "native-stream-sink.h" #include "native-stream-source.h" +#include "stream-errors.h" + // A JS class to use as the underlying source for native readable streams, used // for Request/Response bodies and TransformStream. namespace builtins { @@ -87,8 +89,7 @@ bool NativeStreamSource::lock_stream(JSContext *cx, JS::HandleObject stream) { bool locked; JS::ReadableStreamIsLocked(cx, stream, &locked); if (locked) { - JS_ReportErrorLatin1(cx, "Can't lock an already locked ReadableStream"); - return false; + return api::throw_error(cx, StreamErrors::StreamAlreadyLocked); } JS::RootedObject self(cx, get_stream_source(cx, stream)); diff --git a/builtins/web/streams/stream-errors.h b/builtins/web/streams/stream-errors.h new file mode 100644 index 00000000..85c8b40a --- /dev/null +++ b/builtins/web/streams/stream-errors.h @@ -0,0 +1,20 @@ +#ifndef STREAM_ERRORS_H +#define STREAM_ERRORS_H + +#include "builtin.h" + +namespace StreamErrors { +DEF_ERR(CompressingChunkFailed, JSEXN_TYPEERR, "CompressionStream transform: error compressing chunk", 0) +DEF_ERR(DecompressingChunkFailed, JSEXN_TYPEERR, "DecompressionStream transform: error decompressing chunk", 0) +DEF_ERR(StreamInitializationFailed, JSEXN_ERR, "Error initializing {0} stream", 1) +DEF_ERR(StreamAlreadyLocked, JSEXN_TYPEERR, "Can't lock an already locked ReadableStream", 0) +DEF_ERR(PipeThroughFromLockedStream, JSEXN_TYPEERR, "pipeThrough called on a ReadableStream that's already locked", 0) +DEF_ERR(PipeThroughToLockedStream, JSEXN_TYPEERR, "The writable end of the transform object passed to pipeThrough " + "is already locked", 0) +DEF_ERR(PipeThroughWrongArg, JSEXN_TYPEERR, "pipeThrough called on a ReadableStream that's already locked", 0) +DEF_ERR(TransformStreamTerminated, JSEXN_TYPEERR, "The TransformStream has been terminated", 0) +DEF_ERR(InvalidCompressionFormat, JSEXN_TYPEERR, "'format' has to be \"deflate\", \"deflate-raw\", or \"gzip\", " + "but got \"{0}\"", 1) +}; // namespace StreamErrors + +#endif // STREAM_ERRORS_H diff --git a/builtins/web/streams/transform-stream-default-controller.cpp b/builtins/web/streams/transform-stream-default-controller.cpp index 5dd0dc6b..48c9d8a3 100644 --- a/builtins/web/streams/transform-stream-default-controller.cpp +++ b/builtins/web/streams/transform-stream-default-controller.cpp @@ -10,6 +10,8 @@ #include "transform-stream-default-controller.h" #include "transform-stream.h" +#include "stream-errors.h" + /** * Implementation of the WHATWG TransformStream builtin. * @@ -269,8 +271,8 @@ bool TransformStreamDefaultController::Terminate(JSContext *cx, JS::HandleObject // allow us to create a proper error object with the right stack and all // without actually throwing it. So we do that and then immediately clear the // pending exception. + api::throw_error(cx, StreamErrors::TransformStreamTerminated); JS::RootedValue error(cx); - JS_ReportErrorLatin1(cx, "The TransformStream has been terminated"); if (!JS_GetPendingException(cx, &error)) { return false; } diff --git a/builtins/web/streams/transform-stream.cpp b/builtins/web/streams/transform-stream.cpp index 53409e1d..73884e28 100644 --- a/builtins/web/streams/transform-stream.cpp +++ b/builtins/web/streams/transform-stream.cpp @@ -14,6 +14,8 @@ #include "transform-stream-default-controller.h" #include "transform-stream.h" +#include "stream-errors.h" + namespace ReadableStream_additions { using namespace builtins::web::streams; @@ -26,9 +28,7 @@ bool is_instance(JS::Value val) { return val.isObject() && is_instance(&val.toOb bool check_receiver(JSContext *cx, JS::HandleValue receiver, const char *method_name) { if (!is_instance(receiver)) { - JS_ReportErrorUTF8(cx, "Method %s called on receiver that's not an instance of ReadableStream", - method_name); - return false; + return api::throw_error(cx, api::Errors::WrongReceiver, method_name, "ReadableStream"); } return true; }; @@ -66,16 +66,13 @@ bool pipeThrough(JSContext *cx, JS::HandleObject source_readable, JS::HandleObje return false; } if (locked) { - JS_ReportErrorLatin1(cx, "pipeThrough called on a ReadableStream that's already locked"); - return false; + return api::throw_error(cx, StreamErrors::PipeThroughFromLockedStream); } // 2. If ! IsWritableStreamLocked(transform["writable"]) is true, throw a // TypeError exception. if (JS::WritableStreamIsLocked(cx, target_writable)) { - JS_ReportErrorLatin1(cx, "The writable end of the transform object passed to pipeThrough " - " passed to pipeThrough is already locked"); - return false; + return api::throw_error(cx, StreamErrors::PipeThroughToLockedStream); } // 3. Let signal be options["signal"] if it exists, or undefined otherwise. @@ -117,8 +114,8 @@ bool pipeThrough(JSContext *cx, unsigned argc, JS::Value *vp) { METHOD_HEADER(1) if (!args[0].isObject()) { - JS_ReportErrorLatin1(cx, "First argument to pipeThrough must be an object"); - return false; + return api::throw_error(cx, api::Errors::TypeError, "ReadableStream.pipeThrough", + "transformStream parameter", "be an object"); } JS::RootedObject transform(cx, &args[0].toObject()); @@ -129,9 +126,9 @@ bool pipeThrough(JSContext *cx, unsigned argc, JS::Value *vp) { if (!JS_GetProperty(cx, transform, "readable", &val)) return false; if (!val.isObject() || !JS::IsReadableStream(&val.toObject())) { - JS_ReportErrorLatin1(cx, "First argument to pipeThrough must be an object with a " - "|readable| property that is an instance of ReadableStream"); - return false; + return api::throw_error(cx, api::Errors::TypeError, "ReadableStream.pipeThrough", + "transformStream parameter", + "be an object with a |readable| property that is an instance of ReadableStream"); } readable = &val.toObject(); @@ -139,9 +136,9 @@ bool pipeThrough(JSContext *cx, unsigned argc, JS::Value *vp) { if (!JS_GetProperty(cx, transform, "writable", &val)) return false; if (!val.isObject() || !JS::IsWritableStream(&val.toObject())) { - JS_ReportErrorLatin1(cx, "First argument to pipeThrough must be an object with a " - "|writable| property that is an instance of WritableStream"); - return false; + return api::throw_error(cx, api::Errors::TypeError, "ReadableStream.pipeThrough", + "transformStream parameter", + "be an object with a |writable| property that is an instance of WritableStream"); } writable = &val.toObject(); @@ -201,8 +198,8 @@ bool ExtractFunction(JSContext *cx, JS::HandleObject obj, const char *name, } if (!val.isObject() || !JS::IsCallable(&val.toObject())) { - JS_ReportErrorLatin1(cx, "%s should be a function", name); - return false; + return api::throw_error(cx, api::Errors::TypeError, "TransformStream constructor", + name, "be a function"); } func.set(&val.toObject()); @@ -217,8 +214,8 @@ bool ExtractStrategy(JSContext *cx, JS::HandleValue strategy, double default_hwm } if (!strategy.isObject()) { - JS_ReportErrorLatin1(cx, "Strategy passed to TransformStream constructor must be an object"); - return false; + return api::throw_error(cx, api::Errors::TypeError, "TransformStream constructor", + "strategy", "be an object"); } JS::RootedObject strategy_obj(cx, &strategy.toObject()); @@ -235,8 +232,8 @@ bool ExtractStrategy(JSContext *cx, JS::HandleValue strategy, double default_hwm return false; } if (std::isnan(*hwm) || *hwm < 0) { - JS_ReportErrorLatin1(cx, "Invalid value for highWaterMark: %f", *hwm); - return false; + return api::throw_error(cx, api::Errors::TypeError, "TransformStream constructor", + "highWaterMark", "be a number >= 0"); } } @@ -442,8 +439,8 @@ bool TransformStream::constructor(JSContext *cx, unsigned argc, JS::Value *vp) { return false; } if (found) { - JS_ReportErrorLatin1(cx, "transformer.readableType is reserved for future use"); - return false; + return api::throw_error(cx, api::Errors::TypeError, "TransformStream constructor", + "transformer.readableType", "not be used: it's reserved for future use"); } // 4. If transformerDict["writableType"] [exists], throw a `[RangeError]` @@ -452,8 +449,8 @@ bool TransformStream::constructor(JSContext *cx, unsigned argc, JS::Value *vp) { return false; } if (found) { - JS_ReportErrorLatin1(cx, "transformer.writableType is reserved for future use"); - return false; + return api::throw_error(cx, api::Errors::TypeError, "TransformStream constructor", + "transformer.writableType", "not be used: it's reserved for future use"); } } diff --git a/builtins/web/structured-clone.cpp b/builtins/web/structured-clone.cpp index 9b69fc8b..fc6c2c15 100644 --- a/builtins/web/structured-clone.cpp +++ b/builtins/web/structured-clone.cpp @@ -1,5 +1,7 @@ #include "structured-clone.h" +#include "dom-exception.h" + namespace builtins { namespace web { namespace structured_clone { @@ -56,8 +58,7 @@ JSObject *ReadStructuredClone(JSContext *cx, JSStructuredCloneReader *r, bool WriteStructuredClone(JSContext *cx, JSStructuredCloneWriter *w, JS::HandleObject obj, bool *sameProcessScopeRequired, void *closure) { if (!url::URLSearchParams::is_instance(obj)) { - JS_ReportErrorLatin1(cx, "The object could not be cloned"); - return false; + return dom_exception::DOMException::raise(cx, "The object could not be cloned", "DataCloneError"); } auto slice = url::URLSearchParams::serialize(cx, obj); diff --git a/builtins/web/text-codec/text-codec-errors.h b/builtins/web/text-codec/text-codec-errors.h new file mode 100644 index 00000000..a5a8b6a9 --- /dev/null +++ b/builtins/web/text-codec/text-codec-errors.h @@ -0,0 +1,12 @@ +#ifndef TEXT_CODEC_ERRORS_H +#define TEXT_CODEC_ERRORS_H + +#include "builtin.h" + +namespace TextCodecErrors { +DEF_ERR(FetchNetworkError, JSEXN_TYPEERR, "NetworkError when attempting to fetch resource", 0) +DEF_ERR(InvalidEncoding, JSEXN_RANGEERR, "TextDecoder constructor: The given encoding is not supported.", 0) +DEF_ERR(DecodingFailed, JSEXN_TYPEERR, "TextDecoder.decode: Decoding failed.", 0) +}; + +#endif // TEXT_CODEC_ERRORS_H diff --git a/builtins/web/text-codec/text-decoder.cpp b/builtins/web/text-codec/text-decoder.cpp index c43f416c..226db896 100644 --- a/builtins/web/text-codec/text-decoder.cpp +++ b/builtins/web/text-codec/text-decoder.cpp @@ -2,6 +2,8 @@ #include "encode.h" #include "rust-encoding.h" +#include "text-codec-errors.h" + namespace builtins { namespace web { namespace text_codec { @@ -9,6 +11,11 @@ namespace text_codec { bool TextDecoder::decode(JSContext *cx, unsigned argc, JS::Value *vp) { METHOD_HEADER(0); + // TODO: Change this class so that its prototype isn't an instance of the class + if (self == proto_obj) { + return api::throw_error(cx, api::Errors::WrongReceiver, "decode", "TextDecoder"); + } + auto source_value = args.get(0); std::optional> src; @@ -25,9 +32,8 @@ bool TextDecoder::decode(JSContext *cx, unsigned argc, JS::Value *vp) { if (args.hasDefined(1)) { auto options_value = args.get(1); if (!options_value.isObject()) { - JS_ReportErrorNumberASCII(cx, GetErrorMessage, nullptr, - JSMSG_TEXT_DECODER_DECODE_OPTIONS_NOT_DICTIONARY); - return false; + return api::throw_error(cx, api::Errors::TypeError, "TextDecoder.decode", + "options", "be an object or undefined"); } JS::RootedObject options(cx, &options_value.toObject()); JS::RootedValue stream_value(cx); @@ -57,8 +63,7 @@ bool TextDecoder::decode(JSContext *cx, unsigned argc, JS::Value *vp) { result = jsencoding::decoder_decode_to_utf16_without_replacement(decoder, src->data(), &srcLen, dest.get(), &destLen, !stream); if (result != 0) { - JS_ReportErrorNumberASCII(cx, GetErrorMessage, nullptr, JSMSG_TEXT_DECODER_DECODING_FAILED); - return false; + return api::throw_error(cx, TextCodecErrors::DecodingFailed); } } else { bool hadReplacements; @@ -83,8 +88,7 @@ bool TextDecoder::decode(JSContext *cx, unsigned argc, JS::Value *vp) { JS::RootedString str(cx, JS_NewUCStringCopyN(cx, reinterpret_cast(dest.get()), destLen)); if (!str) { - JS_ReportErrorNumberASCII(cx, GetErrorMessage, nullptr, JSMSG_TEXT_DECODER_DECODING_FAILED); - return false; + return api::throw_error(cx, TextCodecErrors::DecodingFailed); } args.rval().setString(str); @@ -93,15 +97,9 @@ bool TextDecoder::decode(JSContext *cx, unsigned argc, JS::Value *vp) { bool TextDecoder::encoding_get(JSContext *cx, unsigned argc, JS::Value *vp) { METHOD_HEADER(0); - - JS::RootedObject result(cx); - if (!JS_GetPrototype(cx, self, &result)) { - return false; - } - if (result != TextDecoder::proto_obj) { - JS_ReportErrorNumberASCII(cx, GetErrorMessage, nullptr, JSMSG_INVALID_INTERFACE, "encoding get", - "TextDecoder"); - return false; + // TODO: Change this class so that its prototype isn't an instance of the class + if (self == proto_obj) { + return api::throw_error(cx, api::Errors::WrongReceiver, "encoding get", "TextDecoder"); } auto encoding = reinterpret_cast( @@ -131,14 +129,9 @@ bool TextDecoder::encoding_get(JSContext *cx, unsigned argc, JS::Value *vp) { bool TextDecoder::fatal_get(JSContext *cx, unsigned argc, JS::Value *vp) { METHOD_HEADER(0); - JS::RootedObject result(cx); - if (!JS_GetPrototype(cx, self, &result)) { - return false; - } - if (result != TextDecoder::proto_obj) { - JS_ReportErrorNumberASCII(cx, GetErrorMessage, nullptr, JSMSG_INVALID_INTERFACE, "fatal get", - "TextDecoder"); - return false; + // TODO: Change this class so that its prototype isn't an instance of the class + if (self == proto_obj) { + return api::throw_error(cx, api::Errors::WrongReceiver, "fatal get", "TextDecoder"); } auto fatal = @@ -151,14 +144,9 @@ bool TextDecoder::fatal_get(JSContext *cx, unsigned argc, JS::Value *vp) { bool TextDecoder::ignoreBOM_get(JSContext *cx, unsigned argc, JS::Value *vp) { METHOD_HEADER(0); - JS::RootedObject result(cx); - if (!JS_GetPrototype(cx, self, &result)) { - return false; - } - if (result != TextDecoder::proto_obj) { - JS_ReportErrorNumberASCII(cx, GetErrorMessage, nullptr, JSMSG_INVALID_INTERFACE, - "ignoreBOM get", "TextDecoder"); - return false; + // TODO: Change this class so that its prototype isn't an instance of the class + if (self == proto_obj) { + return api::throw_error(cx, api::Errors::WrongReceiver, "ignoreBOM get", "TextDecoder"); } auto ignoreBOM = @@ -212,8 +200,7 @@ bool TextDecoder::constructor(JSContext *cx, unsigned argc, JS::Value *vp) { reinterpret_cast(label_chars.begin()), label_chars.len)); } if (!encoding) { - JS_ReportErrorNumberASCII(cx, GetErrorMessage, nullptr, JSMSG_TEXT_DECODER_INVALID_ENCODING); - return false; + return api::throw_error(cx, TextCodecErrors::InvalidEncoding); } bool fatal = false; bool ignoreBOM = false; @@ -232,9 +219,8 @@ bool TextDecoder::constructor(JSContext *cx, unsigned argc, JS::Value *vp) { } ignoreBOM = JS::ToBoolean(ignoreBOM_value); } else if (!options_val.isNull()) { - JS_ReportErrorNumberASCII(cx, GetErrorMessage, nullptr, - JSMSG_TEXT_DECODER_OPTIONS_NOT_DICTIONARY); - return false; + return api::throw_error(cx, api::Errors::TypeError, "TextDecoder constructor", + "options", "be an object or undefined"); } } JS::RootedObject self(cx, JS_NewObjectForConstructor(cx, &class_, args)); diff --git a/builtins/web/text-codec/text-encoder.cpp b/builtins/web/text-codec/text-encoder.cpp index 56e1b010..541dfd99 100644 --- a/builtins/web/text-codec/text-encoder.cpp +++ b/builtins/web/text-codec/text-encoder.cpp @@ -18,6 +18,11 @@ namespace text_codec { bool TextEncoder::encode(JSContext *cx, unsigned argc, JS::Value *vp) { METHOD_HEADER(0); + // TODO: Change this class so that its prototype isn't an instance of the class + if (self == proto_obj) { + return api::throw_error(cx, api::Errors::WrongReceiver, "encode", "TextEncoder"); + } + // Default to empty string if no input is given. if (args.get(0).isUndefined()) { JS::RootedObject byte_array(cx, JS_NewUint8Array(cx, 0)); @@ -52,6 +57,11 @@ bool TextEncoder::encode(JSContext *cx, unsigned argc, JS::Value *vp) { bool TextEncoder::encodeInto(JSContext *cx, unsigned argc, JS::Value *vp) { METHOD_HEADER(2); + // TODO: Change this class so that its prototype isn't an instance of the class + if (self == proto_obj) { + return api::throw_error(cx, api::Errors::WrongReceiver, "encodeInto", "TextEncoder"); + } + auto source = JS::ToString(cx, args.get(0)); if (!source) { return false; @@ -59,29 +69,19 @@ bool TextEncoder::encodeInto(JSContext *cx, unsigned argc, JS::Value *vp) { auto destination_value = args.get(1); if (!destination_value.isObject()) { - JS_ReportErrorNumberASCII(cx, GetErrorMessage, nullptr, - JSMSG_TEXT_ENCODER_ENCODEINTO_INVALID_ARRAY); - return false; + return api::throw_error(cx, api::Errors::TypeError, "TextEncoder.encodeInto", + "destination", "be a Uint8Array"); } JS::RootedObject destination(cx, &destination_value.toObject()); - if (!JS_IsArrayBufferViewObject(destination)) { - JS_ReportErrorNumberASCII(cx, GetErrorMessage, nullptr, - JSMSG_TEXT_ENCODER_ENCODEINTO_INVALID_ARRAY); - return false; - } - if (JS::IsLargeArrayBufferView(destination)) { - JS_ReportErrorNumberASCII(cx, GetErrorMessage, nullptr, - JSMSG_TEXT_ENCODER_ENCODEINTO_INVALID_ARRAY); - return false; - } uint8_t *data; bool is_shared; size_t len = 0; + // JS_GetObjectAsUint8Array returns nullptr without throwing if the object is not + // a Uint8Array, so we don't need to do explicit checks before calling it. if (!JS_GetObjectAsUint8Array(destination, &len, &is_shared, &data)) { - JS_ReportErrorNumberASCII(cx, GetErrorMessage, nullptr, - JSMSG_TEXT_ENCODER_ENCODEINTO_INVALID_ARRAY); - return false; + return api::throw_error(cx, api::Errors::TypeError, "TextEncoder.encodeInto", + "destination", "be a Uint8Array"); } auto span = AsWritableChars(mozilla::Span(data, len)); auto maybe = JS_EncodeStringToUTF8BufferPartial(cx, source, span); @@ -114,14 +114,9 @@ bool TextEncoder::encodeInto(JSContext *cx, unsigned argc, JS::Value *vp) { bool TextEncoder::encoding_get(JSContext *cx, unsigned argc, JS::Value *vp) { METHOD_HEADER(0); - JS::RootedObject result(cx); - if (!JS_GetPrototype(cx, self, &result)) { - return false; - } - if (result != TextEncoder::proto_obj) { - JS_ReportErrorNumberASCII(cx, GetErrorMessage, nullptr, JSMSG_INVALID_INTERFACE, "encoding get", - "TextEncoder"); - return false; + // TODO: Change this class so that its prototype isn't an instance of the class + if (self == proto_obj) { + return api::throw_error(cx, api::Errors::WrongReceiver, "encoding get", "TextEncoder"); } JS::RootedString str(cx, JS_NewStringCopyN(cx, "utf-8", 5)); diff --git a/builtins/web/timers.cpp b/builtins/web/timers.cpp index 340c852b..ee57e38f 100644 --- a/builtins/web/timers.cpp +++ b/builtins/web/timers.cpp @@ -6,15 +6,34 @@ #include #include #include +#include #include #define S_TO_NS(s) ((s) * 1000000000) #define NS_TO_MS(ns) ((ns) / 1000000) +namespace { + +class TimersMap { +public: + std::map timers_ = {}; + int32_t next_timer_id = 1; + void trace(JSTracer *trc) { + for (auto& [id, timer] : timers_) { + timer->trace(trc); + } + } +}; + +} + +static PersistentRooted> TIMERS_MAP; static api::Engine *ENGINE; class TimerTask final : public api::AsyncTask { using TimerArgumentsVector = std::vector>; + + int32_t timer_id_; int64_t delay_; int64_t deadline_; bool repeat_; @@ -34,6 +53,8 @@ class TimerTask final : public api::AsyncTask { } handle_ = host_api::MonotonicClock::subscribe(deadline_, true); + timer_id_ = TIMERS_MAP->next_timer_id++; + TIMERS_MAP->timers_.emplace(timer_id_, this); } [[nodiscard]] bool run(api::Engine *engine) override { @@ -55,25 +76,58 @@ class TimerTask final : public api::AsyncTask { return false; } - if (repeat_) { - engine->queue_async_task(new TimerTask(delay_, true, callback, argv)); + // The task might've been canceled during the callback. + if (handle_ != INVALID_POLLABLE_HANDLE) { + host_api::MonotonicClock::unsubscribe(handle_); + } + + if (TIMERS_MAP->timers_.contains(timer_id_)) { + if (repeat_) { + deadline_ = host_api::MonotonicClock::now() + delay_; + handle_ = host_api::MonotonicClock::subscribe(deadline_, true); + engine->queue_async_task(this); + } else { + TIMERS_MAP->timers_.erase(timer_id_); + } } - return cancel(engine); + return true; } [[nodiscard]] bool cancel(api::Engine *engine) override { + if (!TIMERS_MAP->timers_.contains(timer_id_)) { + return false; + } + host_api::MonotonicClock::unsubscribe(id()); handle_ = -1; return true; } + [[nodiscard]] uint64_t deadline() override { + return deadline_; + } + + [[nodiscard]] int32_t timer_id() const { + return timer_id_; + } + void trace(JSTracer *trc) override { TraceEdge(trc, &callback_, "Timer callback"); for (auto &arg : arguments_) { TraceEdge(trc, &arg, "Timer callback arguments"); } } + + static bool clear(int32_t timer_id) { + if (!TIMERS_MAP->timers_.contains(timer_id)) { + return false; + } + + ENGINE->cancel_async_task(TIMERS_MAP->timers_[timer_id]); + TIMERS_MAP->timers_.erase(timer_id); + return true; + } }; namespace builtins::web::timers { @@ -91,9 +145,8 @@ template bool setTimeout_or_interval(JSContext *cx, const unsigned } if (!(args[0].isObject() && JS::IsCallable(&args[0].toObject()))) { - JS_ReportErrorASCII(cx, "First argument to %s must be a function", - repeat ? "setInterval" : "setTimeout"); - return false; + return api::throw_error(cx, api::Errors::TypeError, repeat ? "setInterval" : "setTimeout", + "first argument", "be a function"); } const RootedObject handler(cx, &args[0].toObject()); @@ -119,7 +172,7 @@ template bool setTimeout_or_interval(JSContext *cx, const unsigned const auto timer = new TimerTask(delay, repeat, handler, handler_args); ENGINE->queue_async_task(timer); - args.rval().setInt32(timer->id()); + args.rval().setInt32(timer->timer_id()); return true; } @@ -130,7 +183,6 @@ template bool setTimeout_or_interval(JSContext *cx, const unsigned * https://html.spec.whatwg.org/multipage/timers-and-user-prompts.html#dom-clearinterval */ template bool clearTimeout_or_interval(JSContext *cx, unsigned argc, Value *vp) { - REQUEST_HANDLER_ONLY(interval ? "clearInterval" : "clearTimeout"); const CallArgs args = CallArgsFromVp(argc, vp); if (!args.requireAtLeast(cx, interval ? "clearInterval" : "clearTimeout", 1)) { return false; @@ -141,7 +193,7 @@ template bool clearTimeout_or_interval(JSContext *cx, unsigned a return false; } - ENGINE->cancel_async_task(id); + TimerTask::clear(id); args.rval().setUndefined(); return true; @@ -155,6 +207,7 @@ constexpr JSFunctionSpec methods[] = { bool install(api::Engine *engine) { ENGINE = engine; + TIMERS_MAP.init(engine->cx(), js::MakeUnique()); return JS_DefineFunctions(engine->cx(), engine->global(), methods); } diff --git a/builtins/web/url.cpp b/builtins/web/url.cpp index b326a536..e5e96b23 100644 --- a/builtins/web/url.cpp +++ b/builtins/web/url.cpp @@ -336,9 +336,7 @@ bool URLSearchParams::forEach(JSContext *cx, unsigned argc, JS::Value *vp) { const auto params = get_params(self); if (!args[0].isObject() || !JS::IsCallable(&args[0].toObject())) { - JS_ReportErrorASCII(cx, "Failed to execute 'forEach' on 'URLSearchParams': " - "parameter 1 is not of type 'Function'"); - return false; + return api::throw_error(cx, api::Errors::ForEachCallback, "URLSearchParams"); } JS::HandleValue callback = args[0]; @@ -540,9 +538,13 @@ const JSPropertySpec URL::properties[] = { JS_PS_END, }; +const jsurl::JSUrl *URL::url(JSObject *self) { + MOZ_ASSERT(is_instance(self)); + return static_cast(JS::GetReservedSlot(self, Url).toPrivate()); +} + jsurl::SpecString URL::origin(JSContext *cx, JS::HandleObject self) { - auto *url = static_cast(JS::GetReservedSlot(self, Slots::Url).toPrivate()); - return jsurl::origin(url); + return jsurl::origin(url(self)); } bool URL::origin(JSContext *cx, JS::HandleObject self, JS::MutableHandleValue rval) { @@ -564,12 +566,15 @@ bool URL::searchParams_get(JSContext *cx, unsigned argc, JS::Value *vp) { JS::Value params_val = JS::GetReservedSlot(self, Slots::Params); JS::RootedObject params(cx); if (params_val.isNullOrUndefined()) { - auto *url = static_cast(JS::GetReservedSlot(self, Slots::Url).toPrivate()); JS::RootedObject url_search_params_instance( cx, JS_NewObjectWithGivenProto(cx, &URLSearchParams::class_, URLSearchParams::proto_obj)); if (!url_search_params_instance) return false; - params = URLSearchParams::create(cx, url_search_params_instance, url); + + // The const-cast here is okay because we while normally callers of URL::url mustn't mutate + // the returned object, URLSearchParams is intended to. + params = URLSearchParams::create(cx, url_search_params_instance, + const_cast(url(self))); if (!params) return false; JS::SetReservedSlot(self, Slots::Params, JS::ObjectValue(*params)); @@ -605,6 +610,8 @@ bool URL::constructor(JSContext *cx, unsigned argc, JS::Value *vp) { return true; } +DEF_ERR(InvalidURLError, JSEXN_TYPEERR, "URL constructor: {0} is not a valid URL.", 1); + JSObject *URL::create(JSContext *cx, JS::HandleObject self, jsurl::SpecString url_str, const jsurl::JSUrl *base) { jsurl::JSUrl *url; @@ -615,7 +622,7 @@ JSObject *URL::create(JSContext *cx, JS::HandleObject self, jsurl::SpecString ur } if (!url) { - JS_ReportErrorUTF8(cx, "URL constructor: %s is not a valid URL.", (char *)url_str.data); + api::throw_error(cx, InvalidURLError, (char *)url_str.data); return nullptr; } @@ -659,7 +666,7 @@ JSObject *URL::create(JSContext *cx, JS::HandleObject self, JS::HandleValue url_ base = jsurl::new_jsurl(&str); if (!base) { - JS_ReportErrorUTF8(cx, "URL constructor: %s is not a valid URL.", (char *)str.data); + api::throw_error(cx, InvalidURLError, (char *)str.data); return nullptr; } } diff --git a/builtins/web/url.h b/builtins/web/url.h index 6e38dddf..085e5c82 100644 --- a/builtins/web/url.h +++ b/builtins/web/url.h @@ -103,7 +103,9 @@ class URL : public BuiltinImpl { static const unsigned ctor_length = 1; + static const jsurl::JSUrl *url(JSObject *self); static jsurl::SpecString origin(JSContext *cx, JS::HandleObject self); + static bool origin(JSContext *cx, JS::HandleObject self, JS::MutableHandleValue rval); static bool hash(JSContext *cx, JS::HandleObject self, JS::MutableHandleValue rval); static bool host(JSContext *cx, JS::HandleObject self, JS::MutableHandleValue rval); diff --git a/builtins/web/worker-location.cpp b/builtins/web/worker-location.cpp index 2edbbf5b..b713a4d9 100644 --- a/builtins/web/worker-location.cpp +++ b/builtins/web/worker-location.cpp @@ -64,11 +64,6 @@ const JSPropertySpec WorkerLocation::properties[] = { JS_STRING_SYM_PS(toStringTag, "Location", JSPROP_READONLY), JS_PS_END}; -bool WorkerLocation::constructor(JSContext *cx, unsigned argc, JS::Value *vp) { - JS_ReportErrorLatin1(cx, "Illegal constructor WorkerLocation"); - return false; -} - bool WorkerLocation::init_class(JSContext *cx, JS::HandleObject global) { if (!init_class_impl(cx, global)) { return false; diff --git a/builtins/web/worker-location.h b/builtins/web/worker-location.h index 4debb7b7..4c1d33b9 100644 --- a/builtins/web/worker-location.h +++ b/builtins/web/worker-location.h @@ -7,7 +7,7 @@ namespace builtins { namespace web { namespace worker_location { -class WorkerLocation : public BuiltinImpl { +class WorkerLocation : public BuiltinNoConstructor { private: public: static constexpr const char *class_name = "WorkerLocation"; @@ -21,8 +21,6 @@ class WorkerLocation : public BuiltinImpl { static JS::PersistentRooted url; static bool toString(JSContext *cx, unsigned argc, JS::Value *vp); - static bool constructor(JSContext *cx, unsigned argc, JS::Value *vp); - static bool init_class(JSContext *cx, JS::HandleObject global); }; diff --git a/cmake/builtins.cmake b/cmake/builtins.cmake index 2d5ef420..ea597f1a 100644 --- a/cmake/builtins.cmake +++ b/cmake/builtins.cmake @@ -78,10 +78,7 @@ add_builtin( SRC builtins/web/fetch/fetch_event.cpp DEPENDENCIES - host_api - INCLUDE_DIRS - runtime - ${HOST_API}/bindings/) + host_api) add_builtin( builtins::web::crypto diff --git a/cmake/init-corrosion.cmake b/cmake/init-corrosion.cmake index a73fd84a..05fac229 100644 --- a/cmake/init-corrosion.cmake +++ b/cmake/init-corrosion.cmake @@ -9,7 +9,7 @@ set(Rust_CARGO_TARGET_LINK_NATIVE_LIBS "") file(STRINGS "${CMAKE_CURRENT_SOURCE_DIR}/rust-toolchain.toml" Rust_TOOLCHAIN REGEX "^channel ?=") string(REGEX MATCH "[0-9.]+" Rust_TOOLCHAIN "${Rust_TOOLCHAIN}") execute_process(COMMAND rustup toolchain install ${Rust_TOOLCHAIN}) -execute_process(COMMAND rustup target add wasm32-wasi) +execute_process(COMMAND rustup target add --toolchain ${Rust_TOOLCHAIN} wasm32-wasi) CPMAddPackage("gh:corrosion-rs/corrosion#be76480232216a64f65e3b1d9794d68cbac6c690") string(TOLOWER ${Rust_CARGO_HOST_ARCH} HOST_ARCH) diff --git a/cmake/openssl.cmake b/cmake/openssl.cmake index 8dc41620..e7d6732e 100644 --- a/cmake/openssl.cmake +++ b/cmake/openssl.cmake @@ -7,7 +7,7 @@ include(ExternalProject) ExternalProject_Add( OpenSSL SOURCE_DIR ${OPENSSL_SOURCE_DIR} - URL https://www.openssl.org/source/openssl-${OPENSSL_VERSION}.tar.gz + URL https://openssl.org/source/old/3.0/openssl-${OPENSSL_VERSION}.tar.gz URL_HASH SHA256=83049d042a260e696f62406ac5c08bf706fd84383f945cf21bd61e9ed95c396e USES_TERMINAL_DOWNLOAD TRUE PATCH_COMMAND diff --git a/cmake/spidermonkey.cmake b/cmake/spidermonkey.cmake index 8d7b0d12..475a358a 100644 --- a/cmake/spidermonkey.cmake +++ b/cmake/spidermonkey.cmake @@ -1,4 +1,4 @@ -set(SM_REV 702095ed0ba2316b4f2905bbd597d0b2fa23951e) +set(SM_REV ffbf1c4641440e74174199def6558c710b3ac323) if (CMAKE_BUILD_TYPE STREQUAL "Debug") set(SM_BUILD_TYPE debug) diff --git a/cmake/wasmtime.cmake b/cmake/wasmtime.cmake index 47d4fa11..f0444e41 100644 --- a/cmake/wasmtime.cmake +++ b/cmake/wasmtime.cmake @@ -1,4 +1,5 @@ set(WASMTIME_VERSION v19.0.2) set(WASMTIME_URL https://github.com/bytecodealliance/wasmtime/releases/download/${WASMTIME_VERSION}/wasmtime-${WASMTIME_VERSION}-${HOST_ARCH}-${HOST_OS}.tar.xz) CPMAddPackage(NAME wasmtime URL ${WASMTIME_URL} DOWNLOAD_ONLY TRUE) -set(WASMTIME ${CPM_PACKAGE_wasmtime_SOURCE_DIR}/wasmtime) +set(WASMTIME_DIR ${CPM_PACKAGE_wasmtime_SOURCE_DIR}) +set(WASMTIME ${WASMTIME_DIR}/wasmtime) diff --git a/crates/rust-url/Cargo.lock b/crates/rust-url/Cargo.lock index a2a53be0..e89e02ba 100644 --- a/crates/rust-url/Cargo.lock +++ b/crates/rust-url/Cargo.lock @@ -4,18 +4,18 @@ version = 3 [[package]] name = "form_urlencoded" -version = "1.2.0" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a62bc1cf6f830c2ec14a513a9fb124d0a213a629668a4186f329db21fe045652" +checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456" dependencies = [ "percent-encoding", ] [[package]] name = "idna" -version = "0.4.0" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d20d6b07bfbc108882d88ed8e37d39636dcc260e15e30c45e6ba089610b917c" +checksum = "634d9b1461af396cad843f47fdba5597a4f9e6ddd4bfb6ff5d85028c25cb12f6" dependencies = [ "unicode-bidi", "unicode-normalization", @@ -23,9 +23,9 @@ dependencies = [ [[package]] name = "percent-encoding" -version = "2.3.0" +version = "2.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b2a4787296e9989611394c33f193f676704af1686e70b8f8033ab5ba9a35a94" +checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" [[package]] name = "rust-url" @@ -51,24 +51,24 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "unicode-bidi" -version = "0.3.13" +version = "0.3.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92888ba5573ff080736b3648696b70cafad7d250551175acbaa4e0385b3e1460" +checksum = "08f95100a766bf4f8f28f90d77e0a5461bbdb219042e7679bebe79004fed8d75" [[package]] name = "unicode-normalization" -version = "0.1.22" +version = "0.1.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c5713f0fc4b5db668a2ac63cdb7bb4469d8c9fed047b1d0292cc7b0ce2ba921" +checksum = "a56d1686db2308d901306f92a263857ef59ea39678a5458e7cb17f01415101f5" dependencies = [ "tinyvec", ] [[package]] name = "url" -version = "2.4.1" +version = "2.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "143b538f18257fac9cad154828a57c6bf5157e1aa604d4816b5995bf6de87ae5" +checksum = "22784dbdf76fdde8af1aeda5622b546b422b6fc585325248a2bf9f5e41e94d6c" dependencies = [ "form_urlencoded", "idna", diff --git a/crates/rust-url/Cargo.toml b/crates/rust-url/Cargo.toml index 8e4c0d47..6d1ecf90 100644 --- a/crates/rust-url/Cargo.toml +++ b/crates/rust-url/Cargo.toml @@ -7,11 +7,12 @@ edition = "2018" crate-type = ["staticlib"] [dependencies] -url = "2.4.1" +url = "2.5.2" [profile.release] lto = true panic = 'abort' [profile.dev] +lto = true panic = 'abort' diff --git a/crates/rust-url/rust-url.h b/crates/rust-url/rust-url.h index 5706b3f4..4da6db1c 100644 --- a/crates/rust-url/rust-url.h +++ b/crates/rust-url/rust-url.h @@ -40,6 +40,11 @@ struct SpecString { cap(cap) {} + + /// Conversion to a `jsurl::SpecString`. + operator const std::string_view() const { + return std::string_view(reinterpret_cast(this->data), this->len); + } }; /// This type exists to transfer &str-likes over FFI. diff --git a/deps/wpt-hosts b/deps/wpt-hosts new file mode 100644 index 00000000..5d56a62e --- /dev/null +++ b/deps/wpt-hosts @@ -0,0 +1,62 @@ +127.0.0.1 xn--n8j6ds53lwwkrqhv28a.xn--n8j6ds53lwwkrqhv28a.not-web-platform.test +127.0.0.1 xn--n8j6ds53lwwkrqhv28a.xn--lve-6lad.not-web-platform.test +127.0.0.1 www1.not-web-platform.test +127.0.0.1 web-platform.test +127.0.0.1 xn--lve-6lad.www1.web-platform.test +127.0.0.1 xn--lve-6lad.xn--n8j6ds53lwwkrqhv28a.not-web-platform.test +127.0.0.1 www1.xn--n8j6ds53lwwkrqhv28a.not-web-platform.test +127.0.0.1 xn--n8j6ds53lwwkrqhv28a.www.web-platform.test +127.0.0.1 xn--n8j6ds53lwwkrqhv28a.web-platform.test +127.0.0.1 www1.web-platform.test +127.0.0.1 xn--lve-6lad.www.web-platform.test +127.0.0.1 xn--lve-6lad.xn--n8j6ds53lwwkrqhv28a.web-platform.test +127.0.0.1 xn--lve-6lad.xn--lve-6lad.not-web-platform.test +127.0.0.1 xn--n8j6ds53lwwkrqhv28a.xn--lve-6lad.web-platform.test +127.0.0.1 www1.xn--lve-6lad.not-web-platform.test +127.0.0.1 xn--lve-6lad.xn--lve-6lad.web-platform.test +127.0.0.1 xn--lve-6lad.www2.web-platform.test +127.0.0.1 www.not-web-platform.test +127.0.0.1 www2.www1.not-web-platform.test +127.0.0.1 www1.www2.not-web-platform.test +127.0.0.1 not-web-platform.test +127.0.0.1 xn--lve-6lad.not-web-platform.test +127.0.0.1 www2.not-web-platform.test +127.0.0.1 xn--n8j6ds53lwwkrqhv28a.www1.web-platform.test +127.0.0.1 www1.xn--n8j6ds53lwwkrqhv28a.web-platform.test +127.0.0.1 www.www1.not-web-platform.test +127.0.0.1 xn--n8j6ds53lwwkrqhv28a.www.not-web-platform.test +127.0.0.1 www1.www.web-platform.test +127.0.0.1 www.xn--lve-6lad.web-platform.test +127.0.0.1 www2.www.web-platform.test +127.0.0.1 www.web-platform.test +127.0.0.1 xn--n8j6ds53lwwkrqhv28a.www1.not-web-platform.test +127.0.0.1 xn--lve-6lad.www.not-web-platform.test +127.0.0.1 www.www1.web-platform.test +127.0.0.1 www2.xn--lve-6lad.web-platform.test +127.0.0.1 www.xn--n8j6ds53lwwkrqhv28a.not-web-platform.test +127.0.0.1 www2.www1.web-platform.test +127.0.0.1 www2.www2.web-platform.test +127.0.0.1 xn--n8j6ds53lwwkrqhv28a.not-web-platform.test +127.0.0.1 xn--n8j6ds53lwwkrqhv28a.www2.not-web-platform.test +127.0.0.1 xn--lve-6lad.www1.not-web-platform.test +127.0.0.1 www2.www.not-web-platform.test +127.0.0.1 xn--n8j6ds53lwwkrqhv28a.www2.web-platform.test +127.0.0.1 www2.web-platform.test +127.0.0.1 www.www2.not-web-platform.test +127.0.0.1 www.xn--n8j6ds53lwwkrqhv28a.web-platform.test +127.0.0.1 www1.www1.not-web-platform.test +127.0.0.1 www.www.not-web-platform.test +127.0.0.1 xn--lve-6lad.web-platform.test +127.0.0.1 www1.www.not-web-platform.test +127.0.0.1 xn--n8j6ds53lwwkrqhv28a.xn--n8j6ds53lwwkrqhv28a.web-platform.test +127.0.0.1 xn--lve-6lad.www2.not-web-platform.test +127.0.0.1 www.www2.web-platform.test +127.0.0.1 www2.xn--n8j6ds53lwwkrqhv28a.not-web-platform.test +127.0.0.1 www.xn--lve-6lad.not-web-platform.test +127.0.0.1 www1.xn--lve-6lad.web-platform.test +127.0.0.1 www.www.web-platform.test +127.0.0.1 www2.xn--lve-6lad.not-web-platform.test +127.0.0.1 www1.www1.web-platform.test +127.0.0.1 www1.www2.web-platform.test +127.0.0.1 www2.www2.not-web-platform.test +127.0.0.1 www2.xn--n8j6ds53lwwkrqhv28a.web-platform.test \ No newline at end of file diff --git a/host-apis/wasi-0.2.0-rc-2023-10-18/bindings/bindings.c b/host-apis/wasi-0.2.0-rc-2023-10-18/bindings/bindings.c deleted file mode 100644 index d6d85cb2..00000000 --- a/host-apis/wasi-0.2.0-rc-2023-10-18/bindings/bindings.c +++ /dev/null @@ -1,5726 +0,0 @@ -// Generated by `wit-bindgen` 0.16.0. DO NOT EDIT! -#include "bindings.h" - - -__attribute__((__import_module__("wasi:clocks/wall-clock@0.2.0-rc-2023-10-18"), __import_name__("now"))) -extern void __wasm_import_wasi_clocks_0_2_0_rc_2023_10_18_wall_clock_now(int32_t); - -__attribute__((__import_module__("wasi:clocks/wall-clock@0.2.0-rc-2023-10-18"), __import_name__("resolution"))) -extern void __wasm_import_wasi_clocks_0_2_0_rc_2023_10_18_wall_clock_resolution(int32_t); - -__attribute__((__import_module__("wasi:io/poll@0.2.0-rc-2023-10-18"), __import_name__("poll-list"))) -extern void __wasm_import_wasi_io_0_2_0_rc_2023_10_18_poll_poll_list(int32_t, int32_t, int32_t); - -__attribute__((__import_module__("wasi:io/poll@0.2.0-rc-2023-10-18"), __import_name__("poll-one"))) -extern void __wasm_import_wasi_io_0_2_0_rc_2023_10_18_poll_poll_one(int32_t); - -__attribute__((__import_module__("wasi:clocks/monotonic-clock@0.2.0-rc-2023-10-18"), __import_name__("now"))) -extern int64_t __wasm_import_wasi_clocks_0_2_0_rc_2023_10_18_monotonic_clock_now(void); - -__attribute__((__import_module__("wasi:clocks/monotonic-clock@0.2.0-rc-2023-10-18"), __import_name__("resolution"))) -extern int64_t __wasm_import_wasi_clocks_0_2_0_rc_2023_10_18_monotonic_clock_resolution(void); - -__attribute__((__import_module__("wasi:clocks/monotonic-clock@0.2.0-rc-2023-10-18"), __import_name__("subscribe"))) -extern int32_t __wasm_import_wasi_clocks_0_2_0_rc_2023_10_18_monotonic_clock_subscribe(int64_t, int32_t); - -__attribute__((__import_module__("wasi:clocks/timezone@0.2.0-rc-2023-10-18"), __import_name__("display"))) -extern void __wasm_import_wasi_clocks_0_2_0_rc_2023_10_18_timezone_display(int64_t, int32_t, int32_t); - -__attribute__((__import_module__("wasi:clocks/timezone@0.2.0-rc-2023-10-18"), __import_name__("utc-offset"))) -extern int32_t __wasm_import_wasi_clocks_0_2_0_rc_2023_10_18_timezone_utc_offset(int64_t, int32_t); - -__attribute__((__import_module__("wasi:io/streams@0.2.0-rc-2023-10-18"), __import_name__("[method]error.to-debug-string"))) -extern void __wasm_import_wasi_io_0_2_0_rc_2023_10_18_streams_method_error_to_debug_string(int32_t, int32_t); - -__attribute__((__import_module__("wasi:io/streams@0.2.0-rc-2023-10-18"), __import_name__("[method]input-stream.read"))) -extern void __wasm_import_wasi_io_0_2_0_rc_2023_10_18_streams_method_input_stream_read(int32_t, int64_t, int32_t); - -__attribute__((__import_module__("wasi:io/streams@0.2.0-rc-2023-10-18"), __import_name__("[method]input-stream.blocking-read"))) -extern void __wasm_import_wasi_io_0_2_0_rc_2023_10_18_streams_method_input_stream_blocking_read(int32_t, int64_t, int32_t); - -__attribute__((__import_module__("wasi:io/streams@0.2.0-rc-2023-10-18"), __import_name__("[method]input-stream.skip"))) -extern void __wasm_import_wasi_io_0_2_0_rc_2023_10_18_streams_method_input_stream_skip(int32_t, int64_t, int32_t); - -__attribute__((__import_module__("wasi:io/streams@0.2.0-rc-2023-10-18"), __import_name__("[method]input-stream.blocking-skip"))) -extern void __wasm_import_wasi_io_0_2_0_rc_2023_10_18_streams_method_input_stream_blocking_skip(int32_t, int64_t, int32_t); - -__attribute__((__import_module__("wasi:io/streams@0.2.0-rc-2023-10-18"), __import_name__("[method]input-stream.subscribe"))) -extern int32_t __wasm_import_wasi_io_0_2_0_rc_2023_10_18_streams_method_input_stream_subscribe(int32_t); - -__attribute__((__import_module__("wasi:io/streams@0.2.0-rc-2023-10-18"), __import_name__("[method]output-stream.check-write"))) -extern void __wasm_import_wasi_io_0_2_0_rc_2023_10_18_streams_method_output_stream_check_write(int32_t, int32_t); - -__attribute__((__import_module__("wasi:io/streams@0.2.0-rc-2023-10-18"), __import_name__("[method]output-stream.write"))) -extern void __wasm_import_wasi_io_0_2_0_rc_2023_10_18_streams_method_output_stream_write(int32_t, int32_t, int32_t, int32_t); - -__attribute__((__import_module__("wasi:io/streams@0.2.0-rc-2023-10-18"), __import_name__("[method]output-stream.blocking-write-and-flush"))) -extern void __wasm_import_wasi_io_0_2_0_rc_2023_10_18_streams_method_output_stream_blocking_write_and_flush(int32_t, int32_t, int32_t, int32_t); - -__attribute__((__import_module__("wasi:io/streams@0.2.0-rc-2023-10-18"), __import_name__("[method]output-stream.flush"))) -extern void __wasm_import_wasi_io_0_2_0_rc_2023_10_18_streams_method_output_stream_flush(int32_t, int32_t); - -__attribute__((__import_module__("wasi:io/streams@0.2.0-rc-2023-10-18"), __import_name__("[method]output-stream.blocking-flush"))) -extern void __wasm_import_wasi_io_0_2_0_rc_2023_10_18_streams_method_output_stream_blocking_flush(int32_t, int32_t); - -__attribute__((__import_module__("wasi:io/streams@0.2.0-rc-2023-10-18"), __import_name__("[method]output-stream.subscribe"))) -extern int32_t __wasm_import_wasi_io_0_2_0_rc_2023_10_18_streams_method_output_stream_subscribe(int32_t); - -__attribute__((__import_module__("wasi:io/streams@0.2.0-rc-2023-10-18"), __import_name__("[method]output-stream.write-zeroes"))) -extern void __wasm_import_wasi_io_0_2_0_rc_2023_10_18_streams_method_output_stream_write_zeroes(int32_t, int64_t, int32_t); - -__attribute__((__import_module__("wasi:io/streams@0.2.0-rc-2023-10-18"), __import_name__("[method]output-stream.blocking-write-zeroes-and-flush"))) -extern void __wasm_import_wasi_io_0_2_0_rc_2023_10_18_streams_method_output_stream_blocking_write_zeroes_and_flush(int32_t, int64_t, int32_t); - -__attribute__((__import_module__("wasi:io/streams@0.2.0-rc-2023-10-18"), __import_name__("[method]output-stream.splice"))) -extern void __wasm_import_wasi_io_0_2_0_rc_2023_10_18_streams_method_output_stream_splice(int32_t, int32_t, int64_t, int32_t); - -__attribute__((__import_module__("wasi:io/streams@0.2.0-rc-2023-10-18"), __import_name__("[method]output-stream.blocking-splice"))) -extern void __wasm_import_wasi_io_0_2_0_rc_2023_10_18_streams_method_output_stream_blocking_splice(int32_t, int32_t, int64_t, int32_t); - -__attribute__((__import_module__("wasi:io/streams@0.2.0-rc-2023-10-18"), __import_name__("[method]output-stream.forward"))) -extern void __wasm_import_wasi_io_0_2_0_rc_2023_10_18_streams_method_output_stream_forward(int32_t, int32_t, int32_t); - -__attribute__((__import_module__("wasi:filesystem/types@0.2.0-rc-2023-10-18"), __import_name__("[method]descriptor.read-via-stream"))) -extern void __wasm_import_wasi_filesystem_0_2_0_rc_2023_10_18_types_method_descriptor_read_via_stream(int32_t, int64_t, int32_t); - -__attribute__((__import_module__("wasi:filesystem/types@0.2.0-rc-2023-10-18"), __import_name__("[method]descriptor.write-via-stream"))) -extern void __wasm_import_wasi_filesystem_0_2_0_rc_2023_10_18_types_method_descriptor_write_via_stream(int32_t, int64_t, int32_t); - -__attribute__((__import_module__("wasi:filesystem/types@0.2.0-rc-2023-10-18"), __import_name__("[method]descriptor.append-via-stream"))) -extern void __wasm_import_wasi_filesystem_0_2_0_rc_2023_10_18_types_method_descriptor_append_via_stream(int32_t, int32_t); - -__attribute__((__import_module__("wasi:filesystem/types@0.2.0-rc-2023-10-18"), __import_name__("[method]descriptor.advise"))) -extern void __wasm_import_wasi_filesystem_0_2_0_rc_2023_10_18_types_method_descriptor_advise(int32_t, int64_t, int64_t, int32_t, int32_t); - -__attribute__((__import_module__("wasi:filesystem/types@0.2.0-rc-2023-10-18"), __import_name__("[method]descriptor.sync-data"))) -extern void __wasm_import_wasi_filesystem_0_2_0_rc_2023_10_18_types_method_descriptor_sync_data(int32_t, int32_t); - -__attribute__((__import_module__("wasi:filesystem/types@0.2.0-rc-2023-10-18"), __import_name__("[method]descriptor.get-flags"))) -extern void __wasm_import_wasi_filesystem_0_2_0_rc_2023_10_18_types_method_descriptor_get_flags(int32_t, int32_t); - -__attribute__((__import_module__("wasi:filesystem/types@0.2.0-rc-2023-10-18"), __import_name__("[method]descriptor.get-type"))) -extern void __wasm_import_wasi_filesystem_0_2_0_rc_2023_10_18_types_method_descriptor_get_type(int32_t, int32_t); - -__attribute__((__import_module__("wasi:filesystem/types@0.2.0-rc-2023-10-18"), __import_name__("[method]descriptor.set-size"))) -extern void __wasm_import_wasi_filesystem_0_2_0_rc_2023_10_18_types_method_descriptor_set_size(int32_t, int64_t, int32_t); - -__attribute__((__import_module__("wasi:filesystem/types@0.2.0-rc-2023-10-18"), __import_name__("[method]descriptor.set-times"))) -extern void __wasm_import_wasi_filesystem_0_2_0_rc_2023_10_18_types_method_descriptor_set_times(int32_t, int32_t, int64_t, int32_t, int32_t, int64_t, int32_t, int32_t); - -__attribute__((__import_module__("wasi:filesystem/types@0.2.0-rc-2023-10-18"), __import_name__("[method]descriptor.read"))) -extern void __wasm_import_wasi_filesystem_0_2_0_rc_2023_10_18_types_method_descriptor_read(int32_t, int64_t, int64_t, int32_t); - -__attribute__((__import_module__("wasi:filesystem/types@0.2.0-rc-2023-10-18"), __import_name__("[method]descriptor.write"))) -extern void __wasm_import_wasi_filesystem_0_2_0_rc_2023_10_18_types_method_descriptor_write(int32_t, int32_t, int32_t, int64_t, int32_t); - -__attribute__((__import_module__("wasi:filesystem/types@0.2.0-rc-2023-10-18"), __import_name__("[method]descriptor.read-directory"))) -extern void __wasm_import_wasi_filesystem_0_2_0_rc_2023_10_18_types_method_descriptor_read_directory(int32_t, int32_t); - -__attribute__((__import_module__("wasi:filesystem/types@0.2.0-rc-2023-10-18"), __import_name__("[method]descriptor.sync"))) -extern void __wasm_import_wasi_filesystem_0_2_0_rc_2023_10_18_types_method_descriptor_sync(int32_t, int32_t); - -__attribute__((__import_module__("wasi:filesystem/types@0.2.0-rc-2023-10-18"), __import_name__("[method]descriptor.create-directory-at"))) -extern void __wasm_import_wasi_filesystem_0_2_0_rc_2023_10_18_types_method_descriptor_create_directory_at(int32_t, int32_t, int32_t, int32_t); - -__attribute__((__import_module__("wasi:filesystem/types@0.2.0-rc-2023-10-18"), __import_name__("[method]descriptor.stat"))) -extern void __wasm_import_wasi_filesystem_0_2_0_rc_2023_10_18_types_method_descriptor_stat(int32_t, int32_t); - -__attribute__((__import_module__("wasi:filesystem/types@0.2.0-rc-2023-10-18"), __import_name__("[method]descriptor.stat-at"))) -extern void __wasm_import_wasi_filesystem_0_2_0_rc_2023_10_18_types_method_descriptor_stat_at(int32_t, int32_t, int32_t, int32_t, int32_t); - -__attribute__((__import_module__("wasi:filesystem/types@0.2.0-rc-2023-10-18"), __import_name__("[method]descriptor.set-times-at"))) -extern void __wasm_import_wasi_filesystem_0_2_0_rc_2023_10_18_types_method_descriptor_set_times_at(int32_t, int32_t, int32_t, int32_t, int32_t, int64_t, int32_t, int32_t, int64_t, int32_t, int32_t); - -__attribute__((__import_module__("wasi:filesystem/types@0.2.0-rc-2023-10-18"), __import_name__("[method]descriptor.link-at"))) -extern void __wasm_import_wasi_filesystem_0_2_0_rc_2023_10_18_types_method_descriptor_link_at(int32_t, int32_t, int32_t, int32_t, int32_t, int32_t, int32_t, int32_t); - -__attribute__((__import_module__("wasi:filesystem/types@0.2.0-rc-2023-10-18"), __import_name__("[method]descriptor.open-at"))) -extern void __wasm_import_wasi_filesystem_0_2_0_rc_2023_10_18_types_method_descriptor_open_at(int32_t, int32_t, int32_t, int32_t, int32_t, int32_t, int32_t, int32_t); - -__attribute__((__import_module__("wasi:filesystem/types@0.2.0-rc-2023-10-18"), __import_name__("[method]descriptor.readlink-at"))) -extern void __wasm_import_wasi_filesystem_0_2_0_rc_2023_10_18_types_method_descriptor_readlink_at(int32_t, int32_t, int32_t, int32_t); - -__attribute__((__import_module__("wasi:filesystem/types@0.2.0-rc-2023-10-18"), __import_name__("[method]descriptor.remove-directory-at"))) -extern void __wasm_import_wasi_filesystem_0_2_0_rc_2023_10_18_types_method_descriptor_remove_directory_at(int32_t, int32_t, int32_t, int32_t); - -__attribute__((__import_module__("wasi:filesystem/types@0.2.0-rc-2023-10-18"), __import_name__("[method]descriptor.rename-at"))) -extern void __wasm_import_wasi_filesystem_0_2_0_rc_2023_10_18_types_method_descriptor_rename_at(int32_t, int32_t, int32_t, int32_t, int32_t, int32_t, int32_t); - -__attribute__((__import_module__("wasi:filesystem/types@0.2.0-rc-2023-10-18"), __import_name__("[method]descriptor.symlink-at"))) -extern void __wasm_import_wasi_filesystem_0_2_0_rc_2023_10_18_types_method_descriptor_symlink_at(int32_t, int32_t, int32_t, int32_t, int32_t, int32_t); - -__attribute__((__import_module__("wasi:filesystem/types@0.2.0-rc-2023-10-18"), __import_name__("[method]descriptor.access-at"))) -extern void __wasm_import_wasi_filesystem_0_2_0_rc_2023_10_18_types_method_descriptor_access_at(int32_t, int32_t, int32_t, int32_t, int32_t, int32_t, int32_t); - -__attribute__((__import_module__("wasi:filesystem/types@0.2.0-rc-2023-10-18"), __import_name__("[method]descriptor.unlink-file-at"))) -extern void __wasm_import_wasi_filesystem_0_2_0_rc_2023_10_18_types_method_descriptor_unlink_file_at(int32_t, int32_t, int32_t, int32_t); - -__attribute__((__import_module__("wasi:filesystem/types@0.2.0-rc-2023-10-18"), __import_name__("[method]descriptor.change-file-permissions-at"))) -extern void __wasm_import_wasi_filesystem_0_2_0_rc_2023_10_18_types_method_descriptor_change_file_permissions_at(int32_t, int32_t, int32_t, int32_t, int32_t, int32_t); - -__attribute__((__import_module__("wasi:filesystem/types@0.2.0-rc-2023-10-18"), __import_name__("[method]descriptor.change-directory-permissions-at"))) -extern void __wasm_import_wasi_filesystem_0_2_0_rc_2023_10_18_types_method_descriptor_change_directory_permissions_at(int32_t, int32_t, int32_t, int32_t, int32_t, int32_t); - -__attribute__((__import_module__("wasi:filesystem/types@0.2.0-rc-2023-10-18"), __import_name__("[method]descriptor.lock-shared"))) -extern void __wasm_import_wasi_filesystem_0_2_0_rc_2023_10_18_types_method_descriptor_lock_shared(int32_t, int32_t); - -__attribute__((__import_module__("wasi:filesystem/types@0.2.0-rc-2023-10-18"), __import_name__("[method]descriptor.lock-exclusive"))) -extern void __wasm_import_wasi_filesystem_0_2_0_rc_2023_10_18_types_method_descriptor_lock_exclusive(int32_t, int32_t); - -__attribute__((__import_module__("wasi:filesystem/types@0.2.0-rc-2023-10-18"), __import_name__("[method]descriptor.try-lock-shared"))) -extern void __wasm_import_wasi_filesystem_0_2_0_rc_2023_10_18_types_method_descriptor_try_lock_shared(int32_t, int32_t); - -__attribute__((__import_module__("wasi:filesystem/types@0.2.0-rc-2023-10-18"), __import_name__("[method]descriptor.try-lock-exclusive"))) -extern void __wasm_import_wasi_filesystem_0_2_0_rc_2023_10_18_types_method_descriptor_try_lock_exclusive(int32_t, int32_t); - -__attribute__((__import_module__("wasi:filesystem/types@0.2.0-rc-2023-10-18"), __import_name__("[method]descriptor.unlock"))) -extern void __wasm_import_wasi_filesystem_0_2_0_rc_2023_10_18_types_method_descriptor_unlock(int32_t, int32_t); - -__attribute__((__import_module__("wasi:filesystem/types@0.2.0-rc-2023-10-18"), __import_name__("[method]descriptor.is-same-object"))) -extern int32_t __wasm_import_wasi_filesystem_0_2_0_rc_2023_10_18_types_method_descriptor_is_same_object(int32_t, int32_t); - -__attribute__((__import_module__("wasi:filesystem/types@0.2.0-rc-2023-10-18"), __import_name__("[method]descriptor.metadata-hash"))) -extern void __wasm_import_wasi_filesystem_0_2_0_rc_2023_10_18_types_method_descriptor_metadata_hash(int32_t, int32_t); - -__attribute__((__import_module__("wasi:filesystem/types@0.2.0-rc-2023-10-18"), __import_name__("[method]descriptor.metadata-hash-at"))) -extern void __wasm_import_wasi_filesystem_0_2_0_rc_2023_10_18_types_method_descriptor_metadata_hash_at(int32_t, int32_t, int32_t, int32_t, int32_t); - -__attribute__((__import_module__("wasi:filesystem/types@0.2.0-rc-2023-10-18"), __import_name__("[method]directory-entry-stream.read-directory-entry"))) -extern void __wasm_import_wasi_filesystem_0_2_0_rc_2023_10_18_types_method_directory_entry_stream_read_directory_entry(int32_t, int32_t); - -__attribute__((__import_module__("wasi:filesystem/types@0.2.0-rc-2023-10-18"), __import_name__("filesystem-error-code"))) -extern void __wasm_import_wasi_filesystem_0_2_0_rc_2023_10_18_types_filesystem_error_code(int32_t, int32_t); - -__attribute__((__import_module__("wasi:filesystem/preopens@0.2.0-rc-2023-10-18"), __import_name__("get-directories"))) -extern void __wasm_import_wasi_filesystem_0_2_0_rc_2023_10_18_preopens_get_directories(int32_t); - -__attribute__((__import_module__("wasi:sockets/instance-network@0.2.0-rc-2023-10-18"), __import_name__("instance-network"))) -extern int32_t __wasm_import_wasi_sockets_0_2_0_rc_2023_10_18_instance_network_instance_network(void); - -__attribute__((__import_module__("wasi:sockets/ip-name-lookup@0.2.0-rc-2023-10-18"), __import_name__("resolve-addresses"))) -extern void __wasm_import_wasi_sockets_0_2_0_rc_2023_10_18_ip_name_lookup_resolve_addresses(int32_t, int32_t, int32_t, int32_t, int32_t, int32_t, int32_t); - -__attribute__((__import_module__("wasi:sockets/ip-name-lookup@0.2.0-rc-2023-10-18"), __import_name__("[method]resolve-address-stream.resolve-next-address"))) -extern void __wasm_import_wasi_sockets_0_2_0_rc_2023_10_18_ip_name_lookup_method_resolve_address_stream_resolve_next_address(int32_t, int32_t); - -__attribute__((__import_module__("wasi:sockets/ip-name-lookup@0.2.0-rc-2023-10-18"), __import_name__("[method]resolve-address-stream.subscribe"))) -extern int32_t __wasm_import_wasi_sockets_0_2_0_rc_2023_10_18_ip_name_lookup_method_resolve_address_stream_subscribe(int32_t); - -__attribute__((__import_module__("wasi:sockets/tcp@0.2.0-rc-2023-10-18"), __import_name__("[method]tcp-socket.start-bind"))) -extern void __wasm_import_wasi_sockets_0_2_0_rc_2023_10_18_tcp_method_tcp_socket_start_bind(int32_t, int32_t, int32_t, int32_t, int32_t, int32_t, int32_t, int32_t, int32_t, int32_t, int32_t, int32_t, int32_t, int32_t, int32_t); - -__attribute__((__import_module__("wasi:sockets/tcp@0.2.0-rc-2023-10-18"), __import_name__("[method]tcp-socket.finish-bind"))) -extern void __wasm_import_wasi_sockets_0_2_0_rc_2023_10_18_tcp_method_tcp_socket_finish_bind(int32_t, int32_t); - -__attribute__((__import_module__("wasi:sockets/tcp@0.2.0-rc-2023-10-18"), __import_name__("[method]tcp-socket.start-connect"))) -extern void __wasm_import_wasi_sockets_0_2_0_rc_2023_10_18_tcp_method_tcp_socket_start_connect(int32_t, int32_t, int32_t, int32_t, int32_t, int32_t, int32_t, int32_t, int32_t, int32_t, int32_t, int32_t, int32_t, int32_t, int32_t); - -__attribute__((__import_module__("wasi:sockets/tcp@0.2.0-rc-2023-10-18"), __import_name__("[method]tcp-socket.finish-connect"))) -extern void __wasm_import_wasi_sockets_0_2_0_rc_2023_10_18_tcp_method_tcp_socket_finish_connect(int32_t, int32_t); - -__attribute__((__import_module__("wasi:sockets/tcp@0.2.0-rc-2023-10-18"), __import_name__("[method]tcp-socket.start-listen"))) -extern void __wasm_import_wasi_sockets_0_2_0_rc_2023_10_18_tcp_method_tcp_socket_start_listen(int32_t, int32_t); - -__attribute__((__import_module__("wasi:sockets/tcp@0.2.0-rc-2023-10-18"), __import_name__("[method]tcp-socket.finish-listen"))) -extern void __wasm_import_wasi_sockets_0_2_0_rc_2023_10_18_tcp_method_tcp_socket_finish_listen(int32_t, int32_t); - -__attribute__((__import_module__("wasi:sockets/tcp@0.2.0-rc-2023-10-18"), __import_name__("[method]tcp-socket.accept"))) -extern void __wasm_import_wasi_sockets_0_2_0_rc_2023_10_18_tcp_method_tcp_socket_accept(int32_t, int32_t); - -__attribute__((__import_module__("wasi:sockets/tcp@0.2.0-rc-2023-10-18"), __import_name__("[method]tcp-socket.local-address"))) -extern void __wasm_import_wasi_sockets_0_2_0_rc_2023_10_18_tcp_method_tcp_socket_local_address(int32_t, int32_t); - -__attribute__((__import_module__("wasi:sockets/tcp@0.2.0-rc-2023-10-18"), __import_name__("[method]tcp-socket.remote-address"))) -extern void __wasm_import_wasi_sockets_0_2_0_rc_2023_10_18_tcp_method_tcp_socket_remote_address(int32_t, int32_t); - -__attribute__((__import_module__("wasi:sockets/tcp@0.2.0-rc-2023-10-18"), __import_name__("[method]tcp-socket.address-family"))) -extern int32_t __wasm_import_wasi_sockets_0_2_0_rc_2023_10_18_tcp_method_tcp_socket_address_family(int32_t); - -__attribute__((__import_module__("wasi:sockets/tcp@0.2.0-rc-2023-10-18"), __import_name__("[method]tcp-socket.ipv6-only"))) -extern void __wasm_import_wasi_sockets_0_2_0_rc_2023_10_18_tcp_method_tcp_socket_ipv6_only(int32_t, int32_t); - -__attribute__((__import_module__("wasi:sockets/tcp@0.2.0-rc-2023-10-18"), __import_name__("[method]tcp-socket.set-ipv6-only"))) -extern void __wasm_import_wasi_sockets_0_2_0_rc_2023_10_18_tcp_method_tcp_socket_set_ipv6_only(int32_t, int32_t, int32_t); - -__attribute__((__import_module__("wasi:sockets/tcp@0.2.0-rc-2023-10-18"), __import_name__("[method]tcp-socket.set-listen-backlog-size"))) -extern void __wasm_import_wasi_sockets_0_2_0_rc_2023_10_18_tcp_method_tcp_socket_set_listen_backlog_size(int32_t, int64_t, int32_t); - -__attribute__((__import_module__("wasi:sockets/tcp@0.2.0-rc-2023-10-18"), __import_name__("[method]tcp-socket.keep-alive"))) -extern void __wasm_import_wasi_sockets_0_2_0_rc_2023_10_18_tcp_method_tcp_socket_keep_alive(int32_t, int32_t); - -__attribute__((__import_module__("wasi:sockets/tcp@0.2.0-rc-2023-10-18"), __import_name__("[method]tcp-socket.set-keep-alive"))) -extern void __wasm_import_wasi_sockets_0_2_0_rc_2023_10_18_tcp_method_tcp_socket_set_keep_alive(int32_t, int32_t, int32_t); - -__attribute__((__import_module__("wasi:sockets/tcp@0.2.0-rc-2023-10-18"), __import_name__("[method]tcp-socket.no-delay"))) -extern void __wasm_import_wasi_sockets_0_2_0_rc_2023_10_18_tcp_method_tcp_socket_no_delay(int32_t, int32_t); - -__attribute__((__import_module__("wasi:sockets/tcp@0.2.0-rc-2023-10-18"), __import_name__("[method]tcp-socket.set-no-delay"))) -extern void __wasm_import_wasi_sockets_0_2_0_rc_2023_10_18_tcp_method_tcp_socket_set_no_delay(int32_t, int32_t, int32_t); - -__attribute__((__import_module__("wasi:sockets/tcp@0.2.0-rc-2023-10-18"), __import_name__("[method]tcp-socket.unicast-hop-limit"))) -extern void __wasm_import_wasi_sockets_0_2_0_rc_2023_10_18_tcp_method_tcp_socket_unicast_hop_limit(int32_t, int32_t); - -__attribute__((__import_module__("wasi:sockets/tcp@0.2.0-rc-2023-10-18"), __import_name__("[method]tcp-socket.set-unicast-hop-limit"))) -extern void __wasm_import_wasi_sockets_0_2_0_rc_2023_10_18_tcp_method_tcp_socket_set_unicast_hop_limit(int32_t, int32_t, int32_t); - -__attribute__((__import_module__("wasi:sockets/tcp@0.2.0-rc-2023-10-18"), __import_name__("[method]tcp-socket.receive-buffer-size"))) -extern void __wasm_import_wasi_sockets_0_2_0_rc_2023_10_18_tcp_method_tcp_socket_receive_buffer_size(int32_t, int32_t); - -__attribute__((__import_module__("wasi:sockets/tcp@0.2.0-rc-2023-10-18"), __import_name__("[method]tcp-socket.set-receive-buffer-size"))) -extern void __wasm_import_wasi_sockets_0_2_0_rc_2023_10_18_tcp_method_tcp_socket_set_receive_buffer_size(int32_t, int64_t, int32_t); - -__attribute__((__import_module__("wasi:sockets/tcp@0.2.0-rc-2023-10-18"), __import_name__("[method]tcp-socket.send-buffer-size"))) -extern void __wasm_import_wasi_sockets_0_2_0_rc_2023_10_18_tcp_method_tcp_socket_send_buffer_size(int32_t, int32_t); - -__attribute__((__import_module__("wasi:sockets/tcp@0.2.0-rc-2023-10-18"), __import_name__("[method]tcp-socket.set-send-buffer-size"))) -extern void __wasm_import_wasi_sockets_0_2_0_rc_2023_10_18_tcp_method_tcp_socket_set_send_buffer_size(int32_t, int64_t, int32_t); - -__attribute__((__import_module__("wasi:sockets/tcp@0.2.0-rc-2023-10-18"), __import_name__("[method]tcp-socket.subscribe"))) -extern int32_t __wasm_import_wasi_sockets_0_2_0_rc_2023_10_18_tcp_method_tcp_socket_subscribe(int32_t); - -__attribute__((__import_module__("wasi:sockets/tcp@0.2.0-rc-2023-10-18"), __import_name__("[method]tcp-socket.shutdown"))) -extern void __wasm_import_wasi_sockets_0_2_0_rc_2023_10_18_tcp_method_tcp_socket_shutdown(int32_t, int32_t, int32_t); - -__attribute__((__import_module__("wasi:sockets/tcp-create-socket@0.2.0-rc-2023-10-18"), __import_name__("create-tcp-socket"))) -extern void __wasm_import_wasi_sockets_0_2_0_rc_2023_10_18_tcp_create_socket_create_tcp_socket(int32_t, int32_t); - -__attribute__((__import_module__("wasi:sockets/udp@0.2.0-rc-2023-10-18"), __import_name__("[method]udp-socket.start-bind"))) -extern void __wasm_import_wasi_sockets_0_2_0_rc_2023_10_18_udp_method_udp_socket_start_bind(int32_t, int32_t, int32_t, int32_t, int32_t, int32_t, int32_t, int32_t, int32_t, int32_t, int32_t, int32_t, int32_t, int32_t, int32_t); - -__attribute__((__import_module__("wasi:sockets/udp@0.2.0-rc-2023-10-18"), __import_name__("[method]udp-socket.finish-bind"))) -extern void __wasm_import_wasi_sockets_0_2_0_rc_2023_10_18_udp_method_udp_socket_finish_bind(int32_t, int32_t); - -__attribute__((__import_module__("wasi:sockets/udp@0.2.0-rc-2023-10-18"), __import_name__("[method]udp-socket.start-connect"))) -extern void __wasm_import_wasi_sockets_0_2_0_rc_2023_10_18_udp_method_udp_socket_start_connect(int32_t, int32_t, int32_t, int32_t, int32_t, int32_t, int32_t, int32_t, int32_t, int32_t, int32_t, int32_t, int32_t, int32_t, int32_t); - -__attribute__((__import_module__("wasi:sockets/udp@0.2.0-rc-2023-10-18"), __import_name__("[method]udp-socket.finish-connect"))) -extern void __wasm_import_wasi_sockets_0_2_0_rc_2023_10_18_udp_method_udp_socket_finish_connect(int32_t, int32_t); - -__attribute__((__import_module__("wasi:sockets/udp@0.2.0-rc-2023-10-18"), __import_name__("[method]udp-socket.receive"))) -extern void __wasm_import_wasi_sockets_0_2_0_rc_2023_10_18_udp_method_udp_socket_receive(int32_t, int64_t, int32_t); - -__attribute__((__import_module__("wasi:sockets/udp@0.2.0-rc-2023-10-18"), __import_name__("[method]udp-socket.send"))) -extern void __wasm_import_wasi_sockets_0_2_0_rc_2023_10_18_udp_method_udp_socket_send(int32_t, int32_t, int32_t, int32_t); - -__attribute__((__import_module__("wasi:sockets/udp@0.2.0-rc-2023-10-18"), __import_name__("[method]udp-socket.local-address"))) -extern void __wasm_import_wasi_sockets_0_2_0_rc_2023_10_18_udp_method_udp_socket_local_address(int32_t, int32_t); - -__attribute__((__import_module__("wasi:sockets/udp@0.2.0-rc-2023-10-18"), __import_name__("[method]udp-socket.remote-address"))) -extern void __wasm_import_wasi_sockets_0_2_0_rc_2023_10_18_udp_method_udp_socket_remote_address(int32_t, int32_t); - -__attribute__((__import_module__("wasi:sockets/udp@0.2.0-rc-2023-10-18"), __import_name__("[method]udp-socket.address-family"))) -extern int32_t __wasm_import_wasi_sockets_0_2_0_rc_2023_10_18_udp_method_udp_socket_address_family(int32_t); - -__attribute__((__import_module__("wasi:sockets/udp@0.2.0-rc-2023-10-18"), __import_name__("[method]udp-socket.ipv6-only"))) -extern void __wasm_import_wasi_sockets_0_2_0_rc_2023_10_18_udp_method_udp_socket_ipv6_only(int32_t, int32_t); - -__attribute__((__import_module__("wasi:sockets/udp@0.2.0-rc-2023-10-18"), __import_name__("[method]udp-socket.set-ipv6-only"))) -extern void __wasm_import_wasi_sockets_0_2_0_rc_2023_10_18_udp_method_udp_socket_set_ipv6_only(int32_t, int32_t, int32_t); - -__attribute__((__import_module__("wasi:sockets/udp@0.2.0-rc-2023-10-18"), __import_name__("[method]udp-socket.unicast-hop-limit"))) -extern void __wasm_import_wasi_sockets_0_2_0_rc_2023_10_18_udp_method_udp_socket_unicast_hop_limit(int32_t, int32_t); - -__attribute__((__import_module__("wasi:sockets/udp@0.2.0-rc-2023-10-18"), __import_name__("[method]udp-socket.set-unicast-hop-limit"))) -extern void __wasm_import_wasi_sockets_0_2_0_rc_2023_10_18_udp_method_udp_socket_set_unicast_hop_limit(int32_t, int32_t, int32_t); - -__attribute__((__import_module__("wasi:sockets/udp@0.2.0-rc-2023-10-18"), __import_name__("[method]udp-socket.receive-buffer-size"))) -extern void __wasm_import_wasi_sockets_0_2_0_rc_2023_10_18_udp_method_udp_socket_receive_buffer_size(int32_t, int32_t); - -__attribute__((__import_module__("wasi:sockets/udp@0.2.0-rc-2023-10-18"), __import_name__("[method]udp-socket.set-receive-buffer-size"))) -extern void __wasm_import_wasi_sockets_0_2_0_rc_2023_10_18_udp_method_udp_socket_set_receive_buffer_size(int32_t, int64_t, int32_t); - -__attribute__((__import_module__("wasi:sockets/udp@0.2.0-rc-2023-10-18"), __import_name__("[method]udp-socket.send-buffer-size"))) -extern void __wasm_import_wasi_sockets_0_2_0_rc_2023_10_18_udp_method_udp_socket_send_buffer_size(int32_t, int32_t); - -__attribute__((__import_module__("wasi:sockets/udp@0.2.0-rc-2023-10-18"), __import_name__("[method]udp-socket.set-send-buffer-size"))) -extern void __wasm_import_wasi_sockets_0_2_0_rc_2023_10_18_udp_method_udp_socket_set_send_buffer_size(int32_t, int64_t, int32_t); - -__attribute__((__import_module__("wasi:sockets/udp@0.2.0-rc-2023-10-18"), __import_name__("[method]udp-socket.subscribe"))) -extern int32_t __wasm_import_wasi_sockets_0_2_0_rc_2023_10_18_udp_method_udp_socket_subscribe(int32_t); - -__attribute__((__import_module__("wasi:sockets/udp-create-socket@0.2.0-rc-2023-10-18"), __import_name__("create-udp-socket"))) -extern void __wasm_import_wasi_sockets_0_2_0_rc_2023_10_18_udp_create_socket_create_udp_socket(int32_t, int32_t); - -__attribute__((__import_module__("wasi:random/random@0.2.0-rc-2023-10-18"), __import_name__("get-random-bytes"))) -extern void __wasm_import_wasi_random_0_2_0_rc_2023_10_18_random_get_random_bytes(int64_t, int32_t); - -__attribute__((__import_module__("wasi:random/random@0.2.0-rc-2023-10-18"), __import_name__("get-random-u64"))) -extern int64_t __wasm_import_wasi_random_0_2_0_rc_2023_10_18_random_get_random_u64(void); - -__attribute__((__import_module__("wasi:random/insecure@0.2.0-rc-2023-10-18"), __import_name__("get-insecure-random-bytes"))) -extern void __wasm_import_wasi_random_0_2_0_rc_2023_10_18_insecure_get_insecure_random_bytes(int64_t, int32_t); - -__attribute__((__import_module__("wasi:random/insecure@0.2.0-rc-2023-10-18"), __import_name__("get-insecure-random-u64"))) -extern int64_t __wasm_import_wasi_random_0_2_0_rc_2023_10_18_insecure_get_insecure_random_u64(void); - -__attribute__((__import_module__("wasi:random/insecure-seed@0.2.0-rc-2023-10-18"), __import_name__("insecure-seed"))) -extern void __wasm_import_wasi_random_0_2_0_rc_2023_10_18_insecure_seed_insecure_seed(int32_t); - -__attribute__((__import_module__("wasi:cli/environment@0.2.0-rc-2023-10-18"), __import_name__("get-environment"))) -extern void __wasm_import_wasi_cli_0_2_0_rc_2023_10_18_environment_get_environment(int32_t); - -__attribute__((__import_module__("wasi:cli/environment@0.2.0-rc-2023-10-18"), __import_name__("get-arguments"))) -extern void __wasm_import_wasi_cli_0_2_0_rc_2023_10_18_environment_get_arguments(int32_t); - -__attribute__((__import_module__("wasi:cli/environment@0.2.0-rc-2023-10-18"), __import_name__("initial-cwd"))) -extern void __wasm_import_wasi_cli_0_2_0_rc_2023_10_18_environment_initial_cwd(int32_t); - -__attribute__((__import_module__("wasi:cli/exit@0.2.0-rc-2023-10-18"), __import_name__("exit"))) -extern void __wasm_import_wasi_cli_0_2_0_rc_2023_10_18_exit_exit(int32_t); - -__attribute__((__import_module__("wasi:cli/stdin@0.2.0-rc-2023-10-18"), __import_name__("get-stdin"))) -extern int32_t __wasm_import_wasi_cli_0_2_0_rc_2023_10_18_stdin_get_stdin(void); - -__attribute__((__import_module__("wasi:cli/stdout@0.2.0-rc-2023-10-18"), __import_name__("get-stdout"))) -extern int32_t __wasm_import_wasi_cli_0_2_0_rc_2023_10_18_stdout_get_stdout(void); - -__attribute__((__import_module__("wasi:cli/stderr@0.2.0-rc-2023-10-18"), __import_name__("get-stderr"))) -extern int32_t __wasm_import_wasi_cli_0_2_0_rc_2023_10_18_stderr_get_stderr(void); - -__attribute__((__import_module__("wasi:cli/terminal-stdin@0.2.0-rc-2023-10-18"), __import_name__("get-terminal-stdin"))) -extern void __wasm_import_wasi_cli_0_2_0_rc_2023_10_18_terminal_stdin_get_terminal_stdin(int32_t); - -__attribute__((__import_module__("wasi:cli/terminal-stdout@0.2.0-rc-2023-10-18"), __import_name__("get-terminal-stdout"))) -extern void __wasm_import_wasi_cli_0_2_0_rc_2023_10_18_terminal_stdout_get_terminal_stdout(int32_t); - -__attribute__((__import_module__("wasi:cli/terminal-stderr@0.2.0-rc-2023-10-18"), __import_name__("get-terminal-stderr"))) -extern void __wasm_import_wasi_cli_0_2_0_rc_2023_10_18_terminal_stderr_get_terminal_stderr(int32_t); - -__attribute__((__import_module__("wasi:http/types@0.2.0-rc-2023-10-18"), __import_name__("[constructor]fields"))) -extern int32_t __wasm_import_wasi_http_0_2_0_rc_2023_10_18_types_constructor_fields(int32_t, int32_t); - -__attribute__((__import_module__("wasi:http/types@0.2.0-rc-2023-10-18"), __import_name__("[method]fields.get"))) -extern void __wasm_import_wasi_http_0_2_0_rc_2023_10_18_types_method_fields_get(int32_t, int32_t, int32_t, int32_t); - -__attribute__((__import_module__("wasi:http/types@0.2.0-rc-2023-10-18"), __import_name__("[method]fields.set"))) -extern void __wasm_import_wasi_http_0_2_0_rc_2023_10_18_types_method_fields_set(int32_t, int32_t, int32_t, int32_t, int32_t); - -__attribute__((__import_module__("wasi:http/types@0.2.0-rc-2023-10-18"), __import_name__("[method]fields.delete"))) -extern void __wasm_import_wasi_http_0_2_0_rc_2023_10_18_types_method_fields_delete(int32_t, int32_t, int32_t); - -__attribute__((__import_module__("wasi:http/types@0.2.0-rc-2023-10-18"), __import_name__("[method]fields.append"))) -extern void __wasm_import_wasi_http_0_2_0_rc_2023_10_18_types_method_fields_append(int32_t, int32_t, int32_t, int32_t, int32_t); - -__attribute__((__import_module__("wasi:http/types@0.2.0-rc-2023-10-18"), __import_name__("[method]fields.entries"))) -extern void __wasm_import_wasi_http_0_2_0_rc_2023_10_18_types_method_fields_entries(int32_t, int32_t); - -__attribute__((__import_module__("wasi:http/types@0.2.0-rc-2023-10-18"), __import_name__("[method]fields.clone"))) -extern int32_t __wasm_import_wasi_http_0_2_0_rc_2023_10_18_types_method_fields_clone(int32_t); - -__attribute__((__import_module__("wasi:http/types@0.2.0-rc-2023-10-18"), __import_name__("[method]incoming-request.method"))) -extern void __wasm_import_wasi_http_0_2_0_rc_2023_10_18_types_method_incoming_request_method(int32_t, int32_t); - -__attribute__((__import_module__("wasi:http/types@0.2.0-rc-2023-10-18"), __import_name__("[method]incoming-request.path-with-query"))) -extern void __wasm_import_wasi_http_0_2_0_rc_2023_10_18_types_method_incoming_request_path_with_query(int32_t, int32_t); - -__attribute__((__import_module__("wasi:http/types@0.2.0-rc-2023-10-18"), __import_name__("[method]incoming-request.scheme"))) -extern void __wasm_import_wasi_http_0_2_0_rc_2023_10_18_types_method_incoming_request_scheme(int32_t, int32_t); - -__attribute__((__import_module__("wasi:http/types@0.2.0-rc-2023-10-18"), __import_name__("[method]incoming-request.authority"))) -extern void __wasm_import_wasi_http_0_2_0_rc_2023_10_18_types_method_incoming_request_authority(int32_t, int32_t); - -__attribute__((__import_module__("wasi:http/types@0.2.0-rc-2023-10-18"), __import_name__("[method]incoming-request.headers"))) -extern int32_t __wasm_import_wasi_http_0_2_0_rc_2023_10_18_types_method_incoming_request_headers(int32_t); - -__attribute__((__import_module__("wasi:http/types@0.2.0-rc-2023-10-18"), __import_name__("[method]incoming-request.consume"))) -extern void __wasm_import_wasi_http_0_2_0_rc_2023_10_18_types_method_incoming_request_consume(int32_t, int32_t); - -__attribute__((__import_module__("wasi:http/types@0.2.0-rc-2023-10-18"), __import_name__("[constructor]outgoing-request"))) -extern int32_t __wasm_import_wasi_http_0_2_0_rc_2023_10_18_types_constructor_outgoing_request(int32_t, int32_t, int32_t, int32_t, int32_t, int32_t, int32_t, int32_t, int32_t, int32_t, int32_t, int32_t, int32_t, int32_t); - -__attribute__((__import_module__("wasi:http/types@0.2.0-rc-2023-10-18"), __import_name__("[method]outgoing-request.write"))) -extern void __wasm_import_wasi_http_0_2_0_rc_2023_10_18_types_method_outgoing_request_write(int32_t, int32_t); - -__attribute__((__import_module__("wasi:http/types@0.2.0-rc-2023-10-18"), __import_name__("[static]response-outparam.set"))) -extern void __wasm_import_wasi_http_0_2_0_rc_2023_10_18_types_static_response_outparam_set(int32_t, int32_t, int32_t, int32_t, int32_t); - -__attribute__((__import_module__("wasi:http/types@0.2.0-rc-2023-10-18"), __import_name__("[method]incoming-response.status"))) -extern int32_t __wasm_import_wasi_http_0_2_0_rc_2023_10_18_types_method_incoming_response_status(int32_t); - -__attribute__((__import_module__("wasi:http/types@0.2.0-rc-2023-10-18"), __import_name__("[method]incoming-response.headers"))) -extern int32_t __wasm_import_wasi_http_0_2_0_rc_2023_10_18_types_method_incoming_response_headers(int32_t); - -__attribute__((__import_module__("wasi:http/types@0.2.0-rc-2023-10-18"), __import_name__("[method]incoming-response.consume"))) -extern void __wasm_import_wasi_http_0_2_0_rc_2023_10_18_types_method_incoming_response_consume(int32_t, int32_t); - -__attribute__((__import_module__("wasi:http/types@0.2.0-rc-2023-10-18"), __import_name__("[method]incoming-body.stream"))) -extern void __wasm_import_wasi_http_0_2_0_rc_2023_10_18_types_method_incoming_body_stream(int32_t, int32_t); - -__attribute__((__import_module__("wasi:http/types@0.2.0-rc-2023-10-18"), __import_name__("[static]incoming-body.finish"))) -extern int32_t __wasm_import_wasi_http_0_2_0_rc_2023_10_18_types_static_incoming_body_finish(int32_t); - -__attribute__((__import_module__("wasi:http/types@0.2.0-rc-2023-10-18"), __import_name__("[method]future-trailers.subscribe"))) -extern int32_t __wasm_import_wasi_http_0_2_0_rc_2023_10_18_types_method_future_trailers_subscribe(int32_t); - -__attribute__((__import_module__("wasi:http/types@0.2.0-rc-2023-10-18"), __import_name__("[method]future-trailers.get"))) -extern void __wasm_import_wasi_http_0_2_0_rc_2023_10_18_types_method_future_trailers_get(int32_t, int32_t); - -__attribute__((__import_module__("wasi:http/types@0.2.0-rc-2023-10-18"), __import_name__("[constructor]outgoing-response"))) -extern int32_t __wasm_import_wasi_http_0_2_0_rc_2023_10_18_types_constructor_outgoing_response(int32_t, int32_t); - -__attribute__((__import_module__("wasi:http/types@0.2.0-rc-2023-10-18"), __import_name__("[method]outgoing-response.write"))) -extern void __wasm_import_wasi_http_0_2_0_rc_2023_10_18_types_method_outgoing_response_write(int32_t, int32_t); - -__attribute__((__import_module__("wasi:http/types@0.2.0-rc-2023-10-18"), __import_name__("[method]outgoing-body.write"))) -extern void __wasm_import_wasi_http_0_2_0_rc_2023_10_18_types_method_outgoing_body_write(int32_t, int32_t); - -__attribute__((__import_module__("wasi:http/types@0.2.0-rc-2023-10-18"), __import_name__("[static]outgoing-body.finish"))) -extern void __wasm_import_wasi_http_0_2_0_rc_2023_10_18_types_static_outgoing_body_finish(int32_t, int32_t, int32_t); - -__attribute__((__import_module__("wasi:http/types@0.2.0-rc-2023-10-18"), __import_name__("[method]future-incoming-response.get"))) -extern void __wasm_import_wasi_http_0_2_0_rc_2023_10_18_types_method_future_incoming_response_get(int32_t, int32_t); - -__attribute__((__import_module__("wasi:http/types@0.2.0-rc-2023-10-18"), __import_name__("[method]future-incoming-response.subscribe"))) -extern int32_t __wasm_import_wasi_http_0_2_0_rc_2023_10_18_types_method_future_incoming_response_subscribe(int32_t); - -__attribute__((__import_module__("wasi:http/outgoing-handler@0.2.0-rc-2023-10-18"), __import_name__("handle"))) -extern void __wasm_import_wasi_http_0_2_0_rc_2023_10_18_outgoing_handler_handle(int32_t, int32_t, int32_t, int32_t, int32_t, int32_t, int32_t, int32_t, int32_t); - -__attribute__((__weak__, __export_name__("cabi_realloc"))) -void *cabi_realloc(void *ptr, size_t old_size, size_t align, size_t new_size) { - (void) old_size; - if (new_size == 0) return (void*) align; - void *ret = realloc(ptr, new_size); - if (!ret) abort(); - return ret; -} - -// Helper Functions - -__attribute__((__import_module__("wasi:io/poll@0.2.0-rc-2023-10-18"), __import_name__("[resource-drop]pollable"))) -extern void __wasm_import_wasi_io_0_2_0_rc_2023_10_18_poll_pollable_drop(int32_t handle); - -void wasi_io_0_2_0_rc_2023_10_18_poll_pollable_drop_own(wasi_io_0_2_0_rc_2023_10_18_poll_own_pollable_t handle) { - __wasm_import_wasi_io_0_2_0_rc_2023_10_18_poll_pollable_drop(handle.__handle); -} - -void wasi_io_0_2_0_rc_2023_10_18_poll_pollable_drop_borrow(wasi_io_0_2_0_rc_2023_10_18_poll_own_pollable_t handle) { - __wasm_import_wasi_io_0_2_0_rc_2023_10_18_poll_pollable_drop(handle.__handle); -} - -wasi_io_0_2_0_rc_2023_10_18_poll_borrow_pollable_t wasi_io_0_2_0_rc_2023_10_18_poll_borrow_pollable(wasi_io_0_2_0_rc_2023_10_18_poll_own_pollable_t arg) { - return (wasi_io_0_2_0_rc_2023_10_18_poll_borrow_pollable_t) { arg.__handle }; -} - -void wasi_io_0_2_0_rc_2023_10_18_poll_list_borrow_pollable_free(wasi_io_0_2_0_rc_2023_10_18_poll_list_borrow_pollable_t *ptr) { - for (size_t i = 0; i < ptr->len; i++) { - } - if (ptr->len > 0) { - free(ptr->ptr); - } -} - -void bindings_list_u32_free(bindings_list_u32_t *ptr) { - for (size_t i = 0; i < ptr->len; i++) { - } - if (ptr->len > 0) { - free(ptr->ptr); - } -} - -void wasi_clocks_0_2_0_rc_2023_10_18_timezone_timezone_display_free(wasi_clocks_0_2_0_rc_2023_10_18_timezone_timezone_display_t *ptr) { - bindings_string_free(&ptr->name); -} - -__attribute__((__import_module__("wasi:io/streams@0.2.0-rc-2023-10-18"), __import_name__("[resource-drop]error"))) -extern void __wasm_import_wasi_io_0_2_0_rc_2023_10_18_streams_error_drop(int32_t handle); - -void wasi_io_0_2_0_rc_2023_10_18_streams_error_drop_own(wasi_io_0_2_0_rc_2023_10_18_streams_own_error_t handle) { - __wasm_import_wasi_io_0_2_0_rc_2023_10_18_streams_error_drop(handle.__handle); -} - -void wasi_io_0_2_0_rc_2023_10_18_streams_error_drop_borrow(wasi_io_0_2_0_rc_2023_10_18_streams_own_error_t handle) { - __wasm_import_wasi_io_0_2_0_rc_2023_10_18_streams_error_drop(handle.__handle); -} - -wasi_io_0_2_0_rc_2023_10_18_streams_borrow_error_t wasi_io_0_2_0_rc_2023_10_18_streams_borrow_error(wasi_io_0_2_0_rc_2023_10_18_streams_own_error_t arg) { - return (wasi_io_0_2_0_rc_2023_10_18_streams_borrow_error_t) { arg.__handle }; -} - -void wasi_io_0_2_0_rc_2023_10_18_streams_stream_error_free(wasi_io_0_2_0_rc_2023_10_18_streams_stream_error_t *ptr) { - switch ((int32_t) ptr->tag) { - case 0: { - break; - } - } -} - -__attribute__((__import_module__("wasi:io/streams@0.2.0-rc-2023-10-18"), __import_name__("[resource-drop]input-stream"))) -extern void __wasm_import_wasi_io_0_2_0_rc_2023_10_18_streams_input_stream_drop(int32_t handle); - -void wasi_io_0_2_0_rc_2023_10_18_streams_input_stream_drop_own(wasi_io_0_2_0_rc_2023_10_18_streams_own_input_stream_t handle) { - __wasm_import_wasi_io_0_2_0_rc_2023_10_18_streams_input_stream_drop(handle.__handle); -} - -void wasi_io_0_2_0_rc_2023_10_18_streams_input_stream_drop_borrow(wasi_io_0_2_0_rc_2023_10_18_streams_own_input_stream_t handle) { - __wasm_import_wasi_io_0_2_0_rc_2023_10_18_streams_input_stream_drop(handle.__handle); -} - -wasi_io_0_2_0_rc_2023_10_18_streams_borrow_input_stream_t wasi_io_0_2_0_rc_2023_10_18_streams_borrow_input_stream(wasi_io_0_2_0_rc_2023_10_18_streams_own_input_stream_t arg) { - return (wasi_io_0_2_0_rc_2023_10_18_streams_borrow_input_stream_t) { arg.__handle }; -} - -__attribute__((__import_module__("wasi:io/streams@0.2.0-rc-2023-10-18"), __import_name__("[resource-drop]output-stream"))) -extern void __wasm_import_wasi_io_0_2_0_rc_2023_10_18_streams_output_stream_drop(int32_t handle); - -void wasi_io_0_2_0_rc_2023_10_18_streams_output_stream_drop_own(wasi_io_0_2_0_rc_2023_10_18_streams_own_output_stream_t handle) { - __wasm_import_wasi_io_0_2_0_rc_2023_10_18_streams_output_stream_drop(handle.__handle); -} - -void wasi_io_0_2_0_rc_2023_10_18_streams_output_stream_drop_borrow(wasi_io_0_2_0_rc_2023_10_18_streams_own_output_stream_t handle) { - __wasm_import_wasi_io_0_2_0_rc_2023_10_18_streams_output_stream_drop(handle.__handle); -} - -wasi_io_0_2_0_rc_2023_10_18_streams_borrow_output_stream_t wasi_io_0_2_0_rc_2023_10_18_streams_borrow_output_stream(wasi_io_0_2_0_rc_2023_10_18_streams_own_output_stream_t arg) { - return (wasi_io_0_2_0_rc_2023_10_18_streams_borrow_output_stream_t) { arg.__handle }; -} - -void bindings_list_u8_free(bindings_list_u8_t *ptr) { - for (size_t i = 0; i < ptr->len; i++) { - } - if (ptr->len > 0) { - free(ptr->ptr); - } -} - -void wasi_io_0_2_0_rc_2023_10_18_streams_result_list_u8_stream_error_free(wasi_io_0_2_0_rc_2023_10_18_streams_result_list_u8_stream_error_t *ptr) { - if (!ptr->is_err) { - bindings_list_u8_free(&ptr->val.ok); - } else { - wasi_io_0_2_0_rc_2023_10_18_streams_stream_error_free(&ptr->val.err); - } -} - -void wasi_io_0_2_0_rc_2023_10_18_streams_result_u64_stream_error_free(wasi_io_0_2_0_rc_2023_10_18_streams_result_u64_stream_error_t *ptr) { - if (!ptr->is_err) { - } else { - wasi_io_0_2_0_rc_2023_10_18_streams_stream_error_free(&ptr->val.err); - } -} - -void wasi_io_0_2_0_rc_2023_10_18_streams_result_void_stream_error_free(wasi_io_0_2_0_rc_2023_10_18_streams_result_void_stream_error_t *ptr) { - if (!ptr->is_err) { - } else { - wasi_io_0_2_0_rc_2023_10_18_streams_stream_error_free(&ptr->val.err); - } -} - -void wasi_filesystem_0_2_0_rc_2023_10_18_types_access_type_free(wasi_filesystem_0_2_0_rc_2023_10_18_types_access_type_t *ptr) { - switch ((int32_t) ptr->tag) { - case 0: { - break; - } - } -} - -void wasi_filesystem_0_2_0_rc_2023_10_18_types_option_datetime_free(wasi_filesystem_0_2_0_rc_2023_10_18_types_option_datetime_t *ptr) { - if (ptr->is_some) { - } -} - -void wasi_filesystem_0_2_0_rc_2023_10_18_types_descriptor_stat_free(wasi_filesystem_0_2_0_rc_2023_10_18_types_descriptor_stat_t *ptr) { - wasi_filesystem_0_2_0_rc_2023_10_18_types_option_datetime_free(&ptr->data_access_timestamp); - wasi_filesystem_0_2_0_rc_2023_10_18_types_option_datetime_free(&ptr->data_modification_timestamp); - wasi_filesystem_0_2_0_rc_2023_10_18_types_option_datetime_free(&ptr->status_change_timestamp); -} - -void wasi_filesystem_0_2_0_rc_2023_10_18_types_new_timestamp_free(wasi_filesystem_0_2_0_rc_2023_10_18_types_new_timestamp_t *ptr) { - switch ((int32_t) ptr->tag) { - case 2: { - break; - } - } -} - -void wasi_filesystem_0_2_0_rc_2023_10_18_types_directory_entry_free(wasi_filesystem_0_2_0_rc_2023_10_18_types_directory_entry_t *ptr) { - bindings_string_free(&ptr->name); -} - -__attribute__((__import_module__("wasi:filesystem/types@0.2.0-rc-2023-10-18"), __import_name__("[resource-drop]descriptor"))) -extern void __wasm_import_wasi_filesystem_0_2_0_rc_2023_10_18_types_descriptor_drop(int32_t handle); - -void wasi_filesystem_0_2_0_rc_2023_10_18_types_descriptor_drop_own(wasi_filesystem_0_2_0_rc_2023_10_18_types_own_descriptor_t handle) { - __wasm_import_wasi_filesystem_0_2_0_rc_2023_10_18_types_descriptor_drop(handle.__handle); -} - -void wasi_filesystem_0_2_0_rc_2023_10_18_types_descriptor_drop_borrow(wasi_filesystem_0_2_0_rc_2023_10_18_types_own_descriptor_t handle) { - __wasm_import_wasi_filesystem_0_2_0_rc_2023_10_18_types_descriptor_drop(handle.__handle); -} - -wasi_filesystem_0_2_0_rc_2023_10_18_types_borrow_descriptor_t wasi_filesystem_0_2_0_rc_2023_10_18_types_borrow_descriptor(wasi_filesystem_0_2_0_rc_2023_10_18_types_own_descriptor_t arg) { - return (wasi_filesystem_0_2_0_rc_2023_10_18_types_borrow_descriptor_t) { arg.__handle }; -} - -__attribute__((__import_module__("wasi:filesystem/types@0.2.0-rc-2023-10-18"), __import_name__("[resource-drop]directory-entry-stream"))) -extern void __wasm_import_wasi_filesystem_0_2_0_rc_2023_10_18_types_directory_entry_stream_drop(int32_t handle); - -void wasi_filesystem_0_2_0_rc_2023_10_18_types_directory_entry_stream_drop_own(wasi_filesystem_0_2_0_rc_2023_10_18_types_own_directory_entry_stream_t handle) { - __wasm_import_wasi_filesystem_0_2_0_rc_2023_10_18_types_directory_entry_stream_drop(handle.__handle); -} - -void wasi_filesystem_0_2_0_rc_2023_10_18_types_directory_entry_stream_drop_borrow(wasi_filesystem_0_2_0_rc_2023_10_18_types_own_directory_entry_stream_t handle) { - __wasm_import_wasi_filesystem_0_2_0_rc_2023_10_18_types_directory_entry_stream_drop(handle.__handle); -} - -wasi_filesystem_0_2_0_rc_2023_10_18_types_borrow_directory_entry_stream_t wasi_filesystem_0_2_0_rc_2023_10_18_types_borrow_directory_entry_stream(wasi_filesystem_0_2_0_rc_2023_10_18_types_own_directory_entry_stream_t arg) { - return (wasi_filesystem_0_2_0_rc_2023_10_18_types_borrow_directory_entry_stream_t) { arg.__handle }; -} - -void wasi_filesystem_0_2_0_rc_2023_10_18_types_result_own_input_stream_error_code_free(wasi_filesystem_0_2_0_rc_2023_10_18_types_result_own_input_stream_error_code_t *ptr) { - if (!ptr->is_err) { - } else { - } -} - -void wasi_filesystem_0_2_0_rc_2023_10_18_types_result_own_output_stream_error_code_free(wasi_filesystem_0_2_0_rc_2023_10_18_types_result_own_output_stream_error_code_t *ptr) { - if (!ptr->is_err) { - } else { - } -} - -void wasi_filesystem_0_2_0_rc_2023_10_18_types_result_void_error_code_free(wasi_filesystem_0_2_0_rc_2023_10_18_types_result_void_error_code_t *ptr) { - if (!ptr->is_err) { - } else { - } -} - -void wasi_filesystem_0_2_0_rc_2023_10_18_types_result_descriptor_flags_error_code_free(wasi_filesystem_0_2_0_rc_2023_10_18_types_result_descriptor_flags_error_code_t *ptr) { - if (!ptr->is_err) { - } else { - } -} - -void wasi_filesystem_0_2_0_rc_2023_10_18_types_result_descriptor_type_error_code_free(wasi_filesystem_0_2_0_rc_2023_10_18_types_result_descriptor_type_error_code_t *ptr) { - if (!ptr->is_err) { - } else { - } -} - -void wasi_filesystem_0_2_0_rc_2023_10_18_types_result_tuple2_list_u8_bool_error_code_free(wasi_filesystem_0_2_0_rc_2023_10_18_types_result_tuple2_list_u8_bool_error_code_t *ptr) { - if (!ptr->is_err) { - } else { - } -} - -void wasi_filesystem_0_2_0_rc_2023_10_18_types_result_filesize_error_code_free(wasi_filesystem_0_2_0_rc_2023_10_18_types_result_filesize_error_code_t *ptr) { - if (!ptr->is_err) { - } else { - } -} - -void wasi_filesystem_0_2_0_rc_2023_10_18_types_result_own_directory_entry_stream_error_code_free(wasi_filesystem_0_2_0_rc_2023_10_18_types_result_own_directory_entry_stream_error_code_t *ptr) { - if (!ptr->is_err) { - } else { - } -} - -void wasi_filesystem_0_2_0_rc_2023_10_18_types_result_descriptor_stat_error_code_free(wasi_filesystem_0_2_0_rc_2023_10_18_types_result_descriptor_stat_error_code_t *ptr) { - if (!ptr->is_err) { - wasi_filesystem_0_2_0_rc_2023_10_18_types_descriptor_stat_free(&ptr->val.ok); - } else { - } -} - -void wasi_filesystem_0_2_0_rc_2023_10_18_types_result_own_descriptor_error_code_free(wasi_filesystem_0_2_0_rc_2023_10_18_types_result_own_descriptor_error_code_t *ptr) { - if (!ptr->is_err) { - } else { - } -} - -void wasi_filesystem_0_2_0_rc_2023_10_18_types_result_string_error_code_free(wasi_filesystem_0_2_0_rc_2023_10_18_types_result_string_error_code_t *ptr) { - if (!ptr->is_err) { - bindings_string_free(&ptr->val.ok); - } else { - } -} - -void wasi_filesystem_0_2_0_rc_2023_10_18_types_result_metadata_hash_value_error_code_free(wasi_filesystem_0_2_0_rc_2023_10_18_types_result_metadata_hash_value_error_code_t *ptr) { - if (!ptr->is_err) { - } else { - } -} - -void wasi_filesystem_0_2_0_rc_2023_10_18_types_option_directory_entry_free(wasi_filesystem_0_2_0_rc_2023_10_18_types_option_directory_entry_t *ptr) { - if (ptr->is_some) { - wasi_filesystem_0_2_0_rc_2023_10_18_types_directory_entry_free(&ptr->val); - } -} - -void wasi_filesystem_0_2_0_rc_2023_10_18_types_result_option_directory_entry_error_code_free(wasi_filesystem_0_2_0_rc_2023_10_18_types_result_option_directory_entry_error_code_t *ptr) { - if (!ptr->is_err) { - wasi_filesystem_0_2_0_rc_2023_10_18_types_option_directory_entry_free(&ptr->val.ok); - } else { - } -} - -void wasi_filesystem_0_2_0_rc_2023_10_18_types_option_error_code_free(wasi_filesystem_0_2_0_rc_2023_10_18_types_option_error_code_t *ptr) { - if (ptr->is_some) { - } -} - -void wasi_filesystem_0_2_0_rc_2023_10_18_preopens_tuple2_own_descriptor_string_free(wasi_filesystem_0_2_0_rc_2023_10_18_preopens_tuple2_own_descriptor_string_t *ptr) { - bindings_string_free(&ptr->f1); -} - -void wasi_filesystem_0_2_0_rc_2023_10_18_preopens_list_tuple2_own_descriptor_string_free(wasi_filesystem_0_2_0_rc_2023_10_18_preopens_list_tuple2_own_descriptor_string_t *ptr) { - for (size_t i = 0; i < ptr->len; i++) { - wasi_filesystem_0_2_0_rc_2023_10_18_preopens_tuple2_own_descriptor_string_free(&ptr->ptr[i]); - } - if (ptr->len > 0) { - free(ptr->ptr); - } -} - -__attribute__((__import_module__("wasi:sockets/network@0.2.0-rc-2023-10-18"), __import_name__("[resource-drop]network"))) -extern void __wasm_import_wasi_sockets_0_2_0_rc_2023_10_18_network_network_drop(int32_t handle); - -void wasi_sockets_0_2_0_rc_2023_10_18_network_network_drop_own(wasi_sockets_0_2_0_rc_2023_10_18_network_own_network_t handle) { - __wasm_import_wasi_sockets_0_2_0_rc_2023_10_18_network_network_drop(handle.__handle); -} - -void wasi_sockets_0_2_0_rc_2023_10_18_network_network_drop_borrow(wasi_sockets_0_2_0_rc_2023_10_18_network_own_network_t handle) { - __wasm_import_wasi_sockets_0_2_0_rc_2023_10_18_network_network_drop(handle.__handle); -} - -wasi_sockets_0_2_0_rc_2023_10_18_network_borrow_network_t wasi_sockets_0_2_0_rc_2023_10_18_network_borrow_network(wasi_sockets_0_2_0_rc_2023_10_18_network_own_network_t arg) { - return (wasi_sockets_0_2_0_rc_2023_10_18_network_borrow_network_t) { arg.__handle }; -} - -void wasi_sockets_0_2_0_rc_2023_10_18_network_ip_address_free(wasi_sockets_0_2_0_rc_2023_10_18_network_ip_address_t *ptr) { - switch ((int32_t) ptr->tag) { - case 0: { - break; - } - case 1: { - break; - } - } -} - -void wasi_sockets_0_2_0_rc_2023_10_18_network_ip_socket_address_free(wasi_sockets_0_2_0_rc_2023_10_18_network_ip_socket_address_t *ptr) { - switch ((int32_t) ptr->tag) { - case 0: { - break; - } - case 1: { - break; - } - } -} - -void wasi_sockets_0_2_0_rc_2023_10_18_ip_name_lookup_ip_address_free(wasi_sockets_0_2_0_rc_2023_10_18_ip_name_lookup_ip_address_t *ptr) { - wasi_sockets_0_2_0_rc_2023_10_18_network_ip_address_free(ptr); -} - -__attribute__((__import_module__("wasi:sockets/ip-name-lookup@0.2.0-rc-2023-10-18"), __import_name__("[resource-drop]resolve-address-stream"))) -extern void __wasm_import_wasi_sockets_0_2_0_rc_2023_10_18_ip_name_lookup_resolve_address_stream_drop(int32_t handle); - -void wasi_sockets_0_2_0_rc_2023_10_18_ip_name_lookup_resolve_address_stream_drop_own(wasi_sockets_0_2_0_rc_2023_10_18_ip_name_lookup_own_resolve_address_stream_t handle) { - __wasm_import_wasi_sockets_0_2_0_rc_2023_10_18_ip_name_lookup_resolve_address_stream_drop(handle.__handle); -} - -void wasi_sockets_0_2_0_rc_2023_10_18_ip_name_lookup_resolve_address_stream_drop_borrow(wasi_sockets_0_2_0_rc_2023_10_18_ip_name_lookup_own_resolve_address_stream_t handle) { - __wasm_import_wasi_sockets_0_2_0_rc_2023_10_18_ip_name_lookup_resolve_address_stream_drop(handle.__handle); -} - -wasi_sockets_0_2_0_rc_2023_10_18_ip_name_lookup_borrow_resolve_address_stream_t wasi_sockets_0_2_0_rc_2023_10_18_ip_name_lookup_borrow_resolve_address_stream(wasi_sockets_0_2_0_rc_2023_10_18_ip_name_lookup_own_resolve_address_stream_t arg) { - return (wasi_sockets_0_2_0_rc_2023_10_18_ip_name_lookup_borrow_resolve_address_stream_t) { arg.__handle }; -} - -void wasi_sockets_0_2_0_rc_2023_10_18_ip_name_lookup_option_ip_address_family_free(wasi_sockets_0_2_0_rc_2023_10_18_ip_name_lookup_option_ip_address_family_t *ptr) { - if (ptr->is_some) { - } -} - -void wasi_sockets_0_2_0_rc_2023_10_18_ip_name_lookup_result_own_resolve_address_stream_error_code_free(wasi_sockets_0_2_0_rc_2023_10_18_ip_name_lookup_result_own_resolve_address_stream_error_code_t *ptr) { - if (!ptr->is_err) { - } else { - } -} - -void wasi_sockets_0_2_0_rc_2023_10_18_ip_name_lookup_option_ip_address_free(wasi_sockets_0_2_0_rc_2023_10_18_ip_name_lookup_option_ip_address_t *ptr) { - if (ptr->is_some) { - wasi_sockets_0_2_0_rc_2023_10_18_ip_name_lookup_ip_address_free(&ptr->val); - } -} - -void wasi_sockets_0_2_0_rc_2023_10_18_ip_name_lookup_result_option_ip_address_error_code_free(wasi_sockets_0_2_0_rc_2023_10_18_ip_name_lookup_result_option_ip_address_error_code_t *ptr) { - if (!ptr->is_err) { - wasi_sockets_0_2_0_rc_2023_10_18_ip_name_lookup_option_ip_address_free(&ptr->val.ok); - } else { - } -} - -void wasi_sockets_0_2_0_rc_2023_10_18_tcp_ip_socket_address_free(wasi_sockets_0_2_0_rc_2023_10_18_tcp_ip_socket_address_t *ptr) { - wasi_sockets_0_2_0_rc_2023_10_18_network_ip_socket_address_free(ptr); -} - -__attribute__((__import_module__("wasi:sockets/tcp@0.2.0-rc-2023-10-18"), __import_name__("[resource-drop]tcp-socket"))) -extern void __wasm_import_wasi_sockets_0_2_0_rc_2023_10_18_tcp_tcp_socket_drop(int32_t handle); - -void wasi_sockets_0_2_0_rc_2023_10_18_tcp_tcp_socket_drop_own(wasi_sockets_0_2_0_rc_2023_10_18_tcp_own_tcp_socket_t handle) { - __wasm_import_wasi_sockets_0_2_0_rc_2023_10_18_tcp_tcp_socket_drop(handle.__handle); -} - -void wasi_sockets_0_2_0_rc_2023_10_18_tcp_tcp_socket_drop_borrow(wasi_sockets_0_2_0_rc_2023_10_18_tcp_own_tcp_socket_t handle) { - __wasm_import_wasi_sockets_0_2_0_rc_2023_10_18_tcp_tcp_socket_drop(handle.__handle); -} - -wasi_sockets_0_2_0_rc_2023_10_18_tcp_borrow_tcp_socket_t wasi_sockets_0_2_0_rc_2023_10_18_tcp_borrow_tcp_socket(wasi_sockets_0_2_0_rc_2023_10_18_tcp_own_tcp_socket_t arg) { - return (wasi_sockets_0_2_0_rc_2023_10_18_tcp_borrow_tcp_socket_t) { arg.__handle }; -} - -void wasi_sockets_0_2_0_rc_2023_10_18_tcp_result_void_error_code_free(wasi_sockets_0_2_0_rc_2023_10_18_tcp_result_void_error_code_t *ptr) { - if (!ptr->is_err) { - } else { - } -} - -void wasi_sockets_0_2_0_rc_2023_10_18_tcp_result_tuple2_own_input_stream_own_output_stream_error_code_free(wasi_sockets_0_2_0_rc_2023_10_18_tcp_result_tuple2_own_input_stream_own_output_stream_error_code_t *ptr) { - if (!ptr->is_err) { - } else { - } -} - -void wasi_sockets_0_2_0_rc_2023_10_18_tcp_result_tuple3_own_tcp_socket_own_input_stream_own_output_stream_error_code_free(wasi_sockets_0_2_0_rc_2023_10_18_tcp_result_tuple3_own_tcp_socket_own_input_stream_own_output_stream_error_code_t *ptr) { - if (!ptr->is_err) { - } else { - } -} - -void wasi_sockets_0_2_0_rc_2023_10_18_tcp_result_ip_socket_address_error_code_free(wasi_sockets_0_2_0_rc_2023_10_18_tcp_result_ip_socket_address_error_code_t *ptr) { - if (!ptr->is_err) { - wasi_sockets_0_2_0_rc_2023_10_18_tcp_ip_socket_address_free(&ptr->val.ok); - } else { - } -} - -void wasi_sockets_0_2_0_rc_2023_10_18_tcp_result_bool_error_code_free(wasi_sockets_0_2_0_rc_2023_10_18_tcp_result_bool_error_code_t *ptr) { - if (!ptr->is_err) { - } else { - } -} - -void wasi_sockets_0_2_0_rc_2023_10_18_tcp_result_u8_error_code_free(wasi_sockets_0_2_0_rc_2023_10_18_tcp_result_u8_error_code_t *ptr) { - if (!ptr->is_err) { - } else { - } -} - -void wasi_sockets_0_2_0_rc_2023_10_18_tcp_result_u64_error_code_free(wasi_sockets_0_2_0_rc_2023_10_18_tcp_result_u64_error_code_t *ptr) { - if (!ptr->is_err) { - } else { - } -} - -void wasi_sockets_0_2_0_rc_2023_10_18_tcp_create_socket_result_own_tcp_socket_error_code_free(wasi_sockets_0_2_0_rc_2023_10_18_tcp_create_socket_result_own_tcp_socket_error_code_t *ptr) { - if (!ptr->is_err) { - } else { - } -} - -void wasi_sockets_0_2_0_rc_2023_10_18_udp_ip_socket_address_free(wasi_sockets_0_2_0_rc_2023_10_18_udp_ip_socket_address_t *ptr) { - wasi_sockets_0_2_0_rc_2023_10_18_network_ip_socket_address_free(ptr); -} - -void wasi_sockets_0_2_0_rc_2023_10_18_udp_datagram_free(wasi_sockets_0_2_0_rc_2023_10_18_udp_datagram_t *ptr) { - wasi_sockets_0_2_0_rc_2023_10_18_udp_ip_socket_address_free(&ptr->remote_address); -} - -__attribute__((__import_module__("wasi:sockets/udp@0.2.0-rc-2023-10-18"), __import_name__("[resource-drop]udp-socket"))) -extern void __wasm_import_wasi_sockets_0_2_0_rc_2023_10_18_udp_udp_socket_drop(int32_t handle); - -void wasi_sockets_0_2_0_rc_2023_10_18_udp_udp_socket_drop_own(wasi_sockets_0_2_0_rc_2023_10_18_udp_own_udp_socket_t handle) { - __wasm_import_wasi_sockets_0_2_0_rc_2023_10_18_udp_udp_socket_drop(handle.__handle); -} - -void wasi_sockets_0_2_0_rc_2023_10_18_udp_udp_socket_drop_borrow(wasi_sockets_0_2_0_rc_2023_10_18_udp_own_udp_socket_t handle) { - __wasm_import_wasi_sockets_0_2_0_rc_2023_10_18_udp_udp_socket_drop(handle.__handle); -} - -wasi_sockets_0_2_0_rc_2023_10_18_udp_borrow_udp_socket_t wasi_sockets_0_2_0_rc_2023_10_18_udp_borrow_udp_socket(wasi_sockets_0_2_0_rc_2023_10_18_udp_own_udp_socket_t arg) { - return (wasi_sockets_0_2_0_rc_2023_10_18_udp_borrow_udp_socket_t) { arg.__handle }; -} - -void wasi_sockets_0_2_0_rc_2023_10_18_udp_result_void_error_code_free(wasi_sockets_0_2_0_rc_2023_10_18_udp_result_void_error_code_t *ptr) { - if (!ptr->is_err) { - } else { - } -} - -void wasi_sockets_0_2_0_rc_2023_10_18_udp_list_datagram_free(wasi_sockets_0_2_0_rc_2023_10_18_udp_list_datagram_t *ptr) { - for (size_t i = 0; i < ptr->len; i++) { - wasi_sockets_0_2_0_rc_2023_10_18_udp_datagram_free(&ptr->ptr[i]); - } - if (ptr->len > 0) { - free(ptr->ptr); - } -} - -void wasi_sockets_0_2_0_rc_2023_10_18_udp_result_list_datagram_error_code_free(wasi_sockets_0_2_0_rc_2023_10_18_udp_result_list_datagram_error_code_t *ptr) { - if (!ptr->is_err) { - wasi_sockets_0_2_0_rc_2023_10_18_udp_list_datagram_free(&ptr->val.ok); - } else { - } -} - -void wasi_sockets_0_2_0_rc_2023_10_18_udp_result_u64_error_code_free(wasi_sockets_0_2_0_rc_2023_10_18_udp_result_u64_error_code_t *ptr) { - if (!ptr->is_err) { - } else { - } -} - -void wasi_sockets_0_2_0_rc_2023_10_18_udp_result_ip_socket_address_error_code_free(wasi_sockets_0_2_0_rc_2023_10_18_udp_result_ip_socket_address_error_code_t *ptr) { - if (!ptr->is_err) { - wasi_sockets_0_2_0_rc_2023_10_18_udp_ip_socket_address_free(&ptr->val.ok); - } else { - } -} - -void wasi_sockets_0_2_0_rc_2023_10_18_udp_result_bool_error_code_free(wasi_sockets_0_2_0_rc_2023_10_18_udp_result_bool_error_code_t *ptr) { - if (!ptr->is_err) { - } else { - } -} - -void wasi_sockets_0_2_0_rc_2023_10_18_udp_result_u8_error_code_free(wasi_sockets_0_2_0_rc_2023_10_18_udp_result_u8_error_code_t *ptr) { - if (!ptr->is_err) { - } else { - } -} - -void wasi_sockets_0_2_0_rc_2023_10_18_udp_create_socket_result_own_udp_socket_error_code_free(wasi_sockets_0_2_0_rc_2023_10_18_udp_create_socket_result_own_udp_socket_error_code_t *ptr) { - if (!ptr->is_err) { - } else { - } -} - -void bindings_tuple2_string_string_free(bindings_tuple2_string_string_t *ptr) { - bindings_string_free(&ptr->f0); - bindings_string_free(&ptr->f1); -} - -void bindings_list_tuple2_string_string_free(bindings_list_tuple2_string_string_t *ptr) { - for (size_t i = 0; i < ptr->len; i++) { - bindings_tuple2_string_string_free(&ptr->ptr[i]); - } - if (ptr->len > 0) { - free(ptr->ptr); - } -} - -void bindings_list_string_free(bindings_list_string_t *ptr) { - for (size_t i = 0; i < ptr->len; i++) { - bindings_string_free(&ptr->ptr[i]); - } - if (ptr->len > 0) { - free(ptr->ptr); - } -} - -void bindings_option_string_free(bindings_option_string_t *ptr) { - if (ptr->is_some) { - bindings_string_free(&ptr->val); - } -} - -void wasi_cli_0_2_0_rc_2023_10_18_exit_result_void_void_free(wasi_cli_0_2_0_rc_2023_10_18_exit_result_void_void_t *ptr) { - if (!ptr->is_err) { - } -} - -__attribute__((__import_module__("wasi:cli/terminal-input@0.2.0-rc-2023-10-18"), __import_name__("[resource-drop]terminal-input"))) -extern void __wasm_import_wasi_cli_0_2_0_rc_2023_10_18_terminal_input_terminal_input_drop(int32_t handle); - -void wasi_cli_0_2_0_rc_2023_10_18_terminal_input_terminal_input_drop_own(wasi_cli_0_2_0_rc_2023_10_18_terminal_input_own_terminal_input_t handle) { - __wasm_import_wasi_cli_0_2_0_rc_2023_10_18_terminal_input_terminal_input_drop(handle.__handle); -} - -void wasi_cli_0_2_0_rc_2023_10_18_terminal_input_terminal_input_drop_borrow(wasi_cli_0_2_0_rc_2023_10_18_terminal_input_own_terminal_input_t handle) { - __wasm_import_wasi_cli_0_2_0_rc_2023_10_18_terminal_input_terminal_input_drop(handle.__handle); -} - -wasi_cli_0_2_0_rc_2023_10_18_terminal_input_borrow_terminal_input_t wasi_cli_0_2_0_rc_2023_10_18_terminal_input_borrow_terminal_input(wasi_cli_0_2_0_rc_2023_10_18_terminal_input_own_terminal_input_t arg) { - return (wasi_cli_0_2_0_rc_2023_10_18_terminal_input_borrow_terminal_input_t) { arg.__handle }; -} - -__attribute__((__import_module__("wasi:cli/terminal-output@0.2.0-rc-2023-10-18"), __import_name__("[resource-drop]terminal-output"))) -extern void __wasm_import_wasi_cli_0_2_0_rc_2023_10_18_terminal_output_terminal_output_drop(int32_t handle); - -void wasi_cli_0_2_0_rc_2023_10_18_terminal_output_terminal_output_drop_own(wasi_cli_0_2_0_rc_2023_10_18_terminal_output_own_terminal_output_t handle) { - __wasm_import_wasi_cli_0_2_0_rc_2023_10_18_terminal_output_terminal_output_drop(handle.__handle); -} - -void wasi_cli_0_2_0_rc_2023_10_18_terminal_output_terminal_output_drop_borrow(wasi_cli_0_2_0_rc_2023_10_18_terminal_output_own_terminal_output_t handle) { - __wasm_import_wasi_cli_0_2_0_rc_2023_10_18_terminal_output_terminal_output_drop(handle.__handle); -} - -wasi_cli_0_2_0_rc_2023_10_18_terminal_output_borrow_terminal_output_t wasi_cli_0_2_0_rc_2023_10_18_terminal_output_borrow_terminal_output(wasi_cli_0_2_0_rc_2023_10_18_terminal_output_own_terminal_output_t arg) { - return (wasi_cli_0_2_0_rc_2023_10_18_terminal_output_borrow_terminal_output_t) { arg.__handle }; -} - -void wasi_cli_0_2_0_rc_2023_10_18_terminal_stdin_option_own_terminal_input_free(wasi_cli_0_2_0_rc_2023_10_18_terminal_stdin_option_own_terminal_input_t *ptr) { - if (ptr->is_some) { - } -} - -void wasi_cli_0_2_0_rc_2023_10_18_terminal_stdout_option_own_terminal_output_free(wasi_cli_0_2_0_rc_2023_10_18_terminal_stdout_option_own_terminal_output_t *ptr) { - if (ptr->is_some) { - } -} - -void wasi_cli_0_2_0_rc_2023_10_18_terminal_stderr_option_own_terminal_output_free(wasi_cli_0_2_0_rc_2023_10_18_terminal_stderr_option_own_terminal_output_t *ptr) { - if (ptr->is_some) { - } -} - -void wasi_http_0_2_0_rc_2023_10_18_types_method_free(wasi_http_0_2_0_rc_2023_10_18_types_method_t *ptr) { - switch ((int32_t) ptr->tag) { - case 9: { - bindings_string_free(&ptr->val.other); - break; - } - } -} - -void wasi_http_0_2_0_rc_2023_10_18_types_scheme_free(wasi_http_0_2_0_rc_2023_10_18_types_scheme_t *ptr) { - switch ((int32_t) ptr->tag) { - case 2: { - bindings_string_free(&ptr->val.other); - break; - } - } -} - -void wasi_http_0_2_0_rc_2023_10_18_types_error_free(wasi_http_0_2_0_rc_2023_10_18_types_error_t *ptr) { - switch ((int32_t) ptr->tag) { - case 0: { - bindings_string_free(&ptr->val.invalid_url); - break; - } - case 1: { - bindings_string_free(&ptr->val.timeout_error); - break; - } - case 2: { - bindings_string_free(&ptr->val.protocol_error); - break; - } - case 3: { - bindings_string_free(&ptr->val.unexpected_error); - break; - } - } -} - -__attribute__((__import_module__("wasi:http/types@0.2.0-rc-2023-10-18"), __import_name__("[resource-drop]fields"))) -extern void __wasm_import_wasi_http_0_2_0_rc_2023_10_18_types_fields_drop(int32_t handle); - -void wasi_http_0_2_0_rc_2023_10_18_types_fields_drop_own(wasi_http_0_2_0_rc_2023_10_18_types_own_fields_t handle) { - __wasm_import_wasi_http_0_2_0_rc_2023_10_18_types_fields_drop(handle.__handle); -} - -void wasi_http_0_2_0_rc_2023_10_18_types_fields_drop_borrow(wasi_http_0_2_0_rc_2023_10_18_types_own_fields_t handle) { - __wasm_import_wasi_http_0_2_0_rc_2023_10_18_types_fields_drop(handle.__handle); -} - -wasi_http_0_2_0_rc_2023_10_18_types_borrow_fields_t wasi_http_0_2_0_rc_2023_10_18_types_borrow_fields(wasi_http_0_2_0_rc_2023_10_18_types_own_fields_t arg) { - return (wasi_http_0_2_0_rc_2023_10_18_types_borrow_fields_t) { arg.__handle }; -} - -__attribute__((__import_module__("wasi:http/types@0.2.0-rc-2023-10-18"), __import_name__("[resource-drop]incoming-request"))) -extern void __wasm_import_wasi_http_0_2_0_rc_2023_10_18_types_incoming_request_drop(int32_t handle); - -void wasi_http_0_2_0_rc_2023_10_18_types_incoming_request_drop_own(wasi_http_0_2_0_rc_2023_10_18_types_own_incoming_request_t handle) { - __wasm_import_wasi_http_0_2_0_rc_2023_10_18_types_incoming_request_drop(handle.__handle); -} - -void wasi_http_0_2_0_rc_2023_10_18_types_incoming_request_drop_borrow(wasi_http_0_2_0_rc_2023_10_18_types_own_incoming_request_t handle) { - __wasm_import_wasi_http_0_2_0_rc_2023_10_18_types_incoming_request_drop(handle.__handle); -} - -wasi_http_0_2_0_rc_2023_10_18_types_borrow_incoming_request_t wasi_http_0_2_0_rc_2023_10_18_types_borrow_incoming_request(wasi_http_0_2_0_rc_2023_10_18_types_own_incoming_request_t arg) { - return (wasi_http_0_2_0_rc_2023_10_18_types_borrow_incoming_request_t) { arg.__handle }; -} - -__attribute__((__import_module__("wasi:http/types@0.2.0-rc-2023-10-18"), __import_name__("[resource-drop]outgoing-request"))) -extern void __wasm_import_wasi_http_0_2_0_rc_2023_10_18_types_outgoing_request_drop(int32_t handle); - -void wasi_http_0_2_0_rc_2023_10_18_types_outgoing_request_drop_own(wasi_http_0_2_0_rc_2023_10_18_types_own_outgoing_request_t handle) { - __wasm_import_wasi_http_0_2_0_rc_2023_10_18_types_outgoing_request_drop(handle.__handle); -} - -void wasi_http_0_2_0_rc_2023_10_18_types_outgoing_request_drop_borrow(wasi_http_0_2_0_rc_2023_10_18_types_own_outgoing_request_t handle) { - __wasm_import_wasi_http_0_2_0_rc_2023_10_18_types_outgoing_request_drop(handle.__handle); -} - -wasi_http_0_2_0_rc_2023_10_18_types_borrow_outgoing_request_t wasi_http_0_2_0_rc_2023_10_18_types_borrow_outgoing_request(wasi_http_0_2_0_rc_2023_10_18_types_own_outgoing_request_t arg) { - return (wasi_http_0_2_0_rc_2023_10_18_types_borrow_outgoing_request_t) { arg.__handle }; -} - -void bindings_option_u32_free(bindings_option_u32_t *ptr) { - if (ptr->is_some) { - } -} - -void wasi_http_0_2_0_rc_2023_10_18_types_request_options_free(wasi_http_0_2_0_rc_2023_10_18_types_request_options_t *ptr) { - bindings_option_u32_free(&ptr->connect_timeout_ms); - bindings_option_u32_free(&ptr->first_byte_timeout_ms); - bindings_option_u32_free(&ptr->between_bytes_timeout_ms); -} - -__attribute__((__import_module__("wasi:http/types@0.2.0-rc-2023-10-18"), __import_name__("[resource-drop]response-outparam"))) -extern void __wasm_import_wasi_http_0_2_0_rc_2023_10_18_types_response_outparam_drop(int32_t handle); - -void wasi_http_0_2_0_rc_2023_10_18_types_response_outparam_drop_own(wasi_http_0_2_0_rc_2023_10_18_types_own_response_outparam_t handle) { - __wasm_import_wasi_http_0_2_0_rc_2023_10_18_types_response_outparam_drop(handle.__handle); -} - -void wasi_http_0_2_0_rc_2023_10_18_types_response_outparam_drop_borrow(wasi_http_0_2_0_rc_2023_10_18_types_own_response_outparam_t handle) { - __wasm_import_wasi_http_0_2_0_rc_2023_10_18_types_response_outparam_drop(handle.__handle); -} - -wasi_http_0_2_0_rc_2023_10_18_types_borrow_response_outparam_t wasi_http_0_2_0_rc_2023_10_18_types_borrow_response_outparam(wasi_http_0_2_0_rc_2023_10_18_types_own_response_outparam_t arg) { - return (wasi_http_0_2_0_rc_2023_10_18_types_borrow_response_outparam_t) { arg.__handle }; -} - -__attribute__((__import_module__("wasi:http/types@0.2.0-rc-2023-10-18"), __import_name__("[resource-drop]incoming-response"))) -extern void __wasm_import_wasi_http_0_2_0_rc_2023_10_18_types_incoming_response_drop(int32_t handle); - -void wasi_http_0_2_0_rc_2023_10_18_types_incoming_response_drop_own(wasi_http_0_2_0_rc_2023_10_18_types_own_incoming_response_t handle) { - __wasm_import_wasi_http_0_2_0_rc_2023_10_18_types_incoming_response_drop(handle.__handle); -} - -void wasi_http_0_2_0_rc_2023_10_18_types_incoming_response_drop_borrow(wasi_http_0_2_0_rc_2023_10_18_types_own_incoming_response_t handle) { - __wasm_import_wasi_http_0_2_0_rc_2023_10_18_types_incoming_response_drop(handle.__handle); -} - -wasi_http_0_2_0_rc_2023_10_18_types_borrow_incoming_response_t wasi_http_0_2_0_rc_2023_10_18_types_borrow_incoming_response(wasi_http_0_2_0_rc_2023_10_18_types_own_incoming_response_t arg) { - return (wasi_http_0_2_0_rc_2023_10_18_types_borrow_incoming_response_t) { arg.__handle }; -} - -__attribute__((__import_module__("wasi:http/types@0.2.0-rc-2023-10-18"), __import_name__("[resource-drop]incoming-body"))) -extern void __wasm_import_wasi_http_0_2_0_rc_2023_10_18_types_incoming_body_drop(int32_t handle); - -void wasi_http_0_2_0_rc_2023_10_18_types_incoming_body_drop_own(wasi_http_0_2_0_rc_2023_10_18_types_own_incoming_body_t handle) { - __wasm_import_wasi_http_0_2_0_rc_2023_10_18_types_incoming_body_drop(handle.__handle); -} - -void wasi_http_0_2_0_rc_2023_10_18_types_incoming_body_drop_borrow(wasi_http_0_2_0_rc_2023_10_18_types_own_incoming_body_t handle) { - __wasm_import_wasi_http_0_2_0_rc_2023_10_18_types_incoming_body_drop(handle.__handle); -} - -wasi_http_0_2_0_rc_2023_10_18_types_borrow_incoming_body_t wasi_http_0_2_0_rc_2023_10_18_types_borrow_incoming_body(wasi_http_0_2_0_rc_2023_10_18_types_own_incoming_body_t arg) { - return (wasi_http_0_2_0_rc_2023_10_18_types_borrow_incoming_body_t) { arg.__handle }; -} - -__attribute__((__import_module__("wasi:http/types@0.2.0-rc-2023-10-18"), __import_name__("[resource-drop]future-trailers"))) -extern void __wasm_import_wasi_http_0_2_0_rc_2023_10_18_types_future_trailers_drop(int32_t handle); - -void wasi_http_0_2_0_rc_2023_10_18_types_future_trailers_drop_own(wasi_http_0_2_0_rc_2023_10_18_types_own_future_trailers_t handle) { - __wasm_import_wasi_http_0_2_0_rc_2023_10_18_types_future_trailers_drop(handle.__handle); -} - -void wasi_http_0_2_0_rc_2023_10_18_types_future_trailers_drop_borrow(wasi_http_0_2_0_rc_2023_10_18_types_own_future_trailers_t handle) { - __wasm_import_wasi_http_0_2_0_rc_2023_10_18_types_future_trailers_drop(handle.__handle); -} - -wasi_http_0_2_0_rc_2023_10_18_types_borrow_future_trailers_t wasi_http_0_2_0_rc_2023_10_18_types_borrow_future_trailers(wasi_http_0_2_0_rc_2023_10_18_types_own_future_trailers_t arg) { - return (wasi_http_0_2_0_rc_2023_10_18_types_borrow_future_trailers_t) { arg.__handle }; -} - -__attribute__((__import_module__("wasi:http/types@0.2.0-rc-2023-10-18"), __import_name__("[resource-drop]outgoing-response"))) -extern void __wasm_import_wasi_http_0_2_0_rc_2023_10_18_types_outgoing_response_drop(int32_t handle); - -void wasi_http_0_2_0_rc_2023_10_18_types_outgoing_response_drop_own(wasi_http_0_2_0_rc_2023_10_18_types_own_outgoing_response_t handle) { - __wasm_import_wasi_http_0_2_0_rc_2023_10_18_types_outgoing_response_drop(handle.__handle); -} - -void wasi_http_0_2_0_rc_2023_10_18_types_outgoing_response_drop_borrow(wasi_http_0_2_0_rc_2023_10_18_types_own_outgoing_response_t handle) { - __wasm_import_wasi_http_0_2_0_rc_2023_10_18_types_outgoing_response_drop(handle.__handle); -} - -wasi_http_0_2_0_rc_2023_10_18_types_borrow_outgoing_response_t wasi_http_0_2_0_rc_2023_10_18_types_borrow_outgoing_response(wasi_http_0_2_0_rc_2023_10_18_types_own_outgoing_response_t arg) { - return (wasi_http_0_2_0_rc_2023_10_18_types_borrow_outgoing_response_t) { arg.__handle }; -} - -__attribute__((__import_module__("wasi:http/types@0.2.0-rc-2023-10-18"), __import_name__("[resource-drop]outgoing-body"))) -extern void __wasm_import_wasi_http_0_2_0_rc_2023_10_18_types_outgoing_body_drop(int32_t handle); - -void wasi_http_0_2_0_rc_2023_10_18_types_outgoing_body_drop_own(wasi_http_0_2_0_rc_2023_10_18_types_own_outgoing_body_t handle) { - __wasm_import_wasi_http_0_2_0_rc_2023_10_18_types_outgoing_body_drop(handle.__handle); -} - -void wasi_http_0_2_0_rc_2023_10_18_types_outgoing_body_drop_borrow(wasi_http_0_2_0_rc_2023_10_18_types_own_outgoing_body_t handle) { - __wasm_import_wasi_http_0_2_0_rc_2023_10_18_types_outgoing_body_drop(handle.__handle); -} - -wasi_http_0_2_0_rc_2023_10_18_types_borrow_outgoing_body_t wasi_http_0_2_0_rc_2023_10_18_types_borrow_outgoing_body(wasi_http_0_2_0_rc_2023_10_18_types_own_outgoing_body_t arg) { - return (wasi_http_0_2_0_rc_2023_10_18_types_borrow_outgoing_body_t) { arg.__handle }; -} - -__attribute__((__import_module__("wasi:http/types@0.2.0-rc-2023-10-18"), __import_name__("[resource-drop]future-incoming-response"))) -extern void __wasm_import_wasi_http_0_2_0_rc_2023_10_18_types_future_incoming_response_drop(int32_t handle); - -void wasi_http_0_2_0_rc_2023_10_18_types_future_incoming_response_drop_own(wasi_http_0_2_0_rc_2023_10_18_types_own_future_incoming_response_t handle) { - __wasm_import_wasi_http_0_2_0_rc_2023_10_18_types_future_incoming_response_drop(handle.__handle); -} - -void wasi_http_0_2_0_rc_2023_10_18_types_future_incoming_response_drop_borrow(wasi_http_0_2_0_rc_2023_10_18_types_own_future_incoming_response_t handle) { - __wasm_import_wasi_http_0_2_0_rc_2023_10_18_types_future_incoming_response_drop(handle.__handle); -} - -wasi_http_0_2_0_rc_2023_10_18_types_borrow_future_incoming_response_t wasi_http_0_2_0_rc_2023_10_18_types_borrow_future_incoming_response(wasi_http_0_2_0_rc_2023_10_18_types_own_future_incoming_response_t arg) { - return (wasi_http_0_2_0_rc_2023_10_18_types_borrow_future_incoming_response_t) { arg.__handle }; -} - -void bindings_tuple2_string_list_u8_free(bindings_tuple2_string_list_u8_t *ptr) { - bindings_string_free(&ptr->f0); -} - -void bindings_list_tuple2_string_list_u8_free(bindings_list_tuple2_string_list_u8_t *ptr) { - for (size_t i = 0; i < ptr->len; i++) { - bindings_tuple2_string_list_u8_free(&ptr->ptr[i]); - } - if (ptr->len > 0) { - free(ptr->ptr); - } -} - -void bindings_list_list_u8_free(bindings_list_list_u8_t *ptr) { - for (size_t i = 0; i < ptr->len; i++) { - } - if (ptr->len > 0) { - free(ptr->ptr); - } -} - -void wasi_http_0_2_0_rc_2023_10_18_types_option_scheme_free(wasi_http_0_2_0_rc_2023_10_18_types_option_scheme_t *ptr) { - if (ptr->is_some) { - wasi_http_0_2_0_rc_2023_10_18_types_scheme_free(&ptr->val); - } -} - -void wasi_http_0_2_0_rc_2023_10_18_types_result_own_incoming_body_void_free(wasi_http_0_2_0_rc_2023_10_18_types_result_own_incoming_body_void_t *ptr) { - if (!ptr->is_err) { - } -} - -void wasi_http_0_2_0_rc_2023_10_18_types_result_own_outgoing_body_void_free(wasi_http_0_2_0_rc_2023_10_18_types_result_own_outgoing_body_void_t *ptr) { - if (!ptr->is_err) { - } -} - -void wasi_http_0_2_0_rc_2023_10_18_types_result_own_outgoing_response_error_free(wasi_http_0_2_0_rc_2023_10_18_types_result_own_outgoing_response_error_t *ptr) { - if (!ptr->is_err) { - } else { - wasi_http_0_2_0_rc_2023_10_18_types_error_free(&ptr->val.err); - } -} - -void wasi_http_0_2_0_rc_2023_10_18_types_result_own_input_stream_void_free(wasi_http_0_2_0_rc_2023_10_18_types_result_own_input_stream_void_t *ptr) { - if (!ptr->is_err) { - } -} - -void wasi_http_0_2_0_rc_2023_10_18_types_result_own_trailers_error_free(wasi_http_0_2_0_rc_2023_10_18_types_result_own_trailers_error_t *ptr) { - if (!ptr->is_err) { - } else { - wasi_http_0_2_0_rc_2023_10_18_types_error_free(&ptr->val.err); - } -} - -void wasi_http_0_2_0_rc_2023_10_18_types_option_result_own_trailers_error_free(wasi_http_0_2_0_rc_2023_10_18_types_option_result_own_trailers_error_t *ptr) { - if (ptr->is_some) { - wasi_http_0_2_0_rc_2023_10_18_types_result_own_trailers_error_free(&ptr->val); - } -} - -void wasi_http_0_2_0_rc_2023_10_18_types_result_own_output_stream_void_free(wasi_http_0_2_0_rc_2023_10_18_types_result_own_output_stream_void_t *ptr) { - if (!ptr->is_err) { - } -} - -void wasi_http_0_2_0_rc_2023_10_18_types_option_own_trailers_free(wasi_http_0_2_0_rc_2023_10_18_types_option_own_trailers_t *ptr) { - if (ptr->is_some) { - } -} - -void wasi_http_0_2_0_rc_2023_10_18_types_result_own_incoming_response_error_free(wasi_http_0_2_0_rc_2023_10_18_types_result_own_incoming_response_error_t *ptr) { - if (!ptr->is_err) { - } else { - wasi_http_0_2_0_rc_2023_10_18_types_error_free(&ptr->val.err); - } -} - -void wasi_http_0_2_0_rc_2023_10_18_types_result_result_own_incoming_response_error_void_free(wasi_http_0_2_0_rc_2023_10_18_types_result_result_own_incoming_response_error_void_t *ptr) { - if (!ptr->is_err) { - wasi_http_0_2_0_rc_2023_10_18_types_result_own_incoming_response_error_free(&ptr->val.ok); - } -} - -void wasi_http_0_2_0_rc_2023_10_18_types_option_result_result_own_incoming_response_error_void_free(wasi_http_0_2_0_rc_2023_10_18_types_option_result_result_own_incoming_response_error_void_t *ptr) { - if (ptr->is_some) { - wasi_http_0_2_0_rc_2023_10_18_types_result_result_own_incoming_response_error_void_free(&ptr->val); - } -} - -void wasi_http_0_2_0_rc_2023_10_18_outgoing_handler_request_options_free(wasi_http_0_2_0_rc_2023_10_18_outgoing_handler_request_options_t *ptr) { - wasi_http_0_2_0_rc_2023_10_18_types_request_options_free(ptr); -} - -void wasi_http_0_2_0_rc_2023_10_18_outgoing_handler_error_free(wasi_http_0_2_0_rc_2023_10_18_outgoing_handler_error_t *ptr) { - wasi_http_0_2_0_rc_2023_10_18_types_error_free(ptr); -} - -void wasi_http_0_2_0_rc_2023_10_18_outgoing_handler_option_request_options_free(wasi_http_0_2_0_rc_2023_10_18_outgoing_handler_option_request_options_t *ptr) { - if (ptr->is_some) { - wasi_http_0_2_0_rc_2023_10_18_outgoing_handler_request_options_free(&ptr->val); - } -} - -void wasi_http_0_2_0_rc_2023_10_18_outgoing_handler_result_own_future_incoming_response_error_free(wasi_http_0_2_0_rc_2023_10_18_outgoing_handler_result_own_future_incoming_response_error_t *ptr) { - if (!ptr->is_err) { - } else { - wasi_http_0_2_0_rc_2023_10_18_outgoing_handler_error_free(&ptr->val.err); - } -} - -void exports_wasi_cli_0_2_0_rc_2023_10_18_run_result_void_void_free(exports_wasi_cli_0_2_0_rc_2023_10_18_run_result_void_void_t *ptr) { - if (!ptr->is_err) { - } -} - -void bindings_string_set(bindings_string_t *ret, char*s) { - ret->ptr = (uint8_t*) s; - ret->len = strlen(s); -} - -void bindings_string_dup(bindings_string_t *ret, const char*s) { - ret->len = strlen(s); - ret->ptr = cabi_realloc(NULL, 0, 1, ret->len * 1); - memcpy(ret->ptr, s, ret->len * 1); -} - -void bindings_string_free(bindings_string_t *ret) { - if (ret->len > 0) { - free(ret->ptr); - } - ret->ptr = NULL; - ret->len = 0; -} - -// Component Adapters - -void wasi_clocks_0_2_0_rc_2023_10_18_wall_clock_now(wasi_clocks_0_2_0_rc_2023_10_18_wall_clock_datetime_t *ret) { - __attribute__((__aligned__(8))) - uint8_t ret_area[16]; - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_clocks_0_2_0_rc_2023_10_18_wall_clock_now(ptr); - *ret = (wasi_clocks_0_2_0_rc_2023_10_18_wall_clock_datetime_t) { - (uint64_t) (*((int64_t*) (ptr + 0))), - (uint32_t) (*((int32_t*) (ptr + 8))), - }; -} - -void wasi_clocks_0_2_0_rc_2023_10_18_wall_clock_resolution(wasi_clocks_0_2_0_rc_2023_10_18_wall_clock_datetime_t *ret) { - __attribute__((__aligned__(8))) - uint8_t ret_area[16]; - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_clocks_0_2_0_rc_2023_10_18_wall_clock_resolution(ptr); - *ret = (wasi_clocks_0_2_0_rc_2023_10_18_wall_clock_datetime_t) { - (uint64_t) (*((int64_t*) (ptr + 0))), - (uint32_t) (*((int32_t*) (ptr + 8))), - }; -} - -void wasi_io_0_2_0_rc_2023_10_18_poll_poll_list(wasi_io_0_2_0_rc_2023_10_18_poll_list_borrow_pollable_t *in, bindings_list_u32_t *ret) { - __attribute__((__aligned__(4))) - uint8_t ret_area[8]; - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_io_0_2_0_rc_2023_10_18_poll_poll_list((int32_t) (*in).ptr, (int32_t) (*in).len, ptr); - *ret = (bindings_list_u32_t) { (uint32_t*)(*((int32_t*) (ptr + 0))), (size_t)(*((int32_t*) (ptr + 4))) }; -} - -void wasi_io_0_2_0_rc_2023_10_18_poll_poll_one(wasi_io_0_2_0_rc_2023_10_18_poll_borrow_pollable_t in) { - __wasm_import_wasi_io_0_2_0_rc_2023_10_18_poll_poll_one((in).__handle); -} - -wasi_clocks_0_2_0_rc_2023_10_18_monotonic_clock_instant_t wasi_clocks_0_2_0_rc_2023_10_18_monotonic_clock_now(void) { - int64_t ret = __wasm_import_wasi_clocks_0_2_0_rc_2023_10_18_monotonic_clock_now(); - return (uint64_t) (ret); -} - -wasi_clocks_0_2_0_rc_2023_10_18_monotonic_clock_instant_t wasi_clocks_0_2_0_rc_2023_10_18_monotonic_clock_resolution(void) { - int64_t ret = __wasm_import_wasi_clocks_0_2_0_rc_2023_10_18_monotonic_clock_resolution(); - return (uint64_t) (ret); -} - -wasi_clocks_0_2_0_rc_2023_10_18_monotonic_clock_own_pollable_t wasi_clocks_0_2_0_rc_2023_10_18_monotonic_clock_subscribe(wasi_clocks_0_2_0_rc_2023_10_18_monotonic_clock_instant_t when, bool absolute) { - int32_t ret = __wasm_import_wasi_clocks_0_2_0_rc_2023_10_18_monotonic_clock_subscribe((int64_t) (when), absolute); - return (wasi_clocks_0_2_0_rc_2023_10_18_monotonic_clock_own_pollable_t) { ret }; -} - -void wasi_clocks_0_2_0_rc_2023_10_18_timezone_display(wasi_clocks_0_2_0_rc_2023_10_18_timezone_datetime_t *when, wasi_clocks_0_2_0_rc_2023_10_18_timezone_timezone_display_t *ret) { - __attribute__((__aligned__(4))) - uint8_t ret_area[16]; - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_clocks_0_2_0_rc_2023_10_18_timezone_display((int64_t) ((*when).seconds), (int32_t) ((*when).nanoseconds), ptr); - *ret = (wasi_clocks_0_2_0_rc_2023_10_18_timezone_timezone_display_t) { - *((int32_t*) (ptr + 0)), - (bindings_string_t) { (uint8_t*)(*((int32_t*) (ptr + 4))), (size_t)(*((int32_t*) (ptr + 8))) }, - (int32_t) (*((uint8_t*) (ptr + 12))), - }; -} - -int32_t wasi_clocks_0_2_0_rc_2023_10_18_timezone_utc_offset(wasi_clocks_0_2_0_rc_2023_10_18_timezone_datetime_t *when) { - int32_t ret = __wasm_import_wasi_clocks_0_2_0_rc_2023_10_18_timezone_utc_offset((int64_t) ((*when).seconds), (int32_t) ((*when).nanoseconds)); - return ret; -} - -void wasi_io_0_2_0_rc_2023_10_18_streams_method_error_to_debug_string(wasi_io_0_2_0_rc_2023_10_18_streams_borrow_error_t self, bindings_string_t *ret) { - __attribute__((__aligned__(4))) - uint8_t ret_area[8]; - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_io_0_2_0_rc_2023_10_18_streams_method_error_to_debug_string((self).__handle, ptr); - *ret = (bindings_string_t) { (uint8_t*)(*((int32_t*) (ptr + 0))), (size_t)(*((int32_t*) (ptr + 4))) }; -} - -bool wasi_io_0_2_0_rc_2023_10_18_streams_method_input_stream_read(wasi_io_0_2_0_rc_2023_10_18_streams_borrow_input_stream_t self, uint64_t len, bindings_list_u8_t *ret, wasi_io_0_2_0_rc_2023_10_18_streams_stream_error_t *err) { - __attribute__((__aligned__(4))) - uint8_t ret_area[12]; - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_io_0_2_0_rc_2023_10_18_streams_method_input_stream_read((self).__handle, (int64_t) (len), ptr); - wasi_io_0_2_0_rc_2023_10_18_streams_result_list_u8_stream_error_t result; - switch ((int32_t) (*((uint8_t*) (ptr + 0)))) { - case 0: { - result.is_err = false; - result.val.ok = (bindings_list_u8_t) { (uint8_t*)(*((int32_t*) (ptr + 4))), (size_t)(*((int32_t*) (ptr + 8))) }; - break; - } - case 1: { - result.is_err = true; - wasi_io_0_2_0_rc_2023_10_18_streams_stream_error_t variant; - variant.tag = (int32_t) (*((uint8_t*) (ptr + 4))); - switch ((int32_t) variant.tag) { - case 0: { - variant.val.last_operation_failed = (wasi_io_0_2_0_rc_2023_10_18_streams_own_error_t) { *((int32_t*) (ptr + 8)) }; - break; - } - case 1: { - break; - } - } - - result.val.err = variant; - break; - } - } - if (!result.is_err) { - *ret = result.val.ok; - return 1; - } else { - *err = result.val.err; - return 0; - } -} - -bool wasi_io_0_2_0_rc_2023_10_18_streams_method_input_stream_blocking_read(wasi_io_0_2_0_rc_2023_10_18_streams_borrow_input_stream_t self, uint64_t len, bindings_list_u8_t *ret, wasi_io_0_2_0_rc_2023_10_18_streams_stream_error_t *err) { - __attribute__((__aligned__(4))) - uint8_t ret_area[12]; - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_io_0_2_0_rc_2023_10_18_streams_method_input_stream_blocking_read((self).__handle, (int64_t) (len), ptr); - wasi_io_0_2_0_rc_2023_10_18_streams_result_list_u8_stream_error_t result; - switch ((int32_t) (*((uint8_t*) (ptr + 0)))) { - case 0: { - result.is_err = false; - result.val.ok = (bindings_list_u8_t) { (uint8_t*)(*((int32_t*) (ptr + 4))), (size_t)(*((int32_t*) (ptr + 8))) }; - break; - } - case 1: { - result.is_err = true; - wasi_io_0_2_0_rc_2023_10_18_streams_stream_error_t variant; - variant.tag = (int32_t) (*((uint8_t*) (ptr + 4))); - switch ((int32_t) variant.tag) { - case 0: { - variant.val.last_operation_failed = (wasi_io_0_2_0_rc_2023_10_18_streams_own_error_t) { *((int32_t*) (ptr + 8)) }; - break; - } - case 1: { - break; - } - } - - result.val.err = variant; - break; - } - } - if (!result.is_err) { - *ret = result.val.ok; - return 1; - } else { - *err = result.val.err; - return 0; - } -} - -bool wasi_io_0_2_0_rc_2023_10_18_streams_method_input_stream_skip(wasi_io_0_2_0_rc_2023_10_18_streams_borrow_input_stream_t self, uint64_t len, uint64_t *ret, wasi_io_0_2_0_rc_2023_10_18_streams_stream_error_t *err) { - __attribute__((__aligned__(8))) - uint8_t ret_area[16]; - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_io_0_2_0_rc_2023_10_18_streams_method_input_stream_skip((self).__handle, (int64_t) (len), ptr); - wasi_io_0_2_0_rc_2023_10_18_streams_result_u64_stream_error_t result; - switch ((int32_t) (*((uint8_t*) (ptr + 0)))) { - case 0: { - result.is_err = false; - result.val.ok = (uint64_t) (*((int64_t*) (ptr + 8))); - break; - } - case 1: { - result.is_err = true; - wasi_io_0_2_0_rc_2023_10_18_streams_stream_error_t variant; - variant.tag = (int32_t) (*((uint8_t*) (ptr + 8))); - switch ((int32_t) variant.tag) { - case 0: { - variant.val.last_operation_failed = (wasi_io_0_2_0_rc_2023_10_18_streams_own_error_t) { *((int32_t*) (ptr + 12)) }; - break; - } - case 1: { - break; - } - } - - result.val.err = variant; - break; - } - } - if (!result.is_err) { - *ret = result.val.ok; - return 1; - } else { - *err = result.val.err; - return 0; - } -} - -bool wasi_io_0_2_0_rc_2023_10_18_streams_method_input_stream_blocking_skip(wasi_io_0_2_0_rc_2023_10_18_streams_borrow_input_stream_t self, uint64_t len, uint64_t *ret, wasi_io_0_2_0_rc_2023_10_18_streams_stream_error_t *err) { - __attribute__((__aligned__(8))) - uint8_t ret_area[16]; - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_io_0_2_0_rc_2023_10_18_streams_method_input_stream_blocking_skip((self).__handle, (int64_t) (len), ptr); - wasi_io_0_2_0_rc_2023_10_18_streams_result_u64_stream_error_t result; - switch ((int32_t) (*((uint8_t*) (ptr + 0)))) { - case 0: { - result.is_err = false; - result.val.ok = (uint64_t) (*((int64_t*) (ptr + 8))); - break; - } - case 1: { - result.is_err = true; - wasi_io_0_2_0_rc_2023_10_18_streams_stream_error_t variant; - variant.tag = (int32_t) (*((uint8_t*) (ptr + 8))); - switch ((int32_t) variant.tag) { - case 0: { - variant.val.last_operation_failed = (wasi_io_0_2_0_rc_2023_10_18_streams_own_error_t) { *((int32_t*) (ptr + 12)) }; - break; - } - case 1: { - break; - } - } - - result.val.err = variant; - break; - } - } - if (!result.is_err) { - *ret = result.val.ok; - return 1; - } else { - *err = result.val.err; - return 0; - } -} - -wasi_io_0_2_0_rc_2023_10_18_streams_own_pollable_t wasi_io_0_2_0_rc_2023_10_18_streams_method_input_stream_subscribe(wasi_io_0_2_0_rc_2023_10_18_streams_borrow_input_stream_t self) { - int32_t ret = __wasm_import_wasi_io_0_2_0_rc_2023_10_18_streams_method_input_stream_subscribe((self).__handle); - return (wasi_io_0_2_0_rc_2023_10_18_streams_own_pollable_t) { ret }; -} - -bool wasi_io_0_2_0_rc_2023_10_18_streams_method_output_stream_check_write(wasi_io_0_2_0_rc_2023_10_18_streams_borrow_output_stream_t self, uint64_t *ret, wasi_io_0_2_0_rc_2023_10_18_streams_stream_error_t *err) { - __attribute__((__aligned__(8))) - uint8_t ret_area[16]; - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_io_0_2_0_rc_2023_10_18_streams_method_output_stream_check_write((self).__handle, ptr); - wasi_io_0_2_0_rc_2023_10_18_streams_result_u64_stream_error_t result; - switch ((int32_t) (*((uint8_t*) (ptr + 0)))) { - case 0: { - result.is_err = false; - result.val.ok = (uint64_t) (*((int64_t*) (ptr + 8))); - break; - } - case 1: { - result.is_err = true; - wasi_io_0_2_0_rc_2023_10_18_streams_stream_error_t variant; - variant.tag = (int32_t) (*((uint8_t*) (ptr + 8))); - switch ((int32_t) variant.tag) { - case 0: { - variant.val.last_operation_failed = (wasi_io_0_2_0_rc_2023_10_18_streams_own_error_t) { *((int32_t*) (ptr + 12)) }; - break; - } - case 1: { - break; - } - } - - result.val.err = variant; - break; - } - } - if (!result.is_err) { - *ret = result.val.ok; - return 1; - } else { - *err = result.val.err; - return 0; - } -} - -bool wasi_io_0_2_0_rc_2023_10_18_streams_method_output_stream_write(wasi_io_0_2_0_rc_2023_10_18_streams_borrow_output_stream_t self, bindings_list_u8_t *contents, wasi_io_0_2_0_rc_2023_10_18_streams_stream_error_t *err) { - __attribute__((__aligned__(4))) - uint8_t ret_area[12]; - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_io_0_2_0_rc_2023_10_18_streams_method_output_stream_write((self).__handle, (int32_t) (*contents).ptr, (int32_t) (*contents).len, ptr); - wasi_io_0_2_0_rc_2023_10_18_streams_result_void_stream_error_t result; - switch ((int32_t) (*((uint8_t*) (ptr + 0)))) { - case 0: { - result.is_err = false; - break; - } - case 1: { - result.is_err = true; - wasi_io_0_2_0_rc_2023_10_18_streams_stream_error_t variant; - variant.tag = (int32_t) (*((uint8_t*) (ptr + 4))); - switch ((int32_t) variant.tag) { - case 0: { - variant.val.last_operation_failed = (wasi_io_0_2_0_rc_2023_10_18_streams_own_error_t) { *((int32_t*) (ptr + 8)) }; - break; - } - case 1: { - break; - } - } - - result.val.err = variant; - break; - } - } - if (!result.is_err) { - return 1; - } else { - *err = result.val.err; - return 0; - } -} - -bool wasi_io_0_2_0_rc_2023_10_18_streams_method_output_stream_blocking_write_and_flush(wasi_io_0_2_0_rc_2023_10_18_streams_borrow_output_stream_t self, bindings_list_u8_t *contents, wasi_io_0_2_0_rc_2023_10_18_streams_stream_error_t *err) { - __attribute__((__aligned__(4))) - uint8_t ret_area[12]; - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_io_0_2_0_rc_2023_10_18_streams_method_output_stream_blocking_write_and_flush((self).__handle, (int32_t) (*contents).ptr, (int32_t) (*contents).len, ptr); - wasi_io_0_2_0_rc_2023_10_18_streams_result_void_stream_error_t result; - switch ((int32_t) (*((uint8_t*) (ptr + 0)))) { - case 0: { - result.is_err = false; - break; - } - case 1: { - result.is_err = true; - wasi_io_0_2_0_rc_2023_10_18_streams_stream_error_t variant; - variant.tag = (int32_t) (*((uint8_t*) (ptr + 4))); - switch ((int32_t) variant.tag) { - case 0: { - variant.val.last_operation_failed = (wasi_io_0_2_0_rc_2023_10_18_streams_own_error_t) { *((int32_t*) (ptr + 8)) }; - break; - } - case 1: { - break; - } - } - - result.val.err = variant; - break; - } - } - if (!result.is_err) { - return 1; - } else { - *err = result.val.err; - return 0; - } -} - -bool wasi_io_0_2_0_rc_2023_10_18_streams_method_output_stream_flush(wasi_io_0_2_0_rc_2023_10_18_streams_borrow_output_stream_t self, wasi_io_0_2_0_rc_2023_10_18_streams_stream_error_t *err) { - __attribute__((__aligned__(4))) - uint8_t ret_area[12]; - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_io_0_2_0_rc_2023_10_18_streams_method_output_stream_flush((self).__handle, ptr); - wasi_io_0_2_0_rc_2023_10_18_streams_result_void_stream_error_t result; - switch ((int32_t) (*((uint8_t*) (ptr + 0)))) { - case 0: { - result.is_err = false; - break; - } - case 1: { - result.is_err = true; - wasi_io_0_2_0_rc_2023_10_18_streams_stream_error_t variant; - variant.tag = (int32_t) (*((uint8_t*) (ptr + 4))); - switch ((int32_t) variant.tag) { - case 0: { - variant.val.last_operation_failed = (wasi_io_0_2_0_rc_2023_10_18_streams_own_error_t) { *((int32_t*) (ptr + 8)) }; - break; - } - case 1: { - break; - } - } - - result.val.err = variant; - break; - } - } - if (!result.is_err) { - return 1; - } else { - *err = result.val.err; - return 0; - } -} - -bool wasi_io_0_2_0_rc_2023_10_18_streams_method_output_stream_blocking_flush(wasi_io_0_2_0_rc_2023_10_18_streams_borrow_output_stream_t self, wasi_io_0_2_0_rc_2023_10_18_streams_stream_error_t *err) { - __attribute__((__aligned__(4))) - uint8_t ret_area[12]; - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_io_0_2_0_rc_2023_10_18_streams_method_output_stream_blocking_flush((self).__handle, ptr); - wasi_io_0_2_0_rc_2023_10_18_streams_result_void_stream_error_t result; - switch ((int32_t) (*((uint8_t*) (ptr + 0)))) { - case 0: { - result.is_err = false; - break; - } - case 1: { - result.is_err = true; - wasi_io_0_2_0_rc_2023_10_18_streams_stream_error_t variant; - variant.tag = (int32_t) (*((uint8_t*) (ptr + 4))); - switch ((int32_t) variant.tag) { - case 0: { - variant.val.last_operation_failed = (wasi_io_0_2_0_rc_2023_10_18_streams_own_error_t) { *((int32_t*) (ptr + 8)) }; - break; - } - case 1: { - break; - } - } - - result.val.err = variant; - break; - } - } - if (!result.is_err) { - return 1; - } else { - *err = result.val.err; - return 0; - } -} - -wasi_io_0_2_0_rc_2023_10_18_streams_own_pollable_t wasi_io_0_2_0_rc_2023_10_18_streams_method_output_stream_subscribe(wasi_io_0_2_0_rc_2023_10_18_streams_borrow_output_stream_t self) { - int32_t ret = __wasm_import_wasi_io_0_2_0_rc_2023_10_18_streams_method_output_stream_subscribe((self).__handle); - return (wasi_io_0_2_0_rc_2023_10_18_streams_own_pollable_t) { ret }; -} - -bool wasi_io_0_2_0_rc_2023_10_18_streams_method_output_stream_write_zeroes(wasi_io_0_2_0_rc_2023_10_18_streams_borrow_output_stream_t self, uint64_t len, wasi_io_0_2_0_rc_2023_10_18_streams_stream_error_t *err) { - __attribute__((__aligned__(4))) - uint8_t ret_area[12]; - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_io_0_2_0_rc_2023_10_18_streams_method_output_stream_write_zeroes((self).__handle, (int64_t) (len), ptr); - wasi_io_0_2_0_rc_2023_10_18_streams_result_void_stream_error_t result; - switch ((int32_t) (*((uint8_t*) (ptr + 0)))) { - case 0: { - result.is_err = false; - break; - } - case 1: { - result.is_err = true; - wasi_io_0_2_0_rc_2023_10_18_streams_stream_error_t variant; - variant.tag = (int32_t) (*((uint8_t*) (ptr + 4))); - switch ((int32_t) variant.tag) { - case 0: { - variant.val.last_operation_failed = (wasi_io_0_2_0_rc_2023_10_18_streams_own_error_t) { *((int32_t*) (ptr + 8)) }; - break; - } - case 1: { - break; - } - } - - result.val.err = variant; - break; - } - } - if (!result.is_err) { - return 1; - } else { - *err = result.val.err; - return 0; - } -} - -bool wasi_io_0_2_0_rc_2023_10_18_streams_method_output_stream_blocking_write_zeroes_and_flush(wasi_io_0_2_0_rc_2023_10_18_streams_borrow_output_stream_t self, uint64_t len, wasi_io_0_2_0_rc_2023_10_18_streams_stream_error_t *err) { - __attribute__((__aligned__(4))) - uint8_t ret_area[12]; - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_io_0_2_0_rc_2023_10_18_streams_method_output_stream_blocking_write_zeroes_and_flush((self).__handle, (int64_t) (len), ptr); - wasi_io_0_2_0_rc_2023_10_18_streams_result_void_stream_error_t result; - switch ((int32_t) (*((uint8_t*) (ptr + 0)))) { - case 0: { - result.is_err = false; - break; - } - case 1: { - result.is_err = true; - wasi_io_0_2_0_rc_2023_10_18_streams_stream_error_t variant; - variant.tag = (int32_t) (*((uint8_t*) (ptr + 4))); - switch ((int32_t) variant.tag) { - case 0: { - variant.val.last_operation_failed = (wasi_io_0_2_0_rc_2023_10_18_streams_own_error_t) { *((int32_t*) (ptr + 8)) }; - break; - } - case 1: { - break; - } - } - - result.val.err = variant; - break; - } - } - if (!result.is_err) { - return 1; - } else { - *err = result.val.err; - return 0; - } -} - -bool wasi_io_0_2_0_rc_2023_10_18_streams_method_output_stream_splice(wasi_io_0_2_0_rc_2023_10_18_streams_borrow_output_stream_t self, wasi_io_0_2_0_rc_2023_10_18_streams_own_input_stream_t src, uint64_t len, uint64_t *ret, wasi_io_0_2_0_rc_2023_10_18_streams_stream_error_t *err) { - __attribute__((__aligned__(8))) - uint8_t ret_area[16]; - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_io_0_2_0_rc_2023_10_18_streams_method_output_stream_splice((self).__handle, (src).__handle, (int64_t) (len), ptr); - wasi_io_0_2_0_rc_2023_10_18_streams_result_u64_stream_error_t result; - switch ((int32_t) (*((uint8_t*) (ptr + 0)))) { - case 0: { - result.is_err = false; - result.val.ok = (uint64_t) (*((int64_t*) (ptr + 8))); - break; - } - case 1: { - result.is_err = true; - wasi_io_0_2_0_rc_2023_10_18_streams_stream_error_t variant; - variant.tag = (int32_t) (*((uint8_t*) (ptr + 8))); - switch ((int32_t) variant.tag) { - case 0: { - variant.val.last_operation_failed = (wasi_io_0_2_0_rc_2023_10_18_streams_own_error_t) { *((int32_t*) (ptr + 12)) }; - break; - } - case 1: { - break; - } - } - - result.val.err = variant; - break; - } - } - if (!result.is_err) { - *ret = result.val.ok; - return 1; - } else { - *err = result.val.err; - return 0; - } -} - -bool wasi_io_0_2_0_rc_2023_10_18_streams_method_output_stream_blocking_splice(wasi_io_0_2_0_rc_2023_10_18_streams_borrow_output_stream_t self, wasi_io_0_2_0_rc_2023_10_18_streams_own_input_stream_t src, uint64_t len, uint64_t *ret, wasi_io_0_2_0_rc_2023_10_18_streams_stream_error_t *err) { - __attribute__((__aligned__(8))) - uint8_t ret_area[16]; - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_io_0_2_0_rc_2023_10_18_streams_method_output_stream_blocking_splice((self).__handle, (src).__handle, (int64_t) (len), ptr); - wasi_io_0_2_0_rc_2023_10_18_streams_result_u64_stream_error_t result; - switch ((int32_t) (*((uint8_t*) (ptr + 0)))) { - case 0: { - result.is_err = false; - result.val.ok = (uint64_t) (*((int64_t*) (ptr + 8))); - break; - } - case 1: { - result.is_err = true; - wasi_io_0_2_0_rc_2023_10_18_streams_stream_error_t variant; - variant.tag = (int32_t) (*((uint8_t*) (ptr + 8))); - switch ((int32_t) variant.tag) { - case 0: { - variant.val.last_operation_failed = (wasi_io_0_2_0_rc_2023_10_18_streams_own_error_t) { *((int32_t*) (ptr + 12)) }; - break; - } - case 1: { - break; - } - } - - result.val.err = variant; - break; - } - } - if (!result.is_err) { - *ret = result.val.ok; - return 1; - } else { - *err = result.val.err; - return 0; - } -} - -bool wasi_io_0_2_0_rc_2023_10_18_streams_method_output_stream_forward(wasi_io_0_2_0_rc_2023_10_18_streams_borrow_output_stream_t self, wasi_io_0_2_0_rc_2023_10_18_streams_own_input_stream_t src, uint64_t *ret, wasi_io_0_2_0_rc_2023_10_18_streams_stream_error_t *err) { - __attribute__((__aligned__(8))) - uint8_t ret_area[16]; - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_io_0_2_0_rc_2023_10_18_streams_method_output_stream_forward((self).__handle, (src).__handle, ptr); - wasi_io_0_2_0_rc_2023_10_18_streams_result_u64_stream_error_t result; - switch ((int32_t) (*((uint8_t*) (ptr + 0)))) { - case 0: { - result.is_err = false; - result.val.ok = (uint64_t) (*((int64_t*) (ptr + 8))); - break; - } - case 1: { - result.is_err = true; - wasi_io_0_2_0_rc_2023_10_18_streams_stream_error_t variant; - variant.tag = (int32_t) (*((uint8_t*) (ptr + 8))); - switch ((int32_t) variant.tag) { - case 0: { - variant.val.last_operation_failed = (wasi_io_0_2_0_rc_2023_10_18_streams_own_error_t) { *((int32_t*) (ptr + 12)) }; - break; - } - case 1: { - break; - } - } - - result.val.err = variant; - break; - } - } - if (!result.is_err) { - *ret = result.val.ok; - return 1; - } else { - *err = result.val.err; - return 0; - } -} - -bool wasi_filesystem_0_2_0_rc_2023_10_18_types_method_descriptor_read_via_stream(wasi_filesystem_0_2_0_rc_2023_10_18_types_borrow_descriptor_t self, wasi_filesystem_0_2_0_rc_2023_10_18_types_filesize_t offset, wasi_filesystem_0_2_0_rc_2023_10_18_types_own_input_stream_t *ret, wasi_filesystem_0_2_0_rc_2023_10_18_types_error_code_t *err) { - __attribute__((__aligned__(4))) - uint8_t ret_area[8]; - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_filesystem_0_2_0_rc_2023_10_18_types_method_descriptor_read_via_stream((self).__handle, (int64_t) (offset), ptr); - wasi_filesystem_0_2_0_rc_2023_10_18_types_result_own_input_stream_error_code_t result; - switch ((int32_t) (*((uint8_t*) (ptr + 0)))) { - case 0: { - result.is_err = false; - result.val.ok = (wasi_filesystem_0_2_0_rc_2023_10_18_types_own_input_stream_t) { *((int32_t*) (ptr + 4)) }; - break; - } - case 1: { - result.is_err = true; - result.val.err = (int32_t) (*((uint8_t*) (ptr + 4))); - break; - } - } - if (!result.is_err) { - *ret = result.val.ok; - return 1; - } else { - *err = result.val.err; - return 0; - } -} - -bool wasi_filesystem_0_2_0_rc_2023_10_18_types_method_descriptor_write_via_stream(wasi_filesystem_0_2_0_rc_2023_10_18_types_borrow_descriptor_t self, wasi_filesystem_0_2_0_rc_2023_10_18_types_filesize_t offset, wasi_filesystem_0_2_0_rc_2023_10_18_types_own_output_stream_t *ret, wasi_filesystem_0_2_0_rc_2023_10_18_types_error_code_t *err) { - __attribute__((__aligned__(4))) - uint8_t ret_area[8]; - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_filesystem_0_2_0_rc_2023_10_18_types_method_descriptor_write_via_stream((self).__handle, (int64_t) (offset), ptr); - wasi_filesystem_0_2_0_rc_2023_10_18_types_result_own_output_stream_error_code_t result; - switch ((int32_t) (*((uint8_t*) (ptr + 0)))) { - case 0: { - result.is_err = false; - result.val.ok = (wasi_filesystem_0_2_0_rc_2023_10_18_types_own_output_stream_t) { *((int32_t*) (ptr + 4)) }; - break; - } - case 1: { - result.is_err = true; - result.val.err = (int32_t) (*((uint8_t*) (ptr + 4))); - break; - } - } - if (!result.is_err) { - *ret = result.val.ok; - return 1; - } else { - *err = result.val.err; - return 0; - } -} - -bool wasi_filesystem_0_2_0_rc_2023_10_18_types_method_descriptor_append_via_stream(wasi_filesystem_0_2_0_rc_2023_10_18_types_borrow_descriptor_t self, wasi_filesystem_0_2_0_rc_2023_10_18_types_own_output_stream_t *ret, wasi_filesystem_0_2_0_rc_2023_10_18_types_error_code_t *err) { - __attribute__((__aligned__(4))) - uint8_t ret_area[8]; - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_filesystem_0_2_0_rc_2023_10_18_types_method_descriptor_append_via_stream((self).__handle, ptr); - wasi_filesystem_0_2_0_rc_2023_10_18_types_result_own_output_stream_error_code_t result; - switch ((int32_t) (*((uint8_t*) (ptr + 0)))) { - case 0: { - result.is_err = false; - result.val.ok = (wasi_filesystem_0_2_0_rc_2023_10_18_types_own_output_stream_t) { *((int32_t*) (ptr + 4)) }; - break; - } - case 1: { - result.is_err = true; - result.val.err = (int32_t) (*((uint8_t*) (ptr + 4))); - break; - } - } - if (!result.is_err) { - *ret = result.val.ok; - return 1; - } else { - *err = result.val.err; - return 0; - } -} - -bool wasi_filesystem_0_2_0_rc_2023_10_18_types_method_descriptor_advise(wasi_filesystem_0_2_0_rc_2023_10_18_types_borrow_descriptor_t self, wasi_filesystem_0_2_0_rc_2023_10_18_types_filesize_t offset, wasi_filesystem_0_2_0_rc_2023_10_18_types_filesize_t length, wasi_filesystem_0_2_0_rc_2023_10_18_types_advice_t advice, wasi_filesystem_0_2_0_rc_2023_10_18_types_error_code_t *err) { - __attribute__((__aligned__(1))) - uint8_t ret_area[2]; - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_filesystem_0_2_0_rc_2023_10_18_types_method_descriptor_advise((self).__handle, (int64_t) (offset), (int64_t) (length), (int32_t) advice, ptr); - wasi_filesystem_0_2_0_rc_2023_10_18_types_result_void_error_code_t result; - switch ((int32_t) (*((uint8_t*) (ptr + 0)))) { - case 0: { - result.is_err = false; - break; - } - case 1: { - result.is_err = true; - result.val.err = (int32_t) (*((uint8_t*) (ptr + 1))); - break; - } - } - if (!result.is_err) { - return 1; - } else { - *err = result.val.err; - return 0; - } -} - -bool wasi_filesystem_0_2_0_rc_2023_10_18_types_method_descriptor_sync_data(wasi_filesystem_0_2_0_rc_2023_10_18_types_borrow_descriptor_t self, wasi_filesystem_0_2_0_rc_2023_10_18_types_error_code_t *err) { - __attribute__((__aligned__(1))) - uint8_t ret_area[2]; - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_filesystem_0_2_0_rc_2023_10_18_types_method_descriptor_sync_data((self).__handle, ptr); - wasi_filesystem_0_2_0_rc_2023_10_18_types_result_void_error_code_t result; - switch ((int32_t) (*((uint8_t*) (ptr + 0)))) { - case 0: { - result.is_err = false; - break; - } - case 1: { - result.is_err = true; - result.val.err = (int32_t) (*((uint8_t*) (ptr + 1))); - break; - } - } - if (!result.is_err) { - return 1; - } else { - *err = result.val.err; - return 0; - } -} - -bool wasi_filesystem_0_2_0_rc_2023_10_18_types_method_descriptor_get_flags(wasi_filesystem_0_2_0_rc_2023_10_18_types_borrow_descriptor_t self, wasi_filesystem_0_2_0_rc_2023_10_18_types_descriptor_flags_t *ret, wasi_filesystem_0_2_0_rc_2023_10_18_types_error_code_t *err) { - __attribute__((__aligned__(1))) - uint8_t ret_area[2]; - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_filesystem_0_2_0_rc_2023_10_18_types_method_descriptor_get_flags((self).__handle, ptr); - wasi_filesystem_0_2_0_rc_2023_10_18_types_result_descriptor_flags_error_code_t result; - switch ((int32_t) (*((uint8_t*) (ptr + 0)))) { - case 0: { - result.is_err = false; - result.val.ok = (int32_t) (*((uint8_t*) (ptr + 1))); - break; - } - case 1: { - result.is_err = true; - result.val.err = (int32_t) (*((uint8_t*) (ptr + 1))); - break; - } - } - if (!result.is_err) { - *ret = result.val.ok; - return 1; - } else { - *err = result.val.err; - return 0; - } -} - -bool wasi_filesystem_0_2_0_rc_2023_10_18_types_method_descriptor_get_type(wasi_filesystem_0_2_0_rc_2023_10_18_types_borrow_descriptor_t self, wasi_filesystem_0_2_0_rc_2023_10_18_types_descriptor_type_t *ret, wasi_filesystem_0_2_0_rc_2023_10_18_types_error_code_t *err) { - __attribute__((__aligned__(1))) - uint8_t ret_area[2]; - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_filesystem_0_2_0_rc_2023_10_18_types_method_descriptor_get_type((self).__handle, ptr); - wasi_filesystem_0_2_0_rc_2023_10_18_types_result_descriptor_type_error_code_t result; - switch ((int32_t) (*((uint8_t*) (ptr + 0)))) { - case 0: { - result.is_err = false; - result.val.ok = (int32_t) (*((uint8_t*) (ptr + 1))); - break; - } - case 1: { - result.is_err = true; - result.val.err = (int32_t) (*((uint8_t*) (ptr + 1))); - break; - } - } - if (!result.is_err) { - *ret = result.val.ok; - return 1; - } else { - *err = result.val.err; - return 0; - } -} - -bool wasi_filesystem_0_2_0_rc_2023_10_18_types_method_descriptor_set_size(wasi_filesystem_0_2_0_rc_2023_10_18_types_borrow_descriptor_t self, wasi_filesystem_0_2_0_rc_2023_10_18_types_filesize_t size, wasi_filesystem_0_2_0_rc_2023_10_18_types_error_code_t *err) { - __attribute__((__aligned__(1))) - uint8_t ret_area[2]; - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_filesystem_0_2_0_rc_2023_10_18_types_method_descriptor_set_size((self).__handle, (int64_t) (size), ptr); - wasi_filesystem_0_2_0_rc_2023_10_18_types_result_void_error_code_t result; - switch ((int32_t) (*((uint8_t*) (ptr + 0)))) { - case 0: { - result.is_err = false; - break; - } - case 1: { - result.is_err = true; - result.val.err = (int32_t) (*((uint8_t*) (ptr + 1))); - break; - } - } - if (!result.is_err) { - return 1; - } else { - *err = result.val.err; - return 0; - } -} - -bool wasi_filesystem_0_2_0_rc_2023_10_18_types_method_descriptor_set_times(wasi_filesystem_0_2_0_rc_2023_10_18_types_borrow_descriptor_t self, wasi_filesystem_0_2_0_rc_2023_10_18_types_new_timestamp_t *data_access_timestamp, wasi_filesystem_0_2_0_rc_2023_10_18_types_new_timestamp_t *data_modification_timestamp, wasi_filesystem_0_2_0_rc_2023_10_18_types_error_code_t *err) { - __attribute__((__aligned__(1))) - uint8_t ret_area[2]; - int32_t variant; - int64_t variant2; - int32_t variant3; - switch ((int32_t) (*data_access_timestamp).tag) { - case 0: { - variant = 0; - variant2 = 0; - variant3 = 0; - break; - } - case 1: { - variant = 1; - variant2 = 0; - variant3 = 0; - break; - } - case 2: { - const wasi_filesystem_0_2_0_rc_2023_10_18_types_datetime_t *payload1 = &(*data_access_timestamp).val.timestamp; - variant = 2; - variant2 = (int64_t) ((*payload1).seconds); - variant3 = (int32_t) ((*payload1).nanoseconds); - break; - } - } - int32_t variant7; - int64_t variant8; - int32_t variant9; - switch ((int32_t) (*data_modification_timestamp).tag) { - case 0: { - variant7 = 0; - variant8 = 0; - variant9 = 0; - break; - } - case 1: { - variant7 = 1; - variant8 = 0; - variant9 = 0; - break; - } - case 2: { - const wasi_filesystem_0_2_0_rc_2023_10_18_types_datetime_t *payload6 = &(*data_modification_timestamp).val.timestamp; - variant7 = 2; - variant8 = (int64_t) ((*payload6).seconds); - variant9 = (int32_t) ((*payload6).nanoseconds); - break; - } - } - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_filesystem_0_2_0_rc_2023_10_18_types_method_descriptor_set_times((self).__handle, variant, variant2, variant3, variant7, variant8, variant9, ptr); - wasi_filesystem_0_2_0_rc_2023_10_18_types_result_void_error_code_t result; - switch ((int32_t) (*((uint8_t*) (ptr + 0)))) { - case 0: { - result.is_err = false; - break; - } - case 1: { - result.is_err = true; - result.val.err = (int32_t) (*((uint8_t*) (ptr + 1))); - break; - } - } - if (!result.is_err) { - return 1; - } else { - *err = result.val.err; - return 0; - } -} - -bool wasi_filesystem_0_2_0_rc_2023_10_18_types_method_descriptor_read(wasi_filesystem_0_2_0_rc_2023_10_18_types_borrow_descriptor_t self, wasi_filesystem_0_2_0_rc_2023_10_18_types_filesize_t length, wasi_filesystem_0_2_0_rc_2023_10_18_types_filesize_t offset, bindings_tuple2_list_u8_bool_t *ret, wasi_filesystem_0_2_0_rc_2023_10_18_types_error_code_t *err) { - __attribute__((__aligned__(4))) - uint8_t ret_area[16]; - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_filesystem_0_2_0_rc_2023_10_18_types_method_descriptor_read((self).__handle, (int64_t) (length), (int64_t) (offset), ptr); - wasi_filesystem_0_2_0_rc_2023_10_18_types_result_tuple2_list_u8_bool_error_code_t result; - switch ((int32_t) (*((uint8_t*) (ptr + 0)))) { - case 0: { - result.is_err = false; - result.val.ok = (bindings_tuple2_list_u8_bool_t) { - (bindings_list_u8_t) { (uint8_t*)(*((int32_t*) (ptr + 4))), (size_t)(*((int32_t*) (ptr + 8))) }, - (int32_t) (*((uint8_t*) (ptr + 12))), - }; - break; - } - case 1: { - result.is_err = true; - result.val.err = (int32_t) (*((uint8_t*) (ptr + 4))); - break; - } - } - if (!result.is_err) { - *ret = result.val.ok; - return 1; - } else { - *err = result.val.err; - return 0; - } -} - -bool wasi_filesystem_0_2_0_rc_2023_10_18_types_method_descriptor_write(wasi_filesystem_0_2_0_rc_2023_10_18_types_borrow_descriptor_t self, bindings_list_u8_t *buffer, wasi_filesystem_0_2_0_rc_2023_10_18_types_filesize_t offset, wasi_filesystem_0_2_0_rc_2023_10_18_types_filesize_t *ret, wasi_filesystem_0_2_0_rc_2023_10_18_types_error_code_t *err) { - __attribute__((__aligned__(8))) - uint8_t ret_area[16]; - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_filesystem_0_2_0_rc_2023_10_18_types_method_descriptor_write((self).__handle, (int32_t) (*buffer).ptr, (int32_t) (*buffer).len, (int64_t) (offset), ptr); - wasi_filesystem_0_2_0_rc_2023_10_18_types_result_filesize_error_code_t result; - switch ((int32_t) (*((uint8_t*) (ptr + 0)))) { - case 0: { - result.is_err = false; - result.val.ok = (uint64_t) (*((int64_t*) (ptr + 8))); - break; - } - case 1: { - result.is_err = true; - result.val.err = (int32_t) (*((uint8_t*) (ptr + 8))); - break; - } - } - if (!result.is_err) { - *ret = result.val.ok; - return 1; - } else { - *err = result.val.err; - return 0; - } -} - -bool wasi_filesystem_0_2_0_rc_2023_10_18_types_method_descriptor_read_directory(wasi_filesystem_0_2_0_rc_2023_10_18_types_borrow_descriptor_t self, wasi_filesystem_0_2_0_rc_2023_10_18_types_own_directory_entry_stream_t *ret, wasi_filesystem_0_2_0_rc_2023_10_18_types_error_code_t *err) { - __attribute__((__aligned__(4))) - uint8_t ret_area[8]; - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_filesystem_0_2_0_rc_2023_10_18_types_method_descriptor_read_directory((self).__handle, ptr); - wasi_filesystem_0_2_0_rc_2023_10_18_types_result_own_directory_entry_stream_error_code_t result; - switch ((int32_t) (*((uint8_t*) (ptr + 0)))) { - case 0: { - result.is_err = false; - result.val.ok = (wasi_filesystem_0_2_0_rc_2023_10_18_types_own_directory_entry_stream_t) { *((int32_t*) (ptr + 4)) }; - break; - } - case 1: { - result.is_err = true; - result.val.err = (int32_t) (*((uint8_t*) (ptr + 4))); - break; - } - } - if (!result.is_err) { - *ret = result.val.ok; - return 1; - } else { - *err = result.val.err; - return 0; - } -} - -bool wasi_filesystem_0_2_0_rc_2023_10_18_types_method_descriptor_sync(wasi_filesystem_0_2_0_rc_2023_10_18_types_borrow_descriptor_t self, wasi_filesystem_0_2_0_rc_2023_10_18_types_error_code_t *err) { - __attribute__((__aligned__(1))) - uint8_t ret_area[2]; - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_filesystem_0_2_0_rc_2023_10_18_types_method_descriptor_sync((self).__handle, ptr); - wasi_filesystem_0_2_0_rc_2023_10_18_types_result_void_error_code_t result; - switch ((int32_t) (*((uint8_t*) (ptr + 0)))) { - case 0: { - result.is_err = false; - break; - } - case 1: { - result.is_err = true; - result.val.err = (int32_t) (*((uint8_t*) (ptr + 1))); - break; - } - } - if (!result.is_err) { - return 1; - } else { - *err = result.val.err; - return 0; - } -} - -bool wasi_filesystem_0_2_0_rc_2023_10_18_types_method_descriptor_create_directory_at(wasi_filesystem_0_2_0_rc_2023_10_18_types_borrow_descriptor_t self, bindings_string_t *path, wasi_filesystem_0_2_0_rc_2023_10_18_types_error_code_t *err) { - __attribute__((__aligned__(1))) - uint8_t ret_area[2]; - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_filesystem_0_2_0_rc_2023_10_18_types_method_descriptor_create_directory_at((self).__handle, (int32_t) (*path).ptr, (int32_t) (*path).len, ptr); - wasi_filesystem_0_2_0_rc_2023_10_18_types_result_void_error_code_t result; - switch ((int32_t) (*((uint8_t*) (ptr + 0)))) { - case 0: { - result.is_err = false; - break; - } - case 1: { - result.is_err = true; - result.val.err = (int32_t) (*((uint8_t*) (ptr + 1))); - break; - } - } - if (!result.is_err) { - return 1; - } else { - *err = result.val.err; - return 0; - } -} - -bool wasi_filesystem_0_2_0_rc_2023_10_18_types_method_descriptor_stat(wasi_filesystem_0_2_0_rc_2023_10_18_types_borrow_descriptor_t self, wasi_filesystem_0_2_0_rc_2023_10_18_types_descriptor_stat_t *ret, wasi_filesystem_0_2_0_rc_2023_10_18_types_error_code_t *err) { - __attribute__((__aligned__(8))) - uint8_t ret_area[104]; - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_filesystem_0_2_0_rc_2023_10_18_types_method_descriptor_stat((self).__handle, ptr); - wasi_filesystem_0_2_0_rc_2023_10_18_types_result_descriptor_stat_error_code_t result; - switch ((int32_t) (*((uint8_t*) (ptr + 0)))) { - case 0: { - result.is_err = false; - wasi_filesystem_0_2_0_rc_2023_10_18_types_option_datetime_t option; - switch ((int32_t) (*((uint8_t*) (ptr + 32)))) { - case 0: { - option.is_some = false; - break; - } - case 1: { - option.is_some = true; - option.val = (wasi_clocks_0_2_0_rc_2023_10_18_wall_clock_datetime_t) { - (uint64_t) (*((int64_t*) (ptr + 40))), - (uint32_t) (*((int32_t*) (ptr + 48))), - }; - break; - } - } - wasi_filesystem_0_2_0_rc_2023_10_18_types_option_datetime_t option0; - switch ((int32_t) (*((uint8_t*) (ptr + 56)))) { - case 0: { - option0.is_some = false; - break; - } - case 1: { - option0.is_some = true; - option0.val = (wasi_clocks_0_2_0_rc_2023_10_18_wall_clock_datetime_t) { - (uint64_t) (*((int64_t*) (ptr + 64))), - (uint32_t) (*((int32_t*) (ptr + 72))), - }; - break; - } - } - wasi_filesystem_0_2_0_rc_2023_10_18_types_option_datetime_t option1; - switch ((int32_t) (*((uint8_t*) (ptr + 80)))) { - case 0: { - option1.is_some = false; - break; - } - case 1: { - option1.is_some = true; - option1.val = (wasi_clocks_0_2_0_rc_2023_10_18_wall_clock_datetime_t) { - (uint64_t) (*((int64_t*) (ptr + 88))), - (uint32_t) (*((int32_t*) (ptr + 96))), - }; - break; - } - } - - result.val.ok = (wasi_filesystem_0_2_0_rc_2023_10_18_types_descriptor_stat_t) { - (int32_t) (*((uint8_t*) (ptr + 8))), - (uint64_t) (*((int64_t*) (ptr + 16))), - (uint64_t) (*((int64_t*) (ptr + 24))), - option, - option0, - option1, - }; - break; - } - case 1: { - result.is_err = true; - result.val.err = (int32_t) (*((uint8_t*) (ptr + 8))); - break; - } - } - if (!result.is_err) { - *ret = result.val.ok; - return 1; - } else { - *err = result.val.err; - return 0; - } -} - -bool wasi_filesystem_0_2_0_rc_2023_10_18_types_method_descriptor_stat_at(wasi_filesystem_0_2_0_rc_2023_10_18_types_borrow_descriptor_t self, wasi_filesystem_0_2_0_rc_2023_10_18_types_path_flags_t path_flags, bindings_string_t *path, wasi_filesystem_0_2_0_rc_2023_10_18_types_descriptor_stat_t *ret, wasi_filesystem_0_2_0_rc_2023_10_18_types_error_code_t *err) { - __attribute__((__aligned__(8))) - uint8_t ret_area[104]; - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_filesystem_0_2_0_rc_2023_10_18_types_method_descriptor_stat_at((self).__handle, path_flags, (int32_t) (*path).ptr, (int32_t) (*path).len, ptr); - wasi_filesystem_0_2_0_rc_2023_10_18_types_result_descriptor_stat_error_code_t result; - switch ((int32_t) (*((uint8_t*) (ptr + 0)))) { - case 0: { - result.is_err = false; - wasi_filesystem_0_2_0_rc_2023_10_18_types_option_datetime_t option; - switch ((int32_t) (*((uint8_t*) (ptr + 32)))) { - case 0: { - option.is_some = false; - break; - } - case 1: { - option.is_some = true; - option.val = (wasi_clocks_0_2_0_rc_2023_10_18_wall_clock_datetime_t) { - (uint64_t) (*((int64_t*) (ptr + 40))), - (uint32_t) (*((int32_t*) (ptr + 48))), - }; - break; - } - } - wasi_filesystem_0_2_0_rc_2023_10_18_types_option_datetime_t option0; - switch ((int32_t) (*((uint8_t*) (ptr + 56)))) { - case 0: { - option0.is_some = false; - break; - } - case 1: { - option0.is_some = true; - option0.val = (wasi_clocks_0_2_0_rc_2023_10_18_wall_clock_datetime_t) { - (uint64_t) (*((int64_t*) (ptr + 64))), - (uint32_t) (*((int32_t*) (ptr + 72))), - }; - break; - } - } - wasi_filesystem_0_2_0_rc_2023_10_18_types_option_datetime_t option1; - switch ((int32_t) (*((uint8_t*) (ptr + 80)))) { - case 0: { - option1.is_some = false; - break; - } - case 1: { - option1.is_some = true; - option1.val = (wasi_clocks_0_2_0_rc_2023_10_18_wall_clock_datetime_t) { - (uint64_t) (*((int64_t*) (ptr + 88))), - (uint32_t) (*((int32_t*) (ptr + 96))), - }; - break; - } - } - - result.val.ok = (wasi_filesystem_0_2_0_rc_2023_10_18_types_descriptor_stat_t) { - (int32_t) (*((uint8_t*) (ptr + 8))), - (uint64_t) (*((int64_t*) (ptr + 16))), - (uint64_t) (*((int64_t*) (ptr + 24))), - option, - option0, - option1, - }; - break; - } - case 1: { - result.is_err = true; - result.val.err = (int32_t) (*((uint8_t*) (ptr + 8))); - break; - } - } - if (!result.is_err) { - *ret = result.val.ok; - return 1; - } else { - *err = result.val.err; - return 0; - } -} - -bool wasi_filesystem_0_2_0_rc_2023_10_18_types_method_descriptor_set_times_at(wasi_filesystem_0_2_0_rc_2023_10_18_types_borrow_descriptor_t self, wasi_filesystem_0_2_0_rc_2023_10_18_types_path_flags_t path_flags, bindings_string_t *path, wasi_filesystem_0_2_0_rc_2023_10_18_types_new_timestamp_t *data_access_timestamp, wasi_filesystem_0_2_0_rc_2023_10_18_types_new_timestamp_t *data_modification_timestamp, wasi_filesystem_0_2_0_rc_2023_10_18_types_error_code_t *err) { - __attribute__((__aligned__(1))) - uint8_t ret_area[2]; - int32_t variant; - int64_t variant2; - int32_t variant3; - switch ((int32_t) (*data_access_timestamp).tag) { - case 0: { - variant = 0; - variant2 = 0; - variant3 = 0; - break; - } - case 1: { - variant = 1; - variant2 = 0; - variant3 = 0; - break; - } - case 2: { - const wasi_filesystem_0_2_0_rc_2023_10_18_types_datetime_t *payload1 = &(*data_access_timestamp).val.timestamp; - variant = 2; - variant2 = (int64_t) ((*payload1).seconds); - variant3 = (int32_t) ((*payload1).nanoseconds); - break; - } - } - int32_t variant7; - int64_t variant8; - int32_t variant9; - switch ((int32_t) (*data_modification_timestamp).tag) { - case 0: { - variant7 = 0; - variant8 = 0; - variant9 = 0; - break; - } - case 1: { - variant7 = 1; - variant8 = 0; - variant9 = 0; - break; - } - case 2: { - const wasi_filesystem_0_2_0_rc_2023_10_18_types_datetime_t *payload6 = &(*data_modification_timestamp).val.timestamp; - variant7 = 2; - variant8 = (int64_t) ((*payload6).seconds); - variant9 = (int32_t) ((*payload6).nanoseconds); - break; - } - } - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_filesystem_0_2_0_rc_2023_10_18_types_method_descriptor_set_times_at((self).__handle, path_flags, (int32_t) (*path).ptr, (int32_t) (*path).len, variant, variant2, variant3, variant7, variant8, variant9, ptr); - wasi_filesystem_0_2_0_rc_2023_10_18_types_result_void_error_code_t result; - switch ((int32_t) (*((uint8_t*) (ptr + 0)))) { - case 0: { - result.is_err = false; - break; - } - case 1: { - result.is_err = true; - result.val.err = (int32_t) (*((uint8_t*) (ptr + 1))); - break; - } - } - if (!result.is_err) { - return 1; - } else { - *err = result.val.err; - return 0; - } -} - -bool wasi_filesystem_0_2_0_rc_2023_10_18_types_method_descriptor_link_at(wasi_filesystem_0_2_0_rc_2023_10_18_types_borrow_descriptor_t self, wasi_filesystem_0_2_0_rc_2023_10_18_types_path_flags_t old_path_flags, bindings_string_t *old_path, wasi_filesystem_0_2_0_rc_2023_10_18_types_borrow_descriptor_t new_descriptor, bindings_string_t *new_path, wasi_filesystem_0_2_0_rc_2023_10_18_types_error_code_t *err) { - __attribute__((__aligned__(1))) - uint8_t ret_area[2]; - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_filesystem_0_2_0_rc_2023_10_18_types_method_descriptor_link_at((self).__handle, old_path_flags, (int32_t) (*old_path).ptr, (int32_t) (*old_path).len, (new_descriptor).__handle, (int32_t) (*new_path).ptr, (int32_t) (*new_path).len, ptr); - wasi_filesystem_0_2_0_rc_2023_10_18_types_result_void_error_code_t result; - switch ((int32_t) (*((uint8_t*) (ptr + 0)))) { - case 0: { - result.is_err = false; - break; - } - case 1: { - result.is_err = true; - result.val.err = (int32_t) (*((uint8_t*) (ptr + 1))); - break; - } - } - if (!result.is_err) { - return 1; - } else { - *err = result.val.err; - return 0; - } -} - -bool wasi_filesystem_0_2_0_rc_2023_10_18_types_method_descriptor_open_at(wasi_filesystem_0_2_0_rc_2023_10_18_types_borrow_descriptor_t self, wasi_filesystem_0_2_0_rc_2023_10_18_types_path_flags_t path_flags, bindings_string_t *path, wasi_filesystem_0_2_0_rc_2023_10_18_types_open_flags_t open_flags, wasi_filesystem_0_2_0_rc_2023_10_18_types_descriptor_flags_t flags, wasi_filesystem_0_2_0_rc_2023_10_18_types_modes_t modes, wasi_filesystem_0_2_0_rc_2023_10_18_types_own_descriptor_t *ret, wasi_filesystem_0_2_0_rc_2023_10_18_types_error_code_t *err) { - __attribute__((__aligned__(4))) - uint8_t ret_area[8]; - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_filesystem_0_2_0_rc_2023_10_18_types_method_descriptor_open_at((self).__handle, path_flags, (int32_t) (*path).ptr, (int32_t) (*path).len, open_flags, flags, modes, ptr); - wasi_filesystem_0_2_0_rc_2023_10_18_types_result_own_descriptor_error_code_t result; - switch ((int32_t) (*((uint8_t*) (ptr + 0)))) { - case 0: { - result.is_err = false; - result.val.ok = (wasi_filesystem_0_2_0_rc_2023_10_18_types_own_descriptor_t) { *((int32_t*) (ptr + 4)) }; - break; - } - case 1: { - result.is_err = true; - result.val.err = (int32_t) (*((uint8_t*) (ptr + 4))); - break; - } - } - if (!result.is_err) { - *ret = result.val.ok; - return 1; - } else { - *err = result.val.err; - return 0; - } -} - -bool wasi_filesystem_0_2_0_rc_2023_10_18_types_method_descriptor_readlink_at(wasi_filesystem_0_2_0_rc_2023_10_18_types_borrow_descriptor_t self, bindings_string_t *path, bindings_string_t *ret, wasi_filesystem_0_2_0_rc_2023_10_18_types_error_code_t *err) { - __attribute__((__aligned__(4))) - uint8_t ret_area[12]; - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_filesystem_0_2_0_rc_2023_10_18_types_method_descriptor_readlink_at((self).__handle, (int32_t) (*path).ptr, (int32_t) (*path).len, ptr); - wasi_filesystem_0_2_0_rc_2023_10_18_types_result_string_error_code_t result; - switch ((int32_t) (*((uint8_t*) (ptr + 0)))) { - case 0: { - result.is_err = false; - result.val.ok = (bindings_string_t) { (uint8_t*)(*((int32_t*) (ptr + 4))), (size_t)(*((int32_t*) (ptr + 8))) }; - break; - } - case 1: { - result.is_err = true; - result.val.err = (int32_t) (*((uint8_t*) (ptr + 4))); - break; - } - } - if (!result.is_err) { - *ret = result.val.ok; - return 1; - } else { - *err = result.val.err; - return 0; - } -} - -bool wasi_filesystem_0_2_0_rc_2023_10_18_types_method_descriptor_remove_directory_at(wasi_filesystem_0_2_0_rc_2023_10_18_types_borrow_descriptor_t self, bindings_string_t *path, wasi_filesystem_0_2_0_rc_2023_10_18_types_error_code_t *err) { - __attribute__((__aligned__(1))) - uint8_t ret_area[2]; - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_filesystem_0_2_0_rc_2023_10_18_types_method_descriptor_remove_directory_at((self).__handle, (int32_t) (*path).ptr, (int32_t) (*path).len, ptr); - wasi_filesystem_0_2_0_rc_2023_10_18_types_result_void_error_code_t result; - switch ((int32_t) (*((uint8_t*) (ptr + 0)))) { - case 0: { - result.is_err = false; - break; - } - case 1: { - result.is_err = true; - result.val.err = (int32_t) (*((uint8_t*) (ptr + 1))); - break; - } - } - if (!result.is_err) { - return 1; - } else { - *err = result.val.err; - return 0; - } -} - -bool wasi_filesystem_0_2_0_rc_2023_10_18_types_method_descriptor_rename_at(wasi_filesystem_0_2_0_rc_2023_10_18_types_borrow_descriptor_t self, bindings_string_t *old_path, wasi_filesystem_0_2_0_rc_2023_10_18_types_borrow_descriptor_t new_descriptor, bindings_string_t *new_path, wasi_filesystem_0_2_0_rc_2023_10_18_types_error_code_t *err) { - __attribute__((__aligned__(1))) - uint8_t ret_area[2]; - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_filesystem_0_2_0_rc_2023_10_18_types_method_descriptor_rename_at((self).__handle, (int32_t) (*old_path).ptr, (int32_t) (*old_path).len, (new_descriptor).__handle, (int32_t) (*new_path).ptr, (int32_t) (*new_path).len, ptr); - wasi_filesystem_0_2_0_rc_2023_10_18_types_result_void_error_code_t result; - switch ((int32_t) (*((uint8_t*) (ptr + 0)))) { - case 0: { - result.is_err = false; - break; - } - case 1: { - result.is_err = true; - result.val.err = (int32_t) (*((uint8_t*) (ptr + 1))); - break; - } - } - if (!result.is_err) { - return 1; - } else { - *err = result.val.err; - return 0; - } -} - -bool wasi_filesystem_0_2_0_rc_2023_10_18_types_method_descriptor_symlink_at(wasi_filesystem_0_2_0_rc_2023_10_18_types_borrow_descriptor_t self, bindings_string_t *old_path, bindings_string_t *new_path, wasi_filesystem_0_2_0_rc_2023_10_18_types_error_code_t *err) { - __attribute__((__aligned__(1))) - uint8_t ret_area[2]; - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_filesystem_0_2_0_rc_2023_10_18_types_method_descriptor_symlink_at((self).__handle, (int32_t) (*old_path).ptr, (int32_t) (*old_path).len, (int32_t) (*new_path).ptr, (int32_t) (*new_path).len, ptr); - wasi_filesystem_0_2_0_rc_2023_10_18_types_result_void_error_code_t result; - switch ((int32_t) (*((uint8_t*) (ptr + 0)))) { - case 0: { - result.is_err = false; - break; - } - case 1: { - result.is_err = true; - result.val.err = (int32_t) (*((uint8_t*) (ptr + 1))); - break; - } - } - if (!result.is_err) { - return 1; - } else { - *err = result.val.err; - return 0; - } -} - -bool wasi_filesystem_0_2_0_rc_2023_10_18_types_method_descriptor_access_at(wasi_filesystem_0_2_0_rc_2023_10_18_types_borrow_descriptor_t self, wasi_filesystem_0_2_0_rc_2023_10_18_types_path_flags_t path_flags, bindings_string_t *path, wasi_filesystem_0_2_0_rc_2023_10_18_types_access_type_t *type, wasi_filesystem_0_2_0_rc_2023_10_18_types_error_code_t *err) { - __attribute__((__aligned__(1))) - uint8_t ret_area[2]; - int32_t variant; - int32_t variant1; - switch ((int32_t) (*type).tag) { - case 0: { - const wasi_filesystem_0_2_0_rc_2023_10_18_types_modes_t *payload = &(*type).val.access; - variant = 0; - variant1 = *payload; - break; - } - case 1: { - variant = 1; - variant1 = 0; - break; - } - } - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_filesystem_0_2_0_rc_2023_10_18_types_method_descriptor_access_at((self).__handle, path_flags, (int32_t) (*path).ptr, (int32_t) (*path).len, variant, variant1, ptr); - wasi_filesystem_0_2_0_rc_2023_10_18_types_result_void_error_code_t result; - switch ((int32_t) (*((uint8_t*) (ptr + 0)))) { - case 0: { - result.is_err = false; - break; - } - case 1: { - result.is_err = true; - result.val.err = (int32_t) (*((uint8_t*) (ptr + 1))); - break; - } - } - if (!result.is_err) { - return 1; - } else { - *err = result.val.err; - return 0; - } -} - -bool wasi_filesystem_0_2_0_rc_2023_10_18_types_method_descriptor_unlink_file_at(wasi_filesystem_0_2_0_rc_2023_10_18_types_borrow_descriptor_t self, bindings_string_t *path, wasi_filesystem_0_2_0_rc_2023_10_18_types_error_code_t *err) { - __attribute__((__aligned__(1))) - uint8_t ret_area[2]; - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_filesystem_0_2_0_rc_2023_10_18_types_method_descriptor_unlink_file_at((self).__handle, (int32_t) (*path).ptr, (int32_t) (*path).len, ptr); - wasi_filesystem_0_2_0_rc_2023_10_18_types_result_void_error_code_t result; - switch ((int32_t) (*((uint8_t*) (ptr + 0)))) { - case 0: { - result.is_err = false; - break; - } - case 1: { - result.is_err = true; - result.val.err = (int32_t) (*((uint8_t*) (ptr + 1))); - break; - } - } - if (!result.is_err) { - return 1; - } else { - *err = result.val.err; - return 0; - } -} - -bool wasi_filesystem_0_2_0_rc_2023_10_18_types_method_descriptor_change_file_permissions_at(wasi_filesystem_0_2_0_rc_2023_10_18_types_borrow_descriptor_t self, wasi_filesystem_0_2_0_rc_2023_10_18_types_path_flags_t path_flags, bindings_string_t *path, wasi_filesystem_0_2_0_rc_2023_10_18_types_modes_t modes, wasi_filesystem_0_2_0_rc_2023_10_18_types_error_code_t *err) { - __attribute__((__aligned__(1))) - uint8_t ret_area[2]; - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_filesystem_0_2_0_rc_2023_10_18_types_method_descriptor_change_file_permissions_at((self).__handle, path_flags, (int32_t) (*path).ptr, (int32_t) (*path).len, modes, ptr); - wasi_filesystem_0_2_0_rc_2023_10_18_types_result_void_error_code_t result; - switch ((int32_t) (*((uint8_t*) (ptr + 0)))) { - case 0: { - result.is_err = false; - break; - } - case 1: { - result.is_err = true; - result.val.err = (int32_t) (*((uint8_t*) (ptr + 1))); - break; - } - } - if (!result.is_err) { - return 1; - } else { - *err = result.val.err; - return 0; - } -} - -bool wasi_filesystem_0_2_0_rc_2023_10_18_types_method_descriptor_change_directory_permissions_at(wasi_filesystem_0_2_0_rc_2023_10_18_types_borrow_descriptor_t self, wasi_filesystem_0_2_0_rc_2023_10_18_types_path_flags_t path_flags, bindings_string_t *path, wasi_filesystem_0_2_0_rc_2023_10_18_types_modes_t modes, wasi_filesystem_0_2_0_rc_2023_10_18_types_error_code_t *err) { - __attribute__((__aligned__(1))) - uint8_t ret_area[2]; - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_filesystem_0_2_0_rc_2023_10_18_types_method_descriptor_change_directory_permissions_at((self).__handle, path_flags, (int32_t) (*path).ptr, (int32_t) (*path).len, modes, ptr); - wasi_filesystem_0_2_0_rc_2023_10_18_types_result_void_error_code_t result; - switch ((int32_t) (*((uint8_t*) (ptr + 0)))) { - case 0: { - result.is_err = false; - break; - } - case 1: { - result.is_err = true; - result.val.err = (int32_t) (*((uint8_t*) (ptr + 1))); - break; - } - } - if (!result.is_err) { - return 1; - } else { - *err = result.val.err; - return 0; - } -} - -bool wasi_filesystem_0_2_0_rc_2023_10_18_types_method_descriptor_lock_shared(wasi_filesystem_0_2_0_rc_2023_10_18_types_borrow_descriptor_t self, wasi_filesystem_0_2_0_rc_2023_10_18_types_error_code_t *err) { - __attribute__((__aligned__(1))) - uint8_t ret_area[2]; - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_filesystem_0_2_0_rc_2023_10_18_types_method_descriptor_lock_shared((self).__handle, ptr); - wasi_filesystem_0_2_0_rc_2023_10_18_types_result_void_error_code_t result; - switch ((int32_t) (*((uint8_t*) (ptr + 0)))) { - case 0: { - result.is_err = false; - break; - } - case 1: { - result.is_err = true; - result.val.err = (int32_t) (*((uint8_t*) (ptr + 1))); - break; - } - } - if (!result.is_err) { - return 1; - } else { - *err = result.val.err; - return 0; - } -} - -bool wasi_filesystem_0_2_0_rc_2023_10_18_types_method_descriptor_lock_exclusive(wasi_filesystem_0_2_0_rc_2023_10_18_types_borrow_descriptor_t self, wasi_filesystem_0_2_0_rc_2023_10_18_types_error_code_t *err) { - __attribute__((__aligned__(1))) - uint8_t ret_area[2]; - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_filesystem_0_2_0_rc_2023_10_18_types_method_descriptor_lock_exclusive((self).__handle, ptr); - wasi_filesystem_0_2_0_rc_2023_10_18_types_result_void_error_code_t result; - switch ((int32_t) (*((uint8_t*) (ptr + 0)))) { - case 0: { - result.is_err = false; - break; - } - case 1: { - result.is_err = true; - result.val.err = (int32_t) (*((uint8_t*) (ptr + 1))); - break; - } - } - if (!result.is_err) { - return 1; - } else { - *err = result.val.err; - return 0; - } -} - -bool wasi_filesystem_0_2_0_rc_2023_10_18_types_method_descriptor_try_lock_shared(wasi_filesystem_0_2_0_rc_2023_10_18_types_borrow_descriptor_t self, wasi_filesystem_0_2_0_rc_2023_10_18_types_error_code_t *err) { - __attribute__((__aligned__(1))) - uint8_t ret_area[2]; - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_filesystem_0_2_0_rc_2023_10_18_types_method_descriptor_try_lock_shared((self).__handle, ptr); - wasi_filesystem_0_2_0_rc_2023_10_18_types_result_void_error_code_t result; - switch ((int32_t) (*((uint8_t*) (ptr + 0)))) { - case 0: { - result.is_err = false; - break; - } - case 1: { - result.is_err = true; - result.val.err = (int32_t) (*((uint8_t*) (ptr + 1))); - break; - } - } - if (!result.is_err) { - return 1; - } else { - *err = result.val.err; - return 0; - } -} - -bool wasi_filesystem_0_2_0_rc_2023_10_18_types_method_descriptor_try_lock_exclusive(wasi_filesystem_0_2_0_rc_2023_10_18_types_borrow_descriptor_t self, wasi_filesystem_0_2_0_rc_2023_10_18_types_error_code_t *err) { - __attribute__((__aligned__(1))) - uint8_t ret_area[2]; - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_filesystem_0_2_0_rc_2023_10_18_types_method_descriptor_try_lock_exclusive((self).__handle, ptr); - wasi_filesystem_0_2_0_rc_2023_10_18_types_result_void_error_code_t result; - switch ((int32_t) (*((uint8_t*) (ptr + 0)))) { - case 0: { - result.is_err = false; - break; - } - case 1: { - result.is_err = true; - result.val.err = (int32_t) (*((uint8_t*) (ptr + 1))); - break; - } - } - if (!result.is_err) { - return 1; - } else { - *err = result.val.err; - return 0; - } -} - -bool wasi_filesystem_0_2_0_rc_2023_10_18_types_method_descriptor_unlock(wasi_filesystem_0_2_0_rc_2023_10_18_types_borrow_descriptor_t self, wasi_filesystem_0_2_0_rc_2023_10_18_types_error_code_t *err) { - __attribute__((__aligned__(1))) - uint8_t ret_area[2]; - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_filesystem_0_2_0_rc_2023_10_18_types_method_descriptor_unlock((self).__handle, ptr); - wasi_filesystem_0_2_0_rc_2023_10_18_types_result_void_error_code_t result; - switch ((int32_t) (*((uint8_t*) (ptr + 0)))) { - case 0: { - result.is_err = false; - break; - } - case 1: { - result.is_err = true; - result.val.err = (int32_t) (*((uint8_t*) (ptr + 1))); - break; - } - } - if (!result.is_err) { - return 1; - } else { - *err = result.val.err; - return 0; - } -} - -bool wasi_filesystem_0_2_0_rc_2023_10_18_types_method_descriptor_is_same_object(wasi_filesystem_0_2_0_rc_2023_10_18_types_borrow_descriptor_t self, wasi_filesystem_0_2_0_rc_2023_10_18_types_borrow_descriptor_t other) { - int32_t ret = __wasm_import_wasi_filesystem_0_2_0_rc_2023_10_18_types_method_descriptor_is_same_object((self).__handle, (other).__handle); - return ret; -} - -bool wasi_filesystem_0_2_0_rc_2023_10_18_types_method_descriptor_metadata_hash(wasi_filesystem_0_2_0_rc_2023_10_18_types_borrow_descriptor_t self, wasi_filesystem_0_2_0_rc_2023_10_18_types_metadata_hash_value_t *ret, wasi_filesystem_0_2_0_rc_2023_10_18_types_error_code_t *err) { - __attribute__((__aligned__(8))) - uint8_t ret_area[24]; - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_filesystem_0_2_0_rc_2023_10_18_types_method_descriptor_metadata_hash((self).__handle, ptr); - wasi_filesystem_0_2_0_rc_2023_10_18_types_result_metadata_hash_value_error_code_t result; - switch ((int32_t) (*((uint8_t*) (ptr + 0)))) { - case 0: { - result.is_err = false; - result.val.ok = (wasi_filesystem_0_2_0_rc_2023_10_18_types_metadata_hash_value_t) { - (uint64_t) (*((int64_t*) (ptr + 8))), - (uint64_t) (*((int64_t*) (ptr + 16))), - }; - break; - } - case 1: { - result.is_err = true; - result.val.err = (int32_t) (*((uint8_t*) (ptr + 8))); - break; - } - } - if (!result.is_err) { - *ret = result.val.ok; - return 1; - } else { - *err = result.val.err; - return 0; - } -} - -bool wasi_filesystem_0_2_0_rc_2023_10_18_types_method_descriptor_metadata_hash_at(wasi_filesystem_0_2_0_rc_2023_10_18_types_borrow_descriptor_t self, wasi_filesystem_0_2_0_rc_2023_10_18_types_path_flags_t path_flags, bindings_string_t *path, wasi_filesystem_0_2_0_rc_2023_10_18_types_metadata_hash_value_t *ret, wasi_filesystem_0_2_0_rc_2023_10_18_types_error_code_t *err) { - __attribute__((__aligned__(8))) - uint8_t ret_area[24]; - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_filesystem_0_2_0_rc_2023_10_18_types_method_descriptor_metadata_hash_at((self).__handle, path_flags, (int32_t) (*path).ptr, (int32_t) (*path).len, ptr); - wasi_filesystem_0_2_0_rc_2023_10_18_types_result_metadata_hash_value_error_code_t result; - switch ((int32_t) (*((uint8_t*) (ptr + 0)))) { - case 0: { - result.is_err = false; - result.val.ok = (wasi_filesystem_0_2_0_rc_2023_10_18_types_metadata_hash_value_t) { - (uint64_t) (*((int64_t*) (ptr + 8))), - (uint64_t) (*((int64_t*) (ptr + 16))), - }; - break; - } - case 1: { - result.is_err = true; - result.val.err = (int32_t) (*((uint8_t*) (ptr + 8))); - break; - } - } - if (!result.is_err) { - *ret = result.val.ok; - return 1; - } else { - *err = result.val.err; - return 0; - } -} - -bool wasi_filesystem_0_2_0_rc_2023_10_18_types_method_directory_entry_stream_read_directory_entry(wasi_filesystem_0_2_0_rc_2023_10_18_types_borrow_directory_entry_stream_t self, wasi_filesystem_0_2_0_rc_2023_10_18_types_option_directory_entry_t *ret, wasi_filesystem_0_2_0_rc_2023_10_18_types_error_code_t *err) { - __attribute__((__aligned__(4))) - uint8_t ret_area[20]; - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_filesystem_0_2_0_rc_2023_10_18_types_method_directory_entry_stream_read_directory_entry((self).__handle, ptr); - wasi_filesystem_0_2_0_rc_2023_10_18_types_result_option_directory_entry_error_code_t result; - switch ((int32_t) (*((uint8_t*) (ptr + 0)))) { - case 0: { - result.is_err = false; - wasi_filesystem_0_2_0_rc_2023_10_18_types_option_directory_entry_t option; - switch ((int32_t) (*((uint8_t*) (ptr + 4)))) { - case 0: { - option.is_some = false; - break; - } - case 1: { - option.is_some = true; - option.val = (wasi_filesystem_0_2_0_rc_2023_10_18_types_directory_entry_t) { - (int32_t) (*((uint8_t*) (ptr + 8))), - (bindings_string_t) { (uint8_t*)(*((int32_t*) (ptr + 12))), (size_t)(*((int32_t*) (ptr + 16))) }, - }; - break; - } - } - - result.val.ok = option; - break; - } - case 1: { - result.is_err = true; - result.val.err = (int32_t) (*((uint8_t*) (ptr + 4))); - break; - } - } - if (!result.is_err) { - *ret = result.val.ok; - return 1; - } else { - *err = result.val.err; - return 0; - } -} - -bool wasi_filesystem_0_2_0_rc_2023_10_18_types_filesystem_error_code(wasi_filesystem_0_2_0_rc_2023_10_18_types_borrow_error_t err_, wasi_filesystem_0_2_0_rc_2023_10_18_types_error_code_t *ret) { - __attribute__((__aligned__(1))) - uint8_t ret_area[2]; - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_filesystem_0_2_0_rc_2023_10_18_types_filesystem_error_code((err_).__handle, ptr); - wasi_filesystem_0_2_0_rc_2023_10_18_types_option_error_code_t option; - switch ((int32_t) (*((uint8_t*) (ptr + 0)))) { - case 0: { - option.is_some = false; - break; - } - case 1: { - option.is_some = true; - option.val = (int32_t) (*((uint8_t*) (ptr + 1))); - break; - } - } - *ret = option.val; - return option.is_some; -} - -void wasi_filesystem_0_2_0_rc_2023_10_18_preopens_get_directories(wasi_filesystem_0_2_0_rc_2023_10_18_preopens_list_tuple2_own_descriptor_string_t *ret) { - __attribute__((__aligned__(4))) - uint8_t ret_area[8]; - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_filesystem_0_2_0_rc_2023_10_18_preopens_get_directories(ptr); - *ret = (wasi_filesystem_0_2_0_rc_2023_10_18_preopens_list_tuple2_own_descriptor_string_t) { (wasi_filesystem_0_2_0_rc_2023_10_18_preopens_tuple2_own_descriptor_string_t*)(*((int32_t*) (ptr + 0))), (size_t)(*((int32_t*) (ptr + 4))) }; -} - -wasi_sockets_0_2_0_rc_2023_10_18_instance_network_own_network_t wasi_sockets_0_2_0_rc_2023_10_18_instance_network_instance_network(void) { - int32_t ret = __wasm_import_wasi_sockets_0_2_0_rc_2023_10_18_instance_network_instance_network(); - return (wasi_sockets_0_2_0_rc_2023_10_18_instance_network_own_network_t) { ret }; -} - -bool wasi_sockets_0_2_0_rc_2023_10_18_ip_name_lookup_resolve_addresses(wasi_sockets_0_2_0_rc_2023_10_18_ip_name_lookup_borrow_network_t network, bindings_string_t *name, wasi_sockets_0_2_0_rc_2023_10_18_ip_name_lookup_ip_address_family_t *maybe_address_family, bool include_unavailable, wasi_sockets_0_2_0_rc_2023_10_18_ip_name_lookup_own_resolve_address_stream_t *ret, wasi_sockets_0_2_0_rc_2023_10_18_ip_name_lookup_error_code_t *err) { - __attribute__((__aligned__(4))) - uint8_t ret_area[8]; - wasi_sockets_0_2_0_rc_2023_10_18_ip_name_lookup_option_ip_address_family_t address_family; - address_family.is_some = maybe_address_family != NULL;if (maybe_address_family) { - address_family.val = *maybe_address_family; - } - int32_t option; - int32_t option1; - if ((address_family).is_some) { - const wasi_sockets_0_2_0_rc_2023_10_18_ip_name_lookup_ip_address_family_t *payload0 = &(address_family).val; - option = 1; - option1 = (int32_t) *payload0; - } else { - option = 0; - option1 = 0; - } - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_sockets_0_2_0_rc_2023_10_18_ip_name_lookup_resolve_addresses((network).__handle, (int32_t) (*name).ptr, (int32_t) (*name).len, option, option1, include_unavailable, ptr); - wasi_sockets_0_2_0_rc_2023_10_18_ip_name_lookup_result_own_resolve_address_stream_error_code_t result; - switch ((int32_t) (*((uint8_t*) (ptr + 0)))) { - case 0: { - result.is_err = false; - result.val.ok = (wasi_sockets_0_2_0_rc_2023_10_18_ip_name_lookup_own_resolve_address_stream_t) { *((int32_t*) (ptr + 4)) }; - break; - } - case 1: { - result.is_err = true; - result.val.err = (int32_t) (*((uint8_t*) (ptr + 4))); - break; - } - } - if (!result.is_err) { - *ret = result.val.ok; - return 1; - } else { - *err = result.val.err; - return 0; - } -} - -bool wasi_sockets_0_2_0_rc_2023_10_18_ip_name_lookup_method_resolve_address_stream_resolve_next_address(wasi_sockets_0_2_0_rc_2023_10_18_ip_name_lookup_borrow_resolve_address_stream_t self, wasi_sockets_0_2_0_rc_2023_10_18_ip_name_lookup_option_ip_address_t *ret, wasi_sockets_0_2_0_rc_2023_10_18_ip_name_lookup_error_code_t *err) { - __attribute__((__aligned__(2))) - uint8_t ret_area[22]; - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_sockets_0_2_0_rc_2023_10_18_ip_name_lookup_method_resolve_address_stream_resolve_next_address((self).__handle, ptr); - wasi_sockets_0_2_0_rc_2023_10_18_ip_name_lookup_result_option_ip_address_error_code_t result; - switch ((int32_t) (*((uint8_t*) (ptr + 0)))) { - case 0: { - result.is_err = false; - wasi_sockets_0_2_0_rc_2023_10_18_ip_name_lookup_option_ip_address_t option; - switch ((int32_t) (*((uint8_t*) (ptr + 2)))) { - case 0: { - option.is_some = false; - break; - } - case 1: { - option.is_some = true; - wasi_sockets_0_2_0_rc_2023_10_18_network_ip_address_t variant; - variant.tag = (int32_t) (*((uint8_t*) (ptr + 4))); - switch ((int32_t) variant.tag) { - case 0: { - variant.val.ipv4 = (wasi_sockets_0_2_0_rc_2023_10_18_network_ipv4_address_t) { - (uint8_t) ((int32_t) (*((uint8_t*) (ptr + 6)))), - (uint8_t) ((int32_t) (*((uint8_t*) (ptr + 7)))), - (uint8_t) ((int32_t) (*((uint8_t*) (ptr + 8)))), - (uint8_t) ((int32_t) (*((uint8_t*) (ptr + 9)))), - }; - break; - } - case 1: { - variant.val.ipv6 = (wasi_sockets_0_2_0_rc_2023_10_18_network_ipv6_address_t) { - (uint16_t) ((int32_t) (*((uint16_t*) (ptr + 6)))), - (uint16_t) ((int32_t) (*((uint16_t*) (ptr + 8)))), - (uint16_t) ((int32_t) (*((uint16_t*) (ptr + 10)))), - (uint16_t) ((int32_t) (*((uint16_t*) (ptr + 12)))), - (uint16_t) ((int32_t) (*((uint16_t*) (ptr + 14)))), - (uint16_t) ((int32_t) (*((uint16_t*) (ptr + 16)))), - (uint16_t) ((int32_t) (*((uint16_t*) (ptr + 18)))), - (uint16_t) ((int32_t) (*((uint16_t*) (ptr + 20)))), - }; - break; - } - } - - option.val = variant; - break; - } - } - - result.val.ok = option; - break; - } - case 1: { - result.is_err = true; - result.val.err = (int32_t) (*((uint8_t*) (ptr + 2))); - break; - } - } - if (!result.is_err) { - *ret = result.val.ok; - return 1; - } else { - *err = result.val.err; - return 0; - } -} - -wasi_sockets_0_2_0_rc_2023_10_18_ip_name_lookup_own_pollable_t wasi_sockets_0_2_0_rc_2023_10_18_ip_name_lookup_method_resolve_address_stream_subscribe(wasi_sockets_0_2_0_rc_2023_10_18_ip_name_lookup_borrow_resolve_address_stream_t self) { - int32_t ret = __wasm_import_wasi_sockets_0_2_0_rc_2023_10_18_ip_name_lookup_method_resolve_address_stream_subscribe((self).__handle); - return (wasi_sockets_0_2_0_rc_2023_10_18_ip_name_lookup_own_pollable_t) { ret }; -} - -bool wasi_sockets_0_2_0_rc_2023_10_18_tcp_method_tcp_socket_start_bind(wasi_sockets_0_2_0_rc_2023_10_18_tcp_borrow_tcp_socket_t self, wasi_sockets_0_2_0_rc_2023_10_18_tcp_borrow_network_t network, wasi_sockets_0_2_0_rc_2023_10_18_tcp_ip_socket_address_t *local_address, wasi_sockets_0_2_0_rc_2023_10_18_tcp_error_code_t *err) { - __attribute__((__aligned__(1))) - uint8_t ret_area[2]; - int32_t variant; - int32_t variant1; - int32_t variant2; - int32_t variant3; - int32_t variant4; - int32_t variant5; - int32_t variant6; - int32_t variant7; - int32_t variant8; - int32_t variant9; - int32_t variant10; - int32_t variant11; - switch ((int32_t) (*local_address).tag) { - case 0: { - const wasi_sockets_0_2_0_rc_2023_10_18_network_ipv4_socket_address_t *payload = &(*local_address).val.ipv4; - variant = 0; - variant1 = (int32_t) ((*payload).port); - variant2 = (int32_t) (((*payload).address).f0); - variant3 = (int32_t) (((*payload).address).f1); - variant4 = (int32_t) (((*payload).address).f2); - variant5 = (int32_t) (((*payload).address).f3); - variant6 = 0; - variant7 = 0; - variant8 = 0; - variant9 = 0; - variant10 = 0; - variant11 = 0; - break; - } - case 1: { - const wasi_sockets_0_2_0_rc_2023_10_18_network_ipv6_socket_address_t *payload0 = &(*local_address).val.ipv6; - variant = 1; - variant1 = (int32_t) ((*payload0).port); - variant2 = (int32_t) ((*payload0).flow_info); - variant3 = (int32_t) (((*payload0).address).f0); - variant4 = (int32_t) (((*payload0).address).f1); - variant5 = (int32_t) (((*payload0).address).f2); - variant6 = (int32_t) (((*payload0).address).f3); - variant7 = (int32_t) (((*payload0).address).f4); - variant8 = (int32_t) (((*payload0).address).f5); - variant9 = (int32_t) (((*payload0).address).f6); - variant10 = (int32_t) (((*payload0).address).f7); - variant11 = (int32_t) ((*payload0).scope_id); - break; - } - } - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_sockets_0_2_0_rc_2023_10_18_tcp_method_tcp_socket_start_bind((self).__handle, (network).__handle, variant, variant1, variant2, variant3, variant4, variant5, variant6, variant7, variant8, variant9, variant10, variant11, ptr); - wasi_sockets_0_2_0_rc_2023_10_18_tcp_result_void_error_code_t result; - switch ((int32_t) (*((uint8_t*) (ptr + 0)))) { - case 0: { - result.is_err = false; - break; - } - case 1: { - result.is_err = true; - result.val.err = (int32_t) (*((uint8_t*) (ptr + 1))); - break; - } - } - if (!result.is_err) { - return 1; - } else { - *err = result.val.err; - return 0; - } -} - -bool wasi_sockets_0_2_0_rc_2023_10_18_tcp_method_tcp_socket_finish_bind(wasi_sockets_0_2_0_rc_2023_10_18_tcp_borrow_tcp_socket_t self, wasi_sockets_0_2_0_rc_2023_10_18_tcp_error_code_t *err) { - __attribute__((__aligned__(1))) - uint8_t ret_area[2]; - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_sockets_0_2_0_rc_2023_10_18_tcp_method_tcp_socket_finish_bind((self).__handle, ptr); - wasi_sockets_0_2_0_rc_2023_10_18_tcp_result_void_error_code_t result; - switch ((int32_t) (*((uint8_t*) (ptr + 0)))) { - case 0: { - result.is_err = false; - break; - } - case 1: { - result.is_err = true; - result.val.err = (int32_t) (*((uint8_t*) (ptr + 1))); - break; - } - } - if (!result.is_err) { - return 1; - } else { - *err = result.val.err; - return 0; - } -} - -bool wasi_sockets_0_2_0_rc_2023_10_18_tcp_method_tcp_socket_start_connect(wasi_sockets_0_2_0_rc_2023_10_18_tcp_borrow_tcp_socket_t self, wasi_sockets_0_2_0_rc_2023_10_18_tcp_borrow_network_t network, wasi_sockets_0_2_0_rc_2023_10_18_tcp_ip_socket_address_t *remote_address, wasi_sockets_0_2_0_rc_2023_10_18_tcp_error_code_t *err) { - __attribute__((__aligned__(1))) - uint8_t ret_area[2]; - int32_t variant; - int32_t variant1; - int32_t variant2; - int32_t variant3; - int32_t variant4; - int32_t variant5; - int32_t variant6; - int32_t variant7; - int32_t variant8; - int32_t variant9; - int32_t variant10; - int32_t variant11; - switch ((int32_t) (*remote_address).tag) { - case 0: { - const wasi_sockets_0_2_0_rc_2023_10_18_network_ipv4_socket_address_t *payload = &(*remote_address).val.ipv4; - variant = 0; - variant1 = (int32_t) ((*payload).port); - variant2 = (int32_t) (((*payload).address).f0); - variant3 = (int32_t) (((*payload).address).f1); - variant4 = (int32_t) (((*payload).address).f2); - variant5 = (int32_t) (((*payload).address).f3); - variant6 = 0; - variant7 = 0; - variant8 = 0; - variant9 = 0; - variant10 = 0; - variant11 = 0; - break; - } - case 1: { - const wasi_sockets_0_2_0_rc_2023_10_18_network_ipv6_socket_address_t *payload0 = &(*remote_address).val.ipv6; - variant = 1; - variant1 = (int32_t) ((*payload0).port); - variant2 = (int32_t) ((*payload0).flow_info); - variant3 = (int32_t) (((*payload0).address).f0); - variant4 = (int32_t) (((*payload0).address).f1); - variant5 = (int32_t) (((*payload0).address).f2); - variant6 = (int32_t) (((*payload0).address).f3); - variant7 = (int32_t) (((*payload0).address).f4); - variant8 = (int32_t) (((*payload0).address).f5); - variant9 = (int32_t) (((*payload0).address).f6); - variant10 = (int32_t) (((*payload0).address).f7); - variant11 = (int32_t) ((*payload0).scope_id); - break; - } - } - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_sockets_0_2_0_rc_2023_10_18_tcp_method_tcp_socket_start_connect((self).__handle, (network).__handle, variant, variant1, variant2, variant3, variant4, variant5, variant6, variant7, variant8, variant9, variant10, variant11, ptr); - wasi_sockets_0_2_0_rc_2023_10_18_tcp_result_void_error_code_t result; - switch ((int32_t) (*((uint8_t*) (ptr + 0)))) { - case 0: { - result.is_err = false; - break; - } - case 1: { - result.is_err = true; - result.val.err = (int32_t) (*((uint8_t*) (ptr + 1))); - break; - } - } - if (!result.is_err) { - return 1; - } else { - *err = result.val.err; - return 0; - } -} - -bool wasi_sockets_0_2_0_rc_2023_10_18_tcp_method_tcp_socket_finish_connect(wasi_sockets_0_2_0_rc_2023_10_18_tcp_borrow_tcp_socket_t self, wasi_sockets_0_2_0_rc_2023_10_18_tcp_tuple2_own_input_stream_own_output_stream_t *ret, wasi_sockets_0_2_0_rc_2023_10_18_tcp_error_code_t *err) { - __attribute__((__aligned__(4))) - uint8_t ret_area[12]; - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_sockets_0_2_0_rc_2023_10_18_tcp_method_tcp_socket_finish_connect((self).__handle, ptr); - wasi_sockets_0_2_0_rc_2023_10_18_tcp_result_tuple2_own_input_stream_own_output_stream_error_code_t result; - switch ((int32_t) (*((uint8_t*) (ptr + 0)))) { - case 0: { - result.is_err = false; - result.val.ok = (wasi_sockets_0_2_0_rc_2023_10_18_tcp_tuple2_own_input_stream_own_output_stream_t) { - (wasi_sockets_0_2_0_rc_2023_10_18_tcp_own_input_stream_t) { *((int32_t*) (ptr + 4)) }, - (wasi_sockets_0_2_0_rc_2023_10_18_tcp_own_output_stream_t) { *((int32_t*) (ptr + 8)) }, - }; - break; - } - case 1: { - result.is_err = true; - result.val.err = (int32_t) (*((uint8_t*) (ptr + 4))); - break; - } - } - if (!result.is_err) { - *ret = result.val.ok; - return 1; - } else { - *err = result.val.err; - return 0; - } -} - -bool wasi_sockets_0_2_0_rc_2023_10_18_tcp_method_tcp_socket_start_listen(wasi_sockets_0_2_0_rc_2023_10_18_tcp_borrow_tcp_socket_t self, wasi_sockets_0_2_0_rc_2023_10_18_tcp_error_code_t *err) { - __attribute__((__aligned__(1))) - uint8_t ret_area[2]; - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_sockets_0_2_0_rc_2023_10_18_tcp_method_tcp_socket_start_listen((self).__handle, ptr); - wasi_sockets_0_2_0_rc_2023_10_18_tcp_result_void_error_code_t result; - switch ((int32_t) (*((uint8_t*) (ptr + 0)))) { - case 0: { - result.is_err = false; - break; - } - case 1: { - result.is_err = true; - result.val.err = (int32_t) (*((uint8_t*) (ptr + 1))); - break; - } - } - if (!result.is_err) { - return 1; - } else { - *err = result.val.err; - return 0; - } -} - -bool wasi_sockets_0_2_0_rc_2023_10_18_tcp_method_tcp_socket_finish_listen(wasi_sockets_0_2_0_rc_2023_10_18_tcp_borrow_tcp_socket_t self, wasi_sockets_0_2_0_rc_2023_10_18_tcp_error_code_t *err) { - __attribute__((__aligned__(1))) - uint8_t ret_area[2]; - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_sockets_0_2_0_rc_2023_10_18_tcp_method_tcp_socket_finish_listen((self).__handle, ptr); - wasi_sockets_0_2_0_rc_2023_10_18_tcp_result_void_error_code_t result; - switch ((int32_t) (*((uint8_t*) (ptr + 0)))) { - case 0: { - result.is_err = false; - break; - } - case 1: { - result.is_err = true; - result.val.err = (int32_t) (*((uint8_t*) (ptr + 1))); - break; - } - } - if (!result.is_err) { - return 1; - } else { - *err = result.val.err; - return 0; - } -} - -bool wasi_sockets_0_2_0_rc_2023_10_18_tcp_method_tcp_socket_accept(wasi_sockets_0_2_0_rc_2023_10_18_tcp_borrow_tcp_socket_t self, wasi_sockets_0_2_0_rc_2023_10_18_tcp_tuple3_own_tcp_socket_own_input_stream_own_output_stream_t *ret, wasi_sockets_0_2_0_rc_2023_10_18_tcp_error_code_t *err) { - __attribute__((__aligned__(4))) - uint8_t ret_area[16]; - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_sockets_0_2_0_rc_2023_10_18_tcp_method_tcp_socket_accept((self).__handle, ptr); - wasi_sockets_0_2_0_rc_2023_10_18_tcp_result_tuple3_own_tcp_socket_own_input_stream_own_output_stream_error_code_t result; - switch ((int32_t) (*((uint8_t*) (ptr + 0)))) { - case 0: { - result.is_err = false; - result.val.ok = (wasi_sockets_0_2_0_rc_2023_10_18_tcp_tuple3_own_tcp_socket_own_input_stream_own_output_stream_t) { - (wasi_sockets_0_2_0_rc_2023_10_18_tcp_own_tcp_socket_t) { *((int32_t*) (ptr + 4)) }, - (wasi_sockets_0_2_0_rc_2023_10_18_tcp_own_input_stream_t) { *((int32_t*) (ptr + 8)) }, - (wasi_sockets_0_2_0_rc_2023_10_18_tcp_own_output_stream_t) { *((int32_t*) (ptr + 12)) }, - }; - break; - } - case 1: { - result.is_err = true; - result.val.err = (int32_t) (*((uint8_t*) (ptr + 4))); - break; - } - } - if (!result.is_err) { - *ret = result.val.ok; - return 1; - } else { - *err = result.val.err; - return 0; - } -} - -bool wasi_sockets_0_2_0_rc_2023_10_18_tcp_method_tcp_socket_local_address(wasi_sockets_0_2_0_rc_2023_10_18_tcp_borrow_tcp_socket_t self, wasi_sockets_0_2_0_rc_2023_10_18_tcp_ip_socket_address_t *ret, wasi_sockets_0_2_0_rc_2023_10_18_tcp_error_code_t *err) { - __attribute__((__aligned__(4))) - uint8_t ret_area[36]; - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_sockets_0_2_0_rc_2023_10_18_tcp_method_tcp_socket_local_address((self).__handle, ptr); - wasi_sockets_0_2_0_rc_2023_10_18_tcp_result_ip_socket_address_error_code_t result; - switch ((int32_t) (*((uint8_t*) (ptr + 0)))) { - case 0: { - result.is_err = false; - wasi_sockets_0_2_0_rc_2023_10_18_network_ip_socket_address_t variant; - variant.tag = (int32_t) (*((uint8_t*) (ptr + 4))); - switch ((int32_t) variant.tag) { - case 0: { - variant.val.ipv4 = (wasi_sockets_0_2_0_rc_2023_10_18_network_ipv4_socket_address_t) { - (uint16_t) ((int32_t) (*((uint16_t*) (ptr + 8)))), - (wasi_sockets_0_2_0_rc_2023_10_18_network_ipv4_address_t) { - (uint8_t) ((int32_t) (*((uint8_t*) (ptr + 10)))), - (uint8_t) ((int32_t) (*((uint8_t*) (ptr + 11)))), - (uint8_t) ((int32_t) (*((uint8_t*) (ptr + 12)))), - (uint8_t) ((int32_t) (*((uint8_t*) (ptr + 13)))), - }, - }; - break; - } - case 1: { - variant.val.ipv6 = (wasi_sockets_0_2_0_rc_2023_10_18_network_ipv6_socket_address_t) { - (uint16_t) ((int32_t) (*((uint16_t*) (ptr + 8)))), - (uint32_t) (*((int32_t*) (ptr + 12))), - (wasi_sockets_0_2_0_rc_2023_10_18_network_ipv6_address_t) { - (uint16_t) ((int32_t) (*((uint16_t*) (ptr + 16)))), - (uint16_t) ((int32_t) (*((uint16_t*) (ptr + 18)))), - (uint16_t) ((int32_t) (*((uint16_t*) (ptr + 20)))), - (uint16_t) ((int32_t) (*((uint16_t*) (ptr + 22)))), - (uint16_t) ((int32_t) (*((uint16_t*) (ptr + 24)))), - (uint16_t) ((int32_t) (*((uint16_t*) (ptr + 26)))), - (uint16_t) ((int32_t) (*((uint16_t*) (ptr + 28)))), - (uint16_t) ((int32_t) (*((uint16_t*) (ptr + 30)))), - }, - (uint32_t) (*((int32_t*) (ptr + 32))), - }; - break; - } - } - - result.val.ok = variant; - break; - } - case 1: { - result.is_err = true; - result.val.err = (int32_t) (*((uint8_t*) (ptr + 4))); - break; - } - } - if (!result.is_err) { - *ret = result.val.ok; - return 1; - } else { - *err = result.val.err; - return 0; - } -} - -bool wasi_sockets_0_2_0_rc_2023_10_18_tcp_method_tcp_socket_remote_address(wasi_sockets_0_2_0_rc_2023_10_18_tcp_borrow_tcp_socket_t self, wasi_sockets_0_2_0_rc_2023_10_18_tcp_ip_socket_address_t *ret, wasi_sockets_0_2_0_rc_2023_10_18_tcp_error_code_t *err) { - __attribute__((__aligned__(4))) - uint8_t ret_area[36]; - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_sockets_0_2_0_rc_2023_10_18_tcp_method_tcp_socket_remote_address((self).__handle, ptr); - wasi_sockets_0_2_0_rc_2023_10_18_tcp_result_ip_socket_address_error_code_t result; - switch ((int32_t) (*((uint8_t*) (ptr + 0)))) { - case 0: { - result.is_err = false; - wasi_sockets_0_2_0_rc_2023_10_18_network_ip_socket_address_t variant; - variant.tag = (int32_t) (*((uint8_t*) (ptr + 4))); - switch ((int32_t) variant.tag) { - case 0: { - variant.val.ipv4 = (wasi_sockets_0_2_0_rc_2023_10_18_network_ipv4_socket_address_t) { - (uint16_t) ((int32_t) (*((uint16_t*) (ptr + 8)))), - (wasi_sockets_0_2_0_rc_2023_10_18_network_ipv4_address_t) { - (uint8_t) ((int32_t) (*((uint8_t*) (ptr + 10)))), - (uint8_t) ((int32_t) (*((uint8_t*) (ptr + 11)))), - (uint8_t) ((int32_t) (*((uint8_t*) (ptr + 12)))), - (uint8_t) ((int32_t) (*((uint8_t*) (ptr + 13)))), - }, - }; - break; - } - case 1: { - variant.val.ipv6 = (wasi_sockets_0_2_0_rc_2023_10_18_network_ipv6_socket_address_t) { - (uint16_t) ((int32_t) (*((uint16_t*) (ptr + 8)))), - (uint32_t) (*((int32_t*) (ptr + 12))), - (wasi_sockets_0_2_0_rc_2023_10_18_network_ipv6_address_t) { - (uint16_t) ((int32_t) (*((uint16_t*) (ptr + 16)))), - (uint16_t) ((int32_t) (*((uint16_t*) (ptr + 18)))), - (uint16_t) ((int32_t) (*((uint16_t*) (ptr + 20)))), - (uint16_t) ((int32_t) (*((uint16_t*) (ptr + 22)))), - (uint16_t) ((int32_t) (*((uint16_t*) (ptr + 24)))), - (uint16_t) ((int32_t) (*((uint16_t*) (ptr + 26)))), - (uint16_t) ((int32_t) (*((uint16_t*) (ptr + 28)))), - (uint16_t) ((int32_t) (*((uint16_t*) (ptr + 30)))), - }, - (uint32_t) (*((int32_t*) (ptr + 32))), - }; - break; - } - } - - result.val.ok = variant; - break; - } - case 1: { - result.is_err = true; - result.val.err = (int32_t) (*((uint8_t*) (ptr + 4))); - break; - } - } - if (!result.is_err) { - *ret = result.val.ok; - return 1; - } else { - *err = result.val.err; - return 0; - } -} - -wasi_sockets_0_2_0_rc_2023_10_18_tcp_ip_address_family_t wasi_sockets_0_2_0_rc_2023_10_18_tcp_method_tcp_socket_address_family(wasi_sockets_0_2_0_rc_2023_10_18_tcp_borrow_tcp_socket_t self) { - int32_t ret = __wasm_import_wasi_sockets_0_2_0_rc_2023_10_18_tcp_method_tcp_socket_address_family((self).__handle); - return ret; -} - -bool wasi_sockets_0_2_0_rc_2023_10_18_tcp_method_tcp_socket_ipv6_only(wasi_sockets_0_2_0_rc_2023_10_18_tcp_borrow_tcp_socket_t self, bool *ret, wasi_sockets_0_2_0_rc_2023_10_18_tcp_error_code_t *err) { - __attribute__((__aligned__(1))) - uint8_t ret_area[2]; - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_sockets_0_2_0_rc_2023_10_18_tcp_method_tcp_socket_ipv6_only((self).__handle, ptr); - wasi_sockets_0_2_0_rc_2023_10_18_tcp_result_bool_error_code_t result; - switch ((int32_t) (*((uint8_t*) (ptr + 0)))) { - case 0: { - result.is_err = false; - result.val.ok = (int32_t) (*((uint8_t*) (ptr + 1))); - break; - } - case 1: { - result.is_err = true; - result.val.err = (int32_t) (*((uint8_t*) (ptr + 1))); - break; - } - } - if (!result.is_err) { - *ret = result.val.ok; - return 1; - } else { - *err = result.val.err; - return 0; - } -} - -bool wasi_sockets_0_2_0_rc_2023_10_18_tcp_method_tcp_socket_set_ipv6_only(wasi_sockets_0_2_0_rc_2023_10_18_tcp_borrow_tcp_socket_t self, bool value, wasi_sockets_0_2_0_rc_2023_10_18_tcp_error_code_t *err) { - __attribute__((__aligned__(1))) - uint8_t ret_area[2]; - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_sockets_0_2_0_rc_2023_10_18_tcp_method_tcp_socket_set_ipv6_only((self).__handle, value, ptr); - wasi_sockets_0_2_0_rc_2023_10_18_tcp_result_void_error_code_t result; - switch ((int32_t) (*((uint8_t*) (ptr + 0)))) { - case 0: { - result.is_err = false; - break; - } - case 1: { - result.is_err = true; - result.val.err = (int32_t) (*((uint8_t*) (ptr + 1))); - break; - } - } - if (!result.is_err) { - return 1; - } else { - *err = result.val.err; - return 0; - } -} - -bool wasi_sockets_0_2_0_rc_2023_10_18_tcp_method_tcp_socket_set_listen_backlog_size(wasi_sockets_0_2_0_rc_2023_10_18_tcp_borrow_tcp_socket_t self, uint64_t value, wasi_sockets_0_2_0_rc_2023_10_18_tcp_error_code_t *err) { - __attribute__((__aligned__(1))) - uint8_t ret_area[2]; - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_sockets_0_2_0_rc_2023_10_18_tcp_method_tcp_socket_set_listen_backlog_size((self).__handle, (int64_t) (value), ptr); - wasi_sockets_0_2_0_rc_2023_10_18_tcp_result_void_error_code_t result; - switch ((int32_t) (*((uint8_t*) (ptr + 0)))) { - case 0: { - result.is_err = false; - break; - } - case 1: { - result.is_err = true; - result.val.err = (int32_t) (*((uint8_t*) (ptr + 1))); - break; - } - } - if (!result.is_err) { - return 1; - } else { - *err = result.val.err; - return 0; - } -} - -bool wasi_sockets_0_2_0_rc_2023_10_18_tcp_method_tcp_socket_keep_alive(wasi_sockets_0_2_0_rc_2023_10_18_tcp_borrow_tcp_socket_t self, bool *ret, wasi_sockets_0_2_0_rc_2023_10_18_tcp_error_code_t *err) { - __attribute__((__aligned__(1))) - uint8_t ret_area[2]; - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_sockets_0_2_0_rc_2023_10_18_tcp_method_tcp_socket_keep_alive((self).__handle, ptr); - wasi_sockets_0_2_0_rc_2023_10_18_tcp_result_bool_error_code_t result; - switch ((int32_t) (*((uint8_t*) (ptr + 0)))) { - case 0: { - result.is_err = false; - result.val.ok = (int32_t) (*((uint8_t*) (ptr + 1))); - break; - } - case 1: { - result.is_err = true; - result.val.err = (int32_t) (*((uint8_t*) (ptr + 1))); - break; - } - } - if (!result.is_err) { - *ret = result.val.ok; - return 1; - } else { - *err = result.val.err; - return 0; - } -} - -bool wasi_sockets_0_2_0_rc_2023_10_18_tcp_method_tcp_socket_set_keep_alive(wasi_sockets_0_2_0_rc_2023_10_18_tcp_borrow_tcp_socket_t self, bool value, wasi_sockets_0_2_0_rc_2023_10_18_tcp_error_code_t *err) { - __attribute__((__aligned__(1))) - uint8_t ret_area[2]; - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_sockets_0_2_0_rc_2023_10_18_tcp_method_tcp_socket_set_keep_alive((self).__handle, value, ptr); - wasi_sockets_0_2_0_rc_2023_10_18_tcp_result_void_error_code_t result; - switch ((int32_t) (*((uint8_t*) (ptr + 0)))) { - case 0: { - result.is_err = false; - break; - } - case 1: { - result.is_err = true; - result.val.err = (int32_t) (*((uint8_t*) (ptr + 1))); - break; - } - } - if (!result.is_err) { - return 1; - } else { - *err = result.val.err; - return 0; - } -} - -bool wasi_sockets_0_2_0_rc_2023_10_18_tcp_method_tcp_socket_no_delay(wasi_sockets_0_2_0_rc_2023_10_18_tcp_borrow_tcp_socket_t self, bool *ret, wasi_sockets_0_2_0_rc_2023_10_18_tcp_error_code_t *err) { - __attribute__((__aligned__(1))) - uint8_t ret_area[2]; - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_sockets_0_2_0_rc_2023_10_18_tcp_method_tcp_socket_no_delay((self).__handle, ptr); - wasi_sockets_0_2_0_rc_2023_10_18_tcp_result_bool_error_code_t result; - switch ((int32_t) (*((uint8_t*) (ptr + 0)))) { - case 0: { - result.is_err = false; - result.val.ok = (int32_t) (*((uint8_t*) (ptr + 1))); - break; - } - case 1: { - result.is_err = true; - result.val.err = (int32_t) (*((uint8_t*) (ptr + 1))); - break; - } - } - if (!result.is_err) { - *ret = result.val.ok; - return 1; - } else { - *err = result.val.err; - return 0; - } -} - -bool wasi_sockets_0_2_0_rc_2023_10_18_tcp_method_tcp_socket_set_no_delay(wasi_sockets_0_2_0_rc_2023_10_18_tcp_borrow_tcp_socket_t self, bool value, wasi_sockets_0_2_0_rc_2023_10_18_tcp_error_code_t *err) { - __attribute__((__aligned__(1))) - uint8_t ret_area[2]; - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_sockets_0_2_0_rc_2023_10_18_tcp_method_tcp_socket_set_no_delay((self).__handle, value, ptr); - wasi_sockets_0_2_0_rc_2023_10_18_tcp_result_void_error_code_t result; - switch ((int32_t) (*((uint8_t*) (ptr + 0)))) { - case 0: { - result.is_err = false; - break; - } - case 1: { - result.is_err = true; - result.val.err = (int32_t) (*((uint8_t*) (ptr + 1))); - break; - } - } - if (!result.is_err) { - return 1; - } else { - *err = result.val.err; - return 0; - } -} - -bool wasi_sockets_0_2_0_rc_2023_10_18_tcp_method_tcp_socket_unicast_hop_limit(wasi_sockets_0_2_0_rc_2023_10_18_tcp_borrow_tcp_socket_t self, uint8_t *ret, wasi_sockets_0_2_0_rc_2023_10_18_tcp_error_code_t *err) { - __attribute__((__aligned__(1))) - uint8_t ret_area[2]; - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_sockets_0_2_0_rc_2023_10_18_tcp_method_tcp_socket_unicast_hop_limit((self).__handle, ptr); - wasi_sockets_0_2_0_rc_2023_10_18_tcp_result_u8_error_code_t result; - switch ((int32_t) (*((uint8_t*) (ptr + 0)))) { - case 0: { - result.is_err = false; - result.val.ok = (uint8_t) ((int32_t) (*((uint8_t*) (ptr + 1)))); - break; - } - case 1: { - result.is_err = true; - result.val.err = (int32_t) (*((uint8_t*) (ptr + 1))); - break; - } - } - if (!result.is_err) { - *ret = result.val.ok; - return 1; - } else { - *err = result.val.err; - return 0; - } -} - -bool wasi_sockets_0_2_0_rc_2023_10_18_tcp_method_tcp_socket_set_unicast_hop_limit(wasi_sockets_0_2_0_rc_2023_10_18_tcp_borrow_tcp_socket_t self, uint8_t value, wasi_sockets_0_2_0_rc_2023_10_18_tcp_error_code_t *err) { - __attribute__((__aligned__(1))) - uint8_t ret_area[2]; - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_sockets_0_2_0_rc_2023_10_18_tcp_method_tcp_socket_set_unicast_hop_limit((self).__handle, (int32_t) (value), ptr); - wasi_sockets_0_2_0_rc_2023_10_18_tcp_result_void_error_code_t result; - switch ((int32_t) (*((uint8_t*) (ptr + 0)))) { - case 0: { - result.is_err = false; - break; - } - case 1: { - result.is_err = true; - result.val.err = (int32_t) (*((uint8_t*) (ptr + 1))); - break; - } - } - if (!result.is_err) { - return 1; - } else { - *err = result.val.err; - return 0; - } -} - -bool wasi_sockets_0_2_0_rc_2023_10_18_tcp_method_tcp_socket_receive_buffer_size(wasi_sockets_0_2_0_rc_2023_10_18_tcp_borrow_tcp_socket_t self, uint64_t *ret, wasi_sockets_0_2_0_rc_2023_10_18_tcp_error_code_t *err) { - __attribute__((__aligned__(8))) - uint8_t ret_area[16]; - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_sockets_0_2_0_rc_2023_10_18_tcp_method_tcp_socket_receive_buffer_size((self).__handle, ptr); - wasi_sockets_0_2_0_rc_2023_10_18_tcp_result_u64_error_code_t result; - switch ((int32_t) (*((uint8_t*) (ptr + 0)))) { - case 0: { - result.is_err = false; - result.val.ok = (uint64_t) (*((int64_t*) (ptr + 8))); - break; - } - case 1: { - result.is_err = true; - result.val.err = (int32_t) (*((uint8_t*) (ptr + 8))); - break; - } - } - if (!result.is_err) { - *ret = result.val.ok; - return 1; - } else { - *err = result.val.err; - return 0; - } -} - -bool wasi_sockets_0_2_0_rc_2023_10_18_tcp_method_tcp_socket_set_receive_buffer_size(wasi_sockets_0_2_0_rc_2023_10_18_tcp_borrow_tcp_socket_t self, uint64_t value, wasi_sockets_0_2_0_rc_2023_10_18_tcp_error_code_t *err) { - __attribute__((__aligned__(1))) - uint8_t ret_area[2]; - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_sockets_0_2_0_rc_2023_10_18_tcp_method_tcp_socket_set_receive_buffer_size((self).__handle, (int64_t) (value), ptr); - wasi_sockets_0_2_0_rc_2023_10_18_tcp_result_void_error_code_t result; - switch ((int32_t) (*((uint8_t*) (ptr + 0)))) { - case 0: { - result.is_err = false; - break; - } - case 1: { - result.is_err = true; - result.val.err = (int32_t) (*((uint8_t*) (ptr + 1))); - break; - } - } - if (!result.is_err) { - return 1; - } else { - *err = result.val.err; - return 0; - } -} - -bool wasi_sockets_0_2_0_rc_2023_10_18_tcp_method_tcp_socket_send_buffer_size(wasi_sockets_0_2_0_rc_2023_10_18_tcp_borrow_tcp_socket_t self, uint64_t *ret, wasi_sockets_0_2_0_rc_2023_10_18_tcp_error_code_t *err) { - __attribute__((__aligned__(8))) - uint8_t ret_area[16]; - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_sockets_0_2_0_rc_2023_10_18_tcp_method_tcp_socket_send_buffer_size((self).__handle, ptr); - wasi_sockets_0_2_0_rc_2023_10_18_tcp_result_u64_error_code_t result; - switch ((int32_t) (*((uint8_t*) (ptr + 0)))) { - case 0: { - result.is_err = false; - result.val.ok = (uint64_t) (*((int64_t*) (ptr + 8))); - break; - } - case 1: { - result.is_err = true; - result.val.err = (int32_t) (*((uint8_t*) (ptr + 8))); - break; - } - } - if (!result.is_err) { - *ret = result.val.ok; - return 1; - } else { - *err = result.val.err; - return 0; - } -} - -bool wasi_sockets_0_2_0_rc_2023_10_18_tcp_method_tcp_socket_set_send_buffer_size(wasi_sockets_0_2_0_rc_2023_10_18_tcp_borrow_tcp_socket_t self, uint64_t value, wasi_sockets_0_2_0_rc_2023_10_18_tcp_error_code_t *err) { - __attribute__((__aligned__(1))) - uint8_t ret_area[2]; - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_sockets_0_2_0_rc_2023_10_18_tcp_method_tcp_socket_set_send_buffer_size((self).__handle, (int64_t) (value), ptr); - wasi_sockets_0_2_0_rc_2023_10_18_tcp_result_void_error_code_t result; - switch ((int32_t) (*((uint8_t*) (ptr + 0)))) { - case 0: { - result.is_err = false; - break; - } - case 1: { - result.is_err = true; - result.val.err = (int32_t) (*((uint8_t*) (ptr + 1))); - break; - } - } - if (!result.is_err) { - return 1; - } else { - *err = result.val.err; - return 0; - } -} - -wasi_sockets_0_2_0_rc_2023_10_18_tcp_own_pollable_t wasi_sockets_0_2_0_rc_2023_10_18_tcp_method_tcp_socket_subscribe(wasi_sockets_0_2_0_rc_2023_10_18_tcp_borrow_tcp_socket_t self) { - int32_t ret = __wasm_import_wasi_sockets_0_2_0_rc_2023_10_18_tcp_method_tcp_socket_subscribe((self).__handle); - return (wasi_sockets_0_2_0_rc_2023_10_18_tcp_own_pollable_t) { ret }; -} - -bool wasi_sockets_0_2_0_rc_2023_10_18_tcp_method_tcp_socket_shutdown(wasi_sockets_0_2_0_rc_2023_10_18_tcp_borrow_tcp_socket_t self, wasi_sockets_0_2_0_rc_2023_10_18_tcp_shutdown_type_t shutdown_type, wasi_sockets_0_2_0_rc_2023_10_18_tcp_error_code_t *err) { - __attribute__((__aligned__(1))) - uint8_t ret_area[2]; - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_sockets_0_2_0_rc_2023_10_18_tcp_method_tcp_socket_shutdown((self).__handle, (int32_t) shutdown_type, ptr); - wasi_sockets_0_2_0_rc_2023_10_18_tcp_result_void_error_code_t result; - switch ((int32_t) (*((uint8_t*) (ptr + 0)))) { - case 0: { - result.is_err = false; - break; - } - case 1: { - result.is_err = true; - result.val.err = (int32_t) (*((uint8_t*) (ptr + 1))); - break; - } - } - if (!result.is_err) { - return 1; - } else { - *err = result.val.err; - return 0; - } -} - -bool wasi_sockets_0_2_0_rc_2023_10_18_tcp_create_socket_create_tcp_socket(wasi_sockets_0_2_0_rc_2023_10_18_tcp_create_socket_ip_address_family_t address_family, wasi_sockets_0_2_0_rc_2023_10_18_tcp_create_socket_own_tcp_socket_t *ret, wasi_sockets_0_2_0_rc_2023_10_18_tcp_create_socket_error_code_t *err) { - __attribute__((__aligned__(4))) - uint8_t ret_area[8]; - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_sockets_0_2_0_rc_2023_10_18_tcp_create_socket_create_tcp_socket((int32_t) address_family, ptr); - wasi_sockets_0_2_0_rc_2023_10_18_tcp_create_socket_result_own_tcp_socket_error_code_t result; - switch ((int32_t) (*((uint8_t*) (ptr + 0)))) { - case 0: { - result.is_err = false; - result.val.ok = (wasi_sockets_0_2_0_rc_2023_10_18_tcp_create_socket_own_tcp_socket_t) { *((int32_t*) (ptr + 4)) }; - break; - } - case 1: { - result.is_err = true; - result.val.err = (int32_t) (*((uint8_t*) (ptr + 4))); - break; - } - } - if (!result.is_err) { - *ret = result.val.ok; - return 1; - } else { - *err = result.val.err; - return 0; - } -} - -bool wasi_sockets_0_2_0_rc_2023_10_18_udp_method_udp_socket_start_bind(wasi_sockets_0_2_0_rc_2023_10_18_udp_borrow_udp_socket_t self, wasi_sockets_0_2_0_rc_2023_10_18_udp_borrow_network_t network, wasi_sockets_0_2_0_rc_2023_10_18_udp_ip_socket_address_t *local_address, wasi_sockets_0_2_0_rc_2023_10_18_udp_error_code_t *err) { - __attribute__((__aligned__(1))) - uint8_t ret_area[2]; - int32_t variant; - int32_t variant1; - int32_t variant2; - int32_t variant3; - int32_t variant4; - int32_t variant5; - int32_t variant6; - int32_t variant7; - int32_t variant8; - int32_t variant9; - int32_t variant10; - int32_t variant11; - switch ((int32_t) (*local_address).tag) { - case 0: { - const wasi_sockets_0_2_0_rc_2023_10_18_network_ipv4_socket_address_t *payload = &(*local_address).val.ipv4; - variant = 0; - variant1 = (int32_t) ((*payload).port); - variant2 = (int32_t) (((*payload).address).f0); - variant3 = (int32_t) (((*payload).address).f1); - variant4 = (int32_t) (((*payload).address).f2); - variant5 = (int32_t) (((*payload).address).f3); - variant6 = 0; - variant7 = 0; - variant8 = 0; - variant9 = 0; - variant10 = 0; - variant11 = 0; - break; - } - case 1: { - const wasi_sockets_0_2_0_rc_2023_10_18_network_ipv6_socket_address_t *payload0 = &(*local_address).val.ipv6; - variant = 1; - variant1 = (int32_t) ((*payload0).port); - variant2 = (int32_t) ((*payload0).flow_info); - variant3 = (int32_t) (((*payload0).address).f0); - variant4 = (int32_t) (((*payload0).address).f1); - variant5 = (int32_t) (((*payload0).address).f2); - variant6 = (int32_t) (((*payload0).address).f3); - variant7 = (int32_t) (((*payload0).address).f4); - variant8 = (int32_t) (((*payload0).address).f5); - variant9 = (int32_t) (((*payload0).address).f6); - variant10 = (int32_t) (((*payload0).address).f7); - variant11 = (int32_t) ((*payload0).scope_id); - break; - } - } - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_sockets_0_2_0_rc_2023_10_18_udp_method_udp_socket_start_bind((self).__handle, (network).__handle, variant, variant1, variant2, variant3, variant4, variant5, variant6, variant7, variant8, variant9, variant10, variant11, ptr); - wasi_sockets_0_2_0_rc_2023_10_18_udp_result_void_error_code_t result; - switch ((int32_t) (*((uint8_t*) (ptr + 0)))) { - case 0: { - result.is_err = false; - break; - } - case 1: { - result.is_err = true; - result.val.err = (int32_t) (*((uint8_t*) (ptr + 1))); - break; - } - } - if (!result.is_err) { - return 1; - } else { - *err = result.val.err; - return 0; - } -} - -bool wasi_sockets_0_2_0_rc_2023_10_18_udp_method_udp_socket_finish_bind(wasi_sockets_0_2_0_rc_2023_10_18_udp_borrow_udp_socket_t self, wasi_sockets_0_2_0_rc_2023_10_18_udp_error_code_t *err) { - __attribute__((__aligned__(1))) - uint8_t ret_area[2]; - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_sockets_0_2_0_rc_2023_10_18_udp_method_udp_socket_finish_bind((self).__handle, ptr); - wasi_sockets_0_2_0_rc_2023_10_18_udp_result_void_error_code_t result; - switch ((int32_t) (*((uint8_t*) (ptr + 0)))) { - case 0: { - result.is_err = false; - break; - } - case 1: { - result.is_err = true; - result.val.err = (int32_t) (*((uint8_t*) (ptr + 1))); - break; - } - } - if (!result.is_err) { - return 1; - } else { - *err = result.val.err; - return 0; - } -} - -bool wasi_sockets_0_2_0_rc_2023_10_18_udp_method_udp_socket_start_connect(wasi_sockets_0_2_0_rc_2023_10_18_udp_borrow_udp_socket_t self, wasi_sockets_0_2_0_rc_2023_10_18_udp_borrow_network_t network, wasi_sockets_0_2_0_rc_2023_10_18_udp_ip_socket_address_t *remote_address, wasi_sockets_0_2_0_rc_2023_10_18_udp_error_code_t *err) { - __attribute__((__aligned__(1))) - uint8_t ret_area[2]; - int32_t variant; - int32_t variant1; - int32_t variant2; - int32_t variant3; - int32_t variant4; - int32_t variant5; - int32_t variant6; - int32_t variant7; - int32_t variant8; - int32_t variant9; - int32_t variant10; - int32_t variant11; - switch ((int32_t) (*remote_address).tag) { - case 0: { - const wasi_sockets_0_2_0_rc_2023_10_18_network_ipv4_socket_address_t *payload = &(*remote_address).val.ipv4; - variant = 0; - variant1 = (int32_t) ((*payload).port); - variant2 = (int32_t) (((*payload).address).f0); - variant3 = (int32_t) (((*payload).address).f1); - variant4 = (int32_t) (((*payload).address).f2); - variant5 = (int32_t) (((*payload).address).f3); - variant6 = 0; - variant7 = 0; - variant8 = 0; - variant9 = 0; - variant10 = 0; - variant11 = 0; - break; - } - case 1: { - const wasi_sockets_0_2_0_rc_2023_10_18_network_ipv6_socket_address_t *payload0 = &(*remote_address).val.ipv6; - variant = 1; - variant1 = (int32_t) ((*payload0).port); - variant2 = (int32_t) ((*payload0).flow_info); - variant3 = (int32_t) (((*payload0).address).f0); - variant4 = (int32_t) (((*payload0).address).f1); - variant5 = (int32_t) (((*payload0).address).f2); - variant6 = (int32_t) (((*payload0).address).f3); - variant7 = (int32_t) (((*payload0).address).f4); - variant8 = (int32_t) (((*payload0).address).f5); - variant9 = (int32_t) (((*payload0).address).f6); - variant10 = (int32_t) (((*payload0).address).f7); - variant11 = (int32_t) ((*payload0).scope_id); - break; - } - } - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_sockets_0_2_0_rc_2023_10_18_udp_method_udp_socket_start_connect((self).__handle, (network).__handle, variant, variant1, variant2, variant3, variant4, variant5, variant6, variant7, variant8, variant9, variant10, variant11, ptr); - wasi_sockets_0_2_0_rc_2023_10_18_udp_result_void_error_code_t result; - switch ((int32_t) (*((uint8_t*) (ptr + 0)))) { - case 0: { - result.is_err = false; - break; - } - case 1: { - result.is_err = true; - result.val.err = (int32_t) (*((uint8_t*) (ptr + 1))); - break; - } - } - if (!result.is_err) { - return 1; - } else { - *err = result.val.err; - return 0; - } -} - -bool wasi_sockets_0_2_0_rc_2023_10_18_udp_method_udp_socket_finish_connect(wasi_sockets_0_2_0_rc_2023_10_18_udp_borrow_udp_socket_t self, wasi_sockets_0_2_0_rc_2023_10_18_udp_error_code_t *err) { - __attribute__((__aligned__(1))) - uint8_t ret_area[2]; - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_sockets_0_2_0_rc_2023_10_18_udp_method_udp_socket_finish_connect((self).__handle, ptr); - wasi_sockets_0_2_0_rc_2023_10_18_udp_result_void_error_code_t result; - switch ((int32_t) (*((uint8_t*) (ptr + 0)))) { - case 0: { - result.is_err = false; - break; - } - case 1: { - result.is_err = true; - result.val.err = (int32_t) (*((uint8_t*) (ptr + 1))); - break; - } - } - if (!result.is_err) { - return 1; - } else { - *err = result.val.err; - return 0; - } -} - -bool wasi_sockets_0_2_0_rc_2023_10_18_udp_method_udp_socket_receive(wasi_sockets_0_2_0_rc_2023_10_18_udp_borrow_udp_socket_t self, uint64_t max_results, wasi_sockets_0_2_0_rc_2023_10_18_udp_list_datagram_t *ret, wasi_sockets_0_2_0_rc_2023_10_18_udp_error_code_t *err) { - __attribute__((__aligned__(4))) - uint8_t ret_area[12]; - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_sockets_0_2_0_rc_2023_10_18_udp_method_udp_socket_receive((self).__handle, (int64_t) (max_results), ptr); - wasi_sockets_0_2_0_rc_2023_10_18_udp_result_list_datagram_error_code_t result; - switch ((int32_t) (*((uint8_t*) (ptr + 0)))) { - case 0: { - result.is_err = false; - result.val.ok = (wasi_sockets_0_2_0_rc_2023_10_18_udp_list_datagram_t) { (wasi_sockets_0_2_0_rc_2023_10_18_udp_datagram_t*)(*((int32_t*) (ptr + 4))), (size_t)(*((int32_t*) (ptr + 8))) }; - break; - } - case 1: { - result.is_err = true; - result.val.err = (int32_t) (*((uint8_t*) (ptr + 4))); - break; - } - } - if (!result.is_err) { - *ret = result.val.ok; - return 1; - } else { - *err = result.val.err; - return 0; - } -} - -bool wasi_sockets_0_2_0_rc_2023_10_18_udp_method_udp_socket_send(wasi_sockets_0_2_0_rc_2023_10_18_udp_borrow_udp_socket_t self, wasi_sockets_0_2_0_rc_2023_10_18_udp_list_datagram_t *datagrams, uint64_t *ret, wasi_sockets_0_2_0_rc_2023_10_18_udp_error_code_t *err) { - __attribute__((__aligned__(8))) - uint8_t ret_area[16]; - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_sockets_0_2_0_rc_2023_10_18_udp_method_udp_socket_send((self).__handle, (int32_t) (*datagrams).ptr, (int32_t) (*datagrams).len, ptr); - wasi_sockets_0_2_0_rc_2023_10_18_udp_result_u64_error_code_t result; - switch ((int32_t) (*((uint8_t*) (ptr + 0)))) { - case 0: { - result.is_err = false; - result.val.ok = (uint64_t) (*((int64_t*) (ptr + 8))); - break; - } - case 1: { - result.is_err = true; - result.val.err = (int32_t) (*((uint8_t*) (ptr + 8))); - break; - } - } - if (!result.is_err) { - *ret = result.val.ok; - return 1; - } else { - *err = result.val.err; - return 0; - } -} - -bool wasi_sockets_0_2_0_rc_2023_10_18_udp_method_udp_socket_local_address(wasi_sockets_0_2_0_rc_2023_10_18_udp_borrow_udp_socket_t self, wasi_sockets_0_2_0_rc_2023_10_18_udp_ip_socket_address_t *ret, wasi_sockets_0_2_0_rc_2023_10_18_udp_error_code_t *err) { - __attribute__((__aligned__(4))) - uint8_t ret_area[36]; - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_sockets_0_2_0_rc_2023_10_18_udp_method_udp_socket_local_address((self).__handle, ptr); - wasi_sockets_0_2_0_rc_2023_10_18_udp_result_ip_socket_address_error_code_t result; - switch ((int32_t) (*((uint8_t*) (ptr + 0)))) { - case 0: { - result.is_err = false; - wasi_sockets_0_2_0_rc_2023_10_18_network_ip_socket_address_t variant; - variant.tag = (int32_t) (*((uint8_t*) (ptr + 4))); - switch ((int32_t) variant.tag) { - case 0: { - variant.val.ipv4 = (wasi_sockets_0_2_0_rc_2023_10_18_network_ipv4_socket_address_t) { - (uint16_t) ((int32_t) (*((uint16_t*) (ptr + 8)))), - (wasi_sockets_0_2_0_rc_2023_10_18_network_ipv4_address_t) { - (uint8_t) ((int32_t) (*((uint8_t*) (ptr + 10)))), - (uint8_t) ((int32_t) (*((uint8_t*) (ptr + 11)))), - (uint8_t) ((int32_t) (*((uint8_t*) (ptr + 12)))), - (uint8_t) ((int32_t) (*((uint8_t*) (ptr + 13)))), - }, - }; - break; - } - case 1: { - variant.val.ipv6 = (wasi_sockets_0_2_0_rc_2023_10_18_network_ipv6_socket_address_t) { - (uint16_t) ((int32_t) (*((uint16_t*) (ptr + 8)))), - (uint32_t) (*((int32_t*) (ptr + 12))), - (wasi_sockets_0_2_0_rc_2023_10_18_network_ipv6_address_t) { - (uint16_t) ((int32_t) (*((uint16_t*) (ptr + 16)))), - (uint16_t) ((int32_t) (*((uint16_t*) (ptr + 18)))), - (uint16_t) ((int32_t) (*((uint16_t*) (ptr + 20)))), - (uint16_t) ((int32_t) (*((uint16_t*) (ptr + 22)))), - (uint16_t) ((int32_t) (*((uint16_t*) (ptr + 24)))), - (uint16_t) ((int32_t) (*((uint16_t*) (ptr + 26)))), - (uint16_t) ((int32_t) (*((uint16_t*) (ptr + 28)))), - (uint16_t) ((int32_t) (*((uint16_t*) (ptr + 30)))), - }, - (uint32_t) (*((int32_t*) (ptr + 32))), - }; - break; - } - } - - result.val.ok = variant; - break; - } - case 1: { - result.is_err = true; - result.val.err = (int32_t) (*((uint8_t*) (ptr + 4))); - break; - } - } - if (!result.is_err) { - *ret = result.val.ok; - return 1; - } else { - *err = result.val.err; - return 0; - } -} - -bool wasi_sockets_0_2_0_rc_2023_10_18_udp_method_udp_socket_remote_address(wasi_sockets_0_2_0_rc_2023_10_18_udp_borrow_udp_socket_t self, wasi_sockets_0_2_0_rc_2023_10_18_udp_ip_socket_address_t *ret, wasi_sockets_0_2_0_rc_2023_10_18_udp_error_code_t *err) { - __attribute__((__aligned__(4))) - uint8_t ret_area[36]; - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_sockets_0_2_0_rc_2023_10_18_udp_method_udp_socket_remote_address((self).__handle, ptr); - wasi_sockets_0_2_0_rc_2023_10_18_udp_result_ip_socket_address_error_code_t result; - switch ((int32_t) (*((uint8_t*) (ptr + 0)))) { - case 0: { - result.is_err = false; - wasi_sockets_0_2_0_rc_2023_10_18_network_ip_socket_address_t variant; - variant.tag = (int32_t) (*((uint8_t*) (ptr + 4))); - switch ((int32_t) variant.tag) { - case 0: { - variant.val.ipv4 = (wasi_sockets_0_2_0_rc_2023_10_18_network_ipv4_socket_address_t) { - (uint16_t) ((int32_t) (*((uint16_t*) (ptr + 8)))), - (wasi_sockets_0_2_0_rc_2023_10_18_network_ipv4_address_t) { - (uint8_t) ((int32_t) (*((uint8_t*) (ptr + 10)))), - (uint8_t) ((int32_t) (*((uint8_t*) (ptr + 11)))), - (uint8_t) ((int32_t) (*((uint8_t*) (ptr + 12)))), - (uint8_t) ((int32_t) (*((uint8_t*) (ptr + 13)))), - }, - }; - break; - } - case 1: { - variant.val.ipv6 = (wasi_sockets_0_2_0_rc_2023_10_18_network_ipv6_socket_address_t) { - (uint16_t) ((int32_t) (*((uint16_t*) (ptr + 8)))), - (uint32_t) (*((int32_t*) (ptr + 12))), - (wasi_sockets_0_2_0_rc_2023_10_18_network_ipv6_address_t) { - (uint16_t) ((int32_t) (*((uint16_t*) (ptr + 16)))), - (uint16_t) ((int32_t) (*((uint16_t*) (ptr + 18)))), - (uint16_t) ((int32_t) (*((uint16_t*) (ptr + 20)))), - (uint16_t) ((int32_t) (*((uint16_t*) (ptr + 22)))), - (uint16_t) ((int32_t) (*((uint16_t*) (ptr + 24)))), - (uint16_t) ((int32_t) (*((uint16_t*) (ptr + 26)))), - (uint16_t) ((int32_t) (*((uint16_t*) (ptr + 28)))), - (uint16_t) ((int32_t) (*((uint16_t*) (ptr + 30)))), - }, - (uint32_t) (*((int32_t*) (ptr + 32))), - }; - break; - } - } - - result.val.ok = variant; - break; - } - case 1: { - result.is_err = true; - result.val.err = (int32_t) (*((uint8_t*) (ptr + 4))); - break; - } - } - if (!result.is_err) { - *ret = result.val.ok; - return 1; - } else { - *err = result.val.err; - return 0; - } -} - -wasi_sockets_0_2_0_rc_2023_10_18_udp_ip_address_family_t wasi_sockets_0_2_0_rc_2023_10_18_udp_method_udp_socket_address_family(wasi_sockets_0_2_0_rc_2023_10_18_udp_borrow_udp_socket_t self) { - int32_t ret = __wasm_import_wasi_sockets_0_2_0_rc_2023_10_18_udp_method_udp_socket_address_family((self).__handle); - return ret; -} - -bool wasi_sockets_0_2_0_rc_2023_10_18_udp_method_udp_socket_ipv6_only(wasi_sockets_0_2_0_rc_2023_10_18_udp_borrow_udp_socket_t self, bool *ret, wasi_sockets_0_2_0_rc_2023_10_18_udp_error_code_t *err) { - __attribute__((__aligned__(1))) - uint8_t ret_area[2]; - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_sockets_0_2_0_rc_2023_10_18_udp_method_udp_socket_ipv6_only((self).__handle, ptr); - wasi_sockets_0_2_0_rc_2023_10_18_udp_result_bool_error_code_t result; - switch ((int32_t) (*((uint8_t*) (ptr + 0)))) { - case 0: { - result.is_err = false; - result.val.ok = (int32_t) (*((uint8_t*) (ptr + 1))); - break; - } - case 1: { - result.is_err = true; - result.val.err = (int32_t) (*((uint8_t*) (ptr + 1))); - break; - } - } - if (!result.is_err) { - *ret = result.val.ok; - return 1; - } else { - *err = result.val.err; - return 0; - } -} - -bool wasi_sockets_0_2_0_rc_2023_10_18_udp_method_udp_socket_set_ipv6_only(wasi_sockets_0_2_0_rc_2023_10_18_udp_borrow_udp_socket_t self, bool value, wasi_sockets_0_2_0_rc_2023_10_18_udp_error_code_t *err) { - __attribute__((__aligned__(1))) - uint8_t ret_area[2]; - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_sockets_0_2_0_rc_2023_10_18_udp_method_udp_socket_set_ipv6_only((self).__handle, value, ptr); - wasi_sockets_0_2_0_rc_2023_10_18_udp_result_void_error_code_t result; - switch ((int32_t) (*((uint8_t*) (ptr + 0)))) { - case 0: { - result.is_err = false; - break; - } - case 1: { - result.is_err = true; - result.val.err = (int32_t) (*((uint8_t*) (ptr + 1))); - break; - } - } - if (!result.is_err) { - return 1; - } else { - *err = result.val.err; - return 0; - } -} - -bool wasi_sockets_0_2_0_rc_2023_10_18_udp_method_udp_socket_unicast_hop_limit(wasi_sockets_0_2_0_rc_2023_10_18_udp_borrow_udp_socket_t self, uint8_t *ret, wasi_sockets_0_2_0_rc_2023_10_18_udp_error_code_t *err) { - __attribute__((__aligned__(1))) - uint8_t ret_area[2]; - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_sockets_0_2_0_rc_2023_10_18_udp_method_udp_socket_unicast_hop_limit((self).__handle, ptr); - wasi_sockets_0_2_0_rc_2023_10_18_udp_result_u8_error_code_t result; - switch ((int32_t) (*((uint8_t*) (ptr + 0)))) { - case 0: { - result.is_err = false; - result.val.ok = (uint8_t) ((int32_t) (*((uint8_t*) (ptr + 1)))); - break; - } - case 1: { - result.is_err = true; - result.val.err = (int32_t) (*((uint8_t*) (ptr + 1))); - break; - } - } - if (!result.is_err) { - *ret = result.val.ok; - return 1; - } else { - *err = result.val.err; - return 0; - } -} - -bool wasi_sockets_0_2_0_rc_2023_10_18_udp_method_udp_socket_set_unicast_hop_limit(wasi_sockets_0_2_0_rc_2023_10_18_udp_borrow_udp_socket_t self, uint8_t value, wasi_sockets_0_2_0_rc_2023_10_18_udp_error_code_t *err) { - __attribute__((__aligned__(1))) - uint8_t ret_area[2]; - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_sockets_0_2_0_rc_2023_10_18_udp_method_udp_socket_set_unicast_hop_limit((self).__handle, (int32_t) (value), ptr); - wasi_sockets_0_2_0_rc_2023_10_18_udp_result_void_error_code_t result; - switch ((int32_t) (*((uint8_t*) (ptr + 0)))) { - case 0: { - result.is_err = false; - break; - } - case 1: { - result.is_err = true; - result.val.err = (int32_t) (*((uint8_t*) (ptr + 1))); - break; - } - } - if (!result.is_err) { - return 1; - } else { - *err = result.val.err; - return 0; - } -} - -bool wasi_sockets_0_2_0_rc_2023_10_18_udp_method_udp_socket_receive_buffer_size(wasi_sockets_0_2_0_rc_2023_10_18_udp_borrow_udp_socket_t self, uint64_t *ret, wasi_sockets_0_2_0_rc_2023_10_18_udp_error_code_t *err) { - __attribute__((__aligned__(8))) - uint8_t ret_area[16]; - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_sockets_0_2_0_rc_2023_10_18_udp_method_udp_socket_receive_buffer_size((self).__handle, ptr); - wasi_sockets_0_2_0_rc_2023_10_18_udp_result_u64_error_code_t result; - switch ((int32_t) (*((uint8_t*) (ptr + 0)))) { - case 0: { - result.is_err = false; - result.val.ok = (uint64_t) (*((int64_t*) (ptr + 8))); - break; - } - case 1: { - result.is_err = true; - result.val.err = (int32_t) (*((uint8_t*) (ptr + 8))); - break; - } - } - if (!result.is_err) { - *ret = result.val.ok; - return 1; - } else { - *err = result.val.err; - return 0; - } -} - -bool wasi_sockets_0_2_0_rc_2023_10_18_udp_method_udp_socket_set_receive_buffer_size(wasi_sockets_0_2_0_rc_2023_10_18_udp_borrow_udp_socket_t self, uint64_t value, wasi_sockets_0_2_0_rc_2023_10_18_udp_error_code_t *err) { - __attribute__((__aligned__(1))) - uint8_t ret_area[2]; - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_sockets_0_2_0_rc_2023_10_18_udp_method_udp_socket_set_receive_buffer_size((self).__handle, (int64_t) (value), ptr); - wasi_sockets_0_2_0_rc_2023_10_18_udp_result_void_error_code_t result; - switch ((int32_t) (*((uint8_t*) (ptr + 0)))) { - case 0: { - result.is_err = false; - break; - } - case 1: { - result.is_err = true; - result.val.err = (int32_t) (*((uint8_t*) (ptr + 1))); - break; - } - } - if (!result.is_err) { - return 1; - } else { - *err = result.val.err; - return 0; - } -} - -bool wasi_sockets_0_2_0_rc_2023_10_18_udp_method_udp_socket_send_buffer_size(wasi_sockets_0_2_0_rc_2023_10_18_udp_borrow_udp_socket_t self, uint64_t *ret, wasi_sockets_0_2_0_rc_2023_10_18_udp_error_code_t *err) { - __attribute__((__aligned__(8))) - uint8_t ret_area[16]; - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_sockets_0_2_0_rc_2023_10_18_udp_method_udp_socket_send_buffer_size((self).__handle, ptr); - wasi_sockets_0_2_0_rc_2023_10_18_udp_result_u64_error_code_t result; - switch ((int32_t) (*((uint8_t*) (ptr + 0)))) { - case 0: { - result.is_err = false; - result.val.ok = (uint64_t) (*((int64_t*) (ptr + 8))); - break; - } - case 1: { - result.is_err = true; - result.val.err = (int32_t) (*((uint8_t*) (ptr + 8))); - break; - } - } - if (!result.is_err) { - *ret = result.val.ok; - return 1; - } else { - *err = result.val.err; - return 0; - } -} - -bool wasi_sockets_0_2_0_rc_2023_10_18_udp_method_udp_socket_set_send_buffer_size(wasi_sockets_0_2_0_rc_2023_10_18_udp_borrow_udp_socket_t self, uint64_t value, wasi_sockets_0_2_0_rc_2023_10_18_udp_error_code_t *err) { - __attribute__((__aligned__(1))) - uint8_t ret_area[2]; - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_sockets_0_2_0_rc_2023_10_18_udp_method_udp_socket_set_send_buffer_size((self).__handle, (int64_t) (value), ptr); - wasi_sockets_0_2_0_rc_2023_10_18_udp_result_void_error_code_t result; - switch ((int32_t) (*((uint8_t*) (ptr + 0)))) { - case 0: { - result.is_err = false; - break; - } - case 1: { - result.is_err = true; - result.val.err = (int32_t) (*((uint8_t*) (ptr + 1))); - break; - } - } - if (!result.is_err) { - return 1; - } else { - *err = result.val.err; - return 0; - } -} - -wasi_sockets_0_2_0_rc_2023_10_18_udp_own_pollable_t wasi_sockets_0_2_0_rc_2023_10_18_udp_method_udp_socket_subscribe(wasi_sockets_0_2_0_rc_2023_10_18_udp_borrow_udp_socket_t self) { - int32_t ret = __wasm_import_wasi_sockets_0_2_0_rc_2023_10_18_udp_method_udp_socket_subscribe((self).__handle); - return (wasi_sockets_0_2_0_rc_2023_10_18_udp_own_pollable_t) { ret }; -} - -bool wasi_sockets_0_2_0_rc_2023_10_18_udp_create_socket_create_udp_socket(wasi_sockets_0_2_0_rc_2023_10_18_udp_create_socket_ip_address_family_t address_family, wasi_sockets_0_2_0_rc_2023_10_18_udp_create_socket_own_udp_socket_t *ret, wasi_sockets_0_2_0_rc_2023_10_18_udp_create_socket_error_code_t *err) { - __attribute__((__aligned__(4))) - uint8_t ret_area[8]; - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_sockets_0_2_0_rc_2023_10_18_udp_create_socket_create_udp_socket((int32_t) address_family, ptr); - wasi_sockets_0_2_0_rc_2023_10_18_udp_create_socket_result_own_udp_socket_error_code_t result; - switch ((int32_t) (*((uint8_t*) (ptr + 0)))) { - case 0: { - result.is_err = false; - result.val.ok = (wasi_sockets_0_2_0_rc_2023_10_18_udp_create_socket_own_udp_socket_t) { *((int32_t*) (ptr + 4)) }; - break; - } - case 1: { - result.is_err = true; - result.val.err = (int32_t) (*((uint8_t*) (ptr + 4))); - break; - } - } - if (!result.is_err) { - *ret = result.val.ok; - return 1; - } else { - *err = result.val.err; - return 0; - } -} - -void wasi_random_0_2_0_rc_2023_10_18_random_get_random_bytes(uint64_t len, bindings_list_u8_t *ret) { - __attribute__((__aligned__(4))) - uint8_t ret_area[8]; - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_random_0_2_0_rc_2023_10_18_random_get_random_bytes((int64_t) (len), ptr); - *ret = (bindings_list_u8_t) { (uint8_t*)(*((int32_t*) (ptr + 0))), (size_t)(*((int32_t*) (ptr + 4))) }; -} - -uint64_t wasi_random_0_2_0_rc_2023_10_18_random_get_random_u64(void) { - int64_t ret = __wasm_import_wasi_random_0_2_0_rc_2023_10_18_random_get_random_u64(); - return (uint64_t) (ret); -} - -void wasi_random_0_2_0_rc_2023_10_18_insecure_get_insecure_random_bytes(uint64_t len, bindings_list_u8_t *ret) { - __attribute__((__aligned__(4))) - uint8_t ret_area[8]; - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_random_0_2_0_rc_2023_10_18_insecure_get_insecure_random_bytes((int64_t) (len), ptr); - *ret = (bindings_list_u8_t) { (uint8_t*)(*((int32_t*) (ptr + 0))), (size_t)(*((int32_t*) (ptr + 4))) }; -} - -uint64_t wasi_random_0_2_0_rc_2023_10_18_insecure_get_insecure_random_u64(void) { - int64_t ret = __wasm_import_wasi_random_0_2_0_rc_2023_10_18_insecure_get_insecure_random_u64(); - return (uint64_t) (ret); -} - -void wasi_random_0_2_0_rc_2023_10_18_insecure_seed_insecure_seed(bindings_tuple2_u64_u64_t *ret) { - __attribute__((__aligned__(8))) - uint8_t ret_area[16]; - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_random_0_2_0_rc_2023_10_18_insecure_seed_insecure_seed(ptr); - *ret = (bindings_tuple2_u64_u64_t) { - (uint64_t) (*((int64_t*) (ptr + 0))), - (uint64_t) (*((int64_t*) (ptr + 8))), - }; -} - -void wasi_cli_0_2_0_rc_2023_10_18_environment_get_environment(bindings_list_tuple2_string_string_t *ret) { - __attribute__((__aligned__(4))) - uint8_t ret_area[8]; - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_cli_0_2_0_rc_2023_10_18_environment_get_environment(ptr); - *ret = (bindings_list_tuple2_string_string_t) { (bindings_tuple2_string_string_t*)(*((int32_t*) (ptr + 0))), (size_t)(*((int32_t*) (ptr + 4))) }; -} - -void wasi_cli_0_2_0_rc_2023_10_18_environment_get_arguments(bindings_list_string_t *ret) { - __attribute__((__aligned__(4))) - uint8_t ret_area[8]; - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_cli_0_2_0_rc_2023_10_18_environment_get_arguments(ptr); - *ret = (bindings_list_string_t) { (bindings_string_t*)(*((int32_t*) (ptr + 0))), (size_t)(*((int32_t*) (ptr + 4))) }; -} - -bool wasi_cli_0_2_0_rc_2023_10_18_environment_initial_cwd(bindings_string_t *ret) { - __attribute__((__aligned__(4))) - uint8_t ret_area[12]; - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_cli_0_2_0_rc_2023_10_18_environment_initial_cwd(ptr); - bindings_option_string_t option; - switch ((int32_t) (*((uint8_t*) (ptr + 0)))) { - case 0: { - option.is_some = false; - break; - } - case 1: { - option.is_some = true; - option.val = (bindings_string_t) { (uint8_t*)(*((int32_t*) (ptr + 4))), (size_t)(*((int32_t*) (ptr + 8))) }; - break; - } - } - *ret = option.val; - return option.is_some; -} - -void wasi_cli_0_2_0_rc_2023_10_18_exit_exit(wasi_cli_0_2_0_rc_2023_10_18_exit_result_void_void_t *status) { - int32_t result; - if ((*status).is_err) { - result = 1; - } else { - result = 0; - } - __wasm_import_wasi_cli_0_2_0_rc_2023_10_18_exit_exit(result); -} - -wasi_cli_0_2_0_rc_2023_10_18_stdin_own_input_stream_t wasi_cli_0_2_0_rc_2023_10_18_stdin_get_stdin(void) { - int32_t ret = __wasm_import_wasi_cli_0_2_0_rc_2023_10_18_stdin_get_stdin(); - return (wasi_cli_0_2_0_rc_2023_10_18_stdin_own_input_stream_t) { ret }; -} - -wasi_cli_0_2_0_rc_2023_10_18_stdout_own_output_stream_t wasi_cli_0_2_0_rc_2023_10_18_stdout_get_stdout(void) { - int32_t ret = __wasm_import_wasi_cli_0_2_0_rc_2023_10_18_stdout_get_stdout(); - return (wasi_cli_0_2_0_rc_2023_10_18_stdout_own_output_stream_t) { ret }; -} - -wasi_cli_0_2_0_rc_2023_10_18_stderr_own_output_stream_t wasi_cli_0_2_0_rc_2023_10_18_stderr_get_stderr(void) { - int32_t ret = __wasm_import_wasi_cli_0_2_0_rc_2023_10_18_stderr_get_stderr(); - return (wasi_cli_0_2_0_rc_2023_10_18_stderr_own_output_stream_t) { ret }; -} - -bool wasi_cli_0_2_0_rc_2023_10_18_terminal_stdin_get_terminal_stdin(wasi_cli_0_2_0_rc_2023_10_18_terminal_stdin_own_terminal_input_t *ret) { - __attribute__((__aligned__(4))) - uint8_t ret_area[8]; - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_cli_0_2_0_rc_2023_10_18_terminal_stdin_get_terminal_stdin(ptr); - wasi_cli_0_2_0_rc_2023_10_18_terminal_stdin_option_own_terminal_input_t option; - switch ((int32_t) (*((uint8_t*) (ptr + 0)))) { - case 0: { - option.is_some = false; - break; - } - case 1: { - option.is_some = true; - option.val = (wasi_cli_0_2_0_rc_2023_10_18_terminal_stdin_own_terminal_input_t) { *((int32_t*) (ptr + 4)) }; - break; - } - } - *ret = option.val; - return option.is_some; -} - -bool wasi_cli_0_2_0_rc_2023_10_18_terminal_stdout_get_terminal_stdout(wasi_cli_0_2_0_rc_2023_10_18_terminal_stdout_own_terminal_output_t *ret) { - __attribute__((__aligned__(4))) - uint8_t ret_area[8]; - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_cli_0_2_0_rc_2023_10_18_terminal_stdout_get_terminal_stdout(ptr); - wasi_cli_0_2_0_rc_2023_10_18_terminal_stdout_option_own_terminal_output_t option; - switch ((int32_t) (*((uint8_t*) (ptr + 0)))) { - case 0: { - option.is_some = false; - break; - } - case 1: { - option.is_some = true; - option.val = (wasi_cli_0_2_0_rc_2023_10_18_terminal_stdout_own_terminal_output_t) { *((int32_t*) (ptr + 4)) }; - break; - } - } - *ret = option.val; - return option.is_some; -} - -bool wasi_cli_0_2_0_rc_2023_10_18_terminal_stderr_get_terminal_stderr(wasi_cli_0_2_0_rc_2023_10_18_terminal_stderr_own_terminal_output_t *ret) { - __attribute__((__aligned__(4))) - uint8_t ret_area[8]; - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_cli_0_2_0_rc_2023_10_18_terminal_stderr_get_terminal_stderr(ptr); - wasi_cli_0_2_0_rc_2023_10_18_terminal_stderr_option_own_terminal_output_t option; - switch ((int32_t) (*((uint8_t*) (ptr + 0)))) { - case 0: { - option.is_some = false; - break; - } - case 1: { - option.is_some = true; - option.val = (wasi_cli_0_2_0_rc_2023_10_18_terminal_stderr_own_terminal_output_t) { *((int32_t*) (ptr + 4)) }; - break; - } - } - *ret = option.val; - return option.is_some; -} - -wasi_http_0_2_0_rc_2023_10_18_types_own_fields_t wasi_http_0_2_0_rc_2023_10_18_types_constructor_fields(bindings_list_tuple2_string_list_u8_t *entries) { - int32_t ret = __wasm_import_wasi_http_0_2_0_rc_2023_10_18_types_constructor_fields((int32_t) (*entries).ptr, (int32_t) (*entries).len); - return (wasi_http_0_2_0_rc_2023_10_18_types_own_fields_t) { ret }; -} - -void wasi_http_0_2_0_rc_2023_10_18_types_method_fields_get(wasi_http_0_2_0_rc_2023_10_18_types_borrow_fields_t self, bindings_string_t *name, bindings_list_list_u8_t *ret) { - __attribute__((__aligned__(4))) - uint8_t ret_area[8]; - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_http_0_2_0_rc_2023_10_18_types_method_fields_get((self).__handle, (int32_t) (*name).ptr, (int32_t) (*name).len, ptr); - *ret = (bindings_list_list_u8_t) { (bindings_list_u8_t*)(*((int32_t*) (ptr + 0))), (size_t)(*((int32_t*) (ptr + 4))) }; -} - -void wasi_http_0_2_0_rc_2023_10_18_types_method_fields_set(wasi_http_0_2_0_rc_2023_10_18_types_borrow_fields_t self, bindings_string_t *name, bindings_list_list_u8_t *value) { - __wasm_import_wasi_http_0_2_0_rc_2023_10_18_types_method_fields_set((self).__handle, (int32_t) (*name).ptr, (int32_t) (*name).len, (int32_t) (*value).ptr, (int32_t) (*value).len); -} - -void wasi_http_0_2_0_rc_2023_10_18_types_method_fields_delete(wasi_http_0_2_0_rc_2023_10_18_types_borrow_fields_t self, bindings_string_t *name) { - __wasm_import_wasi_http_0_2_0_rc_2023_10_18_types_method_fields_delete((self).__handle, (int32_t) (*name).ptr, (int32_t) (*name).len); -} - -void wasi_http_0_2_0_rc_2023_10_18_types_method_fields_append(wasi_http_0_2_0_rc_2023_10_18_types_borrow_fields_t self, bindings_string_t *name, bindings_list_u8_t *value) { - __wasm_import_wasi_http_0_2_0_rc_2023_10_18_types_method_fields_append((self).__handle, (int32_t) (*name).ptr, (int32_t) (*name).len, (int32_t) (*value).ptr, (int32_t) (*value).len); -} - -void wasi_http_0_2_0_rc_2023_10_18_types_method_fields_entries(wasi_http_0_2_0_rc_2023_10_18_types_borrow_fields_t self, bindings_list_tuple2_string_list_u8_t *ret) { - __attribute__((__aligned__(4))) - uint8_t ret_area[8]; - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_http_0_2_0_rc_2023_10_18_types_method_fields_entries((self).__handle, ptr); - *ret = (bindings_list_tuple2_string_list_u8_t) { (bindings_tuple2_string_list_u8_t*)(*((int32_t*) (ptr + 0))), (size_t)(*((int32_t*) (ptr + 4))) }; -} - -wasi_http_0_2_0_rc_2023_10_18_types_own_fields_t wasi_http_0_2_0_rc_2023_10_18_types_method_fields_clone(wasi_http_0_2_0_rc_2023_10_18_types_borrow_fields_t self) { - int32_t ret = __wasm_import_wasi_http_0_2_0_rc_2023_10_18_types_method_fields_clone((self).__handle); - return (wasi_http_0_2_0_rc_2023_10_18_types_own_fields_t) { ret }; -} - -void wasi_http_0_2_0_rc_2023_10_18_types_method_incoming_request_method(wasi_http_0_2_0_rc_2023_10_18_types_borrow_incoming_request_t self, wasi_http_0_2_0_rc_2023_10_18_types_method_t *ret) { - __attribute__((__aligned__(4))) - uint8_t ret_area[12]; - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_http_0_2_0_rc_2023_10_18_types_method_incoming_request_method((self).__handle, ptr); - wasi_http_0_2_0_rc_2023_10_18_types_method_t variant; - variant.tag = (int32_t) (*((uint8_t*) (ptr + 0))); - switch ((int32_t) variant.tag) { - case 0: { - break; - } - case 1: { - break; - } - case 2: { - break; - } - case 3: { - break; - } - case 4: { - break; - } - case 5: { - break; - } - case 6: { - break; - } - case 7: { - break; - } - case 8: { - break; - } - case 9: { - variant.val.other = (bindings_string_t) { (uint8_t*)(*((int32_t*) (ptr + 4))), (size_t)(*((int32_t*) (ptr + 8))) }; - break; - } - } - *ret = variant; -} - -bool wasi_http_0_2_0_rc_2023_10_18_types_method_incoming_request_path_with_query(wasi_http_0_2_0_rc_2023_10_18_types_borrow_incoming_request_t self, bindings_string_t *ret) { - __attribute__((__aligned__(4))) - uint8_t ret_area[12]; - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_http_0_2_0_rc_2023_10_18_types_method_incoming_request_path_with_query((self).__handle, ptr); - bindings_option_string_t option; - switch ((int32_t) (*((uint8_t*) (ptr + 0)))) { - case 0: { - option.is_some = false; - break; - } - case 1: { - option.is_some = true; - option.val = (bindings_string_t) { (uint8_t*)(*((int32_t*) (ptr + 4))), (size_t)(*((int32_t*) (ptr + 8))) }; - break; - } - } - *ret = option.val; - return option.is_some; -} - -bool wasi_http_0_2_0_rc_2023_10_18_types_method_incoming_request_scheme(wasi_http_0_2_0_rc_2023_10_18_types_borrow_incoming_request_t self, wasi_http_0_2_0_rc_2023_10_18_types_scheme_t *ret) { - __attribute__((__aligned__(4))) - uint8_t ret_area[16]; - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_http_0_2_0_rc_2023_10_18_types_method_incoming_request_scheme((self).__handle, ptr); - wasi_http_0_2_0_rc_2023_10_18_types_option_scheme_t option; - switch ((int32_t) (*((uint8_t*) (ptr + 0)))) { - case 0: { - option.is_some = false; - break; - } - case 1: { - option.is_some = true; - wasi_http_0_2_0_rc_2023_10_18_types_scheme_t variant; - variant.tag = (int32_t) (*((uint8_t*) (ptr + 4))); - switch ((int32_t) variant.tag) { - case 0: { - break; - } - case 1: { - break; - } - case 2: { - variant.val.other = (bindings_string_t) { (uint8_t*)(*((int32_t*) (ptr + 8))), (size_t)(*((int32_t*) (ptr + 12))) }; - break; - } - } - - option.val = variant; - break; - } - } - *ret = option.val; - return option.is_some; -} - -bool wasi_http_0_2_0_rc_2023_10_18_types_method_incoming_request_authority(wasi_http_0_2_0_rc_2023_10_18_types_borrow_incoming_request_t self, bindings_string_t *ret) { - __attribute__((__aligned__(4))) - uint8_t ret_area[12]; - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_http_0_2_0_rc_2023_10_18_types_method_incoming_request_authority((self).__handle, ptr); - bindings_option_string_t option; - switch ((int32_t) (*((uint8_t*) (ptr + 0)))) { - case 0: { - option.is_some = false; - break; - } - case 1: { - option.is_some = true; - option.val = (bindings_string_t) { (uint8_t*)(*((int32_t*) (ptr + 4))), (size_t)(*((int32_t*) (ptr + 8))) }; - break; - } - } - *ret = option.val; - return option.is_some; -} - -wasi_http_0_2_0_rc_2023_10_18_types_own_headers_t wasi_http_0_2_0_rc_2023_10_18_types_method_incoming_request_headers(wasi_http_0_2_0_rc_2023_10_18_types_borrow_incoming_request_t self) { - int32_t ret = __wasm_import_wasi_http_0_2_0_rc_2023_10_18_types_method_incoming_request_headers((self).__handle); - return (wasi_http_0_2_0_rc_2023_10_18_types_own_headers_t) { ret }; -} - -bool wasi_http_0_2_0_rc_2023_10_18_types_method_incoming_request_consume(wasi_http_0_2_0_rc_2023_10_18_types_borrow_incoming_request_t self, wasi_http_0_2_0_rc_2023_10_18_types_own_incoming_body_t *ret) { - __attribute__((__aligned__(4))) - uint8_t ret_area[8]; - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_http_0_2_0_rc_2023_10_18_types_method_incoming_request_consume((self).__handle, ptr); - wasi_http_0_2_0_rc_2023_10_18_types_result_own_incoming_body_void_t result; - switch ((int32_t) (*((uint8_t*) (ptr + 0)))) { - case 0: { - result.is_err = false; - result.val.ok = (wasi_http_0_2_0_rc_2023_10_18_types_own_incoming_body_t) { *((int32_t*) (ptr + 4)) }; - break; - } - case 1: { - result.is_err = true; - break; - } - } - if (!result.is_err) { - *ret = result.val.ok; - return 1; - } else { - return 0; - } -} - -wasi_http_0_2_0_rc_2023_10_18_types_own_outgoing_request_t wasi_http_0_2_0_rc_2023_10_18_types_constructor_outgoing_request(wasi_http_0_2_0_rc_2023_10_18_types_method_t *method, bindings_string_t *maybe_path_with_query, wasi_http_0_2_0_rc_2023_10_18_types_scheme_t *maybe_scheme, bindings_string_t *maybe_authority, wasi_http_0_2_0_rc_2023_10_18_types_borrow_headers_t headers) { - bindings_option_string_t path_with_query; - path_with_query.is_some = maybe_path_with_query != NULL;if (maybe_path_with_query) { - path_with_query.val = *maybe_path_with_query; - } - wasi_http_0_2_0_rc_2023_10_18_types_option_scheme_t scheme; - scheme.is_some = maybe_scheme != NULL;if (maybe_scheme) { - scheme.val = *maybe_scheme; - } - bindings_option_string_t authority; - authority.is_some = maybe_authority != NULL;if (maybe_authority) { - authority.val = *maybe_authority; - } - int32_t variant; - int32_t variant9; - int32_t variant10; - switch ((int32_t) (*method).tag) { - case 0: { - variant = 0; - variant9 = 0; - variant10 = 0; - break; - } - case 1: { - variant = 1; - variant9 = 0; - variant10 = 0; - break; - } - case 2: { - variant = 2; - variant9 = 0; - variant10 = 0; - break; - } - case 3: { - variant = 3; - variant9 = 0; - variant10 = 0; - break; - } - case 4: { - variant = 4; - variant9 = 0; - variant10 = 0; - break; - } - case 5: { - variant = 5; - variant9 = 0; - variant10 = 0; - break; - } - case 6: { - variant = 6; - variant9 = 0; - variant10 = 0; - break; - } - case 7: { - variant = 7; - variant9 = 0; - variant10 = 0; - break; - } - case 8: { - variant = 8; - variant9 = 0; - variant10 = 0; - break; - } - case 9: { - const bindings_string_t *payload8 = &(*method).val.other; - variant = 9; - variant9 = (int32_t) (*payload8).ptr; - variant10 = (int32_t) (*payload8).len; - break; - } - } - int32_t option; - int32_t option13; - int32_t option14; - if ((path_with_query).is_some) { - const bindings_string_t *payload12 = &(path_with_query).val; - option = 1; - option13 = (int32_t) (*payload12).ptr; - option14 = (int32_t) (*payload12).len; - } else { - option = 0; - option13 = 0; - option14 = 0; - } - int32_t option23; - int32_t option24; - int32_t option25; - int32_t option26; - if ((scheme).is_some) { - const wasi_http_0_2_0_rc_2023_10_18_types_scheme_t *payload16 = &(scheme).val; - int32_t variant20; - int32_t variant21; - int32_t variant22; - switch ((int32_t) (*payload16).tag) { - case 0: { - variant20 = 0; - variant21 = 0; - variant22 = 0; - break; - } - case 1: { - variant20 = 1; - variant21 = 0; - variant22 = 0; - break; - } - case 2: { - const bindings_string_t *payload19 = &(*payload16).val.other; - variant20 = 2; - variant21 = (int32_t) (*payload19).ptr; - variant22 = (int32_t) (*payload19).len; - break; - } - } - option23 = 1; - option24 = variant20; - option25 = variant21; - option26 = variant22; - } else { - option23 = 0; - option24 = 0; - option25 = 0; - option26 = 0; - } - int32_t option29; - int32_t option30; - int32_t option31; - if ((authority).is_some) { - const bindings_string_t *payload28 = &(authority).val; - option29 = 1; - option30 = (int32_t) (*payload28).ptr; - option31 = (int32_t) (*payload28).len; - } else { - option29 = 0; - option30 = 0; - option31 = 0; - } - int32_t ret = __wasm_import_wasi_http_0_2_0_rc_2023_10_18_types_constructor_outgoing_request(variant, variant9, variant10, option, option13, option14, option23, option24, option25, option26, option29, option30, option31, (headers).__handle); - return (wasi_http_0_2_0_rc_2023_10_18_types_own_outgoing_request_t) { ret }; -} - -bool wasi_http_0_2_0_rc_2023_10_18_types_method_outgoing_request_write(wasi_http_0_2_0_rc_2023_10_18_types_borrow_outgoing_request_t self, wasi_http_0_2_0_rc_2023_10_18_types_own_outgoing_body_t *ret) { - __attribute__((__aligned__(4))) - uint8_t ret_area[8]; - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_http_0_2_0_rc_2023_10_18_types_method_outgoing_request_write((self).__handle, ptr); - wasi_http_0_2_0_rc_2023_10_18_types_result_own_outgoing_body_void_t result; - switch ((int32_t) (*((uint8_t*) (ptr + 0)))) { - case 0: { - result.is_err = false; - result.val.ok = (wasi_http_0_2_0_rc_2023_10_18_types_own_outgoing_body_t) { *((int32_t*) (ptr + 4)) }; - break; - } - case 1: { - result.is_err = true; - break; - } - } - if (!result.is_err) { - *ret = result.val.ok; - return 1; - } else { - return 0; - } -} - -void wasi_http_0_2_0_rc_2023_10_18_types_static_response_outparam_set(wasi_http_0_2_0_rc_2023_10_18_types_own_response_outparam_t param, wasi_http_0_2_0_rc_2023_10_18_types_result_own_outgoing_response_error_t *response) { - int32_t result; - int32_t result7; - int32_t result8; - int32_t result9; - if ((*response).is_err) { - const wasi_http_0_2_0_rc_2023_10_18_types_error_t *payload0 = &(*response).val.err;int32_t variant; - int32_t variant5; - int32_t variant6; - switch ((int32_t) (*payload0).tag) { - case 0: { - const bindings_string_t *payload1 = &(*payload0).val.invalid_url; - variant = 0; - variant5 = (int32_t) (*payload1).ptr; - variant6 = (int32_t) (*payload1).len; - break; - } - case 1: { - const bindings_string_t *payload2 = &(*payload0).val.timeout_error; - variant = 1; - variant5 = (int32_t) (*payload2).ptr; - variant6 = (int32_t) (*payload2).len; - break; - } - case 2: { - const bindings_string_t *payload3 = &(*payload0).val.protocol_error; - variant = 2; - variant5 = (int32_t) (*payload3).ptr; - variant6 = (int32_t) (*payload3).len; - break; - } - case 3: { - const bindings_string_t *payload4 = &(*payload0).val.unexpected_error; - variant = 3; - variant5 = (int32_t) (*payload4).ptr; - variant6 = (int32_t) (*payload4).len; - break; - } - } - result = 1; - result7 = variant; - result8 = variant5; - result9 = variant6; - } else { - const wasi_http_0_2_0_rc_2023_10_18_types_own_outgoing_response_t *payload = &(*response).val.ok;result = 0; - result7 = (*payload).__handle; - result8 = 0; - result9 = 0; - } - __wasm_import_wasi_http_0_2_0_rc_2023_10_18_types_static_response_outparam_set((param).__handle, result, result7, result8, result9); -} - -wasi_http_0_2_0_rc_2023_10_18_types_status_code_t wasi_http_0_2_0_rc_2023_10_18_types_method_incoming_response_status(wasi_http_0_2_0_rc_2023_10_18_types_borrow_incoming_response_t self) { - int32_t ret = __wasm_import_wasi_http_0_2_0_rc_2023_10_18_types_method_incoming_response_status((self).__handle); - return (uint16_t) (ret); -} - -wasi_http_0_2_0_rc_2023_10_18_types_own_headers_t wasi_http_0_2_0_rc_2023_10_18_types_method_incoming_response_headers(wasi_http_0_2_0_rc_2023_10_18_types_borrow_incoming_response_t self) { - int32_t ret = __wasm_import_wasi_http_0_2_0_rc_2023_10_18_types_method_incoming_response_headers((self).__handle); - return (wasi_http_0_2_0_rc_2023_10_18_types_own_headers_t) { ret }; -} - -bool wasi_http_0_2_0_rc_2023_10_18_types_method_incoming_response_consume(wasi_http_0_2_0_rc_2023_10_18_types_borrow_incoming_response_t self, wasi_http_0_2_0_rc_2023_10_18_types_own_incoming_body_t *ret) { - __attribute__((__aligned__(4))) - uint8_t ret_area[8]; - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_http_0_2_0_rc_2023_10_18_types_method_incoming_response_consume((self).__handle, ptr); - wasi_http_0_2_0_rc_2023_10_18_types_result_own_incoming_body_void_t result; - switch ((int32_t) (*((uint8_t*) (ptr + 0)))) { - case 0: { - result.is_err = false; - result.val.ok = (wasi_http_0_2_0_rc_2023_10_18_types_own_incoming_body_t) { *((int32_t*) (ptr + 4)) }; - break; - } - case 1: { - result.is_err = true; - break; - } - } - if (!result.is_err) { - *ret = result.val.ok; - return 1; - } else { - return 0; - } -} - -bool wasi_http_0_2_0_rc_2023_10_18_types_method_incoming_body_stream(wasi_http_0_2_0_rc_2023_10_18_types_borrow_incoming_body_t self, wasi_http_0_2_0_rc_2023_10_18_types_own_input_stream_t *ret) { - __attribute__((__aligned__(4))) - uint8_t ret_area[8]; - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_http_0_2_0_rc_2023_10_18_types_method_incoming_body_stream((self).__handle, ptr); - wasi_http_0_2_0_rc_2023_10_18_types_result_own_input_stream_void_t result; - switch ((int32_t) (*((uint8_t*) (ptr + 0)))) { - case 0: { - result.is_err = false; - result.val.ok = (wasi_http_0_2_0_rc_2023_10_18_types_own_input_stream_t) { *((int32_t*) (ptr + 4)) }; - break; - } - case 1: { - result.is_err = true; - break; - } - } - if (!result.is_err) { - *ret = result.val.ok; - return 1; - } else { - return 0; - } -} - -wasi_http_0_2_0_rc_2023_10_18_types_own_future_trailers_t wasi_http_0_2_0_rc_2023_10_18_types_static_incoming_body_finish(wasi_http_0_2_0_rc_2023_10_18_types_own_incoming_body_t this_) { - int32_t ret = __wasm_import_wasi_http_0_2_0_rc_2023_10_18_types_static_incoming_body_finish((this_).__handle); - return (wasi_http_0_2_0_rc_2023_10_18_types_own_future_trailers_t) { ret }; -} - -wasi_http_0_2_0_rc_2023_10_18_types_own_pollable_t wasi_http_0_2_0_rc_2023_10_18_types_method_future_trailers_subscribe(wasi_http_0_2_0_rc_2023_10_18_types_borrow_future_trailers_t self) { - int32_t ret = __wasm_import_wasi_http_0_2_0_rc_2023_10_18_types_method_future_trailers_subscribe((self).__handle); - return (wasi_http_0_2_0_rc_2023_10_18_types_own_pollable_t) { ret }; -} - -bool wasi_http_0_2_0_rc_2023_10_18_types_method_future_trailers_get(wasi_http_0_2_0_rc_2023_10_18_types_borrow_future_trailers_t self, wasi_http_0_2_0_rc_2023_10_18_types_result_own_trailers_error_t *ret) { - __attribute__((__aligned__(4))) - uint8_t ret_area[20]; - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_http_0_2_0_rc_2023_10_18_types_method_future_trailers_get((self).__handle, ptr); - wasi_http_0_2_0_rc_2023_10_18_types_option_result_own_trailers_error_t option; - switch ((int32_t) (*((uint8_t*) (ptr + 0)))) { - case 0: { - option.is_some = false; - break; - } - case 1: { - option.is_some = true; - wasi_http_0_2_0_rc_2023_10_18_types_result_own_trailers_error_t result; - switch ((int32_t) (*((uint8_t*) (ptr + 4)))) { - case 0: { - result.is_err = false; - result.val.ok = (wasi_http_0_2_0_rc_2023_10_18_types_own_trailers_t) { *((int32_t*) (ptr + 8)) }; - break; - } - case 1: { - result.is_err = true; - wasi_http_0_2_0_rc_2023_10_18_types_error_t variant; - variant.tag = (int32_t) (*((uint8_t*) (ptr + 8))); - switch ((int32_t) variant.tag) { - case 0: { - variant.val.invalid_url = (bindings_string_t) { (uint8_t*)(*((int32_t*) (ptr + 12))), (size_t)(*((int32_t*) (ptr + 16))) }; - break; - } - case 1: { - variant.val.timeout_error = (bindings_string_t) { (uint8_t*)(*((int32_t*) (ptr + 12))), (size_t)(*((int32_t*) (ptr + 16))) }; - break; - } - case 2: { - variant.val.protocol_error = (bindings_string_t) { (uint8_t*)(*((int32_t*) (ptr + 12))), (size_t)(*((int32_t*) (ptr + 16))) }; - break; - } - case 3: { - variant.val.unexpected_error = (bindings_string_t) { (uint8_t*)(*((int32_t*) (ptr + 12))), (size_t)(*((int32_t*) (ptr + 16))) }; - break; - } - } - - result.val.err = variant; - break; - } - } - - option.val = result; - break; - } - } - *ret = option.val; - return option.is_some; -} - -wasi_http_0_2_0_rc_2023_10_18_types_own_outgoing_response_t wasi_http_0_2_0_rc_2023_10_18_types_constructor_outgoing_response(wasi_http_0_2_0_rc_2023_10_18_types_status_code_t status_code, wasi_http_0_2_0_rc_2023_10_18_types_borrow_headers_t headers) { - int32_t ret = __wasm_import_wasi_http_0_2_0_rc_2023_10_18_types_constructor_outgoing_response((int32_t) (status_code), (headers).__handle); - return (wasi_http_0_2_0_rc_2023_10_18_types_own_outgoing_response_t) { ret }; -} - -bool wasi_http_0_2_0_rc_2023_10_18_types_method_outgoing_response_write(wasi_http_0_2_0_rc_2023_10_18_types_borrow_outgoing_response_t self, wasi_http_0_2_0_rc_2023_10_18_types_own_outgoing_body_t *ret) { - __attribute__((__aligned__(4))) - uint8_t ret_area[8]; - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_http_0_2_0_rc_2023_10_18_types_method_outgoing_response_write((self).__handle, ptr); - wasi_http_0_2_0_rc_2023_10_18_types_result_own_outgoing_body_void_t result; - switch ((int32_t) (*((uint8_t*) (ptr + 0)))) { - case 0: { - result.is_err = false; - result.val.ok = (wasi_http_0_2_0_rc_2023_10_18_types_own_outgoing_body_t) { *((int32_t*) (ptr + 4)) }; - break; - } - case 1: { - result.is_err = true; - break; - } - } - if (!result.is_err) { - *ret = result.val.ok; - return 1; - } else { - return 0; - } -} - -bool wasi_http_0_2_0_rc_2023_10_18_types_method_outgoing_body_write(wasi_http_0_2_0_rc_2023_10_18_types_borrow_outgoing_body_t self, wasi_http_0_2_0_rc_2023_10_18_types_own_output_stream_t *ret) { - __attribute__((__aligned__(4))) - uint8_t ret_area[8]; - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_http_0_2_0_rc_2023_10_18_types_method_outgoing_body_write((self).__handle, ptr); - wasi_http_0_2_0_rc_2023_10_18_types_result_own_output_stream_void_t result; - switch ((int32_t) (*((uint8_t*) (ptr + 0)))) { - case 0: { - result.is_err = false; - result.val.ok = (wasi_http_0_2_0_rc_2023_10_18_types_own_output_stream_t) { *((int32_t*) (ptr + 4)) }; - break; - } - case 1: { - result.is_err = true; - break; - } - } - if (!result.is_err) { - *ret = result.val.ok; - return 1; - } else { - return 0; - } -} - -void wasi_http_0_2_0_rc_2023_10_18_types_static_outgoing_body_finish(wasi_http_0_2_0_rc_2023_10_18_types_own_outgoing_body_t this_, wasi_http_0_2_0_rc_2023_10_18_types_own_trailers_t *maybe_trailers) { - wasi_http_0_2_0_rc_2023_10_18_types_option_own_trailers_t trailers; - trailers.is_some = maybe_trailers != NULL;if (maybe_trailers) { - trailers.val = *maybe_trailers; - } - int32_t option; - int32_t option1; - if ((trailers).is_some) { - const wasi_http_0_2_0_rc_2023_10_18_types_own_trailers_t *payload0 = &(trailers).val; - option = 1; - option1 = (*payload0).__handle; - } else { - option = 0; - option1 = 0; - } - __wasm_import_wasi_http_0_2_0_rc_2023_10_18_types_static_outgoing_body_finish((this_).__handle, option, option1); -} - -bool wasi_http_0_2_0_rc_2023_10_18_types_method_future_incoming_response_get(wasi_http_0_2_0_rc_2023_10_18_types_borrow_future_incoming_response_t self, wasi_http_0_2_0_rc_2023_10_18_types_result_result_own_incoming_response_error_void_t *ret) { - __attribute__((__aligned__(4))) - uint8_t ret_area[24]; - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_http_0_2_0_rc_2023_10_18_types_method_future_incoming_response_get((self).__handle, ptr); - wasi_http_0_2_0_rc_2023_10_18_types_option_result_result_own_incoming_response_error_void_t option; - switch ((int32_t) (*((uint8_t*) (ptr + 0)))) { - case 0: { - option.is_some = false; - break; - } - case 1: { - option.is_some = true; - wasi_http_0_2_0_rc_2023_10_18_types_result_result_own_incoming_response_error_void_t result0; - switch ((int32_t) (*((uint8_t*) (ptr + 4)))) { - case 0: { - result0.is_err = false; - wasi_http_0_2_0_rc_2023_10_18_types_result_own_incoming_response_error_t result; - switch ((int32_t) (*((uint8_t*) (ptr + 8)))) { - case 0: { - result.is_err = false; - result.val.ok = (wasi_http_0_2_0_rc_2023_10_18_types_own_incoming_response_t) { *((int32_t*) (ptr + 12)) }; - break; - } - case 1: { - result.is_err = true; - wasi_http_0_2_0_rc_2023_10_18_types_error_t variant; - variant.tag = (int32_t) (*((uint8_t*) (ptr + 12))); - switch ((int32_t) variant.tag) { - case 0: { - variant.val.invalid_url = (bindings_string_t) { (uint8_t*)(*((int32_t*) (ptr + 16))), (size_t)(*((int32_t*) (ptr + 20))) }; - break; - } - case 1: { - variant.val.timeout_error = (bindings_string_t) { (uint8_t*)(*((int32_t*) (ptr + 16))), (size_t)(*((int32_t*) (ptr + 20))) }; - break; - } - case 2: { - variant.val.protocol_error = (bindings_string_t) { (uint8_t*)(*((int32_t*) (ptr + 16))), (size_t)(*((int32_t*) (ptr + 20))) }; - break; - } - case 3: { - variant.val.unexpected_error = (bindings_string_t) { (uint8_t*)(*((int32_t*) (ptr + 16))), (size_t)(*((int32_t*) (ptr + 20))) }; - break; - } - } - - result.val.err = variant; - break; - } - } - - result0.val.ok = result; - break; - } - case 1: { - result0.is_err = true; - break; - } - } - - option.val = result0; - break; - } - } - *ret = option.val; - return option.is_some; -} - -wasi_http_0_2_0_rc_2023_10_18_types_own_pollable_t wasi_http_0_2_0_rc_2023_10_18_types_method_future_incoming_response_subscribe(wasi_http_0_2_0_rc_2023_10_18_types_borrow_future_incoming_response_t self) { - int32_t ret = __wasm_import_wasi_http_0_2_0_rc_2023_10_18_types_method_future_incoming_response_subscribe((self).__handle); - return (wasi_http_0_2_0_rc_2023_10_18_types_own_pollable_t) { ret }; -} - -bool wasi_http_0_2_0_rc_2023_10_18_outgoing_handler_handle(wasi_http_0_2_0_rc_2023_10_18_outgoing_handler_own_outgoing_request_t request, wasi_http_0_2_0_rc_2023_10_18_outgoing_handler_request_options_t *maybe_options, wasi_http_0_2_0_rc_2023_10_18_outgoing_handler_own_future_incoming_response_t *ret, wasi_http_0_2_0_rc_2023_10_18_outgoing_handler_error_t *err) { - __attribute__((__aligned__(4))) - uint8_t ret_area[16]; - wasi_http_0_2_0_rc_2023_10_18_outgoing_handler_option_request_options_t options; - options.is_some = maybe_options != NULL;if (maybe_options) { - options.val = *maybe_options; - } - int32_t option12; - int32_t option13; - int32_t option14; - int32_t option15; - int32_t option16; - int32_t option17; - int32_t option18; - if ((options).is_some) { - const wasi_http_0_2_0_rc_2023_10_18_outgoing_handler_request_options_t *payload0 = &(options).val; - int32_t option; - int32_t option3; - if (((*payload0).connect_timeout_ms).is_some) { - const uint32_t *payload2 = &((*payload0).connect_timeout_ms).val; - option = 1; - option3 = (int32_t) (*payload2); - } else { - option = 0; - option3 = 0; - } - int32_t option6; - int32_t option7; - if (((*payload0).first_byte_timeout_ms).is_some) { - const uint32_t *payload5 = &((*payload0).first_byte_timeout_ms).val; - option6 = 1; - option7 = (int32_t) (*payload5); - } else { - option6 = 0; - option7 = 0; - } - int32_t option10; - int32_t option11; - if (((*payload0).between_bytes_timeout_ms).is_some) { - const uint32_t *payload9 = &((*payload0).between_bytes_timeout_ms).val; - option10 = 1; - option11 = (int32_t) (*payload9); - } else { - option10 = 0; - option11 = 0; - } - option12 = 1; - option13 = option; - option14 = option3; - option15 = option6; - option16 = option7; - option17 = option10; - option18 = option11; - } else { - option12 = 0; - option13 = 0; - option14 = 0; - option15 = 0; - option16 = 0; - option17 = 0; - option18 = 0; - } - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_http_0_2_0_rc_2023_10_18_outgoing_handler_handle((request).__handle, option12, option13, option14, option15, option16, option17, option18, ptr); - wasi_http_0_2_0_rc_2023_10_18_outgoing_handler_result_own_future_incoming_response_error_t result; - switch ((int32_t) (*((uint8_t*) (ptr + 0)))) { - case 0: { - result.is_err = false; - result.val.ok = (wasi_http_0_2_0_rc_2023_10_18_outgoing_handler_own_future_incoming_response_t) { *((int32_t*) (ptr + 4)) }; - break; - } - case 1: { - result.is_err = true; - wasi_http_0_2_0_rc_2023_10_18_types_error_t variant; - variant.tag = (int32_t) (*((uint8_t*) (ptr + 4))); - switch ((int32_t) variant.tag) { - case 0: { - variant.val.invalid_url = (bindings_string_t) { (uint8_t*)(*((int32_t*) (ptr + 8))), (size_t)(*((int32_t*) (ptr + 12))) }; - break; - } - case 1: { - variant.val.timeout_error = (bindings_string_t) { (uint8_t*)(*((int32_t*) (ptr + 8))), (size_t)(*((int32_t*) (ptr + 12))) }; - break; - } - case 2: { - variant.val.protocol_error = (bindings_string_t) { (uint8_t*)(*((int32_t*) (ptr + 8))), (size_t)(*((int32_t*) (ptr + 12))) }; - break; - } - case 3: { - variant.val.unexpected_error = (bindings_string_t) { (uint8_t*)(*((int32_t*) (ptr + 8))), (size_t)(*((int32_t*) (ptr + 12))) }; - break; - } - } - - result.val.err = variant; - break; - } - } - if (!result.is_err) { - *ret = result.val.ok; - return 1; - } else { - *err = result.val.err; - return 0; - } -} - -__attribute__((__export_name__("wasi:cli/run@0.2.0-rc-2023-10-18#run"))) -int32_t __wasm_export_exports_wasi_cli_0_2_0_rc_2023_10_18_run_run(void) { - exports_wasi_cli_0_2_0_rc_2023_10_18_run_result_void_void_t ret; - ret.is_err = !exports_wasi_cli_0_2_0_rc_2023_10_18_run_run(); - int32_t result; - if ((ret).is_err) { - result = 1; - } else { - result = 0; - } - return result; -} - -__attribute__((__export_name__("wasi:http/incoming-handler@0.2.0-rc-2023-10-18#handle"))) -void __wasm_export_exports_wasi_http_0_2_0_rc_2023_10_18_incoming_handler_handle(int32_t arg, int32_t arg0) { - exports_wasi_http_0_2_0_rc_2023_10_18_incoming_handler_handle((exports_wasi_http_0_2_0_rc_2023_10_18_incoming_handler_own_incoming_request_t) { arg }, (exports_wasi_http_0_2_0_rc_2023_10_18_incoming_handler_own_response_outparam_t) { arg0 }); -} - -extern void __component_type_object_force_link_bindings(void); -void __component_type_object_force_link_bindings_public_use_in_this_compilation_unit(void) { - __component_type_object_force_link_bindings(); -} diff --git a/host-apis/wasi-0.2.0-rc-2023-10-18/bindings/bindings.h b/host-apis/wasi-0.2.0-rc-2023-10-18/bindings/bindings.h deleted file mode 100644 index d6a4e95b..00000000 --- a/host-apis/wasi-0.2.0-rc-2023-10-18/bindings/bindings.h +++ /dev/null @@ -1,2909 +0,0 @@ -// Generated by `wit-bindgen` 0.16.0. DO NOT EDIT! -#ifndef __BINDINGS_BINDINGS_H -#define __BINDINGS_BINDINGS_H -#ifdef __cplusplus -extern "C" { -#endif - -#include -#include -#include -#include - -typedef struct { - uint8_t*ptr; - size_t len; -} bindings_string_t; - -// A time and date in seconds plus nanoseconds. -typedef struct { - uint64_t seconds; - uint32_t nanoseconds; -} wasi_clocks_0_2_0_rc_2023_10_18_wall_clock_datetime_t; - -typedef struct wasi_io_0_2_0_rc_2023_10_18_poll_own_pollable_t { - int32_t __handle; -} wasi_io_0_2_0_rc_2023_10_18_poll_own_pollable_t; - -typedef struct wasi_io_0_2_0_rc_2023_10_18_poll_borrow_pollable_t { - int32_t __handle; -} wasi_io_0_2_0_rc_2023_10_18_poll_borrow_pollable_t; - -typedef struct { - wasi_io_0_2_0_rc_2023_10_18_poll_borrow_pollable_t *ptr; - size_t len; -} wasi_io_0_2_0_rc_2023_10_18_poll_list_borrow_pollable_t; - -typedef struct { - uint32_t *ptr; - size_t len; -} bindings_list_u32_t; - -// A timestamp in nanoseconds. -typedef uint64_t wasi_clocks_0_2_0_rc_2023_10_18_monotonic_clock_instant_t; - -typedef wasi_io_0_2_0_rc_2023_10_18_poll_own_pollable_t wasi_clocks_0_2_0_rc_2023_10_18_monotonic_clock_own_pollable_t; - -typedef wasi_clocks_0_2_0_rc_2023_10_18_wall_clock_datetime_t wasi_clocks_0_2_0_rc_2023_10_18_timezone_datetime_t; - -// Information useful for displaying the timezone of a specific `datetime`. -// -// This information may vary within a single `timezone` to reflect daylight -// saving time adjustments. -typedef struct { - // The number of seconds difference between UTC time and the local - // time of the timezone. - // - // The returned value will always be less than 86400 which is the - // number of seconds in a day (24*60*60). - // - // In implementations that do not expose an actual time zone, this - // should return 0. - int32_t utc_offset; - // The abbreviated name of the timezone to display to a user. The name - // `UTC` indicates Coordinated Universal Time. Otherwise, this should - // reference local standards for the name of the time zone. - // - // In implementations that do not expose an actual time zone, this - // should be the string `UTC`. - // - // In time zones that do not have an applicable name, a formatted - // representation of the UTC offset may be returned, such as `-04:00`. - bindings_string_t name; - // Whether daylight saving time is active. - // - // In implementations that do not expose an actual time zone, this - // should return false. - bool in_daylight_saving_time; -} wasi_clocks_0_2_0_rc_2023_10_18_timezone_timezone_display_t; - -typedef struct wasi_io_0_2_0_rc_2023_10_18_streams_own_error_t { - int32_t __handle; -} wasi_io_0_2_0_rc_2023_10_18_streams_own_error_t; - -typedef struct wasi_io_0_2_0_rc_2023_10_18_streams_borrow_error_t { - int32_t __handle; -} wasi_io_0_2_0_rc_2023_10_18_streams_borrow_error_t; - -// An error for input-stream and output-stream operations. -typedef struct { - uint8_t tag; - union { - wasi_io_0_2_0_rc_2023_10_18_streams_own_error_t last_operation_failed; - } val; -} wasi_io_0_2_0_rc_2023_10_18_streams_stream_error_t; - -// The last operation (a write or flush) failed before completion. -// -// More information is available in the `error` payload. -#define WASI_IO_0_2_0_RC_2023_10_18_STREAMS_STREAM_ERROR_LAST_OPERATION_FAILED 0 -// The stream is closed: no more input will be accepted by the -// stream. A closed output-stream will return this error on all -// future operations. -#define WASI_IO_0_2_0_RC_2023_10_18_STREAMS_STREAM_ERROR_CLOSED 1 - -typedef struct wasi_io_0_2_0_rc_2023_10_18_streams_own_input_stream_t { - int32_t __handle; -} wasi_io_0_2_0_rc_2023_10_18_streams_own_input_stream_t; - -typedef struct wasi_io_0_2_0_rc_2023_10_18_streams_borrow_input_stream_t { - int32_t __handle; -} wasi_io_0_2_0_rc_2023_10_18_streams_borrow_input_stream_t; - -typedef struct wasi_io_0_2_0_rc_2023_10_18_streams_own_output_stream_t { - int32_t __handle; -} wasi_io_0_2_0_rc_2023_10_18_streams_own_output_stream_t; - -typedef struct wasi_io_0_2_0_rc_2023_10_18_streams_borrow_output_stream_t { - int32_t __handle; -} wasi_io_0_2_0_rc_2023_10_18_streams_borrow_output_stream_t; - -typedef struct { - uint8_t *ptr; - size_t len; -} bindings_list_u8_t; - -typedef struct { - bool is_err; - union { - bindings_list_u8_t ok; - wasi_io_0_2_0_rc_2023_10_18_streams_stream_error_t err; - } val; -} wasi_io_0_2_0_rc_2023_10_18_streams_result_list_u8_stream_error_t; - -typedef struct { - bool is_err; - union { - uint64_t ok; - wasi_io_0_2_0_rc_2023_10_18_streams_stream_error_t err; - } val; -} wasi_io_0_2_0_rc_2023_10_18_streams_result_u64_stream_error_t; - -typedef wasi_io_0_2_0_rc_2023_10_18_poll_own_pollable_t wasi_io_0_2_0_rc_2023_10_18_streams_own_pollable_t; - -typedef struct { - bool is_err; - union { - wasi_io_0_2_0_rc_2023_10_18_streams_stream_error_t err; - } val; -} wasi_io_0_2_0_rc_2023_10_18_streams_result_void_stream_error_t; - -typedef wasi_clocks_0_2_0_rc_2023_10_18_wall_clock_datetime_t wasi_filesystem_0_2_0_rc_2023_10_18_types_datetime_t; - -// File size or length of a region within a file. -typedef uint64_t wasi_filesystem_0_2_0_rc_2023_10_18_types_filesize_t; - -// The type of a filesystem object referenced by a descriptor. -// -// Note: This was called `filetype` in earlier versions of WASI. -typedef uint8_t wasi_filesystem_0_2_0_rc_2023_10_18_types_descriptor_type_t; - -// The type of the descriptor or file is unknown or is different from -// any of the other types specified. -#define WASI_FILESYSTEM_0_2_0_RC_2023_10_18_TYPES_DESCRIPTOR_TYPE_UNKNOWN 0 -// The descriptor refers to a block device inode. -#define WASI_FILESYSTEM_0_2_0_RC_2023_10_18_TYPES_DESCRIPTOR_TYPE_BLOCK_DEVICE 1 -// The descriptor refers to a character device inode. -#define WASI_FILESYSTEM_0_2_0_RC_2023_10_18_TYPES_DESCRIPTOR_TYPE_CHARACTER_DEVICE 2 -// The descriptor refers to a directory inode. -#define WASI_FILESYSTEM_0_2_0_RC_2023_10_18_TYPES_DESCRIPTOR_TYPE_DIRECTORY 3 -// The descriptor refers to a named pipe. -#define WASI_FILESYSTEM_0_2_0_RC_2023_10_18_TYPES_DESCRIPTOR_TYPE_FIFO 4 -// The file refers to a symbolic link inode. -#define WASI_FILESYSTEM_0_2_0_RC_2023_10_18_TYPES_DESCRIPTOR_TYPE_SYMBOLIC_LINK 5 -// The descriptor refers to a regular file inode. -#define WASI_FILESYSTEM_0_2_0_RC_2023_10_18_TYPES_DESCRIPTOR_TYPE_REGULAR_FILE 6 -// The descriptor refers to a socket. -#define WASI_FILESYSTEM_0_2_0_RC_2023_10_18_TYPES_DESCRIPTOR_TYPE_SOCKET 7 - -// Descriptor flags. -// -// Note: This was called `fdflags` in earlier versions of WASI. -typedef uint8_t wasi_filesystem_0_2_0_rc_2023_10_18_types_descriptor_flags_t; - -// Read mode: Data can be read. -#define WASI_FILESYSTEM_0_2_0_RC_2023_10_18_TYPES_DESCRIPTOR_FLAGS_READ (1 << 0) -// Write mode: Data can be written to. -#define WASI_FILESYSTEM_0_2_0_RC_2023_10_18_TYPES_DESCRIPTOR_FLAGS_WRITE (1 << 1) -// Request that writes be performed according to synchronized I/O file -// integrity completion. The data stored in the file and the file's -// metadata are synchronized. This is similar to `O_SYNC` in POSIX. -// -// The precise semantics of this operation have not yet been defined for -// WASI. At this time, it should be interpreted as a request, and not a -// requirement. -#define WASI_FILESYSTEM_0_2_0_RC_2023_10_18_TYPES_DESCRIPTOR_FLAGS_FILE_INTEGRITY_SYNC (1 << 2) -// Request that writes be performed according to synchronized I/O data -// integrity completion. Only the data stored in the file is -// synchronized. This is similar to `O_DSYNC` in POSIX. -// -// The precise semantics of this operation have not yet been defined for -// WASI. At this time, it should be interpreted as a request, and not a -// requirement. -#define WASI_FILESYSTEM_0_2_0_RC_2023_10_18_TYPES_DESCRIPTOR_FLAGS_DATA_INTEGRITY_SYNC (1 << 3) -// Requests that reads be performed at the same level of integrety -// requested for writes. This is similar to `O_RSYNC` in POSIX. -// -// The precise semantics of this operation have not yet been defined for -// WASI. At this time, it should be interpreted as a request, and not a -// requirement. -#define WASI_FILESYSTEM_0_2_0_RC_2023_10_18_TYPES_DESCRIPTOR_FLAGS_REQUESTED_WRITE_SYNC (1 << 4) -// Mutating directories mode: Directory contents may be mutated. -// -// When this flag is unset on a descriptor, operations using the -// descriptor which would create, rename, delete, modify the data or -// metadata of filesystem objects, or obtain another handle which -// would permit any of those, shall fail with `error-code::read-only` if -// they would otherwise succeed. -// -// This may only be set on directories. -#define WASI_FILESYSTEM_0_2_0_RC_2023_10_18_TYPES_DESCRIPTOR_FLAGS_MUTATE_DIRECTORY (1 << 5) - -// Flags determining the method of how paths are resolved. -typedef uint8_t wasi_filesystem_0_2_0_rc_2023_10_18_types_path_flags_t; - -// As long as the resolved path corresponds to a symbolic link, it is -// expanded. -#define WASI_FILESYSTEM_0_2_0_RC_2023_10_18_TYPES_PATH_FLAGS_SYMLINK_FOLLOW (1 << 0) - -// Open flags used by `open-at`. -typedef uint8_t wasi_filesystem_0_2_0_rc_2023_10_18_types_open_flags_t; - -// Create file if it does not exist, similar to `O_CREAT` in POSIX. -#define WASI_FILESYSTEM_0_2_0_RC_2023_10_18_TYPES_OPEN_FLAGS_CREATE (1 << 0) -// Fail if not a directory, similar to `O_DIRECTORY` in POSIX. -#define WASI_FILESYSTEM_0_2_0_RC_2023_10_18_TYPES_OPEN_FLAGS_DIRECTORY (1 << 1) -// Fail if file already exists, similar to `O_EXCL` in POSIX. -#define WASI_FILESYSTEM_0_2_0_RC_2023_10_18_TYPES_OPEN_FLAGS_EXCLUSIVE (1 << 2) -// Truncate file to size 0, similar to `O_TRUNC` in POSIX. -#define WASI_FILESYSTEM_0_2_0_RC_2023_10_18_TYPES_OPEN_FLAGS_TRUNCATE (1 << 3) - -// Permissions mode used by `open-at`, `change-file-permissions-at`, and -// similar. -typedef uint8_t wasi_filesystem_0_2_0_rc_2023_10_18_types_modes_t; - -// True if the resource is considered readable by the containing -// filesystem. -#define WASI_FILESYSTEM_0_2_0_RC_2023_10_18_TYPES_MODES_READABLE (1 << 0) -// True if the resource is considered writable by the containing -// filesystem. -#define WASI_FILESYSTEM_0_2_0_RC_2023_10_18_TYPES_MODES_WRITABLE (1 << 1) -// True if the resource is considered executable by the containing -// filesystem. This does not apply to directories. -#define WASI_FILESYSTEM_0_2_0_RC_2023_10_18_TYPES_MODES_EXECUTABLE (1 << 2) - -// Access type used by `access-at`. -typedef struct { - uint8_t tag; - union { - wasi_filesystem_0_2_0_rc_2023_10_18_types_modes_t access; - } val; -} wasi_filesystem_0_2_0_rc_2023_10_18_types_access_type_t; - -// Test for readability, writeability, or executability. -#define WASI_FILESYSTEM_0_2_0_RC_2023_10_18_TYPES_ACCESS_TYPE_ACCESS 0 -// Test whether the path exists. -#define WASI_FILESYSTEM_0_2_0_RC_2023_10_18_TYPES_ACCESS_TYPE_EXISTS 1 - -// Number of hard links to an inode. -typedef uint64_t wasi_filesystem_0_2_0_rc_2023_10_18_types_link_count_t; - -typedef struct { - bool is_some; - wasi_filesystem_0_2_0_rc_2023_10_18_types_datetime_t val; -} wasi_filesystem_0_2_0_rc_2023_10_18_types_option_datetime_t; - -// File attributes. -// -// Note: This was called `filestat` in earlier versions of WASI. -typedef struct { - // File type. - wasi_filesystem_0_2_0_rc_2023_10_18_types_descriptor_type_t type; - // Number of hard links to the file. - wasi_filesystem_0_2_0_rc_2023_10_18_types_link_count_t link_count; - // For regular files, the file size in bytes. For symbolic links, the - // length in bytes of the pathname contained in the symbolic link. - wasi_filesystem_0_2_0_rc_2023_10_18_types_filesize_t size; - // Last data access timestamp. - // - // If the `option` is none, the platform doesn't maintain an access - // timestamp for this file. - wasi_filesystem_0_2_0_rc_2023_10_18_types_option_datetime_t data_access_timestamp; - // Last data modification timestamp. - // - // If the `option` is none, the platform doesn't maintain a - // modification timestamp for this file. - wasi_filesystem_0_2_0_rc_2023_10_18_types_option_datetime_t data_modification_timestamp; - // Last file status-change timestamp. - // - // If the `option` is none, the platform doesn't maintain a - // status-change timestamp for this file. - wasi_filesystem_0_2_0_rc_2023_10_18_types_option_datetime_t status_change_timestamp; -} wasi_filesystem_0_2_0_rc_2023_10_18_types_descriptor_stat_t; - -// When setting a timestamp, this gives the value to set it to. -typedef struct { - uint8_t tag; - union { - wasi_filesystem_0_2_0_rc_2023_10_18_types_datetime_t timestamp; - } val; -} wasi_filesystem_0_2_0_rc_2023_10_18_types_new_timestamp_t; - -// Leave the timestamp set to its previous value. -#define WASI_FILESYSTEM_0_2_0_RC_2023_10_18_TYPES_NEW_TIMESTAMP_NO_CHANGE 0 -// Set the timestamp to the current time of the system clock associated -// with the filesystem. -#define WASI_FILESYSTEM_0_2_0_RC_2023_10_18_TYPES_NEW_TIMESTAMP_NOW 1 -// Set the timestamp to the given value. -#define WASI_FILESYSTEM_0_2_0_RC_2023_10_18_TYPES_NEW_TIMESTAMP_TIMESTAMP 2 - -// A directory entry. -typedef struct { - // The type of the file referred to by this directory entry. - wasi_filesystem_0_2_0_rc_2023_10_18_types_descriptor_type_t type; - // The name of the object. - bindings_string_t name; -} wasi_filesystem_0_2_0_rc_2023_10_18_types_directory_entry_t; - -// Error codes returned by functions, similar to `errno` in POSIX. -// Not all of these error codes are returned by the functions provided by this -// API; some are used in higher-level library layers, and others are provided -// merely for alignment with POSIX. -typedef uint8_t wasi_filesystem_0_2_0_rc_2023_10_18_types_error_code_t; - -// Permission denied, similar to `EACCES` in POSIX. -#define WASI_FILESYSTEM_0_2_0_RC_2023_10_18_TYPES_ERROR_CODE_ACCESS 0 -// Resource unavailable, or operation would block, similar to `EAGAIN` and `EWOULDBLOCK` in POSIX. -#define WASI_FILESYSTEM_0_2_0_RC_2023_10_18_TYPES_ERROR_CODE_WOULD_BLOCK 1 -// Connection already in progress, similar to `EALREADY` in POSIX. -#define WASI_FILESYSTEM_0_2_0_RC_2023_10_18_TYPES_ERROR_CODE_ALREADY 2 -// Bad descriptor, similar to `EBADF` in POSIX. -#define WASI_FILESYSTEM_0_2_0_RC_2023_10_18_TYPES_ERROR_CODE_BAD_DESCRIPTOR 3 -// Device or resource busy, similar to `EBUSY` in POSIX. -#define WASI_FILESYSTEM_0_2_0_RC_2023_10_18_TYPES_ERROR_CODE_BUSY 4 -// Resource deadlock would occur, similar to `EDEADLK` in POSIX. -#define WASI_FILESYSTEM_0_2_0_RC_2023_10_18_TYPES_ERROR_CODE_DEADLOCK 5 -// Storage quota exceeded, similar to `EDQUOT` in POSIX. -#define WASI_FILESYSTEM_0_2_0_RC_2023_10_18_TYPES_ERROR_CODE_QUOTA 6 -// File exists, similar to `EEXIST` in POSIX. -#define WASI_FILESYSTEM_0_2_0_RC_2023_10_18_TYPES_ERROR_CODE_EXIST 7 -// File too large, similar to `EFBIG` in POSIX. -#define WASI_FILESYSTEM_0_2_0_RC_2023_10_18_TYPES_ERROR_CODE_FILE_TOO_LARGE 8 -// Illegal byte sequence, similar to `EILSEQ` in POSIX. -#define WASI_FILESYSTEM_0_2_0_RC_2023_10_18_TYPES_ERROR_CODE_ILLEGAL_BYTE_SEQUENCE 9 -// Operation in progress, similar to `EINPROGRESS` in POSIX. -#define WASI_FILESYSTEM_0_2_0_RC_2023_10_18_TYPES_ERROR_CODE_IN_PROGRESS 10 -// Interrupted function, similar to `EINTR` in POSIX. -#define WASI_FILESYSTEM_0_2_0_RC_2023_10_18_TYPES_ERROR_CODE_INTERRUPTED 11 -// Invalid argument, similar to `EINVAL` in POSIX. -#define WASI_FILESYSTEM_0_2_0_RC_2023_10_18_TYPES_ERROR_CODE_INVALID 12 -// I/O error, similar to `EIO` in POSIX. -#define WASI_FILESYSTEM_0_2_0_RC_2023_10_18_TYPES_ERROR_CODE_IO 13 -// Is a directory, similar to `EISDIR` in POSIX. -#define WASI_FILESYSTEM_0_2_0_RC_2023_10_18_TYPES_ERROR_CODE_IS_DIRECTORY 14 -// Too many levels of symbolic links, similar to `ELOOP` in POSIX. -#define WASI_FILESYSTEM_0_2_0_RC_2023_10_18_TYPES_ERROR_CODE_LOOP 15 -// Too many links, similar to `EMLINK` in POSIX. -#define WASI_FILESYSTEM_0_2_0_RC_2023_10_18_TYPES_ERROR_CODE_TOO_MANY_LINKS 16 -// Message too large, similar to `EMSGSIZE` in POSIX. -#define WASI_FILESYSTEM_0_2_0_RC_2023_10_18_TYPES_ERROR_CODE_MESSAGE_SIZE 17 -// Filename too long, similar to `ENAMETOOLONG` in POSIX. -#define WASI_FILESYSTEM_0_2_0_RC_2023_10_18_TYPES_ERROR_CODE_NAME_TOO_LONG 18 -// No such device, similar to `ENODEV` in POSIX. -#define WASI_FILESYSTEM_0_2_0_RC_2023_10_18_TYPES_ERROR_CODE_NO_DEVICE 19 -// No such file or directory, similar to `ENOENT` in POSIX. -#define WASI_FILESYSTEM_0_2_0_RC_2023_10_18_TYPES_ERROR_CODE_NO_ENTRY 20 -// No locks available, similar to `ENOLCK` in POSIX. -#define WASI_FILESYSTEM_0_2_0_RC_2023_10_18_TYPES_ERROR_CODE_NO_LOCK 21 -// Not enough space, similar to `ENOMEM` in POSIX. -#define WASI_FILESYSTEM_0_2_0_RC_2023_10_18_TYPES_ERROR_CODE_INSUFFICIENT_MEMORY 22 -// No space left on device, similar to `ENOSPC` in POSIX. -#define WASI_FILESYSTEM_0_2_0_RC_2023_10_18_TYPES_ERROR_CODE_INSUFFICIENT_SPACE 23 -// Not a directory or a symbolic link to a directory, similar to `ENOTDIR` in POSIX. -#define WASI_FILESYSTEM_0_2_0_RC_2023_10_18_TYPES_ERROR_CODE_NOT_DIRECTORY 24 -// Directory not empty, similar to `ENOTEMPTY` in POSIX. -#define WASI_FILESYSTEM_0_2_0_RC_2023_10_18_TYPES_ERROR_CODE_NOT_EMPTY 25 -// State not recoverable, similar to `ENOTRECOVERABLE` in POSIX. -#define WASI_FILESYSTEM_0_2_0_RC_2023_10_18_TYPES_ERROR_CODE_NOT_RECOVERABLE 26 -// Not supported, similar to `ENOTSUP` and `ENOSYS` in POSIX. -#define WASI_FILESYSTEM_0_2_0_RC_2023_10_18_TYPES_ERROR_CODE_UNSUPPORTED 27 -// Inappropriate I/O control operation, similar to `ENOTTY` in POSIX. -#define WASI_FILESYSTEM_0_2_0_RC_2023_10_18_TYPES_ERROR_CODE_NO_TTY 28 -// No such device or address, similar to `ENXIO` in POSIX. -#define WASI_FILESYSTEM_0_2_0_RC_2023_10_18_TYPES_ERROR_CODE_NO_SUCH_DEVICE 29 -// Value too large to be stored in data type, similar to `EOVERFLOW` in POSIX. -#define WASI_FILESYSTEM_0_2_0_RC_2023_10_18_TYPES_ERROR_CODE_OVERFLOW 30 -// Operation not permitted, similar to `EPERM` in POSIX. -#define WASI_FILESYSTEM_0_2_0_RC_2023_10_18_TYPES_ERROR_CODE_NOT_PERMITTED 31 -// Broken pipe, similar to `EPIPE` in POSIX. -#define WASI_FILESYSTEM_0_2_0_RC_2023_10_18_TYPES_ERROR_CODE_PIPE 32 -// Read-only file system, similar to `EROFS` in POSIX. -#define WASI_FILESYSTEM_0_2_0_RC_2023_10_18_TYPES_ERROR_CODE_READ_ONLY 33 -// Invalid seek, similar to `ESPIPE` in POSIX. -#define WASI_FILESYSTEM_0_2_0_RC_2023_10_18_TYPES_ERROR_CODE_INVALID_SEEK 34 -// Text file busy, similar to `ETXTBSY` in POSIX. -#define WASI_FILESYSTEM_0_2_0_RC_2023_10_18_TYPES_ERROR_CODE_TEXT_FILE_BUSY 35 -// Cross-device link, similar to `EXDEV` in POSIX. -#define WASI_FILESYSTEM_0_2_0_RC_2023_10_18_TYPES_ERROR_CODE_CROSS_DEVICE 36 - -// File or memory access pattern advisory information. -typedef uint8_t wasi_filesystem_0_2_0_rc_2023_10_18_types_advice_t; - -// The application has no advice to give on its behavior with respect -// to the specified data. -#define WASI_FILESYSTEM_0_2_0_RC_2023_10_18_TYPES_ADVICE_NORMAL 0 -// The application expects to access the specified data sequentially -// from lower offsets to higher offsets. -#define WASI_FILESYSTEM_0_2_0_RC_2023_10_18_TYPES_ADVICE_SEQUENTIAL 1 -// The application expects to access the specified data in a random -// order. -#define WASI_FILESYSTEM_0_2_0_RC_2023_10_18_TYPES_ADVICE_RANDOM 2 -// The application expects to access the specified data in the near -// future. -#define WASI_FILESYSTEM_0_2_0_RC_2023_10_18_TYPES_ADVICE_WILL_NEED 3 -// The application expects that it will not access the specified data -// in the near future. -#define WASI_FILESYSTEM_0_2_0_RC_2023_10_18_TYPES_ADVICE_DONT_NEED 4 -// The application expects to access the specified data once and then -// not reuse it thereafter. -#define WASI_FILESYSTEM_0_2_0_RC_2023_10_18_TYPES_ADVICE_NO_REUSE 5 - -// A 128-bit hash value, split into parts because wasm doesn't have a -// 128-bit integer type. -typedef struct { - // 64 bits of a 128-bit hash value. - uint64_t lower; - // Another 64 bits of a 128-bit hash value. - uint64_t upper; -} wasi_filesystem_0_2_0_rc_2023_10_18_types_metadata_hash_value_t; - -typedef struct wasi_filesystem_0_2_0_rc_2023_10_18_types_own_descriptor_t { - int32_t __handle; -} wasi_filesystem_0_2_0_rc_2023_10_18_types_own_descriptor_t; - -typedef struct wasi_filesystem_0_2_0_rc_2023_10_18_types_borrow_descriptor_t { - int32_t __handle; -} wasi_filesystem_0_2_0_rc_2023_10_18_types_borrow_descriptor_t; - -typedef struct wasi_filesystem_0_2_0_rc_2023_10_18_types_own_directory_entry_stream_t { - int32_t __handle; -} wasi_filesystem_0_2_0_rc_2023_10_18_types_own_directory_entry_stream_t; - -typedef struct wasi_filesystem_0_2_0_rc_2023_10_18_types_borrow_directory_entry_stream_t { - int32_t __handle; -} wasi_filesystem_0_2_0_rc_2023_10_18_types_borrow_directory_entry_stream_t; - -typedef wasi_io_0_2_0_rc_2023_10_18_streams_own_input_stream_t wasi_filesystem_0_2_0_rc_2023_10_18_types_own_input_stream_t; - -typedef struct { - bool is_err; - union { - wasi_filesystem_0_2_0_rc_2023_10_18_types_own_input_stream_t ok; - wasi_filesystem_0_2_0_rc_2023_10_18_types_error_code_t err; - } val; -} wasi_filesystem_0_2_0_rc_2023_10_18_types_result_own_input_stream_error_code_t; - -typedef wasi_io_0_2_0_rc_2023_10_18_streams_own_output_stream_t wasi_filesystem_0_2_0_rc_2023_10_18_types_own_output_stream_t; - -typedef struct { - bool is_err; - union { - wasi_filesystem_0_2_0_rc_2023_10_18_types_own_output_stream_t ok; - wasi_filesystem_0_2_0_rc_2023_10_18_types_error_code_t err; - } val; -} wasi_filesystem_0_2_0_rc_2023_10_18_types_result_own_output_stream_error_code_t; - -typedef struct { - bool is_err; - union { - wasi_filesystem_0_2_0_rc_2023_10_18_types_error_code_t err; - } val; -} wasi_filesystem_0_2_0_rc_2023_10_18_types_result_void_error_code_t; - -typedef struct { - bool is_err; - union { - wasi_filesystem_0_2_0_rc_2023_10_18_types_descriptor_flags_t ok; - wasi_filesystem_0_2_0_rc_2023_10_18_types_error_code_t err; - } val; -} wasi_filesystem_0_2_0_rc_2023_10_18_types_result_descriptor_flags_error_code_t; - -typedef struct { - bool is_err; - union { - wasi_filesystem_0_2_0_rc_2023_10_18_types_descriptor_type_t ok; - wasi_filesystem_0_2_0_rc_2023_10_18_types_error_code_t err; - } val; -} wasi_filesystem_0_2_0_rc_2023_10_18_types_result_descriptor_type_error_code_t; - -typedef struct { - bindings_list_u8_t f0; - bool f1; -} bindings_tuple2_list_u8_bool_t; - -typedef struct { - bool is_err; - union { - bindings_tuple2_list_u8_bool_t ok; - wasi_filesystem_0_2_0_rc_2023_10_18_types_error_code_t err; - } val; -} wasi_filesystem_0_2_0_rc_2023_10_18_types_result_tuple2_list_u8_bool_error_code_t; - -typedef struct { - bool is_err; - union { - wasi_filesystem_0_2_0_rc_2023_10_18_types_filesize_t ok; - wasi_filesystem_0_2_0_rc_2023_10_18_types_error_code_t err; - } val; -} wasi_filesystem_0_2_0_rc_2023_10_18_types_result_filesize_error_code_t; - -typedef struct { - bool is_err; - union { - wasi_filesystem_0_2_0_rc_2023_10_18_types_own_directory_entry_stream_t ok; - wasi_filesystem_0_2_0_rc_2023_10_18_types_error_code_t err; - } val; -} wasi_filesystem_0_2_0_rc_2023_10_18_types_result_own_directory_entry_stream_error_code_t; - -typedef struct { - bool is_err; - union { - wasi_filesystem_0_2_0_rc_2023_10_18_types_descriptor_stat_t ok; - wasi_filesystem_0_2_0_rc_2023_10_18_types_error_code_t err; - } val; -} wasi_filesystem_0_2_0_rc_2023_10_18_types_result_descriptor_stat_error_code_t; - -typedef struct { - bool is_err; - union { - wasi_filesystem_0_2_0_rc_2023_10_18_types_own_descriptor_t ok; - wasi_filesystem_0_2_0_rc_2023_10_18_types_error_code_t err; - } val; -} wasi_filesystem_0_2_0_rc_2023_10_18_types_result_own_descriptor_error_code_t; - -typedef struct { - bool is_err; - union { - bindings_string_t ok; - wasi_filesystem_0_2_0_rc_2023_10_18_types_error_code_t err; - } val; -} wasi_filesystem_0_2_0_rc_2023_10_18_types_result_string_error_code_t; - -typedef struct { - bool is_err; - union { - wasi_filesystem_0_2_0_rc_2023_10_18_types_metadata_hash_value_t ok; - wasi_filesystem_0_2_0_rc_2023_10_18_types_error_code_t err; - } val; -} wasi_filesystem_0_2_0_rc_2023_10_18_types_result_metadata_hash_value_error_code_t; - -typedef struct { - bool is_some; - wasi_filesystem_0_2_0_rc_2023_10_18_types_directory_entry_t val; -} wasi_filesystem_0_2_0_rc_2023_10_18_types_option_directory_entry_t; - -typedef struct { - bool is_err; - union { - wasi_filesystem_0_2_0_rc_2023_10_18_types_option_directory_entry_t ok; - wasi_filesystem_0_2_0_rc_2023_10_18_types_error_code_t err; - } val; -} wasi_filesystem_0_2_0_rc_2023_10_18_types_result_option_directory_entry_error_code_t; - -typedef wasi_io_0_2_0_rc_2023_10_18_streams_borrow_error_t wasi_filesystem_0_2_0_rc_2023_10_18_types_borrow_error_t; - -typedef struct { - bool is_some; - wasi_filesystem_0_2_0_rc_2023_10_18_types_error_code_t val; -} wasi_filesystem_0_2_0_rc_2023_10_18_types_option_error_code_t; - -typedef wasi_filesystem_0_2_0_rc_2023_10_18_types_own_descriptor_t wasi_filesystem_0_2_0_rc_2023_10_18_preopens_own_descriptor_t; - -typedef struct { - wasi_filesystem_0_2_0_rc_2023_10_18_preopens_own_descriptor_t f0; - bindings_string_t f1; -} wasi_filesystem_0_2_0_rc_2023_10_18_preopens_tuple2_own_descriptor_string_t; - -typedef struct { - wasi_filesystem_0_2_0_rc_2023_10_18_preopens_tuple2_own_descriptor_string_t *ptr; - size_t len; -} wasi_filesystem_0_2_0_rc_2023_10_18_preopens_list_tuple2_own_descriptor_string_t; - -typedef struct wasi_sockets_0_2_0_rc_2023_10_18_network_own_network_t { - int32_t __handle; -} wasi_sockets_0_2_0_rc_2023_10_18_network_own_network_t; - -typedef struct wasi_sockets_0_2_0_rc_2023_10_18_network_borrow_network_t { - int32_t __handle; -} wasi_sockets_0_2_0_rc_2023_10_18_network_borrow_network_t; - -// Error codes. -// -// In theory, every API can return any error code. -// In practice, API's typically only return the errors documented per API -// combined with a couple of errors that are always possible: -// - `unknown` -// - `access-denied` -// - `not-supported` -// - `out-of-memory` -// - `concurrency-conflict` -// -// See each individual API for what the POSIX equivalents are. They sometimes differ per API. -typedef uint8_t wasi_sockets_0_2_0_rc_2023_10_18_network_error_code_t; - -// Unknown error -#define WASI_SOCKETS_0_2_0_RC_2023_10_18_NETWORK_ERROR_CODE_UNKNOWN 0 -// Access denied. -// -// POSIX equivalent: EACCES, EPERM -#define WASI_SOCKETS_0_2_0_RC_2023_10_18_NETWORK_ERROR_CODE_ACCESS_DENIED 1 -// The operation is not supported. -// -// POSIX equivalent: EOPNOTSUPP -#define WASI_SOCKETS_0_2_0_RC_2023_10_18_NETWORK_ERROR_CODE_NOT_SUPPORTED 2 -// One of the arguments is invalid. -// -// POSIX equivalent: EINVAL -#define WASI_SOCKETS_0_2_0_RC_2023_10_18_NETWORK_ERROR_CODE_INVALID_ARGUMENT 3 -// Not enough memory to complete the operation. -// -// POSIX equivalent: ENOMEM, ENOBUFS, EAI_MEMORY -#define WASI_SOCKETS_0_2_0_RC_2023_10_18_NETWORK_ERROR_CODE_OUT_OF_MEMORY 4 -// The operation timed out before it could finish completely. -#define WASI_SOCKETS_0_2_0_RC_2023_10_18_NETWORK_ERROR_CODE_TIMEOUT 5 -// This operation is incompatible with another asynchronous operation that is already in progress. -// -// POSIX equivalent: EALREADY -#define WASI_SOCKETS_0_2_0_RC_2023_10_18_NETWORK_ERROR_CODE_CONCURRENCY_CONFLICT 6 -// Trying to finish an asynchronous operation that: -// - has not been started yet, or: -// - was already finished by a previous `finish-*` call. -// -// Note: this is scheduled to be removed when `future`s are natively supported. -#define WASI_SOCKETS_0_2_0_RC_2023_10_18_NETWORK_ERROR_CODE_NOT_IN_PROGRESS 7 -// The operation has been aborted because it could not be completed immediately. -// -// Note: this is scheduled to be removed when `future`s are natively supported. -#define WASI_SOCKETS_0_2_0_RC_2023_10_18_NETWORK_ERROR_CODE_WOULD_BLOCK 8 -// The operation is not valid in the socket's current state. -#define WASI_SOCKETS_0_2_0_RC_2023_10_18_NETWORK_ERROR_CODE_INVALID_STATE 9 -// A new socket resource could not be created because of a system limit. -#define WASI_SOCKETS_0_2_0_RC_2023_10_18_NETWORK_ERROR_CODE_NEW_SOCKET_LIMIT 10 -// A bind operation failed because the provided address is not an address that the `network` can bind to. -#define WASI_SOCKETS_0_2_0_RC_2023_10_18_NETWORK_ERROR_CODE_ADDRESS_NOT_BINDABLE 11 -// A bind operation failed because the provided address is already in use or because there are no ephemeral ports available. -#define WASI_SOCKETS_0_2_0_RC_2023_10_18_NETWORK_ERROR_CODE_ADDRESS_IN_USE 12 -// The remote address is not reachable -#define WASI_SOCKETS_0_2_0_RC_2023_10_18_NETWORK_ERROR_CODE_REMOTE_UNREACHABLE 13 -// The connection was forcefully rejected -#define WASI_SOCKETS_0_2_0_RC_2023_10_18_NETWORK_ERROR_CODE_CONNECTION_REFUSED 14 -// The connection was reset. -#define WASI_SOCKETS_0_2_0_RC_2023_10_18_NETWORK_ERROR_CODE_CONNECTION_RESET 15 -// A connection was aborted. -#define WASI_SOCKETS_0_2_0_RC_2023_10_18_NETWORK_ERROR_CODE_CONNECTION_ABORTED 16 -#define WASI_SOCKETS_0_2_0_RC_2023_10_18_NETWORK_ERROR_CODE_DATAGRAM_TOO_LARGE 17 -// Name does not exist or has no suitable associated IP addresses. -#define WASI_SOCKETS_0_2_0_RC_2023_10_18_NETWORK_ERROR_CODE_NAME_UNRESOLVABLE 18 -// A temporary failure in name resolution occurred. -#define WASI_SOCKETS_0_2_0_RC_2023_10_18_NETWORK_ERROR_CODE_TEMPORARY_RESOLVER_FAILURE 19 -// A permanent failure in name resolution occurred. -#define WASI_SOCKETS_0_2_0_RC_2023_10_18_NETWORK_ERROR_CODE_PERMANENT_RESOLVER_FAILURE 20 - -typedef uint8_t wasi_sockets_0_2_0_rc_2023_10_18_network_ip_address_family_t; - -// Similar to `AF_INET` in POSIX. -#define WASI_SOCKETS_0_2_0_RC_2023_10_18_NETWORK_IP_ADDRESS_FAMILY_IPV4 0 -// Similar to `AF_INET6` in POSIX. -#define WASI_SOCKETS_0_2_0_RC_2023_10_18_NETWORK_IP_ADDRESS_FAMILY_IPV6 1 - -typedef struct { - uint8_t f0; - uint8_t f1; - uint8_t f2; - uint8_t f3; -} wasi_sockets_0_2_0_rc_2023_10_18_network_ipv4_address_t; - -typedef struct { - uint16_t f0; - uint16_t f1; - uint16_t f2; - uint16_t f3; - uint16_t f4; - uint16_t f5; - uint16_t f6; - uint16_t f7; -} wasi_sockets_0_2_0_rc_2023_10_18_network_ipv6_address_t; - -typedef struct { - uint8_t tag; - union { - wasi_sockets_0_2_0_rc_2023_10_18_network_ipv4_address_t ipv4; - wasi_sockets_0_2_0_rc_2023_10_18_network_ipv6_address_t ipv6; - } val; -} wasi_sockets_0_2_0_rc_2023_10_18_network_ip_address_t; - -#define WASI_SOCKETS_0_2_0_RC_2023_10_18_NETWORK_IP_ADDRESS_IPV4 0 -#define WASI_SOCKETS_0_2_0_RC_2023_10_18_NETWORK_IP_ADDRESS_IPV6 1 - -typedef struct { - uint16_t port; - wasi_sockets_0_2_0_rc_2023_10_18_network_ipv4_address_t address; -} wasi_sockets_0_2_0_rc_2023_10_18_network_ipv4_socket_address_t; - -typedef struct { - uint16_t port; - uint32_t flow_info; - wasi_sockets_0_2_0_rc_2023_10_18_network_ipv6_address_t address; - uint32_t scope_id; -} wasi_sockets_0_2_0_rc_2023_10_18_network_ipv6_socket_address_t; - -typedef struct { - uint8_t tag; - union { - wasi_sockets_0_2_0_rc_2023_10_18_network_ipv4_socket_address_t ipv4; - wasi_sockets_0_2_0_rc_2023_10_18_network_ipv6_socket_address_t ipv6; - } val; -} wasi_sockets_0_2_0_rc_2023_10_18_network_ip_socket_address_t; - -#define WASI_SOCKETS_0_2_0_RC_2023_10_18_NETWORK_IP_SOCKET_ADDRESS_IPV4 0 -#define WASI_SOCKETS_0_2_0_RC_2023_10_18_NETWORK_IP_SOCKET_ADDRESS_IPV6 1 - -typedef wasi_sockets_0_2_0_rc_2023_10_18_network_own_network_t wasi_sockets_0_2_0_rc_2023_10_18_instance_network_own_network_t; - -typedef wasi_sockets_0_2_0_rc_2023_10_18_network_error_code_t wasi_sockets_0_2_0_rc_2023_10_18_ip_name_lookup_error_code_t; - -typedef wasi_sockets_0_2_0_rc_2023_10_18_network_ip_address_t wasi_sockets_0_2_0_rc_2023_10_18_ip_name_lookup_ip_address_t; - -typedef wasi_sockets_0_2_0_rc_2023_10_18_network_ip_address_family_t wasi_sockets_0_2_0_rc_2023_10_18_ip_name_lookup_ip_address_family_t; - -typedef struct wasi_sockets_0_2_0_rc_2023_10_18_ip_name_lookup_own_resolve_address_stream_t { - int32_t __handle; -} wasi_sockets_0_2_0_rc_2023_10_18_ip_name_lookup_own_resolve_address_stream_t; - -typedef struct wasi_sockets_0_2_0_rc_2023_10_18_ip_name_lookup_borrow_resolve_address_stream_t { - int32_t __handle; -} wasi_sockets_0_2_0_rc_2023_10_18_ip_name_lookup_borrow_resolve_address_stream_t; - -typedef wasi_sockets_0_2_0_rc_2023_10_18_network_borrow_network_t wasi_sockets_0_2_0_rc_2023_10_18_ip_name_lookup_borrow_network_t; - -typedef struct { - bool is_some; - wasi_sockets_0_2_0_rc_2023_10_18_ip_name_lookup_ip_address_family_t val; -} wasi_sockets_0_2_0_rc_2023_10_18_ip_name_lookup_option_ip_address_family_t; - -typedef struct { - bool is_err; - union { - wasi_sockets_0_2_0_rc_2023_10_18_ip_name_lookup_own_resolve_address_stream_t ok; - wasi_sockets_0_2_0_rc_2023_10_18_ip_name_lookup_error_code_t err; - } val; -} wasi_sockets_0_2_0_rc_2023_10_18_ip_name_lookup_result_own_resolve_address_stream_error_code_t; - -typedef struct { - bool is_some; - wasi_sockets_0_2_0_rc_2023_10_18_ip_name_lookup_ip_address_t val; -} wasi_sockets_0_2_0_rc_2023_10_18_ip_name_lookup_option_ip_address_t; - -typedef struct { - bool is_err; - union { - wasi_sockets_0_2_0_rc_2023_10_18_ip_name_lookup_option_ip_address_t ok; - wasi_sockets_0_2_0_rc_2023_10_18_ip_name_lookup_error_code_t err; - } val; -} wasi_sockets_0_2_0_rc_2023_10_18_ip_name_lookup_result_option_ip_address_error_code_t; - -typedef wasi_io_0_2_0_rc_2023_10_18_poll_own_pollable_t wasi_sockets_0_2_0_rc_2023_10_18_ip_name_lookup_own_pollable_t; - -typedef wasi_sockets_0_2_0_rc_2023_10_18_network_error_code_t wasi_sockets_0_2_0_rc_2023_10_18_tcp_error_code_t; - -typedef wasi_sockets_0_2_0_rc_2023_10_18_network_ip_socket_address_t wasi_sockets_0_2_0_rc_2023_10_18_tcp_ip_socket_address_t; - -typedef wasi_sockets_0_2_0_rc_2023_10_18_network_ip_address_family_t wasi_sockets_0_2_0_rc_2023_10_18_tcp_ip_address_family_t; - -typedef uint8_t wasi_sockets_0_2_0_rc_2023_10_18_tcp_shutdown_type_t; - -// Similar to `SHUT_RD` in POSIX. -#define WASI_SOCKETS_0_2_0_RC_2023_10_18_TCP_SHUTDOWN_TYPE_RECEIVE 0 -// Similar to `SHUT_WR` in POSIX. -#define WASI_SOCKETS_0_2_0_RC_2023_10_18_TCP_SHUTDOWN_TYPE_SEND 1 -// Similar to `SHUT_RDWR` in POSIX. -#define WASI_SOCKETS_0_2_0_RC_2023_10_18_TCP_SHUTDOWN_TYPE_BOTH 2 - -typedef struct wasi_sockets_0_2_0_rc_2023_10_18_tcp_own_tcp_socket_t { - int32_t __handle; -} wasi_sockets_0_2_0_rc_2023_10_18_tcp_own_tcp_socket_t; - -typedef struct wasi_sockets_0_2_0_rc_2023_10_18_tcp_borrow_tcp_socket_t { - int32_t __handle; -} wasi_sockets_0_2_0_rc_2023_10_18_tcp_borrow_tcp_socket_t; - -typedef wasi_sockets_0_2_0_rc_2023_10_18_network_borrow_network_t wasi_sockets_0_2_0_rc_2023_10_18_tcp_borrow_network_t; - -typedef struct { - bool is_err; - union { - wasi_sockets_0_2_0_rc_2023_10_18_tcp_error_code_t err; - } val; -} wasi_sockets_0_2_0_rc_2023_10_18_tcp_result_void_error_code_t; - -typedef wasi_io_0_2_0_rc_2023_10_18_streams_own_input_stream_t wasi_sockets_0_2_0_rc_2023_10_18_tcp_own_input_stream_t; - -typedef wasi_io_0_2_0_rc_2023_10_18_streams_own_output_stream_t wasi_sockets_0_2_0_rc_2023_10_18_tcp_own_output_stream_t; - -typedef struct { - wasi_sockets_0_2_0_rc_2023_10_18_tcp_own_input_stream_t f0; - wasi_sockets_0_2_0_rc_2023_10_18_tcp_own_output_stream_t f1; -} wasi_sockets_0_2_0_rc_2023_10_18_tcp_tuple2_own_input_stream_own_output_stream_t; - -typedef struct { - bool is_err; - union { - wasi_sockets_0_2_0_rc_2023_10_18_tcp_tuple2_own_input_stream_own_output_stream_t ok; - wasi_sockets_0_2_0_rc_2023_10_18_tcp_error_code_t err; - } val; -} wasi_sockets_0_2_0_rc_2023_10_18_tcp_result_tuple2_own_input_stream_own_output_stream_error_code_t; - -typedef struct { - wasi_sockets_0_2_0_rc_2023_10_18_tcp_own_tcp_socket_t f0; - wasi_sockets_0_2_0_rc_2023_10_18_tcp_own_input_stream_t f1; - wasi_sockets_0_2_0_rc_2023_10_18_tcp_own_output_stream_t f2; -} wasi_sockets_0_2_0_rc_2023_10_18_tcp_tuple3_own_tcp_socket_own_input_stream_own_output_stream_t; - -typedef struct { - bool is_err; - union { - wasi_sockets_0_2_0_rc_2023_10_18_tcp_tuple3_own_tcp_socket_own_input_stream_own_output_stream_t ok; - wasi_sockets_0_2_0_rc_2023_10_18_tcp_error_code_t err; - } val; -} wasi_sockets_0_2_0_rc_2023_10_18_tcp_result_tuple3_own_tcp_socket_own_input_stream_own_output_stream_error_code_t; - -typedef struct { - bool is_err; - union { - wasi_sockets_0_2_0_rc_2023_10_18_tcp_ip_socket_address_t ok; - wasi_sockets_0_2_0_rc_2023_10_18_tcp_error_code_t err; - } val; -} wasi_sockets_0_2_0_rc_2023_10_18_tcp_result_ip_socket_address_error_code_t; - -typedef struct { - bool is_err; - union { - bool ok; - wasi_sockets_0_2_0_rc_2023_10_18_tcp_error_code_t err; - } val; -} wasi_sockets_0_2_0_rc_2023_10_18_tcp_result_bool_error_code_t; - -typedef struct { - bool is_err; - union { - uint8_t ok; - wasi_sockets_0_2_0_rc_2023_10_18_tcp_error_code_t err; - } val; -} wasi_sockets_0_2_0_rc_2023_10_18_tcp_result_u8_error_code_t; - -typedef struct { - bool is_err; - union { - uint64_t ok; - wasi_sockets_0_2_0_rc_2023_10_18_tcp_error_code_t err; - } val; -} wasi_sockets_0_2_0_rc_2023_10_18_tcp_result_u64_error_code_t; - -typedef wasi_io_0_2_0_rc_2023_10_18_poll_own_pollable_t wasi_sockets_0_2_0_rc_2023_10_18_tcp_own_pollable_t; - -typedef wasi_sockets_0_2_0_rc_2023_10_18_network_error_code_t wasi_sockets_0_2_0_rc_2023_10_18_tcp_create_socket_error_code_t; - -typedef wasi_sockets_0_2_0_rc_2023_10_18_network_ip_address_family_t wasi_sockets_0_2_0_rc_2023_10_18_tcp_create_socket_ip_address_family_t; - -typedef wasi_sockets_0_2_0_rc_2023_10_18_tcp_own_tcp_socket_t wasi_sockets_0_2_0_rc_2023_10_18_tcp_create_socket_own_tcp_socket_t; - -typedef struct { - bool is_err; - union { - wasi_sockets_0_2_0_rc_2023_10_18_tcp_create_socket_own_tcp_socket_t ok; - wasi_sockets_0_2_0_rc_2023_10_18_tcp_create_socket_error_code_t err; - } val; -} wasi_sockets_0_2_0_rc_2023_10_18_tcp_create_socket_result_own_tcp_socket_error_code_t; - -typedef wasi_sockets_0_2_0_rc_2023_10_18_network_error_code_t wasi_sockets_0_2_0_rc_2023_10_18_udp_error_code_t; - -typedef wasi_sockets_0_2_0_rc_2023_10_18_network_ip_socket_address_t wasi_sockets_0_2_0_rc_2023_10_18_udp_ip_socket_address_t; - -typedef wasi_sockets_0_2_0_rc_2023_10_18_network_ip_address_family_t wasi_sockets_0_2_0_rc_2023_10_18_udp_ip_address_family_t; - -typedef struct { - bindings_list_u8_t data; - wasi_sockets_0_2_0_rc_2023_10_18_udp_ip_socket_address_t remote_address; -} wasi_sockets_0_2_0_rc_2023_10_18_udp_datagram_t; - -typedef struct wasi_sockets_0_2_0_rc_2023_10_18_udp_own_udp_socket_t { - int32_t __handle; -} wasi_sockets_0_2_0_rc_2023_10_18_udp_own_udp_socket_t; - -typedef struct wasi_sockets_0_2_0_rc_2023_10_18_udp_borrow_udp_socket_t { - int32_t __handle; -} wasi_sockets_0_2_0_rc_2023_10_18_udp_borrow_udp_socket_t; - -typedef wasi_sockets_0_2_0_rc_2023_10_18_network_borrow_network_t wasi_sockets_0_2_0_rc_2023_10_18_udp_borrow_network_t; - -typedef struct { - bool is_err; - union { - wasi_sockets_0_2_0_rc_2023_10_18_udp_error_code_t err; - } val; -} wasi_sockets_0_2_0_rc_2023_10_18_udp_result_void_error_code_t; - -typedef struct { - wasi_sockets_0_2_0_rc_2023_10_18_udp_datagram_t *ptr; - size_t len; -} wasi_sockets_0_2_0_rc_2023_10_18_udp_list_datagram_t; - -typedef struct { - bool is_err; - union { - wasi_sockets_0_2_0_rc_2023_10_18_udp_list_datagram_t ok; - wasi_sockets_0_2_0_rc_2023_10_18_udp_error_code_t err; - } val; -} wasi_sockets_0_2_0_rc_2023_10_18_udp_result_list_datagram_error_code_t; - -typedef struct { - bool is_err; - union { - uint64_t ok; - wasi_sockets_0_2_0_rc_2023_10_18_udp_error_code_t err; - } val; -} wasi_sockets_0_2_0_rc_2023_10_18_udp_result_u64_error_code_t; - -typedef struct { - bool is_err; - union { - wasi_sockets_0_2_0_rc_2023_10_18_udp_ip_socket_address_t ok; - wasi_sockets_0_2_0_rc_2023_10_18_udp_error_code_t err; - } val; -} wasi_sockets_0_2_0_rc_2023_10_18_udp_result_ip_socket_address_error_code_t; - -typedef struct { - bool is_err; - union { - bool ok; - wasi_sockets_0_2_0_rc_2023_10_18_udp_error_code_t err; - } val; -} wasi_sockets_0_2_0_rc_2023_10_18_udp_result_bool_error_code_t; - -typedef struct { - bool is_err; - union { - uint8_t ok; - wasi_sockets_0_2_0_rc_2023_10_18_udp_error_code_t err; - } val; -} wasi_sockets_0_2_0_rc_2023_10_18_udp_result_u8_error_code_t; - -typedef wasi_io_0_2_0_rc_2023_10_18_poll_own_pollable_t wasi_sockets_0_2_0_rc_2023_10_18_udp_own_pollable_t; - -typedef wasi_sockets_0_2_0_rc_2023_10_18_network_error_code_t wasi_sockets_0_2_0_rc_2023_10_18_udp_create_socket_error_code_t; - -typedef wasi_sockets_0_2_0_rc_2023_10_18_network_ip_address_family_t wasi_sockets_0_2_0_rc_2023_10_18_udp_create_socket_ip_address_family_t; - -typedef wasi_sockets_0_2_0_rc_2023_10_18_udp_own_udp_socket_t wasi_sockets_0_2_0_rc_2023_10_18_udp_create_socket_own_udp_socket_t; - -typedef struct { - bool is_err; - union { - wasi_sockets_0_2_0_rc_2023_10_18_udp_create_socket_own_udp_socket_t ok; - wasi_sockets_0_2_0_rc_2023_10_18_udp_create_socket_error_code_t err; - } val; -} wasi_sockets_0_2_0_rc_2023_10_18_udp_create_socket_result_own_udp_socket_error_code_t; - -typedef struct { - uint64_t f0; - uint64_t f1; -} bindings_tuple2_u64_u64_t; - -typedef struct { - bindings_string_t f0; - bindings_string_t f1; -} bindings_tuple2_string_string_t; - -typedef struct { - bindings_tuple2_string_string_t *ptr; - size_t len; -} bindings_list_tuple2_string_string_t; - -typedef struct { - bindings_string_t *ptr; - size_t len; -} bindings_list_string_t; - -typedef struct { - bool is_some; - bindings_string_t val; -} bindings_option_string_t; - -typedef struct { - bool is_err; -} wasi_cli_0_2_0_rc_2023_10_18_exit_result_void_void_t; - -typedef wasi_io_0_2_0_rc_2023_10_18_streams_own_input_stream_t wasi_cli_0_2_0_rc_2023_10_18_stdin_own_input_stream_t; - -typedef wasi_io_0_2_0_rc_2023_10_18_streams_own_output_stream_t wasi_cli_0_2_0_rc_2023_10_18_stdout_own_output_stream_t; - -typedef wasi_io_0_2_0_rc_2023_10_18_streams_own_output_stream_t wasi_cli_0_2_0_rc_2023_10_18_stderr_own_output_stream_t; - -typedef struct wasi_cli_0_2_0_rc_2023_10_18_terminal_input_own_terminal_input_t { - int32_t __handle; -} wasi_cli_0_2_0_rc_2023_10_18_terminal_input_own_terminal_input_t; - -typedef struct wasi_cli_0_2_0_rc_2023_10_18_terminal_input_borrow_terminal_input_t { - int32_t __handle; -} wasi_cli_0_2_0_rc_2023_10_18_terminal_input_borrow_terminal_input_t; - -typedef struct wasi_cli_0_2_0_rc_2023_10_18_terminal_output_own_terminal_output_t { - int32_t __handle; -} wasi_cli_0_2_0_rc_2023_10_18_terminal_output_own_terminal_output_t; - -typedef struct wasi_cli_0_2_0_rc_2023_10_18_terminal_output_borrow_terminal_output_t { - int32_t __handle; -} wasi_cli_0_2_0_rc_2023_10_18_terminal_output_borrow_terminal_output_t; - -typedef wasi_cli_0_2_0_rc_2023_10_18_terminal_input_own_terminal_input_t wasi_cli_0_2_0_rc_2023_10_18_terminal_stdin_own_terminal_input_t; - -typedef struct { - bool is_some; - wasi_cli_0_2_0_rc_2023_10_18_terminal_stdin_own_terminal_input_t val; -} wasi_cli_0_2_0_rc_2023_10_18_terminal_stdin_option_own_terminal_input_t; - -typedef wasi_cli_0_2_0_rc_2023_10_18_terminal_output_own_terminal_output_t wasi_cli_0_2_0_rc_2023_10_18_terminal_stdout_own_terminal_output_t; - -typedef struct { - bool is_some; - wasi_cli_0_2_0_rc_2023_10_18_terminal_stdout_own_terminal_output_t val; -} wasi_cli_0_2_0_rc_2023_10_18_terminal_stdout_option_own_terminal_output_t; - -typedef wasi_cli_0_2_0_rc_2023_10_18_terminal_output_own_terminal_output_t wasi_cli_0_2_0_rc_2023_10_18_terminal_stderr_own_terminal_output_t; - -typedef struct { - bool is_some; - wasi_cli_0_2_0_rc_2023_10_18_terminal_stderr_own_terminal_output_t val; -} wasi_cli_0_2_0_rc_2023_10_18_terminal_stderr_option_own_terminal_output_t; - -typedef struct { - uint8_t tag; - union { - bindings_string_t other; - } val; -} wasi_http_0_2_0_rc_2023_10_18_types_method_t; - -#define WASI_HTTP_0_2_0_RC_2023_10_18_TYPES_METHOD_GET 0 -#define WASI_HTTP_0_2_0_RC_2023_10_18_TYPES_METHOD_HEAD 1 -#define WASI_HTTP_0_2_0_RC_2023_10_18_TYPES_METHOD_POST 2 -#define WASI_HTTP_0_2_0_RC_2023_10_18_TYPES_METHOD_PUT 3 -#define WASI_HTTP_0_2_0_RC_2023_10_18_TYPES_METHOD_DELETE 4 -#define WASI_HTTP_0_2_0_RC_2023_10_18_TYPES_METHOD_CONNECT 5 -#define WASI_HTTP_0_2_0_RC_2023_10_18_TYPES_METHOD_OPTIONS 6 -#define WASI_HTTP_0_2_0_RC_2023_10_18_TYPES_METHOD_TRACE 7 -#define WASI_HTTP_0_2_0_RC_2023_10_18_TYPES_METHOD_PATCH 8 -#define WASI_HTTP_0_2_0_RC_2023_10_18_TYPES_METHOD_OTHER 9 - -typedef struct { - uint8_t tag; - union { - bindings_string_t other; - } val; -} wasi_http_0_2_0_rc_2023_10_18_types_scheme_t; - -#define WASI_HTTP_0_2_0_RC_2023_10_18_TYPES_SCHEME_HTTP 0 -#define WASI_HTTP_0_2_0_RC_2023_10_18_TYPES_SCHEME_HTTPS 1 -#define WASI_HTTP_0_2_0_RC_2023_10_18_TYPES_SCHEME_OTHER 2 - -typedef struct { - uint8_t tag; - union { - bindings_string_t invalid_url; - bindings_string_t timeout_error; - bindings_string_t protocol_error; - bindings_string_t unexpected_error; - } val; -} wasi_http_0_2_0_rc_2023_10_18_types_error_t; - -#define WASI_HTTP_0_2_0_RC_2023_10_18_TYPES_ERROR_INVALID_URL 0 -#define WASI_HTTP_0_2_0_RC_2023_10_18_TYPES_ERROR_TIMEOUT_ERROR 1 -#define WASI_HTTP_0_2_0_RC_2023_10_18_TYPES_ERROR_PROTOCOL_ERROR 2 -#define WASI_HTTP_0_2_0_RC_2023_10_18_TYPES_ERROR_UNEXPECTED_ERROR 3 - -typedef struct wasi_http_0_2_0_rc_2023_10_18_types_own_fields_t { - int32_t __handle; -} wasi_http_0_2_0_rc_2023_10_18_types_own_fields_t; - -typedef struct wasi_http_0_2_0_rc_2023_10_18_types_borrow_fields_t { - int32_t __handle; -} wasi_http_0_2_0_rc_2023_10_18_types_borrow_fields_t; - -typedef struct wasi_http_0_2_0_rc_2023_10_18_types_own_incoming_request_t { - int32_t __handle; -} wasi_http_0_2_0_rc_2023_10_18_types_own_incoming_request_t; - -typedef struct wasi_http_0_2_0_rc_2023_10_18_types_borrow_incoming_request_t { - int32_t __handle; -} wasi_http_0_2_0_rc_2023_10_18_types_borrow_incoming_request_t; - -typedef struct wasi_http_0_2_0_rc_2023_10_18_types_own_outgoing_request_t { - int32_t __handle; -} wasi_http_0_2_0_rc_2023_10_18_types_own_outgoing_request_t; - -typedef struct wasi_http_0_2_0_rc_2023_10_18_types_borrow_outgoing_request_t { - int32_t __handle; -} wasi_http_0_2_0_rc_2023_10_18_types_borrow_outgoing_request_t; - -typedef struct { - bool is_some; - uint32_t val; -} bindings_option_u32_t; - -typedef struct { - bindings_option_u32_t connect_timeout_ms; - bindings_option_u32_t first_byte_timeout_ms; - bindings_option_u32_t between_bytes_timeout_ms; -} wasi_http_0_2_0_rc_2023_10_18_types_request_options_t; - -typedef struct wasi_http_0_2_0_rc_2023_10_18_types_own_response_outparam_t { - int32_t __handle; -} wasi_http_0_2_0_rc_2023_10_18_types_own_response_outparam_t; - -typedef struct wasi_http_0_2_0_rc_2023_10_18_types_borrow_response_outparam_t { - int32_t __handle; -} wasi_http_0_2_0_rc_2023_10_18_types_borrow_response_outparam_t; - -typedef uint16_t wasi_http_0_2_0_rc_2023_10_18_types_status_code_t; - -typedef struct wasi_http_0_2_0_rc_2023_10_18_types_own_incoming_response_t { - int32_t __handle; -} wasi_http_0_2_0_rc_2023_10_18_types_own_incoming_response_t; - -typedef struct wasi_http_0_2_0_rc_2023_10_18_types_borrow_incoming_response_t { - int32_t __handle; -} wasi_http_0_2_0_rc_2023_10_18_types_borrow_incoming_response_t; - -typedef struct wasi_http_0_2_0_rc_2023_10_18_types_own_incoming_body_t { - int32_t __handle; -} wasi_http_0_2_0_rc_2023_10_18_types_own_incoming_body_t; - -typedef struct wasi_http_0_2_0_rc_2023_10_18_types_borrow_incoming_body_t { - int32_t __handle; -} wasi_http_0_2_0_rc_2023_10_18_types_borrow_incoming_body_t; - -typedef struct wasi_http_0_2_0_rc_2023_10_18_types_own_future_trailers_t { - int32_t __handle; -} wasi_http_0_2_0_rc_2023_10_18_types_own_future_trailers_t; - -typedef struct wasi_http_0_2_0_rc_2023_10_18_types_borrow_future_trailers_t { - int32_t __handle; -} wasi_http_0_2_0_rc_2023_10_18_types_borrow_future_trailers_t; - -typedef struct wasi_http_0_2_0_rc_2023_10_18_types_own_outgoing_response_t { - int32_t __handle; -} wasi_http_0_2_0_rc_2023_10_18_types_own_outgoing_response_t; - -typedef struct wasi_http_0_2_0_rc_2023_10_18_types_borrow_outgoing_response_t { - int32_t __handle; -} wasi_http_0_2_0_rc_2023_10_18_types_borrow_outgoing_response_t; - -typedef struct wasi_http_0_2_0_rc_2023_10_18_types_own_outgoing_body_t { - int32_t __handle; -} wasi_http_0_2_0_rc_2023_10_18_types_own_outgoing_body_t; - -typedef struct wasi_http_0_2_0_rc_2023_10_18_types_borrow_outgoing_body_t { - int32_t __handle; -} wasi_http_0_2_0_rc_2023_10_18_types_borrow_outgoing_body_t; - -typedef struct wasi_http_0_2_0_rc_2023_10_18_types_own_future_incoming_response_t { - int32_t __handle; -} wasi_http_0_2_0_rc_2023_10_18_types_own_future_incoming_response_t; - -typedef struct wasi_http_0_2_0_rc_2023_10_18_types_borrow_future_incoming_response_t { - int32_t __handle; -} wasi_http_0_2_0_rc_2023_10_18_types_borrow_future_incoming_response_t; - -typedef struct { - bindings_string_t f0; - bindings_list_u8_t f1; -} bindings_tuple2_string_list_u8_t; - -typedef struct { - bindings_tuple2_string_list_u8_t *ptr; - size_t len; -} bindings_list_tuple2_string_list_u8_t; - -typedef struct { - bindings_list_u8_t *ptr; - size_t len; -} bindings_list_list_u8_t; - -typedef struct { - bool is_some; - wasi_http_0_2_0_rc_2023_10_18_types_scheme_t val; -} wasi_http_0_2_0_rc_2023_10_18_types_option_scheme_t; - -typedef wasi_http_0_2_0_rc_2023_10_18_types_own_fields_t wasi_http_0_2_0_rc_2023_10_18_types_own_headers_t; - -typedef struct { - bool is_err; - union { - wasi_http_0_2_0_rc_2023_10_18_types_own_incoming_body_t ok; - } val; -} wasi_http_0_2_0_rc_2023_10_18_types_result_own_incoming_body_void_t; - -typedef wasi_http_0_2_0_rc_2023_10_18_types_borrow_fields_t wasi_http_0_2_0_rc_2023_10_18_types_borrow_headers_t; - -typedef struct { - bool is_err; - union { - wasi_http_0_2_0_rc_2023_10_18_types_own_outgoing_body_t ok; - } val; -} wasi_http_0_2_0_rc_2023_10_18_types_result_own_outgoing_body_void_t; - -typedef struct { - bool is_err; - union { - wasi_http_0_2_0_rc_2023_10_18_types_own_outgoing_response_t ok; - wasi_http_0_2_0_rc_2023_10_18_types_error_t err; - } val; -} wasi_http_0_2_0_rc_2023_10_18_types_result_own_outgoing_response_error_t; - -typedef wasi_io_0_2_0_rc_2023_10_18_streams_own_input_stream_t wasi_http_0_2_0_rc_2023_10_18_types_own_input_stream_t; - -typedef struct { - bool is_err; - union { - wasi_http_0_2_0_rc_2023_10_18_types_own_input_stream_t ok; - } val; -} wasi_http_0_2_0_rc_2023_10_18_types_result_own_input_stream_void_t; - -typedef wasi_io_0_2_0_rc_2023_10_18_poll_own_pollable_t wasi_http_0_2_0_rc_2023_10_18_types_own_pollable_t; - -typedef wasi_http_0_2_0_rc_2023_10_18_types_own_fields_t wasi_http_0_2_0_rc_2023_10_18_types_own_trailers_t; - -typedef struct { - bool is_err; - union { - wasi_http_0_2_0_rc_2023_10_18_types_own_trailers_t ok; - wasi_http_0_2_0_rc_2023_10_18_types_error_t err; - } val; -} wasi_http_0_2_0_rc_2023_10_18_types_result_own_trailers_error_t; - -typedef struct { - bool is_some; - wasi_http_0_2_0_rc_2023_10_18_types_result_own_trailers_error_t val; -} wasi_http_0_2_0_rc_2023_10_18_types_option_result_own_trailers_error_t; - -typedef wasi_io_0_2_0_rc_2023_10_18_streams_own_output_stream_t wasi_http_0_2_0_rc_2023_10_18_types_own_output_stream_t; - -typedef struct { - bool is_err; - union { - wasi_http_0_2_0_rc_2023_10_18_types_own_output_stream_t ok; - } val; -} wasi_http_0_2_0_rc_2023_10_18_types_result_own_output_stream_void_t; - -typedef struct { - bool is_some; - wasi_http_0_2_0_rc_2023_10_18_types_own_trailers_t val; -} wasi_http_0_2_0_rc_2023_10_18_types_option_own_trailers_t; - -typedef struct { - bool is_err; - union { - wasi_http_0_2_0_rc_2023_10_18_types_own_incoming_response_t ok; - wasi_http_0_2_0_rc_2023_10_18_types_error_t err; - } val; -} wasi_http_0_2_0_rc_2023_10_18_types_result_own_incoming_response_error_t; - -typedef struct { - bool is_err; - union { - wasi_http_0_2_0_rc_2023_10_18_types_result_own_incoming_response_error_t ok; - } val; -} wasi_http_0_2_0_rc_2023_10_18_types_result_result_own_incoming_response_error_void_t; - -typedef struct { - bool is_some; - wasi_http_0_2_0_rc_2023_10_18_types_result_result_own_incoming_response_error_void_t val; -} wasi_http_0_2_0_rc_2023_10_18_types_option_result_result_own_incoming_response_error_void_t; - -typedef wasi_http_0_2_0_rc_2023_10_18_types_request_options_t wasi_http_0_2_0_rc_2023_10_18_outgoing_handler_request_options_t; - -typedef wasi_http_0_2_0_rc_2023_10_18_types_error_t wasi_http_0_2_0_rc_2023_10_18_outgoing_handler_error_t; - -typedef wasi_http_0_2_0_rc_2023_10_18_types_own_outgoing_request_t wasi_http_0_2_0_rc_2023_10_18_outgoing_handler_own_outgoing_request_t; - -typedef struct { - bool is_some; - wasi_http_0_2_0_rc_2023_10_18_outgoing_handler_request_options_t val; -} wasi_http_0_2_0_rc_2023_10_18_outgoing_handler_option_request_options_t; - -typedef wasi_http_0_2_0_rc_2023_10_18_types_own_future_incoming_response_t wasi_http_0_2_0_rc_2023_10_18_outgoing_handler_own_future_incoming_response_t; - -typedef struct { - bool is_err; - union { - wasi_http_0_2_0_rc_2023_10_18_outgoing_handler_own_future_incoming_response_t ok; - wasi_http_0_2_0_rc_2023_10_18_outgoing_handler_error_t err; - } val; -} wasi_http_0_2_0_rc_2023_10_18_outgoing_handler_result_own_future_incoming_response_error_t; - -typedef struct { - bool is_err; -} exports_wasi_cli_0_2_0_rc_2023_10_18_run_result_void_void_t; - -typedef wasi_http_0_2_0_rc_2023_10_18_types_own_incoming_request_t exports_wasi_http_0_2_0_rc_2023_10_18_incoming_handler_own_incoming_request_t; - -typedef wasi_http_0_2_0_rc_2023_10_18_types_own_response_outparam_t exports_wasi_http_0_2_0_rc_2023_10_18_incoming_handler_own_response_outparam_t; - -// Imported Functions from `wasi:clocks/wall-clock@0.2.0-rc-2023-10-18` -// Read the current value of the clock. -// -// This clock is not monotonic, therefore calling this function repeatedly -// will not necessarily produce a sequence of non-decreasing values. -// -// The returned timestamps represent the number of seconds since -// 1970-01-01T00:00:00Z, also known as [POSIX's Seconds Since the Epoch], -// also known as [Unix Time]. -// -// The nanoseconds field of the output is always less than 1000000000. -// -// [POSIX's Seconds Since the Epoch]: https://pubs.opengroup.org/onlinepubs/9699919799/xrat/V4_xbd_chap04.html#tag_21_04_16 -// [Unix Time]: https://en.wikipedia.org/wiki/Unix_time -extern void wasi_clocks_0_2_0_rc_2023_10_18_wall_clock_now(wasi_clocks_0_2_0_rc_2023_10_18_wall_clock_datetime_t *ret); -// Query the resolution of the clock. -// -// The nanoseconds field of the output is always less than 1000000000. -extern void wasi_clocks_0_2_0_rc_2023_10_18_wall_clock_resolution(wasi_clocks_0_2_0_rc_2023_10_18_wall_clock_datetime_t *ret); - -// Imported Functions from `wasi:io/poll@0.2.0-rc-2023-10-18` -// Poll for completion on a set of pollables. -// -// This function takes a list of pollables, which identify I/O sources of -// interest, and waits until one or more of the events is ready for I/O. -// -// The result `list` contains one or more indices of handles in the -// argument list that is ready for I/O. -// -// If the list contains more elements than can be indexed with a `u32` -// value, this function traps. -// -// A timeout can be implemented by adding a pollable from the -// wasi-clocks API to the list. -// -// This function does not return a `result`; polling in itself does not -// do any I/O so it doesn't fail. If any of the I/O sources identified by -// the pollables has an error, it is indicated by marking the source as -// being reaedy for I/O. -extern void wasi_io_0_2_0_rc_2023_10_18_poll_poll_list(wasi_io_0_2_0_rc_2023_10_18_poll_list_borrow_pollable_t *in, bindings_list_u32_t *ret); -// Poll for completion on a single pollable. -// -// This function is similar to `poll-list`, but operates on only a single -// pollable. When it returns, the handle is ready for I/O. -extern void wasi_io_0_2_0_rc_2023_10_18_poll_poll_one(wasi_io_0_2_0_rc_2023_10_18_poll_borrow_pollable_t in); - -// Imported Functions from `wasi:clocks/monotonic-clock@0.2.0-rc-2023-10-18` -// Read the current value of the clock. -// -// The clock is monotonic, therefore calling this function repeatedly will -// produce a sequence of non-decreasing values. -extern wasi_clocks_0_2_0_rc_2023_10_18_monotonic_clock_instant_t wasi_clocks_0_2_0_rc_2023_10_18_monotonic_clock_now(void); -// Query the resolution of the clock. -extern wasi_clocks_0_2_0_rc_2023_10_18_monotonic_clock_instant_t wasi_clocks_0_2_0_rc_2023_10_18_monotonic_clock_resolution(void); -// Create a `pollable` which will resolve once the specified time has been -// reached. -extern wasi_clocks_0_2_0_rc_2023_10_18_monotonic_clock_own_pollable_t wasi_clocks_0_2_0_rc_2023_10_18_monotonic_clock_subscribe(wasi_clocks_0_2_0_rc_2023_10_18_monotonic_clock_instant_t when, bool absolute); - -// Imported Functions from `wasi:clocks/timezone@0.2.0-rc-2023-10-18` -// Return information needed to display the given `datetime`. This includes -// the UTC offset, the time zone name, and a flag indicating whether -// daylight saving time is active. -// -// If the timezone cannot be determined for the given `datetime`, return a -// `timezone-display` for `UTC` with a `utc-offset` of 0 and no daylight -// saving time. -extern void wasi_clocks_0_2_0_rc_2023_10_18_timezone_display(wasi_clocks_0_2_0_rc_2023_10_18_timezone_datetime_t *when, wasi_clocks_0_2_0_rc_2023_10_18_timezone_timezone_display_t *ret); -// The same as `display`, but only return the UTC offset. -extern int32_t wasi_clocks_0_2_0_rc_2023_10_18_timezone_utc_offset(wasi_clocks_0_2_0_rc_2023_10_18_timezone_datetime_t *when); - -// Imported Functions from `wasi:io/streams@0.2.0-rc-2023-10-18` -// Returns a string that's suitable to assist humans in debugging this -// error. -// -// The returned string will change across platforms and hosts which -// means that parsing it, for example, would be a -// platform-compatibility hazard. -extern void wasi_io_0_2_0_rc_2023_10_18_streams_method_error_to_debug_string(wasi_io_0_2_0_rc_2023_10_18_streams_borrow_error_t self, bindings_string_t *ret); -// Perform a non-blocking read from the stream. -// -// This function returns a list of bytes containing the data that was -// read, along with a `stream-status` which, indicates whether further -// reads are expected to produce data. The returned list will contain up to -// `len` bytes; it may return fewer than requested, but not more. An -// empty list and `stream-status:open` indicates no more data is -// available at this time, and that the pollable given by `subscribe` -// will be ready when more data is available. -// -// Once a stream has reached the end, subsequent calls to `read` or -// `skip` will always report `stream-status:ended` rather than producing more -// data. -// -// When the caller gives a `len` of 0, it represents a request to read 0 -// bytes. This read should always succeed and return an empty list and -// the current `stream-status`. -// -// The `len` parameter is a `u64`, which could represent a list of u8 which -// is not possible to allocate in wasm32, or not desirable to allocate as -// as a return value by the callee. The callee may return a list of bytes -// less than `len` in size while more bytes are available for reading. -extern bool wasi_io_0_2_0_rc_2023_10_18_streams_method_input_stream_read(wasi_io_0_2_0_rc_2023_10_18_streams_borrow_input_stream_t self, uint64_t len, bindings_list_u8_t *ret, wasi_io_0_2_0_rc_2023_10_18_streams_stream_error_t *err); -// Read bytes from a stream, after blocking until at least one byte can -// be read. Except for blocking, identical to `read`. -extern bool wasi_io_0_2_0_rc_2023_10_18_streams_method_input_stream_blocking_read(wasi_io_0_2_0_rc_2023_10_18_streams_borrow_input_stream_t self, uint64_t len, bindings_list_u8_t *ret, wasi_io_0_2_0_rc_2023_10_18_streams_stream_error_t *err); -// Skip bytes from a stream. -// -// This is similar to the `read` function, but avoids copying the -// bytes into the instance. -// -// Once a stream has reached the end, subsequent calls to read or -// `skip` will always report end-of-stream rather than producing more -// data. -// -// This function returns the number of bytes skipped, along with a -// `stream-status` indicating whether the end of the stream was -// reached. The returned value will be at most `len`; it may be less. -extern bool wasi_io_0_2_0_rc_2023_10_18_streams_method_input_stream_skip(wasi_io_0_2_0_rc_2023_10_18_streams_borrow_input_stream_t self, uint64_t len, uint64_t *ret, wasi_io_0_2_0_rc_2023_10_18_streams_stream_error_t *err); -// Skip bytes from a stream, after blocking until at least one byte -// can be skipped. Except for blocking behavior, identical to `skip`. -extern bool wasi_io_0_2_0_rc_2023_10_18_streams_method_input_stream_blocking_skip(wasi_io_0_2_0_rc_2023_10_18_streams_borrow_input_stream_t self, uint64_t len, uint64_t *ret, wasi_io_0_2_0_rc_2023_10_18_streams_stream_error_t *err); -// Create a `pollable` which will resolve once either the specified stream -// has bytes available to read or the other end of the stream has been -// closed. -// The created `pollable` is a child resource of the `input-stream`. -// Implementations may trap if the `input-stream` is dropped before -// all derived `pollable`s created with this function are dropped. -extern wasi_io_0_2_0_rc_2023_10_18_streams_own_pollable_t wasi_io_0_2_0_rc_2023_10_18_streams_method_input_stream_subscribe(wasi_io_0_2_0_rc_2023_10_18_streams_borrow_input_stream_t self); -// Check readiness for writing. This function never blocks. -// -// Returns the number of bytes permitted for the next call to `write`, -// or an error. Calling `write` with more bytes than this function has -// permitted will trap. -// -// When this function returns 0 bytes, the `subscribe` pollable will -// become ready when this function will report at least 1 byte, or an -// error. -extern bool wasi_io_0_2_0_rc_2023_10_18_streams_method_output_stream_check_write(wasi_io_0_2_0_rc_2023_10_18_streams_borrow_output_stream_t self, uint64_t *ret, wasi_io_0_2_0_rc_2023_10_18_streams_stream_error_t *err); -// Perform a write. This function never blocks. -// -// Precondition: check-write gave permit of Ok(n) and contents has a -// length of less than or equal to n. Otherwise, this function will trap. -// -// returns Err(closed) without writing if the stream has closed since -// the last call to check-write provided a permit. -extern bool wasi_io_0_2_0_rc_2023_10_18_streams_method_output_stream_write(wasi_io_0_2_0_rc_2023_10_18_streams_borrow_output_stream_t self, bindings_list_u8_t *contents, wasi_io_0_2_0_rc_2023_10_18_streams_stream_error_t *err); -// Perform a write of up to 4096 bytes, and then flush the stream. Block -// until all of these operations are complete, or an error occurs. -// -// This is a convenience wrapper around the use of `check-write`, -// `subscribe`, `write`, and `flush`, and is implemented with the -// following pseudo-code: -// -// ```text -// let pollable = this.subscribe(); -// while !contents.is_empty() { - // // Wait for the stream to become writable - // poll-one(pollable); - // let Ok(n) = this.check-write(); // eliding error handling - // let len = min(n, contents.len()); - // let (chunk, rest) = contents.split_at(len); - // this.write(chunk ); // eliding error handling - // contents = rest; - // } - // this.flush(); - // // Wait for completion of `flush` - // poll-one(pollable); - // // Check for any errors that arose during `flush` - // let _ = this.check-write(); // eliding error handling - // ``` - extern bool wasi_io_0_2_0_rc_2023_10_18_streams_method_output_stream_blocking_write_and_flush(wasi_io_0_2_0_rc_2023_10_18_streams_borrow_output_stream_t self, bindings_list_u8_t *contents, wasi_io_0_2_0_rc_2023_10_18_streams_stream_error_t *err); - // Request to flush buffered output. This function never blocks. - // - // This tells the output-stream that the caller intends any buffered - // output to be flushed. the output which is expected to be flushed - // is all that has been passed to `write` prior to this call. - // - // Upon calling this function, the `output-stream` will not accept any - // writes (`check-write` will return `ok(0)`) until the flush has - // completed. The `subscribe` pollable will become ready when the - // flush has completed and the stream can accept more writes. - extern bool wasi_io_0_2_0_rc_2023_10_18_streams_method_output_stream_flush(wasi_io_0_2_0_rc_2023_10_18_streams_borrow_output_stream_t self, wasi_io_0_2_0_rc_2023_10_18_streams_stream_error_t *err); - // Request to flush buffered output, and block until flush completes - // and stream is ready for writing again. - extern bool wasi_io_0_2_0_rc_2023_10_18_streams_method_output_stream_blocking_flush(wasi_io_0_2_0_rc_2023_10_18_streams_borrow_output_stream_t self, wasi_io_0_2_0_rc_2023_10_18_streams_stream_error_t *err); - // Create a `pollable` which will resolve once the output-stream - // is ready for more writing, or an error has occured. When this - // pollable is ready, `check-write` will return `ok(n)` with n>0, or an - // error. - // - // If the stream is closed, this pollable is always ready immediately. - // - // The created `pollable` is a child resource of the `output-stream`. - // Implementations may trap if the `output-stream` is dropped before - // all derived `pollable`s created with this function are dropped. - extern wasi_io_0_2_0_rc_2023_10_18_streams_own_pollable_t wasi_io_0_2_0_rc_2023_10_18_streams_method_output_stream_subscribe(wasi_io_0_2_0_rc_2023_10_18_streams_borrow_output_stream_t self); - // Write zeroes to a stream. - // - // this should be used precisely like `write` with the exact same - // preconditions (must use check-write first), but instead of - // passing a list of bytes, you simply pass the number of zero-bytes - // that should be written. - extern bool wasi_io_0_2_0_rc_2023_10_18_streams_method_output_stream_write_zeroes(wasi_io_0_2_0_rc_2023_10_18_streams_borrow_output_stream_t self, uint64_t len, wasi_io_0_2_0_rc_2023_10_18_streams_stream_error_t *err); - // Perform a write of up to 4096 zeroes, and then flush the stream. - // Block until all of these operations are complete, or an error - // occurs. - // - // This is a convenience wrapper around the use of `check-write`, - // `subscribe`, `write-zeroes`, and `flush`, and is implemented with - // the following pseudo-code: - // - // ```text - // let pollable = this.subscribe(); - // while num_zeroes != 0 { - // // Wait for the stream to become writable - // poll-one(pollable); - // let Ok(n) = this.check-write(); // eliding error handling - // let len = min(n, num_zeroes); - // this.write-zeroes(len); // eliding error handling - // num_zeroes -= len; - // } - // this.flush(); - // // Wait for completion of `flush` - // poll-one(pollable); - // // Check for any errors that arose during `flush` - // let _ = this.check-write(); // eliding error handling - // ``` - extern bool wasi_io_0_2_0_rc_2023_10_18_streams_method_output_stream_blocking_write_zeroes_and_flush(wasi_io_0_2_0_rc_2023_10_18_streams_borrow_output_stream_t self, uint64_t len, wasi_io_0_2_0_rc_2023_10_18_streams_stream_error_t *err); - // Read from one stream and write to another. - // - // This function returns the number of bytes transferred; it may be less - // than `len`. - // - // Unlike other I/O functions, this function blocks until all the data - // read from the input stream has been written to the output stream. - extern bool wasi_io_0_2_0_rc_2023_10_18_streams_method_output_stream_splice(wasi_io_0_2_0_rc_2023_10_18_streams_borrow_output_stream_t self, wasi_io_0_2_0_rc_2023_10_18_streams_own_input_stream_t src, uint64_t len, uint64_t *ret, wasi_io_0_2_0_rc_2023_10_18_streams_stream_error_t *err); - // Read from one stream and write to another, with blocking. - // - // This is similar to `splice`, except that it blocks until at least - // one byte can be read. - extern bool wasi_io_0_2_0_rc_2023_10_18_streams_method_output_stream_blocking_splice(wasi_io_0_2_0_rc_2023_10_18_streams_borrow_output_stream_t self, wasi_io_0_2_0_rc_2023_10_18_streams_own_input_stream_t src, uint64_t len, uint64_t *ret, wasi_io_0_2_0_rc_2023_10_18_streams_stream_error_t *err); - // Forward the entire contents of an input stream to an output stream. - // - // This function repeatedly reads from the input stream and writes - // the data to the output stream, until the end of the input stream - // is reached, or an error is encountered. - // - // Unlike other I/O functions, this function blocks until the end - // of the input stream is seen and all the data has been written to - // the output stream. - // - // This function returns the number of bytes transferred, and the status of - // the output stream. - extern bool wasi_io_0_2_0_rc_2023_10_18_streams_method_output_stream_forward(wasi_io_0_2_0_rc_2023_10_18_streams_borrow_output_stream_t self, wasi_io_0_2_0_rc_2023_10_18_streams_own_input_stream_t src, uint64_t *ret, wasi_io_0_2_0_rc_2023_10_18_streams_stream_error_t *err); - - // Imported Functions from `wasi:filesystem/types@0.2.0-rc-2023-10-18` - // Return a stream for reading from a file, if available. - // - // May fail with an error-code describing why the file cannot be read. - // - // Multiple read, write, and append streams may be active on the same open - // file and they do not interfere with each other. - // - // Note: This allows using `read-stream`, which is similar to `read` in POSIX. - extern bool wasi_filesystem_0_2_0_rc_2023_10_18_types_method_descriptor_read_via_stream(wasi_filesystem_0_2_0_rc_2023_10_18_types_borrow_descriptor_t self, wasi_filesystem_0_2_0_rc_2023_10_18_types_filesize_t offset, wasi_filesystem_0_2_0_rc_2023_10_18_types_own_input_stream_t *ret, wasi_filesystem_0_2_0_rc_2023_10_18_types_error_code_t *err); - // Return a stream for writing to a file, if available. - // - // May fail with an error-code describing why the file cannot be written. - // - // Note: This allows using `write-stream`, which is similar to `write` in - // POSIX. - extern bool wasi_filesystem_0_2_0_rc_2023_10_18_types_method_descriptor_write_via_stream(wasi_filesystem_0_2_0_rc_2023_10_18_types_borrow_descriptor_t self, wasi_filesystem_0_2_0_rc_2023_10_18_types_filesize_t offset, wasi_filesystem_0_2_0_rc_2023_10_18_types_own_output_stream_t *ret, wasi_filesystem_0_2_0_rc_2023_10_18_types_error_code_t *err); - // Return a stream for appending to a file, if available. - // - // May fail with an error-code describing why the file cannot be appended. - // - // Note: This allows using `write-stream`, which is similar to `write` with - // `O_APPEND` in in POSIX. - extern bool wasi_filesystem_0_2_0_rc_2023_10_18_types_method_descriptor_append_via_stream(wasi_filesystem_0_2_0_rc_2023_10_18_types_borrow_descriptor_t self, wasi_filesystem_0_2_0_rc_2023_10_18_types_own_output_stream_t *ret, wasi_filesystem_0_2_0_rc_2023_10_18_types_error_code_t *err); - // Provide file advisory information on a descriptor. - // - // This is similar to `posix_fadvise` in POSIX. - extern bool wasi_filesystem_0_2_0_rc_2023_10_18_types_method_descriptor_advise(wasi_filesystem_0_2_0_rc_2023_10_18_types_borrow_descriptor_t self, wasi_filesystem_0_2_0_rc_2023_10_18_types_filesize_t offset, wasi_filesystem_0_2_0_rc_2023_10_18_types_filesize_t length, wasi_filesystem_0_2_0_rc_2023_10_18_types_advice_t advice, wasi_filesystem_0_2_0_rc_2023_10_18_types_error_code_t *err); - // Synchronize the data of a file to disk. - // - // This function succeeds with no effect if the file descriptor is not - // opened for writing. - // - // Note: This is similar to `fdatasync` in POSIX. - extern bool wasi_filesystem_0_2_0_rc_2023_10_18_types_method_descriptor_sync_data(wasi_filesystem_0_2_0_rc_2023_10_18_types_borrow_descriptor_t self, wasi_filesystem_0_2_0_rc_2023_10_18_types_error_code_t *err); - // Get flags associated with a descriptor. - // - // Note: This returns similar flags to `fcntl(fd, F_GETFL)` in POSIX. - // - // Note: This returns the value that was the `fs_flags` value returned - // from `fdstat_get` in earlier versions of WASI. - extern bool wasi_filesystem_0_2_0_rc_2023_10_18_types_method_descriptor_get_flags(wasi_filesystem_0_2_0_rc_2023_10_18_types_borrow_descriptor_t self, wasi_filesystem_0_2_0_rc_2023_10_18_types_descriptor_flags_t *ret, wasi_filesystem_0_2_0_rc_2023_10_18_types_error_code_t *err); - // Get the dynamic type of a descriptor. - // - // Note: This returns the same value as the `type` field of the `fd-stat` - // returned by `stat`, `stat-at` and similar. - // - // Note: This returns similar flags to the `st_mode & S_IFMT` value provided - // by `fstat` in POSIX. - // - // Note: This returns the value that was the `fs_filetype` value returned - // from `fdstat_get` in earlier versions of WASI. - extern bool wasi_filesystem_0_2_0_rc_2023_10_18_types_method_descriptor_get_type(wasi_filesystem_0_2_0_rc_2023_10_18_types_borrow_descriptor_t self, wasi_filesystem_0_2_0_rc_2023_10_18_types_descriptor_type_t *ret, wasi_filesystem_0_2_0_rc_2023_10_18_types_error_code_t *err); - // Adjust the size of an open file. If this increases the file's size, the - // extra bytes are filled with zeros. - // - // Note: This was called `fd_filestat_set_size` in earlier versions of WASI. - extern bool wasi_filesystem_0_2_0_rc_2023_10_18_types_method_descriptor_set_size(wasi_filesystem_0_2_0_rc_2023_10_18_types_borrow_descriptor_t self, wasi_filesystem_0_2_0_rc_2023_10_18_types_filesize_t size, wasi_filesystem_0_2_0_rc_2023_10_18_types_error_code_t *err); - // Adjust the timestamps of an open file or directory. - // - // Note: This is similar to `futimens` in POSIX. - // - // Note: This was called `fd_filestat_set_times` in earlier versions of WASI. - extern bool wasi_filesystem_0_2_0_rc_2023_10_18_types_method_descriptor_set_times(wasi_filesystem_0_2_0_rc_2023_10_18_types_borrow_descriptor_t self, wasi_filesystem_0_2_0_rc_2023_10_18_types_new_timestamp_t *data_access_timestamp, wasi_filesystem_0_2_0_rc_2023_10_18_types_new_timestamp_t *data_modification_timestamp, wasi_filesystem_0_2_0_rc_2023_10_18_types_error_code_t *err); - // Read from a descriptor, without using and updating the descriptor's offset. - // - // This function returns a list of bytes containing the data that was - // read, along with a bool which, when true, indicates that the end of the - // file was reached. The returned list will contain up to `length` bytes; it - // may return fewer than requested, if the end of the file is reached or - // if the I/O operation is interrupted. - // - // In the future, this may change to return a `stream`. - // - // Note: This is similar to `pread` in POSIX. - extern bool wasi_filesystem_0_2_0_rc_2023_10_18_types_method_descriptor_read(wasi_filesystem_0_2_0_rc_2023_10_18_types_borrow_descriptor_t self, wasi_filesystem_0_2_0_rc_2023_10_18_types_filesize_t length, wasi_filesystem_0_2_0_rc_2023_10_18_types_filesize_t offset, bindings_tuple2_list_u8_bool_t *ret, wasi_filesystem_0_2_0_rc_2023_10_18_types_error_code_t *err); - // Write to a descriptor, without using and updating the descriptor's offset. - // - // It is valid to write past the end of a file; the file is extended to the - // extent of the write, with bytes between the previous end and the start of - // the write set to zero. - // - // In the future, this may change to take a `stream`. - // - // Note: This is similar to `pwrite` in POSIX. - extern bool wasi_filesystem_0_2_0_rc_2023_10_18_types_method_descriptor_write(wasi_filesystem_0_2_0_rc_2023_10_18_types_borrow_descriptor_t self, bindings_list_u8_t *buffer, wasi_filesystem_0_2_0_rc_2023_10_18_types_filesize_t offset, wasi_filesystem_0_2_0_rc_2023_10_18_types_filesize_t *ret, wasi_filesystem_0_2_0_rc_2023_10_18_types_error_code_t *err); - // Read directory entries from a directory. - // - // On filesystems where directories contain entries referring to themselves - // and their parents, often named `.` and `..` respectively, these entries - // are omitted. - // - // This always returns a new stream which starts at the beginning of the - // directory. Multiple streams may be active on the same directory, and they - // do not interfere with each other. - extern bool wasi_filesystem_0_2_0_rc_2023_10_18_types_method_descriptor_read_directory(wasi_filesystem_0_2_0_rc_2023_10_18_types_borrow_descriptor_t self, wasi_filesystem_0_2_0_rc_2023_10_18_types_own_directory_entry_stream_t *ret, wasi_filesystem_0_2_0_rc_2023_10_18_types_error_code_t *err); - // Synchronize the data and metadata of a file to disk. - // - // This function succeeds with no effect if the file descriptor is not - // opened for writing. - // - // Note: This is similar to `fsync` in POSIX. - extern bool wasi_filesystem_0_2_0_rc_2023_10_18_types_method_descriptor_sync(wasi_filesystem_0_2_0_rc_2023_10_18_types_borrow_descriptor_t self, wasi_filesystem_0_2_0_rc_2023_10_18_types_error_code_t *err); - // Create a directory. - // - // Note: This is similar to `mkdirat` in POSIX. - extern bool wasi_filesystem_0_2_0_rc_2023_10_18_types_method_descriptor_create_directory_at(wasi_filesystem_0_2_0_rc_2023_10_18_types_borrow_descriptor_t self, bindings_string_t *path, wasi_filesystem_0_2_0_rc_2023_10_18_types_error_code_t *err); - // Return the attributes of an open file or directory. - // - // Note: This is similar to `fstat` in POSIX, except that it does not return - // device and inode information. For testing whether two descriptors refer to - // the same underlying filesystem object, use `is-same-object`. To obtain - // additional data that can be used do determine whether a file has been - // modified, use `metadata-hash`. - // - // Note: This was called `fd_filestat_get` in earlier versions of WASI. - extern bool wasi_filesystem_0_2_0_rc_2023_10_18_types_method_descriptor_stat(wasi_filesystem_0_2_0_rc_2023_10_18_types_borrow_descriptor_t self, wasi_filesystem_0_2_0_rc_2023_10_18_types_descriptor_stat_t *ret, wasi_filesystem_0_2_0_rc_2023_10_18_types_error_code_t *err); - // Return the attributes of a file or directory. - // - // Note: This is similar to `fstatat` in POSIX, except that it does not - // return device and inode information. See the `stat` description for a - // discussion of alternatives. - // - // Note: This was called `path_filestat_get` in earlier versions of WASI. - extern bool wasi_filesystem_0_2_0_rc_2023_10_18_types_method_descriptor_stat_at(wasi_filesystem_0_2_0_rc_2023_10_18_types_borrow_descriptor_t self, wasi_filesystem_0_2_0_rc_2023_10_18_types_path_flags_t path_flags, bindings_string_t *path, wasi_filesystem_0_2_0_rc_2023_10_18_types_descriptor_stat_t *ret, wasi_filesystem_0_2_0_rc_2023_10_18_types_error_code_t *err); - // Adjust the timestamps of a file or directory. - // - // Note: This is similar to `utimensat` in POSIX. - // - // Note: This was called `path_filestat_set_times` in earlier versions of - // WASI. - extern bool wasi_filesystem_0_2_0_rc_2023_10_18_types_method_descriptor_set_times_at(wasi_filesystem_0_2_0_rc_2023_10_18_types_borrow_descriptor_t self, wasi_filesystem_0_2_0_rc_2023_10_18_types_path_flags_t path_flags, bindings_string_t *path, wasi_filesystem_0_2_0_rc_2023_10_18_types_new_timestamp_t *data_access_timestamp, wasi_filesystem_0_2_0_rc_2023_10_18_types_new_timestamp_t *data_modification_timestamp, wasi_filesystem_0_2_0_rc_2023_10_18_types_error_code_t *err); - // Create a hard link. - // - // Note: This is similar to `linkat` in POSIX. - extern bool wasi_filesystem_0_2_0_rc_2023_10_18_types_method_descriptor_link_at(wasi_filesystem_0_2_0_rc_2023_10_18_types_borrow_descriptor_t self, wasi_filesystem_0_2_0_rc_2023_10_18_types_path_flags_t old_path_flags, bindings_string_t *old_path, wasi_filesystem_0_2_0_rc_2023_10_18_types_borrow_descriptor_t new_descriptor, bindings_string_t *new_path, wasi_filesystem_0_2_0_rc_2023_10_18_types_error_code_t *err); - // Open a file or directory. - // - // The returned descriptor is not guaranteed to be the lowest-numbered - // descriptor not currently open/ it is randomized to prevent applications - // from depending on making assumptions about indexes, since this is - // error-prone in multi-threaded contexts. The returned descriptor is - // guaranteed to be less than 2**31. - // - // If `flags` contains `descriptor-flags::mutate-directory`, and the base - // descriptor doesn't have `descriptor-flags::mutate-directory` set, - // `open-at` fails with `error-code::read-only`. - // - // If `flags` contains `write` or `mutate-directory`, or `open-flags` - // contains `truncate` or `create`, and the base descriptor doesn't have - // `descriptor-flags::mutate-directory` set, `open-at` fails with - // `error-code::read-only`. - // - // Note: This is similar to `openat` in POSIX. - extern bool wasi_filesystem_0_2_0_rc_2023_10_18_types_method_descriptor_open_at(wasi_filesystem_0_2_0_rc_2023_10_18_types_borrow_descriptor_t self, wasi_filesystem_0_2_0_rc_2023_10_18_types_path_flags_t path_flags, bindings_string_t *path, wasi_filesystem_0_2_0_rc_2023_10_18_types_open_flags_t open_flags, wasi_filesystem_0_2_0_rc_2023_10_18_types_descriptor_flags_t flags, wasi_filesystem_0_2_0_rc_2023_10_18_types_modes_t modes, wasi_filesystem_0_2_0_rc_2023_10_18_types_own_descriptor_t *ret, wasi_filesystem_0_2_0_rc_2023_10_18_types_error_code_t *err); - // Read the contents of a symbolic link. - // - // If the contents contain an absolute or rooted path in the underlying - // filesystem, this function fails with `error-code::not-permitted`. - // - // Note: This is similar to `readlinkat` in POSIX. - extern bool wasi_filesystem_0_2_0_rc_2023_10_18_types_method_descriptor_readlink_at(wasi_filesystem_0_2_0_rc_2023_10_18_types_borrow_descriptor_t self, bindings_string_t *path, bindings_string_t *ret, wasi_filesystem_0_2_0_rc_2023_10_18_types_error_code_t *err); - // Remove a directory. - // - // Return `error-code::not-empty` if the directory is not empty. - // - // Note: This is similar to `unlinkat(fd, path, AT_REMOVEDIR)` in POSIX. - extern bool wasi_filesystem_0_2_0_rc_2023_10_18_types_method_descriptor_remove_directory_at(wasi_filesystem_0_2_0_rc_2023_10_18_types_borrow_descriptor_t self, bindings_string_t *path, wasi_filesystem_0_2_0_rc_2023_10_18_types_error_code_t *err); - // Rename a filesystem object. - // - // Note: This is similar to `renameat` in POSIX. - extern bool wasi_filesystem_0_2_0_rc_2023_10_18_types_method_descriptor_rename_at(wasi_filesystem_0_2_0_rc_2023_10_18_types_borrow_descriptor_t self, bindings_string_t *old_path, wasi_filesystem_0_2_0_rc_2023_10_18_types_borrow_descriptor_t new_descriptor, bindings_string_t *new_path, wasi_filesystem_0_2_0_rc_2023_10_18_types_error_code_t *err); - // Create a symbolic link (also known as a "symlink"). - // - // If `old-path` starts with `/`, the function fails with - // `error-code::not-permitted`. - // - // Note: This is similar to `symlinkat` in POSIX. - extern bool wasi_filesystem_0_2_0_rc_2023_10_18_types_method_descriptor_symlink_at(wasi_filesystem_0_2_0_rc_2023_10_18_types_borrow_descriptor_t self, bindings_string_t *old_path, bindings_string_t *new_path, wasi_filesystem_0_2_0_rc_2023_10_18_types_error_code_t *err); - // Check accessibility of a filesystem path. - // - // Check whether the given filesystem path names an object which is - // readable, writable, or executable, or whether it exists. - // - // This does not a guarantee that subsequent accesses will succeed, as - // filesystem permissions may be modified asynchronously by external - // entities. - // - // Note: This is similar to `faccessat` with the `AT_EACCESS` flag in POSIX. - extern bool wasi_filesystem_0_2_0_rc_2023_10_18_types_method_descriptor_access_at(wasi_filesystem_0_2_0_rc_2023_10_18_types_borrow_descriptor_t self, wasi_filesystem_0_2_0_rc_2023_10_18_types_path_flags_t path_flags, bindings_string_t *path, wasi_filesystem_0_2_0_rc_2023_10_18_types_access_type_t *type, wasi_filesystem_0_2_0_rc_2023_10_18_types_error_code_t *err); - // Unlink a filesystem object that is not a directory. - // - // Return `error-code::is-directory` if the path refers to a directory. - // Note: This is similar to `unlinkat(fd, path, 0)` in POSIX. - extern bool wasi_filesystem_0_2_0_rc_2023_10_18_types_method_descriptor_unlink_file_at(wasi_filesystem_0_2_0_rc_2023_10_18_types_borrow_descriptor_t self, bindings_string_t *path, wasi_filesystem_0_2_0_rc_2023_10_18_types_error_code_t *err); - // Change the permissions of a filesystem object that is not a directory. - // - // Note that the ultimate meanings of these permissions is - // filesystem-specific. - // - // Note: This is similar to `fchmodat` in POSIX. - extern bool wasi_filesystem_0_2_0_rc_2023_10_18_types_method_descriptor_change_file_permissions_at(wasi_filesystem_0_2_0_rc_2023_10_18_types_borrow_descriptor_t self, wasi_filesystem_0_2_0_rc_2023_10_18_types_path_flags_t path_flags, bindings_string_t *path, wasi_filesystem_0_2_0_rc_2023_10_18_types_modes_t modes, wasi_filesystem_0_2_0_rc_2023_10_18_types_error_code_t *err); - // Change the permissions of a directory. - // - // Note that the ultimate meanings of these permissions is - // filesystem-specific. - // - // Unlike in POSIX, the `executable` flag is not reinterpreted as a "search" - // flag. `read` on a directory implies readability and searchability, and - // `execute` is not valid for directories. - // - // Note: This is similar to `fchmodat` in POSIX. - extern bool wasi_filesystem_0_2_0_rc_2023_10_18_types_method_descriptor_change_directory_permissions_at(wasi_filesystem_0_2_0_rc_2023_10_18_types_borrow_descriptor_t self, wasi_filesystem_0_2_0_rc_2023_10_18_types_path_flags_t path_flags, bindings_string_t *path, wasi_filesystem_0_2_0_rc_2023_10_18_types_modes_t modes, wasi_filesystem_0_2_0_rc_2023_10_18_types_error_code_t *err); - // Request a shared advisory lock for an open file. - // - // This requests a *shared* lock; more than one shared lock can be held for - // a file at the same time. - // - // If the open file has an exclusive lock, this function downgrades the lock - // to a shared lock. If it has a shared lock, this function has no effect. - // - // This requests an *advisory* lock, meaning that the file could be accessed - // by other programs that don't hold the lock. - // - // It is unspecified how shared locks interact with locks acquired by - // non-WASI programs. - // - // This function blocks until the lock can be acquired. - // - // Not all filesystems support locking; on filesystems which don't support - // locking, this function returns `error-code::unsupported`. - // - // Note: This is similar to `flock(fd, LOCK_SH)` in Unix. - extern bool wasi_filesystem_0_2_0_rc_2023_10_18_types_method_descriptor_lock_shared(wasi_filesystem_0_2_0_rc_2023_10_18_types_borrow_descriptor_t self, wasi_filesystem_0_2_0_rc_2023_10_18_types_error_code_t *err); - // Request an exclusive advisory lock for an open file. - // - // This requests an *exclusive* lock; no other locks may be held for the - // file while an exclusive lock is held. - // - // If the open file has a shared lock and there are no exclusive locks held - // for the file, this function upgrades the lock to an exclusive lock. If the - // open file already has an exclusive lock, this function has no effect. - // - // This requests an *advisory* lock, meaning that the file could be accessed - // by other programs that don't hold the lock. - // - // It is unspecified whether this function succeeds if the file descriptor - // is not opened for writing. It is unspecified how exclusive locks interact - // with locks acquired by non-WASI programs. - // - // This function blocks until the lock can be acquired. - // - // Not all filesystems support locking; on filesystems which don't support - // locking, this function returns `error-code::unsupported`. - // - // Note: This is similar to `flock(fd, LOCK_EX)` in Unix. - extern bool wasi_filesystem_0_2_0_rc_2023_10_18_types_method_descriptor_lock_exclusive(wasi_filesystem_0_2_0_rc_2023_10_18_types_borrow_descriptor_t self, wasi_filesystem_0_2_0_rc_2023_10_18_types_error_code_t *err); - // Request a shared advisory lock for an open file. - // - // This requests a *shared* lock; more than one shared lock can be held for - // a file at the same time. - // - // If the open file has an exclusive lock, this function downgrades the lock - // to a shared lock. If it has a shared lock, this function has no effect. - // - // This requests an *advisory* lock, meaning that the file could be accessed - // by other programs that don't hold the lock. - // - // It is unspecified how shared locks interact with locks acquired by - // non-WASI programs. - // - // This function returns `error-code::would-block` if the lock cannot be - // acquired. - // - // Not all filesystems support locking; on filesystems which don't support - // locking, this function returns `error-code::unsupported`. - // - // Note: This is similar to `flock(fd, LOCK_SH | LOCK_NB)` in Unix. - extern bool wasi_filesystem_0_2_0_rc_2023_10_18_types_method_descriptor_try_lock_shared(wasi_filesystem_0_2_0_rc_2023_10_18_types_borrow_descriptor_t self, wasi_filesystem_0_2_0_rc_2023_10_18_types_error_code_t *err); - // Request an exclusive advisory lock for an open file. - // - // This requests an *exclusive* lock; no other locks may be held for the - // file while an exclusive lock is held. - // - // If the open file has a shared lock and there are no exclusive locks held - // for the file, this function upgrades the lock to an exclusive lock. If the - // open file already has an exclusive lock, this function has no effect. - // - // This requests an *advisory* lock, meaning that the file could be accessed - // by other programs that don't hold the lock. - // - // It is unspecified whether this function succeeds if the file descriptor - // is not opened for writing. It is unspecified how exclusive locks interact - // with locks acquired by non-WASI programs. - // - // This function returns `error-code::would-block` if the lock cannot be - // acquired. - // - // Not all filesystems support locking; on filesystems which don't support - // locking, this function returns `error-code::unsupported`. - // - // Note: This is similar to `flock(fd, LOCK_EX | LOCK_NB)` in Unix. - extern bool wasi_filesystem_0_2_0_rc_2023_10_18_types_method_descriptor_try_lock_exclusive(wasi_filesystem_0_2_0_rc_2023_10_18_types_borrow_descriptor_t self, wasi_filesystem_0_2_0_rc_2023_10_18_types_error_code_t *err); - // Release a shared or exclusive lock on an open file. - // - // Note: This is similar to `flock(fd, LOCK_UN)` in Unix. - extern bool wasi_filesystem_0_2_0_rc_2023_10_18_types_method_descriptor_unlock(wasi_filesystem_0_2_0_rc_2023_10_18_types_borrow_descriptor_t self, wasi_filesystem_0_2_0_rc_2023_10_18_types_error_code_t *err); - // Test whether two descriptors refer to the same filesystem object. - // - // In POSIX, this corresponds to testing whether the two descriptors have the - // same device (`st_dev`) and inode (`st_ino` or `d_ino`) numbers. - // wasi-filesystem does not expose device and inode numbers, so this function - // may be used instead. - extern bool wasi_filesystem_0_2_0_rc_2023_10_18_types_method_descriptor_is_same_object(wasi_filesystem_0_2_0_rc_2023_10_18_types_borrow_descriptor_t self, wasi_filesystem_0_2_0_rc_2023_10_18_types_borrow_descriptor_t other); - // Return a hash of the metadata associated with a filesystem object referred - // to by a descriptor. - // - // This returns a hash of the last-modification timestamp and file size, and - // may also include the inode number, device number, birth timestamp, and - // other metadata fields that may change when the file is modified or - // replaced. It may also include a secret value chosen by the - // implementation and not otherwise exposed. - // - // Implementations are encourated to provide the following properties: - // - // - If the file is not modified or replaced, the computed hash value should - // usually not change. - // - If the object is modified or replaced, the computed hash value should - // usually change. - // - The inputs to the hash should not be easily computable from the - // computed hash. - // - // However, none of these is required. - extern bool wasi_filesystem_0_2_0_rc_2023_10_18_types_method_descriptor_metadata_hash(wasi_filesystem_0_2_0_rc_2023_10_18_types_borrow_descriptor_t self, wasi_filesystem_0_2_0_rc_2023_10_18_types_metadata_hash_value_t *ret, wasi_filesystem_0_2_0_rc_2023_10_18_types_error_code_t *err); - // Return a hash of the metadata associated with a filesystem object referred - // to by a directory descriptor and a relative path. - // - // This performs the same hash computation as `metadata-hash`. - extern bool wasi_filesystem_0_2_0_rc_2023_10_18_types_method_descriptor_metadata_hash_at(wasi_filesystem_0_2_0_rc_2023_10_18_types_borrow_descriptor_t self, wasi_filesystem_0_2_0_rc_2023_10_18_types_path_flags_t path_flags, bindings_string_t *path, wasi_filesystem_0_2_0_rc_2023_10_18_types_metadata_hash_value_t *ret, wasi_filesystem_0_2_0_rc_2023_10_18_types_error_code_t *err); - // Read a single directory entry from a `directory-entry-stream`. - extern bool wasi_filesystem_0_2_0_rc_2023_10_18_types_method_directory_entry_stream_read_directory_entry(wasi_filesystem_0_2_0_rc_2023_10_18_types_borrow_directory_entry_stream_t self, wasi_filesystem_0_2_0_rc_2023_10_18_types_option_directory_entry_t *ret, wasi_filesystem_0_2_0_rc_2023_10_18_types_error_code_t *err); - // Attempts to extract a filesystem-related `error-code` from the stream - // `error` provided. - // - // Stream operations which return `stream-error::last-operation-failed` - // have a payload with more information about the operation that failed. - // This payload can be passed through to this function to see if there's - // filesystem-related information about the error to return. - // - // Note that this function is fallible because not all stream-related - // errors are filesystem-related errors. - extern bool wasi_filesystem_0_2_0_rc_2023_10_18_types_filesystem_error_code(wasi_filesystem_0_2_0_rc_2023_10_18_types_borrow_error_t err_, wasi_filesystem_0_2_0_rc_2023_10_18_types_error_code_t *ret); - - // Imported Functions from `wasi:filesystem/preopens@0.2.0-rc-2023-10-18` - // Return the set of preopened directories, and their path. - extern void wasi_filesystem_0_2_0_rc_2023_10_18_preopens_get_directories(wasi_filesystem_0_2_0_rc_2023_10_18_preopens_list_tuple2_own_descriptor_string_t *ret); - - // Imported Functions from `wasi:sockets/instance-network@0.2.0-rc-2023-10-18` - // Get a handle to the default network. - extern wasi_sockets_0_2_0_rc_2023_10_18_instance_network_own_network_t wasi_sockets_0_2_0_rc_2023_10_18_instance_network_instance_network(void); - - // Imported Functions from `wasi:sockets/ip-name-lookup@0.2.0-rc-2023-10-18` - // Resolve an internet host name to a list of IP addresses. - // - // See the wasi-socket proposal README.md for a comparison with getaddrinfo. - // - // # Parameters - // - `name`: The name to look up. IP addresses are not allowed. Unicode domain names are automatically converted - // to ASCII using IDNA encoding. - // - `address-family`: If provided, limit the results to addresses of this specific address family. - // - `include-unavailable`: When set to true, this function will also return addresses of which the runtime - // thinks (or knows) can't be connected to at the moment. For example, this will return IPv6 addresses on - // systems without an active IPv6 interface. Notes: - // - Even when no public IPv6 interfaces are present or active, names like "localhost" can still resolve to an IPv6 address. - // - Whatever is "available" or "unavailable" is volatile and can change everytime a network cable is unplugged. - // - // This function never blocks. It either immediately fails or immediately returns successfully with a `resolve-address-stream` - // that can be used to (asynchronously) fetch the results. - // - // At the moment, the stream never completes successfully with 0 items. Ie. the first call - // to `resolve-next-address` never returns `ok(none)`. This may change in the future. - // - // # Typical errors - // - `invalid-argument`: `name` is a syntactically invalid domain name. - // - `invalid-argument`: `name` is an IP address. - // - `not-supported`: The specified `address-family` is not supported. (EAI_FAMILY) - // - // # References: - // - - // - - // - - // - - extern bool wasi_sockets_0_2_0_rc_2023_10_18_ip_name_lookup_resolve_addresses(wasi_sockets_0_2_0_rc_2023_10_18_ip_name_lookup_borrow_network_t network, bindings_string_t *name, wasi_sockets_0_2_0_rc_2023_10_18_ip_name_lookup_ip_address_family_t *maybe_address_family, bool include_unavailable, wasi_sockets_0_2_0_rc_2023_10_18_ip_name_lookup_own_resolve_address_stream_t *ret, wasi_sockets_0_2_0_rc_2023_10_18_ip_name_lookup_error_code_t *err); - // Returns the next address from the resolver. - // - // This function should be called multiple times. On each call, it will - // return the next address in connection order preference. If all - // addresses have been exhausted, this function returns `none`. - // - // This function never returns IPv4-mapped IPv6 addresses. - // - // # Typical errors - // - `name-unresolvable`: Name does not exist or has no suitable associated IP addresses. (EAI_NONAME, EAI_NODATA, EAI_ADDRFAMILY) - // - `temporary-resolver-failure`: A temporary failure in name resolution occurred. (EAI_AGAIN) - // - `permanent-resolver-failure`: A permanent failure in name resolution occurred. (EAI_FAIL) - // - `would-block`: A result is not available yet. (EWOULDBLOCK, EAGAIN) - extern bool wasi_sockets_0_2_0_rc_2023_10_18_ip_name_lookup_method_resolve_address_stream_resolve_next_address(wasi_sockets_0_2_0_rc_2023_10_18_ip_name_lookup_borrow_resolve_address_stream_t self, wasi_sockets_0_2_0_rc_2023_10_18_ip_name_lookup_option_ip_address_t *ret, wasi_sockets_0_2_0_rc_2023_10_18_ip_name_lookup_error_code_t *err); - // Create a `pollable` which will resolve once the stream is ready for I/O. - // - // Note: this function is here for WASI Preview2 only. - // It's planned to be removed when `future` is natively supported in Preview3. - extern wasi_sockets_0_2_0_rc_2023_10_18_ip_name_lookup_own_pollable_t wasi_sockets_0_2_0_rc_2023_10_18_ip_name_lookup_method_resolve_address_stream_subscribe(wasi_sockets_0_2_0_rc_2023_10_18_ip_name_lookup_borrow_resolve_address_stream_t self); - - // Imported Functions from `wasi:sockets/tcp@0.2.0-rc-2023-10-18` - // Bind the socket to a specific network on the provided IP address and port. - // - // If the IP address is zero (`0.0.0.0` in IPv4, `::` in IPv6), it is left to the implementation to decide which - // network interface(s) to bind to. - // If the TCP/UDP port is zero, the socket will be bound to a random free port. - // - // When a socket is not explicitly bound, the first invocation to a listen or connect operation will - // implicitly bind the socket. - // - // Unlike in POSIX, this function is async. This enables interactive WASI hosts to inject permission prompts. - // - // # Typical `start` errors - // - `invalid-argument`: The `local-address` has the wrong address family. (EAFNOSUPPORT, EFAULT on Windows) - // - `invalid-argument`: `local-address` is not a unicast address. (EINVAL) - // - `invalid-argument`: `local-address` is an IPv4-mapped IPv6 address, but the socket has `ipv6-only` enabled. (EINVAL) - // - `invalid-state`: The socket is already bound. (EINVAL) - // - // # Typical `finish` errors - // - `address-in-use`: No ephemeral ports available. (EADDRINUSE, ENOBUFS on Windows) - // - `address-in-use`: Address is already in use. (EADDRINUSE) - // - `address-not-bindable`: `local-address` is not an address that the `network` can bind to. (EADDRNOTAVAIL) - // - `not-in-progress`: A `bind` operation is not in progress. - // - `would-block`: Can't finish the operation, it is still in progress. (EWOULDBLOCK, EAGAIN) - // - // # References - // - - // - - // - - // - - extern bool wasi_sockets_0_2_0_rc_2023_10_18_tcp_method_tcp_socket_start_bind(wasi_sockets_0_2_0_rc_2023_10_18_tcp_borrow_tcp_socket_t self, wasi_sockets_0_2_0_rc_2023_10_18_tcp_borrow_network_t network, wasi_sockets_0_2_0_rc_2023_10_18_tcp_ip_socket_address_t *local_address, wasi_sockets_0_2_0_rc_2023_10_18_tcp_error_code_t *err); - extern bool wasi_sockets_0_2_0_rc_2023_10_18_tcp_method_tcp_socket_finish_bind(wasi_sockets_0_2_0_rc_2023_10_18_tcp_borrow_tcp_socket_t self, wasi_sockets_0_2_0_rc_2023_10_18_tcp_error_code_t *err); - // Connect to a remote endpoint. - // - // On success: - // - the socket is transitioned into the Connection state - // - a pair of streams is returned that can be used to read & write to the connection - // - // POSIX mentions: - // > If connect() fails, the state of the socket is unspecified. Conforming applications should - // > close the file descriptor and create a new socket before attempting to reconnect. - // - // WASI prescribes the following behavior: - // - If `connect` fails because an input/state validation error, the socket should remain usable. - // - If a connection was actually attempted but failed, the socket should become unusable for further network communication. - // Besides `drop`, any method after such a failure may return an error. - // - // # Typical `start` errors - // - `invalid-argument`: The `remote-address` has the wrong address family. (EAFNOSUPPORT) - // - `invalid-argument`: `remote-address` is not a unicast address. (EINVAL, ENETUNREACH on Linux, EAFNOSUPPORT on MacOS) - // - `invalid-argument`: `remote-address` is an IPv4-mapped IPv6 address, but the socket has `ipv6-only` enabled. (EINVAL, EADDRNOTAVAIL on Illumos) - // - `invalid-argument`: `remote-address` is a non-IPv4-mapped IPv6 address, but the socket was bound to a specific IPv4-mapped IPv6 address. (or vice versa) - // - `invalid-argument`: The IP address in `remote-address` is set to INADDR_ANY (`0.0.0.0` / `::`). (EADDRNOTAVAIL on Windows) - // - `invalid-argument`: The port in `remote-address` is set to 0. (EADDRNOTAVAIL on Windows) - // - `invalid-argument`: The socket is already attached to a different network. The `network` passed to `connect` must be identical to the one passed to `bind`. - // - `invalid-state`: The socket is already in the Connection state. (EISCONN) - // - `invalid-state`: The socket is already in the Listener state. (EOPNOTSUPP, EINVAL on Windows) - // - // # Typical `finish` errors - // - `timeout`: Connection timed out. (ETIMEDOUT) - // - `connection-refused`: The connection was forcefully rejected. (ECONNREFUSED) - // - `connection-reset`: The connection was reset. (ECONNRESET) - // - `connection-aborted`: The connection was aborted. (ECONNABORTED) - // - `remote-unreachable`: The remote address is not reachable. (EHOSTUNREACH, EHOSTDOWN, ENETUNREACH, ENETDOWN) - // - `address-in-use`: Tried to perform an implicit bind, but there were no ephemeral ports available. (EADDRINUSE, EADDRNOTAVAIL on Linux, EAGAIN on BSD) - // - `not-in-progress`: A `connect` operation is not in progress. - // - `would-block`: Can't finish the operation, it is still in progress. (EWOULDBLOCK, EAGAIN) - // - // # References - // - - // - - // - - // - - extern bool wasi_sockets_0_2_0_rc_2023_10_18_tcp_method_tcp_socket_start_connect(wasi_sockets_0_2_0_rc_2023_10_18_tcp_borrow_tcp_socket_t self, wasi_sockets_0_2_0_rc_2023_10_18_tcp_borrow_network_t network, wasi_sockets_0_2_0_rc_2023_10_18_tcp_ip_socket_address_t *remote_address, wasi_sockets_0_2_0_rc_2023_10_18_tcp_error_code_t *err); - extern bool wasi_sockets_0_2_0_rc_2023_10_18_tcp_method_tcp_socket_finish_connect(wasi_sockets_0_2_0_rc_2023_10_18_tcp_borrow_tcp_socket_t self, wasi_sockets_0_2_0_rc_2023_10_18_tcp_tuple2_own_input_stream_own_output_stream_t *ret, wasi_sockets_0_2_0_rc_2023_10_18_tcp_error_code_t *err); - // Start listening for new connections. - // - // Transitions the socket into the Listener state. - // - // Unlike POSIX: - // - this function is async. This enables interactive WASI hosts to inject permission prompts. - // - the socket must already be explicitly bound. - // - // # Typical `start` errors - // - `invalid-state`: The socket is not bound to any local address. (EDESTADDRREQ) - // - `invalid-state`: The socket is already in the Connection state. (EISCONN, EINVAL on BSD) - // - `invalid-state`: The socket is already in the Listener state. - // - // # Typical `finish` errors - // - `address-in-use`: Tried to perform an implicit bind, but there were no ephemeral ports available. (EADDRINUSE) - // - `not-in-progress`: A `listen` operation is not in progress. - // - `would-block`: Can't finish the operation, it is still in progress. (EWOULDBLOCK, EAGAIN) - // - // # References - // - - // - - // - - // - - extern bool wasi_sockets_0_2_0_rc_2023_10_18_tcp_method_tcp_socket_start_listen(wasi_sockets_0_2_0_rc_2023_10_18_tcp_borrow_tcp_socket_t self, wasi_sockets_0_2_0_rc_2023_10_18_tcp_error_code_t *err); - extern bool wasi_sockets_0_2_0_rc_2023_10_18_tcp_method_tcp_socket_finish_listen(wasi_sockets_0_2_0_rc_2023_10_18_tcp_borrow_tcp_socket_t self, wasi_sockets_0_2_0_rc_2023_10_18_tcp_error_code_t *err); - // Accept a new client socket. - // - // The returned socket is bound and in the Connection state. The following properties are inherited from the listener socket: - // - `address-family` - // - `ipv6-only` - // - `keep-alive` - // - `no-delay` - // - `unicast-hop-limit` - // - `receive-buffer-size` - // - `send-buffer-size` - // - // On success, this function returns the newly accepted client socket along with - // a pair of streams that can be used to read & write to the connection. - // - // # Typical errors - // - `invalid-state`: Socket is not in the Listener state. (EINVAL) - // - `would-block`: No pending connections at the moment. (EWOULDBLOCK, EAGAIN) - // - `connection-aborted`: An incoming connection was pending, but was terminated by the client before this listener could accept it. (ECONNABORTED) - // - `new-socket-limit`: The new socket resource could not be created because of a system limit. (EMFILE, ENFILE) - // - // # References - // - - // - - // - - // - - extern bool wasi_sockets_0_2_0_rc_2023_10_18_tcp_method_tcp_socket_accept(wasi_sockets_0_2_0_rc_2023_10_18_tcp_borrow_tcp_socket_t self, wasi_sockets_0_2_0_rc_2023_10_18_tcp_tuple3_own_tcp_socket_own_input_stream_own_output_stream_t *ret, wasi_sockets_0_2_0_rc_2023_10_18_tcp_error_code_t *err); - // Get the bound local address. - // - // POSIX mentions: - // > If the socket has not been bound to a local name, the value - // > stored in the object pointed to by `address` is unspecified. - // - // WASI is stricter and requires `local-address` to return `invalid-state` when the socket hasn't been bound yet. - // - // # Typical errors - // - `invalid-state`: The socket is not bound to any local address. - // - // # References - // - - // - - // - - // - - extern bool wasi_sockets_0_2_0_rc_2023_10_18_tcp_method_tcp_socket_local_address(wasi_sockets_0_2_0_rc_2023_10_18_tcp_borrow_tcp_socket_t self, wasi_sockets_0_2_0_rc_2023_10_18_tcp_ip_socket_address_t *ret, wasi_sockets_0_2_0_rc_2023_10_18_tcp_error_code_t *err); - // Get the remote address. - // - // # Typical errors - // - `invalid-state`: The socket is not connected to a remote address. (ENOTCONN) - // - // # References - // - - // - - // - - // - - extern bool wasi_sockets_0_2_0_rc_2023_10_18_tcp_method_tcp_socket_remote_address(wasi_sockets_0_2_0_rc_2023_10_18_tcp_borrow_tcp_socket_t self, wasi_sockets_0_2_0_rc_2023_10_18_tcp_ip_socket_address_t *ret, wasi_sockets_0_2_0_rc_2023_10_18_tcp_error_code_t *err); - // Whether this is a IPv4 or IPv6 socket. - // - // Equivalent to the SO_DOMAIN socket option. - extern wasi_sockets_0_2_0_rc_2023_10_18_tcp_ip_address_family_t wasi_sockets_0_2_0_rc_2023_10_18_tcp_method_tcp_socket_address_family(wasi_sockets_0_2_0_rc_2023_10_18_tcp_borrow_tcp_socket_t self); - // Whether IPv4 compatibility (dual-stack) mode is disabled or not. - // - // Equivalent to the IPV6_V6ONLY socket option. - // - // # Typical errors - // - `invalid-state`: (set) The socket is already bound. - // - `not-supported`: (get/set) `this` socket is an IPv4 socket. - // - `not-supported`: (set) Host does not support dual-stack sockets. (Implementations are not required to.) - extern bool wasi_sockets_0_2_0_rc_2023_10_18_tcp_method_tcp_socket_ipv6_only(wasi_sockets_0_2_0_rc_2023_10_18_tcp_borrow_tcp_socket_t self, bool *ret, wasi_sockets_0_2_0_rc_2023_10_18_tcp_error_code_t *err); - extern bool wasi_sockets_0_2_0_rc_2023_10_18_tcp_method_tcp_socket_set_ipv6_only(wasi_sockets_0_2_0_rc_2023_10_18_tcp_borrow_tcp_socket_t self, bool value, wasi_sockets_0_2_0_rc_2023_10_18_tcp_error_code_t *err); - // Hints the desired listen queue size. Implementations are free to ignore this. - // - // # Typical errors - // - `not-supported`: (set) The platform does not support changing the backlog size after the initial listen. - // - `invalid-state`: (set) The socket is already in the Connection state. - extern bool wasi_sockets_0_2_0_rc_2023_10_18_tcp_method_tcp_socket_set_listen_backlog_size(wasi_sockets_0_2_0_rc_2023_10_18_tcp_borrow_tcp_socket_t self, uint64_t value, wasi_sockets_0_2_0_rc_2023_10_18_tcp_error_code_t *err); - // Equivalent to the SO_KEEPALIVE socket option. - extern bool wasi_sockets_0_2_0_rc_2023_10_18_tcp_method_tcp_socket_keep_alive(wasi_sockets_0_2_0_rc_2023_10_18_tcp_borrow_tcp_socket_t self, bool *ret, wasi_sockets_0_2_0_rc_2023_10_18_tcp_error_code_t *err); - extern bool wasi_sockets_0_2_0_rc_2023_10_18_tcp_method_tcp_socket_set_keep_alive(wasi_sockets_0_2_0_rc_2023_10_18_tcp_borrow_tcp_socket_t self, bool value, wasi_sockets_0_2_0_rc_2023_10_18_tcp_error_code_t *err); - // Equivalent to the TCP_NODELAY socket option. - // - // The default value is `false`. - extern bool wasi_sockets_0_2_0_rc_2023_10_18_tcp_method_tcp_socket_no_delay(wasi_sockets_0_2_0_rc_2023_10_18_tcp_borrow_tcp_socket_t self, bool *ret, wasi_sockets_0_2_0_rc_2023_10_18_tcp_error_code_t *err); - extern bool wasi_sockets_0_2_0_rc_2023_10_18_tcp_method_tcp_socket_set_no_delay(wasi_sockets_0_2_0_rc_2023_10_18_tcp_borrow_tcp_socket_t self, bool value, wasi_sockets_0_2_0_rc_2023_10_18_tcp_error_code_t *err); - // Equivalent to the IP_TTL & IPV6_UNICAST_HOPS socket options. - // - // # Typical errors - // - `invalid-argument`: (set) The TTL value must be 1 or higher. - // - `invalid-state`: (set) The socket is already in the Connection state. - // - `invalid-state`: (set) The socket is already in the Listener state. - extern bool wasi_sockets_0_2_0_rc_2023_10_18_tcp_method_tcp_socket_unicast_hop_limit(wasi_sockets_0_2_0_rc_2023_10_18_tcp_borrow_tcp_socket_t self, uint8_t *ret, wasi_sockets_0_2_0_rc_2023_10_18_tcp_error_code_t *err); - extern bool wasi_sockets_0_2_0_rc_2023_10_18_tcp_method_tcp_socket_set_unicast_hop_limit(wasi_sockets_0_2_0_rc_2023_10_18_tcp_borrow_tcp_socket_t self, uint8_t value, wasi_sockets_0_2_0_rc_2023_10_18_tcp_error_code_t *err); - // The kernel buffer space reserved for sends/receives on this socket. - // - // Note #1: an implementation may choose to cap or round the buffer size when setting the value. - // In other words, after setting a value, reading the same setting back may return a different value. - // - // Note #2: there is not necessarily a direct relationship between the kernel buffer size and the bytes of - // actual data to be sent/received by the application, because the kernel might also use the buffer space - // for internal metadata structures. - // - // Equivalent to the SO_RCVBUF and SO_SNDBUF socket options. - // - // # Typical errors - // - `invalid-state`: (set) The socket is already in the Connection state. - // - `invalid-state`: (set) The socket is already in the Listener state. - extern bool wasi_sockets_0_2_0_rc_2023_10_18_tcp_method_tcp_socket_receive_buffer_size(wasi_sockets_0_2_0_rc_2023_10_18_tcp_borrow_tcp_socket_t self, uint64_t *ret, wasi_sockets_0_2_0_rc_2023_10_18_tcp_error_code_t *err); - extern bool wasi_sockets_0_2_0_rc_2023_10_18_tcp_method_tcp_socket_set_receive_buffer_size(wasi_sockets_0_2_0_rc_2023_10_18_tcp_borrow_tcp_socket_t self, uint64_t value, wasi_sockets_0_2_0_rc_2023_10_18_tcp_error_code_t *err); - extern bool wasi_sockets_0_2_0_rc_2023_10_18_tcp_method_tcp_socket_send_buffer_size(wasi_sockets_0_2_0_rc_2023_10_18_tcp_borrow_tcp_socket_t self, uint64_t *ret, wasi_sockets_0_2_0_rc_2023_10_18_tcp_error_code_t *err); - extern bool wasi_sockets_0_2_0_rc_2023_10_18_tcp_method_tcp_socket_set_send_buffer_size(wasi_sockets_0_2_0_rc_2023_10_18_tcp_borrow_tcp_socket_t self, uint64_t value, wasi_sockets_0_2_0_rc_2023_10_18_tcp_error_code_t *err); - // Create a `pollable` which will resolve once the socket is ready for I/O. - // - // Note: this function is here for WASI Preview2 only. - // It's planned to be removed when `future` is natively supported in Preview3. - extern wasi_sockets_0_2_0_rc_2023_10_18_tcp_own_pollable_t wasi_sockets_0_2_0_rc_2023_10_18_tcp_method_tcp_socket_subscribe(wasi_sockets_0_2_0_rc_2023_10_18_tcp_borrow_tcp_socket_t self); - // Initiate a graceful shutdown. - // - // - receive: the socket is not expecting to receive any more data from the peer. All subsequent read - // operations on the `input-stream` associated with this socket will return an End Of Stream indication. - // Any data still in the receive queue at time of calling `shutdown` will be discarded. - // - send: the socket is not expecting to send any more data to the peer. All subsequent write - // operations on the `output-stream` associated with this socket will return an error. - // - both: same effect as receive & send combined. - // - // The shutdown function does not close (drop) the socket. - // - // # Typical errors - // - `invalid-state`: The socket is not in the Connection state. (ENOTCONN) - // - // # References - // - - // - - // - - // - - extern bool wasi_sockets_0_2_0_rc_2023_10_18_tcp_method_tcp_socket_shutdown(wasi_sockets_0_2_0_rc_2023_10_18_tcp_borrow_tcp_socket_t self, wasi_sockets_0_2_0_rc_2023_10_18_tcp_shutdown_type_t shutdown_type, wasi_sockets_0_2_0_rc_2023_10_18_tcp_error_code_t *err); - - // Imported Functions from `wasi:sockets/tcp-create-socket@0.2.0-rc-2023-10-18` - // Create a new TCP socket. - // - // Similar to `socket(AF_INET or AF_INET6, SOCK_STREAM, IPPROTO_TCP)` in POSIX. - // - // This function does not require a network capability handle. This is considered to be safe because - // at time of creation, the socket is not bound to any `network` yet. Up to the moment `bind`/`listen`/`connect` - // is called, the socket is effectively an in-memory configuration object, unable to communicate with the outside world. - // - // All sockets are non-blocking. Use the wasi-poll interface to block on asynchronous operations. - // - // # Typical errors - // - `not-supported`: The specified `address-family` is not supported. (EAFNOSUPPORT) - // - `new-socket-limit`: The new socket resource could not be created because of a system limit. (EMFILE, ENFILE) - // - // # References - // - - // - - // - - // - - extern bool wasi_sockets_0_2_0_rc_2023_10_18_tcp_create_socket_create_tcp_socket(wasi_sockets_0_2_0_rc_2023_10_18_tcp_create_socket_ip_address_family_t address_family, wasi_sockets_0_2_0_rc_2023_10_18_tcp_create_socket_own_tcp_socket_t *ret, wasi_sockets_0_2_0_rc_2023_10_18_tcp_create_socket_error_code_t *err); - - // Imported Functions from `wasi:sockets/udp@0.2.0-rc-2023-10-18` - // Bind the socket to a specific network on the provided IP address and port. - // - // If the IP address is zero (`0.0.0.0` in IPv4, `::` in IPv6), it is left to the implementation to decide which - // network interface(s) to bind to. - // If the TCP/UDP port is zero, the socket will be bound to a random free port. - // - // When a socket is not explicitly bound, the first invocation to connect will implicitly bind the socket. - // - // Unlike in POSIX, this function is async. This enables interactive WASI hosts to inject permission prompts. - // - // # Typical `start` errors - // - `invalid-argument`: The `local-address` has the wrong address family. (EAFNOSUPPORT, EFAULT on Windows) - // - `invalid-state`: The socket is already bound. (EINVAL) - // - // # Typical `finish` errors - // - `address-in-use`: No ephemeral ports available. (EADDRINUSE, ENOBUFS on Windows) - // - `address-in-use`: Address is already in use. (EADDRINUSE) - // - `address-not-bindable`: `local-address` is not an address that the `network` can bind to. (EADDRNOTAVAIL) - // - `not-in-progress`: A `bind` operation is not in progress. - // - `would-block`: Can't finish the operation, it is still in progress. (EWOULDBLOCK, EAGAIN) - // - // # References - // - - // - - // - - // - - extern bool wasi_sockets_0_2_0_rc_2023_10_18_udp_method_udp_socket_start_bind(wasi_sockets_0_2_0_rc_2023_10_18_udp_borrow_udp_socket_t self, wasi_sockets_0_2_0_rc_2023_10_18_udp_borrow_network_t network, wasi_sockets_0_2_0_rc_2023_10_18_udp_ip_socket_address_t *local_address, wasi_sockets_0_2_0_rc_2023_10_18_udp_error_code_t *err); - extern bool wasi_sockets_0_2_0_rc_2023_10_18_udp_method_udp_socket_finish_bind(wasi_sockets_0_2_0_rc_2023_10_18_udp_borrow_udp_socket_t self, wasi_sockets_0_2_0_rc_2023_10_18_udp_error_code_t *err); - // Set the destination address. - // - // The local-address is updated based on the best network path to `remote-address`. - // - // When a destination address is set: - // - all receive operations will only return datagrams sent from the provided `remote-address`. - // - the `send` function can only be used to send to this destination. - // - // Note that this function does not generate any network traffic and the peer is not aware of this "connection". - // - // Unlike in POSIX, this function is async. This enables interactive WASI hosts to inject permission prompts. - // - // # Typical `start` errors - // - `invalid-argument`: The `remote-address` has the wrong address family. (EAFNOSUPPORT) - // - `invalid-argument`: `remote-address` is a non-IPv4-mapped IPv6 address, but the socket was bound to a specific IPv4-mapped IPv6 address. (or vice versa) - // - `invalid-argument`: The IP address in `remote-address` is set to INADDR_ANY (`0.0.0.0` / `::`). (EDESTADDRREQ, EADDRNOTAVAIL) - // - `invalid-argument`: The port in `remote-address` is set to 0. (EDESTADDRREQ, EADDRNOTAVAIL) - // - `invalid-argument`: The socket is already bound to a different network. The `network` passed to `connect` must be identical to the one passed to `bind`. - // - // # Typical `finish` errors - // - `address-in-use`: Tried to perform an implicit bind, but there were no ephemeral ports available. (EADDRINUSE, EADDRNOTAVAIL on Linux, EAGAIN on BSD) - // - `not-in-progress`: A `connect` operation is not in progress. - // - `would-block`: Can't finish the operation, it is still in progress. (EWOULDBLOCK, EAGAIN) - // - // # References - // - - // - - // - - // - - extern bool wasi_sockets_0_2_0_rc_2023_10_18_udp_method_udp_socket_start_connect(wasi_sockets_0_2_0_rc_2023_10_18_udp_borrow_udp_socket_t self, wasi_sockets_0_2_0_rc_2023_10_18_udp_borrow_network_t network, wasi_sockets_0_2_0_rc_2023_10_18_udp_ip_socket_address_t *remote_address, wasi_sockets_0_2_0_rc_2023_10_18_udp_error_code_t *err); - extern bool wasi_sockets_0_2_0_rc_2023_10_18_udp_method_udp_socket_finish_connect(wasi_sockets_0_2_0_rc_2023_10_18_udp_borrow_udp_socket_t self, wasi_sockets_0_2_0_rc_2023_10_18_udp_error_code_t *err); - // Receive messages on the socket. - // - // This function attempts to receive up to `max-results` datagrams on the socket without blocking. - // The returned list may contain fewer elements than requested, but never more. - // If `max-results` is 0, this function returns successfully with an empty list. - // - // # Typical errors - // - `invalid-state`: The socket is not bound to any local address. (EINVAL) - // - `remote-unreachable`: The remote address is not reachable. (ECONNREFUSED, ECONNRESET, ENETRESET on Windows, EHOSTUNREACH, EHOSTDOWN, ENETUNREACH, ENETDOWN) - // - `would-block`: There is no pending data available to be read at the moment. (EWOULDBLOCK, EAGAIN) - // - // # References - // - - // - - // - - // - - // - - // - - // - - // - - extern bool wasi_sockets_0_2_0_rc_2023_10_18_udp_method_udp_socket_receive(wasi_sockets_0_2_0_rc_2023_10_18_udp_borrow_udp_socket_t self, uint64_t max_results, wasi_sockets_0_2_0_rc_2023_10_18_udp_list_datagram_t *ret, wasi_sockets_0_2_0_rc_2023_10_18_udp_error_code_t *err); - // Send messages on the socket. - // - // This function attempts to send all provided `datagrams` on the socket without blocking and - // returns how many messages were actually sent (or queued for sending). - // - // This function semantically behaves the same as iterating the `datagrams` list and sequentially - // sending each individual datagram until either the end of the list has been reached or the first error occurred. - // If at least one datagram has been sent successfully, this function never returns an error. - // - // If the input list is empty, the function returns `ok(0)`. - // - // The remote address option is required. To send a message to the "connected" peer, - // call `remote-address` to get their address. - // - // # Typical errors - // - `invalid-argument`: The `remote-address` has the wrong address family. (EAFNOSUPPORT) - // - `invalid-argument`: `remote-address` is a non-IPv4-mapped IPv6 address, but the socket was bound to a specific IPv4-mapped IPv6 address. (or vice versa) - // - `invalid-argument`: The IP address in `remote-address` is set to INADDR_ANY (`0.0.0.0` / `::`). (EDESTADDRREQ, EADDRNOTAVAIL) - // - `invalid-argument`: The port in `remote-address` is set to 0. (EDESTADDRREQ, EADDRNOTAVAIL) - // - `invalid-argument`: The socket is in "connected" mode and the `datagram.remote-address` does not match the address passed to `connect`. (EISCONN) - // - `invalid-state`: The socket is not bound to any local address. Unlike POSIX, this function does not perform an implicit bind. - // - `remote-unreachable`: The remote address is not reachable. (ECONNREFUSED, ECONNRESET, ENETRESET on Windows, EHOSTUNREACH, EHOSTDOWN, ENETUNREACH, ENETDOWN) - // - `datagram-too-large`: The datagram is too large. (EMSGSIZE) - // - `would-block`: The send buffer is currently full. (EWOULDBLOCK, EAGAIN) - // - // # References - // - - // - - // - - // - - // - - // - - // - - // - - extern bool wasi_sockets_0_2_0_rc_2023_10_18_udp_method_udp_socket_send(wasi_sockets_0_2_0_rc_2023_10_18_udp_borrow_udp_socket_t self, wasi_sockets_0_2_0_rc_2023_10_18_udp_list_datagram_t *datagrams, uint64_t *ret, wasi_sockets_0_2_0_rc_2023_10_18_udp_error_code_t *err); - // Get the current bound address. - // - // POSIX mentions: - // > If the socket has not been bound to a local name, the value - // > stored in the object pointed to by `address` is unspecified. - // - // WASI is stricter and requires `local-address` to return `invalid-state` when the socket hasn't been bound yet. - // - // # Typical errors - // - `invalid-state`: The socket is not bound to any local address. - // - // # References - // - - // - - // - - // - - extern bool wasi_sockets_0_2_0_rc_2023_10_18_udp_method_udp_socket_local_address(wasi_sockets_0_2_0_rc_2023_10_18_udp_borrow_udp_socket_t self, wasi_sockets_0_2_0_rc_2023_10_18_udp_ip_socket_address_t *ret, wasi_sockets_0_2_0_rc_2023_10_18_udp_error_code_t *err); - // Get the address set with `connect`. - // - // # Typical errors - // - `invalid-state`: The socket is not connected to a remote address. (ENOTCONN) - // - // # References - // - - // - - // - - // - - extern bool wasi_sockets_0_2_0_rc_2023_10_18_udp_method_udp_socket_remote_address(wasi_sockets_0_2_0_rc_2023_10_18_udp_borrow_udp_socket_t self, wasi_sockets_0_2_0_rc_2023_10_18_udp_ip_socket_address_t *ret, wasi_sockets_0_2_0_rc_2023_10_18_udp_error_code_t *err); - // Whether this is a IPv4 or IPv6 socket. - // - // Equivalent to the SO_DOMAIN socket option. - extern wasi_sockets_0_2_0_rc_2023_10_18_udp_ip_address_family_t wasi_sockets_0_2_0_rc_2023_10_18_udp_method_udp_socket_address_family(wasi_sockets_0_2_0_rc_2023_10_18_udp_borrow_udp_socket_t self); - // Whether IPv4 compatibility (dual-stack) mode is disabled or not. - // - // Equivalent to the IPV6_V6ONLY socket option. - // - // # Typical errors - // - `not-supported`: (get/set) `this` socket is an IPv4 socket. - // - `invalid-state`: (set) The socket is already bound. - // - `not-supported`: (set) Host does not support dual-stack sockets. (Implementations are not required to.) - extern bool wasi_sockets_0_2_0_rc_2023_10_18_udp_method_udp_socket_ipv6_only(wasi_sockets_0_2_0_rc_2023_10_18_udp_borrow_udp_socket_t self, bool *ret, wasi_sockets_0_2_0_rc_2023_10_18_udp_error_code_t *err); - extern bool wasi_sockets_0_2_0_rc_2023_10_18_udp_method_udp_socket_set_ipv6_only(wasi_sockets_0_2_0_rc_2023_10_18_udp_borrow_udp_socket_t self, bool value, wasi_sockets_0_2_0_rc_2023_10_18_udp_error_code_t *err); - // Equivalent to the IP_TTL & IPV6_UNICAST_HOPS socket options. - extern bool wasi_sockets_0_2_0_rc_2023_10_18_udp_method_udp_socket_unicast_hop_limit(wasi_sockets_0_2_0_rc_2023_10_18_udp_borrow_udp_socket_t self, uint8_t *ret, wasi_sockets_0_2_0_rc_2023_10_18_udp_error_code_t *err); - extern bool wasi_sockets_0_2_0_rc_2023_10_18_udp_method_udp_socket_set_unicast_hop_limit(wasi_sockets_0_2_0_rc_2023_10_18_udp_borrow_udp_socket_t self, uint8_t value, wasi_sockets_0_2_0_rc_2023_10_18_udp_error_code_t *err); - // The kernel buffer space reserved for sends/receives on this socket. - // - // Note #1: an implementation may choose to cap or round the buffer size when setting the value. - // In other words, after setting a value, reading the same setting back may return a different value. - // - // Note #2: there is not necessarily a direct relationship between the kernel buffer size and the bytes of - // actual data to be sent/received by the application, because the kernel might also use the buffer space - // for internal metadata structures. - // - // Equivalent to the SO_RCVBUF and SO_SNDBUF socket options. - extern bool wasi_sockets_0_2_0_rc_2023_10_18_udp_method_udp_socket_receive_buffer_size(wasi_sockets_0_2_0_rc_2023_10_18_udp_borrow_udp_socket_t self, uint64_t *ret, wasi_sockets_0_2_0_rc_2023_10_18_udp_error_code_t *err); - extern bool wasi_sockets_0_2_0_rc_2023_10_18_udp_method_udp_socket_set_receive_buffer_size(wasi_sockets_0_2_0_rc_2023_10_18_udp_borrow_udp_socket_t self, uint64_t value, wasi_sockets_0_2_0_rc_2023_10_18_udp_error_code_t *err); - extern bool wasi_sockets_0_2_0_rc_2023_10_18_udp_method_udp_socket_send_buffer_size(wasi_sockets_0_2_0_rc_2023_10_18_udp_borrow_udp_socket_t self, uint64_t *ret, wasi_sockets_0_2_0_rc_2023_10_18_udp_error_code_t *err); - extern bool wasi_sockets_0_2_0_rc_2023_10_18_udp_method_udp_socket_set_send_buffer_size(wasi_sockets_0_2_0_rc_2023_10_18_udp_borrow_udp_socket_t self, uint64_t value, wasi_sockets_0_2_0_rc_2023_10_18_udp_error_code_t *err); - // Create a `pollable` which will resolve once the socket is ready for I/O. - // - // Note: this function is here for WASI Preview2 only. - // It's planned to be removed when `future` is natively supported in Preview3. - extern wasi_sockets_0_2_0_rc_2023_10_18_udp_own_pollable_t wasi_sockets_0_2_0_rc_2023_10_18_udp_method_udp_socket_subscribe(wasi_sockets_0_2_0_rc_2023_10_18_udp_borrow_udp_socket_t self); - - // Imported Functions from `wasi:sockets/udp-create-socket@0.2.0-rc-2023-10-18` - // Create a new UDP socket. - // - // Similar to `socket(AF_INET or AF_INET6, SOCK_DGRAM, IPPROTO_UDP)` in POSIX. - // - // This function does not require a network capability handle. This is considered to be safe because - // at time of creation, the socket is not bound to any `network` yet. Up to the moment `bind`/`connect` is called, - // the socket is effectively an in-memory configuration object, unable to communicate with the outside world. - // - // All sockets are non-blocking. Use the wasi-poll interface to block on asynchronous operations. - // - // # Typical errors - // - `not-supported`: The specified `address-family` is not supported. (EAFNOSUPPORT) - // - `new-socket-limit`: The new socket resource could not be created because of a system limit. (EMFILE, ENFILE) - // - // # References: - // - - // - - // - - // - - extern bool wasi_sockets_0_2_0_rc_2023_10_18_udp_create_socket_create_udp_socket(wasi_sockets_0_2_0_rc_2023_10_18_udp_create_socket_ip_address_family_t address_family, wasi_sockets_0_2_0_rc_2023_10_18_udp_create_socket_own_udp_socket_t *ret, wasi_sockets_0_2_0_rc_2023_10_18_udp_create_socket_error_code_t *err); - - // Imported Functions from `wasi:random/random@0.2.0-rc-2023-10-18` - // Return `len` cryptographically-secure random or pseudo-random bytes. - // - // This function must produce data at least as cryptographically secure and - // fast as an adequately seeded cryptographically-secure pseudo-random - // number generator (CSPRNG). It must not block, from the perspective of - // the calling program, under any circumstances, including on the first - // request and on requests for numbers of bytes. The returned data must - // always be unpredictable. - // - // This function must always return fresh data. Deterministic environments - // must omit this function, rather than implementing it with deterministic - // data. - extern void wasi_random_0_2_0_rc_2023_10_18_random_get_random_bytes(uint64_t len, bindings_list_u8_t *ret); - // Return a cryptographically-secure random or pseudo-random `u64` value. - // - // This function returns the same type of data as `get-random-bytes`, - // represented as a `u64`. - extern uint64_t wasi_random_0_2_0_rc_2023_10_18_random_get_random_u64(void); - - // Imported Functions from `wasi:random/insecure@0.2.0-rc-2023-10-18` - // Return `len` insecure pseudo-random bytes. - // - // This function is not cryptographically secure. Do not use it for - // anything related to security. - // - // There are no requirements on the values of the returned bytes, however - // implementations are encouraged to return evenly distributed values with - // a long period. - extern void wasi_random_0_2_0_rc_2023_10_18_insecure_get_insecure_random_bytes(uint64_t len, bindings_list_u8_t *ret); - // Return an insecure pseudo-random `u64` value. - // - // This function returns the same type of pseudo-random data as - // `get-insecure-random-bytes`, represented as a `u64`. - extern uint64_t wasi_random_0_2_0_rc_2023_10_18_insecure_get_insecure_random_u64(void); - - // Imported Functions from `wasi:random/insecure-seed@0.2.0-rc-2023-10-18` - // Return a 128-bit value that may contain a pseudo-random value. - // - // The returned value is not required to be computed from a CSPRNG, and may - // even be entirely deterministic. Host implementations are encouraged to - // provide pseudo-random values to any program exposed to - // attacker-controlled content, to enable DoS protection built into many - // languages' hash-map implementations. - // - // This function is intended to only be called once, by a source language - // to initialize Denial Of Service (DoS) protection in its hash-map - // implementation. - // - // # Expected future evolution - // - // This will likely be changed to a value import, to prevent it from being - // called multiple times and potentially used for purposes other than DoS - // protection. - extern void wasi_random_0_2_0_rc_2023_10_18_insecure_seed_insecure_seed(bindings_tuple2_u64_u64_t *ret); - - // Imported Functions from `wasi:cli/environment@0.2.0-rc-2023-10-18` - // Get the POSIX-style environment variables. - // - // Each environment variable is provided as a pair of string variable names - // and string value. - // - // Morally, these are a value import, but until value imports are available - // in the component model, this import function should return the same - // values each time it is called. - extern void wasi_cli_0_2_0_rc_2023_10_18_environment_get_environment(bindings_list_tuple2_string_string_t *ret); - // Get the POSIX-style arguments to the program. - extern void wasi_cli_0_2_0_rc_2023_10_18_environment_get_arguments(bindings_list_string_t *ret); - // Return a path that programs should use as their initial current working - // directory, interpreting `.` as shorthand for this. - extern bool wasi_cli_0_2_0_rc_2023_10_18_environment_initial_cwd(bindings_string_t *ret); - - // Imported Functions from `wasi:cli/exit@0.2.0-rc-2023-10-18` - // Exit the current instance and any linked instances. - extern void wasi_cli_0_2_0_rc_2023_10_18_exit_exit(wasi_cli_0_2_0_rc_2023_10_18_exit_result_void_void_t *status); - - // Imported Functions from `wasi:cli/stdin@0.2.0-rc-2023-10-18` - extern wasi_cli_0_2_0_rc_2023_10_18_stdin_own_input_stream_t wasi_cli_0_2_0_rc_2023_10_18_stdin_get_stdin(void); - - // Imported Functions from `wasi:cli/stdout@0.2.0-rc-2023-10-18` - extern wasi_cli_0_2_0_rc_2023_10_18_stdout_own_output_stream_t wasi_cli_0_2_0_rc_2023_10_18_stdout_get_stdout(void); - - // Imported Functions from `wasi:cli/stderr@0.2.0-rc-2023-10-18` - extern wasi_cli_0_2_0_rc_2023_10_18_stderr_own_output_stream_t wasi_cli_0_2_0_rc_2023_10_18_stderr_get_stderr(void); - - // Imported Functions from `wasi:cli/terminal-stdin@0.2.0-rc-2023-10-18` - // If stdin is connected to a terminal, return a `terminal-input` handle - // allowing further interaction with it. - extern bool wasi_cli_0_2_0_rc_2023_10_18_terminal_stdin_get_terminal_stdin(wasi_cli_0_2_0_rc_2023_10_18_terminal_stdin_own_terminal_input_t *ret); - - // Imported Functions from `wasi:cli/terminal-stdout@0.2.0-rc-2023-10-18` - // If stdout is connected to a terminal, return a `terminal-output` handle - // allowing further interaction with it. - extern bool wasi_cli_0_2_0_rc_2023_10_18_terminal_stdout_get_terminal_stdout(wasi_cli_0_2_0_rc_2023_10_18_terminal_stdout_own_terminal_output_t *ret); - - // Imported Functions from `wasi:cli/terminal-stderr@0.2.0-rc-2023-10-18` - // If stderr is connected to a terminal, return a `terminal-output` handle - // allowing further interaction with it. - extern bool wasi_cli_0_2_0_rc_2023_10_18_terminal_stderr_get_terminal_stderr(wasi_cli_0_2_0_rc_2023_10_18_terminal_stderr_own_terminal_output_t *ret); - - // Imported Functions from `wasi:http/types@0.2.0-rc-2023-10-18` - extern wasi_http_0_2_0_rc_2023_10_18_types_own_fields_t wasi_http_0_2_0_rc_2023_10_18_types_constructor_fields(bindings_list_tuple2_string_list_u8_t *entries); - extern void wasi_http_0_2_0_rc_2023_10_18_types_method_fields_get(wasi_http_0_2_0_rc_2023_10_18_types_borrow_fields_t self, bindings_string_t *name, bindings_list_list_u8_t *ret); - extern void wasi_http_0_2_0_rc_2023_10_18_types_method_fields_set(wasi_http_0_2_0_rc_2023_10_18_types_borrow_fields_t self, bindings_string_t *name, bindings_list_list_u8_t *value); - extern void wasi_http_0_2_0_rc_2023_10_18_types_method_fields_delete(wasi_http_0_2_0_rc_2023_10_18_types_borrow_fields_t self, bindings_string_t *name); - extern void wasi_http_0_2_0_rc_2023_10_18_types_method_fields_append(wasi_http_0_2_0_rc_2023_10_18_types_borrow_fields_t self, bindings_string_t *name, bindings_list_u8_t *value); - extern void wasi_http_0_2_0_rc_2023_10_18_types_method_fields_entries(wasi_http_0_2_0_rc_2023_10_18_types_borrow_fields_t self, bindings_list_tuple2_string_list_u8_t *ret); - extern wasi_http_0_2_0_rc_2023_10_18_types_own_fields_t wasi_http_0_2_0_rc_2023_10_18_types_method_fields_clone(wasi_http_0_2_0_rc_2023_10_18_types_borrow_fields_t self); - extern void wasi_http_0_2_0_rc_2023_10_18_types_method_incoming_request_method(wasi_http_0_2_0_rc_2023_10_18_types_borrow_incoming_request_t self, wasi_http_0_2_0_rc_2023_10_18_types_method_t *ret); - extern bool wasi_http_0_2_0_rc_2023_10_18_types_method_incoming_request_path_with_query(wasi_http_0_2_0_rc_2023_10_18_types_borrow_incoming_request_t self, bindings_string_t *ret); - extern bool wasi_http_0_2_0_rc_2023_10_18_types_method_incoming_request_scheme(wasi_http_0_2_0_rc_2023_10_18_types_borrow_incoming_request_t self, wasi_http_0_2_0_rc_2023_10_18_types_scheme_t *ret); - extern bool wasi_http_0_2_0_rc_2023_10_18_types_method_incoming_request_authority(wasi_http_0_2_0_rc_2023_10_18_types_borrow_incoming_request_t self, bindings_string_t *ret); - extern wasi_http_0_2_0_rc_2023_10_18_types_own_headers_t wasi_http_0_2_0_rc_2023_10_18_types_method_incoming_request_headers(wasi_http_0_2_0_rc_2023_10_18_types_borrow_incoming_request_t self); - extern bool wasi_http_0_2_0_rc_2023_10_18_types_method_incoming_request_consume(wasi_http_0_2_0_rc_2023_10_18_types_borrow_incoming_request_t self, wasi_http_0_2_0_rc_2023_10_18_types_own_incoming_body_t *ret); - extern wasi_http_0_2_0_rc_2023_10_18_types_own_outgoing_request_t wasi_http_0_2_0_rc_2023_10_18_types_constructor_outgoing_request(wasi_http_0_2_0_rc_2023_10_18_types_method_t *method, bindings_string_t *maybe_path_with_query, wasi_http_0_2_0_rc_2023_10_18_types_scheme_t *maybe_scheme, bindings_string_t *maybe_authority, wasi_http_0_2_0_rc_2023_10_18_types_borrow_headers_t headers); - extern bool wasi_http_0_2_0_rc_2023_10_18_types_method_outgoing_request_write(wasi_http_0_2_0_rc_2023_10_18_types_borrow_outgoing_request_t self, wasi_http_0_2_0_rc_2023_10_18_types_own_outgoing_body_t *ret); - extern void wasi_http_0_2_0_rc_2023_10_18_types_static_response_outparam_set(wasi_http_0_2_0_rc_2023_10_18_types_own_response_outparam_t param, wasi_http_0_2_0_rc_2023_10_18_types_result_own_outgoing_response_error_t *response); - extern wasi_http_0_2_0_rc_2023_10_18_types_status_code_t wasi_http_0_2_0_rc_2023_10_18_types_method_incoming_response_status(wasi_http_0_2_0_rc_2023_10_18_types_borrow_incoming_response_t self); - extern wasi_http_0_2_0_rc_2023_10_18_types_own_headers_t wasi_http_0_2_0_rc_2023_10_18_types_method_incoming_response_headers(wasi_http_0_2_0_rc_2023_10_18_types_borrow_incoming_response_t self); - extern bool wasi_http_0_2_0_rc_2023_10_18_types_method_incoming_response_consume(wasi_http_0_2_0_rc_2023_10_18_types_borrow_incoming_response_t self, wasi_http_0_2_0_rc_2023_10_18_types_own_incoming_body_t *ret); - extern bool wasi_http_0_2_0_rc_2023_10_18_types_method_incoming_body_stream(wasi_http_0_2_0_rc_2023_10_18_types_borrow_incoming_body_t self, wasi_http_0_2_0_rc_2023_10_18_types_own_input_stream_t *ret); - extern wasi_http_0_2_0_rc_2023_10_18_types_own_future_trailers_t wasi_http_0_2_0_rc_2023_10_18_types_static_incoming_body_finish(wasi_http_0_2_0_rc_2023_10_18_types_own_incoming_body_t this_); - // Pollable that resolves when the body has been fully read, and the trailers - // are ready to be consumed. - extern wasi_http_0_2_0_rc_2023_10_18_types_own_pollable_t wasi_http_0_2_0_rc_2023_10_18_types_method_future_trailers_subscribe(wasi_http_0_2_0_rc_2023_10_18_types_borrow_future_trailers_t self); - // Retrieve reference to trailers, if they are ready. - extern bool wasi_http_0_2_0_rc_2023_10_18_types_method_future_trailers_get(wasi_http_0_2_0_rc_2023_10_18_types_borrow_future_trailers_t self, wasi_http_0_2_0_rc_2023_10_18_types_result_own_trailers_error_t *ret); - extern wasi_http_0_2_0_rc_2023_10_18_types_own_outgoing_response_t wasi_http_0_2_0_rc_2023_10_18_types_constructor_outgoing_response(wasi_http_0_2_0_rc_2023_10_18_types_status_code_t status_code, wasi_http_0_2_0_rc_2023_10_18_types_borrow_headers_t headers); - // Will give the child outgoing-response at most once. subsequent calls will - // return an error. - extern bool wasi_http_0_2_0_rc_2023_10_18_types_method_outgoing_response_write(wasi_http_0_2_0_rc_2023_10_18_types_borrow_outgoing_response_t self, wasi_http_0_2_0_rc_2023_10_18_types_own_outgoing_body_t *ret); - // Will give the child output-stream at most once. subsequent calls will - // return an error. - extern bool wasi_http_0_2_0_rc_2023_10_18_types_method_outgoing_body_write(wasi_http_0_2_0_rc_2023_10_18_types_borrow_outgoing_body_t self, wasi_http_0_2_0_rc_2023_10_18_types_own_output_stream_t *ret); - // Finalize an outgoing body, optionally providing trailers. This must be - // called to signal that the response is complete. If the `outgoing-body` is - // dropped without calling `outgoing-body-finalize`, the implementation - // should treat the body as corrupted. - extern void wasi_http_0_2_0_rc_2023_10_18_types_static_outgoing_body_finish(wasi_http_0_2_0_rc_2023_10_18_types_own_outgoing_body_t this_, wasi_http_0_2_0_rc_2023_10_18_types_own_trailers_t *maybe_trailers); - // option indicates readiness. - // outer result indicates you are allowed to get the - // incoming-response-or-error at most once. subsequent calls after ready - // will return an error here. - // inner result indicates whether the incoming-response was available, or an - // error occured. - extern bool wasi_http_0_2_0_rc_2023_10_18_types_method_future_incoming_response_get(wasi_http_0_2_0_rc_2023_10_18_types_borrow_future_incoming_response_t self, wasi_http_0_2_0_rc_2023_10_18_types_result_result_own_incoming_response_error_void_t *ret); - extern wasi_http_0_2_0_rc_2023_10_18_types_own_pollable_t wasi_http_0_2_0_rc_2023_10_18_types_method_future_incoming_response_subscribe(wasi_http_0_2_0_rc_2023_10_18_types_borrow_future_incoming_response_t self); - - // Imported Functions from `wasi:http/outgoing-handler@0.2.0-rc-2023-10-18` - extern bool wasi_http_0_2_0_rc_2023_10_18_outgoing_handler_handle(wasi_http_0_2_0_rc_2023_10_18_outgoing_handler_own_outgoing_request_t request, wasi_http_0_2_0_rc_2023_10_18_outgoing_handler_request_options_t *maybe_options, wasi_http_0_2_0_rc_2023_10_18_outgoing_handler_own_future_incoming_response_t *ret, wasi_http_0_2_0_rc_2023_10_18_outgoing_handler_error_t *err); - - // Exported Functions from `wasi:cli/run@0.2.0-rc-2023-10-18` - bool exports_wasi_cli_0_2_0_rc_2023_10_18_run_run(void); - - // Exported Functions from `wasi:http/incoming-handler@0.2.0-rc-2023-10-18` - void exports_wasi_http_0_2_0_rc_2023_10_18_incoming_handler_handle(exports_wasi_http_0_2_0_rc_2023_10_18_incoming_handler_own_incoming_request_t request, exports_wasi_http_0_2_0_rc_2023_10_18_incoming_handler_own_response_outparam_t response_out); - - // Helper Functions - - extern void wasi_io_0_2_0_rc_2023_10_18_poll_pollable_drop_own(wasi_io_0_2_0_rc_2023_10_18_poll_own_pollable_t handle); - extern void wasi_io_0_2_0_rc_2023_10_18_poll_pollable_drop_borrow(wasi_io_0_2_0_rc_2023_10_18_poll_own_pollable_t handle); - - extern wasi_io_0_2_0_rc_2023_10_18_poll_borrow_pollable_t wasi_io_0_2_0_rc_2023_10_18_poll_borrow_pollable(wasi_io_0_2_0_rc_2023_10_18_poll_own_pollable_t handle); - - void wasi_io_0_2_0_rc_2023_10_18_poll_list_borrow_pollable_free(wasi_io_0_2_0_rc_2023_10_18_poll_list_borrow_pollable_t *ptr); - - void bindings_list_u32_free(bindings_list_u32_t *ptr); - - void wasi_clocks_0_2_0_rc_2023_10_18_timezone_timezone_display_free(wasi_clocks_0_2_0_rc_2023_10_18_timezone_timezone_display_t *ptr); - - extern void wasi_io_0_2_0_rc_2023_10_18_streams_error_drop_own(wasi_io_0_2_0_rc_2023_10_18_streams_own_error_t handle); - extern void wasi_io_0_2_0_rc_2023_10_18_streams_error_drop_borrow(wasi_io_0_2_0_rc_2023_10_18_streams_own_error_t handle); - - extern wasi_io_0_2_0_rc_2023_10_18_streams_borrow_error_t wasi_io_0_2_0_rc_2023_10_18_streams_borrow_error(wasi_io_0_2_0_rc_2023_10_18_streams_own_error_t handle); - - void wasi_io_0_2_0_rc_2023_10_18_streams_stream_error_free(wasi_io_0_2_0_rc_2023_10_18_streams_stream_error_t *ptr); - - extern void wasi_io_0_2_0_rc_2023_10_18_streams_input_stream_drop_own(wasi_io_0_2_0_rc_2023_10_18_streams_own_input_stream_t handle); - extern void wasi_io_0_2_0_rc_2023_10_18_streams_input_stream_drop_borrow(wasi_io_0_2_0_rc_2023_10_18_streams_own_input_stream_t handle); - - extern wasi_io_0_2_0_rc_2023_10_18_streams_borrow_input_stream_t wasi_io_0_2_0_rc_2023_10_18_streams_borrow_input_stream(wasi_io_0_2_0_rc_2023_10_18_streams_own_input_stream_t handle); - - extern void wasi_io_0_2_0_rc_2023_10_18_streams_output_stream_drop_own(wasi_io_0_2_0_rc_2023_10_18_streams_own_output_stream_t handle); - extern void wasi_io_0_2_0_rc_2023_10_18_streams_output_stream_drop_borrow(wasi_io_0_2_0_rc_2023_10_18_streams_own_output_stream_t handle); - - extern wasi_io_0_2_0_rc_2023_10_18_streams_borrow_output_stream_t wasi_io_0_2_0_rc_2023_10_18_streams_borrow_output_stream(wasi_io_0_2_0_rc_2023_10_18_streams_own_output_stream_t handle); - - void bindings_list_u8_free(bindings_list_u8_t *ptr); - - void wasi_io_0_2_0_rc_2023_10_18_streams_result_list_u8_stream_error_free(wasi_io_0_2_0_rc_2023_10_18_streams_result_list_u8_stream_error_t *ptr); - - void wasi_io_0_2_0_rc_2023_10_18_streams_result_u64_stream_error_free(wasi_io_0_2_0_rc_2023_10_18_streams_result_u64_stream_error_t *ptr); - - void wasi_io_0_2_0_rc_2023_10_18_streams_result_void_stream_error_free(wasi_io_0_2_0_rc_2023_10_18_streams_result_void_stream_error_t *ptr); - - void wasi_filesystem_0_2_0_rc_2023_10_18_types_access_type_free(wasi_filesystem_0_2_0_rc_2023_10_18_types_access_type_t *ptr); - - void wasi_filesystem_0_2_0_rc_2023_10_18_types_option_datetime_free(wasi_filesystem_0_2_0_rc_2023_10_18_types_option_datetime_t *ptr); - - void wasi_filesystem_0_2_0_rc_2023_10_18_types_descriptor_stat_free(wasi_filesystem_0_2_0_rc_2023_10_18_types_descriptor_stat_t *ptr); - - void wasi_filesystem_0_2_0_rc_2023_10_18_types_new_timestamp_free(wasi_filesystem_0_2_0_rc_2023_10_18_types_new_timestamp_t *ptr); - - void wasi_filesystem_0_2_0_rc_2023_10_18_types_directory_entry_free(wasi_filesystem_0_2_0_rc_2023_10_18_types_directory_entry_t *ptr); - - extern void wasi_filesystem_0_2_0_rc_2023_10_18_types_descriptor_drop_own(wasi_filesystem_0_2_0_rc_2023_10_18_types_own_descriptor_t handle); - extern void wasi_filesystem_0_2_0_rc_2023_10_18_types_descriptor_drop_borrow(wasi_filesystem_0_2_0_rc_2023_10_18_types_own_descriptor_t handle); - - extern wasi_filesystem_0_2_0_rc_2023_10_18_types_borrow_descriptor_t wasi_filesystem_0_2_0_rc_2023_10_18_types_borrow_descriptor(wasi_filesystem_0_2_0_rc_2023_10_18_types_own_descriptor_t handle); - - extern void wasi_filesystem_0_2_0_rc_2023_10_18_types_directory_entry_stream_drop_own(wasi_filesystem_0_2_0_rc_2023_10_18_types_own_directory_entry_stream_t handle); - extern void wasi_filesystem_0_2_0_rc_2023_10_18_types_directory_entry_stream_drop_borrow(wasi_filesystem_0_2_0_rc_2023_10_18_types_own_directory_entry_stream_t handle); - - extern wasi_filesystem_0_2_0_rc_2023_10_18_types_borrow_directory_entry_stream_t wasi_filesystem_0_2_0_rc_2023_10_18_types_borrow_directory_entry_stream(wasi_filesystem_0_2_0_rc_2023_10_18_types_own_directory_entry_stream_t handle); - - void wasi_filesystem_0_2_0_rc_2023_10_18_types_result_own_input_stream_error_code_free(wasi_filesystem_0_2_0_rc_2023_10_18_types_result_own_input_stream_error_code_t *ptr); - - void wasi_filesystem_0_2_0_rc_2023_10_18_types_result_own_output_stream_error_code_free(wasi_filesystem_0_2_0_rc_2023_10_18_types_result_own_output_stream_error_code_t *ptr); - - void wasi_filesystem_0_2_0_rc_2023_10_18_types_result_void_error_code_free(wasi_filesystem_0_2_0_rc_2023_10_18_types_result_void_error_code_t *ptr); - - void wasi_filesystem_0_2_0_rc_2023_10_18_types_result_descriptor_flags_error_code_free(wasi_filesystem_0_2_0_rc_2023_10_18_types_result_descriptor_flags_error_code_t *ptr); - - void wasi_filesystem_0_2_0_rc_2023_10_18_types_result_descriptor_type_error_code_free(wasi_filesystem_0_2_0_rc_2023_10_18_types_result_descriptor_type_error_code_t *ptr); - - void wasi_filesystem_0_2_0_rc_2023_10_18_types_result_tuple2_list_u8_bool_error_code_free(wasi_filesystem_0_2_0_rc_2023_10_18_types_result_tuple2_list_u8_bool_error_code_t *ptr); - - void wasi_filesystem_0_2_0_rc_2023_10_18_types_result_filesize_error_code_free(wasi_filesystem_0_2_0_rc_2023_10_18_types_result_filesize_error_code_t *ptr); - - void wasi_filesystem_0_2_0_rc_2023_10_18_types_result_own_directory_entry_stream_error_code_free(wasi_filesystem_0_2_0_rc_2023_10_18_types_result_own_directory_entry_stream_error_code_t *ptr); - - void wasi_filesystem_0_2_0_rc_2023_10_18_types_result_descriptor_stat_error_code_free(wasi_filesystem_0_2_0_rc_2023_10_18_types_result_descriptor_stat_error_code_t *ptr); - - void wasi_filesystem_0_2_0_rc_2023_10_18_types_result_own_descriptor_error_code_free(wasi_filesystem_0_2_0_rc_2023_10_18_types_result_own_descriptor_error_code_t *ptr); - - void wasi_filesystem_0_2_0_rc_2023_10_18_types_result_string_error_code_free(wasi_filesystem_0_2_0_rc_2023_10_18_types_result_string_error_code_t *ptr); - - void wasi_filesystem_0_2_0_rc_2023_10_18_types_result_metadata_hash_value_error_code_free(wasi_filesystem_0_2_0_rc_2023_10_18_types_result_metadata_hash_value_error_code_t *ptr); - - void wasi_filesystem_0_2_0_rc_2023_10_18_types_option_directory_entry_free(wasi_filesystem_0_2_0_rc_2023_10_18_types_option_directory_entry_t *ptr); - - void wasi_filesystem_0_2_0_rc_2023_10_18_types_result_option_directory_entry_error_code_free(wasi_filesystem_0_2_0_rc_2023_10_18_types_result_option_directory_entry_error_code_t *ptr); - - void wasi_filesystem_0_2_0_rc_2023_10_18_types_option_error_code_free(wasi_filesystem_0_2_0_rc_2023_10_18_types_option_error_code_t *ptr); - - void wasi_filesystem_0_2_0_rc_2023_10_18_preopens_tuple2_own_descriptor_string_free(wasi_filesystem_0_2_0_rc_2023_10_18_preopens_tuple2_own_descriptor_string_t *ptr); - - void wasi_filesystem_0_2_0_rc_2023_10_18_preopens_list_tuple2_own_descriptor_string_free(wasi_filesystem_0_2_0_rc_2023_10_18_preopens_list_tuple2_own_descriptor_string_t *ptr); - - extern void wasi_sockets_0_2_0_rc_2023_10_18_network_network_drop_own(wasi_sockets_0_2_0_rc_2023_10_18_network_own_network_t handle); - extern void wasi_sockets_0_2_0_rc_2023_10_18_network_network_drop_borrow(wasi_sockets_0_2_0_rc_2023_10_18_network_own_network_t handle); - - extern wasi_sockets_0_2_0_rc_2023_10_18_network_borrow_network_t wasi_sockets_0_2_0_rc_2023_10_18_network_borrow_network(wasi_sockets_0_2_0_rc_2023_10_18_network_own_network_t handle); - - void wasi_sockets_0_2_0_rc_2023_10_18_network_ip_address_free(wasi_sockets_0_2_0_rc_2023_10_18_network_ip_address_t *ptr); - - void wasi_sockets_0_2_0_rc_2023_10_18_network_ip_socket_address_free(wasi_sockets_0_2_0_rc_2023_10_18_network_ip_socket_address_t *ptr); - - void wasi_sockets_0_2_0_rc_2023_10_18_ip_name_lookup_ip_address_free(wasi_sockets_0_2_0_rc_2023_10_18_ip_name_lookup_ip_address_t *ptr); - - extern void wasi_sockets_0_2_0_rc_2023_10_18_ip_name_lookup_resolve_address_stream_drop_own(wasi_sockets_0_2_0_rc_2023_10_18_ip_name_lookup_own_resolve_address_stream_t handle); - extern void wasi_sockets_0_2_0_rc_2023_10_18_ip_name_lookup_resolve_address_stream_drop_borrow(wasi_sockets_0_2_0_rc_2023_10_18_ip_name_lookup_own_resolve_address_stream_t handle); - - extern wasi_sockets_0_2_0_rc_2023_10_18_ip_name_lookup_borrow_resolve_address_stream_t wasi_sockets_0_2_0_rc_2023_10_18_ip_name_lookup_borrow_resolve_address_stream(wasi_sockets_0_2_0_rc_2023_10_18_ip_name_lookup_own_resolve_address_stream_t handle); - - void wasi_sockets_0_2_0_rc_2023_10_18_ip_name_lookup_option_ip_address_family_free(wasi_sockets_0_2_0_rc_2023_10_18_ip_name_lookup_option_ip_address_family_t *ptr); - - void wasi_sockets_0_2_0_rc_2023_10_18_ip_name_lookup_result_own_resolve_address_stream_error_code_free(wasi_sockets_0_2_0_rc_2023_10_18_ip_name_lookup_result_own_resolve_address_stream_error_code_t *ptr); - - void wasi_sockets_0_2_0_rc_2023_10_18_ip_name_lookup_option_ip_address_free(wasi_sockets_0_2_0_rc_2023_10_18_ip_name_lookup_option_ip_address_t *ptr); - - void wasi_sockets_0_2_0_rc_2023_10_18_ip_name_lookup_result_option_ip_address_error_code_free(wasi_sockets_0_2_0_rc_2023_10_18_ip_name_lookup_result_option_ip_address_error_code_t *ptr); - - void wasi_sockets_0_2_0_rc_2023_10_18_tcp_ip_socket_address_free(wasi_sockets_0_2_0_rc_2023_10_18_tcp_ip_socket_address_t *ptr); - - extern void wasi_sockets_0_2_0_rc_2023_10_18_tcp_tcp_socket_drop_own(wasi_sockets_0_2_0_rc_2023_10_18_tcp_own_tcp_socket_t handle); - extern void wasi_sockets_0_2_0_rc_2023_10_18_tcp_tcp_socket_drop_borrow(wasi_sockets_0_2_0_rc_2023_10_18_tcp_own_tcp_socket_t handle); - - extern wasi_sockets_0_2_0_rc_2023_10_18_tcp_borrow_tcp_socket_t wasi_sockets_0_2_0_rc_2023_10_18_tcp_borrow_tcp_socket(wasi_sockets_0_2_0_rc_2023_10_18_tcp_own_tcp_socket_t handle); - - void wasi_sockets_0_2_0_rc_2023_10_18_tcp_result_void_error_code_free(wasi_sockets_0_2_0_rc_2023_10_18_tcp_result_void_error_code_t *ptr); - - void wasi_sockets_0_2_0_rc_2023_10_18_tcp_result_tuple2_own_input_stream_own_output_stream_error_code_free(wasi_sockets_0_2_0_rc_2023_10_18_tcp_result_tuple2_own_input_stream_own_output_stream_error_code_t *ptr); - - void wasi_sockets_0_2_0_rc_2023_10_18_tcp_result_tuple3_own_tcp_socket_own_input_stream_own_output_stream_error_code_free(wasi_sockets_0_2_0_rc_2023_10_18_tcp_result_tuple3_own_tcp_socket_own_input_stream_own_output_stream_error_code_t *ptr); - - void wasi_sockets_0_2_0_rc_2023_10_18_tcp_result_ip_socket_address_error_code_free(wasi_sockets_0_2_0_rc_2023_10_18_tcp_result_ip_socket_address_error_code_t *ptr); - - void wasi_sockets_0_2_0_rc_2023_10_18_tcp_result_bool_error_code_free(wasi_sockets_0_2_0_rc_2023_10_18_tcp_result_bool_error_code_t *ptr); - - void wasi_sockets_0_2_0_rc_2023_10_18_tcp_result_u8_error_code_free(wasi_sockets_0_2_0_rc_2023_10_18_tcp_result_u8_error_code_t *ptr); - - void wasi_sockets_0_2_0_rc_2023_10_18_tcp_result_u64_error_code_free(wasi_sockets_0_2_0_rc_2023_10_18_tcp_result_u64_error_code_t *ptr); - - void wasi_sockets_0_2_0_rc_2023_10_18_tcp_create_socket_result_own_tcp_socket_error_code_free(wasi_sockets_0_2_0_rc_2023_10_18_tcp_create_socket_result_own_tcp_socket_error_code_t *ptr); - - void wasi_sockets_0_2_0_rc_2023_10_18_udp_ip_socket_address_free(wasi_sockets_0_2_0_rc_2023_10_18_udp_ip_socket_address_t *ptr); - - void wasi_sockets_0_2_0_rc_2023_10_18_udp_datagram_free(wasi_sockets_0_2_0_rc_2023_10_18_udp_datagram_t *ptr); - - extern void wasi_sockets_0_2_0_rc_2023_10_18_udp_udp_socket_drop_own(wasi_sockets_0_2_0_rc_2023_10_18_udp_own_udp_socket_t handle); - extern void wasi_sockets_0_2_0_rc_2023_10_18_udp_udp_socket_drop_borrow(wasi_sockets_0_2_0_rc_2023_10_18_udp_own_udp_socket_t handle); - - extern wasi_sockets_0_2_0_rc_2023_10_18_udp_borrow_udp_socket_t wasi_sockets_0_2_0_rc_2023_10_18_udp_borrow_udp_socket(wasi_sockets_0_2_0_rc_2023_10_18_udp_own_udp_socket_t handle); - - void wasi_sockets_0_2_0_rc_2023_10_18_udp_result_void_error_code_free(wasi_sockets_0_2_0_rc_2023_10_18_udp_result_void_error_code_t *ptr); - - void wasi_sockets_0_2_0_rc_2023_10_18_udp_list_datagram_free(wasi_sockets_0_2_0_rc_2023_10_18_udp_list_datagram_t *ptr); - - void wasi_sockets_0_2_0_rc_2023_10_18_udp_result_list_datagram_error_code_free(wasi_sockets_0_2_0_rc_2023_10_18_udp_result_list_datagram_error_code_t *ptr); - - void wasi_sockets_0_2_0_rc_2023_10_18_udp_result_u64_error_code_free(wasi_sockets_0_2_0_rc_2023_10_18_udp_result_u64_error_code_t *ptr); - - void wasi_sockets_0_2_0_rc_2023_10_18_udp_result_ip_socket_address_error_code_free(wasi_sockets_0_2_0_rc_2023_10_18_udp_result_ip_socket_address_error_code_t *ptr); - - void wasi_sockets_0_2_0_rc_2023_10_18_udp_result_bool_error_code_free(wasi_sockets_0_2_0_rc_2023_10_18_udp_result_bool_error_code_t *ptr); - - void wasi_sockets_0_2_0_rc_2023_10_18_udp_result_u8_error_code_free(wasi_sockets_0_2_0_rc_2023_10_18_udp_result_u8_error_code_t *ptr); - - void wasi_sockets_0_2_0_rc_2023_10_18_udp_create_socket_result_own_udp_socket_error_code_free(wasi_sockets_0_2_0_rc_2023_10_18_udp_create_socket_result_own_udp_socket_error_code_t *ptr); - - void bindings_tuple2_string_string_free(bindings_tuple2_string_string_t *ptr); - - void bindings_list_tuple2_string_string_free(bindings_list_tuple2_string_string_t *ptr); - - void bindings_list_string_free(bindings_list_string_t *ptr); - - void bindings_option_string_free(bindings_option_string_t *ptr); - - void wasi_cli_0_2_0_rc_2023_10_18_exit_result_void_void_free(wasi_cli_0_2_0_rc_2023_10_18_exit_result_void_void_t *ptr); - - extern void wasi_cli_0_2_0_rc_2023_10_18_terminal_input_terminal_input_drop_own(wasi_cli_0_2_0_rc_2023_10_18_terminal_input_own_terminal_input_t handle); - extern void wasi_cli_0_2_0_rc_2023_10_18_terminal_input_terminal_input_drop_borrow(wasi_cli_0_2_0_rc_2023_10_18_terminal_input_own_terminal_input_t handle); - - extern wasi_cli_0_2_0_rc_2023_10_18_terminal_input_borrow_terminal_input_t wasi_cli_0_2_0_rc_2023_10_18_terminal_input_borrow_terminal_input(wasi_cli_0_2_0_rc_2023_10_18_terminal_input_own_terminal_input_t handle); - - extern void wasi_cli_0_2_0_rc_2023_10_18_terminal_output_terminal_output_drop_own(wasi_cli_0_2_0_rc_2023_10_18_terminal_output_own_terminal_output_t handle); - extern void wasi_cli_0_2_0_rc_2023_10_18_terminal_output_terminal_output_drop_borrow(wasi_cli_0_2_0_rc_2023_10_18_terminal_output_own_terminal_output_t handle); - - extern wasi_cli_0_2_0_rc_2023_10_18_terminal_output_borrow_terminal_output_t wasi_cli_0_2_0_rc_2023_10_18_terminal_output_borrow_terminal_output(wasi_cli_0_2_0_rc_2023_10_18_terminal_output_own_terminal_output_t handle); - - void wasi_cli_0_2_0_rc_2023_10_18_terminal_stdin_option_own_terminal_input_free(wasi_cli_0_2_0_rc_2023_10_18_terminal_stdin_option_own_terminal_input_t *ptr); - - void wasi_cli_0_2_0_rc_2023_10_18_terminal_stdout_option_own_terminal_output_free(wasi_cli_0_2_0_rc_2023_10_18_terminal_stdout_option_own_terminal_output_t *ptr); - - void wasi_cli_0_2_0_rc_2023_10_18_terminal_stderr_option_own_terminal_output_free(wasi_cli_0_2_0_rc_2023_10_18_terminal_stderr_option_own_terminal_output_t *ptr); - - void wasi_http_0_2_0_rc_2023_10_18_types_method_free(wasi_http_0_2_0_rc_2023_10_18_types_method_t *ptr); - - void wasi_http_0_2_0_rc_2023_10_18_types_scheme_free(wasi_http_0_2_0_rc_2023_10_18_types_scheme_t *ptr); - - void wasi_http_0_2_0_rc_2023_10_18_types_error_free(wasi_http_0_2_0_rc_2023_10_18_types_error_t *ptr); - - extern void wasi_http_0_2_0_rc_2023_10_18_types_fields_drop_own(wasi_http_0_2_0_rc_2023_10_18_types_own_fields_t handle); - extern void wasi_http_0_2_0_rc_2023_10_18_types_fields_drop_borrow(wasi_http_0_2_0_rc_2023_10_18_types_own_fields_t handle); - - extern wasi_http_0_2_0_rc_2023_10_18_types_borrow_fields_t wasi_http_0_2_0_rc_2023_10_18_types_borrow_fields(wasi_http_0_2_0_rc_2023_10_18_types_own_fields_t handle); - - extern void wasi_http_0_2_0_rc_2023_10_18_types_incoming_request_drop_own(wasi_http_0_2_0_rc_2023_10_18_types_own_incoming_request_t handle); - extern void wasi_http_0_2_0_rc_2023_10_18_types_incoming_request_drop_borrow(wasi_http_0_2_0_rc_2023_10_18_types_own_incoming_request_t handle); - - extern wasi_http_0_2_0_rc_2023_10_18_types_borrow_incoming_request_t wasi_http_0_2_0_rc_2023_10_18_types_borrow_incoming_request(wasi_http_0_2_0_rc_2023_10_18_types_own_incoming_request_t handle); - - extern void wasi_http_0_2_0_rc_2023_10_18_types_outgoing_request_drop_own(wasi_http_0_2_0_rc_2023_10_18_types_own_outgoing_request_t handle); - extern void wasi_http_0_2_0_rc_2023_10_18_types_outgoing_request_drop_borrow(wasi_http_0_2_0_rc_2023_10_18_types_own_outgoing_request_t handle); - - extern wasi_http_0_2_0_rc_2023_10_18_types_borrow_outgoing_request_t wasi_http_0_2_0_rc_2023_10_18_types_borrow_outgoing_request(wasi_http_0_2_0_rc_2023_10_18_types_own_outgoing_request_t handle); - - void bindings_option_u32_free(bindings_option_u32_t *ptr); - - void wasi_http_0_2_0_rc_2023_10_18_types_request_options_free(wasi_http_0_2_0_rc_2023_10_18_types_request_options_t *ptr); - - extern void wasi_http_0_2_0_rc_2023_10_18_types_response_outparam_drop_own(wasi_http_0_2_0_rc_2023_10_18_types_own_response_outparam_t handle); - extern void wasi_http_0_2_0_rc_2023_10_18_types_response_outparam_drop_borrow(wasi_http_0_2_0_rc_2023_10_18_types_own_response_outparam_t handle); - - extern wasi_http_0_2_0_rc_2023_10_18_types_borrow_response_outparam_t wasi_http_0_2_0_rc_2023_10_18_types_borrow_response_outparam(wasi_http_0_2_0_rc_2023_10_18_types_own_response_outparam_t handle); - - extern void wasi_http_0_2_0_rc_2023_10_18_types_incoming_response_drop_own(wasi_http_0_2_0_rc_2023_10_18_types_own_incoming_response_t handle); - extern void wasi_http_0_2_0_rc_2023_10_18_types_incoming_response_drop_borrow(wasi_http_0_2_0_rc_2023_10_18_types_own_incoming_response_t handle); - - extern wasi_http_0_2_0_rc_2023_10_18_types_borrow_incoming_response_t wasi_http_0_2_0_rc_2023_10_18_types_borrow_incoming_response(wasi_http_0_2_0_rc_2023_10_18_types_own_incoming_response_t handle); - - extern void wasi_http_0_2_0_rc_2023_10_18_types_incoming_body_drop_own(wasi_http_0_2_0_rc_2023_10_18_types_own_incoming_body_t handle); - extern void wasi_http_0_2_0_rc_2023_10_18_types_incoming_body_drop_borrow(wasi_http_0_2_0_rc_2023_10_18_types_own_incoming_body_t handle); - - extern wasi_http_0_2_0_rc_2023_10_18_types_borrow_incoming_body_t wasi_http_0_2_0_rc_2023_10_18_types_borrow_incoming_body(wasi_http_0_2_0_rc_2023_10_18_types_own_incoming_body_t handle); - - extern void wasi_http_0_2_0_rc_2023_10_18_types_future_trailers_drop_own(wasi_http_0_2_0_rc_2023_10_18_types_own_future_trailers_t handle); - extern void wasi_http_0_2_0_rc_2023_10_18_types_future_trailers_drop_borrow(wasi_http_0_2_0_rc_2023_10_18_types_own_future_trailers_t handle); - - extern wasi_http_0_2_0_rc_2023_10_18_types_borrow_future_trailers_t wasi_http_0_2_0_rc_2023_10_18_types_borrow_future_trailers(wasi_http_0_2_0_rc_2023_10_18_types_own_future_trailers_t handle); - - extern void wasi_http_0_2_0_rc_2023_10_18_types_outgoing_response_drop_own(wasi_http_0_2_0_rc_2023_10_18_types_own_outgoing_response_t handle); - extern void wasi_http_0_2_0_rc_2023_10_18_types_outgoing_response_drop_borrow(wasi_http_0_2_0_rc_2023_10_18_types_own_outgoing_response_t handle); - - extern wasi_http_0_2_0_rc_2023_10_18_types_borrow_outgoing_response_t wasi_http_0_2_0_rc_2023_10_18_types_borrow_outgoing_response(wasi_http_0_2_0_rc_2023_10_18_types_own_outgoing_response_t handle); - - extern void wasi_http_0_2_0_rc_2023_10_18_types_outgoing_body_drop_own(wasi_http_0_2_0_rc_2023_10_18_types_own_outgoing_body_t handle); - extern void wasi_http_0_2_0_rc_2023_10_18_types_outgoing_body_drop_borrow(wasi_http_0_2_0_rc_2023_10_18_types_own_outgoing_body_t handle); - - extern wasi_http_0_2_0_rc_2023_10_18_types_borrow_outgoing_body_t wasi_http_0_2_0_rc_2023_10_18_types_borrow_outgoing_body(wasi_http_0_2_0_rc_2023_10_18_types_own_outgoing_body_t handle); - - extern void wasi_http_0_2_0_rc_2023_10_18_types_future_incoming_response_drop_own(wasi_http_0_2_0_rc_2023_10_18_types_own_future_incoming_response_t handle); - extern void wasi_http_0_2_0_rc_2023_10_18_types_future_incoming_response_drop_borrow(wasi_http_0_2_0_rc_2023_10_18_types_own_future_incoming_response_t handle); - - extern wasi_http_0_2_0_rc_2023_10_18_types_borrow_future_incoming_response_t wasi_http_0_2_0_rc_2023_10_18_types_borrow_future_incoming_response(wasi_http_0_2_0_rc_2023_10_18_types_own_future_incoming_response_t handle); - - void bindings_tuple2_string_list_u8_free(bindings_tuple2_string_list_u8_t *ptr); - - void bindings_list_tuple2_string_list_u8_free(bindings_list_tuple2_string_list_u8_t *ptr); - - void bindings_list_list_u8_free(bindings_list_list_u8_t *ptr); - - void wasi_http_0_2_0_rc_2023_10_18_types_option_scheme_free(wasi_http_0_2_0_rc_2023_10_18_types_option_scheme_t *ptr); - - void wasi_http_0_2_0_rc_2023_10_18_types_result_own_incoming_body_void_free(wasi_http_0_2_0_rc_2023_10_18_types_result_own_incoming_body_void_t *ptr); - - void wasi_http_0_2_0_rc_2023_10_18_types_result_own_outgoing_body_void_free(wasi_http_0_2_0_rc_2023_10_18_types_result_own_outgoing_body_void_t *ptr); - - void wasi_http_0_2_0_rc_2023_10_18_types_result_own_outgoing_response_error_free(wasi_http_0_2_0_rc_2023_10_18_types_result_own_outgoing_response_error_t *ptr); - - void wasi_http_0_2_0_rc_2023_10_18_types_result_own_input_stream_void_free(wasi_http_0_2_0_rc_2023_10_18_types_result_own_input_stream_void_t *ptr); - - void wasi_http_0_2_0_rc_2023_10_18_types_result_own_trailers_error_free(wasi_http_0_2_0_rc_2023_10_18_types_result_own_trailers_error_t *ptr); - - void wasi_http_0_2_0_rc_2023_10_18_types_option_result_own_trailers_error_free(wasi_http_0_2_0_rc_2023_10_18_types_option_result_own_trailers_error_t *ptr); - - void wasi_http_0_2_0_rc_2023_10_18_types_result_own_output_stream_void_free(wasi_http_0_2_0_rc_2023_10_18_types_result_own_output_stream_void_t *ptr); - - void wasi_http_0_2_0_rc_2023_10_18_types_option_own_trailers_free(wasi_http_0_2_0_rc_2023_10_18_types_option_own_trailers_t *ptr); - - void wasi_http_0_2_0_rc_2023_10_18_types_result_own_incoming_response_error_free(wasi_http_0_2_0_rc_2023_10_18_types_result_own_incoming_response_error_t *ptr); - - void wasi_http_0_2_0_rc_2023_10_18_types_result_result_own_incoming_response_error_void_free(wasi_http_0_2_0_rc_2023_10_18_types_result_result_own_incoming_response_error_void_t *ptr); - - void wasi_http_0_2_0_rc_2023_10_18_types_option_result_result_own_incoming_response_error_void_free(wasi_http_0_2_0_rc_2023_10_18_types_option_result_result_own_incoming_response_error_void_t *ptr); - - void wasi_http_0_2_0_rc_2023_10_18_outgoing_handler_request_options_free(wasi_http_0_2_0_rc_2023_10_18_outgoing_handler_request_options_t *ptr); - - void wasi_http_0_2_0_rc_2023_10_18_outgoing_handler_error_free(wasi_http_0_2_0_rc_2023_10_18_outgoing_handler_error_t *ptr); - - void wasi_http_0_2_0_rc_2023_10_18_outgoing_handler_option_request_options_free(wasi_http_0_2_0_rc_2023_10_18_outgoing_handler_option_request_options_t *ptr); - - void wasi_http_0_2_0_rc_2023_10_18_outgoing_handler_result_own_future_incoming_response_error_free(wasi_http_0_2_0_rc_2023_10_18_outgoing_handler_result_own_future_incoming_response_error_t *ptr); - - void exports_wasi_cli_0_2_0_rc_2023_10_18_run_result_void_void_free(exports_wasi_cli_0_2_0_rc_2023_10_18_run_result_void_void_t *ptr); - - // Transfers ownership of `s` into the string `ret` - void bindings_string_set(bindings_string_t *ret, char*s); - - // Creates a copy of the input nul-terminate string `s` and - // stores it into the component model string `ret`. - void bindings_string_dup(bindings_string_t *ret, const char*s); - - // Deallocates the string pointed to by `ret`, deallocating - // the memory behind the string. - void bindings_string_free(bindings_string_t *ret); - - #ifdef __cplusplus - } - #endif - #endif - \ No newline at end of file diff --git a/host-apis/wasi-0.2.0-rc-2023-10-18/bindings/bindings_component_type.o b/host-apis/wasi-0.2.0-rc-2023-10-18/bindings/bindings_component_type.o deleted file mode 100644 index 53006246..00000000 Binary files a/host-apis/wasi-0.2.0-rc-2023-10-18/bindings/bindings_component_type.o and /dev/null differ diff --git a/host-apis/wasi-0.2.0-rc-2023-10-18/host_api.cpp b/host-apis/wasi-0.2.0-rc-2023-10-18/host_api.cpp deleted file mode 100644 index 86e2d12a..00000000 --- a/host-apis/wasi-0.2.0-rc-2023-10-18/host_api.cpp +++ /dev/null @@ -1,980 +0,0 @@ -#include "host_api.h" -#include "bindings/bindings.h" - -#include "bindings/bindings.h" -#include - -using std::optional; -using std::string_view; -using std::tuple; -using std::unique_ptr; -using std::vector; - -// The host interface makes the assumption regularly that uint32_t is sufficient space to store a -// pointer. -static_assert(sizeof(uint32_t) == sizeof(void *)); - -typedef wasi_http_0_2_0_rc_2023_10_18_types_own_incoming_request_t incoming_request_t; -typedef wasi_http_0_2_0_rc_2023_10_18_types_borrow_incoming_request_t borrow_incoming_request_t; -typedef wasi_http_0_2_0_rc_2023_10_18_types_own_incoming_response_t incoming_response_t; -typedef wasi_http_0_2_0_rc_2023_10_18_types_borrow_outgoing_request_t borrow_outgoing_request_t; - -typedef wasi_http_0_2_0_rc_2023_10_18_types_own_future_incoming_response_t - future_incoming_response_t; -typedef wasi_http_0_2_0_rc_2023_10_18_types_borrow_future_incoming_response_t - borrow_future_incoming_response_t; - -typedef wasi_http_0_2_0_rc_2023_10_18_types_own_incoming_body_t incoming_body_t; -typedef wasi_http_0_2_0_rc_2023_10_18_types_own_outgoing_body_t outgoing_body_t; - -typedef wasi_http_0_2_0_rc_2023_10_18_types_borrow_incoming_body_t borrow_incoming_body_t; -typedef wasi_http_0_2_0_rc_2023_10_18_types_borrow_outgoing_body_t borrow_outgoing_body_t; - -typedef wasi_io_0_2_0_rc_2023_10_18_poll_own_pollable_t own_pollable_t; -typedef wasi_io_0_2_0_rc_2023_10_18_poll_borrow_pollable_t borrow_pollable_t; -typedef wasi_io_0_2_0_rc_2023_10_18_poll_list_borrow_pollable_t list_borrow_pollable_t; - -typedef wasi_io_0_2_0_rc_2023_10_18_streams_own_input_stream_t own_input_stream_t; -typedef wasi_io_0_2_0_rc_2023_10_18_streams_borrow_input_stream_t borrow_input_stream_t; - -namespace { - -/// This is the type contract for using the Own and Borrow templates. -template struct HandleOps {}; - -/// A convenience wrapper for constructing a borrow. As we only create borrows of things we already -/// own, this wrapper will never explicitly drop borrows. -template class Borrow final { - static constexpr const typename HandleOps::borrow invalid{std::numeric_limits::max()}; - HandleOps::borrow handle{Borrow::invalid}; - -public: - Borrow() = default; - - // Construct a borrow from an owned handle. - Borrow(HandleOps::own handle) : handle{HandleOps::borrow_owned(handle)} {} - - // Construct a borrow from a raw `Handle` value. - Borrow(host_api::Handle handle) : Borrow{typename HandleOps::own{handle}} {} - - // Convenience wrapper for constructing a borrow of a HandleState. - Borrow(host_api::HandleState *state) : Borrow{typename HandleOps::own{state->handle}} {} - - bool valid() const { return this->handle.__handle != Borrow::invalid.__handle; } - - operator bool() const { return this->valid(); } - - operator typename HandleOps::borrow() const { return this->handle; } -}; - -template <> struct HandleOps { - using own = wasi_http_0_2_0_rc_2023_10_18_types_own_fields_t; - using borrow = wasi_http_0_2_0_rc_2023_10_18_types_borrow_fields_t; - - static constexpr const auto borrow_owned = wasi_http_0_2_0_rc_2023_10_18_types_borrow_fields; -}; - -struct OutputStream {}; - -template <> struct HandleOps { - using own = wasi_io_0_2_0_rc_2023_10_18_streams_own_output_stream_t; - using borrow = wasi_io_0_2_0_rc_2023_10_18_streams_borrow_output_stream_t; - - static constexpr const auto borrow_owned = - wasi_io_0_2_0_rc_2023_10_18_streams_borrow_output_stream; -}; - -struct Pollable {}; - -template <> struct HandleOps { - using own = wasi_io_0_2_0_rc_2023_10_18_poll_own_pollable_t; - using borrow = wasi_io_0_2_0_rc_2023_10_18_poll_borrow_pollable_t; - - static constexpr const auto borrow_owned = wasi_io_0_2_0_rc_2023_10_18_poll_borrow_pollable; -}; - -} // namespace - -size_t api::AsyncTask::select(std::vector *tasks) { - auto count = tasks->size(); - vector> handles; - for (const auto task : *tasks) { - handles.emplace_back(task->id()); - } - auto list = list_borrow_pollable_t{ - reinterpret_cast::borrow *>(handles.data()), count}; - bindings_list_u32_t result{nullptr, 0}; - wasi_io_0_2_0_rc_2023_10_18_poll_poll_list(&list, &result); - MOZ_ASSERT(result.len > 0); - const auto ready_index = result.ptr[0]; - free(result.ptr); - - return ready_index; -} - -std::optional api::AsyncTask::ready(std::vector *tasks) { - auto count = tasks->size(); - vector> handles; - for (const auto task : *tasks) { - handles.emplace_back(task->id()); - } - auto list = list_borrow_pollable_t{ - reinterpret_cast::borrow *>(handles.data()), count}; - bindings_list_u32_t result{nullptr, 0}; - wasi_io_0_2_0_rc_2023_10_18_poll_poll_list(&list, &result); - MOZ_ASSERT(result.len > 0); - const auto ready_index = result.ptr[0]; - free(result.ptr); - - return ready_index; -} - -namespace host_api { - -HostString::HostString(const char *c_str) { - len = strlen(c_str); - ptr = JS::UniqueChars(static_cast(malloc(len + 1))); - std::memcpy(ptr.get(), c_str, len); - ptr[len] = '\0'; -} - -HostString bindings_string_to_host_string(bindings_string_t str) { - return {JS::UniqueChars(reinterpret_cast(str.ptr)), str.len}; -} - -HostString bindings_bytes_to_host_string(bindings_list_u8_t str) { - return {JS::UniqueChars(reinterpret_cast(str.ptr)), str.len}; -} - -namespace { - -bindings_string_t string_view_to_world_string(std::string_view str) { - return { - .ptr = (uint8_t *)str.data(), - .len = str.size(), - }; -} - -bindings_list_u8_t string_view_to_world_bytes(std::string_view str) { - return { - .ptr = (uint8_t *)str.data(), - .len = str.size(), - }; -} - -std::string scheme_to_string(const wasi_http_0_2_0_rc_2023_10_18_types_scheme_t &scheme) { - if (scheme.tag == WASI_HTTP_0_2_0_RC_2023_10_18_TYPES_SCHEME_HTTP) { - return "http:"; - } - if (scheme.tag == WASI_HTTP_0_2_0_RC_2023_10_18_TYPES_SCHEME_HTTPS) { - return "https:"; - } - - auto str = bindings_string_to_host_string(scheme.val.other); - return std::string(str); -} - -} // namespace - -Result Random::get_bytes(size_t num_bytes) { - Result res; - - bindings_list_u8_t list{}; - wasi_random_0_2_0_rc_2023_10_18_random_get_random_bytes(num_bytes, &list); - auto ret = HostBytes{ - std::unique_ptr{list.ptr}, - list.len, - }; - res.emplace(std::move(ret)); - - return res; -} - -Result Random::get_u32() { - return Result::ok(wasi_random_0_2_0_rc_2023_10_18_random_get_random_u64()); -} - -uint64_t MonotonicClock::now() { return wasi_clocks_0_2_0_rc_2023_10_18_monotonic_clock_now(); } - -uint64_t MonotonicClock::resolution() { - return wasi_clocks_0_2_0_rc_2023_10_18_monotonic_clock_resolution(); -} - -int32_t MonotonicClock::subscribe(const uint64_t when, const bool absolute) { - return wasi_clocks_0_2_0_rc_2023_10_18_monotonic_clock_subscribe(when, absolute).__handle; -} - -void MonotonicClock::unsubscribe(const int32_t handle_id) { - wasi_io_0_2_0_rc_2023_10_18_poll_pollable_drop_own(own_pollable_t{handle_id}); -} - -HttpHeaders::HttpHeaders() { - bindings_list_tuple2_string_list_u8_t entries{nullptr, 0}; - this->handle_state_ = - new HandleState(wasi_http_0_2_0_rc_2023_10_18_types_constructor_fields(&entries).__handle); -} -HttpHeaders::HttpHeaders(Handle handle) { handle_state_ = new HandleState(handle); } - -HttpHeaders::HttpHeaders(const vector>> &entries) { - for (const auto &[name, values] : entries) { - for (const auto &value : values) { - auto res = set(name, value); - MOZ_RELEASE_ASSERT(!res.is_err()); - } - } -} - -HttpHeaders::HttpHeaders(const HttpHeaders &headers) { - Borrow borrow(headers.handle_state_); - auto handle = wasi_http_0_2_0_rc_2023_10_18_types_method_fields_clone(borrow); - this->handle_state_ = new HandleState(handle.__handle); -} - -Result>> HttpHeaders::entries() const { - Result>> res; - MOZ_ASSERT(valid()); - - bindings_list_tuple2_string_list_u8_t entries; - Borrow borrow{this->handle_state_}; - wasi_http_0_2_0_rc_2023_10_18_types_method_fields_entries(borrow, &entries); - - vector> entries_vec; - for (int i = 0; i < entries.len; i++) { - auto key = entries.ptr[i].f0; - auto value = entries.ptr[i].f1; - entries_vec.emplace_back(bindings_string_to_host_string(key), - bindings_bytes_to_host_string(value)); - } - // Free the outer list, but not the entries themselves. - free(entries.ptr); - res.emplace(std::move(entries_vec)); - - return res; -} - -Result> HttpHeaders::names() const { - Result> res; - MOZ_ASSERT(valid()); - - bindings_list_tuple2_string_list_u8_t entries; - Borrow borrow{this->handle_state_}; - wasi_http_0_2_0_rc_2023_10_18_types_method_fields_entries(borrow, &entries); - - vector names; - for (int i = 0; i < entries.len; i++) { - names.emplace_back(bindings_string_to_host_string(entries.ptr[i].f0)); - } - // Free the outer list, but not the entries themselves. - free(entries.ptr); - res.emplace(std::move(names)); - - return res; -} - -Result>> HttpHeaders::get(string_view name) const { - Result>> res; - MOZ_ASSERT(valid()); - - bindings_list_list_u8_t values; - auto hdr = string_view_to_world_string(name); - Borrow borrow{this->handle_state_}; - wasi_http_0_2_0_rc_2023_10_18_types_method_fields_get(borrow, &hdr, &values); - - if (values.len > 0) { - std::vector names; - for (int i = 0; i < values.len; i++) { - names.emplace_back(bindings_bytes_to_host_string(values.ptr[i])); - } - // Free the outer list, but not the values themselves. - free(values.ptr); - res.emplace(std::move(names)); - } else { - res.emplace(std::nullopt); - } - - return res; -} - -Result HttpHeaders::set(string_view name, string_view value) { - MOZ_ASSERT(valid()); - auto hdr = string_view_to_world_string(name); - auto [ptr, len] = string_view_to_world_bytes(value); - bindings_list_u8_t fieldval{ptr, len}; - - bindings_list_list_u8_t host_values{&fieldval, 1}; - - Borrow borrow{this->handle_state_}; - wasi_http_0_2_0_rc_2023_10_18_types_method_fields_set(borrow, &hdr, &host_values); - free(host_values.ptr); - - return {}; -} - -Result HttpHeaders::append(string_view name, string_view value) { - MOZ_ASSERT(valid()); - auto hdr = string_view_to_world_string(name); - auto [ptr, len] = string_view_to_world_bytes(value); - - Borrow borrow{this->handle_state_}; - bindings_list_u8_t fieldval{ptr, len}; - wasi_http_0_2_0_rc_2023_10_18_types_method_fields_append(borrow, &hdr, &fieldval); - - return {}; -} - -Result HttpHeaders::remove(string_view name) { - MOZ_ASSERT(valid()); - auto hdr = string_view_to_world_string(name); - - Borrow borrow{this->handle_state_}; - wasi_http_0_2_0_rc_2023_10_18_types_method_fields_delete(borrow, &hdr); - - return {}; -} - -// TODO: convert to `Result` -string_view HttpRequestResponseBase::url() { - if (_url) { - return string_view(*_url); - } - - auto borrow = borrow_incoming_request_t{handle_state_->handle}; - - wasi_http_0_2_0_rc_2023_10_18_types_scheme_t scheme{ - .tag = WASI_HTTP_0_2_0_RC_2023_10_18_TYPES_SCHEME_HTTP, - }; - wasi_http_0_2_0_rc_2023_10_18_types_method_incoming_request_scheme(borrow, &scheme); - _url = new std::string(scheme_to_string(scheme)); - - bindings_string_t authority; - if (!wasi_http_0_2_0_rc_2023_10_18_types_method_incoming_request_authority(borrow, &authority)) { - _url->append("localhost"); - } else { - _url->append(string_view(bindings_string_to_host_string(authority))); - } - - bindings_string_t path; - if (wasi_http_0_2_0_rc_2023_10_18_types_method_incoming_request_path_with_query(borrow, &path)) { - _url->append(string_view(bindings_string_to_host_string(path))); - } - - return string_view(*_url); -} - -bool write_to_outgoing_body(Borrow borrow, const uint8_t *ptr, const size_t len) { - // The write call doesn't mutate the buffer; the cast is just for the - // generated bindings. - bindings_list_u8_t list{const_cast(ptr), len}; - wasi_io_0_2_0_rc_2023_10_18_streams_stream_error_t err; - // TODO: proper error handling. - return wasi_io_0_2_0_rc_2023_10_18_streams_method_output_stream_write(borrow, &list, &err); -} - -class OutgoingBodyHandleState final : HandleState { - Handle stream_handle_; - PollableHandle pollable_handle_; - - friend HttpOutgoingBody; - -public: - explicit OutgoingBodyHandleState(const Handle handle) - : HandleState(handle), pollable_handle_(INVALID_POLLABLE_HANDLE) { - const borrow_outgoing_body_t borrow = {handle}; - HandleOps::own stream{}; - if (!wasi_http_0_2_0_rc_2023_10_18_types_method_outgoing_body_write(borrow, &stream)) { - MOZ_ASSERT_UNREACHABLE("Getting a body's stream should never fail"); - } - stream_handle_ = stream.__handle; - } -}; - -HttpOutgoingBody::HttpOutgoingBody(Handle handle) : Pollable() { - handle_state_ = new OutgoingBodyHandleState(handle); -} -Result HttpOutgoingBody::capacity() { - if (!valid()) { - // TODO: proper error handling for all 154 error codes. - return Result::err(154); - } - - auto *state = static_cast(this->handle_state_); - Borrow borrow(state->stream_handle_); - - uint64_t capacity = 0; - wasi_io_0_2_0_rc_2023_10_18_streams_stream_error_t err; - if (!wasi_io_0_2_0_rc_2023_10_18_streams_method_output_stream_check_write(borrow, &capacity, - &err)) { - return Result::err(154); - } - return Result::ok(capacity); -} - -Result HttpOutgoingBody::write(const uint8_t *bytes, size_t len) { - auto res = capacity(); - if (res.is_err()) { - // TODO: proper error handling for all 154 error codes. - return Result::err(154); - } - auto capacity = res.unwrap(); - auto bytes_to_write = std::min(len, static_cast(capacity)); - - auto *state = static_cast(this->handle_state_); - Borrow borrow(state->stream_handle_); - if (!write_to_outgoing_body(borrow, bytes, bytes_to_write)) { - return Result::err(154); - } - - return Result::ok(bytes_to_write); -} - -Result HttpOutgoingBody::write_all(const uint8_t *bytes, size_t len) { - if (!valid()) { - // TODO: proper error handling for all 154 error codes. - return Result::err({}); - } - - auto *state = static_cast(this->handle_state_); - Borrow borrow(state->stream_handle_); - - while (len > 0) { - auto capacity_res = capacity(); - if (capacity_res.is_err()) { - // TODO: proper error handling for all 154 error codes. - return Result::err(154); - } - auto capacity = capacity_res.unwrap(); - auto bytes_to_write = std::min(len, static_cast(capacity)); - if (!write_to_outgoing_body(borrow, bytes, len)) { - return Result::err(154); - } - - bytes += bytes_to_write; - len -= bytes_to_write; - } - - return {}; -} - -class BodyAppendTask final : public api::AsyncTask { - enum class State { - BlockedOnBoth, - BlockedOnIncoming, - BlockedOnOutgoing, - Ready, - Done, - }; - - HttpIncomingBody *incoming_body_; - HttpOutgoingBody *outgoing_body_; - PollableHandle incoming_pollable_; - PollableHandle outgoing_pollable_; - State state_; - - void set_state(const State state) { - MOZ_ASSERT(state_ != State::Done); - state_ = state; - } - -public: - explicit BodyAppendTask(HttpIncomingBody *incoming_body, HttpOutgoingBody *outgoing_body) - : incoming_body_(incoming_body), outgoing_body_(outgoing_body) { - auto res = incoming_body_->subscribe(); - MOZ_ASSERT(!res.is_err()); - incoming_pollable_ = res.unwrap(); - - res = outgoing_body_->subscribe(); - MOZ_ASSERT(!res.is_err()); - outgoing_pollable_ = res.unwrap(); - - state_ = State::BlockedOnBoth; - } - - [[nodiscard]] bool run(api::Engine *engine) override { - // If run is called while we're blocked on the incoming stream, that means that stream's - // pollable has resolved, so the stream must be ready. - if (state_ == State::BlockedOnBoth || state_ == State::BlockedOnIncoming) { - auto res = incoming_body_->read(0); - MOZ_ASSERT(!res.is_err()); - auto [bytes, done] = std::move(res.unwrap()); - if (done) { - set_state(State::Done); - return true; - } - set_state(State::BlockedOnOutgoing); - } - - uint64_t capacity = 0; - if (state_ == State::BlockedOnOutgoing) { - auto res = outgoing_body_->capacity(); - if (res.is_err()) { - return false; - } - capacity = res.unwrap(); - if (capacity > 0) { - set_state(State::Ready); - } else { - engine->queue_async_task(this); - return true; - } - } - - MOZ_ASSERT(state_ == State::Ready); - - // TODO: reuse a buffer for this loop - do { - auto res = incoming_body_->read(capacity); - if (res.is_err()) { - // TODO: proper error handling. - return false; - } - auto [done, bytes] = std::move(res.unwrap()); - if (bytes.len == 0 && !done) { - set_state(State::BlockedOnIncoming); - engine->queue_async_task(this); - return true; - } - - auto offset = 0; - while (bytes.len - offset > 0) { - // TODO: remove double checking of write-readiness - // TODO: make this async by storing the remaining chunk in the task and marking it as being - // blocked on write - auto write_res = outgoing_body_->write(bytes.ptr.get() + offset, bytes.len - offset); - if (write_res.is_err()) { - // TODO: proper error handling. - return false; - } - offset += write_res.unwrap(); - } - - if (done) { - set_state(State::Done); - return true; - } - - auto capacity_res = outgoing_body_->capacity(); - if (capacity_res.is_err()) { - // TODO: proper error handling. - return false; - } - capacity = capacity_res.unwrap(); - } while (capacity > 0); - - set_state(State::BlockedOnOutgoing); - engine->queue_async_task(this); - return true; - } - - [[nodiscard]] bool cancel(api::Engine *engine) override { - MOZ_ASSERT_UNREACHABLE("BodyAppendTask's semantics don't allow for cancellation"); - return true; - } - - [[nodiscard]] int32_t id() override { - if (state_ == State::BlockedOnBoth || state_ == State::BlockedOnIncoming) { - return incoming_pollable_; - } - - MOZ_ASSERT(state_ == State::BlockedOnOutgoing, - "BodyAppendTask should only be queued if it's not known to be ready"); - return outgoing_pollable_; - } - - void trace(JSTracer *trc) override { - // Nothing to trace. - } -}; - -Result HttpOutgoingBody::append(api::Engine *engine, HttpIncomingBody *other) { - MOZ_ASSERT(valid()); - engine->queue_async_task(new BodyAppendTask(other, this)); - return {}; -} - -Result HttpOutgoingBody::close() { - MOZ_ASSERT(valid()); - - auto state = static_cast(handle_state_); - // A blocking flush is required here to ensure that all buffered contents are - // actually written before finishing the body. - Borrow borrow{state->stream_handle_}; - wasi_io_0_2_0_rc_2023_10_18_streams_stream_error_t err; - bool success = - wasi_io_0_2_0_rc_2023_10_18_streams_method_output_stream_blocking_flush(borrow, &err); - MOZ_RELEASE_ASSERT(success); - if (state->pollable_handle_ != INVALID_POLLABLE_HANDLE) { - wasi_io_0_2_0_rc_2023_10_18_poll_pollable_drop_own(own_pollable_t{state->pollable_handle_}); - } - wasi_io_0_2_0_rc_2023_10_18_streams_output_stream_drop_own({state->stream_handle_}); - wasi_http_0_2_0_rc_2023_10_18_types_static_outgoing_body_finish({state->handle}, nullptr); - delete handle_state_; - handle_state_ = nullptr; - - return {}; -} -Result HttpOutgoingBody::subscribe() { - auto state = static_cast(handle_state_); - if (state->pollable_handle_ == INVALID_POLLABLE_HANDLE) { - Borrow borrow{state->stream_handle_}; - state->pollable_handle_ = - wasi_io_0_2_0_rc_2023_10_18_streams_method_output_stream_subscribe(borrow).__handle; - } - return Result::ok(state->pollable_handle_); -} - -void HttpOutgoingBody::unsubscribe() { - auto state = static_cast(handle_state_); - if (state->pollable_handle_ == INVALID_POLLABLE_HANDLE) { - return; - } - wasi_io_0_2_0_rc_2023_10_18_poll_pollable_drop_own(own_pollable_t{state->pollable_handle_}); - state->pollable_handle_ = INVALID_POLLABLE_HANDLE; -} - -static const char *http_method_names[9] = {"GET", "HEAD", "POST", "PUT", "DELETE", - "CONNECT", "OPTIONS", "TRACE", "PATCH"}; - -wasi_http_0_2_0_rc_2023_10_18_types_method_t http_method_to_host(string_view method_str) { - - if (method_str.empty()) { - return wasi_http_0_2_0_rc_2023_10_18_types_method_t{ - WASI_HTTP_0_2_0_RC_2023_10_18_TYPES_METHOD_GET}; - } - - auto method = method_str.begin(); - for (uint8_t i = 0; i < WASI_HTTP_0_2_0_RC_2023_10_18_TYPES_METHOD_OTHER; i++) { - auto name = http_method_names[i]; - if (strcasecmp(method, name) == 0) { - return wasi_http_0_2_0_rc_2023_10_18_types_method_t{i}; - } - } - - auto val = bindings_string_t{reinterpret_cast(const_cast(method)), - method_str.length()}; - return wasi_http_0_2_0_rc_2023_10_18_types_method_t{ - WASI_HTTP_0_2_0_RC_2023_10_18_TYPES_METHOD_OTHER, {val}}; -} - -HttpOutgoingRequest::HttpOutgoingRequest(HandleState *state) { this->handle_state_ = state; } - -HttpOutgoingRequest *HttpOutgoingRequest::make(string_view method_str, optional url_str, - HttpHeaders *headers) { - bindings_string_t path_with_query; - wasi_http_0_2_0_rc_2023_10_18_types_scheme_t scheme; - bindings_string_t authority; - - bindings_string_t *maybe_path_with_query = nullptr; - wasi_http_0_2_0_rc_2023_10_18_types_scheme_t *maybe_scheme = nullptr; - bindings_string_t *maybe_authority = nullptr; - - if (url_str) { - jsurl::SpecString val = url_str.value(); - jsurl::JSUrl *url = new_jsurl(&val); - jsurl::SpecSlice protocol = jsurl::protocol(url); - if (std::memcmp(protocol.data, "http:", protocol.len) == 0) { - scheme.tag = WASI_HTTP_0_2_0_RC_2023_10_18_TYPES_SCHEME_HTTP; - } else if (std::memcmp(protocol.data, "https:", protocol.len) == 0) { - scheme.tag = WASI_HTTP_0_2_0_RC_2023_10_18_TYPES_SCHEME_HTTPS; - } else { - scheme.tag = WASI_HTTP_0_2_0_RC_2023_10_18_TYPES_SCHEME_OTHER; - scheme.val = {const_cast(protocol.data), protocol.len - 1}; - } - maybe_scheme = &scheme; - - jsurl::SpecSlice authority_slice = jsurl::authority(url); - authority = {const_cast(authority_slice.data), authority_slice.len}; - maybe_authority = &authority; - - jsurl::SpecSlice path_with_query_slice = jsurl::path_with_query(url); - path_with_query = {const_cast(path_with_query_slice.data), - path_with_query_slice.len}; - maybe_path_with_query = &path_with_query; - } - - wasi_http_0_2_0_rc_2023_10_18_types_method_t method = http_method_to_host(method_str); - auto handle = wasi_http_0_2_0_rc_2023_10_18_types_constructor_outgoing_request( - &method, maybe_path_with_query, maybe_scheme, maybe_authority, - {headers->handle_state_->handle}) - .__handle; - - auto *state = new HandleState(handle); - auto *req = new HttpOutgoingRequest(state); - - req->headers_ = headers; - - return req; -} - -Result HttpOutgoingRequest::method() { - MOZ_ASSERT(valid()); - MOZ_ASSERT(headers_); - return Result::ok(method_); -} - -Result HttpOutgoingRequest::headers() { - MOZ_ASSERT(valid()); - MOZ_ASSERT(headers_); - return Result::ok(headers_); -} - -Result HttpOutgoingRequest::body() { - typedef Result Res; - MOZ_ASSERT(valid()); - if (!this->body_) { - outgoing_body_t body; - if (!wasi_http_0_2_0_rc_2023_10_18_types_method_outgoing_request_write( - wasi_http_0_2_0_rc_2023_10_18_types_borrow_outgoing_request({handle_state_->handle}), - &body)) { - return Res::err(154); - } - this->body_ = new HttpOutgoingBody(body.__handle); - } - return Res::ok(body_); -} - -Result HttpOutgoingRequest::send() { - MOZ_ASSERT(valid()); - future_incoming_response_t ret; - wasi_http_0_2_0_rc_2023_10_18_outgoing_handler_error_t err; - wasi_http_0_2_0_rc_2023_10_18_outgoing_handler_handle({handle_state_->handle}, nullptr, &ret, - &err); - auto res = new FutureHttpIncomingResponse(ret.__handle); - return Result::ok(res); -} - -class IncomingBodyHandleState final : HandleState { - Handle stream_handle_; - PollableHandle pollable_handle_; - - friend HttpIncomingBody; - -public: - explicit IncomingBodyHandleState(const Handle handle) - : HandleState(handle), pollable_handle_(INVALID_POLLABLE_HANDLE) { - const borrow_incoming_body_t borrow = {handle}; - own_input_stream_t stream{}; - if (!wasi_http_0_2_0_rc_2023_10_18_types_method_incoming_body_stream(borrow, &stream)) { - MOZ_ASSERT_UNREACHABLE("Getting a body's stream should never fail"); - } - stream_handle_ = stream.__handle; - } -}; - -HttpIncomingBody::HttpIncomingBody(const Handle handle) : Pollable() { - handle_state_ = new IncomingBodyHandleState(handle); -} - -Result HttpIncomingBody::read(uint32_t chunk_size) { - typedef Result Res; - - bindings_list_u8_t ret{}; - wasi_io_0_2_0_rc_2023_10_18_streams_stream_error_t err{}; - auto borrow = borrow_input_stream_t( - {static_cast(handle_state_)->stream_handle_}); - bool success = - wasi_io_0_2_0_rc_2023_10_18_streams_method_input_stream_read(borrow, chunk_size, &ret, &err); - if (!success) { - if (err.tag == WASI_IO_0_2_0_RC_2023_10_18_STREAMS_STREAM_ERROR_CLOSED) { - return Res::ok(ReadResult(true, nullptr, 0)); - } - return Res::err(154); - } - return Res::ok(ReadResult(false, unique_ptr(ret.ptr), ret.len)); -} - -// TODO: implement -Result HttpIncomingBody::close() { return {}; } - -Result HttpIncomingBody::subscribe() { - auto borrow = borrow_input_stream_t( - {static_cast(handle_state_)->stream_handle_}); - auto pollable = wasi_io_0_2_0_rc_2023_10_18_streams_method_input_stream_subscribe(borrow); - return Result::ok(pollable.__handle); -} -void HttpIncomingBody::unsubscribe() { - auto state = static_cast(handle_state_); - if (state->pollable_handle_ == INVALID_POLLABLE_HANDLE) { - return; - } - wasi_io_0_2_0_rc_2023_10_18_poll_pollable_drop_own(own_pollable_t{state->pollable_handle_}); - state->pollable_handle_ = INVALID_POLLABLE_HANDLE; -} - -FutureHttpIncomingResponse::FutureHttpIncomingResponse(Handle handle) { - handle_state_ = new HandleState(handle); -} - -Result> FutureHttpIncomingResponse::maybe_response() { - typedef Result> Res; - wasi_http_0_2_0_rc_2023_10_18_types_result_result_own_incoming_response_error_void_t res; - auto borrow = - wasi_http_0_2_0_rc_2023_10_18_types_borrow_future_incoming_response({handle_state_->handle}); - if (!wasi_http_0_2_0_rc_2023_10_18_types_method_future_incoming_response_get(borrow, &res)) { - return Res::ok(std::nullopt); - } - - MOZ_ASSERT(!res.is_err, - "FutureHttpIncomingResponse::poll must not be called again after succeeding once"); - - auto [is_err, val] = res.val.ok; - if (is_err) { - return Res::err(154); - } - - return Res::ok(new HttpIncomingResponse(val.ok.__handle)); -} - -Result FutureHttpIncomingResponse::subscribe() { - auto borrow = - wasi_http_0_2_0_rc_2023_10_18_types_borrow_future_incoming_response({handle_state_->handle}); - auto pollable = - wasi_http_0_2_0_rc_2023_10_18_types_method_future_incoming_response_subscribe(borrow); - return Result::ok(pollable.__handle); -} -void FutureHttpIncomingResponse::unsubscribe() { - // TODO: implement -} - -Result HttpIncomingResponse::status() { - if (status_ == UNSET_STATUS) { - if (!valid()) { - return Result::err(154); - } - auto borrow = - wasi_http_0_2_0_rc_2023_10_18_types_borrow_incoming_response_t({handle_state_->handle}); - status_ = wasi_http_0_2_0_rc_2023_10_18_types_method_incoming_response_status(borrow); - } - return Result::ok(status_); -} - -HttpIncomingResponse::HttpIncomingResponse(Handle handle) { - handle_state_ = new HandleState(handle); -} - -Result HttpIncomingResponse::headers() { - if (!headers_) { - if (!valid()) { - return Result::err(154); - } - auto res = wasi_http_0_2_0_rc_2023_10_18_types_method_incoming_response_headers( - wasi_http_0_2_0_rc_2023_10_18_types_borrow_incoming_response({handle_state_->handle})); - headers_ = new HttpHeaders(res.__handle); - } - - return Result::ok(headers_); -} - -Result HttpIncomingResponse::body() { - if (!body_) { - if (!valid()) { - return Result::err(154); - } - incoming_body_t body; - if (!wasi_http_0_2_0_rc_2023_10_18_types_method_incoming_response_consume( - wasi_http_0_2_0_rc_2023_10_18_types_borrow_incoming_response({handle_state_->handle}), - &body)) { - return Result::err(154); - } - body_ = new HttpIncomingBody(body.__handle); - } - return Result::ok(body_); -} - -HttpOutgoingResponse::HttpOutgoingResponse(HandleState *state) { this->handle_state_ = state; } - -HttpOutgoingResponse *HttpOutgoingResponse::make(const uint16_t status, HttpHeaders *headers) { - auto borrow = - wasi_http_0_2_0_rc_2023_10_18_types_borrow_headers_t({headers->handle_state_->handle}); - auto handle = wasi_http_0_2_0_rc_2023_10_18_types_constructor_outgoing_response(status, borrow); - - auto *state = new HandleState(handle.__handle); - auto *resp = new HttpOutgoingResponse(state); - - resp->status_ = status; - resp->headers_ = headers; - - return resp; -} - -Result HttpOutgoingResponse::headers() { - if (!valid()) { - return Result::err(154); - } - return Result::ok(headers_); -} - -Result HttpOutgoingResponse::body() { - typedef Result Res; - MOZ_ASSERT(valid()); - if (!this->body_) { - outgoing_body_t body; - if (!wasi_http_0_2_0_rc_2023_10_18_types_method_outgoing_response_write( - wasi_http_0_2_0_rc_2023_10_18_types_borrow_outgoing_response({handle_state_->handle}), - &body)) { - return Res::err(154); - } - this->body_ = new HttpOutgoingBody(body.__handle); - } - return Res::ok(this->body_); -} -Result HttpOutgoingResponse::status() { return Result::ok(status_); } - -Result HttpOutgoingResponse::send(ResponseOutparam out_param) { - wasi_http_0_2_0_rc_2023_10_18_types_result_own_outgoing_response_error_t result; - - result.is_err = false; - result.val.ok = {this->handle_state_->handle}; - - wasi_http_0_2_0_rc_2023_10_18_types_static_response_outparam_set({out_param}, &result); - return {}; -} - -HttpIncomingRequest::HttpIncomingRequest(Handle handle) { handle_state_ = new HandleState(handle); } - -Result HttpIncomingRequest::method() { - if (method_.empty()) { - if (!valid()) { - return Result::err(154); - } - } - wasi_http_0_2_0_rc_2023_10_18_types_method_t method; - wasi_http_0_2_0_rc_2023_10_18_types_method_incoming_request_method( - borrow_incoming_request_t(handle_state_->handle), &method); - if (method.tag != WASI_HTTP_0_2_0_RC_2023_10_18_TYPES_METHOD_OTHER) { - method_ = std::string(http_method_names[method.tag], strlen(http_method_names[method.tag])); - } else { - method_ = std::string(reinterpret_cast(method.val.other.ptr), method.val.other.len); - bindings_string_free(&method.val.other); - } - return Result::ok(method_); -} - -Result HttpIncomingRequest::headers() { - if (!headers_) { - if (!valid()) { - return Result::err(154); - } - borrow_incoming_request_t borrow(handle_state_->handle); - auto res = wasi_http_0_2_0_rc_2023_10_18_types_method_incoming_request_headers(borrow); - headers_ = new HttpHeaders(res.__handle); - } - - return Result::ok(headers_); -} - -Result HttpIncomingRequest::body() { - if (!body_) { - if (!valid()) { - return Result::err(154); - } - incoming_body_t body; - if (!wasi_http_0_2_0_rc_2023_10_18_types_method_incoming_request_consume( - borrow_incoming_request_t(handle_state_->handle), &body)) { - return Result::err(154); - } - body_ = new HttpIncomingBody(body.__handle); - } - return Result::ok(body_); -} - -} // namespace host_api diff --git a/host-apis/wasi-0.2.0-rc-2023-10-18/host_call.cpp b/host-apis/wasi-0.2.0-rc-2023-10-18/host_call.cpp deleted file mode 100644 index b4536140..00000000 --- a/host-apis/wasi-0.2.0-rc-2023-10-18/host_call.cpp +++ /dev/null @@ -1,11 +0,0 @@ -#include "host_api.h" - -namespace host_api { - -/* Returns false if an exception is set on `cx` and the caller should - immediately return to propagate the exception. */ -void handle_api_error(JSContext *cx, uint8_t err, int line, const char *func) { - JS_ReportErrorUTF8(cx, "%s: An error occurred while using the host API.\n", func); -} - -} // namespace host_api diff --git a/host-apis/wasi-0.2.0-rc-2023-10-18/include/exports.h b/host-apis/wasi-0.2.0-rc-2023-10-18/include/exports.h deleted file mode 100644 index fc3077bc..00000000 --- a/host-apis/wasi-0.2.0-rc-2023-10-18/include/exports.h +++ /dev/null @@ -1,13 +0,0 @@ -#ifndef WASI_PREVIEW2_EXPORTS -#define WASI_PREVIEW2_EXPORTS - -#define exports_wasi_http_incoming_handler \ - exports_wasi_http_0_2_0_rc_2023_10_18_incoming_handler_handle -#define exports_wasi_http_incoming_request \ - exports_wasi_http_0_2_0_rc_2023_10_18_incoming_handler_own_incoming_request_t -#define exports_wasi_http_response_outparam \ - exports_wasi_http_0_2_0_rc_2023_10_18_incoming_handler_own_response_outparam_t - -#define exports_wasi_cli_run_run exports_wasi_cli_0_2_0_rc_2023_10_18_run_run - -#endif diff --git a/host-apis/wasi-0.2.0-rc-2023-10-18/preview1-adapter-debug/wasi_snapshot_preview1.wasm b/host-apis/wasi-0.2.0-rc-2023-10-18/preview1-adapter-debug/wasi_snapshot_preview1.wasm deleted file mode 100755 index 7f10fc2a..00000000 Binary files a/host-apis/wasi-0.2.0-rc-2023-10-18/preview1-adapter-debug/wasi_snapshot_preview1.wasm and /dev/null differ diff --git a/host-apis/wasi-0.2.0-rc-2023-10-18/preview1-adapter-release/wasi_snapshot_preview1.wasm b/host-apis/wasi-0.2.0-rc-2023-10-18/preview1-adapter-release/wasi_snapshot_preview1.wasm deleted file mode 100755 index 2ff061d3..00000000 Binary files a/host-apis/wasi-0.2.0-rc-2023-10-18/preview1-adapter-release/wasi_snapshot_preview1.wasm and /dev/null differ diff --git a/host-apis/wasi-0.2.0-rc-2023-10-18/wit/command-extended.wit b/host-apis/wasi-0.2.0-rc-2023-10-18/wit/command-extended.wit deleted file mode 100644 index 06617794..00000000 --- a/host-apis/wasi-0.2.0-rc-2023-10-18/wit/command-extended.wit +++ /dev/null @@ -1,37 +0,0 @@ -// All of the same imports and exports available in the wasi:cli/command world -// with addition of HTTP proxy related imports: -world command-extended { - import wasi:clocks/wall-clock@0.2.0-rc-2023-10-18; - import wasi:clocks/monotonic-clock@0.2.0-rc-2023-10-18; - import wasi:clocks/timezone@0.2.0-rc-2023-10-18; - import wasi:filesystem/types@0.2.0-rc-2023-10-18; - import wasi:filesystem/preopens@0.2.0-rc-2023-10-18; - import wasi:sockets/instance-network@0.2.0-rc-2023-10-18; - import wasi:sockets/ip-name-lookup@0.2.0-rc-2023-10-18; - import wasi:sockets/network@0.2.0-rc-2023-10-18; - import wasi:sockets/tcp-create-socket@0.2.0-rc-2023-10-18; - import wasi:sockets/tcp@0.2.0-rc-2023-10-18; - import wasi:sockets/udp-create-socket@0.2.0-rc-2023-10-18; - import wasi:sockets/udp@0.2.0-rc-2023-10-18; - import wasi:random/random@0.2.0-rc-2023-10-18; - import wasi:random/insecure@0.2.0-rc-2023-10-18; - import wasi:random/insecure-seed@0.2.0-rc-2023-10-18; - import wasi:io/poll@0.2.0-rc-2023-10-18; - import wasi:io/streams@0.2.0-rc-2023-10-18; - import wasi:cli/environment@0.2.0-rc-2023-10-18; - import wasi:cli/exit@0.2.0-rc-2023-10-18; - import wasi:cli/stdin@0.2.0-rc-2023-10-18; - import wasi:cli/stdout@0.2.0-rc-2023-10-18; - import wasi:cli/stderr@0.2.0-rc-2023-10-18; - import wasi:cli/terminal-input@0.2.0-rc-2023-10-18; - import wasi:cli/terminal-output@0.2.0-rc-2023-10-18; - import wasi:cli/terminal-stdin@0.2.0-rc-2023-10-18; - import wasi:cli/terminal-stdout@0.2.0-rc-2023-10-18; - import wasi:cli/terminal-stderr@0.2.0-rc-2023-10-18; - - // We should replace all others with `include self.command` - // as soon as the unioning of worlds is available: - // https://github.com/WebAssembly/component-model/issues/169 - import wasi:logging/logging@0.2.0-rc-2023-10-18; - import wasi:http/outgoing-handler@0.2.0-rc-2023-10-18; -} diff --git a/host-apis/wasi-0.2.0-rc-2023-10-18/wit/deps/cli/command.wit b/host-apis/wasi-0.2.0-rc-2023-10-18/wit/deps/cli/command.wit deleted file mode 100644 index d7ea2d91..00000000 --- a/host-apis/wasi-0.2.0-rc-2023-10-18/wit/deps/cli/command.wit +++ /dev/null @@ -1,7 +0,0 @@ -package wasi:cli@0.2.0-rc-2023-10-18; - -world command { - include reactor; - - export run; -} diff --git a/host-apis/wasi-0.2.0-rc-2023-10-18/wit/deps/cli/environment.wit b/host-apis/wasi-0.2.0-rc-2023-10-18/wit/deps/cli/environment.wit deleted file mode 100644 index 70065233..00000000 --- a/host-apis/wasi-0.2.0-rc-2023-10-18/wit/deps/cli/environment.wit +++ /dev/null @@ -1,18 +0,0 @@ -interface environment { - /// Get the POSIX-style environment variables. - /// - /// Each environment variable is provided as a pair of string variable names - /// and string value. - /// - /// Morally, these are a value import, but until value imports are available - /// in the component model, this import function should return the same - /// values each time it is called. - get-environment: func() -> list>; - - /// Get the POSIX-style arguments to the program. - get-arguments: func() -> list; - - /// Return a path that programs should use as their initial current working - /// directory, interpreting `.` as shorthand for this. - initial-cwd: func() -> option; -} diff --git a/host-apis/wasi-0.2.0-rc-2023-10-18/wit/deps/cli/exit.wit b/host-apis/wasi-0.2.0-rc-2023-10-18/wit/deps/cli/exit.wit deleted file mode 100644 index d0c2b82a..00000000 --- a/host-apis/wasi-0.2.0-rc-2023-10-18/wit/deps/cli/exit.wit +++ /dev/null @@ -1,4 +0,0 @@ -interface exit { - /// Exit the current instance and any linked instances. - exit: func(status: result); -} diff --git a/host-apis/wasi-0.2.0-rc-2023-10-18/wit/deps/cli/reactor.wit b/host-apis/wasi-0.2.0-rc-2023-10-18/wit/deps/cli/reactor.wit deleted file mode 100644 index 904b9946..00000000 --- a/host-apis/wasi-0.2.0-rc-2023-10-18/wit/deps/cli/reactor.wit +++ /dev/null @@ -1,32 +0,0 @@ -package wasi:cli@0.2.0-rc-2023-10-18; - -world reactor { - import wasi:clocks/wall-clock@0.2.0-rc-2023-10-18; - import wasi:clocks/monotonic-clock@0.2.0-rc-2023-10-18; - import wasi:clocks/timezone@0.2.0-rc-2023-10-18; - import wasi:filesystem/types@0.2.0-rc-2023-10-18; - import wasi:filesystem/preopens@0.2.0-rc-2023-10-18; - import wasi:sockets/instance-network@0.2.0-rc-2023-10-18; - import wasi:sockets/ip-name-lookup@0.2.0-rc-2023-10-18; - import wasi:sockets/network@0.2.0-rc-2023-10-18; - import wasi:sockets/tcp-create-socket@0.2.0-rc-2023-10-18; - import wasi:sockets/tcp@0.2.0-rc-2023-10-18; - import wasi:sockets/udp-create-socket@0.2.0-rc-2023-10-18; - import wasi:sockets/udp@0.2.0-rc-2023-10-18; - import wasi:random/random@0.2.0-rc-2023-10-18; - import wasi:random/insecure@0.2.0-rc-2023-10-18; - import wasi:random/insecure-seed@0.2.0-rc-2023-10-18; - import wasi:io/poll@0.2.0-rc-2023-10-18; - import wasi:io/streams@0.2.0-rc-2023-10-18; - - import environment; - import exit; - import stdin; - import stdout; - import stderr; - import terminal-input; - import terminal-output; - import terminal-stdin; - import terminal-stdout; - import terminal-stderr; -} diff --git a/host-apis/wasi-0.2.0-rc-2023-10-18/wit/deps/cli/run.wit b/host-apis/wasi-0.2.0-rc-2023-10-18/wit/deps/cli/run.wit deleted file mode 100644 index a70ee8c0..00000000 --- a/host-apis/wasi-0.2.0-rc-2023-10-18/wit/deps/cli/run.wit +++ /dev/null @@ -1,4 +0,0 @@ -interface run { - /// Run the program. - run: func() -> result; -} diff --git a/host-apis/wasi-0.2.0-rc-2023-10-18/wit/deps/cli/stdio.wit b/host-apis/wasi-0.2.0-rc-2023-10-18/wit/deps/cli/stdio.wit deleted file mode 100644 index 513ca92d..00000000 --- a/host-apis/wasi-0.2.0-rc-2023-10-18/wit/deps/cli/stdio.wit +++ /dev/null @@ -1,17 +0,0 @@ -interface stdin { - use wasi:io/streams@0.2.0-rc-2023-10-18.{input-stream}; - - get-stdin: func() -> input-stream; -} - -interface stdout { - use wasi:io/streams@0.2.0-rc-2023-10-18.{output-stream}; - - get-stdout: func() -> output-stream; -} - -interface stderr { - use wasi:io/streams@0.2.0-rc-2023-10-18.{output-stream}; - - get-stderr: func() -> output-stream; -} diff --git a/host-apis/wasi-0.2.0-rc-2023-10-18/wit/deps/cli/terminal.wit b/host-apis/wasi-0.2.0-rc-2023-10-18/wit/deps/cli/terminal.wit deleted file mode 100644 index 47495769..00000000 --- a/host-apis/wasi-0.2.0-rc-2023-10-18/wit/deps/cli/terminal.wit +++ /dev/null @@ -1,47 +0,0 @@ -interface terminal-input { - /// The input side of a terminal. - resource terminal-input; - - // In the future, this may include functions for disabling echoing, - // disabling input buffering so that keyboard events are sent through - // immediately, querying supported features, and so on. -} - -interface terminal-output { - /// The output side of a terminal. - resource terminal-output; - - // In the future, this may include functions for querying the terminal - // size, being notified of terminal size changes, querying supported - // features, and so on. -} - -/// An interface providing an optional `terminal-input` for stdin as a -/// link-time authority. -interface terminal-stdin { - use terminal-input.{terminal-input}; - - /// If stdin is connected to a terminal, return a `terminal-input` handle - /// allowing further interaction with it. - get-terminal-stdin: func() -> option; -} - -/// An interface providing an optional `terminal-output` for stdout as a -/// link-time authority. -interface terminal-stdout { - use terminal-output.{terminal-output}; - - /// If stdout is connected to a terminal, return a `terminal-output` handle - /// allowing further interaction with it. - get-terminal-stdout: func() -> option; -} - -/// An interface providing an optional `terminal-output` for stderr as a -/// link-time authority. -interface terminal-stderr { - use terminal-output.{terminal-output}; - - /// If stderr is connected to a terminal, return a `terminal-output` handle - /// allowing further interaction with it. - get-terminal-stderr: func() -> option; -} diff --git a/host-apis/wasi-0.2.0-rc-2023-10-18/wit/deps/clocks/monotonic-clock.wit b/host-apis/wasi-0.2.0-rc-2023-10-18/wit/deps/clocks/monotonic-clock.wit deleted file mode 100644 index c0ecb529..00000000 --- a/host-apis/wasi-0.2.0-rc-2023-10-18/wit/deps/clocks/monotonic-clock.wit +++ /dev/null @@ -1,32 +0,0 @@ -/// WASI Monotonic Clock is a clock API intended to let users measure elapsed -/// time. -/// -/// It is intended to be portable at least between Unix-family platforms and -/// Windows. -/// -/// A monotonic clock is a clock which has an unspecified initial value, and -/// successive reads of the clock will produce non-decreasing values. -/// -/// It is intended for measuring elapsed time. -interface monotonic-clock { - use wasi:io/poll@0.2.0-rc-2023-10-18.{pollable}; - - /// A timestamp in nanoseconds. - type instant = u64; - - /// Read the current value of the clock. - /// - /// The clock is monotonic, therefore calling this function repeatedly will - /// produce a sequence of non-decreasing values. - now: func() -> instant; - - /// Query the resolution of the clock. - resolution: func() -> instant; - - /// Create a `pollable` which will resolve once the specified time has been - /// reached. - subscribe: func( - when: instant, - absolute: bool - ) -> pollable; -} diff --git a/host-apis/wasi-0.2.0-rc-2023-10-18/wit/deps/clocks/timezone.wit b/host-apis/wasi-0.2.0-rc-2023-10-18/wit/deps/clocks/timezone.wit deleted file mode 100644 index e717e7b8..00000000 --- a/host-apis/wasi-0.2.0-rc-2023-10-18/wit/deps/clocks/timezone.wit +++ /dev/null @@ -1,48 +0,0 @@ -interface timezone { - use wall-clock.{datetime}; - - /// Return information needed to display the given `datetime`. This includes - /// the UTC offset, the time zone name, and a flag indicating whether - /// daylight saving time is active. - /// - /// If the timezone cannot be determined for the given `datetime`, return a - /// `timezone-display` for `UTC` with a `utc-offset` of 0 and no daylight - /// saving time. - display: func(when: datetime) -> timezone-display; - - /// The same as `display`, but only return the UTC offset. - utc-offset: func(when: datetime) -> s32; - - /// Information useful for displaying the timezone of a specific `datetime`. - /// - /// This information may vary within a single `timezone` to reflect daylight - /// saving time adjustments. - record timezone-display { - /// The number of seconds difference between UTC time and the local - /// time of the timezone. - /// - /// The returned value will always be less than 86400 which is the - /// number of seconds in a day (24*60*60). - /// - /// In implementations that do not expose an actual time zone, this - /// should return 0. - utc-offset: s32, - - /// The abbreviated name of the timezone to display to a user. The name - /// `UTC` indicates Coordinated Universal Time. Otherwise, this should - /// reference local standards for the name of the time zone. - /// - /// In implementations that do not expose an actual time zone, this - /// should be the string `UTC`. - /// - /// In time zones that do not have an applicable name, a formatted - /// representation of the UTC offset may be returned, such as `-04:00`. - name: string, - - /// Whether daylight saving time is active. - /// - /// In implementations that do not expose an actual time zone, this - /// should return false. - in-daylight-saving-time: bool, - } -} diff --git a/host-apis/wasi-0.2.0-rc-2023-10-18/wit/deps/clocks/wall-clock.wit b/host-apis/wasi-0.2.0-rc-2023-10-18/wit/deps/clocks/wall-clock.wit deleted file mode 100644 index c3956496..00000000 --- a/host-apis/wasi-0.2.0-rc-2023-10-18/wit/deps/clocks/wall-clock.wit +++ /dev/null @@ -1,41 +0,0 @@ -/// WASI Wall Clock is a clock API intended to let users query the current -/// time. The name "wall" makes an analogy to a "clock on the wall", which -/// is not necessarily monotonic as it may be reset. -/// -/// It is intended to be portable at least between Unix-family platforms and -/// Windows. -/// -/// A wall clock is a clock which measures the date and time according to -/// some external reference. -/// -/// External references may be reset, so this clock is not necessarily -/// monotonic, making it unsuitable for measuring elapsed time. -/// -/// It is intended for reporting the current date and time for humans. -interface wall-clock { - /// A time and date in seconds plus nanoseconds. - record datetime { - seconds: u64, - nanoseconds: u32, - } - - /// Read the current value of the clock. - /// - /// This clock is not monotonic, therefore calling this function repeatedly - /// will not necessarily produce a sequence of non-decreasing values. - /// - /// The returned timestamps represent the number of seconds since - /// 1970-01-01T00:00:00Z, also known as [POSIX's Seconds Since the Epoch], - /// also known as [Unix Time]. - /// - /// The nanoseconds field of the output is always less than 1000000000. - /// - /// [POSIX's Seconds Since the Epoch]: https://pubs.opengroup.org/onlinepubs/9699919799/xrat/V4_xbd_chap04.html#tag_21_04_16 - /// [Unix Time]: https://en.wikipedia.org/wiki/Unix_time - now: func() -> datetime; - - /// Query the resolution of the clock. - /// - /// The nanoseconds field of the output is always less than 1000000000. - resolution: func() -> datetime; -} diff --git a/host-apis/wasi-0.2.0-rc-2023-10-18/wit/deps/clocks/world.wit b/host-apis/wasi-0.2.0-rc-2023-10-18/wit/deps/clocks/world.wit deleted file mode 100644 index cdfb51d9..00000000 --- a/host-apis/wasi-0.2.0-rc-2023-10-18/wit/deps/clocks/world.wit +++ /dev/null @@ -1,7 +0,0 @@ -package wasi:clocks@0.2.0-rc-2023-10-18; - -world imports { - import monotonic-clock; - import wall-clock; - import timezone; -} diff --git a/host-apis/wasi-0.2.0-rc-2023-10-18/wit/deps/filesystem/preopens.wit b/host-apis/wasi-0.2.0-rc-2023-10-18/wit/deps/filesystem/preopens.wit deleted file mode 100644 index 3f787ac3..00000000 --- a/host-apis/wasi-0.2.0-rc-2023-10-18/wit/deps/filesystem/preopens.wit +++ /dev/null @@ -1,6 +0,0 @@ -interface preopens { - use types.{descriptor}; - - /// Return the set of preopened directories, and their path. - get-directories: func() -> list>; -} diff --git a/host-apis/wasi-0.2.0-rc-2023-10-18/wit/deps/filesystem/types.wit b/host-apis/wasi-0.2.0-rc-2023-10-18/wit/deps/filesystem/types.wit deleted file mode 100644 index af361354..00000000 --- a/host-apis/wasi-0.2.0-rc-2023-10-18/wit/deps/filesystem/types.wit +++ /dev/null @@ -1,810 +0,0 @@ -/// WASI filesystem is a filesystem API primarily intended to let users run WASI -/// programs that access their files on their existing filesystems, without -/// significant overhead. -/// -/// It is intended to be roughly portable between Unix-family platforms and -/// Windows, though it does not hide many of the major differences. -/// -/// Paths are passed as interface-type `string`s, meaning they must consist of -/// a sequence of Unicode Scalar Values (USVs). Some filesystems may contain -/// paths which are not accessible by this API. -/// -/// The directory separator in WASI is always the forward-slash (`/`). -/// -/// All paths in WASI are relative paths, and are interpreted relative to a -/// `descriptor` referring to a base directory. If a `path` argument to any WASI -/// function starts with `/`, or if any step of resolving a `path`, including -/// `..` and symbolic link steps, reaches a directory outside of the base -/// directory, or reaches a symlink to an absolute or rooted path in the -/// underlying filesystem, the function fails with `error-code::not-permitted`. -/// -/// For more information about WASI path resolution and sandboxing, see -/// [WASI filesystem path resolution]. -/// -/// [WASI filesystem path resolution]: https://github.com/WebAssembly/wasi-filesystem/blob/main/path-resolution.md -interface types { - use wasi:io/streams@0.2.0-rc-2023-10-18.{input-stream, output-stream, error}; - use wasi:clocks/wall-clock@0.2.0-rc-2023-10-18.{datetime}; - - /// File size or length of a region within a file. - type filesize = u64; - - /// The type of a filesystem object referenced by a descriptor. - /// - /// Note: This was called `filetype` in earlier versions of WASI. - enum descriptor-type { - /// The type of the descriptor or file is unknown or is different from - /// any of the other types specified. - unknown, - /// The descriptor refers to a block device inode. - block-device, - /// The descriptor refers to a character device inode. - character-device, - /// The descriptor refers to a directory inode. - directory, - /// The descriptor refers to a named pipe. - fifo, - /// The file refers to a symbolic link inode. - symbolic-link, - /// The descriptor refers to a regular file inode. - regular-file, - /// The descriptor refers to a socket. - socket, - } - - /// Descriptor flags. - /// - /// Note: This was called `fdflags` in earlier versions of WASI. - flags descriptor-flags { - /// Read mode: Data can be read. - read, - /// Write mode: Data can be written to. - write, - /// Request that writes be performed according to synchronized I/O file - /// integrity completion. The data stored in the file and the file's - /// metadata are synchronized. This is similar to `O_SYNC` in POSIX. - /// - /// The precise semantics of this operation have not yet been defined for - /// WASI. At this time, it should be interpreted as a request, and not a - /// requirement. - file-integrity-sync, - /// Request that writes be performed according to synchronized I/O data - /// integrity completion. Only the data stored in the file is - /// synchronized. This is similar to `O_DSYNC` in POSIX. - /// - /// The precise semantics of this operation have not yet been defined for - /// WASI. At this time, it should be interpreted as a request, and not a - /// requirement. - data-integrity-sync, - /// Requests that reads be performed at the same level of integrety - /// requested for writes. This is similar to `O_RSYNC` in POSIX. - /// - /// The precise semantics of this operation have not yet been defined for - /// WASI. At this time, it should be interpreted as a request, and not a - /// requirement. - requested-write-sync, - /// Mutating directories mode: Directory contents may be mutated. - /// - /// When this flag is unset on a descriptor, operations using the - /// descriptor which would create, rename, delete, modify the data or - /// metadata of filesystem objects, or obtain another handle which - /// would permit any of those, shall fail with `error-code::read-only` if - /// they would otherwise succeed. - /// - /// This may only be set on directories. - mutate-directory, - } - - /// File attributes. - /// - /// Note: This was called `filestat` in earlier versions of WASI. - record descriptor-stat { - /// File type. - %type: descriptor-type, - /// Number of hard links to the file. - link-count: link-count, - /// For regular files, the file size in bytes. For symbolic links, the - /// length in bytes of the pathname contained in the symbolic link. - size: filesize, - /// Last data access timestamp. - /// - /// If the `option` is none, the platform doesn't maintain an access - /// timestamp for this file. - data-access-timestamp: option, - /// Last data modification timestamp. - /// - /// If the `option` is none, the platform doesn't maintain a - /// modification timestamp for this file. - data-modification-timestamp: option, - /// Last file status-change timestamp. - /// - /// If the `option` is none, the platform doesn't maintain a - /// status-change timestamp for this file. - status-change-timestamp: option, - } - - /// Flags determining the method of how paths are resolved. - flags path-flags { - /// As long as the resolved path corresponds to a symbolic link, it is - /// expanded. - symlink-follow, - } - - /// Open flags used by `open-at`. - flags open-flags { - /// Create file if it does not exist, similar to `O_CREAT` in POSIX. - create, - /// Fail if not a directory, similar to `O_DIRECTORY` in POSIX. - directory, - /// Fail if file already exists, similar to `O_EXCL` in POSIX. - exclusive, - /// Truncate file to size 0, similar to `O_TRUNC` in POSIX. - truncate, - } - - /// Permissions mode used by `open-at`, `change-file-permissions-at`, and - /// similar. - flags modes { - /// True if the resource is considered readable by the containing - /// filesystem. - readable, - /// True if the resource is considered writable by the containing - /// filesystem. - writable, - /// True if the resource is considered executable by the containing - /// filesystem. This does not apply to directories. - executable, - } - - /// Access type used by `access-at`. - variant access-type { - /// Test for readability, writeability, or executability. - access(modes), - - /// Test whether the path exists. - exists, - } - - /// Number of hard links to an inode. - type link-count = u64; - - /// When setting a timestamp, this gives the value to set it to. - variant new-timestamp { - /// Leave the timestamp set to its previous value. - no-change, - /// Set the timestamp to the current time of the system clock associated - /// with the filesystem. - now, - /// Set the timestamp to the given value. - timestamp(datetime), - } - - /// A directory entry. - record directory-entry { - /// The type of the file referred to by this directory entry. - %type: descriptor-type, - - /// The name of the object. - name: string, - } - - /// Error codes returned by functions, similar to `errno` in POSIX. - /// Not all of these error codes are returned by the functions provided by this - /// API; some are used in higher-level library layers, and others are provided - /// merely for alignment with POSIX. - enum error-code { - /// Permission denied, similar to `EACCES` in POSIX. - access, - /// Resource unavailable, or operation would block, similar to `EAGAIN` and `EWOULDBLOCK` in POSIX. - would-block, - /// Connection already in progress, similar to `EALREADY` in POSIX. - already, - /// Bad descriptor, similar to `EBADF` in POSIX. - bad-descriptor, - /// Device or resource busy, similar to `EBUSY` in POSIX. - busy, - /// Resource deadlock would occur, similar to `EDEADLK` in POSIX. - deadlock, - /// Storage quota exceeded, similar to `EDQUOT` in POSIX. - quota, - /// File exists, similar to `EEXIST` in POSIX. - exist, - /// File too large, similar to `EFBIG` in POSIX. - file-too-large, - /// Illegal byte sequence, similar to `EILSEQ` in POSIX. - illegal-byte-sequence, - /// Operation in progress, similar to `EINPROGRESS` in POSIX. - in-progress, - /// Interrupted function, similar to `EINTR` in POSIX. - interrupted, - /// Invalid argument, similar to `EINVAL` in POSIX. - invalid, - /// I/O error, similar to `EIO` in POSIX. - io, - /// Is a directory, similar to `EISDIR` in POSIX. - is-directory, - /// Too many levels of symbolic links, similar to `ELOOP` in POSIX. - loop, - /// Too many links, similar to `EMLINK` in POSIX. - too-many-links, - /// Message too large, similar to `EMSGSIZE` in POSIX. - message-size, - /// Filename too long, similar to `ENAMETOOLONG` in POSIX. - name-too-long, - /// No such device, similar to `ENODEV` in POSIX. - no-device, - /// No such file or directory, similar to `ENOENT` in POSIX. - no-entry, - /// No locks available, similar to `ENOLCK` in POSIX. - no-lock, - /// Not enough space, similar to `ENOMEM` in POSIX. - insufficient-memory, - /// No space left on device, similar to `ENOSPC` in POSIX. - insufficient-space, - /// Not a directory or a symbolic link to a directory, similar to `ENOTDIR` in POSIX. - not-directory, - /// Directory not empty, similar to `ENOTEMPTY` in POSIX. - not-empty, - /// State not recoverable, similar to `ENOTRECOVERABLE` in POSIX. - not-recoverable, - /// Not supported, similar to `ENOTSUP` and `ENOSYS` in POSIX. - unsupported, - /// Inappropriate I/O control operation, similar to `ENOTTY` in POSIX. - no-tty, - /// No such device or address, similar to `ENXIO` in POSIX. - no-such-device, - /// Value too large to be stored in data type, similar to `EOVERFLOW` in POSIX. - overflow, - /// Operation not permitted, similar to `EPERM` in POSIX. - not-permitted, - /// Broken pipe, similar to `EPIPE` in POSIX. - pipe, - /// Read-only file system, similar to `EROFS` in POSIX. - read-only, - /// Invalid seek, similar to `ESPIPE` in POSIX. - invalid-seek, - /// Text file busy, similar to `ETXTBSY` in POSIX. - text-file-busy, - /// Cross-device link, similar to `EXDEV` in POSIX. - cross-device, - } - - /// File or memory access pattern advisory information. - enum advice { - /// The application has no advice to give on its behavior with respect - /// to the specified data. - normal, - /// The application expects to access the specified data sequentially - /// from lower offsets to higher offsets. - sequential, - /// The application expects to access the specified data in a random - /// order. - random, - /// The application expects to access the specified data in the near - /// future. - will-need, - /// The application expects that it will not access the specified data - /// in the near future. - dont-need, - /// The application expects to access the specified data once and then - /// not reuse it thereafter. - no-reuse, - } - - /// A 128-bit hash value, split into parts because wasm doesn't have a - /// 128-bit integer type. - record metadata-hash-value { - /// 64 bits of a 128-bit hash value. - lower: u64, - /// Another 64 bits of a 128-bit hash value. - upper: u64, - } - - /// A descriptor is a reference to a filesystem object, which may be a file, - /// directory, named pipe, special file, or other object on which filesystem - /// calls may be made. - resource descriptor { - /// Return a stream for reading from a file, if available. - /// - /// May fail with an error-code describing why the file cannot be read. - /// - /// Multiple read, write, and append streams may be active on the same open - /// file and they do not interfere with each other. - /// - /// Note: This allows using `read-stream`, which is similar to `read` in POSIX. - read-via-stream: func( - /// The offset within the file at which to start reading. - offset: filesize, - ) -> result; - - /// Return a stream for writing to a file, if available. - /// - /// May fail with an error-code describing why the file cannot be written. - /// - /// Note: This allows using `write-stream`, which is similar to `write` in - /// POSIX. - write-via-stream: func( - /// The offset within the file at which to start writing. - offset: filesize, - ) -> result; - - /// Return a stream for appending to a file, if available. - /// - /// May fail with an error-code describing why the file cannot be appended. - /// - /// Note: This allows using `write-stream`, which is similar to `write` with - /// `O_APPEND` in in POSIX. - append-via-stream: func() -> result; - - /// Provide file advisory information on a descriptor. - /// - /// This is similar to `posix_fadvise` in POSIX. - advise: func( - /// The offset within the file to which the advisory applies. - offset: filesize, - /// The length of the region to which the advisory applies. - length: filesize, - /// The advice. - advice: advice - ) -> result<_, error-code>; - - /// Synchronize the data of a file to disk. - /// - /// This function succeeds with no effect if the file descriptor is not - /// opened for writing. - /// - /// Note: This is similar to `fdatasync` in POSIX. - sync-data: func() -> result<_, error-code>; - - /// Get flags associated with a descriptor. - /// - /// Note: This returns similar flags to `fcntl(fd, F_GETFL)` in POSIX. - /// - /// Note: This returns the value that was the `fs_flags` value returned - /// from `fdstat_get` in earlier versions of WASI. - get-flags: func() -> result; - - /// Get the dynamic type of a descriptor. - /// - /// Note: This returns the same value as the `type` field of the `fd-stat` - /// returned by `stat`, `stat-at` and similar. - /// - /// Note: This returns similar flags to the `st_mode & S_IFMT` value provided - /// by `fstat` in POSIX. - /// - /// Note: This returns the value that was the `fs_filetype` value returned - /// from `fdstat_get` in earlier versions of WASI. - get-type: func() -> result; - - /// Adjust the size of an open file. If this increases the file's size, the - /// extra bytes are filled with zeros. - /// - /// Note: This was called `fd_filestat_set_size` in earlier versions of WASI. - set-size: func(size: filesize) -> result<_, error-code>; - - /// Adjust the timestamps of an open file or directory. - /// - /// Note: This is similar to `futimens` in POSIX. - /// - /// Note: This was called `fd_filestat_set_times` in earlier versions of WASI. - set-times: func( - /// The desired values of the data access timestamp. - data-access-timestamp: new-timestamp, - /// The desired values of the data modification timestamp. - data-modification-timestamp: new-timestamp, - ) -> result<_, error-code>; - - /// Read from a descriptor, without using and updating the descriptor's offset. - /// - /// This function returns a list of bytes containing the data that was - /// read, along with a bool which, when true, indicates that the end of the - /// file was reached. The returned list will contain up to `length` bytes; it - /// may return fewer than requested, if the end of the file is reached or - /// if the I/O operation is interrupted. - /// - /// In the future, this may change to return a `stream`. - /// - /// Note: This is similar to `pread` in POSIX. - read: func( - /// The maximum number of bytes to read. - length: filesize, - /// The offset within the file at which to read. - offset: filesize, - ) -> result, bool>, error-code>; - - /// Write to a descriptor, without using and updating the descriptor's offset. - /// - /// It is valid to write past the end of a file; the file is extended to the - /// extent of the write, with bytes between the previous end and the start of - /// the write set to zero. - /// - /// In the future, this may change to take a `stream`. - /// - /// Note: This is similar to `pwrite` in POSIX. - write: func( - /// Data to write - buffer: list, - /// The offset within the file at which to write. - offset: filesize, - ) -> result; - - /// Read directory entries from a directory. - /// - /// On filesystems where directories contain entries referring to themselves - /// and their parents, often named `.` and `..` respectively, these entries - /// are omitted. - /// - /// This always returns a new stream which starts at the beginning of the - /// directory. Multiple streams may be active on the same directory, and they - /// do not interfere with each other. - read-directory: func() -> result; - - /// Synchronize the data and metadata of a file to disk. - /// - /// This function succeeds with no effect if the file descriptor is not - /// opened for writing. - /// - /// Note: This is similar to `fsync` in POSIX. - sync: func() -> result<_, error-code>; - - /// Create a directory. - /// - /// Note: This is similar to `mkdirat` in POSIX. - create-directory-at: func( - /// The relative path at which to create the directory. - path: string, - ) -> result<_, error-code>; - - /// Return the attributes of an open file or directory. - /// - /// Note: This is similar to `fstat` in POSIX, except that it does not return - /// device and inode information. For testing whether two descriptors refer to - /// the same underlying filesystem object, use `is-same-object`. To obtain - /// additional data that can be used do determine whether a file has been - /// modified, use `metadata-hash`. - /// - /// Note: This was called `fd_filestat_get` in earlier versions of WASI. - stat: func() -> result; - - /// Return the attributes of a file or directory. - /// - /// Note: This is similar to `fstatat` in POSIX, except that it does not - /// return device and inode information. See the `stat` description for a - /// discussion of alternatives. - /// - /// Note: This was called `path_filestat_get` in earlier versions of WASI. - stat-at: func( - /// Flags determining the method of how the path is resolved. - path-flags: path-flags, - /// The relative path of the file or directory to inspect. - path: string, - ) -> result; - - /// Adjust the timestamps of a file or directory. - /// - /// Note: This is similar to `utimensat` in POSIX. - /// - /// Note: This was called `path_filestat_set_times` in earlier versions of - /// WASI. - set-times-at: func( - /// Flags determining the method of how the path is resolved. - path-flags: path-flags, - /// The relative path of the file or directory to operate on. - path: string, - /// The desired values of the data access timestamp. - data-access-timestamp: new-timestamp, - /// The desired values of the data modification timestamp. - data-modification-timestamp: new-timestamp, - ) -> result<_, error-code>; - - /// Create a hard link. - /// - /// Note: This is similar to `linkat` in POSIX. - link-at: func( - /// Flags determining the method of how the path is resolved. - old-path-flags: path-flags, - /// The relative source path from which to link. - old-path: string, - /// The base directory for `new-path`. - new-descriptor: borrow, - /// The relative destination path at which to create the hard link. - new-path: string, - ) -> result<_, error-code>; - - /// Open a file or directory. - /// - /// The returned descriptor is not guaranteed to be the lowest-numbered - /// descriptor not currently open/ it is randomized to prevent applications - /// from depending on making assumptions about indexes, since this is - /// error-prone in multi-threaded contexts. The returned descriptor is - /// guaranteed to be less than 2**31. - /// - /// If `flags` contains `descriptor-flags::mutate-directory`, and the base - /// descriptor doesn't have `descriptor-flags::mutate-directory` set, - /// `open-at` fails with `error-code::read-only`. - /// - /// If `flags` contains `write` or `mutate-directory`, or `open-flags` - /// contains `truncate` or `create`, and the base descriptor doesn't have - /// `descriptor-flags::mutate-directory` set, `open-at` fails with - /// `error-code::read-only`. - /// - /// Note: This is similar to `openat` in POSIX. - open-at: func( - /// Flags determining the method of how the path is resolved. - path-flags: path-flags, - /// The relative path of the object to open. - path: string, - /// The method by which to open the file. - open-flags: open-flags, - /// Flags to use for the resulting descriptor. - %flags: descriptor-flags, - /// Permissions to use when creating a new file. - modes: modes - ) -> result; - - /// Read the contents of a symbolic link. - /// - /// If the contents contain an absolute or rooted path in the underlying - /// filesystem, this function fails with `error-code::not-permitted`. - /// - /// Note: This is similar to `readlinkat` in POSIX. - readlink-at: func( - /// The relative path of the symbolic link from which to read. - path: string, - ) -> result; - - /// Remove a directory. - /// - /// Return `error-code::not-empty` if the directory is not empty. - /// - /// Note: This is similar to `unlinkat(fd, path, AT_REMOVEDIR)` in POSIX. - remove-directory-at: func( - /// The relative path to a directory to remove. - path: string, - ) -> result<_, error-code>; - - /// Rename a filesystem object. - /// - /// Note: This is similar to `renameat` in POSIX. - rename-at: func( - /// The relative source path of the file or directory to rename. - old-path: string, - /// The base directory for `new-path`. - new-descriptor: borrow, - /// The relative destination path to which to rename the file or directory. - new-path: string, - ) -> result<_, error-code>; - - /// Create a symbolic link (also known as a "symlink"). - /// - /// If `old-path` starts with `/`, the function fails with - /// `error-code::not-permitted`. - /// - /// Note: This is similar to `symlinkat` in POSIX. - symlink-at: func( - /// The contents of the symbolic link. - old-path: string, - /// The relative destination path at which to create the symbolic link. - new-path: string, - ) -> result<_, error-code>; - - /// Check accessibility of a filesystem path. - /// - /// Check whether the given filesystem path names an object which is - /// readable, writable, or executable, or whether it exists. - /// - /// This does not a guarantee that subsequent accesses will succeed, as - /// filesystem permissions may be modified asynchronously by external - /// entities. - /// - /// Note: This is similar to `faccessat` with the `AT_EACCESS` flag in POSIX. - access-at: func( - /// Flags determining the method of how the path is resolved. - path-flags: path-flags, - /// The relative path to check. - path: string, - /// The type of check to perform. - %type: access-type - ) -> result<_, error-code>; - - /// Unlink a filesystem object that is not a directory. - /// - /// Return `error-code::is-directory` if the path refers to a directory. - /// Note: This is similar to `unlinkat(fd, path, 0)` in POSIX. - unlink-file-at: func( - /// The relative path to a file to unlink. - path: string, - ) -> result<_, error-code>; - - /// Change the permissions of a filesystem object that is not a directory. - /// - /// Note that the ultimate meanings of these permissions is - /// filesystem-specific. - /// - /// Note: This is similar to `fchmodat` in POSIX. - change-file-permissions-at: func( - /// Flags determining the method of how the path is resolved. - path-flags: path-flags, - /// The relative path to operate on. - path: string, - /// The new permissions for the filesystem object. - modes: modes, - ) -> result<_, error-code>; - - /// Change the permissions of a directory. - /// - /// Note that the ultimate meanings of these permissions is - /// filesystem-specific. - /// - /// Unlike in POSIX, the `executable` flag is not reinterpreted as a "search" - /// flag. `read` on a directory implies readability and searchability, and - /// `execute` is not valid for directories. - /// - /// Note: This is similar to `fchmodat` in POSIX. - change-directory-permissions-at: func( - /// Flags determining the method of how the path is resolved. - path-flags: path-flags, - /// The relative path to operate on. - path: string, - /// The new permissions for the directory. - modes: modes, - ) -> result<_, error-code>; - - /// Request a shared advisory lock for an open file. - /// - /// This requests a *shared* lock; more than one shared lock can be held for - /// a file at the same time. - /// - /// If the open file has an exclusive lock, this function downgrades the lock - /// to a shared lock. If it has a shared lock, this function has no effect. - /// - /// This requests an *advisory* lock, meaning that the file could be accessed - /// by other programs that don't hold the lock. - /// - /// It is unspecified how shared locks interact with locks acquired by - /// non-WASI programs. - /// - /// This function blocks until the lock can be acquired. - /// - /// Not all filesystems support locking; on filesystems which don't support - /// locking, this function returns `error-code::unsupported`. - /// - /// Note: This is similar to `flock(fd, LOCK_SH)` in Unix. - lock-shared: func() -> result<_, error-code>; - - /// Request an exclusive advisory lock for an open file. - /// - /// This requests an *exclusive* lock; no other locks may be held for the - /// file while an exclusive lock is held. - /// - /// If the open file has a shared lock and there are no exclusive locks held - /// for the file, this function upgrades the lock to an exclusive lock. If the - /// open file already has an exclusive lock, this function has no effect. - /// - /// This requests an *advisory* lock, meaning that the file could be accessed - /// by other programs that don't hold the lock. - /// - /// It is unspecified whether this function succeeds if the file descriptor - /// is not opened for writing. It is unspecified how exclusive locks interact - /// with locks acquired by non-WASI programs. - /// - /// This function blocks until the lock can be acquired. - /// - /// Not all filesystems support locking; on filesystems which don't support - /// locking, this function returns `error-code::unsupported`. - /// - /// Note: This is similar to `flock(fd, LOCK_EX)` in Unix. - lock-exclusive: func() -> result<_, error-code>; - - /// Request a shared advisory lock for an open file. - /// - /// This requests a *shared* lock; more than one shared lock can be held for - /// a file at the same time. - /// - /// If the open file has an exclusive lock, this function downgrades the lock - /// to a shared lock. If it has a shared lock, this function has no effect. - /// - /// This requests an *advisory* lock, meaning that the file could be accessed - /// by other programs that don't hold the lock. - /// - /// It is unspecified how shared locks interact with locks acquired by - /// non-WASI programs. - /// - /// This function returns `error-code::would-block` if the lock cannot be - /// acquired. - /// - /// Not all filesystems support locking; on filesystems which don't support - /// locking, this function returns `error-code::unsupported`. - /// - /// Note: This is similar to `flock(fd, LOCK_SH | LOCK_NB)` in Unix. - try-lock-shared: func() -> result<_, error-code>; - - /// Request an exclusive advisory lock for an open file. - /// - /// This requests an *exclusive* lock; no other locks may be held for the - /// file while an exclusive lock is held. - /// - /// If the open file has a shared lock and there are no exclusive locks held - /// for the file, this function upgrades the lock to an exclusive lock. If the - /// open file already has an exclusive lock, this function has no effect. - /// - /// This requests an *advisory* lock, meaning that the file could be accessed - /// by other programs that don't hold the lock. - /// - /// It is unspecified whether this function succeeds if the file descriptor - /// is not opened for writing. It is unspecified how exclusive locks interact - /// with locks acquired by non-WASI programs. - /// - /// This function returns `error-code::would-block` if the lock cannot be - /// acquired. - /// - /// Not all filesystems support locking; on filesystems which don't support - /// locking, this function returns `error-code::unsupported`. - /// - /// Note: This is similar to `flock(fd, LOCK_EX | LOCK_NB)` in Unix. - try-lock-exclusive: func() -> result<_, error-code>; - - /// Release a shared or exclusive lock on an open file. - /// - /// Note: This is similar to `flock(fd, LOCK_UN)` in Unix. - unlock: func() -> result<_, error-code>; - - /// Test whether two descriptors refer to the same filesystem object. - /// - /// In POSIX, this corresponds to testing whether the two descriptors have the - /// same device (`st_dev`) and inode (`st_ino` or `d_ino`) numbers. - /// wasi-filesystem does not expose device and inode numbers, so this function - /// may be used instead. - is-same-object: func(other: borrow) -> bool; - - /// Return a hash of the metadata associated with a filesystem object referred - /// to by a descriptor. - /// - /// This returns a hash of the last-modification timestamp and file size, and - /// may also include the inode number, device number, birth timestamp, and - /// other metadata fields that may change when the file is modified or - /// replaced. It may also include a secret value chosen by the - /// implementation and not otherwise exposed. - /// - /// Implementations are encourated to provide the following properties: - /// - /// - If the file is not modified or replaced, the computed hash value should - /// usually not change. - /// - If the object is modified or replaced, the computed hash value should - /// usually change. - /// - The inputs to the hash should not be easily computable from the - /// computed hash. - /// - /// However, none of these is required. - metadata-hash: func() -> result; - - /// Return a hash of the metadata associated with a filesystem object referred - /// to by a directory descriptor and a relative path. - /// - /// This performs the same hash computation as `metadata-hash`. - metadata-hash-at: func( - /// Flags determining the method of how the path is resolved. - path-flags: path-flags, - /// The relative path of the file or directory to inspect. - path: string, - ) -> result; - } - - /// A stream of directory entries. - resource directory-entry-stream { - /// Read a single directory entry from a `directory-entry-stream`. - read-directory-entry: func() -> result, error-code>; - } - - /// Attempts to extract a filesystem-related `error-code` from the stream - /// `error` provided. - /// - /// Stream operations which return `stream-error::last-operation-failed` - /// have a payload with more information about the operation that failed. - /// This payload can be passed through to this function to see if there's - /// filesystem-related information about the error to return. - /// - /// Note that this function is fallible because not all stream-related - /// errors are filesystem-related errors. - filesystem-error-code: func(err: borrow) -> option; -} diff --git a/host-apis/wasi-0.2.0-rc-2023-10-18/wit/deps/filesystem/world.wit b/host-apis/wasi-0.2.0-rc-2023-10-18/wit/deps/filesystem/world.wit deleted file mode 100644 index 3f953f89..00000000 --- a/host-apis/wasi-0.2.0-rc-2023-10-18/wit/deps/filesystem/world.wit +++ /dev/null @@ -1,6 +0,0 @@ -package wasi:filesystem@0.2.0-rc-2023-10-18; - -world imports { - import types; - import preopens; -} diff --git a/host-apis/wasi-0.2.0-rc-2023-10-18/wit/deps/http/incoming-handler.wit b/host-apis/wasi-0.2.0-rc-2023-10-18/wit/deps/http/incoming-handler.wit deleted file mode 100644 index 6968d633..00000000 --- a/host-apis/wasi-0.2.0-rc-2023-10-18/wit/deps/http/incoming-handler.wit +++ /dev/null @@ -1,24 +0,0 @@ -// The `wasi:http/incoming-handler` interface is meant to be exported by -// components and called by the host in response to a new incoming HTTP -// response. -// -// NOTE: in Preview3, this interface will be merged with -// `wasi:http/outgoing-handler` into a single `wasi:http/handler` interface -// that takes a `request` parameter and returns a `response` result. -// -interface incoming-handler { - use types.{incoming-request, response-outparam}; - - // The `handle` function takes an outparam instead of returning its response - // so that the component may stream its response while streaming any other - // request or response bodies. The callee MUST write a response to the - // `response-outparam` and then finish the response before returning. The `handle` - // function is allowed to continue execution after finishing the response's - // output stream. While this post-response execution is taken off the - // critical path, since there is no return value, there is no way to report - // its success or failure. - handle: func( - request: incoming-request, - response-out: response-outparam - ); -} diff --git a/host-apis/wasi-0.2.0-rc-2023-10-18/wit/deps/http/outgoing-handler.wit b/host-apis/wasi-0.2.0-rc-2023-10-18/wit/deps/http/outgoing-handler.wit deleted file mode 100644 index 286e2833..00000000 --- a/host-apis/wasi-0.2.0-rc-2023-10-18/wit/deps/http/outgoing-handler.wit +++ /dev/null @@ -1,20 +0,0 @@ -// The `wasi:http/outgoing-handler` interface is meant to be imported by -// components and implemented by the host. -// -// NOTE: in Preview3, this interface will be merged with -// `wasi:http/outgoing-handler` into a single `wasi:http/handler` interface -// that takes a `request` parameter and returns a `response` result. -// -interface outgoing-handler { - use types.{outgoing-request, request-options, future-incoming-response, error}; - - // The parameter and result types of the `handle` function allow the caller - // to concurrently stream the bodies of the outgoing request and the incoming - // response. - // Consumes the outgoing-request. Gives an error if the outgoing-request - // is invalid or cannot be satisfied by this handler. - handle: func( - request: outgoing-request, - options: option - ) -> result; -} diff --git a/host-apis/wasi-0.2.0-rc-2023-10-18/wit/deps/http/proxy.wit b/host-apis/wasi-0.2.0-rc-2023-10-18/wit/deps/http/proxy.wit deleted file mode 100644 index dde0659d..00000000 --- a/host-apis/wasi-0.2.0-rc-2023-10-18/wit/deps/http/proxy.wit +++ /dev/null @@ -1,34 +0,0 @@ -package wasi:http@0.2.0-rc-2023-10-18; - -// The `wasi:http/proxy` world captures a widely-implementable intersection of -// hosts that includes HTTP forward and reverse proxies. Components targeting -// this world may concurrently stream in and out any number of incoming and -// outgoing HTTP requests. -world proxy { - // HTTP proxies have access to time and randomness. - import wasi:clocks/wall-clock@0.2.0-rc-2023-10-18; - import wasi:clocks/monotonic-clock@0.2.0-rc-2023-10-18; - import wasi:clocks/timezone@0.2.0-rc-2023-10-18; - import wasi:random/random@0.2.0-rc-2023-10-18; - - // Proxies have standard output and error streams which are expected to - // terminate in a developer-facing console provided by the host. - import wasi:cli/stdout@0.2.0-rc-2023-10-18; - import wasi:cli/stderr@0.2.0-rc-2023-10-18; - - // TODO: this is a temporary workaround until component tooling is able to - // gracefully handle the absence of stdin. Hosts must return an eof stream - // for this import, which is what wasi-libc + tooling will do automatically - // when this import is properly removed. - import wasi:cli/stdin@0.2.0-rc-2023-10-18; - - // This is the default handler to use when user code simply wants to make an - // HTTP request (e.g., via `fetch()`). - import outgoing-handler; - - // The host delivers incoming HTTP requests to a component by calling the - // `handle` function of this exported interface. A host may arbitrarily reuse - // or not reuse component instance when delivering incoming HTTP requests and - // thus a component must be able to handle 0..N calls to `handle`. - export incoming-handler; -} diff --git a/host-apis/wasi-0.2.0-rc-2023-10-18/wit/deps/http/types.wit b/host-apis/wasi-0.2.0-rc-2023-10-18/wit/deps/http/types.wit deleted file mode 100644 index 2cd2fe21..00000000 --- a/host-apis/wasi-0.2.0-rc-2023-10-18/wit/deps/http/types.wit +++ /dev/null @@ -1,214 +0,0 @@ -// The `wasi:http/types` interface is meant to be imported by components to -// define the HTTP resource types and operations used by the component's -// imported and exported interfaces. -interface types { - use wasi:io/streams@0.2.0-rc-2023-10-18.{input-stream, output-stream}; - use wasi:io/poll@0.2.0-rc-2023-10-18.{pollable}; - - // This type corresponds to HTTP standard Methods. - variant method { - get, - head, - post, - put, - delete, - connect, - options, - trace, - patch, - other(string) - } - - // This type corresponds to HTTP standard Related Schemes. - variant scheme { - HTTP, - HTTPS, - other(string) - } - - // TODO: perhaps better align with HTTP semantics? - // This type enumerates the different kinds of errors that may occur when - // initially returning a response. - variant error { - invalid-url(string), - timeout-error(string), - protocol-error(string), - unexpected-error(string) - } - - // This following block defines the `fields` resource which corresponds to - // HTTP standard Fields. Soon, when resource types are added, the `type - // fields = u32` type alias can be replaced by a proper `resource fields` - // definition containing all the functions using the method syntactic sugar. - resource fields { - // Multiple values for a header are multiple entries in the list with the - // same key. - constructor(entries: list>>); - - // Values off wire are not necessarily well formed, so they are given by - // list instead of string. - get: func(name: string) -> list>; - - // Values off wire are not necessarily well formed, so they are given by - // list instead of string. - set: func(name: string, value: list>); - delete: func(name: string); - append: func(name: string, value: list); - - // Values off wire are not necessarily well formed, so they are given by - // list instead of string. - entries: func() -> list>>; - - // Deep copy of all contents in a fields. - clone: func() -> fields; - } - - type headers = fields; - type trailers = fields; - - // The following block defines the `incoming-request` and `outgoing-request` - // resource types that correspond to HTTP standard Requests. Soon, when - // resource types are added, the `u32` type aliases can be replaced by - // proper `resource` type definitions containing all the functions as - // methods. Later, Preview2 will allow both types to be merged together into - // a single `request` type (that uses the single `stream` type mentioned - // above). The `consume` and `write` methods may only be called once (and - // return failure thereafter). - resource incoming-request { - method: func() -> method; - - path-with-query: func() -> option; - - scheme: func() -> option; - - authority: func() -> option; - - headers: func() -> /* child */ headers; - // Will return the input-stream child at most once. If called more than - // once, subsequent calls will return error. - - consume: func() -> result; - } - - resource outgoing-request { - constructor( - method: method, - path-with-query: option, - scheme: option, - authority: option, - headers: borrow - ); - - // Will return the outgoing-body child at most once. If called more than - // once, subsequent calls will return error. - write: func() -> result< /* child */ outgoing-body>; - } - - // Additional optional parameters that can be set when making a request. - record request-options { - // The following timeouts are specific to the HTTP protocol and work - // independently of the overall timeouts passed to `io.poll.poll-list`. - - // The timeout for the initial connect. - connect-timeout-ms: option, - - // The timeout for receiving the first byte of the response body. - first-byte-timeout-ms: option, - - // The timeout for receiving the next chunk of bytes in the response body - // stream. - between-bytes-timeout-ms: option - } - - // The following block defines a special resource type used by the - // `wasi:http/incoming-handler` interface. When resource types are added, this - // block can be replaced by a proper `resource response-outparam { ... }` - // definition. Later, with Preview3, the need for an outparam goes away entirely - // (the `wasi:http/handler` interface used for both incoming and outgoing can - // simply return a `stream`). - resource response-outparam { - set: static func(param: response-outparam, response: result); - } - - // This type corresponds to the HTTP standard Status Code. - type status-code = u16; - - // The following block defines the `incoming-response` and `outgoing-response` - // resource types that correspond to HTTP standard Responses. Soon, when - // resource types are added, the `u32` type aliases can be replaced by proper - // `resource` type definitions containing all the functions as methods. Later, - // Preview2 will allow both types to be merged together into a single `response` - // type (that uses the single `stream` type mentioned above). The `consume` and - // `write` methods may only be called once (and return failure thereafter). - resource incoming-response { - status: func() -> status-code; - - headers: func() -> /* child */ headers; - - // May be called at most once. returns error if called additional times. - // TODO: make incoming-request-consume work the same way, giving a child - // incoming-body. - consume: func() -> result; - } - - resource incoming-body { - // returned input-stream is a child - the implementation may trap if - // incoming-body is dropped (or consumed by call to - // incoming-body-finish) before the input-stream is dropped. - // May be called at most once. returns error if called additional times. - %stream: func() -> result; - - // takes ownership of incoming-body. this will trap if the - // incoming-body-stream child is still alive! - finish: static func(this: incoming-body) -> - /* transitive child of the incoming-response of incoming-body */ future-trailers; - } - - resource future-trailers { - /// Pollable that resolves when the body has been fully read, and the trailers - /// are ready to be consumed. - subscribe: func() -> /* child */ pollable; - - /// Retrieve reference to trailers, if they are ready. - get: func() -> option>; - } - - resource outgoing-response { - constructor(status-code: status-code, headers: borrow); - - /// Will give the child outgoing-response at most once. subsequent calls will - /// return an error. - write: func() -> result; - } - - resource outgoing-body { - /// Will give the child output-stream at most once. subsequent calls will - /// return an error. - write: func() -> result; - - /// Finalize an outgoing body, optionally providing trailers. This must be - /// called to signal that the response is complete. If the `outgoing-body` is - /// dropped without calling `outgoing-body-finalize`, the implementation - /// should treat the body as corrupted. - finish: static func(this: outgoing-body, trailers: option); - } - - /// The following block defines a special resource type used by the - /// `wasi:http/outgoing-handler` interface to emulate - /// `future>` in advance of Preview3. Given a - /// `future-incoming-response`, the client can call the non-blocking `get` - /// method to get the result if it is available. If the result is not available, - /// the client can call `listen` to get a `pollable` that can be passed to - /// `wasi:io/poll.poll-list`. - resource future-incoming-response { - /// option indicates readiness. - /// outer result indicates you are allowed to get the - /// incoming-response-or-error at most once. subsequent calls after ready - /// will return an error here. - /// inner result indicates whether the incoming-response was available, or an - /// error occured. - get: func() -> option>>; - - subscribe: func() -> /* child */ pollable; - } -} diff --git a/host-apis/wasi-0.2.0-rc-2023-10-18/wit/deps/io/poll.wit b/host-apis/wasi-0.2.0-rc-2023-10-18/wit/deps/io/poll.wit deleted file mode 100644 index 047389d2..00000000 --- a/host-apis/wasi-0.2.0-rc-2023-10-18/wit/deps/io/poll.wit +++ /dev/null @@ -1,34 +0,0 @@ -package wasi:io@0.2.0-rc-2023-10-18; - -/// A poll API intended to let users wait for I/O events on multiple handles -/// at once. -interface poll { - /// A "pollable" handle. - resource pollable; - - /// Poll for completion on a set of pollables. - /// - /// This function takes a list of pollables, which identify I/O sources of - /// interest, and waits until one or more of the events is ready for I/O. - /// - /// The result `list` contains one or more indices of handles in the - /// argument list that is ready for I/O. - /// - /// If the list contains more elements than can be indexed with a `u32` - /// value, this function traps. - /// - /// A timeout can be implemented by adding a pollable from the - /// wasi-clocks API to the list. - /// - /// This function does not return a `result`; polling in itself does not - /// do any I/O so it doesn't fail. If any of the I/O sources identified by - /// the pollables has an error, it is indicated by marking the source as - /// being reaedy for I/O. - poll-list: func(in: list>) -> list; - - /// Poll for completion on a single pollable. - /// - /// This function is similar to `poll-list`, but operates on only a single - /// pollable. When it returns, the handle is ready for I/O. - poll-one: func(in: borrow); -} diff --git a/host-apis/wasi-0.2.0-rc-2023-10-18/wit/deps/io/streams.wit b/host-apis/wasi-0.2.0-rc-2023-10-18/wit/deps/io/streams.wit deleted file mode 100644 index d0e8f5c3..00000000 --- a/host-apis/wasi-0.2.0-rc-2023-10-18/wit/deps/io/streams.wit +++ /dev/null @@ -1,289 +0,0 @@ -package wasi:io@0.2.0-rc-2023-10-18; - -/// WASI I/O is an I/O abstraction API which is currently focused on providing -/// stream types. -/// -/// In the future, the component model is expected to add built-in stream types; -/// when it does, they are expected to subsume this API. -interface streams { - use poll.{pollable}; - - /// An error for input-stream and output-stream operations. - variant stream-error { - /// The last operation (a write or flush) failed before completion. - /// - /// More information is available in the `error` payload. - last-operation-failed(error), - /// The stream is closed: no more input will be accepted by the - /// stream. A closed output-stream will return this error on all - /// future operations. - closed - } - - /// Contextual error information about the last failure that happened on - /// a read, write, or flush from an `input-stream` or `output-stream`. - /// - /// This type is returned through the `stream-error` type whenever an - /// operation on a stream directly fails or an error is discovered - /// after-the-fact, for example when a write's failure shows up through a - /// later `flush` or `check-write`. - /// - /// Interfaces such as `wasi:filesystem/types` provide functionality to - /// further "downcast" this error into interface-specific error information. - resource error { - /// Returns a string that's suitable to assist humans in debugging this - /// error. - /// - /// The returned string will change across platforms and hosts which - /// means that parsing it, for example, would be a - /// platform-compatibility hazard. - to-debug-string: func() -> string; - } - - /// An input bytestream. - /// - /// `input-stream`s are *non-blocking* to the extent practical on underlying - /// platforms. I/O operations always return promptly; if fewer bytes are - /// promptly available than requested, they return the number of bytes promptly - /// available, which could even be zero. To wait for data to be available, - /// use the `subscribe` function to obtain a `pollable` which can be polled - /// for using `wasi:io/poll`. - resource input-stream { - /// Perform a non-blocking read from the stream. - /// - /// This function returns a list of bytes containing the data that was - /// read, along with a `stream-status` which, indicates whether further - /// reads are expected to produce data. The returned list will contain up to - /// `len` bytes; it may return fewer than requested, but not more. An - /// empty list and `stream-status:open` indicates no more data is - /// available at this time, and that the pollable given by `subscribe` - /// will be ready when more data is available. - /// - /// Once a stream has reached the end, subsequent calls to `read` or - /// `skip` will always report `stream-status:ended` rather than producing more - /// data. - /// - /// When the caller gives a `len` of 0, it represents a request to read 0 - /// bytes. This read should always succeed and return an empty list and - /// the current `stream-status`. - /// - /// The `len` parameter is a `u64`, which could represent a list of u8 which - /// is not possible to allocate in wasm32, or not desirable to allocate as - /// as a return value by the callee. The callee may return a list of bytes - /// less than `len` in size while more bytes are available for reading. - read: func( - /// The maximum number of bytes to read - len: u64 - ) -> result, stream-error>; - - /// Read bytes from a stream, after blocking until at least one byte can - /// be read. Except for blocking, identical to `read`. - blocking-read: func( - /// The maximum number of bytes to read - len: u64 - ) -> result, stream-error>; - - /// Skip bytes from a stream. - /// - /// This is similar to the `read` function, but avoids copying the - /// bytes into the instance. - /// - /// Once a stream has reached the end, subsequent calls to read or - /// `skip` will always report end-of-stream rather than producing more - /// data. - /// - /// This function returns the number of bytes skipped, along with a - /// `stream-status` indicating whether the end of the stream was - /// reached. The returned value will be at most `len`; it may be less. - skip: func( - /// The maximum number of bytes to skip. - len: u64, - ) -> result; - - /// Skip bytes from a stream, after blocking until at least one byte - /// can be skipped. Except for blocking behavior, identical to `skip`. - blocking-skip: func( - /// The maximum number of bytes to skip. - len: u64, - ) -> result; - - /// Create a `pollable` which will resolve once either the specified stream - /// has bytes available to read or the other end of the stream has been - /// closed. - /// The created `pollable` is a child resource of the `input-stream`. - /// Implementations may trap if the `input-stream` is dropped before - /// all derived `pollable`s created with this function are dropped. - subscribe: func() -> pollable; - } - - - /// An output bytestream. - /// - /// `output-stream`s are *non-blocking* to the extent practical on - /// underlying platforms. Except where specified otherwise, I/O operations also - /// always return promptly, after the number of bytes that can be written - /// promptly, which could even be zero. To wait for the stream to be ready to - /// accept data, the `subscribe` function to obtain a `pollable` which can be - /// polled for using `wasi:io/poll`. - resource output-stream { - /// Check readiness for writing. This function never blocks. - /// - /// Returns the number of bytes permitted for the next call to `write`, - /// or an error. Calling `write` with more bytes than this function has - /// permitted will trap. - /// - /// When this function returns 0 bytes, the `subscribe` pollable will - /// become ready when this function will report at least 1 byte, or an - /// error. - check-write: func() -> result; - - /// Perform a write. This function never blocks. - /// - /// Precondition: check-write gave permit of Ok(n) and contents has a - /// length of less than or equal to n. Otherwise, this function will trap. - /// - /// returns Err(closed) without writing if the stream has closed since - /// the last call to check-write provided a permit. - write: func( - contents: list - ) -> result<_, stream-error>; - - /// Perform a write of up to 4096 bytes, and then flush the stream. Block - /// until all of these operations are complete, or an error occurs. - /// - /// This is a convenience wrapper around the use of `check-write`, - /// `subscribe`, `write`, and `flush`, and is implemented with the - /// following pseudo-code: - /// - /// ```text - /// let pollable = this.subscribe(); - /// while !contents.is_empty() { - /// // Wait for the stream to become writable - /// poll-one(pollable); - /// let Ok(n) = this.check-write(); // eliding error handling - /// let len = min(n, contents.len()); - /// let (chunk, rest) = contents.split_at(len); - /// this.write(chunk ); // eliding error handling - /// contents = rest; - /// } - /// this.flush(); - /// // Wait for completion of `flush` - /// poll-one(pollable); - /// // Check for any errors that arose during `flush` - /// let _ = this.check-write(); // eliding error handling - /// ``` - blocking-write-and-flush: func( - contents: list - ) -> result<_, stream-error>; - - /// Request to flush buffered output. This function never blocks. - /// - /// This tells the output-stream that the caller intends any buffered - /// output to be flushed. the output which is expected to be flushed - /// is all that has been passed to `write` prior to this call. - /// - /// Upon calling this function, the `output-stream` will not accept any - /// writes (`check-write` will return `ok(0)`) until the flush has - /// completed. The `subscribe` pollable will become ready when the - /// flush has completed and the stream can accept more writes. - flush: func() -> result<_, stream-error>; - - /// Request to flush buffered output, and block until flush completes - /// and stream is ready for writing again. - blocking-flush: func() -> result<_, stream-error>; - - /// Create a `pollable` which will resolve once the output-stream - /// is ready for more writing, or an error has occured. When this - /// pollable is ready, `check-write` will return `ok(n)` with n>0, or an - /// error. - /// - /// If the stream is closed, this pollable is always ready immediately. - /// - /// The created `pollable` is a child resource of the `output-stream`. - /// Implementations may trap if the `output-stream` is dropped before - /// all derived `pollable`s created with this function are dropped. - subscribe: func() -> pollable; - - /// Write zeroes to a stream. - /// - /// this should be used precisely like `write` with the exact same - /// preconditions (must use check-write first), but instead of - /// passing a list of bytes, you simply pass the number of zero-bytes - /// that should be written. - write-zeroes: func( - /// The number of zero-bytes to write - len: u64 - ) -> result<_, stream-error>; - - /// Perform a write of up to 4096 zeroes, and then flush the stream. - /// Block until all of these operations are complete, or an error - /// occurs. - /// - /// This is a convenience wrapper around the use of `check-write`, - /// `subscribe`, `write-zeroes`, and `flush`, and is implemented with - /// the following pseudo-code: - /// - /// ```text - /// let pollable = this.subscribe(); - /// while num_zeroes != 0 { - /// // Wait for the stream to become writable - /// poll-one(pollable); - /// let Ok(n) = this.check-write(); // eliding error handling - /// let len = min(n, num_zeroes); - /// this.write-zeroes(len); // eliding error handling - /// num_zeroes -= len; - /// } - /// this.flush(); - /// // Wait for completion of `flush` - /// poll-one(pollable); - /// // Check for any errors that arose during `flush` - /// let _ = this.check-write(); // eliding error handling - /// ``` - blocking-write-zeroes-and-flush: func( - /// The number of zero-bytes to write - len: u64 - ) -> result<_, stream-error>; - - /// Read from one stream and write to another. - /// - /// This function returns the number of bytes transferred; it may be less - /// than `len`. - /// - /// Unlike other I/O functions, this function blocks until all the data - /// read from the input stream has been written to the output stream. - splice: func( - /// The stream to read from - src: input-stream, - /// The number of bytes to splice - len: u64, - ) -> result; - - /// Read from one stream and write to another, with blocking. - /// - /// This is similar to `splice`, except that it blocks until at least - /// one byte can be read. - blocking-splice: func( - /// The stream to read from - src: input-stream, - /// The number of bytes to splice - len: u64, - ) -> result; - - /// Forward the entire contents of an input stream to an output stream. - /// - /// This function repeatedly reads from the input stream and writes - /// the data to the output stream, until the end of the input stream - /// is reached, or an error is encountered. - /// - /// Unlike other I/O functions, this function blocks until the end - /// of the input stream is seen and all the data has been written to - /// the output stream. - /// - /// This function returns the number of bytes transferred, and the status of - /// the output stream. - forward: func( - /// The stream to read from - src: input-stream - ) -> result; - } -} diff --git a/host-apis/wasi-0.2.0-rc-2023-10-18/wit/deps/io/world.wit b/host-apis/wasi-0.2.0-rc-2023-10-18/wit/deps/io/world.wit deleted file mode 100644 index 3627c9d6..00000000 --- a/host-apis/wasi-0.2.0-rc-2023-10-18/wit/deps/io/world.wit +++ /dev/null @@ -1,6 +0,0 @@ -package wasi:io@0.2.0-rc-2023-10-18; - -world imports { - import streams; - import poll; -} diff --git a/host-apis/wasi-0.2.0-rc-2023-10-18/wit/deps/logging/logging.wit b/host-apis/wasi-0.2.0-rc-2023-10-18/wit/deps/logging/logging.wit deleted file mode 100644 index b897a5ae..00000000 --- a/host-apis/wasi-0.2.0-rc-2023-10-18/wit/deps/logging/logging.wit +++ /dev/null @@ -1,37 +0,0 @@ -package wasi:logging@0.2.0-rc-2023-10-18; - -/// WASI Logging is a logging API intended to let users emit log messages with -/// simple priority levels and context values. -interface logging { - /// A log level, describing a kind of message. - enum level { - /// Describes messages about the values of variables and the flow of - /// control within a program. - trace, - - /// Describes messages likely to be of interest to someone debugging a - /// program. - debug, - - /// Describes messages likely to be of interest to someone monitoring a - /// program. - info, - - /// Describes messages indicating hazardous situations. - warn, - - /// Describes messages indicating serious errors. - error, - - /// Describes messages indicating fatal errors. - critical, - } - - /// Emit a log message. - /// - /// A log message has a `level` describing what kind of message is being - /// sent, a context, which is an uninterpreted string meant to help - /// consumers group similar messages, and a string containing the message - /// text. - log: func(level: level, context: string, message: string); -} diff --git a/host-apis/wasi-0.2.0-rc-2023-10-18/wit/deps/logging/world.wit b/host-apis/wasi-0.2.0-rc-2023-10-18/wit/deps/logging/world.wit deleted file mode 100644 index a0fb255c..00000000 --- a/host-apis/wasi-0.2.0-rc-2023-10-18/wit/deps/logging/world.wit +++ /dev/null @@ -1,5 +0,0 @@ -package wasi:logging@0.2.0-rc-2023-10-18; - -world imports { - import logging; -} diff --git a/host-apis/wasi-0.2.0-rc-2023-10-18/wit/deps/random/insecure-seed.wit b/host-apis/wasi-0.2.0-rc-2023-10-18/wit/deps/random/insecure-seed.wit deleted file mode 100644 index 139aed15..00000000 --- a/host-apis/wasi-0.2.0-rc-2023-10-18/wit/deps/random/insecure-seed.wit +++ /dev/null @@ -1,24 +0,0 @@ -/// The insecure-seed interface for seeding hash-map DoS resistance. -/// -/// It is intended to be portable at least between Unix-family platforms and -/// Windows. -interface insecure-seed { - /// Return a 128-bit value that may contain a pseudo-random value. - /// - /// The returned value is not required to be computed from a CSPRNG, and may - /// even be entirely deterministic. Host implementations are encouraged to - /// provide pseudo-random values to any program exposed to - /// attacker-controlled content, to enable DoS protection built into many - /// languages' hash-map implementations. - /// - /// This function is intended to only be called once, by a source language - /// to initialize Denial Of Service (DoS) protection in its hash-map - /// implementation. - /// - /// # Expected future evolution - /// - /// This will likely be changed to a value import, to prevent it from being - /// called multiple times and potentially used for purposes other than DoS - /// protection. - insecure-seed: func() -> tuple; -} diff --git a/host-apis/wasi-0.2.0-rc-2023-10-18/wit/deps/random/insecure.wit b/host-apis/wasi-0.2.0-rc-2023-10-18/wit/deps/random/insecure.wit deleted file mode 100644 index 2ffd223c..00000000 --- a/host-apis/wasi-0.2.0-rc-2023-10-18/wit/deps/random/insecure.wit +++ /dev/null @@ -1,21 +0,0 @@ -/// The insecure interface for insecure pseudo-random numbers. -/// -/// It is intended to be portable at least between Unix-family platforms and -/// Windows. -interface insecure { - /// Return `len` insecure pseudo-random bytes. - /// - /// This function is not cryptographically secure. Do not use it for - /// anything related to security. - /// - /// There are no requirements on the values of the returned bytes, however - /// implementations are encouraged to return evenly distributed values with - /// a long period. - get-insecure-random-bytes: func(len: u64) -> list; - - /// Return an insecure pseudo-random `u64` value. - /// - /// This function returns the same type of pseudo-random data as - /// `get-insecure-random-bytes`, represented as a `u64`. - get-insecure-random-u64: func() -> u64; -} diff --git a/host-apis/wasi-0.2.0-rc-2023-10-18/wit/deps/random/random.wit b/host-apis/wasi-0.2.0-rc-2023-10-18/wit/deps/random/random.wit deleted file mode 100644 index 2c3c6a85..00000000 --- a/host-apis/wasi-0.2.0-rc-2023-10-18/wit/deps/random/random.wit +++ /dev/null @@ -1,25 +0,0 @@ -/// WASI Random is a random data API. -/// -/// It is intended to be portable at least between Unix-family platforms and -/// Windows. -interface random { - /// Return `len` cryptographically-secure random or pseudo-random bytes. - /// - /// This function must produce data at least as cryptographically secure and - /// fast as an adequately seeded cryptographically-secure pseudo-random - /// number generator (CSPRNG). It must not block, from the perspective of - /// the calling program, under any circumstances, including on the first - /// request and on requests for numbers of bytes. The returned data must - /// always be unpredictable. - /// - /// This function must always return fresh data. Deterministic environments - /// must omit this function, rather than implementing it with deterministic - /// data. - get-random-bytes: func(len: u64) -> list; - - /// Return a cryptographically-secure random or pseudo-random `u64` value. - /// - /// This function returns the same type of data as `get-random-bytes`, - /// represented as a `u64`. - get-random-u64: func() -> u64; -} diff --git a/host-apis/wasi-0.2.0-rc-2023-10-18/wit/deps/random/world.wit b/host-apis/wasi-0.2.0-rc-2023-10-18/wit/deps/random/world.wit deleted file mode 100644 index dcbff938..00000000 --- a/host-apis/wasi-0.2.0-rc-2023-10-18/wit/deps/random/world.wit +++ /dev/null @@ -1,7 +0,0 @@ -package wasi:random@0.2.0-rc-2023-10-18; - -world imports { - import random; - import insecure; - import insecure-seed; -} diff --git a/host-apis/wasi-0.2.0-rc-2023-10-18/wit/deps/sockets/instance-network.wit b/host-apis/wasi-0.2.0-rc-2023-10-18/wit/deps/sockets/instance-network.wit deleted file mode 100644 index 14e4479e..00000000 --- a/host-apis/wasi-0.2.0-rc-2023-10-18/wit/deps/sockets/instance-network.wit +++ /dev/null @@ -1,9 +0,0 @@ - -/// This interface provides a value-export of the default network handle.. -interface instance-network { - use network.{network}; - - /// Get a handle to the default network. - instance-network: func() -> network; - -} diff --git a/host-apis/wasi-0.2.0-rc-2023-10-18/wit/deps/sockets/ip-name-lookup.wit b/host-apis/wasi-0.2.0-rc-2023-10-18/wit/deps/sockets/ip-name-lookup.wit deleted file mode 100644 index f2dab32f..00000000 --- a/host-apis/wasi-0.2.0-rc-2023-10-18/wit/deps/sockets/ip-name-lookup.wit +++ /dev/null @@ -1,61 +0,0 @@ - -interface ip-name-lookup { - use wasi:io/poll@0.2.0-rc-2023-10-18.{pollable}; - use network.{network, error-code, ip-address, ip-address-family}; - - - /// Resolve an internet host name to a list of IP addresses. - /// - /// See the wasi-socket proposal README.md for a comparison with getaddrinfo. - /// - /// # Parameters - /// - `name`: The name to look up. IP addresses are not allowed. Unicode domain names are automatically converted - /// to ASCII using IDNA encoding. - /// - `address-family`: If provided, limit the results to addresses of this specific address family. - /// - `include-unavailable`: When set to true, this function will also return addresses of which the runtime - /// thinks (or knows) can't be connected to at the moment. For example, this will return IPv6 addresses on - /// systems without an active IPv6 interface. Notes: - /// - Even when no public IPv6 interfaces are present or active, names like "localhost" can still resolve to an IPv6 address. - /// - Whatever is "available" or "unavailable" is volatile and can change everytime a network cable is unplugged. - /// - /// This function never blocks. It either immediately fails or immediately returns successfully with a `resolve-address-stream` - /// that can be used to (asynchronously) fetch the results. - /// - /// At the moment, the stream never completes successfully with 0 items. Ie. the first call - /// to `resolve-next-address` never returns `ok(none)`. This may change in the future. - /// - /// # Typical errors - /// - `invalid-argument`: `name` is a syntactically invalid domain name. - /// - `invalid-argument`: `name` is an IP address. - /// - `not-supported`: The specified `address-family` is not supported. (EAI_FAMILY) - /// - /// # References: - /// - - /// - - /// - - /// - - resolve-addresses: func(network: borrow, name: string, address-family: option, include-unavailable: bool) -> result; - - resource resolve-address-stream { - /// Returns the next address from the resolver. - /// - /// This function should be called multiple times. On each call, it will - /// return the next address in connection order preference. If all - /// addresses have been exhausted, this function returns `none`. - /// - /// This function never returns IPv4-mapped IPv6 addresses. - /// - /// # Typical errors - /// - `name-unresolvable`: Name does not exist or has no suitable associated IP addresses. (EAI_NONAME, EAI_NODATA, EAI_ADDRFAMILY) - /// - `temporary-resolver-failure`: A temporary failure in name resolution occurred. (EAI_AGAIN) - /// - `permanent-resolver-failure`: A permanent failure in name resolution occurred. (EAI_FAIL) - /// - `would-block`: A result is not available yet. (EWOULDBLOCK, EAGAIN) - resolve-next-address: func() -> result, error-code>; - - /// Create a `pollable` which will resolve once the stream is ready for I/O. - /// - /// Note: this function is here for WASI Preview2 only. - /// It's planned to be removed when `future` is natively supported in Preview3. - subscribe: func() -> pollable; - } -} diff --git a/host-apis/wasi-0.2.0-rc-2023-10-18/wit/deps/sockets/network.wit b/host-apis/wasi-0.2.0-rc-2023-10-18/wit/deps/sockets/network.wit deleted file mode 100644 index fc516047..00000000 --- a/host-apis/wasi-0.2.0-rc-2023-10-18/wit/deps/sockets/network.wit +++ /dev/null @@ -1,146 +0,0 @@ - -interface network { - /// An opaque resource that represents access to (a subset of) the network. - /// This enables context-based security for networking. - /// There is no need for this to map 1:1 to a physical network interface. - resource network; - - /// Error codes. - /// - /// In theory, every API can return any error code. - /// In practice, API's typically only return the errors documented per API - /// combined with a couple of errors that are always possible: - /// - `unknown` - /// - `access-denied` - /// - `not-supported` - /// - `out-of-memory` - /// - `concurrency-conflict` - /// - /// See each individual API for what the POSIX equivalents are. They sometimes differ per API. - enum error-code { - // ### GENERAL ERRORS ### - - /// Unknown error - unknown, - - /// Access denied. - /// - /// POSIX equivalent: EACCES, EPERM - access-denied, - - /// The operation is not supported. - /// - /// POSIX equivalent: EOPNOTSUPP - not-supported, - - /// One of the arguments is invalid. - /// - /// POSIX equivalent: EINVAL - invalid-argument, - - /// Not enough memory to complete the operation. - /// - /// POSIX equivalent: ENOMEM, ENOBUFS, EAI_MEMORY - out-of-memory, - - /// The operation timed out before it could finish completely. - timeout, - - /// This operation is incompatible with another asynchronous operation that is already in progress. - /// - /// POSIX equivalent: EALREADY - concurrency-conflict, - - /// Trying to finish an asynchronous operation that: - /// - has not been started yet, or: - /// - was already finished by a previous `finish-*` call. - /// - /// Note: this is scheduled to be removed when `future`s are natively supported. - not-in-progress, - - /// The operation has been aborted because it could not be completed immediately. - /// - /// Note: this is scheduled to be removed when `future`s are natively supported. - would-block, - - - - // ### TCP & UDP SOCKET ERRORS ### - - /// The operation is not valid in the socket's current state. - invalid-state, - - /// A new socket resource could not be created because of a system limit. - new-socket-limit, - - /// A bind operation failed because the provided address is not an address that the `network` can bind to. - address-not-bindable, - - /// A bind operation failed because the provided address is already in use or because there are no ephemeral ports available. - address-in-use, - - /// The remote address is not reachable - remote-unreachable, - - - // ### TCP SOCKET ERRORS ### - - /// The connection was forcefully rejected - connection-refused, - - /// The connection was reset. - connection-reset, - - /// A connection was aborted. - connection-aborted, - - // ### UDP SOCKET ERRORS ### - datagram-too-large, - - - // ### NAME LOOKUP ERRORS ### - - /// Name does not exist or has no suitable associated IP addresses. - name-unresolvable, - - /// A temporary failure in name resolution occurred. - temporary-resolver-failure, - - /// A permanent failure in name resolution occurred. - permanent-resolver-failure, - } - - enum ip-address-family { - /// Similar to `AF_INET` in POSIX. - ipv4, - - /// Similar to `AF_INET6` in POSIX. - ipv6, - } - - type ipv4-address = tuple; - type ipv6-address = tuple; - - variant ip-address { - ipv4(ipv4-address), - ipv6(ipv6-address), - } - - record ipv4-socket-address { - port: u16, // sin_port - address: ipv4-address, // sin_addr - } - - record ipv6-socket-address { - port: u16, // sin6_port - flow-info: u32, // sin6_flowinfo - address: ipv6-address, // sin6_addr - scope-id: u32, // sin6_scope_id - } - - variant ip-socket-address { - ipv4(ipv4-socket-address), - ipv6(ipv6-socket-address), - } - -} diff --git a/host-apis/wasi-0.2.0-rc-2023-10-18/wit/deps/sockets/tcp-create-socket.wit b/host-apis/wasi-0.2.0-rc-2023-10-18/wit/deps/sockets/tcp-create-socket.wit deleted file mode 100644 index a9a33738..00000000 --- a/host-apis/wasi-0.2.0-rc-2023-10-18/wit/deps/sockets/tcp-create-socket.wit +++ /dev/null @@ -1,26 +0,0 @@ - -interface tcp-create-socket { - use network.{network, error-code, ip-address-family}; - use tcp.{tcp-socket}; - - /// Create a new TCP socket. - /// - /// Similar to `socket(AF_INET or AF_INET6, SOCK_STREAM, IPPROTO_TCP)` in POSIX. - /// - /// This function does not require a network capability handle. This is considered to be safe because - /// at time of creation, the socket is not bound to any `network` yet. Up to the moment `bind`/`listen`/`connect` - /// is called, the socket is effectively an in-memory configuration object, unable to communicate with the outside world. - /// - /// All sockets are non-blocking. Use the wasi-poll interface to block on asynchronous operations. - /// - /// # Typical errors - /// - `not-supported`: The specified `address-family` is not supported. (EAFNOSUPPORT) - /// - `new-socket-limit`: The new socket resource could not be created because of a system limit. (EMFILE, ENFILE) - /// - /// # References - /// - - /// - - /// - - /// - - create-tcp-socket: func(address-family: ip-address-family) -> result; -} diff --git a/host-apis/wasi-0.2.0-rc-2023-10-18/wit/deps/sockets/tcp.wit b/host-apis/wasi-0.2.0-rc-2023-10-18/wit/deps/sockets/tcp.wit deleted file mode 100644 index 448f629e..00000000 --- a/host-apis/wasi-0.2.0-rc-2023-10-18/wit/deps/sockets/tcp.wit +++ /dev/null @@ -1,268 +0,0 @@ - -interface tcp { - use wasi:io/streams@0.2.0-rc-2023-10-18.{input-stream, output-stream}; - use wasi:io/poll@0.2.0-rc-2023-10-18.{pollable}; - use network.{network, error-code, ip-socket-address, ip-address-family}; - - enum shutdown-type { - /// Similar to `SHUT_RD` in POSIX. - receive, - - /// Similar to `SHUT_WR` in POSIX. - send, - - /// Similar to `SHUT_RDWR` in POSIX. - both, - } - - - /// A TCP socket handle. - resource tcp-socket { - /// Bind the socket to a specific network on the provided IP address and port. - /// - /// If the IP address is zero (`0.0.0.0` in IPv4, `::` in IPv6), it is left to the implementation to decide which - /// network interface(s) to bind to. - /// If the TCP/UDP port is zero, the socket will be bound to a random free port. - /// - /// When a socket is not explicitly bound, the first invocation to a listen or connect operation will - /// implicitly bind the socket. - /// - /// Unlike in POSIX, this function is async. This enables interactive WASI hosts to inject permission prompts. - /// - /// # Typical `start` errors - /// - `invalid-argument`: The `local-address` has the wrong address family. (EAFNOSUPPORT, EFAULT on Windows) - /// - `invalid-argument`: `local-address` is not a unicast address. (EINVAL) - /// - `invalid-argument`: `local-address` is an IPv4-mapped IPv6 address, but the socket has `ipv6-only` enabled. (EINVAL) - /// - `invalid-state`: The socket is already bound. (EINVAL) - /// - /// # Typical `finish` errors - /// - `address-in-use`: No ephemeral ports available. (EADDRINUSE, ENOBUFS on Windows) - /// - `address-in-use`: Address is already in use. (EADDRINUSE) - /// - `address-not-bindable`: `local-address` is not an address that the `network` can bind to. (EADDRNOTAVAIL) - /// - `not-in-progress`: A `bind` operation is not in progress. - /// - `would-block`: Can't finish the operation, it is still in progress. (EWOULDBLOCK, EAGAIN) - /// - /// # References - /// - - /// - - /// - - /// - - start-bind: func(network: borrow, local-address: ip-socket-address) -> result<_, error-code>; - finish-bind: func() -> result<_, error-code>; - - /// Connect to a remote endpoint. - /// - /// On success: - /// - the socket is transitioned into the Connection state - /// - a pair of streams is returned that can be used to read & write to the connection - /// - /// POSIX mentions: - /// > If connect() fails, the state of the socket is unspecified. Conforming applications should - /// > close the file descriptor and create a new socket before attempting to reconnect. - /// - /// WASI prescribes the following behavior: - /// - If `connect` fails because an input/state validation error, the socket should remain usable. - /// - If a connection was actually attempted but failed, the socket should become unusable for further network communication. - /// Besides `drop`, any method after such a failure may return an error. - /// - /// # Typical `start` errors - /// - `invalid-argument`: The `remote-address` has the wrong address family. (EAFNOSUPPORT) - /// - `invalid-argument`: `remote-address` is not a unicast address. (EINVAL, ENETUNREACH on Linux, EAFNOSUPPORT on MacOS) - /// - `invalid-argument`: `remote-address` is an IPv4-mapped IPv6 address, but the socket has `ipv6-only` enabled. (EINVAL, EADDRNOTAVAIL on Illumos) - /// - `invalid-argument`: `remote-address` is a non-IPv4-mapped IPv6 address, but the socket was bound to a specific IPv4-mapped IPv6 address. (or vice versa) - /// - `invalid-argument`: The IP address in `remote-address` is set to INADDR_ANY (`0.0.0.0` / `::`). (EADDRNOTAVAIL on Windows) - /// - `invalid-argument`: The port in `remote-address` is set to 0. (EADDRNOTAVAIL on Windows) - /// - `invalid-argument`: The socket is already attached to a different network. The `network` passed to `connect` must be identical to the one passed to `bind`. - /// - `invalid-state`: The socket is already in the Connection state. (EISCONN) - /// - `invalid-state`: The socket is already in the Listener state. (EOPNOTSUPP, EINVAL on Windows) - /// - /// # Typical `finish` errors - /// - `timeout`: Connection timed out. (ETIMEDOUT) - /// - `connection-refused`: The connection was forcefully rejected. (ECONNREFUSED) - /// - `connection-reset`: The connection was reset. (ECONNRESET) - /// - `connection-aborted`: The connection was aborted. (ECONNABORTED) - /// - `remote-unreachable`: The remote address is not reachable. (EHOSTUNREACH, EHOSTDOWN, ENETUNREACH, ENETDOWN) - /// - `address-in-use`: Tried to perform an implicit bind, but there were no ephemeral ports available. (EADDRINUSE, EADDRNOTAVAIL on Linux, EAGAIN on BSD) - /// - `not-in-progress`: A `connect` operation is not in progress. - /// - `would-block`: Can't finish the operation, it is still in progress. (EWOULDBLOCK, EAGAIN) - /// - /// # References - /// - - /// - - /// - - /// - - start-connect: func(network: borrow, remote-address: ip-socket-address) -> result<_, error-code>; - finish-connect: func() -> result, error-code>; - - /// Start listening for new connections. - /// - /// Transitions the socket into the Listener state. - /// - /// Unlike POSIX: - /// - this function is async. This enables interactive WASI hosts to inject permission prompts. - /// - the socket must already be explicitly bound. - /// - /// # Typical `start` errors - /// - `invalid-state`: The socket is not bound to any local address. (EDESTADDRREQ) - /// - `invalid-state`: The socket is already in the Connection state. (EISCONN, EINVAL on BSD) - /// - `invalid-state`: The socket is already in the Listener state. - /// - /// # Typical `finish` errors - /// - `address-in-use`: Tried to perform an implicit bind, but there were no ephemeral ports available. (EADDRINUSE) - /// - `not-in-progress`: A `listen` operation is not in progress. - /// - `would-block`: Can't finish the operation, it is still in progress. (EWOULDBLOCK, EAGAIN) - /// - /// # References - /// - - /// - - /// - - /// - - start-listen: func() -> result<_, error-code>; - finish-listen: func() -> result<_, error-code>; - - /// Accept a new client socket. - /// - /// The returned socket is bound and in the Connection state. The following properties are inherited from the listener socket: - /// - `address-family` - /// - `ipv6-only` - /// - `keep-alive` - /// - `no-delay` - /// - `unicast-hop-limit` - /// - `receive-buffer-size` - /// - `send-buffer-size` - /// - /// On success, this function returns the newly accepted client socket along with - /// a pair of streams that can be used to read & write to the connection. - /// - /// # Typical errors - /// - `invalid-state`: Socket is not in the Listener state. (EINVAL) - /// - `would-block`: No pending connections at the moment. (EWOULDBLOCK, EAGAIN) - /// - `connection-aborted`: An incoming connection was pending, but was terminated by the client before this listener could accept it. (ECONNABORTED) - /// - `new-socket-limit`: The new socket resource could not be created because of a system limit. (EMFILE, ENFILE) - /// - /// # References - /// - - /// - - /// - - /// - - accept: func() -> result, error-code>; - - /// Get the bound local address. - /// - /// POSIX mentions: - /// > If the socket has not been bound to a local name, the value - /// > stored in the object pointed to by `address` is unspecified. - /// - /// WASI is stricter and requires `local-address` to return `invalid-state` when the socket hasn't been bound yet. - /// - /// # Typical errors - /// - `invalid-state`: The socket is not bound to any local address. - /// - /// # References - /// - - /// - - /// - - /// - - local-address: func() -> result; - - /// Get the remote address. - /// - /// # Typical errors - /// - `invalid-state`: The socket is not connected to a remote address. (ENOTCONN) - /// - /// # References - /// - - /// - - /// - - /// - - remote-address: func() -> result; - - /// Whether this is a IPv4 or IPv6 socket. - /// - /// Equivalent to the SO_DOMAIN socket option. - address-family: func() -> ip-address-family; - - /// Whether IPv4 compatibility (dual-stack) mode is disabled or not. - /// - /// Equivalent to the IPV6_V6ONLY socket option. - /// - /// # Typical errors - /// - `invalid-state`: (set) The socket is already bound. - /// - `not-supported`: (get/set) `this` socket is an IPv4 socket. - /// - `not-supported`: (set) Host does not support dual-stack sockets. (Implementations are not required to.) - ipv6-only: func() -> result; - set-ipv6-only: func(value: bool) -> result<_, error-code>; - - /// Hints the desired listen queue size. Implementations are free to ignore this. - /// - /// # Typical errors - /// - `not-supported`: (set) The platform does not support changing the backlog size after the initial listen. - /// - `invalid-state`: (set) The socket is already in the Connection state. - set-listen-backlog-size: func(value: u64) -> result<_, error-code>; - - /// Equivalent to the SO_KEEPALIVE socket option. - keep-alive: func() -> result; - set-keep-alive: func(value: bool) -> result<_, error-code>; - - /// Equivalent to the TCP_NODELAY socket option. - /// - /// The default value is `false`. - no-delay: func() -> result; - set-no-delay: func(value: bool) -> result<_, error-code>; - - /// Equivalent to the IP_TTL & IPV6_UNICAST_HOPS socket options. - /// - /// # Typical errors - /// - `invalid-argument`: (set) The TTL value must be 1 or higher. - /// - `invalid-state`: (set) The socket is already in the Connection state. - /// - `invalid-state`: (set) The socket is already in the Listener state. - unicast-hop-limit: func() -> result; - set-unicast-hop-limit: func(value: u8) -> result<_, error-code>; - - /// The kernel buffer space reserved for sends/receives on this socket. - /// - /// Note #1: an implementation may choose to cap or round the buffer size when setting the value. - /// In other words, after setting a value, reading the same setting back may return a different value. - /// - /// Note #2: there is not necessarily a direct relationship between the kernel buffer size and the bytes of - /// actual data to be sent/received by the application, because the kernel might also use the buffer space - /// for internal metadata structures. - /// - /// Equivalent to the SO_RCVBUF and SO_SNDBUF socket options. - /// - /// # Typical errors - /// - `invalid-state`: (set) The socket is already in the Connection state. - /// - `invalid-state`: (set) The socket is already in the Listener state. - receive-buffer-size: func() -> result; - set-receive-buffer-size: func(value: u64) -> result<_, error-code>; - send-buffer-size: func() -> result; - set-send-buffer-size: func(value: u64) -> result<_, error-code>; - - /// Create a `pollable` which will resolve once the socket is ready for I/O. - /// - /// Note: this function is here for WASI Preview2 only. - /// It's planned to be removed when `future` is natively supported in Preview3. - subscribe: func() -> pollable; - - /// Initiate a graceful shutdown. - /// - /// - receive: the socket is not expecting to receive any more data from the peer. All subsequent read - /// operations on the `input-stream` associated with this socket will return an End Of Stream indication. - /// Any data still in the receive queue at time of calling `shutdown` will be discarded. - /// - send: the socket is not expecting to send any more data to the peer. All subsequent write - /// operations on the `output-stream` associated with this socket will return an error. - /// - both: same effect as receive & send combined. - /// - /// The shutdown function does not close (drop) the socket. - /// - /// # Typical errors - /// - `invalid-state`: The socket is not in the Connection state. (ENOTCONN) - /// - /// # References - /// - - /// - - /// - - /// - - shutdown: func(shutdown-type: shutdown-type) -> result<_, error-code>; - } -} diff --git a/host-apis/wasi-0.2.0-rc-2023-10-18/wit/deps/sockets/udp-create-socket.wit b/host-apis/wasi-0.2.0-rc-2023-10-18/wit/deps/sockets/udp-create-socket.wit deleted file mode 100644 index e026359f..00000000 --- a/host-apis/wasi-0.2.0-rc-2023-10-18/wit/deps/sockets/udp-create-socket.wit +++ /dev/null @@ -1,26 +0,0 @@ - -interface udp-create-socket { - use network.{network, error-code, ip-address-family}; - use udp.{udp-socket}; - - /// Create a new UDP socket. - /// - /// Similar to `socket(AF_INET or AF_INET6, SOCK_DGRAM, IPPROTO_UDP)` in POSIX. - /// - /// This function does not require a network capability handle. This is considered to be safe because - /// at time of creation, the socket is not bound to any `network` yet. Up to the moment `bind`/`connect` is called, - /// the socket is effectively an in-memory configuration object, unable to communicate with the outside world. - /// - /// All sockets are non-blocking. Use the wasi-poll interface to block on asynchronous operations. - /// - /// # Typical errors - /// - `not-supported`: The specified `address-family` is not supported. (EAFNOSUPPORT) - /// - `new-socket-limit`: The new socket resource could not be created because of a system limit. (EMFILE, ENFILE) - /// - /// # References: - /// - - /// - - /// - - /// - - create-udp-socket: func(address-family: ip-address-family) -> result; -} diff --git a/host-apis/wasi-0.2.0-rc-2023-10-18/wit/deps/sockets/udp.wit b/host-apis/wasi-0.2.0-rc-2023-10-18/wit/deps/sockets/udp.wit deleted file mode 100644 index 91a8c6c4..00000000 --- a/host-apis/wasi-0.2.0-rc-2023-10-18/wit/deps/sockets/udp.wit +++ /dev/null @@ -1,213 +0,0 @@ - -interface udp { - use wasi:io/poll@0.2.0-rc-2023-10-18.{pollable}; - use network.{network, error-code, ip-socket-address, ip-address-family}; - - - record datagram { - data: list, // Theoretical max size: ~64 KiB. In practice, typically less than 1500 bytes. - remote-address: ip-socket-address, - - /// Possible future additions: - /// local-address: ip-socket-address, // IP_PKTINFO / IP_RECVDSTADDR / IPV6_PKTINFO - /// local-interface: u32, // IP_PKTINFO / IP_RECVIF - /// ttl: u8, // IP_RECVTTL - /// dscp: u6, // IP_RECVTOS - /// ecn: u2, // IP_RECVTOS - } - - - - /// A UDP socket handle. - resource udp-socket { - /// Bind the socket to a specific network on the provided IP address and port. - /// - /// If the IP address is zero (`0.0.0.0` in IPv4, `::` in IPv6), it is left to the implementation to decide which - /// network interface(s) to bind to. - /// If the TCP/UDP port is zero, the socket will be bound to a random free port. - /// - /// When a socket is not explicitly bound, the first invocation to connect will implicitly bind the socket. - /// - /// Unlike in POSIX, this function is async. This enables interactive WASI hosts to inject permission prompts. - /// - /// # Typical `start` errors - /// - `invalid-argument`: The `local-address` has the wrong address family. (EAFNOSUPPORT, EFAULT on Windows) - /// - `invalid-state`: The socket is already bound. (EINVAL) - /// - /// # Typical `finish` errors - /// - `address-in-use`: No ephemeral ports available. (EADDRINUSE, ENOBUFS on Windows) - /// - `address-in-use`: Address is already in use. (EADDRINUSE) - /// - `address-not-bindable`: `local-address` is not an address that the `network` can bind to. (EADDRNOTAVAIL) - /// - `not-in-progress`: A `bind` operation is not in progress. - /// - `would-block`: Can't finish the operation, it is still in progress. (EWOULDBLOCK, EAGAIN) - /// - /// # References - /// - - /// - - /// - - /// - - start-bind: func(network: borrow, local-address: ip-socket-address) -> result<_, error-code>; - finish-bind: func() -> result<_, error-code>; - - /// Set the destination address. - /// - /// The local-address is updated based on the best network path to `remote-address`. - /// - /// When a destination address is set: - /// - all receive operations will only return datagrams sent from the provided `remote-address`. - /// - the `send` function can only be used to send to this destination. - /// - /// Note that this function does not generate any network traffic and the peer is not aware of this "connection". - /// - /// Unlike in POSIX, this function is async. This enables interactive WASI hosts to inject permission prompts. - /// - /// # Typical `start` errors - /// - `invalid-argument`: The `remote-address` has the wrong address family. (EAFNOSUPPORT) - /// - `invalid-argument`: `remote-address` is a non-IPv4-mapped IPv6 address, but the socket was bound to a specific IPv4-mapped IPv6 address. (or vice versa) - /// - `invalid-argument`: The IP address in `remote-address` is set to INADDR_ANY (`0.0.0.0` / `::`). (EDESTADDRREQ, EADDRNOTAVAIL) - /// - `invalid-argument`: The port in `remote-address` is set to 0. (EDESTADDRREQ, EADDRNOTAVAIL) - /// - `invalid-argument`: The socket is already bound to a different network. The `network` passed to `connect` must be identical to the one passed to `bind`. - /// - /// # Typical `finish` errors - /// - `address-in-use`: Tried to perform an implicit bind, but there were no ephemeral ports available. (EADDRINUSE, EADDRNOTAVAIL on Linux, EAGAIN on BSD) - /// - `not-in-progress`: A `connect` operation is not in progress. - /// - `would-block`: Can't finish the operation, it is still in progress. (EWOULDBLOCK, EAGAIN) - /// - /// # References - /// - - /// - - /// - - /// - - start-connect: func(network: borrow, remote-address: ip-socket-address) -> result<_, error-code>; - finish-connect: func() -> result<_, error-code>; - - /// Receive messages on the socket. - /// - /// This function attempts to receive up to `max-results` datagrams on the socket without blocking. - /// The returned list may contain fewer elements than requested, but never more. - /// If `max-results` is 0, this function returns successfully with an empty list. - /// - /// # Typical errors - /// - `invalid-state`: The socket is not bound to any local address. (EINVAL) - /// - `remote-unreachable`: The remote address is not reachable. (ECONNREFUSED, ECONNRESET, ENETRESET on Windows, EHOSTUNREACH, EHOSTDOWN, ENETUNREACH, ENETDOWN) - /// - `would-block`: There is no pending data available to be read at the moment. (EWOULDBLOCK, EAGAIN) - /// - /// # References - /// - - /// - - /// - - /// - - /// - - /// - - /// - - /// - - receive: func(max-results: u64) -> result, error-code>; - - /// Send messages on the socket. - /// - /// This function attempts to send all provided `datagrams` on the socket without blocking and - /// returns how many messages were actually sent (or queued for sending). - /// - /// This function semantically behaves the same as iterating the `datagrams` list and sequentially - /// sending each individual datagram until either the end of the list has been reached or the first error occurred. - /// If at least one datagram has been sent successfully, this function never returns an error. - /// - /// If the input list is empty, the function returns `ok(0)`. - /// - /// The remote address option is required. To send a message to the "connected" peer, - /// call `remote-address` to get their address. - /// - /// # Typical errors - /// - `invalid-argument`: The `remote-address` has the wrong address family. (EAFNOSUPPORT) - /// - `invalid-argument`: `remote-address` is a non-IPv4-mapped IPv6 address, but the socket was bound to a specific IPv4-mapped IPv6 address. (or vice versa) - /// - `invalid-argument`: The IP address in `remote-address` is set to INADDR_ANY (`0.0.0.0` / `::`). (EDESTADDRREQ, EADDRNOTAVAIL) - /// - `invalid-argument`: The port in `remote-address` is set to 0. (EDESTADDRREQ, EADDRNOTAVAIL) - /// - `invalid-argument`: The socket is in "connected" mode and the `datagram.remote-address` does not match the address passed to `connect`. (EISCONN) - /// - `invalid-state`: The socket is not bound to any local address. Unlike POSIX, this function does not perform an implicit bind. - /// - `remote-unreachable`: The remote address is not reachable. (ECONNREFUSED, ECONNRESET, ENETRESET on Windows, EHOSTUNREACH, EHOSTDOWN, ENETUNREACH, ENETDOWN) - /// - `datagram-too-large`: The datagram is too large. (EMSGSIZE) - /// - `would-block`: The send buffer is currently full. (EWOULDBLOCK, EAGAIN) - /// - /// # References - /// - - /// - - /// - - /// - - /// - - /// - - /// - - /// - - send: func(datagrams: list) -> result; - - /// Get the current bound address. - /// - /// POSIX mentions: - /// > If the socket has not been bound to a local name, the value - /// > stored in the object pointed to by `address` is unspecified. - /// - /// WASI is stricter and requires `local-address` to return `invalid-state` when the socket hasn't been bound yet. - /// - /// # Typical errors - /// - `invalid-state`: The socket is not bound to any local address. - /// - /// # References - /// - - /// - - /// - - /// - - local-address: func() -> result; - - /// Get the address set with `connect`. - /// - /// # Typical errors - /// - `invalid-state`: The socket is not connected to a remote address. (ENOTCONN) - /// - /// # References - /// - - /// - - /// - - /// - - remote-address: func() -> result; - - /// Whether this is a IPv4 or IPv6 socket. - /// - /// Equivalent to the SO_DOMAIN socket option. - address-family: func() -> ip-address-family; - - /// Whether IPv4 compatibility (dual-stack) mode is disabled or not. - /// - /// Equivalent to the IPV6_V6ONLY socket option. - /// - /// # Typical errors - /// - `not-supported`: (get/set) `this` socket is an IPv4 socket. - /// - `invalid-state`: (set) The socket is already bound. - /// - `not-supported`: (set) Host does not support dual-stack sockets. (Implementations are not required to.) - ipv6-only: func() -> result; - set-ipv6-only: func(value: bool) -> result<_, error-code>; - - /// Equivalent to the IP_TTL & IPV6_UNICAST_HOPS socket options. - unicast-hop-limit: func() -> result; - set-unicast-hop-limit: func(value: u8) -> result<_, error-code>; - - /// The kernel buffer space reserved for sends/receives on this socket. - /// - /// Note #1: an implementation may choose to cap or round the buffer size when setting the value. - /// In other words, after setting a value, reading the same setting back may return a different value. - /// - /// Note #2: there is not necessarily a direct relationship between the kernel buffer size and the bytes of - /// actual data to be sent/received by the application, because the kernel might also use the buffer space - /// for internal metadata structures. - /// - /// Equivalent to the SO_RCVBUF and SO_SNDBUF socket options. - receive-buffer-size: func() -> result; - set-receive-buffer-size: func(value: u64) -> result<_, error-code>; - send-buffer-size: func() -> result; - set-send-buffer-size: func(value: u64) -> result<_, error-code>; - - /// Create a `pollable` which will resolve once the socket is ready for I/O. - /// - /// Note: this function is here for WASI Preview2 only. - /// It's planned to be removed when `future` is natively supported in Preview3. - subscribe: func() -> pollable; - } -} diff --git a/host-apis/wasi-0.2.0-rc-2023-10-18/wit/deps/sockets/world.wit b/host-apis/wasi-0.2.0-rc-2023-10-18/wit/deps/sockets/world.wit deleted file mode 100644 index d16530c3..00000000 --- a/host-apis/wasi-0.2.0-rc-2023-10-18/wit/deps/sockets/world.wit +++ /dev/null @@ -1,11 +0,0 @@ -package wasi:sockets@0.2.0-rc-2023-10-18; - -world imports { - import instance-network; - import network; - import udp; - import udp-create-socket; - import tcp; - import tcp-create-socket; - import ip-name-lookup; -} diff --git a/host-apis/wasi-0.2.0-rc-2023-10-18/wit/main.wit b/host-apis/wasi-0.2.0-rc-2023-10-18/wit/main.wit deleted file mode 100644 index a8f64304..00000000 --- a/host-apis/wasi-0.2.0-rc-2023-10-18/wit/main.wit +++ /dev/null @@ -1,6 +0,0 @@ -package local:bindings; - -world bindings { - include wasi:cli/command@0.2.0-rc-2023-10-18; - include wasi:http/proxy@0.2.0-rc-2023-10-18; -} diff --git a/host-apis/wasi-0.2.0-rc-2023-10-18/wit/test.wit b/host-apis/wasi-0.2.0-rc-2023-10-18/wit/test.wit deleted file mode 100644 index 3db5e082..00000000 --- a/host-apis/wasi-0.2.0-rc-2023-10-18/wit/test.wit +++ /dev/null @@ -1,46 +0,0 @@ -// only used as part of `test-programs` -world test-reactor { - - import wasi:cli/environment@0.2.0-rc-2023-10-18; - import wasi:io/poll@0.2.0-rc-2023-10-18; - import wasi:io/streams@0.2.0-rc-2023-10-18; - import wasi:filesystem/types@0.2.0-rc-2023-10-18; - import wasi:filesystem/preopens@0.2.0-rc-2023-10-18; - import wasi:cli/exit@0.2.0-rc-2023-10-18; - - export add-strings: func(s: list) -> u32; - export get-strings: func() -> list; - - use wasi:io/streams@0.2.0-rc-2023-10-18.{output-stream}; - - export write-strings-to: func(o: output-stream) -> result; - - use wasi:filesystem/types@0.2.0-rc-2023-10-18.{descriptor-stat}; - export pass-an-imported-record: func(d: descriptor-stat) -> string; -} - -world test-command { - import wasi:io/poll@0.2.0-rc-2023-10-18; - import wasi:io/streams@0.2.0-rc-2023-10-18; - import wasi:cli/environment@0.2.0-rc-2023-10-18; - import wasi:cli/stdin@0.2.0-rc-2023-10-18; - import wasi:cli/stdout@0.2.0-rc-2023-10-18; - import wasi:cli/stderr@0.2.0-rc-2023-10-18; -} - -world test-command-with-sockets { - import wasi:io/poll@0.2.0-rc-2023-10-18; - import wasi:io/streams@0.2.0-rc-2023-10-18; - import wasi:cli/environment@0.2.0-rc-2023-10-18; - import wasi:cli/stdin@0.2.0-rc-2023-10-18; - import wasi:cli/stdout@0.2.0-rc-2023-10-18; - import wasi:cli/stderr@0.2.0-rc-2023-10-18; - import wasi:sockets/tcp@0.2.0-rc-2023-10-18; - import wasi:sockets/tcp-create-socket@0.2.0-rc-2023-10-18; - import wasi:sockets/udp@0.2.0-rc-2023-10-18; - import wasi:sockets/udp-create-socket@0.2.0-rc-2023-10-18; - import wasi:sockets/network@0.2.0-rc-2023-10-18; - import wasi:sockets/instance-network@0.2.0-rc-2023-10-18; - import wasi:sockets/ip-name-lookup@0.2.0-rc-2023-10-18; - import wasi:clocks/monotonic-clock@0.2.0-rc-2023-10-18; -} diff --git a/host-apis/wasi-0.2.0-rc-2023-12-05/bindings/bindings.c b/host-apis/wasi-0.2.0-rc-2023-12-05/bindings/bindings.c deleted file mode 100644 index f140318c..00000000 --- a/host-apis/wasi-0.2.0-rc-2023-12-05/bindings/bindings.c +++ /dev/null @@ -1,9144 +0,0 @@ -// Generated by `wit-bindgen` 0.16.0. DO NOT EDIT! -#include "bindings.h" - - -__attribute__((__import_module__("wasi:cli/environment@0.2.0-rc-2023-12-05"), __import_name__("get-environment"))) -extern void __wasm_import_wasi_cli_0_2_0_rc_2023_12_05_environment_get_environment(int32_t); - -__attribute__((__import_module__("wasi:cli/environment@0.2.0-rc-2023-12-05"), __import_name__("get-arguments"))) -extern void __wasm_import_wasi_cli_0_2_0_rc_2023_12_05_environment_get_arguments(int32_t); - -__attribute__((__import_module__("wasi:cli/environment@0.2.0-rc-2023-12-05"), __import_name__("initial-cwd"))) -extern void __wasm_import_wasi_cli_0_2_0_rc_2023_12_05_environment_initial_cwd(int32_t); - -__attribute__((__import_module__("wasi:cli/exit@0.2.0-rc-2023-12-05"), __import_name__("exit"))) -extern void __wasm_import_wasi_cli_0_2_0_rc_2023_12_05_exit_exit(int32_t); - -__attribute__((__import_module__("wasi:io/error@0.2.0-rc-2023-11-10"), __import_name__("[method]error.to-debug-string"))) -extern void __wasm_import_wasi_io_0_2_0_rc_2023_11_10_error_method_error_to_debug_string(int32_t, int32_t); - -__attribute__((__import_module__("wasi:io/poll@0.2.0-rc-2023-11-10"), __import_name__("[method]pollable.ready"))) -extern int32_t __wasm_import_wasi_io_0_2_0_rc_2023_11_10_poll_method_pollable_ready(int32_t); - -__attribute__((__import_module__("wasi:io/poll@0.2.0-rc-2023-11-10"), __import_name__("[method]pollable.block"))) -extern void __wasm_import_wasi_io_0_2_0_rc_2023_11_10_poll_method_pollable_block(int32_t); - -__attribute__((__import_module__("wasi:io/poll@0.2.0-rc-2023-11-10"), __import_name__("poll"))) -extern void __wasm_import_wasi_io_0_2_0_rc_2023_11_10_poll_poll(int32_t, int32_t, int32_t); - -__attribute__((__import_module__("wasi:io/streams@0.2.0-rc-2023-11-10"), __import_name__("[method]input-stream.read"))) -extern void __wasm_import_wasi_io_0_2_0_rc_2023_11_10_streams_method_input_stream_read(int32_t, int64_t, int32_t); - -__attribute__((__import_module__("wasi:io/streams@0.2.0-rc-2023-11-10"), __import_name__("[method]input-stream.blocking-read"))) -extern void __wasm_import_wasi_io_0_2_0_rc_2023_11_10_streams_method_input_stream_blocking_read(int32_t, int64_t, int32_t); - -__attribute__((__import_module__("wasi:io/streams@0.2.0-rc-2023-11-10"), __import_name__("[method]input-stream.skip"))) -extern void __wasm_import_wasi_io_0_2_0_rc_2023_11_10_streams_method_input_stream_skip(int32_t, int64_t, int32_t); - -__attribute__((__import_module__("wasi:io/streams@0.2.0-rc-2023-11-10"), __import_name__("[method]input-stream.blocking-skip"))) -extern void __wasm_import_wasi_io_0_2_0_rc_2023_11_10_streams_method_input_stream_blocking_skip(int32_t, int64_t, int32_t); - -__attribute__((__import_module__("wasi:io/streams@0.2.0-rc-2023-11-10"), __import_name__("[method]input-stream.subscribe"))) -extern int32_t __wasm_import_wasi_io_0_2_0_rc_2023_11_10_streams_method_input_stream_subscribe(int32_t); - -__attribute__((__import_module__("wasi:io/streams@0.2.0-rc-2023-11-10"), __import_name__("[method]output-stream.check-write"))) -extern void __wasm_import_wasi_io_0_2_0_rc_2023_11_10_streams_method_output_stream_check_write(int32_t, int32_t); - -__attribute__((__import_module__("wasi:io/streams@0.2.0-rc-2023-11-10"), __import_name__("[method]output-stream.write"))) -extern void __wasm_import_wasi_io_0_2_0_rc_2023_11_10_streams_method_output_stream_write(int32_t, int32_t, int32_t, int32_t); - -__attribute__((__import_module__("wasi:io/streams@0.2.0-rc-2023-11-10"), __import_name__("[method]output-stream.blocking-write-and-flush"))) -extern void __wasm_import_wasi_io_0_2_0_rc_2023_11_10_streams_method_output_stream_blocking_write_and_flush(int32_t, int32_t, int32_t, int32_t); - -__attribute__((__import_module__("wasi:io/streams@0.2.0-rc-2023-11-10"), __import_name__("[method]output-stream.flush"))) -extern void __wasm_import_wasi_io_0_2_0_rc_2023_11_10_streams_method_output_stream_flush(int32_t, int32_t); - -__attribute__((__import_module__("wasi:io/streams@0.2.0-rc-2023-11-10"), __import_name__("[method]output-stream.blocking-flush"))) -extern void __wasm_import_wasi_io_0_2_0_rc_2023_11_10_streams_method_output_stream_blocking_flush(int32_t, int32_t); - -__attribute__((__import_module__("wasi:io/streams@0.2.0-rc-2023-11-10"), __import_name__("[method]output-stream.subscribe"))) -extern int32_t __wasm_import_wasi_io_0_2_0_rc_2023_11_10_streams_method_output_stream_subscribe(int32_t); - -__attribute__((__import_module__("wasi:io/streams@0.2.0-rc-2023-11-10"), __import_name__("[method]output-stream.write-zeroes"))) -extern void __wasm_import_wasi_io_0_2_0_rc_2023_11_10_streams_method_output_stream_write_zeroes(int32_t, int64_t, int32_t); - -__attribute__((__import_module__("wasi:io/streams@0.2.0-rc-2023-11-10"), __import_name__("[method]output-stream.blocking-write-zeroes-and-flush"))) -extern void __wasm_import_wasi_io_0_2_0_rc_2023_11_10_streams_method_output_stream_blocking_write_zeroes_and_flush(int32_t, int64_t, int32_t); - -__attribute__((__import_module__("wasi:io/streams@0.2.0-rc-2023-11-10"), __import_name__("[method]output-stream.splice"))) -extern void __wasm_import_wasi_io_0_2_0_rc_2023_11_10_streams_method_output_stream_splice(int32_t, int32_t, int64_t, int32_t); - -__attribute__((__import_module__("wasi:io/streams@0.2.0-rc-2023-11-10"), __import_name__("[method]output-stream.blocking-splice"))) -extern void __wasm_import_wasi_io_0_2_0_rc_2023_11_10_streams_method_output_stream_blocking_splice(int32_t, int32_t, int64_t, int32_t); - -__attribute__((__import_module__("wasi:cli/stdin@0.2.0-rc-2023-12-05"), __import_name__("get-stdin"))) -extern int32_t __wasm_import_wasi_cli_0_2_0_rc_2023_12_05_stdin_get_stdin(void); - -__attribute__((__import_module__("wasi:cli/stdout@0.2.0-rc-2023-12-05"), __import_name__("get-stdout"))) -extern int32_t __wasm_import_wasi_cli_0_2_0_rc_2023_12_05_stdout_get_stdout(void); - -__attribute__((__import_module__("wasi:cli/stderr@0.2.0-rc-2023-12-05"), __import_name__("get-stderr"))) -extern int32_t __wasm_import_wasi_cli_0_2_0_rc_2023_12_05_stderr_get_stderr(void); - -__attribute__((__import_module__("wasi:cli/terminal-stdin@0.2.0-rc-2023-12-05"), __import_name__("get-terminal-stdin"))) -extern void __wasm_import_wasi_cli_0_2_0_rc_2023_12_05_terminal_stdin_get_terminal_stdin(int32_t); - -__attribute__((__import_module__("wasi:cli/terminal-stdout@0.2.0-rc-2023-12-05"), __import_name__("get-terminal-stdout"))) -extern void __wasm_import_wasi_cli_0_2_0_rc_2023_12_05_terminal_stdout_get_terminal_stdout(int32_t); - -__attribute__((__import_module__("wasi:cli/terminal-stderr@0.2.0-rc-2023-12-05"), __import_name__("get-terminal-stderr"))) -extern void __wasm_import_wasi_cli_0_2_0_rc_2023_12_05_terminal_stderr_get_terminal_stderr(int32_t); - -__attribute__((__import_module__("wasi:clocks/monotonic-clock@0.2.0-rc-2023-11-10"), __import_name__("now"))) -extern int64_t __wasm_import_wasi_clocks_0_2_0_rc_2023_11_10_monotonic_clock_now(void); - -__attribute__((__import_module__("wasi:clocks/monotonic-clock@0.2.0-rc-2023-11-10"), __import_name__("resolution"))) -extern int64_t __wasm_import_wasi_clocks_0_2_0_rc_2023_11_10_monotonic_clock_resolution(void); - -__attribute__((__import_module__("wasi:clocks/monotonic-clock@0.2.0-rc-2023-11-10"), __import_name__("subscribe-instant"))) -extern int32_t __wasm_import_wasi_clocks_0_2_0_rc_2023_11_10_monotonic_clock_subscribe_instant(int64_t); - -__attribute__((__import_module__("wasi:clocks/monotonic-clock@0.2.0-rc-2023-11-10"), __import_name__("subscribe-duration"))) -extern int32_t __wasm_import_wasi_clocks_0_2_0_rc_2023_11_10_monotonic_clock_subscribe_duration(int64_t); - -__attribute__((__import_module__("wasi:clocks/wall-clock@0.2.0-rc-2023-11-10"), __import_name__("now"))) -extern void __wasm_import_wasi_clocks_0_2_0_rc_2023_11_10_wall_clock_now(int32_t); - -__attribute__((__import_module__("wasi:clocks/wall-clock@0.2.0-rc-2023-11-10"), __import_name__("resolution"))) -extern void __wasm_import_wasi_clocks_0_2_0_rc_2023_11_10_wall_clock_resolution(int32_t); - -__attribute__((__import_module__("wasi:filesystem/types@0.2.0-rc-2023-11-10"), __import_name__("[method]descriptor.read-via-stream"))) -extern void __wasm_import_wasi_filesystem_0_2_0_rc_2023_11_10_types_method_descriptor_read_via_stream(int32_t, int64_t, int32_t); - -__attribute__((__import_module__("wasi:filesystem/types@0.2.0-rc-2023-11-10"), __import_name__("[method]descriptor.write-via-stream"))) -extern void __wasm_import_wasi_filesystem_0_2_0_rc_2023_11_10_types_method_descriptor_write_via_stream(int32_t, int64_t, int32_t); - -__attribute__((__import_module__("wasi:filesystem/types@0.2.0-rc-2023-11-10"), __import_name__("[method]descriptor.append-via-stream"))) -extern void __wasm_import_wasi_filesystem_0_2_0_rc_2023_11_10_types_method_descriptor_append_via_stream(int32_t, int32_t); - -__attribute__((__import_module__("wasi:filesystem/types@0.2.0-rc-2023-11-10"), __import_name__("[method]descriptor.advise"))) -extern void __wasm_import_wasi_filesystem_0_2_0_rc_2023_11_10_types_method_descriptor_advise(int32_t, int64_t, int64_t, int32_t, int32_t); - -__attribute__((__import_module__("wasi:filesystem/types@0.2.0-rc-2023-11-10"), __import_name__("[method]descriptor.sync-data"))) -extern void __wasm_import_wasi_filesystem_0_2_0_rc_2023_11_10_types_method_descriptor_sync_data(int32_t, int32_t); - -__attribute__((__import_module__("wasi:filesystem/types@0.2.0-rc-2023-11-10"), __import_name__("[method]descriptor.get-flags"))) -extern void __wasm_import_wasi_filesystem_0_2_0_rc_2023_11_10_types_method_descriptor_get_flags(int32_t, int32_t); - -__attribute__((__import_module__("wasi:filesystem/types@0.2.0-rc-2023-11-10"), __import_name__("[method]descriptor.get-type"))) -extern void __wasm_import_wasi_filesystem_0_2_0_rc_2023_11_10_types_method_descriptor_get_type(int32_t, int32_t); - -__attribute__((__import_module__("wasi:filesystem/types@0.2.0-rc-2023-11-10"), __import_name__("[method]descriptor.set-size"))) -extern void __wasm_import_wasi_filesystem_0_2_0_rc_2023_11_10_types_method_descriptor_set_size(int32_t, int64_t, int32_t); - -__attribute__((__import_module__("wasi:filesystem/types@0.2.0-rc-2023-11-10"), __import_name__("[method]descriptor.set-times"))) -extern void __wasm_import_wasi_filesystem_0_2_0_rc_2023_11_10_types_method_descriptor_set_times(int32_t, int32_t, int64_t, int32_t, int32_t, int64_t, int32_t, int32_t); - -__attribute__((__import_module__("wasi:filesystem/types@0.2.0-rc-2023-11-10"), __import_name__("[method]descriptor.read"))) -extern void __wasm_import_wasi_filesystem_0_2_0_rc_2023_11_10_types_method_descriptor_read(int32_t, int64_t, int64_t, int32_t); - -__attribute__((__import_module__("wasi:filesystem/types@0.2.0-rc-2023-11-10"), __import_name__("[method]descriptor.write"))) -extern void __wasm_import_wasi_filesystem_0_2_0_rc_2023_11_10_types_method_descriptor_write(int32_t, int32_t, int32_t, int64_t, int32_t); - -__attribute__((__import_module__("wasi:filesystem/types@0.2.0-rc-2023-11-10"), __import_name__("[method]descriptor.read-directory"))) -extern void __wasm_import_wasi_filesystem_0_2_0_rc_2023_11_10_types_method_descriptor_read_directory(int32_t, int32_t); - -__attribute__((__import_module__("wasi:filesystem/types@0.2.0-rc-2023-11-10"), __import_name__("[method]descriptor.sync"))) -extern void __wasm_import_wasi_filesystem_0_2_0_rc_2023_11_10_types_method_descriptor_sync(int32_t, int32_t); - -__attribute__((__import_module__("wasi:filesystem/types@0.2.0-rc-2023-11-10"), __import_name__("[method]descriptor.create-directory-at"))) -extern void __wasm_import_wasi_filesystem_0_2_0_rc_2023_11_10_types_method_descriptor_create_directory_at(int32_t, int32_t, int32_t, int32_t); - -__attribute__((__import_module__("wasi:filesystem/types@0.2.0-rc-2023-11-10"), __import_name__("[method]descriptor.stat"))) -extern void __wasm_import_wasi_filesystem_0_2_0_rc_2023_11_10_types_method_descriptor_stat(int32_t, int32_t); - -__attribute__((__import_module__("wasi:filesystem/types@0.2.0-rc-2023-11-10"), __import_name__("[method]descriptor.stat-at"))) -extern void __wasm_import_wasi_filesystem_0_2_0_rc_2023_11_10_types_method_descriptor_stat_at(int32_t, int32_t, int32_t, int32_t, int32_t); - -__attribute__((__import_module__("wasi:filesystem/types@0.2.0-rc-2023-11-10"), __import_name__("[method]descriptor.set-times-at"))) -extern void __wasm_import_wasi_filesystem_0_2_0_rc_2023_11_10_types_method_descriptor_set_times_at(int32_t, int32_t, int32_t, int32_t, int32_t, int64_t, int32_t, int32_t, int64_t, int32_t, int32_t); - -__attribute__((__import_module__("wasi:filesystem/types@0.2.0-rc-2023-11-10"), __import_name__("[method]descriptor.link-at"))) -extern void __wasm_import_wasi_filesystem_0_2_0_rc_2023_11_10_types_method_descriptor_link_at(int32_t, int32_t, int32_t, int32_t, int32_t, int32_t, int32_t, int32_t); - -__attribute__((__import_module__("wasi:filesystem/types@0.2.0-rc-2023-11-10"), __import_name__("[method]descriptor.open-at"))) -extern void __wasm_import_wasi_filesystem_0_2_0_rc_2023_11_10_types_method_descriptor_open_at(int32_t, int32_t, int32_t, int32_t, int32_t, int32_t, int32_t); - -__attribute__((__import_module__("wasi:filesystem/types@0.2.0-rc-2023-11-10"), __import_name__("[method]descriptor.readlink-at"))) -extern void __wasm_import_wasi_filesystem_0_2_0_rc_2023_11_10_types_method_descriptor_readlink_at(int32_t, int32_t, int32_t, int32_t); - -__attribute__((__import_module__("wasi:filesystem/types@0.2.0-rc-2023-11-10"), __import_name__("[method]descriptor.remove-directory-at"))) -extern void __wasm_import_wasi_filesystem_0_2_0_rc_2023_11_10_types_method_descriptor_remove_directory_at(int32_t, int32_t, int32_t, int32_t); - -__attribute__((__import_module__("wasi:filesystem/types@0.2.0-rc-2023-11-10"), __import_name__("[method]descriptor.rename-at"))) -extern void __wasm_import_wasi_filesystem_0_2_0_rc_2023_11_10_types_method_descriptor_rename_at(int32_t, int32_t, int32_t, int32_t, int32_t, int32_t, int32_t); - -__attribute__((__import_module__("wasi:filesystem/types@0.2.0-rc-2023-11-10"), __import_name__("[method]descriptor.symlink-at"))) -extern void __wasm_import_wasi_filesystem_0_2_0_rc_2023_11_10_types_method_descriptor_symlink_at(int32_t, int32_t, int32_t, int32_t, int32_t, int32_t); - -__attribute__((__import_module__("wasi:filesystem/types@0.2.0-rc-2023-11-10"), __import_name__("[method]descriptor.unlink-file-at"))) -extern void __wasm_import_wasi_filesystem_0_2_0_rc_2023_11_10_types_method_descriptor_unlink_file_at(int32_t, int32_t, int32_t, int32_t); - -__attribute__((__import_module__("wasi:filesystem/types@0.2.0-rc-2023-11-10"), __import_name__("[method]descriptor.is-same-object"))) -extern int32_t __wasm_import_wasi_filesystem_0_2_0_rc_2023_11_10_types_method_descriptor_is_same_object(int32_t, int32_t); - -__attribute__((__import_module__("wasi:filesystem/types@0.2.0-rc-2023-11-10"), __import_name__("[method]descriptor.metadata-hash"))) -extern void __wasm_import_wasi_filesystem_0_2_0_rc_2023_11_10_types_method_descriptor_metadata_hash(int32_t, int32_t); - -__attribute__((__import_module__("wasi:filesystem/types@0.2.0-rc-2023-11-10"), __import_name__("[method]descriptor.metadata-hash-at"))) -extern void __wasm_import_wasi_filesystem_0_2_0_rc_2023_11_10_types_method_descriptor_metadata_hash_at(int32_t, int32_t, int32_t, int32_t, int32_t); - -__attribute__((__import_module__("wasi:filesystem/types@0.2.0-rc-2023-11-10"), __import_name__("[method]directory-entry-stream.read-directory-entry"))) -extern void __wasm_import_wasi_filesystem_0_2_0_rc_2023_11_10_types_method_directory_entry_stream_read_directory_entry(int32_t, int32_t); - -__attribute__((__import_module__("wasi:filesystem/types@0.2.0-rc-2023-11-10"), __import_name__("filesystem-error-code"))) -extern void __wasm_import_wasi_filesystem_0_2_0_rc_2023_11_10_types_filesystem_error_code(int32_t, int32_t); - -__attribute__((__import_module__("wasi:filesystem/preopens@0.2.0-rc-2023-11-10"), __import_name__("get-directories"))) -extern void __wasm_import_wasi_filesystem_0_2_0_rc_2023_11_10_preopens_get_directories(int32_t); - -__attribute__((__import_module__("wasi:sockets/instance-network@0.2.0-rc-2023-11-10"), __import_name__("instance-network"))) -extern int32_t __wasm_import_wasi_sockets_0_2_0_rc_2023_11_10_instance_network_instance_network(void); - -__attribute__((__import_module__("wasi:sockets/udp@0.2.0-rc-2023-11-10"), __import_name__("[method]udp-socket.start-bind"))) -extern void __wasm_import_wasi_sockets_0_2_0_rc_2023_11_10_udp_method_udp_socket_start_bind(int32_t, int32_t, int32_t, int32_t, int32_t, int32_t, int32_t, int32_t, int32_t, int32_t, int32_t, int32_t, int32_t, int32_t, int32_t); - -__attribute__((__import_module__("wasi:sockets/udp@0.2.0-rc-2023-11-10"), __import_name__("[method]udp-socket.finish-bind"))) -extern void __wasm_import_wasi_sockets_0_2_0_rc_2023_11_10_udp_method_udp_socket_finish_bind(int32_t, int32_t); - -__attribute__((__import_module__("wasi:sockets/udp@0.2.0-rc-2023-11-10"), __import_name__("[method]udp-socket.stream"))) -extern void __wasm_import_wasi_sockets_0_2_0_rc_2023_11_10_udp_method_udp_socket_stream(int32_t, int32_t, int32_t, int32_t, int32_t, int32_t, int32_t, int32_t, int32_t, int32_t, int32_t, int32_t, int32_t, int32_t, int32_t); - -__attribute__((__import_module__("wasi:sockets/udp@0.2.0-rc-2023-11-10"), __import_name__("[method]udp-socket.local-address"))) -extern void __wasm_import_wasi_sockets_0_2_0_rc_2023_11_10_udp_method_udp_socket_local_address(int32_t, int32_t); - -__attribute__((__import_module__("wasi:sockets/udp@0.2.0-rc-2023-11-10"), __import_name__("[method]udp-socket.remote-address"))) -extern void __wasm_import_wasi_sockets_0_2_0_rc_2023_11_10_udp_method_udp_socket_remote_address(int32_t, int32_t); - -__attribute__((__import_module__("wasi:sockets/udp@0.2.0-rc-2023-11-10"), __import_name__("[method]udp-socket.address-family"))) -extern int32_t __wasm_import_wasi_sockets_0_2_0_rc_2023_11_10_udp_method_udp_socket_address_family(int32_t); - -__attribute__((__import_module__("wasi:sockets/udp@0.2.0-rc-2023-11-10"), __import_name__("[method]udp-socket.ipv6-only"))) -extern void __wasm_import_wasi_sockets_0_2_0_rc_2023_11_10_udp_method_udp_socket_ipv6_only(int32_t, int32_t); - -__attribute__((__import_module__("wasi:sockets/udp@0.2.0-rc-2023-11-10"), __import_name__("[method]udp-socket.set-ipv6-only"))) -extern void __wasm_import_wasi_sockets_0_2_0_rc_2023_11_10_udp_method_udp_socket_set_ipv6_only(int32_t, int32_t, int32_t); - -__attribute__((__import_module__("wasi:sockets/udp@0.2.0-rc-2023-11-10"), __import_name__("[method]udp-socket.unicast-hop-limit"))) -extern void __wasm_import_wasi_sockets_0_2_0_rc_2023_11_10_udp_method_udp_socket_unicast_hop_limit(int32_t, int32_t); - -__attribute__((__import_module__("wasi:sockets/udp@0.2.0-rc-2023-11-10"), __import_name__("[method]udp-socket.set-unicast-hop-limit"))) -extern void __wasm_import_wasi_sockets_0_2_0_rc_2023_11_10_udp_method_udp_socket_set_unicast_hop_limit(int32_t, int32_t, int32_t); - -__attribute__((__import_module__("wasi:sockets/udp@0.2.0-rc-2023-11-10"), __import_name__("[method]udp-socket.receive-buffer-size"))) -extern void __wasm_import_wasi_sockets_0_2_0_rc_2023_11_10_udp_method_udp_socket_receive_buffer_size(int32_t, int32_t); - -__attribute__((__import_module__("wasi:sockets/udp@0.2.0-rc-2023-11-10"), __import_name__("[method]udp-socket.set-receive-buffer-size"))) -extern void __wasm_import_wasi_sockets_0_2_0_rc_2023_11_10_udp_method_udp_socket_set_receive_buffer_size(int32_t, int64_t, int32_t); - -__attribute__((__import_module__("wasi:sockets/udp@0.2.0-rc-2023-11-10"), __import_name__("[method]udp-socket.send-buffer-size"))) -extern void __wasm_import_wasi_sockets_0_2_0_rc_2023_11_10_udp_method_udp_socket_send_buffer_size(int32_t, int32_t); - -__attribute__((__import_module__("wasi:sockets/udp@0.2.0-rc-2023-11-10"), __import_name__("[method]udp-socket.set-send-buffer-size"))) -extern void __wasm_import_wasi_sockets_0_2_0_rc_2023_11_10_udp_method_udp_socket_set_send_buffer_size(int32_t, int64_t, int32_t); - -__attribute__((__import_module__("wasi:sockets/udp@0.2.0-rc-2023-11-10"), __import_name__("[method]udp-socket.subscribe"))) -extern int32_t __wasm_import_wasi_sockets_0_2_0_rc_2023_11_10_udp_method_udp_socket_subscribe(int32_t); - -__attribute__((__import_module__("wasi:sockets/udp@0.2.0-rc-2023-11-10"), __import_name__("[method]incoming-datagram-stream.receive"))) -extern void __wasm_import_wasi_sockets_0_2_0_rc_2023_11_10_udp_method_incoming_datagram_stream_receive(int32_t, int64_t, int32_t); - -__attribute__((__import_module__("wasi:sockets/udp@0.2.0-rc-2023-11-10"), __import_name__("[method]incoming-datagram-stream.subscribe"))) -extern int32_t __wasm_import_wasi_sockets_0_2_0_rc_2023_11_10_udp_method_incoming_datagram_stream_subscribe(int32_t); - -__attribute__((__import_module__("wasi:sockets/udp@0.2.0-rc-2023-11-10"), __import_name__("[method]outgoing-datagram-stream.check-send"))) -extern void __wasm_import_wasi_sockets_0_2_0_rc_2023_11_10_udp_method_outgoing_datagram_stream_check_send(int32_t, int32_t); - -__attribute__((__import_module__("wasi:sockets/udp@0.2.0-rc-2023-11-10"), __import_name__("[method]outgoing-datagram-stream.send"))) -extern void __wasm_import_wasi_sockets_0_2_0_rc_2023_11_10_udp_method_outgoing_datagram_stream_send(int32_t, int32_t, int32_t, int32_t); - -__attribute__((__import_module__("wasi:sockets/udp@0.2.0-rc-2023-11-10"), __import_name__("[method]outgoing-datagram-stream.subscribe"))) -extern int32_t __wasm_import_wasi_sockets_0_2_0_rc_2023_11_10_udp_method_outgoing_datagram_stream_subscribe(int32_t); - -__attribute__((__import_module__("wasi:sockets/udp-create-socket@0.2.0-rc-2023-11-10"), __import_name__("create-udp-socket"))) -extern void __wasm_import_wasi_sockets_0_2_0_rc_2023_11_10_udp_create_socket_create_udp_socket(int32_t, int32_t); - -__attribute__((__import_module__("wasi:sockets/tcp@0.2.0-rc-2023-11-10"), __import_name__("[method]tcp-socket.start-bind"))) -extern void __wasm_import_wasi_sockets_0_2_0_rc_2023_11_10_tcp_method_tcp_socket_start_bind(int32_t, int32_t, int32_t, int32_t, int32_t, int32_t, int32_t, int32_t, int32_t, int32_t, int32_t, int32_t, int32_t, int32_t, int32_t); - -__attribute__((__import_module__("wasi:sockets/tcp@0.2.0-rc-2023-11-10"), __import_name__("[method]tcp-socket.finish-bind"))) -extern void __wasm_import_wasi_sockets_0_2_0_rc_2023_11_10_tcp_method_tcp_socket_finish_bind(int32_t, int32_t); - -__attribute__((__import_module__("wasi:sockets/tcp@0.2.0-rc-2023-11-10"), __import_name__("[method]tcp-socket.start-connect"))) -extern void __wasm_import_wasi_sockets_0_2_0_rc_2023_11_10_tcp_method_tcp_socket_start_connect(int32_t, int32_t, int32_t, int32_t, int32_t, int32_t, int32_t, int32_t, int32_t, int32_t, int32_t, int32_t, int32_t, int32_t, int32_t); - -__attribute__((__import_module__("wasi:sockets/tcp@0.2.0-rc-2023-11-10"), __import_name__("[method]tcp-socket.finish-connect"))) -extern void __wasm_import_wasi_sockets_0_2_0_rc_2023_11_10_tcp_method_tcp_socket_finish_connect(int32_t, int32_t); - -__attribute__((__import_module__("wasi:sockets/tcp@0.2.0-rc-2023-11-10"), __import_name__("[method]tcp-socket.start-listen"))) -extern void __wasm_import_wasi_sockets_0_2_0_rc_2023_11_10_tcp_method_tcp_socket_start_listen(int32_t, int32_t); - -__attribute__((__import_module__("wasi:sockets/tcp@0.2.0-rc-2023-11-10"), __import_name__("[method]tcp-socket.finish-listen"))) -extern void __wasm_import_wasi_sockets_0_2_0_rc_2023_11_10_tcp_method_tcp_socket_finish_listen(int32_t, int32_t); - -__attribute__((__import_module__("wasi:sockets/tcp@0.2.0-rc-2023-11-10"), __import_name__("[method]tcp-socket.accept"))) -extern void __wasm_import_wasi_sockets_0_2_0_rc_2023_11_10_tcp_method_tcp_socket_accept(int32_t, int32_t); - -__attribute__((__import_module__("wasi:sockets/tcp@0.2.0-rc-2023-11-10"), __import_name__("[method]tcp-socket.local-address"))) -extern void __wasm_import_wasi_sockets_0_2_0_rc_2023_11_10_tcp_method_tcp_socket_local_address(int32_t, int32_t); - -__attribute__((__import_module__("wasi:sockets/tcp@0.2.0-rc-2023-11-10"), __import_name__("[method]tcp-socket.remote-address"))) -extern void __wasm_import_wasi_sockets_0_2_0_rc_2023_11_10_tcp_method_tcp_socket_remote_address(int32_t, int32_t); - -__attribute__((__import_module__("wasi:sockets/tcp@0.2.0-rc-2023-11-10"), __import_name__("[method]tcp-socket.is-listening"))) -extern int32_t __wasm_import_wasi_sockets_0_2_0_rc_2023_11_10_tcp_method_tcp_socket_is_listening(int32_t); - -__attribute__((__import_module__("wasi:sockets/tcp@0.2.0-rc-2023-11-10"), __import_name__("[method]tcp-socket.address-family"))) -extern int32_t __wasm_import_wasi_sockets_0_2_0_rc_2023_11_10_tcp_method_tcp_socket_address_family(int32_t); - -__attribute__((__import_module__("wasi:sockets/tcp@0.2.0-rc-2023-11-10"), __import_name__("[method]tcp-socket.ipv6-only"))) -extern void __wasm_import_wasi_sockets_0_2_0_rc_2023_11_10_tcp_method_tcp_socket_ipv6_only(int32_t, int32_t); - -__attribute__((__import_module__("wasi:sockets/tcp@0.2.0-rc-2023-11-10"), __import_name__("[method]tcp-socket.set-ipv6-only"))) -extern void __wasm_import_wasi_sockets_0_2_0_rc_2023_11_10_tcp_method_tcp_socket_set_ipv6_only(int32_t, int32_t, int32_t); - -__attribute__((__import_module__("wasi:sockets/tcp@0.2.0-rc-2023-11-10"), __import_name__("[method]tcp-socket.set-listen-backlog-size"))) -extern void __wasm_import_wasi_sockets_0_2_0_rc_2023_11_10_tcp_method_tcp_socket_set_listen_backlog_size(int32_t, int64_t, int32_t); - -__attribute__((__import_module__("wasi:sockets/tcp@0.2.0-rc-2023-11-10"), __import_name__("[method]tcp-socket.keep-alive-enabled"))) -extern void __wasm_import_wasi_sockets_0_2_0_rc_2023_11_10_tcp_method_tcp_socket_keep_alive_enabled(int32_t, int32_t); - -__attribute__((__import_module__("wasi:sockets/tcp@0.2.0-rc-2023-11-10"), __import_name__("[method]tcp-socket.set-keep-alive-enabled"))) -extern void __wasm_import_wasi_sockets_0_2_0_rc_2023_11_10_tcp_method_tcp_socket_set_keep_alive_enabled(int32_t, int32_t, int32_t); - -__attribute__((__import_module__("wasi:sockets/tcp@0.2.0-rc-2023-11-10"), __import_name__("[method]tcp-socket.keep-alive-idle-time"))) -extern void __wasm_import_wasi_sockets_0_2_0_rc_2023_11_10_tcp_method_tcp_socket_keep_alive_idle_time(int32_t, int32_t); - -__attribute__((__import_module__("wasi:sockets/tcp@0.2.0-rc-2023-11-10"), __import_name__("[method]tcp-socket.set-keep-alive-idle-time"))) -extern void __wasm_import_wasi_sockets_0_2_0_rc_2023_11_10_tcp_method_tcp_socket_set_keep_alive_idle_time(int32_t, int64_t, int32_t); - -__attribute__((__import_module__("wasi:sockets/tcp@0.2.0-rc-2023-11-10"), __import_name__("[method]tcp-socket.keep-alive-interval"))) -extern void __wasm_import_wasi_sockets_0_2_0_rc_2023_11_10_tcp_method_tcp_socket_keep_alive_interval(int32_t, int32_t); - -__attribute__((__import_module__("wasi:sockets/tcp@0.2.0-rc-2023-11-10"), __import_name__("[method]tcp-socket.set-keep-alive-interval"))) -extern void __wasm_import_wasi_sockets_0_2_0_rc_2023_11_10_tcp_method_tcp_socket_set_keep_alive_interval(int32_t, int64_t, int32_t); - -__attribute__((__import_module__("wasi:sockets/tcp@0.2.0-rc-2023-11-10"), __import_name__("[method]tcp-socket.keep-alive-count"))) -extern void __wasm_import_wasi_sockets_0_2_0_rc_2023_11_10_tcp_method_tcp_socket_keep_alive_count(int32_t, int32_t); - -__attribute__((__import_module__("wasi:sockets/tcp@0.2.0-rc-2023-11-10"), __import_name__("[method]tcp-socket.set-keep-alive-count"))) -extern void __wasm_import_wasi_sockets_0_2_0_rc_2023_11_10_tcp_method_tcp_socket_set_keep_alive_count(int32_t, int32_t, int32_t); - -__attribute__((__import_module__("wasi:sockets/tcp@0.2.0-rc-2023-11-10"), __import_name__("[method]tcp-socket.hop-limit"))) -extern void __wasm_import_wasi_sockets_0_2_0_rc_2023_11_10_tcp_method_tcp_socket_hop_limit(int32_t, int32_t); - -__attribute__((__import_module__("wasi:sockets/tcp@0.2.0-rc-2023-11-10"), __import_name__("[method]tcp-socket.set-hop-limit"))) -extern void __wasm_import_wasi_sockets_0_2_0_rc_2023_11_10_tcp_method_tcp_socket_set_hop_limit(int32_t, int32_t, int32_t); - -__attribute__((__import_module__("wasi:sockets/tcp@0.2.0-rc-2023-11-10"), __import_name__("[method]tcp-socket.receive-buffer-size"))) -extern void __wasm_import_wasi_sockets_0_2_0_rc_2023_11_10_tcp_method_tcp_socket_receive_buffer_size(int32_t, int32_t); - -__attribute__((__import_module__("wasi:sockets/tcp@0.2.0-rc-2023-11-10"), __import_name__("[method]tcp-socket.set-receive-buffer-size"))) -extern void __wasm_import_wasi_sockets_0_2_0_rc_2023_11_10_tcp_method_tcp_socket_set_receive_buffer_size(int32_t, int64_t, int32_t); - -__attribute__((__import_module__("wasi:sockets/tcp@0.2.0-rc-2023-11-10"), __import_name__("[method]tcp-socket.send-buffer-size"))) -extern void __wasm_import_wasi_sockets_0_2_0_rc_2023_11_10_tcp_method_tcp_socket_send_buffer_size(int32_t, int32_t); - -__attribute__((__import_module__("wasi:sockets/tcp@0.2.0-rc-2023-11-10"), __import_name__("[method]tcp-socket.set-send-buffer-size"))) -extern void __wasm_import_wasi_sockets_0_2_0_rc_2023_11_10_tcp_method_tcp_socket_set_send_buffer_size(int32_t, int64_t, int32_t); - -__attribute__((__import_module__("wasi:sockets/tcp@0.2.0-rc-2023-11-10"), __import_name__("[method]tcp-socket.subscribe"))) -extern int32_t __wasm_import_wasi_sockets_0_2_0_rc_2023_11_10_tcp_method_tcp_socket_subscribe(int32_t); - -__attribute__((__import_module__("wasi:sockets/tcp@0.2.0-rc-2023-11-10"), __import_name__("[method]tcp-socket.shutdown"))) -extern void __wasm_import_wasi_sockets_0_2_0_rc_2023_11_10_tcp_method_tcp_socket_shutdown(int32_t, int32_t, int32_t); - -__attribute__((__import_module__("wasi:sockets/tcp-create-socket@0.2.0-rc-2023-11-10"), __import_name__("create-tcp-socket"))) -extern void __wasm_import_wasi_sockets_0_2_0_rc_2023_11_10_tcp_create_socket_create_tcp_socket(int32_t, int32_t); - -__attribute__((__import_module__("wasi:sockets/ip-name-lookup@0.2.0-rc-2023-11-10"), __import_name__("resolve-addresses"))) -extern void __wasm_import_wasi_sockets_0_2_0_rc_2023_11_10_ip_name_lookup_resolve_addresses(int32_t, int32_t, int32_t, int32_t); - -__attribute__((__import_module__("wasi:sockets/ip-name-lookup@0.2.0-rc-2023-11-10"), __import_name__("[method]resolve-address-stream.resolve-next-address"))) -extern void __wasm_import_wasi_sockets_0_2_0_rc_2023_11_10_ip_name_lookup_method_resolve_address_stream_resolve_next_address(int32_t, int32_t); - -__attribute__((__import_module__("wasi:sockets/ip-name-lookup@0.2.0-rc-2023-11-10"), __import_name__("[method]resolve-address-stream.subscribe"))) -extern int32_t __wasm_import_wasi_sockets_0_2_0_rc_2023_11_10_ip_name_lookup_method_resolve_address_stream_subscribe(int32_t); - -__attribute__((__import_module__("wasi:random/random@0.2.0-rc-2023-11-10"), __import_name__("get-random-bytes"))) -extern void __wasm_import_wasi_random_0_2_0_rc_2023_11_10_random_get_random_bytes(int64_t, int32_t); - -__attribute__((__import_module__("wasi:random/random@0.2.0-rc-2023-11-10"), __import_name__("get-random-u64"))) -extern int64_t __wasm_import_wasi_random_0_2_0_rc_2023_11_10_random_get_random_u64(void); - -__attribute__((__import_module__("wasi:random/insecure@0.2.0-rc-2023-11-10"), __import_name__("get-insecure-random-bytes"))) -extern void __wasm_import_wasi_random_0_2_0_rc_2023_11_10_insecure_get_insecure_random_bytes(int64_t, int32_t); - -__attribute__((__import_module__("wasi:random/insecure@0.2.0-rc-2023-11-10"), __import_name__("get-insecure-random-u64"))) -extern int64_t __wasm_import_wasi_random_0_2_0_rc_2023_11_10_insecure_get_insecure_random_u64(void); - -__attribute__((__import_module__("wasi:random/insecure-seed@0.2.0-rc-2023-11-10"), __import_name__("insecure-seed"))) -extern void __wasm_import_wasi_random_0_2_0_rc_2023_11_10_insecure_seed_insecure_seed(int32_t); - -__attribute__((__import_module__("wasi:http/types@0.2.0-rc-2023-12-05"), __import_name__("http-error-code"))) -extern void __wasm_import_wasi_http_0_2_0_rc_2023_12_05_types_http_error_code(int32_t, int32_t); - -__attribute__((__import_module__("wasi:http/types@0.2.0-rc-2023-12-05"), __import_name__("[constructor]fields"))) -extern int32_t __wasm_import_wasi_http_0_2_0_rc_2023_12_05_types_constructor_fields(void); - -__attribute__((__import_module__("wasi:http/types@0.2.0-rc-2023-12-05"), __import_name__("[static]fields.from-list"))) -extern void __wasm_import_wasi_http_0_2_0_rc_2023_12_05_types_static_fields_from_list(int32_t, int32_t, int32_t); - -__attribute__((__import_module__("wasi:http/types@0.2.0-rc-2023-12-05"), __import_name__("[method]fields.get"))) -extern void __wasm_import_wasi_http_0_2_0_rc_2023_12_05_types_method_fields_get(int32_t, int32_t, int32_t, int32_t); - -__attribute__((__import_module__("wasi:http/types@0.2.0-rc-2023-12-05"), __import_name__("[method]fields.has"))) -extern int32_t __wasm_import_wasi_http_0_2_0_rc_2023_12_05_types_method_fields_has(int32_t, int32_t, int32_t); - -__attribute__((__import_module__("wasi:http/types@0.2.0-rc-2023-12-05"), __import_name__("[method]fields.set"))) -extern void __wasm_import_wasi_http_0_2_0_rc_2023_12_05_types_method_fields_set(int32_t, int32_t, int32_t, int32_t, int32_t, int32_t); - -__attribute__((__import_module__("wasi:http/types@0.2.0-rc-2023-12-05"), __import_name__("[method]fields.delete"))) -extern void __wasm_import_wasi_http_0_2_0_rc_2023_12_05_types_method_fields_delete(int32_t, int32_t, int32_t, int32_t); - -__attribute__((__import_module__("wasi:http/types@0.2.0-rc-2023-12-05"), __import_name__("[method]fields.append"))) -extern void __wasm_import_wasi_http_0_2_0_rc_2023_12_05_types_method_fields_append(int32_t, int32_t, int32_t, int32_t, int32_t, int32_t); - -__attribute__((__import_module__("wasi:http/types@0.2.0-rc-2023-12-05"), __import_name__("[method]fields.entries"))) -extern void __wasm_import_wasi_http_0_2_0_rc_2023_12_05_types_method_fields_entries(int32_t, int32_t); - -__attribute__((__import_module__("wasi:http/types@0.2.0-rc-2023-12-05"), __import_name__("[method]fields.clone"))) -extern int32_t __wasm_import_wasi_http_0_2_0_rc_2023_12_05_types_method_fields_clone(int32_t); - -__attribute__((__import_module__("wasi:http/types@0.2.0-rc-2023-12-05"), __import_name__("[method]incoming-request.method"))) -extern void __wasm_import_wasi_http_0_2_0_rc_2023_12_05_types_method_incoming_request_method(int32_t, int32_t); - -__attribute__((__import_module__("wasi:http/types@0.2.0-rc-2023-12-05"), __import_name__("[method]incoming-request.path-with-query"))) -extern void __wasm_import_wasi_http_0_2_0_rc_2023_12_05_types_method_incoming_request_path_with_query(int32_t, int32_t); - -__attribute__((__import_module__("wasi:http/types@0.2.0-rc-2023-12-05"), __import_name__("[method]incoming-request.scheme"))) -extern void __wasm_import_wasi_http_0_2_0_rc_2023_12_05_types_method_incoming_request_scheme(int32_t, int32_t); - -__attribute__((__import_module__("wasi:http/types@0.2.0-rc-2023-12-05"), __import_name__("[method]incoming-request.authority"))) -extern void __wasm_import_wasi_http_0_2_0_rc_2023_12_05_types_method_incoming_request_authority(int32_t, int32_t); - -__attribute__((__import_module__("wasi:http/types@0.2.0-rc-2023-12-05"), __import_name__("[method]incoming-request.headers"))) -extern int32_t __wasm_import_wasi_http_0_2_0_rc_2023_12_05_types_method_incoming_request_headers(int32_t); - -__attribute__((__import_module__("wasi:http/types@0.2.0-rc-2023-12-05"), __import_name__("[method]incoming-request.consume"))) -extern void __wasm_import_wasi_http_0_2_0_rc_2023_12_05_types_method_incoming_request_consume(int32_t, int32_t); - -__attribute__((__import_module__("wasi:http/types@0.2.0-rc-2023-12-05"), __import_name__("[constructor]outgoing-request"))) -extern int32_t __wasm_import_wasi_http_0_2_0_rc_2023_12_05_types_constructor_outgoing_request(int32_t); - -__attribute__((__import_module__("wasi:http/types@0.2.0-rc-2023-12-05"), __import_name__("[method]outgoing-request.body"))) -extern void __wasm_import_wasi_http_0_2_0_rc_2023_12_05_types_method_outgoing_request_body(int32_t, int32_t); - -__attribute__((__import_module__("wasi:http/types@0.2.0-rc-2023-12-05"), __import_name__("[method]outgoing-request.method"))) -extern void __wasm_import_wasi_http_0_2_0_rc_2023_12_05_types_method_outgoing_request_method(int32_t, int32_t); - -__attribute__((__import_module__("wasi:http/types@0.2.0-rc-2023-12-05"), __import_name__("[method]outgoing-request.set-method"))) -extern int32_t __wasm_import_wasi_http_0_2_0_rc_2023_12_05_types_method_outgoing_request_set_method(int32_t, int32_t, int32_t, int32_t); - -__attribute__((__import_module__("wasi:http/types@0.2.0-rc-2023-12-05"), __import_name__("[method]outgoing-request.path-with-query"))) -extern void __wasm_import_wasi_http_0_2_0_rc_2023_12_05_types_method_outgoing_request_path_with_query(int32_t, int32_t); - -__attribute__((__import_module__("wasi:http/types@0.2.0-rc-2023-12-05"), __import_name__("[method]outgoing-request.set-path-with-query"))) -extern int32_t __wasm_import_wasi_http_0_2_0_rc_2023_12_05_types_method_outgoing_request_set_path_with_query(int32_t, int32_t, int32_t, int32_t); - -__attribute__((__import_module__("wasi:http/types@0.2.0-rc-2023-12-05"), __import_name__("[method]outgoing-request.scheme"))) -extern void __wasm_import_wasi_http_0_2_0_rc_2023_12_05_types_method_outgoing_request_scheme(int32_t, int32_t); - -__attribute__((__import_module__("wasi:http/types@0.2.0-rc-2023-12-05"), __import_name__("[method]outgoing-request.set-scheme"))) -extern int32_t __wasm_import_wasi_http_0_2_0_rc_2023_12_05_types_method_outgoing_request_set_scheme(int32_t, int32_t, int32_t, int32_t, int32_t); - -__attribute__((__import_module__("wasi:http/types@0.2.0-rc-2023-12-05"), __import_name__("[method]outgoing-request.authority"))) -extern void __wasm_import_wasi_http_0_2_0_rc_2023_12_05_types_method_outgoing_request_authority(int32_t, int32_t); - -__attribute__((__import_module__("wasi:http/types@0.2.0-rc-2023-12-05"), __import_name__("[method]outgoing-request.set-authority"))) -extern int32_t __wasm_import_wasi_http_0_2_0_rc_2023_12_05_types_method_outgoing_request_set_authority(int32_t, int32_t, int32_t, int32_t); - -__attribute__((__import_module__("wasi:http/types@0.2.0-rc-2023-12-05"), __import_name__("[method]outgoing-request.headers"))) -extern int32_t __wasm_import_wasi_http_0_2_0_rc_2023_12_05_types_method_outgoing_request_headers(int32_t); - -__attribute__((__import_module__("wasi:http/types@0.2.0-rc-2023-12-05"), __import_name__("[constructor]request-options"))) -extern int32_t __wasm_import_wasi_http_0_2_0_rc_2023_12_05_types_constructor_request_options(void); - -__attribute__((__import_module__("wasi:http/types@0.2.0-rc-2023-12-05"), __import_name__("[method]request-options.connect-timeout"))) -extern void __wasm_import_wasi_http_0_2_0_rc_2023_12_05_types_method_request_options_connect_timeout(int32_t, int32_t); - -__attribute__((__import_module__("wasi:http/types@0.2.0-rc-2023-12-05"), __import_name__("[method]request-options.set-connect-timeout"))) -extern int32_t __wasm_import_wasi_http_0_2_0_rc_2023_12_05_types_method_request_options_set_connect_timeout(int32_t, int32_t, int64_t); - -__attribute__((__import_module__("wasi:http/types@0.2.0-rc-2023-12-05"), __import_name__("[method]request-options.first-byte-timeout"))) -extern void __wasm_import_wasi_http_0_2_0_rc_2023_12_05_types_method_request_options_first_byte_timeout(int32_t, int32_t); - -__attribute__((__import_module__("wasi:http/types@0.2.0-rc-2023-12-05"), __import_name__("[method]request-options.set-first-byte-timeout"))) -extern int32_t __wasm_import_wasi_http_0_2_0_rc_2023_12_05_types_method_request_options_set_first_byte_timeout(int32_t, int32_t, int64_t); - -__attribute__((__import_module__("wasi:http/types@0.2.0-rc-2023-12-05"), __import_name__("[method]request-options.between-bytes-timeout"))) -extern void __wasm_import_wasi_http_0_2_0_rc_2023_12_05_types_method_request_options_between_bytes_timeout(int32_t, int32_t); - -__attribute__((__import_module__("wasi:http/types@0.2.0-rc-2023-12-05"), __import_name__("[method]request-options.set-between-bytes-timeout"))) -extern int32_t __wasm_import_wasi_http_0_2_0_rc_2023_12_05_types_method_request_options_set_between_bytes_timeout(int32_t, int32_t, int64_t); - -__attribute__((__import_module__("wasi:http/types@0.2.0-rc-2023-12-05"), __import_name__("[static]response-outparam.set"))) -extern void __wasm_import_wasi_http_0_2_0_rc_2023_12_05_types_static_response_outparam_set(int32_t, int32_t, int32_t, int32_t, int64_t, int32_t, int32_t, int32_t, int32_t); - -__attribute__((__import_module__("wasi:http/types@0.2.0-rc-2023-12-05"), __import_name__("[method]incoming-response.status"))) -extern int32_t __wasm_import_wasi_http_0_2_0_rc_2023_12_05_types_method_incoming_response_status(int32_t); - -__attribute__((__import_module__("wasi:http/types@0.2.0-rc-2023-12-05"), __import_name__("[method]incoming-response.headers"))) -extern int32_t __wasm_import_wasi_http_0_2_0_rc_2023_12_05_types_method_incoming_response_headers(int32_t); - -__attribute__((__import_module__("wasi:http/types@0.2.0-rc-2023-12-05"), __import_name__("[method]incoming-response.consume"))) -extern void __wasm_import_wasi_http_0_2_0_rc_2023_12_05_types_method_incoming_response_consume(int32_t, int32_t); - -__attribute__((__import_module__("wasi:http/types@0.2.0-rc-2023-12-05"), __import_name__("[method]incoming-body.stream"))) -extern void __wasm_import_wasi_http_0_2_0_rc_2023_12_05_types_method_incoming_body_stream(int32_t, int32_t); - -__attribute__((__import_module__("wasi:http/types@0.2.0-rc-2023-12-05"), __import_name__("[static]incoming-body.finish"))) -extern int32_t __wasm_import_wasi_http_0_2_0_rc_2023_12_05_types_static_incoming_body_finish(int32_t); - -__attribute__((__import_module__("wasi:http/types@0.2.0-rc-2023-12-05"), __import_name__("[method]future-trailers.subscribe"))) -extern int32_t __wasm_import_wasi_http_0_2_0_rc_2023_12_05_types_method_future_trailers_subscribe(int32_t); - -__attribute__((__import_module__("wasi:http/types@0.2.0-rc-2023-12-05"), __import_name__("[method]future-trailers.get"))) -extern void __wasm_import_wasi_http_0_2_0_rc_2023_12_05_types_method_future_trailers_get(int32_t, int32_t); - -__attribute__((__import_module__("wasi:http/types@0.2.0-rc-2023-12-05"), __import_name__("[constructor]outgoing-response"))) -extern int32_t __wasm_import_wasi_http_0_2_0_rc_2023_12_05_types_constructor_outgoing_response(int32_t); - -__attribute__((__import_module__("wasi:http/types@0.2.0-rc-2023-12-05"), __import_name__("[method]outgoing-response.status-code"))) -extern int32_t __wasm_import_wasi_http_0_2_0_rc_2023_12_05_types_method_outgoing_response_status_code(int32_t); - -__attribute__((__import_module__("wasi:http/types@0.2.0-rc-2023-12-05"), __import_name__("[method]outgoing-response.set-status-code"))) -extern int32_t __wasm_import_wasi_http_0_2_0_rc_2023_12_05_types_method_outgoing_response_set_status_code(int32_t, int32_t); - -__attribute__((__import_module__("wasi:http/types@0.2.0-rc-2023-12-05"), __import_name__("[method]outgoing-response.headers"))) -extern int32_t __wasm_import_wasi_http_0_2_0_rc_2023_12_05_types_method_outgoing_response_headers(int32_t); - -__attribute__((__import_module__("wasi:http/types@0.2.0-rc-2023-12-05"), __import_name__("[method]outgoing-response.body"))) -extern void __wasm_import_wasi_http_0_2_0_rc_2023_12_05_types_method_outgoing_response_body(int32_t, int32_t); - -__attribute__((__import_module__("wasi:http/types@0.2.0-rc-2023-12-05"), __import_name__("[method]outgoing-body.write"))) -extern void __wasm_import_wasi_http_0_2_0_rc_2023_12_05_types_method_outgoing_body_write(int32_t, int32_t); - -__attribute__((__import_module__("wasi:http/types@0.2.0-rc-2023-12-05"), __import_name__("[static]outgoing-body.finish"))) -extern void __wasm_import_wasi_http_0_2_0_rc_2023_12_05_types_static_outgoing_body_finish(int32_t, int32_t, int32_t, int32_t); - -__attribute__((__import_module__("wasi:http/types@0.2.0-rc-2023-12-05"), __import_name__("[method]future-incoming-response.subscribe"))) -extern int32_t __wasm_import_wasi_http_0_2_0_rc_2023_12_05_types_method_future_incoming_response_subscribe(int32_t); - -__attribute__((__import_module__("wasi:http/types@0.2.0-rc-2023-12-05"), __import_name__("[method]future-incoming-response.get"))) -extern void __wasm_import_wasi_http_0_2_0_rc_2023_12_05_types_method_future_incoming_response_get(int32_t, int32_t); - -__attribute__((__import_module__("wasi:http/outgoing-handler@0.2.0-rc-2023-12-05"), __import_name__("handle"))) -extern void __wasm_import_wasi_http_0_2_0_rc_2023_12_05_outgoing_handler_handle(int32_t, int32_t, int32_t, int32_t); - -__attribute__((__weak__, __export_name__("cabi_realloc"))) -void *cabi_realloc(void *ptr, size_t old_size, size_t align, size_t new_size) { - (void) old_size; - if (new_size == 0) return (void*) align; - void *ret = realloc(ptr, new_size); - if (!ret) abort(); - return ret; -} - -// Helper Functions - -void bindings_tuple2_string_string_free(bindings_tuple2_string_string_t *ptr) { - bindings_string_free(&ptr->f0); - bindings_string_free(&ptr->f1); -} - -void bindings_list_tuple2_string_string_free(bindings_list_tuple2_string_string_t *ptr) { - for (size_t i = 0; i < ptr->len; i++) { - bindings_tuple2_string_string_free(&ptr->ptr[i]); - } - if (ptr->len > 0) { - free(ptr->ptr); - } -} - -void bindings_list_string_free(bindings_list_string_t *ptr) { - for (size_t i = 0; i < ptr->len; i++) { - bindings_string_free(&ptr->ptr[i]); - } - if (ptr->len > 0) { - free(ptr->ptr); - } -} - -void bindings_option_string_free(bindings_option_string_t *ptr) { - if (ptr->is_some) { - bindings_string_free(&ptr->val); - } -} - -void wasi_cli_0_2_0_rc_2023_12_05_exit_result_void_void_free(wasi_cli_0_2_0_rc_2023_12_05_exit_result_void_void_t *ptr) { - if (!ptr->is_err) { - } -} - -__attribute__((__import_module__("wasi:io/error@0.2.0-rc-2023-11-10"), __import_name__("[resource-drop]error"))) -extern void __wasm_import_wasi_io_0_2_0_rc_2023_11_10_error_error_drop(int32_t handle); - -void wasi_io_0_2_0_rc_2023_11_10_error_error_drop_own(wasi_io_0_2_0_rc_2023_11_10_error_own_error_t handle) { - __wasm_import_wasi_io_0_2_0_rc_2023_11_10_error_error_drop(handle.__handle); -} - -void wasi_io_0_2_0_rc_2023_11_10_error_error_drop_borrow(wasi_io_0_2_0_rc_2023_11_10_error_own_error_t handle) { - __wasm_import_wasi_io_0_2_0_rc_2023_11_10_error_error_drop(handle.__handle); -} - -wasi_io_0_2_0_rc_2023_11_10_error_borrow_error_t wasi_io_0_2_0_rc_2023_11_10_error_borrow_error(wasi_io_0_2_0_rc_2023_11_10_error_own_error_t arg) { - return (wasi_io_0_2_0_rc_2023_11_10_error_borrow_error_t) { arg.__handle }; -} - -__attribute__((__import_module__("wasi:io/poll@0.2.0-rc-2023-11-10"), __import_name__("[resource-drop]pollable"))) -extern void __wasm_import_wasi_io_0_2_0_rc_2023_11_10_poll_pollable_drop(int32_t handle); - -void wasi_io_0_2_0_rc_2023_11_10_poll_pollable_drop_own(wasi_io_0_2_0_rc_2023_11_10_poll_own_pollable_t handle) { - __wasm_import_wasi_io_0_2_0_rc_2023_11_10_poll_pollable_drop(handle.__handle); -} - -void wasi_io_0_2_0_rc_2023_11_10_poll_pollable_drop_borrow(wasi_io_0_2_0_rc_2023_11_10_poll_own_pollable_t handle) { - __wasm_import_wasi_io_0_2_0_rc_2023_11_10_poll_pollable_drop(handle.__handle); -} - -wasi_io_0_2_0_rc_2023_11_10_poll_borrow_pollable_t wasi_io_0_2_0_rc_2023_11_10_poll_borrow_pollable(wasi_io_0_2_0_rc_2023_11_10_poll_own_pollable_t arg) { - return (wasi_io_0_2_0_rc_2023_11_10_poll_borrow_pollable_t) { arg.__handle }; -} - -void wasi_io_0_2_0_rc_2023_11_10_poll_list_borrow_pollable_free(wasi_io_0_2_0_rc_2023_11_10_poll_list_borrow_pollable_t *ptr) { - for (size_t i = 0; i < ptr->len; i++) { - } - if (ptr->len > 0) { - free(ptr->ptr); - } -} - -void bindings_list_u32_free(bindings_list_u32_t *ptr) { - for (size_t i = 0; i < ptr->len; i++) { - } - if (ptr->len > 0) { - free(ptr->ptr); - } -} - -void wasi_io_0_2_0_rc_2023_11_10_streams_stream_error_free(wasi_io_0_2_0_rc_2023_11_10_streams_stream_error_t *ptr) { - switch ((int32_t) ptr->tag) { - case 0: { - break; - } - } -} - -__attribute__((__import_module__("wasi:io/streams@0.2.0-rc-2023-11-10"), __import_name__("[resource-drop]input-stream"))) -extern void __wasm_import_wasi_io_0_2_0_rc_2023_11_10_streams_input_stream_drop(int32_t handle); - -void wasi_io_0_2_0_rc_2023_11_10_streams_input_stream_drop_own(wasi_io_0_2_0_rc_2023_11_10_streams_own_input_stream_t handle) { - __wasm_import_wasi_io_0_2_0_rc_2023_11_10_streams_input_stream_drop(handle.__handle); -} - -void wasi_io_0_2_0_rc_2023_11_10_streams_input_stream_drop_borrow(wasi_io_0_2_0_rc_2023_11_10_streams_own_input_stream_t handle) { - __wasm_import_wasi_io_0_2_0_rc_2023_11_10_streams_input_stream_drop(handle.__handle); -} - -wasi_io_0_2_0_rc_2023_11_10_streams_borrow_input_stream_t wasi_io_0_2_0_rc_2023_11_10_streams_borrow_input_stream(wasi_io_0_2_0_rc_2023_11_10_streams_own_input_stream_t arg) { - return (wasi_io_0_2_0_rc_2023_11_10_streams_borrow_input_stream_t) { arg.__handle }; -} - -__attribute__((__import_module__("wasi:io/streams@0.2.0-rc-2023-11-10"), __import_name__("[resource-drop]output-stream"))) -extern void __wasm_import_wasi_io_0_2_0_rc_2023_11_10_streams_output_stream_drop(int32_t handle); - -void wasi_io_0_2_0_rc_2023_11_10_streams_output_stream_drop_own(wasi_io_0_2_0_rc_2023_11_10_streams_own_output_stream_t handle) { - __wasm_import_wasi_io_0_2_0_rc_2023_11_10_streams_output_stream_drop(handle.__handle); -} - -void wasi_io_0_2_0_rc_2023_11_10_streams_output_stream_drop_borrow(wasi_io_0_2_0_rc_2023_11_10_streams_own_output_stream_t handle) { - __wasm_import_wasi_io_0_2_0_rc_2023_11_10_streams_output_stream_drop(handle.__handle); -} - -wasi_io_0_2_0_rc_2023_11_10_streams_borrow_output_stream_t wasi_io_0_2_0_rc_2023_11_10_streams_borrow_output_stream(wasi_io_0_2_0_rc_2023_11_10_streams_own_output_stream_t arg) { - return (wasi_io_0_2_0_rc_2023_11_10_streams_borrow_output_stream_t) { arg.__handle }; -} - -void bindings_list_u8_free(bindings_list_u8_t *ptr) { - for (size_t i = 0; i < ptr->len; i++) { - } - if (ptr->len > 0) { - free(ptr->ptr); - } -} - -void wasi_io_0_2_0_rc_2023_11_10_streams_result_list_u8_stream_error_free(wasi_io_0_2_0_rc_2023_11_10_streams_result_list_u8_stream_error_t *ptr) { - if (!ptr->is_err) { - bindings_list_u8_free(&ptr->val.ok); - } else { - wasi_io_0_2_0_rc_2023_11_10_streams_stream_error_free(&ptr->val.err); - } -} - -void wasi_io_0_2_0_rc_2023_11_10_streams_result_u64_stream_error_free(wasi_io_0_2_0_rc_2023_11_10_streams_result_u64_stream_error_t *ptr) { - if (!ptr->is_err) { - } else { - wasi_io_0_2_0_rc_2023_11_10_streams_stream_error_free(&ptr->val.err); - } -} - -void wasi_io_0_2_0_rc_2023_11_10_streams_result_void_stream_error_free(wasi_io_0_2_0_rc_2023_11_10_streams_result_void_stream_error_t *ptr) { - if (!ptr->is_err) { - } else { - wasi_io_0_2_0_rc_2023_11_10_streams_stream_error_free(&ptr->val.err); - } -} - -__attribute__((__import_module__("wasi:cli/terminal-input@0.2.0-rc-2023-12-05"), __import_name__("[resource-drop]terminal-input"))) -extern void __wasm_import_wasi_cli_0_2_0_rc_2023_12_05_terminal_input_terminal_input_drop(int32_t handle); - -void wasi_cli_0_2_0_rc_2023_12_05_terminal_input_terminal_input_drop_own(wasi_cli_0_2_0_rc_2023_12_05_terminal_input_own_terminal_input_t handle) { - __wasm_import_wasi_cli_0_2_0_rc_2023_12_05_terminal_input_terminal_input_drop(handle.__handle); -} - -void wasi_cli_0_2_0_rc_2023_12_05_terminal_input_terminal_input_drop_borrow(wasi_cli_0_2_0_rc_2023_12_05_terminal_input_own_terminal_input_t handle) { - __wasm_import_wasi_cli_0_2_0_rc_2023_12_05_terminal_input_terminal_input_drop(handle.__handle); -} - -wasi_cli_0_2_0_rc_2023_12_05_terminal_input_borrow_terminal_input_t wasi_cli_0_2_0_rc_2023_12_05_terminal_input_borrow_terminal_input(wasi_cli_0_2_0_rc_2023_12_05_terminal_input_own_terminal_input_t arg) { - return (wasi_cli_0_2_0_rc_2023_12_05_terminal_input_borrow_terminal_input_t) { arg.__handle }; -} - -__attribute__((__import_module__("wasi:cli/terminal-output@0.2.0-rc-2023-12-05"), __import_name__("[resource-drop]terminal-output"))) -extern void __wasm_import_wasi_cli_0_2_0_rc_2023_12_05_terminal_output_terminal_output_drop(int32_t handle); - -void wasi_cli_0_2_0_rc_2023_12_05_terminal_output_terminal_output_drop_own(wasi_cli_0_2_0_rc_2023_12_05_terminal_output_own_terminal_output_t handle) { - __wasm_import_wasi_cli_0_2_0_rc_2023_12_05_terminal_output_terminal_output_drop(handle.__handle); -} - -void wasi_cli_0_2_0_rc_2023_12_05_terminal_output_terminal_output_drop_borrow(wasi_cli_0_2_0_rc_2023_12_05_terminal_output_own_terminal_output_t handle) { - __wasm_import_wasi_cli_0_2_0_rc_2023_12_05_terminal_output_terminal_output_drop(handle.__handle); -} - -wasi_cli_0_2_0_rc_2023_12_05_terminal_output_borrow_terminal_output_t wasi_cli_0_2_0_rc_2023_12_05_terminal_output_borrow_terminal_output(wasi_cli_0_2_0_rc_2023_12_05_terminal_output_own_terminal_output_t arg) { - return (wasi_cli_0_2_0_rc_2023_12_05_terminal_output_borrow_terminal_output_t) { arg.__handle }; -} - -void wasi_cli_0_2_0_rc_2023_12_05_terminal_stdin_option_own_terminal_input_free(wasi_cli_0_2_0_rc_2023_12_05_terminal_stdin_option_own_terminal_input_t *ptr) { - if (ptr->is_some) { - } -} - -void wasi_cli_0_2_0_rc_2023_12_05_terminal_stdout_option_own_terminal_output_free(wasi_cli_0_2_0_rc_2023_12_05_terminal_stdout_option_own_terminal_output_t *ptr) { - if (ptr->is_some) { - } -} - -void wasi_cli_0_2_0_rc_2023_12_05_terminal_stderr_option_own_terminal_output_free(wasi_cli_0_2_0_rc_2023_12_05_terminal_stderr_option_own_terminal_output_t *ptr) { - if (ptr->is_some) { - } -} - -void wasi_filesystem_0_2_0_rc_2023_11_10_types_option_datetime_free(wasi_filesystem_0_2_0_rc_2023_11_10_types_option_datetime_t *ptr) { - if (ptr->is_some) { - } -} - -void wasi_filesystem_0_2_0_rc_2023_11_10_types_descriptor_stat_free(wasi_filesystem_0_2_0_rc_2023_11_10_types_descriptor_stat_t *ptr) { - wasi_filesystem_0_2_0_rc_2023_11_10_types_option_datetime_free(&ptr->data_access_timestamp); - wasi_filesystem_0_2_0_rc_2023_11_10_types_option_datetime_free(&ptr->data_modification_timestamp); - wasi_filesystem_0_2_0_rc_2023_11_10_types_option_datetime_free(&ptr->status_change_timestamp); -} - -void wasi_filesystem_0_2_0_rc_2023_11_10_types_new_timestamp_free(wasi_filesystem_0_2_0_rc_2023_11_10_types_new_timestamp_t *ptr) { - switch ((int32_t) ptr->tag) { - case 2: { - break; - } - } -} - -void wasi_filesystem_0_2_0_rc_2023_11_10_types_directory_entry_free(wasi_filesystem_0_2_0_rc_2023_11_10_types_directory_entry_t *ptr) { - bindings_string_free(&ptr->name); -} - -__attribute__((__import_module__("wasi:filesystem/types@0.2.0-rc-2023-11-10"), __import_name__("[resource-drop]descriptor"))) -extern void __wasm_import_wasi_filesystem_0_2_0_rc_2023_11_10_types_descriptor_drop(int32_t handle); - -void wasi_filesystem_0_2_0_rc_2023_11_10_types_descriptor_drop_own(wasi_filesystem_0_2_0_rc_2023_11_10_types_own_descriptor_t handle) { - __wasm_import_wasi_filesystem_0_2_0_rc_2023_11_10_types_descriptor_drop(handle.__handle); -} - -void wasi_filesystem_0_2_0_rc_2023_11_10_types_descriptor_drop_borrow(wasi_filesystem_0_2_0_rc_2023_11_10_types_own_descriptor_t handle) { - __wasm_import_wasi_filesystem_0_2_0_rc_2023_11_10_types_descriptor_drop(handle.__handle); -} - -wasi_filesystem_0_2_0_rc_2023_11_10_types_borrow_descriptor_t wasi_filesystem_0_2_0_rc_2023_11_10_types_borrow_descriptor(wasi_filesystem_0_2_0_rc_2023_11_10_types_own_descriptor_t arg) { - return (wasi_filesystem_0_2_0_rc_2023_11_10_types_borrow_descriptor_t) { arg.__handle }; -} - -__attribute__((__import_module__("wasi:filesystem/types@0.2.0-rc-2023-11-10"), __import_name__("[resource-drop]directory-entry-stream"))) -extern void __wasm_import_wasi_filesystem_0_2_0_rc_2023_11_10_types_directory_entry_stream_drop(int32_t handle); - -void wasi_filesystem_0_2_0_rc_2023_11_10_types_directory_entry_stream_drop_own(wasi_filesystem_0_2_0_rc_2023_11_10_types_own_directory_entry_stream_t handle) { - __wasm_import_wasi_filesystem_0_2_0_rc_2023_11_10_types_directory_entry_stream_drop(handle.__handle); -} - -void wasi_filesystem_0_2_0_rc_2023_11_10_types_directory_entry_stream_drop_borrow(wasi_filesystem_0_2_0_rc_2023_11_10_types_own_directory_entry_stream_t handle) { - __wasm_import_wasi_filesystem_0_2_0_rc_2023_11_10_types_directory_entry_stream_drop(handle.__handle); -} - -wasi_filesystem_0_2_0_rc_2023_11_10_types_borrow_directory_entry_stream_t wasi_filesystem_0_2_0_rc_2023_11_10_types_borrow_directory_entry_stream(wasi_filesystem_0_2_0_rc_2023_11_10_types_own_directory_entry_stream_t arg) { - return (wasi_filesystem_0_2_0_rc_2023_11_10_types_borrow_directory_entry_stream_t) { arg.__handle }; -} - -void wasi_filesystem_0_2_0_rc_2023_11_10_types_result_own_input_stream_error_code_free(wasi_filesystem_0_2_0_rc_2023_11_10_types_result_own_input_stream_error_code_t *ptr) { - if (!ptr->is_err) { - } else { - } -} - -void wasi_filesystem_0_2_0_rc_2023_11_10_types_result_own_output_stream_error_code_free(wasi_filesystem_0_2_0_rc_2023_11_10_types_result_own_output_stream_error_code_t *ptr) { - if (!ptr->is_err) { - } else { - } -} - -void wasi_filesystem_0_2_0_rc_2023_11_10_types_result_void_error_code_free(wasi_filesystem_0_2_0_rc_2023_11_10_types_result_void_error_code_t *ptr) { - if (!ptr->is_err) { - } else { - } -} - -void wasi_filesystem_0_2_0_rc_2023_11_10_types_result_descriptor_flags_error_code_free(wasi_filesystem_0_2_0_rc_2023_11_10_types_result_descriptor_flags_error_code_t *ptr) { - if (!ptr->is_err) { - } else { - } -} - -void wasi_filesystem_0_2_0_rc_2023_11_10_types_result_descriptor_type_error_code_free(wasi_filesystem_0_2_0_rc_2023_11_10_types_result_descriptor_type_error_code_t *ptr) { - if (!ptr->is_err) { - } else { - } -} - -void wasi_filesystem_0_2_0_rc_2023_11_10_types_result_tuple2_list_u8_bool_error_code_free(wasi_filesystem_0_2_0_rc_2023_11_10_types_result_tuple2_list_u8_bool_error_code_t *ptr) { - if (!ptr->is_err) { - } else { - } -} - -void wasi_filesystem_0_2_0_rc_2023_11_10_types_result_filesize_error_code_free(wasi_filesystem_0_2_0_rc_2023_11_10_types_result_filesize_error_code_t *ptr) { - if (!ptr->is_err) { - } else { - } -} - -void wasi_filesystem_0_2_0_rc_2023_11_10_types_result_own_directory_entry_stream_error_code_free(wasi_filesystem_0_2_0_rc_2023_11_10_types_result_own_directory_entry_stream_error_code_t *ptr) { - if (!ptr->is_err) { - } else { - } -} - -void wasi_filesystem_0_2_0_rc_2023_11_10_types_result_descriptor_stat_error_code_free(wasi_filesystem_0_2_0_rc_2023_11_10_types_result_descriptor_stat_error_code_t *ptr) { - if (!ptr->is_err) { - wasi_filesystem_0_2_0_rc_2023_11_10_types_descriptor_stat_free(&ptr->val.ok); - } else { - } -} - -void wasi_filesystem_0_2_0_rc_2023_11_10_types_result_own_descriptor_error_code_free(wasi_filesystem_0_2_0_rc_2023_11_10_types_result_own_descriptor_error_code_t *ptr) { - if (!ptr->is_err) { - } else { - } -} - -void wasi_filesystem_0_2_0_rc_2023_11_10_types_result_string_error_code_free(wasi_filesystem_0_2_0_rc_2023_11_10_types_result_string_error_code_t *ptr) { - if (!ptr->is_err) { - bindings_string_free(&ptr->val.ok); - } else { - } -} - -void wasi_filesystem_0_2_0_rc_2023_11_10_types_result_metadata_hash_value_error_code_free(wasi_filesystem_0_2_0_rc_2023_11_10_types_result_metadata_hash_value_error_code_t *ptr) { - if (!ptr->is_err) { - } else { - } -} - -void wasi_filesystem_0_2_0_rc_2023_11_10_types_option_directory_entry_free(wasi_filesystem_0_2_0_rc_2023_11_10_types_option_directory_entry_t *ptr) { - if (ptr->is_some) { - wasi_filesystem_0_2_0_rc_2023_11_10_types_directory_entry_free(&ptr->val); - } -} - -void wasi_filesystem_0_2_0_rc_2023_11_10_types_result_option_directory_entry_error_code_free(wasi_filesystem_0_2_0_rc_2023_11_10_types_result_option_directory_entry_error_code_t *ptr) { - if (!ptr->is_err) { - wasi_filesystem_0_2_0_rc_2023_11_10_types_option_directory_entry_free(&ptr->val.ok); - } else { - } -} - -void wasi_filesystem_0_2_0_rc_2023_11_10_types_option_error_code_free(wasi_filesystem_0_2_0_rc_2023_11_10_types_option_error_code_t *ptr) { - if (ptr->is_some) { - } -} - -void wasi_filesystem_0_2_0_rc_2023_11_10_preopens_tuple2_own_descriptor_string_free(wasi_filesystem_0_2_0_rc_2023_11_10_preopens_tuple2_own_descriptor_string_t *ptr) { - bindings_string_free(&ptr->f1); -} - -void wasi_filesystem_0_2_0_rc_2023_11_10_preopens_list_tuple2_own_descriptor_string_free(wasi_filesystem_0_2_0_rc_2023_11_10_preopens_list_tuple2_own_descriptor_string_t *ptr) { - for (size_t i = 0; i < ptr->len; i++) { - wasi_filesystem_0_2_0_rc_2023_11_10_preopens_tuple2_own_descriptor_string_free(&ptr->ptr[i]); - } - if (ptr->len > 0) { - free(ptr->ptr); - } -} - -__attribute__((__import_module__("wasi:sockets/network@0.2.0-rc-2023-11-10"), __import_name__("[resource-drop]network"))) -extern void __wasm_import_wasi_sockets_0_2_0_rc_2023_11_10_network_network_drop(int32_t handle); - -void wasi_sockets_0_2_0_rc_2023_11_10_network_network_drop_own(wasi_sockets_0_2_0_rc_2023_11_10_network_own_network_t handle) { - __wasm_import_wasi_sockets_0_2_0_rc_2023_11_10_network_network_drop(handle.__handle); -} - -void wasi_sockets_0_2_0_rc_2023_11_10_network_network_drop_borrow(wasi_sockets_0_2_0_rc_2023_11_10_network_own_network_t handle) { - __wasm_import_wasi_sockets_0_2_0_rc_2023_11_10_network_network_drop(handle.__handle); -} - -wasi_sockets_0_2_0_rc_2023_11_10_network_borrow_network_t wasi_sockets_0_2_0_rc_2023_11_10_network_borrow_network(wasi_sockets_0_2_0_rc_2023_11_10_network_own_network_t arg) { - return (wasi_sockets_0_2_0_rc_2023_11_10_network_borrow_network_t) { arg.__handle }; -} - -void wasi_sockets_0_2_0_rc_2023_11_10_network_ip_address_free(wasi_sockets_0_2_0_rc_2023_11_10_network_ip_address_t *ptr) { - switch ((int32_t) ptr->tag) { - case 0: { - break; - } - case 1: { - break; - } - } -} - -void wasi_sockets_0_2_0_rc_2023_11_10_network_ip_socket_address_free(wasi_sockets_0_2_0_rc_2023_11_10_network_ip_socket_address_t *ptr) { - switch ((int32_t) ptr->tag) { - case 0: { - break; - } - case 1: { - break; - } - } -} - -void wasi_sockets_0_2_0_rc_2023_11_10_udp_ip_socket_address_free(wasi_sockets_0_2_0_rc_2023_11_10_udp_ip_socket_address_t *ptr) { - wasi_sockets_0_2_0_rc_2023_11_10_network_ip_socket_address_free(ptr); -} - -void wasi_sockets_0_2_0_rc_2023_11_10_udp_incoming_datagram_free(wasi_sockets_0_2_0_rc_2023_11_10_udp_incoming_datagram_t *ptr) { - wasi_sockets_0_2_0_rc_2023_11_10_udp_ip_socket_address_free(&ptr->remote_address); -} - -void wasi_sockets_0_2_0_rc_2023_11_10_udp_option_ip_socket_address_free(wasi_sockets_0_2_0_rc_2023_11_10_udp_option_ip_socket_address_t *ptr) { - if (ptr->is_some) { - wasi_sockets_0_2_0_rc_2023_11_10_udp_ip_socket_address_free(&ptr->val); - } -} - -void wasi_sockets_0_2_0_rc_2023_11_10_udp_outgoing_datagram_free(wasi_sockets_0_2_0_rc_2023_11_10_udp_outgoing_datagram_t *ptr) { - wasi_sockets_0_2_0_rc_2023_11_10_udp_option_ip_socket_address_free(&ptr->remote_address); -} - -__attribute__((__import_module__("wasi:sockets/udp@0.2.0-rc-2023-11-10"), __import_name__("[resource-drop]udp-socket"))) -extern void __wasm_import_wasi_sockets_0_2_0_rc_2023_11_10_udp_udp_socket_drop(int32_t handle); - -void wasi_sockets_0_2_0_rc_2023_11_10_udp_udp_socket_drop_own(wasi_sockets_0_2_0_rc_2023_11_10_udp_own_udp_socket_t handle) { - __wasm_import_wasi_sockets_0_2_0_rc_2023_11_10_udp_udp_socket_drop(handle.__handle); -} - -void wasi_sockets_0_2_0_rc_2023_11_10_udp_udp_socket_drop_borrow(wasi_sockets_0_2_0_rc_2023_11_10_udp_own_udp_socket_t handle) { - __wasm_import_wasi_sockets_0_2_0_rc_2023_11_10_udp_udp_socket_drop(handle.__handle); -} - -wasi_sockets_0_2_0_rc_2023_11_10_udp_borrow_udp_socket_t wasi_sockets_0_2_0_rc_2023_11_10_udp_borrow_udp_socket(wasi_sockets_0_2_0_rc_2023_11_10_udp_own_udp_socket_t arg) { - return (wasi_sockets_0_2_0_rc_2023_11_10_udp_borrow_udp_socket_t) { arg.__handle }; -} - -__attribute__((__import_module__("wasi:sockets/udp@0.2.0-rc-2023-11-10"), __import_name__("[resource-drop]incoming-datagram-stream"))) -extern void __wasm_import_wasi_sockets_0_2_0_rc_2023_11_10_udp_incoming_datagram_stream_drop(int32_t handle); - -void wasi_sockets_0_2_0_rc_2023_11_10_udp_incoming_datagram_stream_drop_own(wasi_sockets_0_2_0_rc_2023_11_10_udp_own_incoming_datagram_stream_t handle) { - __wasm_import_wasi_sockets_0_2_0_rc_2023_11_10_udp_incoming_datagram_stream_drop(handle.__handle); -} - -void wasi_sockets_0_2_0_rc_2023_11_10_udp_incoming_datagram_stream_drop_borrow(wasi_sockets_0_2_0_rc_2023_11_10_udp_own_incoming_datagram_stream_t handle) { - __wasm_import_wasi_sockets_0_2_0_rc_2023_11_10_udp_incoming_datagram_stream_drop(handle.__handle); -} - -wasi_sockets_0_2_0_rc_2023_11_10_udp_borrow_incoming_datagram_stream_t wasi_sockets_0_2_0_rc_2023_11_10_udp_borrow_incoming_datagram_stream(wasi_sockets_0_2_0_rc_2023_11_10_udp_own_incoming_datagram_stream_t arg) { - return (wasi_sockets_0_2_0_rc_2023_11_10_udp_borrow_incoming_datagram_stream_t) { arg.__handle }; -} - -__attribute__((__import_module__("wasi:sockets/udp@0.2.0-rc-2023-11-10"), __import_name__("[resource-drop]outgoing-datagram-stream"))) -extern void __wasm_import_wasi_sockets_0_2_0_rc_2023_11_10_udp_outgoing_datagram_stream_drop(int32_t handle); - -void wasi_sockets_0_2_0_rc_2023_11_10_udp_outgoing_datagram_stream_drop_own(wasi_sockets_0_2_0_rc_2023_11_10_udp_own_outgoing_datagram_stream_t handle) { - __wasm_import_wasi_sockets_0_2_0_rc_2023_11_10_udp_outgoing_datagram_stream_drop(handle.__handle); -} - -void wasi_sockets_0_2_0_rc_2023_11_10_udp_outgoing_datagram_stream_drop_borrow(wasi_sockets_0_2_0_rc_2023_11_10_udp_own_outgoing_datagram_stream_t handle) { - __wasm_import_wasi_sockets_0_2_0_rc_2023_11_10_udp_outgoing_datagram_stream_drop(handle.__handle); -} - -wasi_sockets_0_2_0_rc_2023_11_10_udp_borrow_outgoing_datagram_stream_t wasi_sockets_0_2_0_rc_2023_11_10_udp_borrow_outgoing_datagram_stream(wasi_sockets_0_2_0_rc_2023_11_10_udp_own_outgoing_datagram_stream_t arg) { - return (wasi_sockets_0_2_0_rc_2023_11_10_udp_borrow_outgoing_datagram_stream_t) { arg.__handle }; -} - -void wasi_sockets_0_2_0_rc_2023_11_10_udp_result_void_error_code_free(wasi_sockets_0_2_0_rc_2023_11_10_udp_result_void_error_code_t *ptr) { - if (!ptr->is_err) { - } else { - } -} - -void wasi_sockets_0_2_0_rc_2023_11_10_udp_result_tuple2_own_incoming_datagram_stream_own_outgoing_datagram_stream_error_code_free(wasi_sockets_0_2_0_rc_2023_11_10_udp_result_tuple2_own_incoming_datagram_stream_own_outgoing_datagram_stream_error_code_t *ptr) { - if (!ptr->is_err) { - } else { - } -} - -void wasi_sockets_0_2_0_rc_2023_11_10_udp_result_ip_socket_address_error_code_free(wasi_sockets_0_2_0_rc_2023_11_10_udp_result_ip_socket_address_error_code_t *ptr) { - if (!ptr->is_err) { - wasi_sockets_0_2_0_rc_2023_11_10_udp_ip_socket_address_free(&ptr->val.ok); - } else { - } -} - -void wasi_sockets_0_2_0_rc_2023_11_10_udp_result_bool_error_code_free(wasi_sockets_0_2_0_rc_2023_11_10_udp_result_bool_error_code_t *ptr) { - if (!ptr->is_err) { - } else { - } -} - -void wasi_sockets_0_2_0_rc_2023_11_10_udp_result_u8_error_code_free(wasi_sockets_0_2_0_rc_2023_11_10_udp_result_u8_error_code_t *ptr) { - if (!ptr->is_err) { - } else { - } -} - -void wasi_sockets_0_2_0_rc_2023_11_10_udp_result_u64_error_code_free(wasi_sockets_0_2_0_rc_2023_11_10_udp_result_u64_error_code_t *ptr) { - if (!ptr->is_err) { - } else { - } -} - -void wasi_sockets_0_2_0_rc_2023_11_10_udp_list_incoming_datagram_free(wasi_sockets_0_2_0_rc_2023_11_10_udp_list_incoming_datagram_t *ptr) { - for (size_t i = 0; i < ptr->len; i++) { - wasi_sockets_0_2_0_rc_2023_11_10_udp_incoming_datagram_free(&ptr->ptr[i]); - } - if (ptr->len > 0) { - free(ptr->ptr); - } -} - -void wasi_sockets_0_2_0_rc_2023_11_10_udp_result_list_incoming_datagram_error_code_free(wasi_sockets_0_2_0_rc_2023_11_10_udp_result_list_incoming_datagram_error_code_t *ptr) { - if (!ptr->is_err) { - wasi_sockets_0_2_0_rc_2023_11_10_udp_list_incoming_datagram_free(&ptr->val.ok); - } else { - } -} - -void wasi_sockets_0_2_0_rc_2023_11_10_udp_list_outgoing_datagram_free(wasi_sockets_0_2_0_rc_2023_11_10_udp_list_outgoing_datagram_t *ptr) { - for (size_t i = 0; i < ptr->len; i++) { - wasi_sockets_0_2_0_rc_2023_11_10_udp_outgoing_datagram_free(&ptr->ptr[i]); - } - if (ptr->len > 0) { - free(ptr->ptr); - } -} - -void wasi_sockets_0_2_0_rc_2023_11_10_udp_create_socket_result_own_udp_socket_error_code_free(wasi_sockets_0_2_0_rc_2023_11_10_udp_create_socket_result_own_udp_socket_error_code_t *ptr) { - if (!ptr->is_err) { - } else { - } -} - -void wasi_sockets_0_2_0_rc_2023_11_10_tcp_ip_socket_address_free(wasi_sockets_0_2_0_rc_2023_11_10_tcp_ip_socket_address_t *ptr) { - wasi_sockets_0_2_0_rc_2023_11_10_network_ip_socket_address_free(ptr); -} - -__attribute__((__import_module__("wasi:sockets/tcp@0.2.0-rc-2023-11-10"), __import_name__("[resource-drop]tcp-socket"))) -extern void __wasm_import_wasi_sockets_0_2_0_rc_2023_11_10_tcp_tcp_socket_drop(int32_t handle); - -void wasi_sockets_0_2_0_rc_2023_11_10_tcp_tcp_socket_drop_own(wasi_sockets_0_2_0_rc_2023_11_10_tcp_own_tcp_socket_t handle) { - __wasm_import_wasi_sockets_0_2_0_rc_2023_11_10_tcp_tcp_socket_drop(handle.__handle); -} - -void wasi_sockets_0_2_0_rc_2023_11_10_tcp_tcp_socket_drop_borrow(wasi_sockets_0_2_0_rc_2023_11_10_tcp_own_tcp_socket_t handle) { - __wasm_import_wasi_sockets_0_2_0_rc_2023_11_10_tcp_tcp_socket_drop(handle.__handle); -} - -wasi_sockets_0_2_0_rc_2023_11_10_tcp_borrow_tcp_socket_t wasi_sockets_0_2_0_rc_2023_11_10_tcp_borrow_tcp_socket(wasi_sockets_0_2_0_rc_2023_11_10_tcp_own_tcp_socket_t arg) { - return (wasi_sockets_0_2_0_rc_2023_11_10_tcp_borrow_tcp_socket_t) { arg.__handle }; -} - -void wasi_sockets_0_2_0_rc_2023_11_10_tcp_result_void_error_code_free(wasi_sockets_0_2_0_rc_2023_11_10_tcp_result_void_error_code_t *ptr) { - if (!ptr->is_err) { - } else { - } -} - -void wasi_sockets_0_2_0_rc_2023_11_10_tcp_result_tuple2_own_input_stream_own_output_stream_error_code_free(wasi_sockets_0_2_0_rc_2023_11_10_tcp_result_tuple2_own_input_stream_own_output_stream_error_code_t *ptr) { - if (!ptr->is_err) { - } else { - } -} - -void wasi_sockets_0_2_0_rc_2023_11_10_tcp_result_tuple3_own_tcp_socket_own_input_stream_own_output_stream_error_code_free(wasi_sockets_0_2_0_rc_2023_11_10_tcp_result_tuple3_own_tcp_socket_own_input_stream_own_output_stream_error_code_t *ptr) { - if (!ptr->is_err) { - } else { - } -} - -void wasi_sockets_0_2_0_rc_2023_11_10_tcp_result_ip_socket_address_error_code_free(wasi_sockets_0_2_0_rc_2023_11_10_tcp_result_ip_socket_address_error_code_t *ptr) { - if (!ptr->is_err) { - wasi_sockets_0_2_0_rc_2023_11_10_tcp_ip_socket_address_free(&ptr->val.ok); - } else { - } -} - -void wasi_sockets_0_2_0_rc_2023_11_10_tcp_result_bool_error_code_free(wasi_sockets_0_2_0_rc_2023_11_10_tcp_result_bool_error_code_t *ptr) { - if (!ptr->is_err) { - } else { - } -} - -void wasi_sockets_0_2_0_rc_2023_11_10_tcp_result_duration_error_code_free(wasi_sockets_0_2_0_rc_2023_11_10_tcp_result_duration_error_code_t *ptr) { - if (!ptr->is_err) { - } else { - } -} - -void wasi_sockets_0_2_0_rc_2023_11_10_tcp_result_u32_error_code_free(wasi_sockets_0_2_0_rc_2023_11_10_tcp_result_u32_error_code_t *ptr) { - if (!ptr->is_err) { - } else { - } -} - -void wasi_sockets_0_2_0_rc_2023_11_10_tcp_result_u8_error_code_free(wasi_sockets_0_2_0_rc_2023_11_10_tcp_result_u8_error_code_t *ptr) { - if (!ptr->is_err) { - } else { - } -} - -void wasi_sockets_0_2_0_rc_2023_11_10_tcp_result_u64_error_code_free(wasi_sockets_0_2_0_rc_2023_11_10_tcp_result_u64_error_code_t *ptr) { - if (!ptr->is_err) { - } else { - } -} - -void wasi_sockets_0_2_0_rc_2023_11_10_tcp_create_socket_result_own_tcp_socket_error_code_free(wasi_sockets_0_2_0_rc_2023_11_10_tcp_create_socket_result_own_tcp_socket_error_code_t *ptr) { - if (!ptr->is_err) { - } else { - } -} - -void wasi_sockets_0_2_0_rc_2023_11_10_ip_name_lookup_ip_address_free(wasi_sockets_0_2_0_rc_2023_11_10_ip_name_lookup_ip_address_t *ptr) { - wasi_sockets_0_2_0_rc_2023_11_10_network_ip_address_free(ptr); -} - -__attribute__((__import_module__("wasi:sockets/ip-name-lookup@0.2.0-rc-2023-11-10"), __import_name__("[resource-drop]resolve-address-stream"))) -extern void __wasm_import_wasi_sockets_0_2_0_rc_2023_11_10_ip_name_lookup_resolve_address_stream_drop(int32_t handle); - -void wasi_sockets_0_2_0_rc_2023_11_10_ip_name_lookup_resolve_address_stream_drop_own(wasi_sockets_0_2_0_rc_2023_11_10_ip_name_lookup_own_resolve_address_stream_t handle) { - __wasm_import_wasi_sockets_0_2_0_rc_2023_11_10_ip_name_lookup_resolve_address_stream_drop(handle.__handle); -} - -void wasi_sockets_0_2_0_rc_2023_11_10_ip_name_lookup_resolve_address_stream_drop_borrow(wasi_sockets_0_2_0_rc_2023_11_10_ip_name_lookup_own_resolve_address_stream_t handle) { - __wasm_import_wasi_sockets_0_2_0_rc_2023_11_10_ip_name_lookup_resolve_address_stream_drop(handle.__handle); -} - -wasi_sockets_0_2_0_rc_2023_11_10_ip_name_lookup_borrow_resolve_address_stream_t wasi_sockets_0_2_0_rc_2023_11_10_ip_name_lookup_borrow_resolve_address_stream(wasi_sockets_0_2_0_rc_2023_11_10_ip_name_lookup_own_resolve_address_stream_t arg) { - return (wasi_sockets_0_2_0_rc_2023_11_10_ip_name_lookup_borrow_resolve_address_stream_t) { arg.__handle }; -} - -void wasi_sockets_0_2_0_rc_2023_11_10_ip_name_lookup_result_own_resolve_address_stream_error_code_free(wasi_sockets_0_2_0_rc_2023_11_10_ip_name_lookup_result_own_resolve_address_stream_error_code_t *ptr) { - if (!ptr->is_err) { - } else { - } -} - -void wasi_sockets_0_2_0_rc_2023_11_10_ip_name_lookup_option_ip_address_free(wasi_sockets_0_2_0_rc_2023_11_10_ip_name_lookup_option_ip_address_t *ptr) { - if (ptr->is_some) { - wasi_sockets_0_2_0_rc_2023_11_10_ip_name_lookup_ip_address_free(&ptr->val); - } -} - -void wasi_sockets_0_2_0_rc_2023_11_10_ip_name_lookup_result_option_ip_address_error_code_free(wasi_sockets_0_2_0_rc_2023_11_10_ip_name_lookup_result_option_ip_address_error_code_t *ptr) { - if (!ptr->is_err) { - wasi_sockets_0_2_0_rc_2023_11_10_ip_name_lookup_option_ip_address_free(&ptr->val.ok); - } else { - } -} - -void wasi_http_0_2_0_rc_2023_12_05_types_method_free(wasi_http_0_2_0_rc_2023_12_05_types_method_t *ptr) { - switch ((int32_t) ptr->tag) { - case 9: { - bindings_string_free(&ptr->val.other); - break; - } - } -} - -void wasi_http_0_2_0_rc_2023_12_05_types_scheme_free(wasi_http_0_2_0_rc_2023_12_05_types_scheme_t *ptr) { - switch ((int32_t) ptr->tag) { - case 2: { - bindings_string_free(&ptr->val.other); - break; - } - } -} - -void bindings_option_u16_free(bindings_option_u16_t *ptr) { - if (ptr->is_some) { - } -} - -void wasi_http_0_2_0_rc_2023_12_05_types_dns_error_payload_free(wasi_http_0_2_0_rc_2023_12_05_types_dns_error_payload_t *ptr) { - bindings_option_u16_free(&ptr->info_code); -} - -void bindings_option_u8_free(bindings_option_u8_t *ptr) { - if (ptr->is_some) { - } -} - -void wasi_http_0_2_0_rc_2023_12_05_types_tls_alert_received_payload_free(wasi_http_0_2_0_rc_2023_12_05_types_tls_alert_received_payload_t *ptr) { - bindings_option_u8_free(&ptr->alert_id); -} - -void bindings_option_u32_free(bindings_option_u32_t *ptr) { - if (ptr->is_some) { - } -} - -void wasi_http_0_2_0_rc_2023_12_05_types_field_size_payload_free(wasi_http_0_2_0_rc_2023_12_05_types_field_size_payload_t *ptr) { - bindings_option_u32_free(&ptr->field_size); -} - -void bindings_option_u64_free(bindings_option_u64_t *ptr) { - if (ptr->is_some) { - } -} - -void wasi_http_0_2_0_rc_2023_12_05_types_option_field_size_payload_free(wasi_http_0_2_0_rc_2023_12_05_types_option_field_size_payload_t *ptr) { - if (ptr->is_some) { - wasi_http_0_2_0_rc_2023_12_05_types_field_size_payload_free(&ptr->val); - } -} - -void wasi_http_0_2_0_rc_2023_12_05_types_error_code_free(wasi_http_0_2_0_rc_2023_12_05_types_error_code_t *ptr) { - switch ((int32_t) ptr->tag) { - case 1: { - wasi_http_0_2_0_rc_2023_12_05_types_dns_error_payload_free(&ptr->val.dns_error); - break; - } - case 14: { - wasi_http_0_2_0_rc_2023_12_05_types_tls_alert_received_payload_free(&ptr->val.tls_alert_received); - break; - } - case 17: { - bindings_option_u64_free(&ptr->val.http_request_body_size); - break; - } - case 21: { - bindings_option_u32_free(&ptr->val.http_request_header_section_size); - break; - } - case 22: { - wasi_http_0_2_0_rc_2023_12_05_types_option_field_size_payload_free(&ptr->val.http_request_header_size); - break; - } - case 23: { - bindings_option_u32_free(&ptr->val.http_request_trailer_section_size); - break; - } - case 24: { - wasi_http_0_2_0_rc_2023_12_05_types_field_size_payload_free(&ptr->val.http_request_trailer_size); - break; - } - case 26: { - bindings_option_u32_free(&ptr->val.http_response_header_section_size); - break; - } - case 27: { - wasi_http_0_2_0_rc_2023_12_05_types_field_size_payload_free(&ptr->val.http_response_header_size); - break; - } - case 28: { - bindings_option_u64_free(&ptr->val.http_response_body_size); - break; - } - case 29: { - bindings_option_u32_free(&ptr->val.http_response_trailer_section_size); - break; - } - case 30: { - wasi_http_0_2_0_rc_2023_12_05_types_field_size_payload_free(&ptr->val.http_response_trailer_size); - break; - } - case 31: { - break; - } - case 32: { - break; - } - case 38: { - break; - } - } -} - -void wasi_http_0_2_0_rc_2023_12_05_types_header_error_free(wasi_http_0_2_0_rc_2023_12_05_types_header_error_t *ptr) { - switch ((int32_t) ptr->tag) { - } -} - -void wasi_http_0_2_0_rc_2023_12_05_types_field_key_free(wasi_http_0_2_0_rc_2023_12_05_types_field_key_t *ptr) { - bindings_string_free(ptr); -} - -void wasi_http_0_2_0_rc_2023_12_05_types_field_value_free(wasi_http_0_2_0_rc_2023_12_05_types_field_value_t *ptr) { - for (size_t i = 0; i < ptr->len; i++) { - } - if (ptr->len > 0) { - free(ptr->ptr); - } -} - -__attribute__((__import_module__("wasi:http/types@0.2.0-rc-2023-12-05"), __import_name__("[resource-drop]fields"))) -extern void __wasm_import_wasi_http_0_2_0_rc_2023_12_05_types_fields_drop(int32_t handle); - -void wasi_http_0_2_0_rc_2023_12_05_types_fields_drop_own(wasi_http_0_2_0_rc_2023_12_05_types_own_fields_t handle) { - __wasm_import_wasi_http_0_2_0_rc_2023_12_05_types_fields_drop(handle.__handle); -} - -void wasi_http_0_2_0_rc_2023_12_05_types_fields_drop_borrow(wasi_http_0_2_0_rc_2023_12_05_types_own_fields_t handle) { - __wasm_import_wasi_http_0_2_0_rc_2023_12_05_types_fields_drop(handle.__handle); -} - -wasi_http_0_2_0_rc_2023_12_05_types_borrow_fields_t wasi_http_0_2_0_rc_2023_12_05_types_borrow_fields(wasi_http_0_2_0_rc_2023_12_05_types_own_fields_t arg) { - return (wasi_http_0_2_0_rc_2023_12_05_types_borrow_fields_t) { arg.__handle }; -} - -__attribute__((__import_module__("wasi:http/types@0.2.0-rc-2023-12-05"), __import_name__("[resource-drop]incoming-request"))) -extern void __wasm_import_wasi_http_0_2_0_rc_2023_12_05_types_incoming_request_drop(int32_t handle); - -void wasi_http_0_2_0_rc_2023_12_05_types_incoming_request_drop_own(wasi_http_0_2_0_rc_2023_12_05_types_own_incoming_request_t handle) { - __wasm_import_wasi_http_0_2_0_rc_2023_12_05_types_incoming_request_drop(handle.__handle); -} - -void wasi_http_0_2_0_rc_2023_12_05_types_incoming_request_drop_borrow(wasi_http_0_2_0_rc_2023_12_05_types_own_incoming_request_t handle) { - __wasm_import_wasi_http_0_2_0_rc_2023_12_05_types_incoming_request_drop(handle.__handle); -} - -wasi_http_0_2_0_rc_2023_12_05_types_borrow_incoming_request_t wasi_http_0_2_0_rc_2023_12_05_types_borrow_incoming_request(wasi_http_0_2_0_rc_2023_12_05_types_own_incoming_request_t arg) { - return (wasi_http_0_2_0_rc_2023_12_05_types_borrow_incoming_request_t) { arg.__handle }; -} - -__attribute__((__import_module__("wasi:http/types@0.2.0-rc-2023-12-05"), __import_name__("[resource-drop]outgoing-request"))) -extern void __wasm_import_wasi_http_0_2_0_rc_2023_12_05_types_outgoing_request_drop(int32_t handle); - -void wasi_http_0_2_0_rc_2023_12_05_types_outgoing_request_drop_own(wasi_http_0_2_0_rc_2023_12_05_types_own_outgoing_request_t handle) { - __wasm_import_wasi_http_0_2_0_rc_2023_12_05_types_outgoing_request_drop(handle.__handle); -} - -void wasi_http_0_2_0_rc_2023_12_05_types_outgoing_request_drop_borrow(wasi_http_0_2_0_rc_2023_12_05_types_own_outgoing_request_t handle) { - __wasm_import_wasi_http_0_2_0_rc_2023_12_05_types_outgoing_request_drop(handle.__handle); -} - -wasi_http_0_2_0_rc_2023_12_05_types_borrow_outgoing_request_t wasi_http_0_2_0_rc_2023_12_05_types_borrow_outgoing_request(wasi_http_0_2_0_rc_2023_12_05_types_own_outgoing_request_t arg) { - return (wasi_http_0_2_0_rc_2023_12_05_types_borrow_outgoing_request_t) { arg.__handle }; -} - -__attribute__((__import_module__("wasi:http/types@0.2.0-rc-2023-12-05"), __import_name__("[resource-drop]request-options"))) -extern void __wasm_import_wasi_http_0_2_0_rc_2023_12_05_types_request_options_drop(int32_t handle); - -void wasi_http_0_2_0_rc_2023_12_05_types_request_options_drop_own(wasi_http_0_2_0_rc_2023_12_05_types_own_request_options_t handle) { - __wasm_import_wasi_http_0_2_0_rc_2023_12_05_types_request_options_drop(handle.__handle); -} - -void wasi_http_0_2_0_rc_2023_12_05_types_request_options_drop_borrow(wasi_http_0_2_0_rc_2023_12_05_types_own_request_options_t handle) { - __wasm_import_wasi_http_0_2_0_rc_2023_12_05_types_request_options_drop(handle.__handle); -} - -wasi_http_0_2_0_rc_2023_12_05_types_borrow_request_options_t wasi_http_0_2_0_rc_2023_12_05_types_borrow_request_options(wasi_http_0_2_0_rc_2023_12_05_types_own_request_options_t arg) { - return (wasi_http_0_2_0_rc_2023_12_05_types_borrow_request_options_t) { arg.__handle }; -} - -__attribute__((__import_module__("wasi:http/types@0.2.0-rc-2023-12-05"), __import_name__("[resource-drop]response-outparam"))) -extern void __wasm_import_wasi_http_0_2_0_rc_2023_12_05_types_response_outparam_drop(int32_t handle); - -void wasi_http_0_2_0_rc_2023_12_05_types_response_outparam_drop_own(wasi_http_0_2_0_rc_2023_12_05_types_own_response_outparam_t handle) { - __wasm_import_wasi_http_0_2_0_rc_2023_12_05_types_response_outparam_drop(handle.__handle); -} - -void wasi_http_0_2_0_rc_2023_12_05_types_response_outparam_drop_borrow(wasi_http_0_2_0_rc_2023_12_05_types_own_response_outparam_t handle) { - __wasm_import_wasi_http_0_2_0_rc_2023_12_05_types_response_outparam_drop(handle.__handle); -} - -wasi_http_0_2_0_rc_2023_12_05_types_borrow_response_outparam_t wasi_http_0_2_0_rc_2023_12_05_types_borrow_response_outparam(wasi_http_0_2_0_rc_2023_12_05_types_own_response_outparam_t arg) { - return (wasi_http_0_2_0_rc_2023_12_05_types_borrow_response_outparam_t) { arg.__handle }; -} - -__attribute__((__import_module__("wasi:http/types@0.2.0-rc-2023-12-05"), __import_name__("[resource-drop]incoming-response"))) -extern void __wasm_import_wasi_http_0_2_0_rc_2023_12_05_types_incoming_response_drop(int32_t handle); - -void wasi_http_0_2_0_rc_2023_12_05_types_incoming_response_drop_own(wasi_http_0_2_0_rc_2023_12_05_types_own_incoming_response_t handle) { - __wasm_import_wasi_http_0_2_0_rc_2023_12_05_types_incoming_response_drop(handle.__handle); -} - -void wasi_http_0_2_0_rc_2023_12_05_types_incoming_response_drop_borrow(wasi_http_0_2_0_rc_2023_12_05_types_own_incoming_response_t handle) { - __wasm_import_wasi_http_0_2_0_rc_2023_12_05_types_incoming_response_drop(handle.__handle); -} - -wasi_http_0_2_0_rc_2023_12_05_types_borrow_incoming_response_t wasi_http_0_2_0_rc_2023_12_05_types_borrow_incoming_response(wasi_http_0_2_0_rc_2023_12_05_types_own_incoming_response_t arg) { - return (wasi_http_0_2_0_rc_2023_12_05_types_borrow_incoming_response_t) { arg.__handle }; -} - -__attribute__((__import_module__("wasi:http/types@0.2.0-rc-2023-12-05"), __import_name__("[resource-drop]incoming-body"))) -extern void __wasm_import_wasi_http_0_2_0_rc_2023_12_05_types_incoming_body_drop(int32_t handle); - -void wasi_http_0_2_0_rc_2023_12_05_types_incoming_body_drop_own(wasi_http_0_2_0_rc_2023_12_05_types_own_incoming_body_t handle) { - __wasm_import_wasi_http_0_2_0_rc_2023_12_05_types_incoming_body_drop(handle.__handle); -} - -void wasi_http_0_2_0_rc_2023_12_05_types_incoming_body_drop_borrow(wasi_http_0_2_0_rc_2023_12_05_types_own_incoming_body_t handle) { - __wasm_import_wasi_http_0_2_0_rc_2023_12_05_types_incoming_body_drop(handle.__handle); -} - -wasi_http_0_2_0_rc_2023_12_05_types_borrow_incoming_body_t wasi_http_0_2_0_rc_2023_12_05_types_borrow_incoming_body(wasi_http_0_2_0_rc_2023_12_05_types_own_incoming_body_t arg) { - return (wasi_http_0_2_0_rc_2023_12_05_types_borrow_incoming_body_t) { arg.__handle }; -} - -__attribute__((__import_module__("wasi:http/types@0.2.0-rc-2023-12-05"), __import_name__("[resource-drop]future-trailers"))) -extern void __wasm_import_wasi_http_0_2_0_rc_2023_12_05_types_future_trailers_drop(int32_t handle); - -void wasi_http_0_2_0_rc_2023_12_05_types_future_trailers_drop_own(wasi_http_0_2_0_rc_2023_12_05_types_own_future_trailers_t handle) { - __wasm_import_wasi_http_0_2_0_rc_2023_12_05_types_future_trailers_drop(handle.__handle); -} - -void wasi_http_0_2_0_rc_2023_12_05_types_future_trailers_drop_borrow(wasi_http_0_2_0_rc_2023_12_05_types_own_future_trailers_t handle) { - __wasm_import_wasi_http_0_2_0_rc_2023_12_05_types_future_trailers_drop(handle.__handle); -} - -wasi_http_0_2_0_rc_2023_12_05_types_borrow_future_trailers_t wasi_http_0_2_0_rc_2023_12_05_types_borrow_future_trailers(wasi_http_0_2_0_rc_2023_12_05_types_own_future_trailers_t arg) { - return (wasi_http_0_2_0_rc_2023_12_05_types_borrow_future_trailers_t) { arg.__handle }; -} - -__attribute__((__import_module__("wasi:http/types@0.2.0-rc-2023-12-05"), __import_name__("[resource-drop]outgoing-response"))) -extern void __wasm_import_wasi_http_0_2_0_rc_2023_12_05_types_outgoing_response_drop(int32_t handle); - -void wasi_http_0_2_0_rc_2023_12_05_types_outgoing_response_drop_own(wasi_http_0_2_0_rc_2023_12_05_types_own_outgoing_response_t handle) { - __wasm_import_wasi_http_0_2_0_rc_2023_12_05_types_outgoing_response_drop(handle.__handle); -} - -void wasi_http_0_2_0_rc_2023_12_05_types_outgoing_response_drop_borrow(wasi_http_0_2_0_rc_2023_12_05_types_own_outgoing_response_t handle) { - __wasm_import_wasi_http_0_2_0_rc_2023_12_05_types_outgoing_response_drop(handle.__handle); -} - -wasi_http_0_2_0_rc_2023_12_05_types_borrow_outgoing_response_t wasi_http_0_2_0_rc_2023_12_05_types_borrow_outgoing_response(wasi_http_0_2_0_rc_2023_12_05_types_own_outgoing_response_t arg) { - return (wasi_http_0_2_0_rc_2023_12_05_types_borrow_outgoing_response_t) { arg.__handle }; -} - -__attribute__((__import_module__("wasi:http/types@0.2.0-rc-2023-12-05"), __import_name__("[resource-drop]outgoing-body"))) -extern void __wasm_import_wasi_http_0_2_0_rc_2023_12_05_types_outgoing_body_drop(int32_t handle); - -void wasi_http_0_2_0_rc_2023_12_05_types_outgoing_body_drop_own(wasi_http_0_2_0_rc_2023_12_05_types_own_outgoing_body_t handle) { - __wasm_import_wasi_http_0_2_0_rc_2023_12_05_types_outgoing_body_drop(handle.__handle); -} - -void wasi_http_0_2_0_rc_2023_12_05_types_outgoing_body_drop_borrow(wasi_http_0_2_0_rc_2023_12_05_types_own_outgoing_body_t handle) { - __wasm_import_wasi_http_0_2_0_rc_2023_12_05_types_outgoing_body_drop(handle.__handle); -} - -wasi_http_0_2_0_rc_2023_12_05_types_borrow_outgoing_body_t wasi_http_0_2_0_rc_2023_12_05_types_borrow_outgoing_body(wasi_http_0_2_0_rc_2023_12_05_types_own_outgoing_body_t arg) { - return (wasi_http_0_2_0_rc_2023_12_05_types_borrow_outgoing_body_t) { arg.__handle }; -} - -__attribute__((__import_module__("wasi:http/types@0.2.0-rc-2023-12-05"), __import_name__("[resource-drop]future-incoming-response"))) -extern void __wasm_import_wasi_http_0_2_0_rc_2023_12_05_types_future_incoming_response_drop(int32_t handle); - -void wasi_http_0_2_0_rc_2023_12_05_types_future_incoming_response_drop_own(wasi_http_0_2_0_rc_2023_12_05_types_own_future_incoming_response_t handle) { - __wasm_import_wasi_http_0_2_0_rc_2023_12_05_types_future_incoming_response_drop(handle.__handle); -} - -void wasi_http_0_2_0_rc_2023_12_05_types_future_incoming_response_drop_borrow(wasi_http_0_2_0_rc_2023_12_05_types_own_future_incoming_response_t handle) { - __wasm_import_wasi_http_0_2_0_rc_2023_12_05_types_future_incoming_response_drop(handle.__handle); -} - -wasi_http_0_2_0_rc_2023_12_05_types_borrow_future_incoming_response_t wasi_http_0_2_0_rc_2023_12_05_types_borrow_future_incoming_response(wasi_http_0_2_0_rc_2023_12_05_types_own_future_incoming_response_t arg) { - return (wasi_http_0_2_0_rc_2023_12_05_types_borrow_future_incoming_response_t) { arg.__handle }; -} - -void wasi_http_0_2_0_rc_2023_12_05_types_option_error_code_free(wasi_http_0_2_0_rc_2023_12_05_types_option_error_code_t *ptr) { - if (ptr->is_some) { - wasi_http_0_2_0_rc_2023_12_05_types_error_code_free(&ptr->val); - } -} - -void bindings_tuple2_field_key_field_value_free(bindings_tuple2_field_key_field_value_t *ptr) { - wasi_http_0_2_0_rc_2023_12_05_types_field_key_free(&ptr->f0); - wasi_http_0_2_0_rc_2023_12_05_types_field_value_free(&ptr->f1); -} - -void bindings_list_tuple2_field_key_field_value_free(bindings_list_tuple2_field_key_field_value_t *ptr) { - for (size_t i = 0; i < ptr->len; i++) { - bindings_tuple2_field_key_field_value_free(&ptr->ptr[i]); - } - if (ptr->len > 0) { - free(ptr->ptr); - } -} - -void wasi_http_0_2_0_rc_2023_12_05_types_result_own_fields_header_error_free(wasi_http_0_2_0_rc_2023_12_05_types_result_own_fields_header_error_t *ptr) { - if (!ptr->is_err) { - } else { - wasi_http_0_2_0_rc_2023_12_05_types_header_error_free(&ptr->val.err); - } -} - -void bindings_list_field_value_free(bindings_list_field_value_t *ptr) { - for (size_t i = 0; i < ptr->len; i++) { - wasi_http_0_2_0_rc_2023_12_05_types_field_value_free(&ptr->ptr[i]); - } - if (ptr->len > 0) { - free(ptr->ptr); - } -} - -void wasi_http_0_2_0_rc_2023_12_05_types_result_void_header_error_free(wasi_http_0_2_0_rc_2023_12_05_types_result_void_header_error_t *ptr) { - if (!ptr->is_err) { - } else { - wasi_http_0_2_0_rc_2023_12_05_types_header_error_free(&ptr->val.err); - } -} - -void wasi_http_0_2_0_rc_2023_12_05_types_option_scheme_free(wasi_http_0_2_0_rc_2023_12_05_types_option_scheme_t *ptr) { - if (ptr->is_some) { - wasi_http_0_2_0_rc_2023_12_05_types_scheme_free(&ptr->val); - } -} - -void wasi_http_0_2_0_rc_2023_12_05_types_result_own_incoming_body_void_free(wasi_http_0_2_0_rc_2023_12_05_types_result_own_incoming_body_void_t *ptr) { - if (!ptr->is_err) { - } -} - -void wasi_http_0_2_0_rc_2023_12_05_types_result_own_outgoing_body_void_free(wasi_http_0_2_0_rc_2023_12_05_types_result_own_outgoing_body_void_t *ptr) { - if (!ptr->is_err) { - } -} - -void wasi_http_0_2_0_rc_2023_12_05_types_result_void_void_free(wasi_http_0_2_0_rc_2023_12_05_types_result_void_void_t *ptr) { - if (!ptr->is_err) { - } -} - -void bindings_option_duration_free(bindings_option_duration_t *ptr) { - if (ptr->is_some) { - } -} - -void wasi_http_0_2_0_rc_2023_12_05_types_result_own_outgoing_response_error_code_free(wasi_http_0_2_0_rc_2023_12_05_types_result_own_outgoing_response_error_code_t *ptr) { - if (!ptr->is_err) { - } else { - wasi_http_0_2_0_rc_2023_12_05_types_error_code_free(&ptr->val.err); - } -} - -void wasi_http_0_2_0_rc_2023_12_05_types_result_own_input_stream_void_free(wasi_http_0_2_0_rc_2023_12_05_types_result_own_input_stream_void_t *ptr) { - if (!ptr->is_err) { - } -} - -void wasi_http_0_2_0_rc_2023_12_05_types_option_own_trailers_free(wasi_http_0_2_0_rc_2023_12_05_types_option_own_trailers_t *ptr) { - if (ptr->is_some) { - } -} - -void wasi_http_0_2_0_rc_2023_12_05_types_result_option_own_trailers_error_code_free(wasi_http_0_2_0_rc_2023_12_05_types_result_option_own_trailers_error_code_t *ptr) { - if (!ptr->is_err) { - wasi_http_0_2_0_rc_2023_12_05_types_option_own_trailers_free(&ptr->val.ok); - } else { - wasi_http_0_2_0_rc_2023_12_05_types_error_code_free(&ptr->val.err); - } -} - -void wasi_http_0_2_0_rc_2023_12_05_types_result_result_option_own_trailers_error_code_void_free(wasi_http_0_2_0_rc_2023_12_05_types_result_result_option_own_trailers_error_code_void_t *ptr) { - if (!ptr->is_err) { - wasi_http_0_2_0_rc_2023_12_05_types_result_option_own_trailers_error_code_free(&ptr->val.ok); - } -} - -void wasi_http_0_2_0_rc_2023_12_05_types_option_result_result_option_own_trailers_error_code_void_free(wasi_http_0_2_0_rc_2023_12_05_types_option_result_result_option_own_trailers_error_code_void_t *ptr) { - if (ptr->is_some) { - wasi_http_0_2_0_rc_2023_12_05_types_result_result_option_own_trailers_error_code_void_free(&ptr->val); - } -} - -void wasi_http_0_2_0_rc_2023_12_05_types_result_own_output_stream_void_free(wasi_http_0_2_0_rc_2023_12_05_types_result_own_output_stream_void_t *ptr) { - if (!ptr->is_err) { - } -} - -void wasi_http_0_2_0_rc_2023_12_05_types_result_void_error_code_free(wasi_http_0_2_0_rc_2023_12_05_types_result_void_error_code_t *ptr) { - if (!ptr->is_err) { - } else { - wasi_http_0_2_0_rc_2023_12_05_types_error_code_free(&ptr->val.err); - } -} - -void wasi_http_0_2_0_rc_2023_12_05_types_result_own_incoming_response_error_code_free(wasi_http_0_2_0_rc_2023_12_05_types_result_own_incoming_response_error_code_t *ptr) { - if (!ptr->is_err) { - } else { - wasi_http_0_2_0_rc_2023_12_05_types_error_code_free(&ptr->val.err); - } -} - -void wasi_http_0_2_0_rc_2023_12_05_types_result_result_own_incoming_response_error_code_void_free(wasi_http_0_2_0_rc_2023_12_05_types_result_result_own_incoming_response_error_code_void_t *ptr) { - if (!ptr->is_err) { - wasi_http_0_2_0_rc_2023_12_05_types_result_own_incoming_response_error_code_free(&ptr->val.ok); - } -} - -void wasi_http_0_2_0_rc_2023_12_05_types_option_result_result_own_incoming_response_error_code_void_free(wasi_http_0_2_0_rc_2023_12_05_types_option_result_result_own_incoming_response_error_code_void_t *ptr) { - if (ptr->is_some) { - wasi_http_0_2_0_rc_2023_12_05_types_result_result_own_incoming_response_error_code_void_free(&ptr->val); - } -} - -void wasi_http_0_2_0_rc_2023_12_05_outgoing_handler_error_code_free(wasi_http_0_2_0_rc_2023_12_05_outgoing_handler_error_code_t *ptr) { - wasi_http_0_2_0_rc_2023_12_05_types_error_code_free(ptr); -} - -void wasi_http_0_2_0_rc_2023_12_05_outgoing_handler_option_own_request_options_free(wasi_http_0_2_0_rc_2023_12_05_outgoing_handler_option_own_request_options_t *ptr) { - if (ptr->is_some) { - } -} - -void wasi_http_0_2_0_rc_2023_12_05_outgoing_handler_result_own_future_incoming_response_error_code_free(wasi_http_0_2_0_rc_2023_12_05_outgoing_handler_result_own_future_incoming_response_error_code_t *ptr) { - if (!ptr->is_err) { - } else { - wasi_http_0_2_0_rc_2023_12_05_outgoing_handler_error_code_free(&ptr->val.err); - } -} - -void exports_wasi_cli_0_2_0_rc_2023_12_05_run_result_void_void_free(exports_wasi_cli_0_2_0_rc_2023_12_05_run_result_void_void_t *ptr) { - if (!ptr->is_err) { - } -} - -void bindings_string_set(bindings_string_t *ret, char*s) { - ret->ptr = (uint8_t*) s; - ret->len = strlen(s); -} - -void bindings_string_dup(bindings_string_t *ret, const char*s) { - ret->len = strlen(s); - ret->ptr = cabi_realloc(NULL, 0, 1, ret->len * 1); - memcpy(ret->ptr, s, ret->len * 1); -} - -void bindings_string_free(bindings_string_t *ret) { - if (ret->len > 0) { - free(ret->ptr); - } - ret->ptr = NULL; - ret->len = 0; -} - -// Component Adapters - -void wasi_cli_0_2_0_rc_2023_12_05_environment_get_environment(bindings_list_tuple2_string_string_t *ret) { - __attribute__((__aligned__(4))) - uint8_t ret_area[8]; - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_cli_0_2_0_rc_2023_12_05_environment_get_environment(ptr); - *ret = (bindings_list_tuple2_string_string_t) { (bindings_tuple2_string_string_t*)(*((int32_t*) (ptr + 0))), (size_t)(*((int32_t*) (ptr + 4))) }; -} - -void wasi_cli_0_2_0_rc_2023_12_05_environment_get_arguments(bindings_list_string_t *ret) { - __attribute__((__aligned__(4))) - uint8_t ret_area[8]; - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_cli_0_2_0_rc_2023_12_05_environment_get_arguments(ptr); - *ret = (bindings_list_string_t) { (bindings_string_t*)(*((int32_t*) (ptr + 0))), (size_t)(*((int32_t*) (ptr + 4))) }; -} - -bool wasi_cli_0_2_0_rc_2023_12_05_environment_initial_cwd(bindings_string_t *ret) { - __attribute__((__aligned__(4))) - uint8_t ret_area[12]; - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_cli_0_2_0_rc_2023_12_05_environment_initial_cwd(ptr); - bindings_option_string_t option; - switch ((int32_t) (*((uint8_t*) (ptr + 0)))) { - case 0: { - option.is_some = false; - break; - } - case 1: { - option.is_some = true; - option.val = (bindings_string_t) { (uint8_t*)(*((int32_t*) (ptr + 4))), (size_t)(*((int32_t*) (ptr + 8))) }; - break; - } - } - *ret = option.val; - return option.is_some; -} - -void wasi_cli_0_2_0_rc_2023_12_05_exit_exit(wasi_cli_0_2_0_rc_2023_12_05_exit_result_void_void_t *status) { - int32_t result; - if ((*status).is_err) { - result = 1; - } else { - result = 0; - } - __wasm_import_wasi_cli_0_2_0_rc_2023_12_05_exit_exit(result); -} - -void wasi_io_0_2_0_rc_2023_11_10_error_method_error_to_debug_string(wasi_io_0_2_0_rc_2023_11_10_error_borrow_error_t self, bindings_string_t *ret) { - __attribute__((__aligned__(4))) - uint8_t ret_area[8]; - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_io_0_2_0_rc_2023_11_10_error_method_error_to_debug_string((self).__handle, ptr); - *ret = (bindings_string_t) { (uint8_t*)(*((int32_t*) (ptr + 0))), (size_t)(*((int32_t*) (ptr + 4))) }; -} - -bool wasi_io_0_2_0_rc_2023_11_10_poll_method_pollable_ready(wasi_io_0_2_0_rc_2023_11_10_poll_borrow_pollable_t self) { - int32_t ret = __wasm_import_wasi_io_0_2_0_rc_2023_11_10_poll_method_pollable_ready((self).__handle); - return ret; -} - -void wasi_io_0_2_0_rc_2023_11_10_poll_method_pollable_block(wasi_io_0_2_0_rc_2023_11_10_poll_borrow_pollable_t self) { - __wasm_import_wasi_io_0_2_0_rc_2023_11_10_poll_method_pollable_block((self).__handle); -} - -void wasi_io_0_2_0_rc_2023_11_10_poll_poll(wasi_io_0_2_0_rc_2023_11_10_poll_list_borrow_pollable_t *in, bindings_list_u32_t *ret) { - __attribute__((__aligned__(4))) - uint8_t ret_area[8]; - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_io_0_2_0_rc_2023_11_10_poll_poll((int32_t) (*in).ptr, (int32_t) (*in).len, ptr); - *ret = (bindings_list_u32_t) { (uint32_t*)(*((int32_t*) (ptr + 0))), (size_t)(*((int32_t*) (ptr + 4))) }; -} - -bool wasi_io_0_2_0_rc_2023_11_10_streams_method_input_stream_read(wasi_io_0_2_0_rc_2023_11_10_streams_borrow_input_stream_t self, uint64_t len, bindings_list_u8_t *ret, wasi_io_0_2_0_rc_2023_11_10_streams_stream_error_t *err) { - __attribute__((__aligned__(4))) - uint8_t ret_area[12]; - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_io_0_2_0_rc_2023_11_10_streams_method_input_stream_read((self).__handle, (int64_t) (len), ptr); - wasi_io_0_2_0_rc_2023_11_10_streams_result_list_u8_stream_error_t result; - switch ((int32_t) (*((uint8_t*) (ptr + 0)))) { - case 0: { - result.is_err = false; - result.val.ok = (bindings_list_u8_t) { (uint8_t*)(*((int32_t*) (ptr + 4))), (size_t)(*((int32_t*) (ptr + 8))) }; - break; - } - case 1: { - result.is_err = true; - wasi_io_0_2_0_rc_2023_11_10_streams_stream_error_t variant; - variant.tag = (int32_t) (*((uint8_t*) (ptr + 4))); - switch ((int32_t) variant.tag) { - case 0: { - variant.val.last_operation_failed = (wasi_io_0_2_0_rc_2023_11_10_streams_own_error_t) { *((int32_t*) (ptr + 8)) }; - break; - } - case 1: { - break; - } - } - - result.val.err = variant; - break; - } - } - if (!result.is_err) { - *ret = result.val.ok; - return 1; - } else { - *err = result.val.err; - return 0; - } -} - -bool wasi_io_0_2_0_rc_2023_11_10_streams_method_input_stream_blocking_read(wasi_io_0_2_0_rc_2023_11_10_streams_borrow_input_stream_t self, uint64_t len, bindings_list_u8_t *ret, wasi_io_0_2_0_rc_2023_11_10_streams_stream_error_t *err) { - __attribute__((__aligned__(4))) - uint8_t ret_area[12]; - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_io_0_2_0_rc_2023_11_10_streams_method_input_stream_blocking_read((self).__handle, (int64_t) (len), ptr); - wasi_io_0_2_0_rc_2023_11_10_streams_result_list_u8_stream_error_t result; - switch ((int32_t) (*((uint8_t*) (ptr + 0)))) { - case 0: { - result.is_err = false; - result.val.ok = (bindings_list_u8_t) { (uint8_t*)(*((int32_t*) (ptr + 4))), (size_t)(*((int32_t*) (ptr + 8))) }; - break; - } - case 1: { - result.is_err = true; - wasi_io_0_2_0_rc_2023_11_10_streams_stream_error_t variant; - variant.tag = (int32_t) (*((uint8_t*) (ptr + 4))); - switch ((int32_t) variant.tag) { - case 0: { - variant.val.last_operation_failed = (wasi_io_0_2_0_rc_2023_11_10_streams_own_error_t) { *((int32_t*) (ptr + 8)) }; - break; - } - case 1: { - break; - } - } - - result.val.err = variant; - break; - } - } - if (!result.is_err) { - *ret = result.val.ok; - return 1; - } else { - *err = result.val.err; - return 0; - } -} - -bool wasi_io_0_2_0_rc_2023_11_10_streams_method_input_stream_skip(wasi_io_0_2_0_rc_2023_11_10_streams_borrow_input_stream_t self, uint64_t len, uint64_t *ret, wasi_io_0_2_0_rc_2023_11_10_streams_stream_error_t *err) { - __attribute__((__aligned__(8))) - uint8_t ret_area[16]; - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_io_0_2_0_rc_2023_11_10_streams_method_input_stream_skip((self).__handle, (int64_t) (len), ptr); - wasi_io_0_2_0_rc_2023_11_10_streams_result_u64_stream_error_t result; - switch ((int32_t) (*((uint8_t*) (ptr + 0)))) { - case 0: { - result.is_err = false; - result.val.ok = (uint64_t) (*((int64_t*) (ptr + 8))); - break; - } - case 1: { - result.is_err = true; - wasi_io_0_2_0_rc_2023_11_10_streams_stream_error_t variant; - variant.tag = (int32_t) (*((uint8_t*) (ptr + 8))); - switch ((int32_t) variant.tag) { - case 0: { - variant.val.last_operation_failed = (wasi_io_0_2_0_rc_2023_11_10_streams_own_error_t) { *((int32_t*) (ptr + 12)) }; - break; - } - case 1: { - break; - } - } - - result.val.err = variant; - break; - } - } - if (!result.is_err) { - *ret = result.val.ok; - return 1; - } else { - *err = result.val.err; - return 0; - } -} - -bool wasi_io_0_2_0_rc_2023_11_10_streams_method_input_stream_blocking_skip(wasi_io_0_2_0_rc_2023_11_10_streams_borrow_input_stream_t self, uint64_t len, uint64_t *ret, wasi_io_0_2_0_rc_2023_11_10_streams_stream_error_t *err) { - __attribute__((__aligned__(8))) - uint8_t ret_area[16]; - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_io_0_2_0_rc_2023_11_10_streams_method_input_stream_blocking_skip((self).__handle, (int64_t) (len), ptr); - wasi_io_0_2_0_rc_2023_11_10_streams_result_u64_stream_error_t result; - switch ((int32_t) (*((uint8_t*) (ptr + 0)))) { - case 0: { - result.is_err = false; - result.val.ok = (uint64_t) (*((int64_t*) (ptr + 8))); - break; - } - case 1: { - result.is_err = true; - wasi_io_0_2_0_rc_2023_11_10_streams_stream_error_t variant; - variant.tag = (int32_t) (*((uint8_t*) (ptr + 8))); - switch ((int32_t) variant.tag) { - case 0: { - variant.val.last_operation_failed = (wasi_io_0_2_0_rc_2023_11_10_streams_own_error_t) { *((int32_t*) (ptr + 12)) }; - break; - } - case 1: { - break; - } - } - - result.val.err = variant; - break; - } - } - if (!result.is_err) { - *ret = result.val.ok; - return 1; - } else { - *err = result.val.err; - return 0; - } -} - -wasi_io_0_2_0_rc_2023_11_10_streams_own_pollable_t wasi_io_0_2_0_rc_2023_11_10_streams_method_input_stream_subscribe(wasi_io_0_2_0_rc_2023_11_10_streams_borrow_input_stream_t self) { - int32_t ret = __wasm_import_wasi_io_0_2_0_rc_2023_11_10_streams_method_input_stream_subscribe((self).__handle); - return (wasi_io_0_2_0_rc_2023_11_10_streams_own_pollable_t) { ret }; -} - -bool wasi_io_0_2_0_rc_2023_11_10_streams_method_output_stream_check_write(wasi_io_0_2_0_rc_2023_11_10_streams_borrow_output_stream_t self, uint64_t *ret, wasi_io_0_2_0_rc_2023_11_10_streams_stream_error_t *err) { - __attribute__((__aligned__(8))) - uint8_t ret_area[16]; - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_io_0_2_0_rc_2023_11_10_streams_method_output_stream_check_write((self).__handle, ptr); - wasi_io_0_2_0_rc_2023_11_10_streams_result_u64_stream_error_t result; - switch ((int32_t) (*((uint8_t*) (ptr + 0)))) { - case 0: { - result.is_err = false; - result.val.ok = (uint64_t) (*((int64_t*) (ptr + 8))); - break; - } - case 1: { - result.is_err = true; - wasi_io_0_2_0_rc_2023_11_10_streams_stream_error_t variant; - variant.tag = (int32_t) (*((uint8_t*) (ptr + 8))); - switch ((int32_t) variant.tag) { - case 0: { - variant.val.last_operation_failed = (wasi_io_0_2_0_rc_2023_11_10_streams_own_error_t) { *((int32_t*) (ptr + 12)) }; - break; - } - case 1: { - break; - } - } - - result.val.err = variant; - break; - } - } - if (!result.is_err) { - *ret = result.val.ok; - return 1; - } else { - *err = result.val.err; - return 0; - } -} - -bool wasi_io_0_2_0_rc_2023_11_10_streams_method_output_stream_write(wasi_io_0_2_0_rc_2023_11_10_streams_borrow_output_stream_t self, bindings_list_u8_t *contents, wasi_io_0_2_0_rc_2023_11_10_streams_stream_error_t *err) { - __attribute__((__aligned__(4))) - uint8_t ret_area[12]; - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_io_0_2_0_rc_2023_11_10_streams_method_output_stream_write((self).__handle, (int32_t) (*contents).ptr, (int32_t) (*contents).len, ptr); - wasi_io_0_2_0_rc_2023_11_10_streams_result_void_stream_error_t result; - switch ((int32_t) (*((uint8_t*) (ptr + 0)))) { - case 0: { - result.is_err = false; - break; - } - case 1: { - result.is_err = true; - wasi_io_0_2_0_rc_2023_11_10_streams_stream_error_t variant; - variant.tag = (int32_t) (*((uint8_t*) (ptr + 4))); - switch ((int32_t) variant.tag) { - case 0: { - variant.val.last_operation_failed = (wasi_io_0_2_0_rc_2023_11_10_streams_own_error_t) { *((int32_t*) (ptr + 8)) }; - break; - } - case 1: { - break; - } - } - - result.val.err = variant; - break; - } - } - if (!result.is_err) { - return 1; - } else { - *err = result.val.err; - return 0; - } -} - -bool wasi_io_0_2_0_rc_2023_11_10_streams_method_output_stream_blocking_write_and_flush(wasi_io_0_2_0_rc_2023_11_10_streams_borrow_output_stream_t self, bindings_list_u8_t *contents, wasi_io_0_2_0_rc_2023_11_10_streams_stream_error_t *err) { - __attribute__((__aligned__(4))) - uint8_t ret_area[12]; - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_io_0_2_0_rc_2023_11_10_streams_method_output_stream_blocking_write_and_flush((self).__handle, (int32_t) (*contents).ptr, (int32_t) (*contents).len, ptr); - wasi_io_0_2_0_rc_2023_11_10_streams_result_void_stream_error_t result; - switch ((int32_t) (*((uint8_t*) (ptr + 0)))) { - case 0: { - result.is_err = false; - break; - } - case 1: { - result.is_err = true; - wasi_io_0_2_0_rc_2023_11_10_streams_stream_error_t variant; - variant.tag = (int32_t) (*((uint8_t*) (ptr + 4))); - switch ((int32_t) variant.tag) { - case 0: { - variant.val.last_operation_failed = (wasi_io_0_2_0_rc_2023_11_10_streams_own_error_t) { *((int32_t*) (ptr + 8)) }; - break; - } - case 1: { - break; - } - } - - result.val.err = variant; - break; - } - } - if (!result.is_err) { - return 1; - } else { - *err = result.val.err; - return 0; - } -} - -bool wasi_io_0_2_0_rc_2023_11_10_streams_method_output_stream_flush(wasi_io_0_2_0_rc_2023_11_10_streams_borrow_output_stream_t self, wasi_io_0_2_0_rc_2023_11_10_streams_stream_error_t *err) { - __attribute__((__aligned__(4))) - uint8_t ret_area[12]; - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_io_0_2_0_rc_2023_11_10_streams_method_output_stream_flush((self).__handle, ptr); - wasi_io_0_2_0_rc_2023_11_10_streams_result_void_stream_error_t result; - switch ((int32_t) (*((uint8_t*) (ptr + 0)))) { - case 0: { - result.is_err = false; - break; - } - case 1: { - result.is_err = true; - wasi_io_0_2_0_rc_2023_11_10_streams_stream_error_t variant; - variant.tag = (int32_t) (*((uint8_t*) (ptr + 4))); - switch ((int32_t) variant.tag) { - case 0: { - variant.val.last_operation_failed = (wasi_io_0_2_0_rc_2023_11_10_streams_own_error_t) { *((int32_t*) (ptr + 8)) }; - break; - } - case 1: { - break; - } - } - - result.val.err = variant; - break; - } - } - if (!result.is_err) { - return 1; - } else { - *err = result.val.err; - return 0; - } -} - -bool wasi_io_0_2_0_rc_2023_11_10_streams_method_output_stream_blocking_flush(wasi_io_0_2_0_rc_2023_11_10_streams_borrow_output_stream_t self, wasi_io_0_2_0_rc_2023_11_10_streams_stream_error_t *err) { - __attribute__((__aligned__(4))) - uint8_t ret_area[12]; - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_io_0_2_0_rc_2023_11_10_streams_method_output_stream_blocking_flush((self).__handle, ptr); - wasi_io_0_2_0_rc_2023_11_10_streams_result_void_stream_error_t result; - switch ((int32_t) (*((uint8_t*) (ptr + 0)))) { - case 0: { - result.is_err = false; - break; - } - case 1: { - result.is_err = true; - wasi_io_0_2_0_rc_2023_11_10_streams_stream_error_t variant; - variant.tag = (int32_t) (*((uint8_t*) (ptr + 4))); - switch ((int32_t) variant.tag) { - case 0: { - variant.val.last_operation_failed = (wasi_io_0_2_0_rc_2023_11_10_streams_own_error_t) { *((int32_t*) (ptr + 8)) }; - break; - } - case 1: { - break; - } - } - - result.val.err = variant; - break; - } - } - if (!result.is_err) { - return 1; - } else { - *err = result.val.err; - return 0; - } -} - -wasi_io_0_2_0_rc_2023_11_10_streams_own_pollable_t wasi_io_0_2_0_rc_2023_11_10_streams_method_output_stream_subscribe(wasi_io_0_2_0_rc_2023_11_10_streams_borrow_output_stream_t self) { - int32_t ret = __wasm_import_wasi_io_0_2_0_rc_2023_11_10_streams_method_output_stream_subscribe((self).__handle); - return (wasi_io_0_2_0_rc_2023_11_10_streams_own_pollable_t) { ret }; -} - -bool wasi_io_0_2_0_rc_2023_11_10_streams_method_output_stream_write_zeroes(wasi_io_0_2_0_rc_2023_11_10_streams_borrow_output_stream_t self, uint64_t len, wasi_io_0_2_0_rc_2023_11_10_streams_stream_error_t *err) { - __attribute__((__aligned__(4))) - uint8_t ret_area[12]; - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_io_0_2_0_rc_2023_11_10_streams_method_output_stream_write_zeroes((self).__handle, (int64_t) (len), ptr); - wasi_io_0_2_0_rc_2023_11_10_streams_result_void_stream_error_t result; - switch ((int32_t) (*((uint8_t*) (ptr + 0)))) { - case 0: { - result.is_err = false; - break; - } - case 1: { - result.is_err = true; - wasi_io_0_2_0_rc_2023_11_10_streams_stream_error_t variant; - variant.tag = (int32_t) (*((uint8_t*) (ptr + 4))); - switch ((int32_t) variant.tag) { - case 0: { - variant.val.last_operation_failed = (wasi_io_0_2_0_rc_2023_11_10_streams_own_error_t) { *((int32_t*) (ptr + 8)) }; - break; - } - case 1: { - break; - } - } - - result.val.err = variant; - break; - } - } - if (!result.is_err) { - return 1; - } else { - *err = result.val.err; - return 0; - } -} - -bool wasi_io_0_2_0_rc_2023_11_10_streams_method_output_stream_blocking_write_zeroes_and_flush(wasi_io_0_2_0_rc_2023_11_10_streams_borrow_output_stream_t self, uint64_t len, wasi_io_0_2_0_rc_2023_11_10_streams_stream_error_t *err) { - __attribute__((__aligned__(4))) - uint8_t ret_area[12]; - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_io_0_2_0_rc_2023_11_10_streams_method_output_stream_blocking_write_zeroes_and_flush((self).__handle, (int64_t) (len), ptr); - wasi_io_0_2_0_rc_2023_11_10_streams_result_void_stream_error_t result; - switch ((int32_t) (*((uint8_t*) (ptr + 0)))) { - case 0: { - result.is_err = false; - break; - } - case 1: { - result.is_err = true; - wasi_io_0_2_0_rc_2023_11_10_streams_stream_error_t variant; - variant.tag = (int32_t) (*((uint8_t*) (ptr + 4))); - switch ((int32_t) variant.tag) { - case 0: { - variant.val.last_operation_failed = (wasi_io_0_2_0_rc_2023_11_10_streams_own_error_t) { *((int32_t*) (ptr + 8)) }; - break; - } - case 1: { - break; - } - } - - result.val.err = variant; - break; - } - } - if (!result.is_err) { - return 1; - } else { - *err = result.val.err; - return 0; - } -} - -bool wasi_io_0_2_0_rc_2023_11_10_streams_method_output_stream_splice(wasi_io_0_2_0_rc_2023_11_10_streams_borrow_output_stream_t self, wasi_io_0_2_0_rc_2023_11_10_streams_borrow_input_stream_t src, uint64_t len, uint64_t *ret, wasi_io_0_2_0_rc_2023_11_10_streams_stream_error_t *err) { - __attribute__((__aligned__(8))) - uint8_t ret_area[16]; - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_io_0_2_0_rc_2023_11_10_streams_method_output_stream_splice((self).__handle, (src).__handle, (int64_t) (len), ptr); - wasi_io_0_2_0_rc_2023_11_10_streams_result_u64_stream_error_t result; - switch ((int32_t) (*((uint8_t*) (ptr + 0)))) { - case 0: { - result.is_err = false; - result.val.ok = (uint64_t) (*((int64_t*) (ptr + 8))); - break; - } - case 1: { - result.is_err = true; - wasi_io_0_2_0_rc_2023_11_10_streams_stream_error_t variant; - variant.tag = (int32_t) (*((uint8_t*) (ptr + 8))); - switch ((int32_t) variant.tag) { - case 0: { - variant.val.last_operation_failed = (wasi_io_0_2_0_rc_2023_11_10_streams_own_error_t) { *((int32_t*) (ptr + 12)) }; - break; - } - case 1: { - break; - } - } - - result.val.err = variant; - break; - } - } - if (!result.is_err) { - *ret = result.val.ok; - return 1; - } else { - *err = result.val.err; - return 0; - } -} - -bool wasi_io_0_2_0_rc_2023_11_10_streams_method_output_stream_blocking_splice(wasi_io_0_2_0_rc_2023_11_10_streams_borrow_output_stream_t self, wasi_io_0_2_0_rc_2023_11_10_streams_borrow_input_stream_t src, uint64_t len, uint64_t *ret, wasi_io_0_2_0_rc_2023_11_10_streams_stream_error_t *err) { - __attribute__((__aligned__(8))) - uint8_t ret_area[16]; - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_io_0_2_0_rc_2023_11_10_streams_method_output_stream_blocking_splice((self).__handle, (src).__handle, (int64_t) (len), ptr); - wasi_io_0_2_0_rc_2023_11_10_streams_result_u64_stream_error_t result; - switch ((int32_t) (*((uint8_t*) (ptr + 0)))) { - case 0: { - result.is_err = false; - result.val.ok = (uint64_t) (*((int64_t*) (ptr + 8))); - break; - } - case 1: { - result.is_err = true; - wasi_io_0_2_0_rc_2023_11_10_streams_stream_error_t variant; - variant.tag = (int32_t) (*((uint8_t*) (ptr + 8))); - switch ((int32_t) variant.tag) { - case 0: { - variant.val.last_operation_failed = (wasi_io_0_2_0_rc_2023_11_10_streams_own_error_t) { *((int32_t*) (ptr + 12)) }; - break; - } - case 1: { - break; - } - } - - result.val.err = variant; - break; - } - } - if (!result.is_err) { - *ret = result.val.ok; - return 1; - } else { - *err = result.val.err; - return 0; - } -} - -wasi_cli_0_2_0_rc_2023_12_05_stdin_own_input_stream_t wasi_cli_0_2_0_rc_2023_12_05_stdin_get_stdin(void) { - int32_t ret = __wasm_import_wasi_cli_0_2_0_rc_2023_12_05_stdin_get_stdin(); - return (wasi_cli_0_2_0_rc_2023_12_05_stdin_own_input_stream_t) { ret }; -} - -wasi_cli_0_2_0_rc_2023_12_05_stdout_own_output_stream_t wasi_cli_0_2_0_rc_2023_12_05_stdout_get_stdout(void) { - int32_t ret = __wasm_import_wasi_cli_0_2_0_rc_2023_12_05_stdout_get_stdout(); - return (wasi_cli_0_2_0_rc_2023_12_05_stdout_own_output_stream_t) { ret }; -} - -wasi_cli_0_2_0_rc_2023_12_05_stderr_own_output_stream_t wasi_cli_0_2_0_rc_2023_12_05_stderr_get_stderr(void) { - int32_t ret = __wasm_import_wasi_cli_0_2_0_rc_2023_12_05_stderr_get_stderr(); - return (wasi_cli_0_2_0_rc_2023_12_05_stderr_own_output_stream_t) { ret }; -} - -bool wasi_cli_0_2_0_rc_2023_12_05_terminal_stdin_get_terminal_stdin(wasi_cli_0_2_0_rc_2023_12_05_terminal_stdin_own_terminal_input_t *ret) { - __attribute__((__aligned__(4))) - uint8_t ret_area[8]; - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_cli_0_2_0_rc_2023_12_05_terminal_stdin_get_terminal_stdin(ptr); - wasi_cli_0_2_0_rc_2023_12_05_terminal_stdin_option_own_terminal_input_t option; - switch ((int32_t) (*((uint8_t*) (ptr + 0)))) { - case 0: { - option.is_some = false; - break; - } - case 1: { - option.is_some = true; - option.val = (wasi_cli_0_2_0_rc_2023_12_05_terminal_stdin_own_terminal_input_t) { *((int32_t*) (ptr + 4)) }; - break; - } - } - *ret = option.val; - return option.is_some; -} - -bool wasi_cli_0_2_0_rc_2023_12_05_terminal_stdout_get_terminal_stdout(wasi_cli_0_2_0_rc_2023_12_05_terminal_stdout_own_terminal_output_t *ret) { - __attribute__((__aligned__(4))) - uint8_t ret_area[8]; - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_cli_0_2_0_rc_2023_12_05_terminal_stdout_get_terminal_stdout(ptr); - wasi_cli_0_2_0_rc_2023_12_05_terminal_stdout_option_own_terminal_output_t option; - switch ((int32_t) (*((uint8_t*) (ptr + 0)))) { - case 0: { - option.is_some = false; - break; - } - case 1: { - option.is_some = true; - option.val = (wasi_cli_0_2_0_rc_2023_12_05_terminal_stdout_own_terminal_output_t) { *((int32_t*) (ptr + 4)) }; - break; - } - } - *ret = option.val; - return option.is_some; -} - -bool wasi_cli_0_2_0_rc_2023_12_05_terminal_stderr_get_terminal_stderr(wasi_cli_0_2_0_rc_2023_12_05_terminal_stderr_own_terminal_output_t *ret) { - __attribute__((__aligned__(4))) - uint8_t ret_area[8]; - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_cli_0_2_0_rc_2023_12_05_terminal_stderr_get_terminal_stderr(ptr); - wasi_cli_0_2_0_rc_2023_12_05_terminal_stderr_option_own_terminal_output_t option; - switch ((int32_t) (*((uint8_t*) (ptr + 0)))) { - case 0: { - option.is_some = false; - break; - } - case 1: { - option.is_some = true; - option.val = (wasi_cli_0_2_0_rc_2023_12_05_terminal_stderr_own_terminal_output_t) { *((int32_t*) (ptr + 4)) }; - break; - } - } - *ret = option.val; - return option.is_some; -} - -wasi_clocks_0_2_0_rc_2023_11_10_monotonic_clock_instant_t wasi_clocks_0_2_0_rc_2023_11_10_monotonic_clock_now(void) { - int64_t ret = __wasm_import_wasi_clocks_0_2_0_rc_2023_11_10_monotonic_clock_now(); - return (uint64_t) (ret); -} - -wasi_clocks_0_2_0_rc_2023_11_10_monotonic_clock_duration_t wasi_clocks_0_2_0_rc_2023_11_10_monotonic_clock_resolution(void) { - int64_t ret = __wasm_import_wasi_clocks_0_2_0_rc_2023_11_10_monotonic_clock_resolution(); - return (uint64_t) (ret); -} - -wasi_clocks_0_2_0_rc_2023_11_10_monotonic_clock_own_pollable_t wasi_clocks_0_2_0_rc_2023_11_10_monotonic_clock_subscribe_instant(wasi_clocks_0_2_0_rc_2023_11_10_monotonic_clock_instant_t when) { - int32_t ret = __wasm_import_wasi_clocks_0_2_0_rc_2023_11_10_monotonic_clock_subscribe_instant((int64_t) (when)); - return (wasi_clocks_0_2_0_rc_2023_11_10_monotonic_clock_own_pollable_t) { ret }; -} - -wasi_clocks_0_2_0_rc_2023_11_10_monotonic_clock_own_pollable_t wasi_clocks_0_2_0_rc_2023_11_10_monotonic_clock_subscribe_duration(wasi_clocks_0_2_0_rc_2023_11_10_monotonic_clock_duration_t when) { - int32_t ret = __wasm_import_wasi_clocks_0_2_0_rc_2023_11_10_monotonic_clock_subscribe_duration((int64_t) (when)); - return (wasi_clocks_0_2_0_rc_2023_11_10_monotonic_clock_own_pollable_t) { ret }; -} - -void wasi_clocks_0_2_0_rc_2023_11_10_wall_clock_now(wasi_clocks_0_2_0_rc_2023_11_10_wall_clock_datetime_t *ret) { - __attribute__((__aligned__(8))) - uint8_t ret_area[16]; - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_clocks_0_2_0_rc_2023_11_10_wall_clock_now(ptr); - *ret = (wasi_clocks_0_2_0_rc_2023_11_10_wall_clock_datetime_t) { - (uint64_t) (*((int64_t*) (ptr + 0))), - (uint32_t) (*((int32_t*) (ptr + 8))), - }; -} - -void wasi_clocks_0_2_0_rc_2023_11_10_wall_clock_resolution(wasi_clocks_0_2_0_rc_2023_11_10_wall_clock_datetime_t *ret) { - __attribute__((__aligned__(8))) - uint8_t ret_area[16]; - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_clocks_0_2_0_rc_2023_11_10_wall_clock_resolution(ptr); - *ret = (wasi_clocks_0_2_0_rc_2023_11_10_wall_clock_datetime_t) { - (uint64_t) (*((int64_t*) (ptr + 0))), - (uint32_t) (*((int32_t*) (ptr + 8))), - }; -} - -bool wasi_filesystem_0_2_0_rc_2023_11_10_types_method_descriptor_read_via_stream(wasi_filesystem_0_2_0_rc_2023_11_10_types_borrow_descriptor_t self, wasi_filesystem_0_2_0_rc_2023_11_10_types_filesize_t offset, wasi_filesystem_0_2_0_rc_2023_11_10_types_own_input_stream_t *ret, wasi_filesystem_0_2_0_rc_2023_11_10_types_error_code_t *err) { - __attribute__((__aligned__(4))) - uint8_t ret_area[8]; - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_filesystem_0_2_0_rc_2023_11_10_types_method_descriptor_read_via_stream((self).__handle, (int64_t) (offset), ptr); - wasi_filesystem_0_2_0_rc_2023_11_10_types_result_own_input_stream_error_code_t result; - switch ((int32_t) (*((uint8_t*) (ptr + 0)))) { - case 0: { - result.is_err = false; - result.val.ok = (wasi_filesystem_0_2_0_rc_2023_11_10_types_own_input_stream_t) { *((int32_t*) (ptr + 4)) }; - break; - } - case 1: { - result.is_err = true; - result.val.err = (int32_t) (*((uint8_t*) (ptr + 4))); - break; - } - } - if (!result.is_err) { - *ret = result.val.ok; - return 1; - } else { - *err = result.val.err; - return 0; - } -} - -bool wasi_filesystem_0_2_0_rc_2023_11_10_types_method_descriptor_write_via_stream(wasi_filesystem_0_2_0_rc_2023_11_10_types_borrow_descriptor_t self, wasi_filesystem_0_2_0_rc_2023_11_10_types_filesize_t offset, wasi_filesystem_0_2_0_rc_2023_11_10_types_own_output_stream_t *ret, wasi_filesystem_0_2_0_rc_2023_11_10_types_error_code_t *err) { - __attribute__((__aligned__(4))) - uint8_t ret_area[8]; - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_filesystem_0_2_0_rc_2023_11_10_types_method_descriptor_write_via_stream((self).__handle, (int64_t) (offset), ptr); - wasi_filesystem_0_2_0_rc_2023_11_10_types_result_own_output_stream_error_code_t result; - switch ((int32_t) (*((uint8_t*) (ptr + 0)))) { - case 0: { - result.is_err = false; - result.val.ok = (wasi_filesystem_0_2_0_rc_2023_11_10_types_own_output_stream_t) { *((int32_t*) (ptr + 4)) }; - break; - } - case 1: { - result.is_err = true; - result.val.err = (int32_t) (*((uint8_t*) (ptr + 4))); - break; - } - } - if (!result.is_err) { - *ret = result.val.ok; - return 1; - } else { - *err = result.val.err; - return 0; - } -} - -bool wasi_filesystem_0_2_0_rc_2023_11_10_types_method_descriptor_append_via_stream(wasi_filesystem_0_2_0_rc_2023_11_10_types_borrow_descriptor_t self, wasi_filesystem_0_2_0_rc_2023_11_10_types_own_output_stream_t *ret, wasi_filesystem_0_2_0_rc_2023_11_10_types_error_code_t *err) { - __attribute__((__aligned__(4))) - uint8_t ret_area[8]; - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_filesystem_0_2_0_rc_2023_11_10_types_method_descriptor_append_via_stream((self).__handle, ptr); - wasi_filesystem_0_2_0_rc_2023_11_10_types_result_own_output_stream_error_code_t result; - switch ((int32_t) (*((uint8_t*) (ptr + 0)))) { - case 0: { - result.is_err = false; - result.val.ok = (wasi_filesystem_0_2_0_rc_2023_11_10_types_own_output_stream_t) { *((int32_t*) (ptr + 4)) }; - break; - } - case 1: { - result.is_err = true; - result.val.err = (int32_t) (*((uint8_t*) (ptr + 4))); - break; - } - } - if (!result.is_err) { - *ret = result.val.ok; - return 1; - } else { - *err = result.val.err; - return 0; - } -} - -bool wasi_filesystem_0_2_0_rc_2023_11_10_types_method_descriptor_advise(wasi_filesystem_0_2_0_rc_2023_11_10_types_borrow_descriptor_t self, wasi_filesystem_0_2_0_rc_2023_11_10_types_filesize_t offset, wasi_filesystem_0_2_0_rc_2023_11_10_types_filesize_t length, wasi_filesystem_0_2_0_rc_2023_11_10_types_advice_t advice, wasi_filesystem_0_2_0_rc_2023_11_10_types_error_code_t *err) { - __attribute__((__aligned__(1))) - uint8_t ret_area[2]; - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_filesystem_0_2_0_rc_2023_11_10_types_method_descriptor_advise((self).__handle, (int64_t) (offset), (int64_t) (length), (int32_t) advice, ptr); - wasi_filesystem_0_2_0_rc_2023_11_10_types_result_void_error_code_t result; - switch ((int32_t) (*((uint8_t*) (ptr + 0)))) { - case 0: { - result.is_err = false; - break; - } - case 1: { - result.is_err = true; - result.val.err = (int32_t) (*((uint8_t*) (ptr + 1))); - break; - } - } - if (!result.is_err) { - return 1; - } else { - *err = result.val.err; - return 0; - } -} - -bool wasi_filesystem_0_2_0_rc_2023_11_10_types_method_descriptor_sync_data(wasi_filesystem_0_2_0_rc_2023_11_10_types_borrow_descriptor_t self, wasi_filesystem_0_2_0_rc_2023_11_10_types_error_code_t *err) { - __attribute__((__aligned__(1))) - uint8_t ret_area[2]; - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_filesystem_0_2_0_rc_2023_11_10_types_method_descriptor_sync_data((self).__handle, ptr); - wasi_filesystem_0_2_0_rc_2023_11_10_types_result_void_error_code_t result; - switch ((int32_t) (*((uint8_t*) (ptr + 0)))) { - case 0: { - result.is_err = false; - break; - } - case 1: { - result.is_err = true; - result.val.err = (int32_t) (*((uint8_t*) (ptr + 1))); - break; - } - } - if (!result.is_err) { - return 1; - } else { - *err = result.val.err; - return 0; - } -} - -bool wasi_filesystem_0_2_0_rc_2023_11_10_types_method_descriptor_get_flags(wasi_filesystem_0_2_0_rc_2023_11_10_types_borrow_descriptor_t self, wasi_filesystem_0_2_0_rc_2023_11_10_types_descriptor_flags_t *ret, wasi_filesystem_0_2_0_rc_2023_11_10_types_error_code_t *err) { - __attribute__((__aligned__(1))) - uint8_t ret_area[2]; - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_filesystem_0_2_0_rc_2023_11_10_types_method_descriptor_get_flags((self).__handle, ptr); - wasi_filesystem_0_2_0_rc_2023_11_10_types_result_descriptor_flags_error_code_t result; - switch ((int32_t) (*((uint8_t*) (ptr + 0)))) { - case 0: { - result.is_err = false; - result.val.ok = (int32_t) (*((uint8_t*) (ptr + 1))); - break; - } - case 1: { - result.is_err = true; - result.val.err = (int32_t) (*((uint8_t*) (ptr + 1))); - break; - } - } - if (!result.is_err) { - *ret = result.val.ok; - return 1; - } else { - *err = result.val.err; - return 0; - } -} - -bool wasi_filesystem_0_2_0_rc_2023_11_10_types_method_descriptor_get_type(wasi_filesystem_0_2_0_rc_2023_11_10_types_borrow_descriptor_t self, wasi_filesystem_0_2_0_rc_2023_11_10_types_descriptor_type_t *ret, wasi_filesystem_0_2_0_rc_2023_11_10_types_error_code_t *err) { - __attribute__((__aligned__(1))) - uint8_t ret_area[2]; - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_filesystem_0_2_0_rc_2023_11_10_types_method_descriptor_get_type((self).__handle, ptr); - wasi_filesystem_0_2_0_rc_2023_11_10_types_result_descriptor_type_error_code_t result; - switch ((int32_t) (*((uint8_t*) (ptr + 0)))) { - case 0: { - result.is_err = false; - result.val.ok = (int32_t) (*((uint8_t*) (ptr + 1))); - break; - } - case 1: { - result.is_err = true; - result.val.err = (int32_t) (*((uint8_t*) (ptr + 1))); - break; - } - } - if (!result.is_err) { - *ret = result.val.ok; - return 1; - } else { - *err = result.val.err; - return 0; - } -} - -bool wasi_filesystem_0_2_0_rc_2023_11_10_types_method_descriptor_set_size(wasi_filesystem_0_2_0_rc_2023_11_10_types_borrow_descriptor_t self, wasi_filesystem_0_2_0_rc_2023_11_10_types_filesize_t size, wasi_filesystem_0_2_0_rc_2023_11_10_types_error_code_t *err) { - __attribute__((__aligned__(1))) - uint8_t ret_area[2]; - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_filesystem_0_2_0_rc_2023_11_10_types_method_descriptor_set_size((self).__handle, (int64_t) (size), ptr); - wasi_filesystem_0_2_0_rc_2023_11_10_types_result_void_error_code_t result; - switch ((int32_t) (*((uint8_t*) (ptr + 0)))) { - case 0: { - result.is_err = false; - break; - } - case 1: { - result.is_err = true; - result.val.err = (int32_t) (*((uint8_t*) (ptr + 1))); - break; - } - } - if (!result.is_err) { - return 1; - } else { - *err = result.val.err; - return 0; - } -} - -bool wasi_filesystem_0_2_0_rc_2023_11_10_types_method_descriptor_set_times(wasi_filesystem_0_2_0_rc_2023_11_10_types_borrow_descriptor_t self, wasi_filesystem_0_2_0_rc_2023_11_10_types_new_timestamp_t *data_access_timestamp, wasi_filesystem_0_2_0_rc_2023_11_10_types_new_timestamp_t *data_modification_timestamp, wasi_filesystem_0_2_0_rc_2023_11_10_types_error_code_t *err) { - __attribute__((__aligned__(1))) - uint8_t ret_area[2]; - int32_t variant; - int64_t variant2; - int32_t variant3; - switch ((int32_t) (*data_access_timestamp).tag) { - case 0: { - variant = 0; - variant2 = 0; - variant3 = 0; - break; - } - case 1: { - variant = 1; - variant2 = 0; - variant3 = 0; - break; - } - case 2: { - const wasi_filesystem_0_2_0_rc_2023_11_10_types_datetime_t *payload1 = &(*data_access_timestamp).val.timestamp; - variant = 2; - variant2 = (int64_t) ((*payload1).seconds); - variant3 = (int32_t) ((*payload1).nanoseconds); - break; - } - } - int32_t variant7; - int64_t variant8; - int32_t variant9; - switch ((int32_t) (*data_modification_timestamp).tag) { - case 0: { - variant7 = 0; - variant8 = 0; - variant9 = 0; - break; - } - case 1: { - variant7 = 1; - variant8 = 0; - variant9 = 0; - break; - } - case 2: { - const wasi_filesystem_0_2_0_rc_2023_11_10_types_datetime_t *payload6 = &(*data_modification_timestamp).val.timestamp; - variant7 = 2; - variant8 = (int64_t) ((*payload6).seconds); - variant9 = (int32_t) ((*payload6).nanoseconds); - break; - } - } - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_filesystem_0_2_0_rc_2023_11_10_types_method_descriptor_set_times((self).__handle, variant, variant2, variant3, variant7, variant8, variant9, ptr); - wasi_filesystem_0_2_0_rc_2023_11_10_types_result_void_error_code_t result; - switch ((int32_t) (*((uint8_t*) (ptr + 0)))) { - case 0: { - result.is_err = false; - break; - } - case 1: { - result.is_err = true; - result.val.err = (int32_t) (*((uint8_t*) (ptr + 1))); - break; - } - } - if (!result.is_err) { - return 1; - } else { - *err = result.val.err; - return 0; - } -} - -bool wasi_filesystem_0_2_0_rc_2023_11_10_types_method_descriptor_read(wasi_filesystem_0_2_0_rc_2023_11_10_types_borrow_descriptor_t self, wasi_filesystem_0_2_0_rc_2023_11_10_types_filesize_t length, wasi_filesystem_0_2_0_rc_2023_11_10_types_filesize_t offset, bindings_tuple2_list_u8_bool_t *ret, wasi_filesystem_0_2_0_rc_2023_11_10_types_error_code_t *err) { - __attribute__((__aligned__(4))) - uint8_t ret_area[16]; - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_filesystem_0_2_0_rc_2023_11_10_types_method_descriptor_read((self).__handle, (int64_t) (length), (int64_t) (offset), ptr); - wasi_filesystem_0_2_0_rc_2023_11_10_types_result_tuple2_list_u8_bool_error_code_t result; - switch ((int32_t) (*((uint8_t*) (ptr + 0)))) { - case 0: { - result.is_err = false; - result.val.ok = (bindings_tuple2_list_u8_bool_t) { - (bindings_list_u8_t) { (uint8_t*)(*((int32_t*) (ptr + 4))), (size_t)(*((int32_t*) (ptr + 8))) }, - (int32_t) (*((uint8_t*) (ptr + 12))), - }; - break; - } - case 1: { - result.is_err = true; - result.val.err = (int32_t) (*((uint8_t*) (ptr + 4))); - break; - } - } - if (!result.is_err) { - *ret = result.val.ok; - return 1; - } else { - *err = result.val.err; - return 0; - } -} - -bool wasi_filesystem_0_2_0_rc_2023_11_10_types_method_descriptor_write(wasi_filesystem_0_2_0_rc_2023_11_10_types_borrow_descriptor_t self, bindings_list_u8_t *buffer, wasi_filesystem_0_2_0_rc_2023_11_10_types_filesize_t offset, wasi_filesystem_0_2_0_rc_2023_11_10_types_filesize_t *ret, wasi_filesystem_0_2_0_rc_2023_11_10_types_error_code_t *err) { - __attribute__((__aligned__(8))) - uint8_t ret_area[16]; - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_filesystem_0_2_0_rc_2023_11_10_types_method_descriptor_write((self).__handle, (int32_t) (*buffer).ptr, (int32_t) (*buffer).len, (int64_t) (offset), ptr); - wasi_filesystem_0_2_0_rc_2023_11_10_types_result_filesize_error_code_t result; - switch ((int32_t) (*((uint8_t*) (ptr + 0)))) { - case 0: { - result.is_err = false; - result.val.ok = (uint64_t) (*((int64_t*) (ptr + 8))); - break; - } - case 1: { - result.is_err = true; - result.val.err = (int32_t) (*((uint8_t*) (ptr + 8))); - break; - } - } - if (!result.is_err) { - *ret = result.val.ok; - return 1; - } else { - *err = result.val.err; - return 0; - } -} - -bool wasi_filesystem_0_2_0_rc_2023_11_10_types_method_descriptor_read_directory(wasi_filesystem_0_2_0_rc_2023_11_10_types_borrow_descriptor_t self, wasi_filesystem_0_2_0_rc_2023_11_10_types_own_directory_entry_stream_t *ret, wasi_filesystem_0_2_0_rc_2023_11_10_types_error_code_t *err) { - __attribute__((__aligned__(4))) - uint8_t ret_area[8]; - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_filesystem_0_2_0_rc_2023_11_10_types_method_descriptor_read_directory((self).__handle, ptr); - wasi_filesystem_0_2_0_rc_2023_11_10_types_result_own_directory_entry_stream_error_code_t result; - switch ((int32_t) (*((uint8_t*) (ptr + 0)))) { - case 0: { - result.is_err = false; - result.val.ok = (wasi_filesystem_0_2_0_rc_2023_11_10_types_own_directory_entry_stream_t) { *((int32_t*) (ptr + 4)) }; - break; - } - case 1: { - result.is_err = true; - result.val.err = (int32_t) (*((uint8_t*) (ptr + 4))); - break; - } - } - if (!result.is_err) { - *ret = result.val.ok; - return 1; - } else { - *err = result.val.err; - return 0; - } -} - -bool wasi_filesystem_0_2_0_rc_2023_11_10_types_method_descriptor_sync(wasi_filesystem_0_2_0_rc_2023_11_10_types_borrow_descriptor_t self, wasi_filesystem_0_2_0_rc_2023_11_10_types_error_code_t *err) { - __attribute__((__aligned__(1))) - uint8_t ret_area[2]; - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_filesystem_0_2_0_rc_2023_11_10_types_method_descriptor_sync((self).__handle, ptr); - wasi_filesystem_0_2_0_rc_2023_11_10_types_result_void_error_code_t result; - switch ((int32_t) (*((uint8_t*) (ptr + 0)))) { - case 0: { - result.is_err = false; - break; - } - case 1: { - result.is_err = true; - result.val.err = (int32_t) (*((uint8_t*) (ptr + 1))); - break; - } - } - if (!result.is_err) { - return 1; - } else { - *err = result.val.err; - return 0; - } -} - -bool wasi_filesystem_0_2_0_rc_2023_11_10_types_method_descriptor_create_directory_at(wasi_filesystem_0_2_0_rc_2023_11_10_types_borrow_descriptor_t self, bindings_string_t *path, wasi_filesystem_0_2_0_rc_2023_11_10_types_error_code_t *err) { - __attribute__((__aligned__(1))) - uint8_t ret_area[2]; - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_filesystem_0_2_0_rc_2023_11_10_types_method_descriptor_create_directory_at((self).__handle, (int32_t) (*path).ptr, (int32_t) (*path).len, ptr); - wasi_filesystem_0_2_0_rc_2023_11_10_types_result_void_error_code_t result; - switch ((int32_t) (*((uint8_t*) (ptr + 0)))) { - case 0: { - result.is_err = false; - break; - } - case 1: { - result.is_err = true; - result.val.err = (int32_t) (*((uint8_t*) (ptr + 1))); - break; - } - } - if (!result.is_err) { - return 1; - } else { - *err = result.val.err; - return 0; - } -} - -bool wasi_filesystem_0_2_0_rc_2023_11_10_types_method_descriptor_stat(wasi_filesystem_0_2_0_rc_2023_11_10_types_borrow_descriptor_t self, wasi_filesystem_0_2_0_rc_2023_11_10_types_descriptor_stat_t *ret, wasi_filesystem_0_2_0_rc_2023_11_10_types_error_code_t *err) { - __attribute__((__aligned__(8))) - uint8_t ret_area[104]; - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_filesystem_0_2_0_rc_2023_11_10_types_method_descriptor_stat((self).__handle, ptr); - wasi_filesystem_0_2_0_rc_2023_11_10_types_result_descriptor_stat_error_code_t result; - switch ((int32_t) (*((uint8_t*) (ptr + 0)))) { - case 0: { - result.is_err = false; - wasi_filesystem_0_2_0_rc_2023_11_10_types_option_datetime_t option; - switch ((int32_t) (*((uint8_t*) (ptr + 32)))) { - case 0: { - option.is_some = false; - break; - } - case 1: { - option.is_some = true; - option.val = (wasi_clocks_0_2_0_rc_2023_11_10_wall_clock_datetime_t) { - (uint64_t) (*((int64_t*) (ptr + 40))), - (uint32_t) (*((int32_t*) (ptr + 48))), - }; - break; - } - } - wasi_filesystem_0_2_0_rc_2023_11_10_types_option_datetime_t option0; - switch ((int32_t) (*((uint8_t*) (ptr + 56)))) { - case 0: { - option0.is_some = false; - break; - } - case 1: { - option0.is_some = true; - option0.val = (wasi_clocks_0_2_0_rc_2023_11_10_wall_clock_datetime_t) { - (uint64_t) (*((int64_t*) (ptr + 64))), - (uint32_t) (*((int32_t*) (ptr + 72))), - }; - break; - } - } - wasi_filesystem_0_2_0_rc_2023_11_10_types_option_datetime_t option1; - switch ((int32_t) (*((uint8_t*) (ptr + 80)))) { - case 0: { - option1.is_some = false; - break; - } - case 1: { - option1.is_some = true; - option1.val = (wasi_clocks_0_2_0_rc_2023_11_10_wall_clock_datetime_t) { - (uint64_t) (*((int64_t*) (ptr + 88))), - (uint32_t) (*((int32_t*) (ptr + 96))), - }; - break; - } - } - - result.val.ok = (wasi_filesystem_0_2_0_rc_2023_11_10_types_descriptor_stat_t) { - (int32_t) (*((uint8_t*) (ptr + 8))), - (uint64_t) (*((int64_t*) (ptr + 16))), - (uint64_t) (*((int64_t*) (ptr + 24))), - option, - option0, - option1, - }; - break; - } - case 1: { - result.is_err = true; - result.val.err = (int32_t) (*((uint8_t*) (ptr + 8))); - break; - } - } - if (!result.is_err) { - *ret = result.val.ok; - return 1; - } else { - *err = result.val.err; - return 0; - } -} - -bool wasi_filesystem_0_2_0_rc_2023_11_10_types_method_descriptor_stat_at(wasi_filesystem_0_2_0_rc_2023_11_10_types_borrow_descriptor_t self, wasi_filesystem_0_2_0_rc_2023_11_10_types_path_flags_t path_flags, bindings_string_t *path, wasi_filesystem_0_2_0_rc_2023_11_10_types_descriptor_stat_t *ret, wasi_filesystem_0_2_0_rc_2023_11_10_types_error_code_t *err) { - __attribute__((__aligned__(8))) - uint8_t ret_area[104]; - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_filesystem_0_2_0_rc_2023_11_10_types_method_descriptor_stat_at((self).__handle, path_flags, (int32_t) (*path).ptr, (int32_t) (*path).len, ptr); - wasi_filesystem_0_2_0_rc_2023_11_10_types_result_descriptor_stat_error_code_t result; - switch ((int32_t) (*((uint8_t*) (ptr + 0)))) { - case 0: { - result.is_err = false; - wasi_filesystem_0_2_0_rc_2023_11_10_types_option_datetime_t option; - switch ((int32_t) (*((uint8_t*) (ptr + 32)))) { - case 0: { - option.is_some = false; - break; - } - case 1: { - option.is_some = true; - option.val = (wasi_clocks_0_2_0_rc_2023_11_10_wall_clock_datetime_t) { - (uint64_t) (*((int64_t*) (ptr + 40))), - (uint32_t) (*((int32_t*) (ptr + 48))), - }; - break; - } - } - wasi_filesystem_0_2_0_rc_2023_11_10_types_option_datetime_t option0; - switch ((int32_t) (*((uint8_t*) (ptr + 56)))) { - case 0: { - option0.is_some = false; - break; - } - case 1: { - option0.is_some = true; - option0.val = (wasi_clocks_0_2_0_rc_2023_11_10_wall_clock_datetime_t) { - (uint64_t) (*((int64_t*) (ptr + 64))), - (uint32_t) (*((int32_t*) (ptr + 72))), - }; - break; - } - } - wasi_filesystem_0_2_0_rc_2023_11_10_types_option_datetime_t option1; - switch ((int32_t) (*((uint8_t*) (ptr + 80)))) { - case 0: { - option1.is_some = false; - break; - } - case 1: { - option1.is_some = true; - option1.val = (wasi_clocks_0_2_0_rc_2023_11_10_wall_clock_datetime_t) { - (uint64_t) (*((int64_t*) (ptr + 88))), - (uint32_t) (*((int32_t*) (ptr + 96))), - }; - break; - } - } - - result.val.ok = (wasi_filesystem_0_2_0_rc_2023_11_10_types_descriptor_stat_t) { - (int32_t) (*((uint8_t*) (ptr + 8))), - (uint64_t) (*((int64_t*) (ptr + 16))), - (uint64_t) (*((int64_t*) (ptr + 24))), - option, - option0, - option1, - }; - break; - } - case 1: { - result.is_err = true; - result.val.err = (int32_t) (*((uint8_t*) (ptr + 8))); - break; - } - } - if (!result.is_err) { - *ret = result.val.ok; - return 1; - } else { - *err = result.val.err; - return 0; - } -} - -bool wasi_filesystem_0_2_0_rc_2023_11_10_types_method_descriptor_set_times_at(wasi_filesystem_0_2_0_rc_2023_11_10_types_borrow_descriptor_t self, wasi_filesystem_0_2_0_rc_2023_11_10_types_path_flags_t path_flags, bindings_string_t *path, wasi_filesystem_0_2_0_rc_2023_11_10_types_new_timestamp_t *data_access_timestamp, wasi_filesystem_0_2_0_rc_2023_11_10_types_new_timestamp_t *data_modification_timestamp, wasi_filesystem_0_2_0_rc_2023_11_10_types_error_code_t *err) { - __attribute__((__aligned__(1))) - uint8_t ret_area[2]; - int32_t variant; - int64_t variant2; - int32_t variant3; - switch ((int32_t) (*data_access_timestamp).tag) { - case 0: { - variant = 0; - variant2 = 0; - variant3 = 0; - break; - } - case 1: { - variant = 1; - variant2 = 0; - variant3 = 0; - break; - } - case 2: { - const wasi_filesystem_0_2_0_rc_2023_11_10_types_datetime_t *payload1 = &(*data_access_timestamp).val.timestamp; - variant = 2; - variant2 = (int64_t) ((*payload1).seconds); - variant3 = (int32_t) ((*payload1).nanoseconds); - break; - } - } - int32_t variant7; - int64_t variant8; - int32_t variant9; - switch ((int32_t) (*data_modification_timestamp).tag) { - case 0: { - variant7 = 0; - variant8 = 0; - variant9 = 0; - break; - } - case 1: { - variant7 = 1; - variant8 = 0; - variant9 = 0; - break; - } - case 2: { - const wasi_filesystem_0_2_0_rc_2023_11_10_types_datetime_t *payload6 = &(*data_modification_timestamp).val.timestamp; - variant7 = 2; - variant8 = (int64_t) ((*payload6).seconds); - variant9 = (int32_t) ((*payload6).nanoseconds); - break; - } - } - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_filesystem_0_2_0_rc_2023_11_10_types_method_descriptor_set_times_at((self).__handle, path_flags, (int32_t) (*path).ptr, (int32_t) (*path).len, variant, variant2, variant3, variant7, variant8, variant9, ptr); - wasi_filesystem_0_2_0_rc_2023_11_10_types_result_void_error_code_t result; - switch ((int32_t) (*((uint8_t*) (ptr + 0)))) { - case 0: { - result.is_err = false; - break; - } - case 1: { - result.is_err = true; - result.val.err = (int32_t) (*((uint8_t*) (ptr + 1))); - break; - } - } - if (!result.is_err) { - return 1; - } else { - *err = result.val.err; - return 0; - } -} - -bool wasi_filesystem_0_2_0_rc_2023_11_10_types_method_descriptor_link_at(wasi_filesystem_0_2_0_rc_2023_11_10_types_borrow_descriptor_t self, wasi_filesystem_0_2_0_rc_2023_11_10_types_path_flags_t old_path_flags, bindings_string_t *old_path, wasi_filesystem_0_2_0_rc_2023_11_10_types_borrow_descriptor_t new_descriptor, bindings_string_t *new_path, wasi_filesystem_0_2_0_rc_2023_11_10_types_error_code_t *err) { - __attribute__((__aligned__(1))) - uint8_t ret_area[2]; - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_filesystem_0_2_0_rc_2023_11_10_types_method_descriptor_link_at((self).__handle, old_path_flags, (int32_t) (*old_path).ptr, (int32_t) (*old_path).len, (new_descriptor).__handle, (int32_t) (*new_path).ptr, (int32_t) (*new_path).len, ptr); - wasi_filesystem_0_2_0_rc_2023_11_10_types_result_void_error_code_t result; - switch ((int32_t) (*((uint8_t*) (ptr + 0)))) { - case 0: { - result.is_err = false; - break; - } - case 1: { - result.is_err = true; - result.val.err = (int32_t) (*((uint8_t*) (ptr + 1))); - break; - } - } - if (!result.is_err) { - return 1; - } else { - *err = result.val.err; - return 0; - } -} - -bool wasi_filesystem_0_2_0_rc_2023_11_10_types_method_descriptor_open_at(wasi_filesystem_0_2_0_rc_2023_11_10_types_borrow_descriptor_t self, wasi_filesystem_0_2_0_rc_2023_11_10_types_path_flags_t path_flags, bindings_string_t *path, wasi_filesystem_0_2_0_rc_2023_11_10_types_open_flags_t open_flags, wasi_filesystem_0_2_0_rc_2023_11_10_types_descriptor_flags_t flags, wasi_filesystem_0_2_0_rc_2023_11_10_types_own_descriptor_t *ret, wasi_filesystem_0_2_0_rc_2023_11_10_types_error_code_t *err) { - __attribute__((__aligned__(4))) - uint8_t ret_area[8]; - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_filesystem_0_2_0_rc_2023_11_10_types_method_descriptor_open_at((self).__handle, path_flags, (int32_t) (*path).ptr, (int32_t) (*path).len, open_flags, flags, ptr); - wasi_filesystem_0_2_0_rc_2023_11_10_types_result_own_descriptor_error_code_t result; - switch ((int32_t) (*((uint8_t*) (ptr + 0)))) { - case 0: { - result.is_err = false; - result.val.ok = (wasi_filesystem_0_2_0_rc_2023_11_10_types_own_descriptor_t) { *((int32_t*) (ptr + 4)) }; - break; - } - case 1: { - result.is_err = true; - result.val.err = (int32_t) (*((uint8_t*) (ptr + 4))); - break; - } - } - if (!result.is_err) { - *ret = result.val.ok; - return 1; - } else { - *err = result.val.err; - return 0; - } -} - -bool wasi_filesystem_0_2_0_rc_2023_11_10_types_method_descriptor_readlink_at(wasi_filesystem_0_2_0_rc_2023_11_10_types_borrow_descriptor_t self, bindings_string_t *path, bindings_string_t *ret, wasi_filesystem_0_2_0_rc_2023_11_10_types_error_code_t *err) { - __attribute__((__aligned__(4))) - uint8_t ret_area[12]; - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_filesystem_0_2_0_rc_2023_11_10_types_method_descriptor_readlink_at((self).__handle, (int32_t) (*path).ptr, (int32_t) (*path).len, ptr); - wasi_filesystem_0_2_0_rc_2023_11_10_types_result_string_error_code_t result; - switch ((int32_t) (*((uint8_t*) (ptr + 0)))) { - case 0: { - result.is_err = false; - result.val.ok = (bindings_string_t) { (uint8_t*)(*((int32_t*) (ptr + 4))), (size_t)(*((int32_t*) (ptr + 8))) }; - break; - } - case 1: { - result.is_err = true; - result.val.err = (int32_t) (*((uint8_t*) (ptr + 4))); - break; - } - } - if (!result.is_err) { - *ret = result.val.ok; - return 1; - } else { - *err = result.val.err; - return 0; - } -} - -bool wasi_filesystem_0_2_0_rc_2023_11_10_types_method_descriptor_remove_directory_at(wasi_filesystem_0_2_0_rc_2023_11_10_types_borrow_descriptor_t self, bindings_string_t *path, wasi_filesystem_0_2_0_rc_2023_11_10_types_error_code_t *err) { - __attribute__((__aligned__(1))) - uint8_t ret_area[2]; - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_filesystem_0_2_0_rc_2023_11_10_types_method_descriptor_remove_directory_at((self).__handle, (int32_t) (*path).ptr, (int32_t) (*path).len, ptr); - wasi_filesystem_0_2_0_rc_2023_11_10_types_result_void_error_code_t result; - switch ((int32_t) (*((uint8_t*) (ptr + 0)))) { - case 0: { - result.is_err = false; - break; - } - case 1: { - result.is_err = true; - result.val.err = (int32_t) (*((uint8_t*) (ptr + 1))); - break; - } - } - if (!result.is_err) { - return 1; - } else { - *err = result.val.err; - return 0; - } -} - -bool wasi_filesystem_0_2_0_rc_2023_11_10_types_method_descriptor_rename_at(wasi_filesystem_0_2_0_rc_2023_11_10_types_borrow_descriptor_t self, bindings_string_t *old_path, wasi_filesystem_0_2_0_rc_2023_11_10_types_borrow_descriptor_t new_descriptor, bindings_string_t *new_path, wasi_filesystem_0_2_0_rc_2023_11_10_types_error_code_t *err) { - __attribute__((__aligned__(1))) - uint8_t ret_area[2]; - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_filesystem_0_2_0_rc_2023_11_10_types_method_descriptor_rename_at((self).__handle, (int32_t) (*old_path).ptr, (int32_t) (*old_path).len, (new_descriptor).__handle, (int32_t) (*new_path).ptr, (int32_t) (*new_path).len, ptr); - wasi_filesystem_0_2_0_rc_2023_11_10_types_result_void_error_code_t result; - switch ((int32_t) (*((uint8_t*) (ptr + 0)))) { - case 0: { - result.is_err = false; - break; - } - case 1: { - result.is_err = true; - result.val.err = (int32_t) (*((uint8_t*) (ptr + 1))); - break; - } - } - if (!result.is_err) { - return 1; - } else { - *err = result.val.err; - return 0; - } -} - -bool wasi_filesystem_0_2_0_rc_2023_11_10_types_method_descriptor_symlink_at(wasi_filesystem_0_2_0_rc_2023_11_10_types_borrow_descriptor_t self, bindings_string_t *old_path, bindings_string_t *new_path, wasi_filesystem_0_2_0_rc_2023_11_10_types_error_code_t *err) { - __attribute__((__aligned__(1))) - uint8_t ret_area[2]; - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_filesystem_0_2_0_rc_2023_11_10_types_method_descriptor_symlink_at((self).__handle, (int32_t) (*old_path).ptr, (int32_t) (*old_path).len, (int32_t) (*new_path).ptr, (int32_t) (*new_path).len, ptr); - wasi_filesystem_0_2_0_rc_2023_11_10_types_result_void_error_code_t result; - switch ((int32_t) (*((uint8_t*) (ptr + 0)))) { - case 0: { - result.is_err = false; - break; - } - case 1: { - result.is_err = true; - result.val.err = (int32_t) (*((uint8_t*) (ptr + 1))); - break; - } - } - if (!result.is_err) { - return 1; - } else { - *err = result.val.err; - return 0; - } -} - -bool wasi_filesystem_0_2_0_rc_2023_11_10_types_method_descriptor_unlink_file_at(wasi_filesystem_0_2_0_rc_2023_11_10_types_borrow_descriptor_t self, bindings_string_t *path, wasi_filesystem_0_2_0_rc_2023_11_10_types_error_code_t *err) { - __attribute__((__aligned__(1))) - uint8_t ret_area[2]; - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_filesystem_0_2_0_rc_2023_11_10_types_method_descriptor_unlink_file_at((self).__handle, (int32_t) (*path).ptr, (int32_t) (*path).len, ptr); - wasi_filesystem_0_2_0_rc_2023_11_10_types_result_void_error_code_t result; - switch ((int32_t) (*((uint8_t*) (ptr + 0)))) { - case 0: { - result.is_err = false; - break; - } - case 1: { - result.is_err = true; - result.val.err = (int32_t) (*((uint8_t*) (ptr + 1))); - break; - } - } - if (!result.is_err) { - return 1; - } else { - *err = result.val.err; - return 0; - } -} - -bool wasi_filesystem_0_2_0_rc_2023_11_10_types_method_descriptor_is_same_object(wasi_filesystem_0_2_0_rc_2023_11_10_types_borrow_descriptor_t self, wasi_filesystem_0_2_0_rc_2023_11_10_types_borrow_descriptor_t other) { - int32_t ret = __wasm_import_wasi_filesystem_0_2_0_rc_2023_11_10_types_method_descriptor_is_same_object((self).__handle, (other).__handle); - return ret; -} - -bool wasi_filesystem_0_2_0_rc_2023_11_10_types_method_descriptor_metadata_hash(wasi_filesystem_0_2_0_rc_2023_11_10_types_borrow_descriptor_t self, wasi_filesystem_0_2_0_rc_2023_11_10_types_metadata_hash_value_t *ret, wasi_filesystem_0_2_0_rc_2023_11_10_types_error_code_t *err) { - __attribute__((__aligned__(8))) - uint8_t ret_area[24]; - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_filesystem_0_2_0_rc_2023_11_10_types_method_descriptor_metadata_hash((self).__handle, ptr); - wasi_filesystem_0_2_0_rc_2023_11_10_types_result_metadata_hash_value_error_code_t result; - switch ((int32_t) (*((uint8_t*) (ptr + 0)))) { - case 0: { - result.is_err = false; - result.val.ok = (wasi_filesystem_0_2_0_rc_2023_11_10_types_metadata_hash_value_t) { - (uint64_t) (*((int64_t*) (ptr + 8))), - (uint64_t) (*((int64_t*) (ptr + 16))), - }; - break; - } - case 1: { - result.is_err = true; - result.val.err = (int32_t) (*((uint8_t*) (ptr + 8))); - break; - } - } - if (!result.is_err) { - *ret = result.val.ok; - return 1; - } else { - *err = result.val.err; - return 0; - } -} - -bool wasi_filesystem_0_2_0_rc_2023_11_10_types_method_descriptor_metadata_hash_at(wasi_filesystem_0_2_0_rc_2023_11_10_types_borrow_descriptor_t self, wasi_filesystem_0_2_0_rc_2023_11_10_types_path_flags_t path_flags, bindings_string_t *path, wasi_filesystem_0_2_0_rc_2023_11_10_types_metadata_hash_value_t *ret, wasi_filesystem_0_2_0_rc_2023_11_10_types_error_code_t *err) { - __attribute__((__aligned__(8))) - uint8_t ret_area[24]; - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_filesystem_0_2_0_rc_2023_11_10_types_method_descriptor_metadata_hash_at((self).__handle, path_flags, (int32_t) (*path).ptr, (int32_t) (*path).len, ptr); - wasi_filesystem_0_2_0_rc_2023_11_10_types_result_metadata_hash_value_error_code_t result; - switch ((int32_t) (*((uint8_t*) (ptr + 0)))) { - case 0: { - result.is_err = false; - result.val.ok = (wasi_filesystem_0_2_0_rc_2023_11_10_types_metadata_hash_value_t) { - (uint64_t) (*((int64_t*) (ptr + 8))), - (uint64_t) (*((int64_t*) (ptr + 16))), - }; - break; - } - case 1: { - result.is_err = true; - result.val.err = (int32_t) (*((uint8_t*) (ptr + 8))); - break; - } - } - if (!result.is_err) { - *ret = result.val.ok; - return 1; - } else { - *err = result.val.err; - return 0; - } -} - -bool wasi_filesystem_0_2_0_rc_2023_11_10_types_method_directory_entry_stream_read_directory_entry(wasi_filesystem_0_2_0_rc_2023_11_10_types_borrow_directory_entry_stream_t self, wasi_filesystem_0_2_0_rc_2023_11_10_types_option_directory_entry_t *ret, wasi_filesystem_0_2_0_rc_2023_11_10_types_error_code_t *err) { - __attribute__((__aligned__(4))) - uint8_t ret_area[20]; - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_filesystem_0_2_0_rc_2023_11_10_types_method_directory_entry_stream_read_directory_entry((self).__handle, ptr); - wasi_filesystem_0_2_0_rc_2023_11_10_types_result_option_directory_entry_error_code_t result; - switch ((int32_t) (*((uint8_t*) (ptr + 0)))) { - case 0: { - result.is_err = false; - wasi_filesystem_0_2_0_rc_2023_11_10_types_option_directory_entry_t option; - switch ((int32_t) (*((uint8_t*) (ptr + 4)))) { - case 0: { - option.is_some = false; - break; - } - case 1: { - option.is_some = true; - option.val = (wasi_filesystem_0_2_0_rc_2023_11_10_types_directory_entry_t) { - (int32_t) (*((uint8_t*) (ptr + 8))), - (bindings_string_t) { (uint8_t*)(*((int32_t*) (ptr + 12))), (size_t)(*((int32_t*) (ptr + 16))) }, - }; - break; - } - } - - result.val.ok = option; - break; - } - case 1: { - result.is_err = true; - result.val.err = (int32_t) (*((uint8_t*) (ptr + 4))); - break; - } - } - if (!result.is_err) { - *ret = result.val.ok; - return 1; - } else { - *err = result.val.err; - return 0; - } -} - -bool wasi_filesystem_0_2_0_rc_2023_11_10_types_filesystem_error_code(wasi_filesystem_0_2_0_rc_2023_11_10_types_borrow_error_t err_, wasi_filesystem_0_2_0_rc_2023_11_10_types_error_code_t *ret) { - __attribute__((__aligned__(1))) - uint8_t ret_area[2]; - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_filesystem_0_2_0_rc_2023_11_10_types_filesystem_error_code((err_).__handle, ptr); - wasi_filesystem_0_2_0_rc_2023_11_10_types_option_error_code_t option; - switch ((int32_t) (*((uint8_t*) (ptr + 0)))) { - case 0: { - option.is_some = false; - break; - } - case 1: { - option.is_some = true; - option.val = (int32_t) (*((uint8_t*) (ptr + 1))); - break; - } - } - *ret = option.val; - return option.is_some; -} - -void wasi_filesystem_0_2_0_rc_2023_11_10_preopens_get_directories(wasi_filesystem_0_2_0_rc_2023_11_10_preopens_list_tuple2_own_descriptor_string_t *ret) { - __attribute__((__aligned__(4))) - uint8_t ret_area[8]; - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_filesystem_0_2_0_rc_2023_11_10_preopens_get_directories(ptr); - *ret = (wasi_filesystem_0_2_0_rc_2023_11_10_preopens_list_tuple2_own_descriptor_string_t) { (wasi_filesystem_0_2_0_rc_2023_11_10_preopens_tuple2_own_descriptor_string_t*)(*((int32_t*) (ptr + 0))), (size_t)(*((int32_t*) (ptr + 4))) }; -} - -wasi_sockets_0_2_0_rc_2023_11_10_instance_network_own_network_t wasi_sockets_0_2_0_rc_2023_11_10_instance_network_instance_network(void) { - int32_t ret = __wasm_import_wasi_sockets_0_2_0_rc_2023_11_10_instance_network_instance_network(); - return (wasi_sockets_0_2_0_rc_2023_11_10_instance_network_own_network_t) { ret }; -} - -bool wasi_sockets_0_2_0_rc_2023_11_10_udp_method_udp_socket_start_bind(wasi_sockets_0_2_0_rc_2023_11_10_udp_borrow_udp_socket_t self, wasi_sockets_0_2_0_rc_2023_11_10_udp_borrow_network_t network, wasi_sockets_0_2_0_rc_2023_11_10_udp_ip_socket_address_t *local_address, wasi_sockets_0_2_0_rc_2023_11_10_udp_error_code_t *err) { - __attribute__((__aligned__(1))) - uint8_t ret_area[2]; - int32_t variant; - int32_t variant1; - int32_t variant2; - int32_t variant3; - int32_t variant4; - int32_t variant5; - int32_t variant6; - int32_t variant7; - int32_t variant8; - int32_t variant9; - int32_t variant10; - int32_t variant11; - switch ((int32_t) (*local_address).tag) { - case 0: { - const wasi_sockets_0_2_0_rc_2023_11_10_network_ipv4_socket_address_t *payload = &(*local_address).val.ipv4; - variant = 0; - variant1 = (int32_t) ((*payload).port); - variant2 = (int32_t) (((*payload).address).f0); - variant3 = (int32_t) (((*payload).address).f1); - variant4 = (int32_t) (((*payload).address).f2); - variant5 = (int32_t) (((*payload).address).f3); - variant6 = 0; - variant7 = 0; - variant8 = 0; - variant9 = 0; - variant10 = 0; - variant11 = 0; - break; - } - case 1: { - const wasi_sockets_0_2_0_rc_2023_11_10_network_ipv6_socket_address_t *payload0 = &(*local_address).val.ipv6; - variant = 1; - variant1 = (int32_t) ((*payload0).port); - variant2 = (int32_t) ((*payload0).flow_info); - variant3 = (int32_t) (((*payload0).address).f0); - variant4 = (int32_t) (((*payload0).address).f1); - variant5 = (int32_t) (((*payload0).address).f2); - variant6 = (int32_t) (((*payload0).address).f3); - variant7 = (int32_t) (((*payload0).address).f4); - variant8 = (int32_t) (((*payload0).address).f5); - variant9 = (int32_t) (((*payload0).address).f6); - variant10 = (int32_t) (((*payload0).address).f7); - variant11 = (int32_t) ((*payload0).scope_id); - break; - } - } - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_sockets_0_2_0_rc_2023_11_10_udp_method_udp_socket_start_bind((self).__handle, (network).__handle, variant, variant1, variant2, variant3, variant4, variant5, variant6, variant7, variant8, variant9, variant10, variant11, ptr); - wasi_sockets_0_2_0_rc_2023_11_10_udp_result_void_error_code_t result; - switch ((int32_t) (*((uint8_t*) (ptr + 0)))) { - case 0: { - result.is_err = false; - break; - } - case 1: { - result.is_err = true; - result.val.err = (int32_t) (*((uint8_t*) (ptr + 1))); - break; - } - } - if (!result.is_err) { - return 1; - } else { - *err = result.val.err; - return 0; - } -} - -bool wasi_sockets_0_2_0_rc_2023_11_10_udp_method_udp_socket_finish_bind(wasi_sockets_0_2_0_rc_2023_11_10_udp_borrow_udp_socket_t self, wasi_sockets_0_2_0_rc_2023_11_10_udp_error_code_t *err) { - __attribute__((__aligned__(1))) - uint8_t ret_area[2]; - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_sockets_0_2_0_rc_2023_11_10_udp_method_udp_socket_finish_bind((self).__handle, ptr); - wasi_sockets_0_2_0_rc_2023_11_10_udp_result_void_error_code_t result; - switch ((int32_t) (*((uint8_t*) (ptr + 0)))) { - case 0: { - result.is_err = false; - break; - } - case 1: { - result.is_err = true; - result.val.err = (int32_t) (*((uint8_t*) (ptr + 1))); - break; - } - } - if (!result.is_err) { - return 1; - } else { - *err = result.val.err; - return 0; - } -} - -bool wasi_sockets_0_2_0_rc_2023_11_10_udp_method_udp_socket_stream(wasi_sockets_0_2_0_rc_2023_11_10_udp_borrow_udp_socket_t self, wasi_sockets_0_2_0_rc_2023_11_10_udp_ip_socket_address_t *maybe_remote_address, wasi_sockets_0_2_0_rc_2023_11_10_udp_tuple2_own_incoming_datagram_stream_own_outgoing_datagram_stream_t *ret, wasi_sockets_0_2_0_rc_2023_11_10_udp_error_code_t *err) { - __attribute__((__aligned__(4))) - uint8_t ret_area[12]; - wasi_sockets_0_2_0_rc_2023_11_10_udp_option_ip_socket_address_t remote_address; - remote_address.is_some = maybe_remote_address != NULL;if (maybe_remote_address) { - remote_address.val = *maybe_remote_address; - } - int32_t option; - int32_t option14; - int32_t option15; - int32_t option16; - int32_t option17; - int32_t option18; - int32_t option19; - int32_t option20; - int32_t option21; - int32_t option22; - int32_t option23; - int32_t option24; - int32_t option25; - if ((remote_address).is_some) { - const wasi_sockets_0_2_0_rc_2023_11_10_udp_ip_socket_address_t *payload0 = &(remote_address).val; - int32_t variant; - int32_t variant3; - int32_t variant4; - int32_t variant5; - int32_t variant6; - int32_t variant7; - int32_t variant8; - int32_t variant9; - int32_t variant10; - int32_t variant11; - int32_t variant12; - int32_t variant13; - switch ((int32_t) (*payload0).tag) { - case 0: { - const wasi_sockets_0_2_0_rc_2023_11_10_network_ipv4_socket_address_t *payload1 = &(*payload0).val.ipv4; - variant = 0; - variant3 = (int32_t) ((*payload1).port); - variant4 = (int32_t) (((*payload1).address).f0); - variant5 = (int32_t) (((*payload1).address).f1); - variant6 = (int32_t) (((*payload1).address).f2); - variant7 = (int32_t) (((*payload1).address).f3); - variant8 = 0; - variant9 = 0; - variant10 = 0; - variant11 = 0; - variant12 = 0; - variant13 = 0; - break; - } - case 1: { - const wasi_sockets_0_2_0_rc_2023_11_10_network_ipv6_socket_address_t *payload2 = &(*payload0).val.ipv6; - variant = 1; - variant3 = (int32_t) ((*payload2).port); - variant4 = (int32_t) ((*payload2).flow_info); - variant5 = (int32_t) (((*payload2).address).f0); - variant6 = (int32_t) (((*payload2).address).f1); - variant7 = (int32_t) (((*payload2).address).f2); - variant8 = (int32_t) (((*payload2).address).f3); - variant9 = (int32_t) (((*payload2).address).f4); - variant10 = (int32_t) (((*payload2).address).f5); - variant11 = (int32_t) (((*payload2).address).f6); - variant12 = (int32_t) (((*payload2).address).f7); - variant13 = (int32_t) ((*payload2).scope_id); - break; - } - } - option = 1; - option14 = variant; - option15 = variant3; - option16 = variant4; - option17 = variant5; - option18 = variant6; - option19 = variant7; - option20 = variant8; - option21 = variant9; - option22 = variant10; - option23 = variant11; - option24 = variant12; - option25 = variant13; - } else { - option = 0; - option14 = 0; - option15 = 0; - option16 = 0; - option17 = 0; - option18 = 0; - option19 = 0; - option20 = 0; - option21 = 0; - option22 = 0; - option23 = 0; - option24 = 0; - option25 = 0; - } - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_sockets_0_2_0_rc_2023_11_10_udp_method_udp_socket_stream((self).__handle, option, option14, option15, option16, option17, option18, option19, option20, option21, option22, option23, option24, option25, ptr); - wasi_sockets_0_2_0_rc_2023_11_10_udp_result_tuple2_own_incoming_datagram_stream_own_outgoing_datagram_stream_error_code_t result; - switch ((int32_t) (*((uint8_t*) (ptr + 0)))) { - case 0: { - result.is_err = false; - result.val.ok = (wasi_sockets_0_2_0_rc_2023_11_10_udp_tuple2_own_incoming_datagram_stream_own_outgoing_datagram_stream_t) { - (wasi_sockets_0_2_0_rc_2023_11_10_udp_own_incoming_datagram_stream_t) { *((int32_t*) (ptr + 4)) }, - (wasi_sockets_0_2_0_rc_2023_11_10_udp_own_outgoing_datagram_stream_t) { *((int32_t*) (ptr + 8)) }, - }; - break; - } - case 1: { - result.is_err = true; - result.val.err = (int32_t) (*((uint8_t*) (ptr + 4))); - break; - } - } - if (!result.is_err) { - *ret = result.val.ok; - return 1; - } else { - *err = result.val.err; - return 0; - } -} - -bool wasi_sockets_0_2_0_rc_2023_11_10_udp_method_udp_socket_local_address(wasi_sockets_0_2_0_rc_2023_11_10_udp_borrow_udp_socket_t self, wasi_sockets_0_2_0_rc_2023_11_10_udp_ip_socket_address_t *ret, wasi_sockets_0_2_0_rc_2023_11_10_udp_error_code_t *err) { - __attribute__((__aligned__(4))) - uint8_t ret_area[36]; - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_sockets_0_2_0_rc_2023_11_10_udp_method_udp_socket_local_address((self).__handle, ptr); - wasi_sockets_0_2_0_rc_2023_11_10_udp_result_ip_socket_address_error_code_t result; - switch ((int32_t) (*((uint8_t*) (ptr + 0)))) { - case 0: { - result.is_err = false; - wasi_sockets_0_2_0_rc_2023_11_10_network_ip_socket_address_t variant; - variant.tag = (int32_t) (*((uint8_t*) (ptr + 4))); - switch ((int32_t) variant.tag) { - case 0: { - variant.val.ipv4 = (wasi_sockets_0_2_0_rc_2023_11_10_network_ipv4_socket_address_t) { - (uint16_t) ((int32_t) (*((uint16_t*) (ptr + 8)))), - (wasi_sockets_0_2_0_rc_2023_11_10_network_ipv4_address_t) { - (uint8_t) ((int32_t) (*((uint8_t*) (ptr + 10)))), - (uint8_t) ((int32_t) (*((uint8_t*) (ptr + 11)))), - (uint8_t) ((int32_t) (*((uint8_t*) (ptr + 12)))), - (uint8_t) ((int32_t) (*((uint8_t*) (ptr + 13)))), - }, - }; - break; - } - case 1: { - variant.val.ipv6 = (wasi_sockets_0_2_0_rc_2023_11_10_network_ipv6_socket_address_t) { - (uint16_t) ((int32_t) (*((uint16_t*) (ptr + 8)))), - (uint32_t) (*((int32_t*) (ptr + 12))), - (wasi_sockets_0_2_0_rc_2023_11_10_network_ipv6_address_t) { - (uint16_t) ((int32_t) (*((uint16_t*) (ptr + 16)))), - (uint16_t) ((int32_t) (*((uint16_t*) (ptr + 18)))), - (uint16_t) ((int32_t) (*((uint16_t*) (ptr + 20)))), - (uint16_t) ((int32_t) (*((uint16_t*) (ptr + 22)))), - (uint16_t) ((int32_t) (*((uint16_t*) (ptr + 24)))), - (uint16_t) ((int32_t) (*((uint16_t*) (ptr + 26)))), - (uint16_t) ((int32_t) (*((uint16_t*) (ptr + 28)))), - (uint16_t) ((int32_t) (*((uint16_t*) (ptr + 30)))), - }, - (uint32_t) (*((int32_t*) (ptr + 32))), - }; - break; - } - } - - result.val.ok = variant; - break; - } - case 1: { - result.is_err = true; - result.val.err = (int32_t) (*((uint8_t*) (ptr + 4))); - break; - } - } - if (!result.is_err) { - *ret = result.val.ok; - return 1; - } else { - *err = result.val.err; - return 0; - } -} - -bool wasi_sockets_0_2_0_rc_2023_11_10_udp_method_udp_socket_remote_address(wasi_sockets_0_2_0_rc_2023_11_10_udp_borrow_udp_socket_t self, wasi_sockets_0_2_0_rc_2023_11_10_udp_ip_socket_address_t *ret, wasi_sockets_0_2_0_rc_2023_11_10_udp_error_code_t *err) { - __attribute__((__aligned__(4))) - uint8_t ret_area[36]; - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_sockets_0_2_0_rc_2023_11_10_udp_method_udp_socket_remote_address((self).__handle, ptr); - wasi_sockets_0_2_0_rc_2023_11_10_udp_result_ip_socket_address_error_code_t result; - switch ((int32_t) (*((uint8_t*) (ptr + 0)))) { - case 0: { - result.is_err = false; - wasi_sockets_0_2_0_rc_2023_11_10_network_ip_socket_address_t variant; - variant.tag = (int32_t) (*((uint8_t*) (ptr + 4))); - switch ((int32_t) variant.tag) { - case 0: { - variant.val.ipv4 = (wasi_sockets_0_2_0_rc_2023_11_10_network_ipv4_socket_address_t) { - (uint16_t) ((int32_t) (*((uint16_t*) (ptr + 8)))), - (wasi_sockets_0_2_0_rc_2023_11_10_network_ipv4_address_t) { - (uint8_t) ((int32_t) (*((uint8_t*) (ptr + 10)))), - (uint8_t) ((int32_t) (*((uint8_t*) (ptr + 11)))), - (uint8_t) ((int32_t) (*((uint8_t*) (ptr + 12)))), - (uint8_t) ((int32_t) (*((uint8_t*) (ptr + 13)))), - }, - }; - break; - } - case 1: { - variant.val.ipv6 = (wasi_sockets_0_2_0_rc_2023_11_10_network_ipv6_socket_address_t) { - (uint16_t) ((int32_t) (*((uint16_t*) (ptr + 8)))), - (uint32_t) (*((int32_t*) (ptr + 12))), - (wasi_sockets_0_2_0_rc_2023_11_10_network_ipv6_address_t) { - (uint16_t) ((int32_t) (*((uint16_t*) (ptr + 16)))), - (uint16_t) ((int32_t) (*((uint16_t*) (ptr + 18)))), - (uint16_t) ((int32_t) (*((uint16_t*) (ptr + 20)))), - (uint16_t) ((int32_t) (*((uint16_t*) (ptr + 22)))), - (uint16_t) ((int32_t) (*((uint16_t*) (ptr + 24)))), - (uint16_t) ((int32_t) (*((uint16_t*) (ptr + 26)))), - (uint16_t) ((int32_t) (*((uint16_t*) (ptr + 28)))), - (uint16_t) ((int32_t) (*((uint16_t*) (ptr + 30)))), - }, - (uint32_t) (*((int32_t*) (ptr + 32))), - }; - break; - } - } - - result.val.ok = variant; - break; - } - case 1: { - result.is_err = true; - result.val.err = (int32_t) (*((uint8_t*) (ptr + 4))); - break; - } - } - if (!result.is_err) { - *ret = result.val.ok; - return 1; - } else { - *err = result.val.err; - return 0; - } -} - -wasi_sockets_0_2_0_rc_2023_11_10_udp_ip_address_family_t wasi_sockets_0_2_0_rc_2023_11_10_udp_method_udp_socket_address_family(wasi_sockets_0_2_0_rc_2023_11_10_udp_borrow_udp_socket_t self) { - int32_t ret = __wasm_import_wasi_sockets_0_2_0_rc_2023_11_10_udp_method_udp_socket_address_family((self).__handle); - return ret; -} - -bool wasi_sockets_0_2_0_rc_2023_11_10_udp_method_udp_socket_ipv6_only(wasi_sockets_0_2_0_rc_2023_11_10_udp_borrow_udp_socket_t self, bool *ret, wasi_sockets_0_2_0_rc_2023_11_10_udp_error_code_t *err) { - __attribute__((__aligned__(1))) - uint8_t ret_area[2]; - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_sockets_0_2_0_rc_2023_11_10_udp_method_udp_socket_ipv6_only((self).__handle, ptr); - wasi_sockets_0_2_0_rc_2023_11_10_udp_result_bool_error_code_t result; - switch ((int32_t) (*((uint8_t*) (ptr + 0)))) { - case 0: { - result.is_err = false; - result.val.ok = (int32_t) (*((uint8_t*) (ptr + 1))); - break; - } - case 1: { - result.is_err = true; - result.val.err = (int32_t) (*((uint8_t*) (ptr + 1))); - break; - } - } - if (!result.is_err) { - *ret = result.val.ok; - return 1; - } else { - *err = result.val.err; - return 0; - } -} - -bool wasi_sockets_0_2_0_rc_2023_11_10_udp_method_udp_socket_set_ipv6_only(wasi_sockets_0_2_0_rc_2023_11_10_udp_borrow_udp_socket_t self, bool value, wasi_sockets_0_2_0_rc_2023_11_10_udp_error_code_t *err) { - __attribute__((__aligned__(1))) - uint8_t ret_area[2]; - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_sockets_0_2_0_rc_2023_11_10_udp_method_udp_socket_set_ipv6_only((self).__handle, value, ptr); - wasi_sockets_0_2_0_rc_2023_11_10_udp_result_void_error_code_t result; - switch ((int32_t) (*((uint8_t*) (ptr + 0)))) { - case 0: { - result.is_err = false; - break; - } - case 1: { - result.is_err = true; - result.val.err = (int32_t) (*((uint8_t*) (ptr + 1))); - break; - } - } - if (!result.is_err) { - return 1; - } else { - *err = result.val.err; - return 0; - } -} - -bool wasi_sockets_0_2_0_rc_2023_11_10_udp_method_udp_socket_unicast_hop_limit(wasi_sockets_0_2_0_rc_2023_11_10_udp_borrow_udp_socket_t self, uint8_t *ret, wasi_sockets_0_2_0_rc_2023_11_10_udp_error_code_t *err) { - __attribute__((__aligned__(1))) - uint8_t ret_area[2]; - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_sockets_0_2_0_rc_2023_11_10_udp_method_udp_socket_unicast_hop_limit((self).__handle, ptr); - wasi_sockets_0_2_0_rc_2023_11_10_udp_result_u8_error_code_t result; - switch ((int32_t) (*((uint8_t*) (ptr + 0)))) { - case 0: { - result.is_err = false; - result.val.ok = (uint8_t) ((int32_t) (*((uint8_t*) (ptr + 1)))); - break; - } - case 1: { - result.is_err = true; - result.val.err = (int32_t) (*((uint8_t*) (ptr + 1))); - break; - } - } - if (!result.is_err) { - *ret = result.val.ok; - return 1; - } else { - *err = result.val.err; - return 0; - } -} - -bool wasi_sockets_0_2_0_rc_2023_11_10_udp_method_udp_socket_set_unicast_hop_limit(wasi_sockets_0_2_0_rc_2023_11_10_udp_borrow_udp_socket_t self, uint8_t value, wasi_sockets_0_2_0_rc_2023_11_10_udp_error_code_t *err) { - __attribute__((__aligned__(1))) - uint8_t ret_area[2]; - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_sockets_0_2_0_rc_2023_11_10_udp_method_udp_socket_set_unicast_hop_limit((self).__handle, (int32_t) (value), ptr); - wasi_sockets_0_2_0_rc_2023_11_10_udp_result_void_error_code_t result; - switch ((int32_t) (*((uint8_t*) (ptr + 0)))) { - case 0: { - result.is_err = false; - break; - } - case 1: { - result.is_err = true; - result.val.err = (int32_t) (*((uint8_t*) (ptr + 1))); - break; - } - } - if (!result.is_err) { - return 1; - } else { - *err = result.val.err; - return 0; - } -} - -bool wasi_sockets_0_2_0_rc_2023_11_10_udp_method_udp_socket_receive_buffer_size(wasi_sockets_0_2_0_rc_2023_11_10_udp_borrow_udp_socket_t self, uint64_t *ret, wasi_sockets_0_2_0_rc_2023_11_10_udp_error_code_t *err) { - __attribute__((__aligned__(8))) - uint8_t ret_area[16]; - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_sockets_0_2_0_rc_2023_11_10_udp_method_udp_socket_receive_buffer_size((self).__handle, ptr); - wasi_sockets_0_2_0_rc_2023_11_10_udp_result_u64_error_code_t result; - switch ((int32_t) (*((uint8_t*) (ptr + 0)))) { - case 0: { - result.is_err = false; - result.val.ok = (uint64_t) (*((int64_t*) (ptr + 8))); - break; - } - case 1: { - result.is_err = true; - result.val.err = (int32_t) (*((uint8_t*) (ptr + 8))); - break; - } - } - if (!result.is_err) { - *ret = result.val.ok; - return 1; - } else { - *err = result.val.err; - return 0; - } -} - -bool wasi_sockets_0_2_0_rc_2023_11_10_udp_method_udp_socket_set_receive_buffer_size(wasi_sockets_0_2_0_rc_2023_11_10_udp_borrow_udp_socket_t self, uint64_t value, wasi_sockets_0_2_0_rc_2023_11_10_udp_error_code_t *err) { - __attribute__((__aligned__(1))) - uint8_t ret_area[2]; - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_sockets_0_2_0_rc_2023_11_10_udp_method_udp_socket_set_receive_buffer_size((self).__handle, (int64_t) (value), ptr); - wasi_sockets_0_2_0_rc_2023_11_10_udp_result_void_error_code_t result; - switch ((int32_t) (*((uint8_t*) (ptr + 0)))) { - case 0: { - result.is_err = false; - break; - } - case 1: { - result.is_err = true; - result.val.err = (int32_t) (*((uint8_t*) (ptr + 1))); - break; - } - } - if (!result.is_err) { - return 1; - } else { - *err = result.val.err; - return 0; - } -} - -bool wasi_sockets_0_2_0_rc_2023_11_10_udp_method_udp_socket_send_buffer_size(wasi_sockets_0_2_0_rc_2023_11_10_udp_borrow_udp_socket_t self, uint64_t *ret, wasi_sockets_0_2_0_rc_2023_11_10_udp_error_code_t *err) { - __attribute__((__aligned__(8))) - uint8_t ret_area[16]; - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_sockets_0_2_0_rc_2023_11_10_udp_method_udp_socket_send_buffer_size((self).__handle, ptr); - wasi_sockets_0_2_0_rc_2023_11_10_udp_result_u64_error_code_t result; - switch ((int32_t) (*((uint8_t*) (ptr + 0)))) { - case 0: { - result.is_err = false; - result.val.ok = (uint64_t) (*((int64_t*) (ptr + 8))); - break; - } - case 1: { - result.is_err = true; - result.val.err = (int32_t) (*((uint8_t*) (ptr + 8))); - break; - } - } - if (!result.is_err) { - *ret = result.val.ok; - return 1; - } else { - *err = result.val.err; - return 0; - } -} - -bool wasi_sockets_0_2_0_rc_2023_11_10_udp_method_udp_socket_set_send_buffer_size(wasi_sockets_0_2_0_rc_2023_11_10_udp_borrow_udp_socket_t self, uint64_t value, wasi_sockets_0_2_0_rc_2023_11_10_udp_error_code_t *err) { - __attribute__((__aligned__(1))) - uint8_t ret_area[2]; - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_sockets_0_2_0_rc_2023_11_10_udp_method_udp_socket_set_send_buffer_size((self).__handle, (int64_t) (value), ptr); - wasi_sockets_0_2_0_rc_2023_11_10_udp_result_void_error_code_t result; - switch ((int32_t) (*((uint8_t*) (ptr + 0)))) { - case 0: { - result.is_err = false; - break; - } - case 1: { - result.is_err = true; - result.val.err = (int32_t) (*((uint8_t*) (ptr + 1))); - break; - } - } - if (!result.is_err) { - return 1; - } else { - *err = result.val.err; - return 0; - } -} - -wasi_sockets_0_2_0_rc_2023_11_10_udp_own_pollable_t wasi_sockets_0_2_0_rc_2023_11_10_udp_method_udp_socket_subscribe(wasi_sockets_0_2_0_rc_2023_11_10_udp_borrow_udp_socket_t self) { - int32_t ret = __wasm_import_wasi_sockets_0_2_0_rc_2023_11_10_udp_method_udp_socket_subscribe((self).__handle); - return (wasi_sockets_0_2_0_rc_2023_11_10_udp_own_pollable_t) { ret }; -} - -bool wasi_sockets_0_2_0_rc_2023_11_10_udp_method_incoming_datagram_stream_receive(wasi_sockets_0_2_0_rc_2023_11_10_udp_borrow_incoming_datagram_stream_t self, uint64_t max_results, wasi_sockets_0_2_0_rc_2023_11_10_udp_list_incoming_datagram_t *ret, wasi_sockets_0_2_0_rc_2023_11_10_udp_error_code_t *err) { - __attribute__((__aligned__(4))) - uint8_t ret_area[12]; - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_sockets_0_2_0_rc_2023_11_10_udp_method_incoming_datagram_stream_receive((self).__handle, (int64_t) (max_results), ptr); - wasi_sockets_0_2_0_rc_2023_11_10_udp_result_list_incoming_datagram_error_code_t result; - switch ((int32_t) (*((uint8_t*) (ptr + 0)))) { - case 0: { - result.is_err = false; - result.val.ok = (wasi_sockets_0_2_0_rc_2023_11_10_udp_list_incoming_datagram_t) { (wasi_sockets_0_2_0_rc_2023_11_10_udp_incoming_datagram_t*)(*((int32_t*) (ptr + 4))), (size_t)(*((int32_t*) (ptr + 8))) }; - break; - } - case 1: { - result.is_err = true; - result.val.err = (int32_t) (*((uint8_t*) (ptr + 4))); - break; - } - } - if (!result.is_err) { - *ret = result.val.ok; - return 1; - } else { - *err = result.val.err; - return 0; - } -} - -wasi_sockets_0_2_0_rc_2023_11_10_udp_own_pollable_t wasi_sockets_0_2_0_rc_2023_11_10_udp_method_incoming_datagram_stream_subscribe(wasi_sockets_0_2_0_rc_2023_11_10_udp_borrow_incoming_datagram_stream_t self) { - int32_t ret = __wasm_import_wasi_sockets_0_2_0_rc_2023_11_10_udp_method_incoming_datagram_stream_subscribe((self).__handle); - return (wasi_sockets_0_2_0_rc_2023_11_10_udp_own_pollable_t) { ret }; -} - -bool wasi_sockets_0_2_0_rc_2023_11_10_udp_method_outgoing_datagram_stream_check_send(wasi_sockets_0_2_0_rc_2023_11_10_udp_borrow_outgoing_datagram_stream_t self, uint64_t *ret, wasi_sockets_0_2_0_rc_2023_11_10_udp_error_code_t *err) { - __attribute__((__aligned__(8))) - uint8_t ret_area[16]; - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_sockets_0_2_0_rc_2023_11_10_udp_method_outgoing_datagram_stream_check_send((self).__handle, ptr); - wasi_sockets_0_2_0_rc_2023_11_10_udp_result_u64_error_code_t result; - switch ((int32_t) (*((uint8_t*) (ptr + 0)))) { - case 0: { - result.is_err = false; - result.val.ok = (uint64_t) (*((int64_t*) (ptr + 8))); - break; - } - case 1: { - result.is_err = true; - result.val.err = (int32_t) (*((uint8_t*) (ptr + 8))); - break; - } - } - if (!result.is_err) { - *ret = result.val.ok; - return 1; - } else { - *err = result.val.err; - return 0; - } -} - -bool wasi_sockets_0_2_0_rc_2023_11_10_udp_method_outgoing_datagram_stream_send(wasi_sockets_0_2_0_rc_2023_11_10_udp_borrow_outgoing_datagram_stream_t self, wasi_sockets_0_2_0_rc_2023_11_10_udp_list_outgoing_datagram_t *datagrams, uint64_t *ret, wasi_sockets_0_2_0_rc_2023_11_10_udp_error_code_t *err) { - __attribute__((__aligned__(8))) - uint8_t ret_area[16]; - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_sockets_0_2_0_rc_2023_11_10_udp_method_outgoing_datagram_stream_send((self).__handle, (int32_t) (*datagrams).ptr, (int32_t) (*datagrams).len, ptr); - wasi_sockets_0_2_0_rc_2023_11_10_udp_result_u64_error_code_t result; - switch ((int32_t) (*((uint8_t*) (ptr + 0)))) { - case 0: { - result.is_err = false; - result.val.ok = (uint64_t) (*((int64_t*) (ptr + 8))); - break; - } - case 1: { - result.is_err = true; - result.val.err = (int32_t) (*((uint8_t*) (ptr + 8))); - break; - } - } - if (!result.is_err) { - *ret = result.val.ok; - return 1; - } else { - *err = result.val.err; - return 0; - } -} - -wasi_sockets_0_2_0_rc_2023_11_10_udp_own_pollable_t wasi_sockets_0_2_0_rc_2023_11_10_udp_method_outgoing_datagram_stream_subscribe(wasi_sockets_0_2_0_rc_2023_11_10_udp_borrow_outgoing_datagram_stream_t self) { - int32_t ret = __wasm_import_wasi_sockets_0_2_0_rc_2023_11_10_udp_method_outgoing_datagram_stream_subscribe((self).__handle); - return (wasi_sockets_0_2_0_rc_2023_11_10_udp_own_pollable_t) { ret }; -} - -bool wasi_sockets_0_2_0_rc_2023_11_10_udp_create_socket_create_udp_socket(wasi_sockets_0_2_0_rc_2023_11_10_udp_create_socket_ip_address_family_t address_family, wasi_sockets_0_2_0_rc_2023_11_10_udp_create_socket_own_udp_socket_t *ret, wasi_sockets_0_2_0_rc_2023_11_10_udp_create_socket_error_code_t *err) { - __attribute__((__aligned__(4))) - uint8_t ret_area[8]; - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_sockets_0_2_0_rc_2023_11_10_udp_create_socket_create_udp_socket((int32_t) address_family, ptr); - wasi_sockets_0_2_0_rc_2023_11_10_udp_create_socket_result_own_udp_socket_error_code_t result; - switch ((int32_t) (*((uint8_t*) (ptr + 0)))) { - case 0: { - result.is_err = false; - result.val.ok = (wasi_sockets_0_2_0_rc_2023_11_10_udp_create_socket_own_udp_socket_t) { *((int32_t*) (ptr + 4)) }; - break; - } - case 1: { - result.is_err = true; - result.val.err = (int32_t) (*((uint8_t*) (ptr + 4))); - break; - } - } - if (!result.is_err) { - *ret = result.val.ok; - return 1; - } else { - *err = result.val.err; - return 0; - } -} - -bool wasi_sockets_0_2_0_rc_2023_11_10_tcp_method_tcp_socket_start_bind(wasi_sockets_0_2_0_rc_2023_11_10_tcp_borrow_tcp_socket_t self, wasi_sockets_0_2_0_rc_2023_11_10_tcp_borrow_network_t network, wasi_sockets_0_2_0_rc_2023_11_10_tcp_ip_socket_address_t *local_address, wasi_sockets_0_2_0_rc_2023_11_10_tcp_error_code_t *err) { - __attribute__((__aligned__(1))) - uint8_t ret_area[2]; - int32_t variant; - int32_t variant1; - int32_t variant2; - int32_t variant3; - int32_t variant4; - int32_t variant5; - int32_t variant6; - int32_t variant7; - int32_t variant8; - int32_t variant9; - int32_t variant10; - int32_t variant11; - switch ((int32_t) (*local_address).tag) { - case 0: { - const wasi_sockets_0_2_0_rc_2023_11_10_network_ipv4_socket_address_t *payload = &(*local_address).val.ipv4; - variant = 0; - variant1 = (int32_t) ((*payload).port); - variant2 = (int32_t) (((*payload).address).f0); - variant3 = (int32_t) (((*payload).address).f1); - variant4 = (int32_t) (((*payload).address).f2); - variant5 = (int32_t) (((*payload).address).f3); - variant6 = 0; - variant7 = 0; - variant8 = 0; - variant9 = 0; - variant10 = 0; - variant11 = 0; - break; - } - case 1: { - const wasi_sockets_0_2_0_rc_2023_11_10_network_ipv6_socket_address_t *payload0 = &(*local_address).val.ipv6; - variant = 1; - variant1 = (int32_t) ((*payload0).port); - variant2 = (int32_t) ((*payload0).flow_info); - variant3 = (int32_t) (((*payload0).address).f0); - variant4 = (int32_t) (((*payload0).address).f1); - variant5 = (int32_t) (((*payload0).address).f2); - variant6 = (int32_t) (((*payload0).address).f3); - variant7 = (int32_t) (((*payload0).address).f4); - variant8 = (int32_t) (((*payload0).address).f5); - variant9 = (int32_t) (((*payload0).address).f6); - variant10 = (int32_t) (((*payload0).address).f7); - variant11 = (int32_t) ((*payload0).scope_id); - break; - } - } - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_sockets_0_2_0_rc_2023_11_10_tcp_method_tcp_socket_start_bind((self).__handle, (network).__handle, variant, variant1, variant2, variant3, variant4, variant5, variant6, variant7, variant8, variant9, variant10, variant11, ptr); - wasi_sockets_0_2_0_rc_2023_11_10_tcp_result_void_error_code_t result; - switch ((int32_t) (*((uint8_t*) (ptr + 0)))) { - case 0: { - result.is_err = false; - break; - } - case 1: { - result.is_err = true; - result.val.err = (int32_t) (*((uint8_t*) (ptr + 1))); - break; - } - } - if (!result.is_err) { - return 1; - } else { - *err = result.val.err; - return 0; - } -} - -bool wasi_sockets_0_2_0_rc_2023_11_10_tcp_method_tcp_socket_finish_bind(wasi_sockets_0_2_0_rc_2023_11_10_tcp_borrow_tcp_socket_t self, wasi_sockets_0_2_0_rc_2023_11_10_tcp_error_code_t *err) { - __attribute__((__aligned__(1))) - uint8_t ret_area[2]; - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_sockets_0_2_0_rc_2023_11_10_tcp_method_tcp_socket_finish_bind((self).__handle, ptr); - wasi_sockets_0_2_0_rc_2023_11_10_tcp_result_void_error_code_t result; - switch ((int32_t) (*((uint8_t*) (ptr + 0)))) { - case 0: { - result.is_err = false; - break; - } - case 1: { - result.is_err = true; - result.val.err = (int32_t) (*((uint8_t*) (ptr + 1))); - break; - } - } - if (!result.is_err) { - return 1; - } else { - *err = result.val.err; - return 0; - } -} - -bool wasi_sockets_0_2_0_rc_2023_11_10_tcp_method_tcp_socket_start_connect(wasi_sockets_0_2_0_rc_2023_11_10_tcp_borrow_tcp_socket_t self, wasi_sockets_0_2_0_rc_2023_11_10_tcp_borrow_network_t network, wasi_sockets_0_2_0_rc_2023_11_10_tcp_ip_socket_address_t *remote_address, wasi_sockets_0_2_0_rc_2023_11_10_tcp_error_code_t *err) { - __attribute__((__aligned__(1))) - uint8_t ret_area[2]; - int32_t variant; - int32_t variant1; - int32_t variant2; - int32_t variant3; - int32_t variant4; - int32_t variant5; - int32_t variant6; - int32_t variant7; - int32_t variant8; - int32_t variant9; - int32_t variant10; - int32_t variant11; - switch ((int32_t) (*remote_address).tag) { - case 0: { - const wasi_sockets_0_2_0_rc_2023_11_10_network_ipv4_socket_address_t *payload = &(*remote_address).val.ipv4; - variant = 0; - variant1 = (int32_t) ((*payload).port); - variant2 = (int32_t) (((*payload).address).f0); - variant3 = (int32_t) (((*payload).address).f1); - variant4 = (int32_t) (((*payload).address).f2); - variant5 = (int32_t) (((*payload).address).f3); - variant6 = 0; - variant7 = 0; - variant8 = 0; - variant9 = 0; - variant10 = 0; - variant11 = 0; - break; - } - case 1: { - const wasi_sockets_0_2_0_rc_2023_11_10_network_ipv6_socket_address_t *payload0 = &(*remote_address).val.ipv6; - variant = 1; - variant1 = (int32_t) ((*payload0).port); - variant2 = (int32_t) ((*payload0).flow_info); - variant3 = (int32_t) (((*payload0).address).f0); - variant4 = (int32_t) (((*payload0).address).f1); - variant5 = (int32_t) (((*payload0).address).f2); - variant6 = (int32_t) (((*payload0).address).f3); - variant7 = (int32_t) (((*payload0).address).f4); - variant8 = (int32_t) (((*payload0).address).f5); - variant9 = (int32_t) (((*payload0).address).f6); - variant10 = (int32_t) (((*payload0).address).f7); - variant11 = (int32_t) ((*payload0).scope_id); - break; - } - } - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_sockets_0_2_0_rc_2023_11_10_tcp_method_tcp_socket_start_connect((self).__handle, (network).__handle, variant, variant1, variant2, variant3, variant4, variant5, variant6, variant7, variant8, variant9, variant10, variant11, ptr); - wasi_sockets_0_2_0_rc_2023_11_10_tcp_result_void_error_code_t result; - switch ((int32_t) (*((uint8_t*) (ptr + 0)))) { - case 0: { - result.is_err = false; - break; - } - case 1: { - result.is_err = true; - result.val.err = (int32_t) (*((uint8_t*) (ptr + 1))); - break; - } - } - if (!result.is_err) { - return 1; - } else { - *err = result.val.err; - return 0; - } -} - -bool wasi_sockets_0_2_0_rc_2023_11_10_tcp_method_tcp_socket_finish_connect(wasi_sockets_0_2_0_rc_2023_11_10_tcp_borrow_tcp_socket_t self, wasi_sockets_0_2_0_rc_2023_11_10_tcp_tuple2_own_input_stream_own_output_stream_t *ret, wasi_sockets_0_2_0_rc_2023_11_10_tcp_error_code_t *err) { - __attribute__((__aligned__(4))) - uint8_t ret_area[12]; - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_sockets_0_2_0_rc_2023_11_10_tcp_method_tcp_socket_finish_connect((self).__handle, ptr); - wasi_sockets_0_2_0_rc_2023_11_10_tcp_result_tuple2_own_input_stream_own_output_stream_error_code_t result; - switch ((int32_t) (*((uint8_t*) (ptr + 0)))) { - case 0: { - result.is_err = false; - result.val.ok = (wasi_sockets_0_2_0_rc_2023_11_10_tcp_tuple2_own_input_stream_own_output_stream_t) { - (wasi_sockets_0_2_0_rc_2023_11_10_tcp_own_input_stream_t) { *((int32_t*) (ptr + 4)) }, - (wasi_sockets_0_2_0_rc_2023_11_10_tcp_own_output_stream_t) { *((int32_t*) (ptr + 8)) }, - }; - break; - } - case 1: { - result.is_err = true; - result.val.err = (int32_t) (*((uint8_t*) (ptr + 4))); - break; - } - } - if (!result.is_err) { - *ret = result.val.ok; - return 1; - } else { - *err = result.val.err; - return 0; - } -} - -bool wasi_sockets_0_2_0_rc_2023_11_10_tcp_method_tcp_socket_start_listen(wasi_sockets_0_2_0_rc_2023_11_10_tcp_borrow_tcp_socket_t self, wasi_sockets_0_2_0_rc_2023_11_10_tcp_error_code_t *err) { - __attribute__((__aligned__(1))) - uint8_t ret_area[2]; - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_sockets_0_2_0_rc_2023_11_10_tcp_method_tcp_socket_start_listen((self).__handle, ptr); - wasi_sockets_0_2_0_rc_2023_11_10_tcp_result_void_error_code_t result; - switch ((int32_t) (*((uint8_t*) (ptr + 0)))) { - case 0: { - result.is_err = false; - break; - } - case 1: { - result.is_err = true; - result.val.err = (int32_t) (*((uint8_t*) (ptr + 1))); - break; - } - } - if (!result.is_err) { - return 1; - } else { - *err = result.val.err; - return 0; - } -} - -bool wasi_sockets_0_2_0_rc_2023_11_10_tcp_method_tcp_socket_finish_listen(wasi_sockets_0_2_0_rc_2023_11_10_tcp_borrow_tcp_socket_t self, wasi_sockets_0_2_0_rc_2023_11_10_tcp_error_code_t *err) { - __attribute__((__aligned__(1))) - uint8_t ret_area[2]; - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_sockets_0_2_0_rc_2023_11_10_tcp_method_tcp_socket_finish_listen((self).__handle, ptr); - wasi_sockets_0_2_0_rc_2023_11_10_tcp_result_void_error_code_t result; - switch ((int32_t) (*((uint8_t*) (ptr + 0)))) { - case 0: { - result.is_err = false; - break; - } - case 1: { - result.is_err = true; - result.val.err = (int32_t) (*((uint8_t*) (ptr + 1))); - break; - } - } - if (!result.is_err) { - return 1; - } else { - *err = result.val.err; - return 0; - } -} - -bool wasi_sockets_0_2_0_rc_2023_11_10_tcp_method_tcp_socket_accept(wasi_sockets_0_2_0_rc_2023_11_10_tcp_borrow_tcp_socket_t self, wasi_sockets_0_2_0_rc_2023_11_10_tcp_tuple3_own_tcp_socket_own_input_stream_own_output_stream_t *ret, wasi_sockets_0_2_0_rc_2023_11_10_tcp_error_code_t *err) { - __attribute__((__aligned__(4))) - uint8_t ret_area[16]; - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_sockets_0_2_0_rc_2023_11_10_tcp_method_tcp_socket_accept((self).__handle, ptr); - wasi_sockets_0_2_0_rc_2023_11_10_tcp_result_tuple3_own_tcp_socket_own_input_stream_own_output_stream_error_code_t result; - switch ((int32_t) (*((uint8_t*) (ptr + 0)))) { - case 0: { - result.is_err = false; - result.val.ok = (wasi_sockets_0_2_0_rc_2023_11_10_tcp_tuple3_own_tcp_socket_own_input_stream_own_output_stream_t) { - (wasi_sockets_0_2_0_rc_2023_11_10_tcp_own_tcp_socket_t) { *((int32_t*) (ptr + 4)) }, - (wasi_sockets_0_2_0_rc_2023_11_10_tcp_own_input_stream_t) { *((int32_t*) (ptr + 8)) }, - (wasi_sockets_0_2_0_rc_2023_11_10_tcp_own_output_stream_t) { *((int32_t*) (ptr + 12)) }, - }; - break; - } - case 1: { - result.is_err = true; - result.val.err = (int32_t) (*((uint8_t*) (ptr + 4))); - break; - } - } - if (!result.is_err) { - *ret = result.val.ok; - return 1; - } else { - *err = result.val.err; - return 0; - } -} - -bool wasi_sockets_0_2_0_rc_2023_11_10_tcp_method_tcp_socket_local_address(wasi_sockets_0_2_0_rc_2023_11_10_tcp_borrow_tcp_socket_t self, wasi_sockets_0_2_0_rc_2023_11_10_tcp_ip_socket_address_t *ret, wasi_sockets_0_2_0_rc_2023_11_10_tcp_error_code_t *err) { - __attribute__((__aligned__(4))) - uint8_t ret_area[36]; - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_sockets_0_2_0_rc_2023_11_10_tcp_method_tcp_socket_local_address((self).__handle, ptr); - wasi_sockets_0_2_0_rc_2023_11_10_tcp_result_ip_socket_address_error_code_t result; - switch ((int32_t) (*((uint8_t*) (ptr + 0)))) { - case 0: { - result.is_err = false; - wasi_sockets_0_2_0_rc_2023_11_10_network_ip_socket_address_t variant; - variant.tag = (int32_t) (*((uint8_t*) (ptr + 4))); - switch ((int32_t) variant.tag) { - case 0: { - variant.val.ipv4 = (wasi_sockets_0_2_0_rc_2023_11_10_network_ipv4_socket_address_t) { - (uint16_t) ((int32_t) (*((uint16_t*) (ptr + 8)))), - (wasi_sockets_0_2_0_rc_2023_11_10_network_ipv4_address_t) { - (uint8_t) ((int32_t) (*((uint8_t*) (ptr + 10)))), - (uint8_t) ((int32_t) (*((uint8_t*) (ptr + 11)))), - (uint8_t) ((int32_t) (*((uint8_t*) (ptr + 12)))), - (uint8_t) ((int32_t) (*((uint8_t*) (ptr + 13)))), - }, - }; - break; - } - case 1: { - variant.val.ipv6 = (wasi_sockets_0_2_0_rc_2023_11_10_network_ipv6_socket_address_t) { - (uint16_t) ((int32_t) (*((uint16_t*) (ptr + 8)))), - (uint32_t) (*((int32_t*) (ptr + 12))), - (wasi_sockets_0_2_0_rc_2023_11_10_network_ipv6_address_t) { - (uint16_t) ((int32_t) (*((uint16_t*) (ptr + 16)))), - (uint16_t) ((int32_t) (*((uint16_t*) (ptr + 18)))), - (uint16_t) ((int32_t) (*((uint16_t*) (ptr + 20)))), - (uint16_t) ((int32_t) (*((uint16_t*) (ptr + 22)))), - (uint16_t) ((int32_t) (*((uint16_t*) (ptr + 24)))), - (uint16_t) ((int32_t) (*((uint16_t*) (ptr + 26)))), - (uint16_t) ((int32_t) (*((uint16_t*) (ptr + 28)))), - (uint16_t) ((int32_t) (*((uint16_t*) (ptr + 30)))), - }, - (uint32_t) (*((int32_t*) (ptr + 32))), - }; - break; - } - } - - result.val.ok = variant; - break; - } - case 1: { - result.is_err = true; - result.val.err = (int32_t) (*((uint8_t*) (ptr + 4))); - break; - } - } - if (!result.is_err) { - *ret = result.val.ok; - return 1; - } else { - *err = result.val.err; - return 0; - } -} - -bool wasi_sockets_0_2_0_rc_2023_11_10_tcp_method_tcp_socket_remote_address(wasi_sockets_0_2_0_rc_2023_11_10_tcp_borrow_tcp_socket_t self, wasi_sockets_0_2_0_rc_2023_11_10_tcp_ip_socket_address_t *ret, wasi_sockets_0_2_0_rc_2023_11_10_tcp_error_code_t *err) { - __attribute__((__aligned__(4))) - uint8_t ret_area[36]; - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_sockets_0_2_0_rc_2023_11_10_tcp_method_tcp_socket_remote_address((self).__handle, ptr); - wasi_sockets_0_2_0_rc_2023_11_10_tcp_result_ip_socket_address_error_code_t result; - switch ((int32_t) (*((uint8_t*) (ptr + 0)))) { - case 0: { - result.is_err = false; - wasi_sockets_0_2_0_rc_2023_11_10_network_ip_socket_address_t variant; - variant.tag = (int32_t) (*((uint8_t*) (ptr + 4))); - switch ((int32_t) variant.tag) { - case 0: { - variant.val.ipv4 = (wasi_sockets_0_2_0_rc_2023_11_10_network_ipv4_socket_address_t) { - (uint16_t) ((int32_t) (*((uint16_t*) (ptr + 8)))), - (wasi_sockets_0_2_0_rc_2023_11_10_network_ipv4_address_t) { - (uint8_t) ((int32_t) (*((uint8_t*) (ptr + 10)))), - (uint8_t) ((int32_t) (*((uint8_t*) (ptr + 11)))), - (uint8_t) ((int32_t) (*((uint8_t*) (ptr + 12)))), - (uint8_t) ((int32_t) (*((uint8_t*) (ptr + 13)))), - }, - }; - break; - } - case 1: { - variant.val.ipv6 = (wasi_sockets_0_2_0_rc_2023_11_10_network_ipv6_socket_address_t) { - (uint16_t) ((int32_t) (*((uint16_t*) (ptr + 8)))), - (uint32_t) (*((int32_t*) (ptr + 12))), - (wasi_sockets_0_2_0_rc_2023_11_10_network_ipv6_address_t) { - (uint16_t) ((int32_t) (*((uint16_t*) (ptr + 16)))), - (uint16_t) ((int32_t) (*((uint16_t*) (ptr + 18)))), - (uint16_t) ((int32_t) (*((uint16_t*) (ptr + 20)))), - (uint16_t) ((int32_t) (*((uint16_t*) (ptr + 22)))), - (uint16_t) ((int32_t) (*((uint16_t*) (ptr + 24)))), - (uint16_t) ((int32_t) (*((uint16_t*) (ptr + 26)))), - (uint16_t) ((int32_t) (*((uint16_t*) (ptr + 28)))), - (uint16_t) ((int32_t) (*((uint16_t*) (ptr + 30)))), - }, - (uint32_t) (*((int32_t*) (ptr + 32))), - }; - break; - } - } - - result.val.ok = variant; - break; - } - case 1: { - result.is_err = true; - result.val.err = (int32_t) (*((uint8_t*) (ptr + 4))); - break; - } - } - if (!result.is_err) { - *ret = result.val.ok; - return 1; - } else { - *err = result.val.err; - return 0; - } -} - -bool wasi_sockets_0_2_0_rc_2023_11_10_tcp_method_tcp_socket_is_listening(wasi_sockets_0_2_0_rc_2023_11_10_tcp_borrow_tcp_socket_t self) { - int32_t ret = __wasm_import_wasi_sockets_0_2_0_rc_2023_11_10_tcp_method_tcp_socket_is_listening((self).__handle); - return ret; -} - -wasi_sockets_0_2_0_rc_2023_11_10_tcp_ip_address_family_t wasi_sockets_0_2_0_rc_2023_11_10_tcp_method_tcp_socket_address_family(wasi_sockets_0_2_0_rc_2023_11_10_tcp_borrow_tcp_socket_t self) { - int32_t ret = __wasm_import_wasi_sockets_0_2_0_rc_2023_11_10_tcp_method_tcp_socket_address_family((self).__handle); - return ret; -} - -bool wasi_sockets_0_2_0_rc_2023_11_10_tcp_method_tcp_socket_ipv6_only(wasi_sockets_0_2_0_rc_2023_11_10_tcp_borrow_tcp_socket_t self, bool *ret, wasi_sockets_0_2_0_rc_2023_11_10_tcp_error_code_t *err) { - __attribute__((__aligned__(1))) - uint8_t ret_area[2]; - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_sockets_0_2_0_rc_2023_11_10_tcp_method_tcp_socket_ipv6_only((self).__handle, ptr); - wasi_sockets_0_2_0_rc_2023_11_10_tcp_result_bool_error_code_t result; - switch ((int32_t) (*((uint8_t*) (ptr + 0)))) { - case 0: { - result.is_err = false; - result.val.ok = (int32_t) (*((uint8_t*) (ptr + 1))); - break; - } - case 1: { - result.is_err = true; - result.val.err = (int32_t) (*((uint8_t*) (ptr + 1))); - break; - } - } - if (!result.is_err) { - *ret = result.val.ok; - return 1; - } else { - *err = result.val.err; - return 0; - } -} - -bool wasi_sockets_0_2_0_rc_2023_11_10_tcp_method_tcp_socket_set_ipv6_only(wasi_sockets_0_2_0_rc_2023_11_10_tcp_borrow_tcp_socket_t self, bool value, wasi_sockets_0_2_0_rc_2023_11_10_tcp_error_code_t *err) { - __attribute__((__aligned__(1))) - uint8_t ret_area[2]; - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_sockets_0_2_0_rc_2023_11_10_tcp_method_tcp_socket_set_ipv6_only((self).__handle, value, ptr); - wasi_sockets_0_2_0_rc_2023_11_10_tcp_result_void_error_code_t result; - switch ((int32_t) (*((uint8_t*) (ptr + 0)))) { - case 0: { - result.is_err = false; - break; - } - case 1: { - result.is_err = true; - result.val.err = (int32_t) (*((uint8_t*) (ptr + 1))); - break; - } - } - if (!result.is_err) { - return 1; - } else { - *err = result.val.err; - return 0; - } -} - -bool wasi_sockets_0_2_0_rc_2023_11_10_tcp_method_tcp_socket_set_listen_backlog_size(wasi_sockets_0_2_0_rc_2023_11_10_tcp_borrow_tcp_socket_t self, uint64_t value, wasi_sockets_0_2_0_rc_2023_11_10_tcp_error_code_t *err) { - __attribute__((__aligned__(1))) - uint8_t ret_area[2]; - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_sockets_0_2_0_rc_2023_11_10_tcp_method_tcp_socket_set_listen_backlog_size((self).__handle, (int64_t) (value), ptr); - wasi_sockets_0_2_0_rc_2023_11_10_tcp_result_void_error_code_t result; - switch ((int32_t) (*((uint8_t*) (ptr + 0)))) { - case 0: { - result.is_err = false; - break; - } - case 1: { - result.is_err = true; - result.val.err = (int32_t) (*((uint8_t*) (ptr + 1))); - break; - } - } - if (!result.is_err) { - return 1; - } else { - *err = result.val.err; - return 0; - } -} - -bool wasi_sockets_0_2_0_rc_2023_11_10_tcp_method_tcp_socket_keep_alive_enabled(wasi_sockets_0_2_0_rc_2023_11_10_tcp_borrow_tcp_socket_t self, bool *ret, wasi_sockets_0_2_0_rc_2023_11_10_tcp_error_code_t *err) { - __attribute__((__aligned__(1))) - uint8_t ret_area[2]; - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_sockets_0_2_0_rc_2023_11_10_tcp_method_tcp_socket_keep_alive_enabled((self).__handle, ptr); - wasi_sockets_0_2_0_rc_2023_11_10_tcp_result_bool_error_code_t result; - switch ((int32_t) (*((uint8_t*) (ptr + 0)))) { - case 0: { - result.is_err = false; - result.val.ok = (int32_t) (*((uint8_t*) (ptr + 1))); - break; - } - case 1: { - result.is_err = true; - result.val.err = (int32_t) (*((uint8_t*) (ptr + 1))); - break; - } - } - if (!result.is_err) { - *ret = result.val.ok; - return 1; - } else { - *err = result.val.err; - return 0; - } -} - -bool wasi_sockets_0_2_0_rc_2023_11_10_tcp_method_tcp_socket_set_keep_alive_enabled(wasi_sockets_0_2_0_rc_2023_11_10_tcp_borrow_tcp_socket_t self, bool value, wasi_sockets_0_2_0_rc_2023_11_10_tcp_error_code_t *err) { - __attribute__((__aligned__(1))) - uint8_t ret_area[2]; - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_sockets_0_2_0_rc_2023_11_10_tcp_method_tcp_socket_set_keep_alive_enabled((self).__handle, value, ptr); - wasi_sockets_0_2_0_rc_2023_11_10_tcp_result_void_error_code_t result; - switch ((int32_t) (*((uint8_t*) (ptr + 0)))) { - case 0: { - result.is_err = false; - break; - } - case 1: { - result.is_err = true; - result.val.err = (int32_t) (*((uint8_t*) (ptr + 1))); - break; - } - } - if (!result.is_err) { - return 1; - } else { - *err = result.val.err; - return 0; - } -} - -bool wasi_sockets_0_2_0_rc_2023_11_10_tcp_method_tcp_socket_keep_alive_idle_time(wasi_sockets_0_2_0_rc_2023_11_10_tcp_borrow_tcp_socket_t self, wasi_sockets_0_2_0_rc_2023_11_10_tcp_duration_t *ret, wasi_sockets_0_2_0_rc_2023_11_10_tcp_error_code_t *err) { - __attribute__((__aligned__(8))) - uint8_t ret_area[16]; - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_sockets_0_2_0_rc_2023_11_10_tcp_method_tcp_socket_keep_alive_idle_time((self).__handle, ptr); - wasi_sockets_0_2_0_rc_2023_11_10_tcp_result_duration_error_code_t result; - switch ((int32_t) (*((uint8_t*) (ptr + 0)))) { - case 0: { - result.is_err = false; - result.val.ok = (uint64_t) (*((int64_t*) (ptr + 8))); - break; - } - case 1: { - result.is_err = true; - result.val.err = (int32_t) (*((uint8_t*) (ptr + 8))); - break; - } - } - if (!result.is_err) { - *ret = result.val.ok; - return 1; - } else { - *err = result.val.err; - return 0; - } -} - -bool wasi_sockets_0_2_0_rc_2023_11_10_tcp_method_tcp_socket_set_keep_alive_idle_time(wasi_sockets_0_2_0_rc_2023_11_10_tcp_borrow_tcp_socket_t self, wasi_sockets_0_2_0_rc_2023_11_10_tcp_duration_t value, wasi_sockets_0_2_0_rc_2023_11_10_tcp_error_code_t *err) { - __attribute__((__aligned__(1))) - uint8_t ret_area[2]; - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_sockets_0_2_0_rc_2023_11_10_tcp_method_tcp_socket_set_keep_alive_idle_time((self).__handle, (int64_t) (value), ptr); - wasi_sockets_0_2_0_rc_2023_11_10_tcp_result_void_error_code_t result; - switch ((int32_t) (*((uint8_t*) (ptr + 0)))) { - case 0: { - result.is_err = false; - break; - } - case 1: { - result.is_err = true; - result.val.err = (int32_t) (*((uint8_t*) (ptr + 1))); - break; - } - } - if (!result.is_err) { - return 1; - } else { - *err = result.val.err; - return 0; - } -} - -bool wasi_sockets_0_2_0_rc_2023_11_10_tcp_method_tcp_socket_keep_alive_interval(wasi_sockets_0_2_0_rc_2023_11_10_tcp_borrow_tcp_socket_t self, wasi_sockets_0_2_0_rc_2023_11_10_tcp_duration_t *ret, wasi_sockets_0_2_0_rc_2023_11_10_tcp_error_code_t *err) { - __attribute__((__aligned__(8))) - uint8_t ret_area[16]; - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_sockets_0_2_0_rc_2023_11_10_tcp_method_tcp_socket_keep_alive_interval((self).__handle, ptr); - wasi_sockets_0_2_0_rc_2023_11_10_tcp_result_duration_error_code_t result; - switch ((int32_t) (*((uint8_t*) (ptr + 0)))) { - case 0: { - result.is_err = false; - result.val.ok = (uint64_t) (*((int64_t*) (ptr + 8))); - break; - } - case 1: { - result.is_err = true; - result.val.err = (int32_t) (*((uint8_t*) (ptr + 8))); - break; - } - } - if (!result.is_err) { - *ret = result.val.ok; - return 1; - } else { - *err = result.val.err; - return 0; - } -} - -bool wasi_sockets_0_2_0_rc_2023_11_10_tcp_method_tcp_socket_set_keep_alive_interval(wasi_sockets_0_2_0_rc_2023_11_10_tcp_borrow_tcp_socket_t self, wasi_sockets_0_2_0_rc_2023_11_10_tcp_duration_t value, wasi_sockets_0_2_0_rc_2023_11_10_tcp_error_code_t *err) { - __attribute__((__aligned__(1))) - uint8_t ret_area[2]; - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_sockets_0_2_0_rc_2023_11_10_tcp_method_tcp_socket_set_keep_alive_interval((self).__handle, (int64_t) (value), ptr); - wasi_sockets_0_2_0_rc_2023_11_10_tcp_result_void_error_code_t result; - switch ((int32_t) (*((uint8_t*) (ptr + 0)))) { - case 0: { - result.is_err = false; - break; - } - case 1: { - result.is_err = true; - result.val.err = (int32_t) (*((uint8_t*) (ptr + 1))); - break; - } - } - if (!result.is_err) { - return 1; - } else { - *err = result.val.err; - return 0; - } -} - -bool wasi_sockets_0_2_0_rc_2023_11_10_tcp_method_tcp_socket_keep_alive_count(wasi_sockets_0_2_0_rc_2023_11_10_tcp_borrow_tcp_socket_t self, uint32_t *ret, wasi_sockets_0_2_0_rc_2023_11_10_tcp_error_code_t *err) { - __attribute__((__aligned__(4))) - uint8_t ret_area[8]; - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_sockets_0_2_0_rc_2023_11_10_tcp_method_tcp_socket_keep_alive_count((self).__handle, ptr); - wasi_sockets_0_2_0_rc_2023_11_10_tcp_result_u32_error_code_t result; - switch ((int32_t) (*((uint8_t*) (ptr + 0)))) { - case 0: { - result.is_err = false; - result.val.ok = (uint32_t) (*((int32_t*) (ptr + 4))); - break; - } - case 1: { - result.is_err = true; - result.val.err = (int32_t) (*((uint8_t*) (ptr + 4))); - break; - } - } - if (!result.is_err) { - *ret = result.val.ok; - return 1; - } else { - *err = result.val.err; - return 0; - } -} - -bool wasi_sockets_0_2_0_rc_2023_11_10_tcp_method_tcp_socket_set_keep_alive_count(wasi_sockets_0_2_0_rc_2023_11_10_tcp_borrow_tcp_socket_t self, uint32_t value, wasi_sockets_0_2_0_rc_2023_11_10_tcp_error_code_t *err) { - __attribute__((__aligned__(1))) - uint8_t ret_area[2]; - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_sockets_0_2_0_rc_2023_11_10_tcp_method_tcp_socket_set_keep_alive_count((self).__handle, (int32_t) (value), ptr); - wasi_sockets_0_2_0_rc_2023_11_10_tcp_result_void_error_code_t result; - switch ((int32_t) (*((uint8_t*) (ptr + 0)))) { - case 0: { - result.is_err = false; - break; - } - case 1: { - result.is_err = true; - result.val.err = (int32_t) (*((uint8_t*) (ptr + 1))); - break; - } - } - if (!result.is_err) { - return 1; - } else { - *err = result.val.err; - return 0; - } -} - -bool wasi_sockets_0_2_0_rc_2023_11_10_tcp_method_tcp_socket_hop_limit(wasi_sockets_0_2_0_rc_2023_11_10_tcp_borrow_tcp_socket_t self, uint8_t *ret, wasi_sockets_0_2_0_rc_2023_11_10_tcp_error_code_t *err) { - __attribute__((__aligned__(1))) - uint8_t ret_area[2]; - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_sockets_0_2_0_rc_2023_11_10_tcp_method_tcp_socket_hop_limit((self).__handle, ptr); - wasi_sockets_0_2_0_rc_2023_11_10_tcp_result_u8_error_code_t result; - switch ((int32_t) (*((uint8_t*) (ptr + 0)))) { - case 0: { - result.is_err = false; - result.val.ok = (uint8_t) ((int32_t) (*((uint8_t*) (ptr + 1)))); - break; - } - case 1: { - result.is_err = true; - result.val.err = (int32_t) (*((uint8_t*) (ptr + 1))); - break; - } - } - if (!result.is_err) { - *ret = result.val.ok; - return 1; - } else { - *err = result.val.err; - return 0; - } -} - -bool wasi_sockets_0_2_0_rc_2023_11_10_tcp_method_tcp_socket_set_hop_limit(wasi_sockets_0_2_0_rc_2023_11_10_tcp_borrow_tcp_socket_t self, uint8_t value, wasi_sockets_0_2_0_rc_2023_11_10_tcp_error_code_t *err) { - __attribute__((__aligned__(1))) - uint8_t ret_area[2]; - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_sockets_0_2_0_rc_2023_11_10_tcp_method_tcp_socket_set_hop_limit((self).__handle, (int32_t) (value), ptr); - wasi_sockets_0_2_0_rc_2023_11_10_tcp_result_void_error_code_t result; - switch ((int32_t) (*((uint8_t*) (ptr + 0)))) { - case 0: { - result.is_err = false; - break; - } - case 1: { - result.is_err = true; - result.val.err = (int32_t) (*((uint8_t*) (ptr + 1))); - break; - } - } - if (!result.is_err) { - return 1; - } else { - *err = result.val.err; - return 0; - } -} - -bool wasi_sockets_0_2_0_rc_2023_11_10_tcp_method_tcp_socket_receive_buffer_size(wasi_sockets_0_2_0_rc_2023_11_10_tcp_borrow_tcp_socket_t self, uint64_t *ret, wasi_sockets_0_2_0_rc_2023_11_10_tcp_error_code_t *err) { - __attribute__((__aligned__(8))) - uint8_t ret_area[16]; - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_sockets_0_2_0_rc_2023_11_10_tcp_method_tcp_socket_receive_buffer_size((self).__handle, ptr); - wasi_sockets_0_2_0_rc_2023_11_10_tcp_result_u64_error_code_t result; - switch ((int32_t) (*((uint8_t*) (ptr + 0)))) { - case 0: { - result.is_err = false; - result.val.ok = (uint64_t) (*((int64_t*) (ptr + 8))); - break; - } - case 1: { - result.is_err = true; - result.val.err = (int32_t) (*((uint8_t*) (ptr + 8))); - break; - } - } - if (!result.is_err) { - *ret = result.val.ok; - return 1; - } else { - *err = result.val.err; - return 0; - } -} - -bool wasi_sockets_0_2_0_rc_2023_11_10_tcp_method_tcp_socket_set_receive_buffer_size(wasi_sockets_0_2_0_rc_2023_11_10_tcp_borrow_tcp_socket_t self, uint64_t value, wasi_sockets_0_2_0_rc_2023_11_10_tcp_error_code_t *err) { - __attribute__((__aligned__(1))) - uint8_t ret_area[2]; - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_sockets_0_2_0_rc_2023_11_10_tcp_method_tcp_socket_set_receive_buffer_size((self).__handle, (int64_t) (value), ptr); - wasi_sockets_0_2_0_rc_2023_11_10_tcp_result_void_error_code_t result; - switch ((int32_t) (*((uint8_t*) (ptr + 0)))) { - case 0: { - result.is_err = false; - break; - } - case 1: { - result.is_err = true; - result.val.err = (int32_t) (*((uint8_t*) (ptr + 1))); - break; - } - } - if (!result.is_err) { - return 1; - } else { - *err = result.val.err; - return 0; - } -} - -bool wasi_sockets_0_2_0_rc_2023_11_10_tcp_method_tcp_socket_send_buffer_size(wasi_sockets_0_2_0_rc_2023_11_10_tcp_borrow_tcp_socket_t self, uint64_t *ret, wasi_sockets_0_2_0_rc_2023_11_10_tcp_error_code_t *err) { - __attribute__((__aligned__(8))) - uint8_t ret_area[16]; - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_sockets_0_2_0_rc_2023_11_10_tcp_method_tcp_socket_send_buffer_size((self).__handle, ptr); - wasi_sockets_0_2_0_rc_2023_11_10_tcp_result_u64_error_code_t result; - switch ((int32_t) (*((uint8_t*) (ptr + 0)))) { - case 0: { - result.is_err = false; - result.val.ok = (uint64_t) (*((int64_t*) (ptr + 8))); - break; - } - case 1: { - result.is_err = true; - result.val.err = (int32_t) (*((uint8_t*) (ptr + 8))); - break; - } - } - if (!result.is_err) { - *ret = result.val.ok; - return 1; - } else { - *err = result.val.err; - return 0; - } -} - -bool wasi_sockets_0_2_0_rc_2023_11_10_tcp_method_tcp_socket_set_send_buffer_size(wasi_sockets_0_2_0_rc_2023_11_10_tcp_borrow_tcp_socket_t self, uint64_t value, wasi_sockets_0_2_0_rc_2023_11_10_tcp_error_code_t *err) { - __attribute__((__aligned__(1))) - uint8_t ret_area[2]; - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_sockets_0_2_0_rc_2023_11_10_tcp_method_tcp_socket_set_send_buffer_size((self).__handle, (int64_t) (value), ptr); - wasi_sockets_0_2_0_rc_2023_11_10_tcp_result_void_error_code_t result; - switch ((int32_t) (*((uint8_t*) (ptr + 0)))) { - case 0: { - result.is_err = false; - break; - } - case 1: { - result.is_err = true; - result.val.err = (int32_t) (*((uint8_t*) (ptr + 1))); - break; - } - } - if (!result.is_err) { - return 1; - } else { - *err = result.val.err; - return 0; - } -} - -wasi_sockets_0_2_0_rc_2023_11_10_tcp_own_pollable_t wasi_sockets_0_2_0_rc_2023_11_10_tcp_method_tcp_socket_subscribe(wasi_sockets_0_2_0_rc_2023_11_10_tcp_borrow_tcp_socket_t self) { - int32_t ret = __wasm_import_wasi_sockets_0_2_0_rc_2023_11_10_tcp_method_tcp_socket_subscribe((self).__handle); - return (wasi_sockets_0_2_0_rc_2023_11_10_tcp_own_pollable_t) { ret }; -} - -bool wasi_sockets_0_2_0_rc_2023_11_10_tcp_method_tcp_socket_shutdown(wasi_sockets_0_2_0_rc_2023_11_10_tcp_borrow_tcp_socket_t self, wasi_sockets_0_2_0_rc_2023_11_10_tcp_shutdown_type_t shutdown_type, wasi_sockets_0_2_0_rc_2023_11_10_tcp_error_code_t *err) { - __attribute__((__aligned__(1))) - uint8_t ret_area[2]; - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_sockets_0_2_0_rc_2023_11_10_tcp_method_tcp_socket_shutdown((self).__handle, (int32_t) shutdown_type, ptr); - wasi_sockets_0_2_0_rc_2023_11_10_tcp_result_void_error_code_t result; - switch ((int32_t) (*((uint8_t*) (ptr + 0)))) { - case 0: { - result.is_err = false; - break; - } - case 1: { - result.is_err = true; - result.val.err = (int32_t) (*((uint8_t*) (ptr + 1))); - break; - } - } - if (!result.is_err) { - return 1; - } else { - *err = result.val.err; - return 0; - } -} - -bool wasi_sockets_0_2_0_rc_2023_11_10_tcp_create_socket_create_tcp_socket(wasi_sockets_0_2_0_rc_2023_11_10_tcp_create_socket_ip_address_family_t address_family, wasi_sockets_0_2_0_rc_2023_11_10_tcp_create_socket_own_tcp_socket_t *ret, wasi_sockets_0_2_0_rc_2023_11_10_tcp_create_socket_error_code_t *err) { - __attribute__((__aligned__(4))) - uint8_t ret_area[8]; - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_sockets_0_2_0_rc_2023_11_10_tcp_create_socket_create_tcp_socket((int32_t) address_family, ptr); - wasi_sockets_0_2_0_rc_2023_11_10_tcp_create_socket_result_own_tcp_socket_error_code_t result; - switch ((int32_t) (*((uint8_t*) (ptr + 0)))) { - case 0: { - result.is_err = false; - result.val.ok = (wasi_sockets_0_2_0_rc_2023_11_10_tcp_create_socket_own_tcp_socket_t) { *((int32_t*) (ptr + 4)) }; - break; - } - case 1: { - result.is_err = true; - result.val.err = (int32_t) (*((uint8_t*) (ptr + 4))); - break; - } - } - if (!result.is_err) { - *ret = result.val.ok; - return 1; - } else { - *err = result.val.err; - return 0; - } -} - -bool wasi_sockets_0_2_0_rc_2023_11_10_ip_name_lookup_resolve_addresses(wasi_sockets_0_2_0_rc_2023_11_10_ip_name_lookup_borrow_network_t network, bindings_string_t *name, wasi_sockets_0_2_0_rc_2023_11_10_ip_name_lookup_own_resolve_address_stream_t *ret, wasi_sockets_0_2_0_rc_2023_11_10_ip_name_lookup_error_code_t *err) { - __attribute__((__aligned__(4))) - uint8_t ret_area[8]; - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_sockets_0_2_0_rc_2023_11_10_ip_name_lookup_resolve_addresses((network).__handle, (int32_t) (*name).ptr, (int32_t) (*name).len, ptr); - wasi_sockets_0_2_0_rc_2023_11_10_ip_name_lookup_result_own_resolve_address_stream_error_code_t result; - switch ((int32_t) (*((uint8_t*) (ptr + 0)))) { - case 0: { - result.is_err = false; - result.val.ok = (wasi_sockets_0_2_0_rc_2023_11_10_ip_name_lookup_own_resolve_address_stream_t) { *((int32_t*) (ptr + 4)) }; - break; - } - case 1: { - result.is_err = true; - result.val.err = (int32_t) (*((uint8_t*) (ptr + 4))); - break; - } - } - if (!result.is_err) { - *ret = result.val.ok; - return 1; - } else { - *err = result.val.err; - return 0; - } -} - -bool wasi_sockets_0_2_0_rc_2023_11_10_ip_name_lookup_method_resolve_address_stream_resolve_next_address(wasi_sockets_0_2_0_rc_2023_11_10_ip_name_lookup_borrow_resolve_address_stream_t self, wasi_sockets_0_2_0_rc_2023_11_10_ip_name_lookup_option_ip_address_t *ret, wasi_sockets_0_2_0_rc_2023_11_10_ip_name_lookup_error_code_t *err) { - __attribute__((__aligned__(2))) - uint8_t ret_area[22]; - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_sockets_0_2_0_rc_2023_11_10_ip_name_lookup_method_resolve_address_stream_resolve_next_address((self).__handle, ptr); - wasi_sockets_0_2_0_rc_2023_11_10_ip_name_lookup_result_option_ip_address_error_code_t result; - switch ((int32_t) (*((uint8_t*) (ptr + 0)))) { - case 0: { - result.is_err = false; - wasi_sockets_0_2_0_rc_2023_11_10_ip_name_lookup_option_ip_address_t option; - switch ((int32_t) (*((uint8_t*) (ptr + 2)))) { - case 0: { - option.is_some = false; - break; - } - case 1: { - option.is_some = true; - wasi_sockets_0_2_0_rc_2023_11_10_network_ip_address_t variant; - variant.tag = (int32_t) (*((uint8_t*) (ptr + 4))); - switch ((int32_t) variant.tag) { - case 0: { - variant.val.ipv4 = (wasi_sockets_0_2_0_rc_2023_11_10_network_ipv4_address_t) { - (uint8_t) ((int32_t) (*((uint8_t*) (ptr + 6)))), - (uint8_t) ((int32_t) (*((uint8_t*) (ptr + 7)))), - (uint8_t) ((int32_t) (*((uint8_t*) (ptr + 8)))), - (uint8_t) ((int32_t) (*((uint8_t*) (ptr + 9)))), - }; - break; - } - case 1: { - variant.val.ipv6 = (wasi_sockets_0_2_0_rc_2023_11_10_network_ipv6_address_t) { - (uint16_t) ((int32_t) (*((uint16_t*) (ptr + 6)))), - (uint16_t) ((int32_t) (*((uint16_t*) (ptr + 8)))), - (uint16_t) ((int32_t) (*((uint16_t*) (ptr + 10)))), - (uint16_t) ((int32_t) (*((uint16_t*) (ptr + 12)))), - (uint16_t) ((int32_t) (*((uint16_t*) (ptr + 14)))), - (uint16_t) ((int32_t) (*((uint16_t*) (ptr + 16)))), - (uint16_t) ((int32_t) (*((uint16_t*) (ptr + 18)))), - (uint16_t) ((int32_t) (*((uint16_t*) (ptr + 20)))), - }; - break; - } - } - - option.val = variant; - break; - } - } - - result.val.ok = option; - break; - } - case 1: { - result.is_err = true; - result.val.err = (int32_t) (*((uint8_t*) (ptr + 2))); - break; - } - } - if (!result.is_err) { - *ret = result.val.ok; - return 1; - } else { - *err = result.val.err; - return 0; - } -} - -wasi_sockets_0_2_0_rc_2023_11_10_ip_name_lookup_own_pollable_t wasi_sockets_0_2_0_rc_2023_11_10_ip_name_lookup_method_resolve_address_stream_subscribe(wasi_sockets_0_2_0_rc_2023_11_10_ip_name_lookup_borrow_resolve_address_stream_t self) { - int32_t ret = __wasm_import_wasi_sockets_0_2_0_rc_2023_11_10_ip_name_lookup_method_resolve_address_stream_subscribe((self).__handle); - return (wasi_sockets_0_2_0_rc_2023_11_10_ip_name_lookup_own_pollable_t) { ret }; -} - -void wasi_random_0_2_0_rc_2023_11_10_random_get_random_bytes(uint64_t len, bindings_list_u8_t *ret) { - __attribute__((__aligned__(4))) - uint8_t ret_area[8]; - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_random_0_2_0_rc_2023_11_10_random_get_random_bytes((int64_t) (len), ptr); - *ret = (bindings_list_u8_t) { (uint8_t*)(*((int32_t*) (ptr + 0))), (size_t)(*((int32_t*) (ptr + 4))) }; -} - -uint64_t wasi_random_0_2_0_rc_2023_11_10_random_get_random_u64(void) { - int64_t ret = __wasm_import_wasi_random_0_2_0_rc_2023_11_10_random_get_random_u64(); - return (uint64_t) (ret); -} - -void wasi_random_0_2_0_rc_2023_11_10_insecure_get_insecure_random_bytes(uint64_t len, bindings_list_u8_t *ret) { - __attribute__((__aligned__(4))) - uint8_t ret_area[8]; - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_random_0_2_0_rc_2023_11_10_insecure_get_insecure_random_bytes((int64_t) (len), ptr); - *ret = (bindings_list_u8_t) { (uint8_t*)(*((int32_t*) (ptr + 0))), (size_t)(*((int32_t*) (ptr + 4))) }; -} - -uint64_t wasi_random_0_2_0_rc_2023_11_10_insecure_get_insecure_random_u64(void) { - int64_t ret = __wasm_import_wasi_random_0_2_0_rc_2023_11_10_insecure_get_insecure_random_u64(); - return (uint64_t) (ret); -} - -void wasi_random_0_2_0_rc_2023_11_10_insecure_seed_insecure_seed(bindings_tuple2_u64_u64_t *ret) { - __attribute__((__aligned__(8))) - uint8_t ret_area[16]; - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_random_0_2_0_rc_2023_11_10_insecure_seed_insecure_seed(ptr); - *ret = (bindings_tuple2_u64_u64_t) { - (uint64_t) (*((int64_t*) (ptr + 0))), - (uint64_t) (*((int64_t*) (ptr + 8))), - }; -} - -bool wasi_http_0_2_0_rc_2023_12_05_types_http_error_code(wasi_http_0_2_0_rc_2023_12_05_types_borrow_io_error_t err_, wasi_http_0_2_0_rc_2023_12_05_types_error_code_t *ret) { - __attribute__((__aligned__(8))) - uint8_t ret_area[40]; - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_http_0_2_0_rc_2023_12_05_types_http_error_code((err_).__handle, ptr); - wasi_http_0_2_0_rc_2023_12_05_types_option_error_code_t option21; - switch ((int32_t) (*((uint8_t*) (ptr + 0)))) { - case 0: { - option21.is_some = false; - break; - } - case 1: { - option21.is_some = true; - wasi_http_0_2_0_rc_2023_12_05_types_error_code_t variant; - variant.tag = (int32_t) (*((uint8_t*) (ptr + 8))); - switch ((int32_t) variant.tag) { - case 0: { - break; - } - case 1: { - bindings_option_string_t option; - switch ((int32_t) (*((uint8_t*) (ptr + 16)))) { - case 0: { - option.is_some = false; - break; - } - case 1: { - option.is_some = true; - option.val = (bindings_string_t) { (uint8_t*)(*((int32_t*) (ptr + 20))), (size_t)(*((int32_t*) (ptr + 24))) }; - break; - } - } - bindings_option_u16_t option0; - switch ((int32_t) (*((uint8_t*) (ptr + 28)))) { - case 0: { - option0.is_some = false; - break; - } - case 1: { - option0.is_some = true; - option0.val = (uint16_t) ((int32_t) (*((uint16_t*) (ptr + 30)))); - break; - } - } - variant.val.dns_error = (wasi_http_0_2_0_rc_2023_12_05_types_dns_error_payload_t) { - option, - option0, - }; - break; - } - case 2: { - break; - } - case 3: { - break; - } - case 4: { - break; - } - case 5: { - break; - } - case 6: { - break; - } - case 7: { - break; - } - case 8: { - break; - } - case 9: { - break; - } - case 10: { - break; - } - case 11: { - break; - } - case 12: { - break; - } - case 13: { - break; - } - case 14: { - bindings_option_u8_t option1; - switch ((int32_t) (*((uint8_t*) (ptr + 16)))) { - case 0: { - option1.is_some = false; - break; - } - case 1: { - option1.is_some = true; - option1.val = (uint8_t) ((int32_t) (*((uint8_t*) (ptr + 17)))); - break; - } - } - bindings_option_string_t option2; - switch ((int32_t) (*((uint8_t*) (ptr + 20)))) { - case 0: { - option2.is_some = false; - break; - } - case 1: { - option2.is_some = true; - option2.val = (bindings_string_t) { (uint8_t*)(*((int32_t*) (ptr + 24))), (size_t)(*((int32_t*) (ptr + 28))) }; - break; - } - } - variant.val.tls_alert_received = (wasi_http_0_2_0_rc_2023_12_05_types_tls_alert_received_payload_t) { - option1, - option2, - }; - break; - } - case 15: { - break; - } - case 16: { - break; - } - case 17: { - bindings_option_u64_t option3; - switch ((int32_t) (*((uint8_t*) (ptr + 16)))) { - case 0: { - option3.is_some = false; - break; - } - case 1: { - option3.is_some = true; - option3.val = (uint64_t) (*((int64_t*) (ptr + 24))); - break; - } - } - variant.val.http_request_body_size = option3; - break; - } - case 18: { - break; - } - case 19: { - break; - } - case 20: { - break; - } - case 21: { - bindings_option_u32_t option4; - switch ((int32_t) (*((uint8_t*) (ptr + 16)))) { - case 0: { - option4.is_some = false; - break; - } - case 1: { - option4.is_some = true; - option4.val = (uint32_t) (*((int32_t*) (ptr + 20))); - break; - } - } - variant.val.http_request_header_section_size = option4; - break; - } - case 22: { - wasi_http_0_2_0_rc_2023_12_05_types_option_field_size_payload_t option7; - switch ((int32_t) (*((uint8_t*) (ptr + 16)))) { - case 0: { - option7.is_some = false; - break; - } - case 1: { - option7.is_some = true; - bindings_option_string_t option5; - switch ((int32_t) (*((uint8_t*) (ptr + 20)))) { - case 0: { - option5.is_some = false; - break; - } - case 1: { - option5.is_some = true; - option5.val = (bindings_string_t) { (uint8_t*)(*((int32_t*) (ptr + 24))), (size_t)(*((int32_t*) (ptr + 28))) }; - break; - } - } - bindings_option_u32_t option6; - switch ((int32_t) (*((uint8_t*) (ptr + 32)))) { - case 0: { - option6.is_some = false; - break; - } - case 1: { - option6.is_some = true; - option6.val = (uint32_t) (*((int32_t*) (ptr + 36))); - break; - } - } - - option7.val = (wasi_http_0_2_0_rc_2023_12_05_types_field_size_payload_t) { - option5, - option6, - }; - break; - } - } - variant.val.http_request_header_size = option7; - break; - } - case 23: { - bindings_option_u32_t option8; - switch ((int32_t) (*((uint8_t*) (ptr + 16)))) { - case 0: { - option8.is_some = false; - break; - } - case 1: { - option8.is_some = true; - option8.val = (uint32_t) (*((int32_t*) (ptr + 20))); - break; - } - } - variant.val.http_request_trailer_section_size = option8; - break; - } - case 24: { - bindings_option_string_t option9; - switch ((int32_t) (*((uint8_t*) (ptr + 16)))) { - case 0: { - option9.is_some = false; - break; - } - case 1: { - option9.is_some = true; - option9.val = (bindings_string_t) { (uint8_t*)(*((int32_t*) (ptr + 20))), (size_t)(*((int32_t*) (ptr + 24))) }; - break; - } - } - bindings_option_u32_t option10; - switch ((int32_t) (*((uint8_t*) (ptr + 28)))) { - case 0: { - option10.is_some = false; - break; - } - case 1: { - option10.is_some = true; - option10.val = (uint32_t) (*((int32_t*) (ptr + 32))); - break; - } - } - variant.val.http_request_trailer_size = (wasi_http_0_2_0_rc_2023_12_05_types_field_size_payload_t) { - option9, - option10, - }; - break; - } - case 25: { - break; - } - case 26: { - bindings_option_u32_t option11; - switch ((int32_t) (*((uint8_t*) (ptr + 16)))) { - case 0: { - option11.is_some = false; - break; - } - case 1: { - option11.is_some = true; - option11.val = (uint32_t) (*((int32_t*) (ptr + 20))); - break; - } - } - variant.val.http_response_header_section_size = option11; - break; - } - case 27: { - bindings_option_string_t option12; - switch ((int32_t) (*((uint8_t*) (ptr + 16)))) { - case 0: { - option12.is_some = false; - break; - } - case 1: { - option12.is_some = true; - option12.val = (bindings_string_t) { (uint8_t*)(*((int32_t*) (ptr + 20))), (size_t)(*((int32_t*) (ptr + 24))) }; - break; - } - } - bindings_option_u32_t option13; - switch ((int32_t) (*((uint8_t*) (ptr + 28)))) { - case 0: { - option13.is_some = false; - break; - } - case 1: { - option13.is_some = true; - option13.val = (uint32_t) (*((int32_t*) (ptr + 32))); - break; - } - } - variant.val.http_response_header_size = (wasi_http_0_2_0_rc_2023_12_05_types_field_size_payload_t) { - option12, - option13, - }; - break; - } - case 28: { - bindings_option_u64_t option14; - switch ((int32_t) (*((uint8_t*) (ptr + 16)))) { - case 0: { - option14.is_some = false; - break; - } - case 1: { - option14.is_some = true; - option14.val = (uint64_t) (*((int64_t*) (ptr + 24))); - break; - } - } - variant.val.http_response_body_size = option14; - break; - } - case 29: { - bindings_option_u32_t option15; - switch ((int32_t) (*((uint8_t*) (ptr + 16)))) { - case 0: { - option15.is_some = false; - break; - } - case 1: { - option15.is_some = true; - option15.val = (uint32_t) (*((int32_t*) (ptr + 20))); - break; - } - } - variant.val.http_response_trailer_section_size = option15; - break; - } - case 30: { - bindings_option_string_t option16; - switch ((int32_t) (*((uint8_t*) (ptr + 16)))) { - case 0: { - option16.is_some = false; - break; - } - case 1: { - option16.is_some = true; - option16.val = (bindings_string_t) { (uint8_t*)(*((int32_t*) (ptr + 20))), (size_t)(*((int32_t*) (ptr + 24))) }; - break; - } - } - bindings_option_u32_t option17; - switch ((int32_t) (*((uint8_t*) (ptr + 28)))) { - case 0: { - option17.is_some = false; - break; - } - case 1: { - option17.is_some = true; - option17.val = (uint32_t) (*((int32_t*) (ptr + 32))); - break; - } - } - variant.val.http_response_trailer_size = (wasi_http_0_2_0_rc_2023_12_05_types_field_size_payload_t) { - option16, - option17, - }; - break; - } - case 31: { - bindings_option_string_t option18; - switch ((int32_t) (*((uint8_t*) (ptr + 16)))) { - case 0: { - option18.is_some = false; - break; - } - case 1: { - option18.is_some = true; - option18.val = (bindings_string_t) { (uint8_t*)(*((int32_t*) (ptr + 20))), (size_t)(*((int32_t*) (ptr + 24))) }; - break; - } - } - variant.val.http_response_transfer_coding = option18; - break; - } - case 32: { - bindings_option_string_t option19; - switch ((int32_t) (*((uint8_t*) (ptr + 16)))) { - case 0: { - option19.is_some = false; - break; - } - case 1: { - option19.is_some = true; - option19.val = (bindings_string_t) { (uint8_t*)(*((int32_t*) (ptr + 20))), (size_t)(*((int32_t*) (ptr + 24))) }; - break; - } - } - variant.val.http_response_content_coding = option19; - break; - } - case 33: { - break; - } - case 34: { - break; - } - case 35: { - break; - } - case 36: { - break; - } - case 37: { - break; - } - case 38: { - bindings_option_string_t option20; - switch ((int32_t) (*((uint8_t*) (ptr + 16)))) { - case 0: { - option20.is_some = false; - break; - } - case 1: { - option20.is_some = true; - option20.val = (bindings_string_t) { (uint8_t*)(*((int32_t*) (ptr + 20))), (size_t)(*((int32_t*) (ptr + 24))) }; - break; - } - } - variant.val.internal_error = option20; - break; - } - } - - option21.val = variant; - break; - } - } - *ret = option21.val; - return option21.is_some; -} - -wasi_http_0_2_0_rc_2023_12_05_types_own_fields_t wasi_http_0_2_0_rc_2023_12_05_types_constructor_fields(void) { - int32_t ret = __wasm_import_wasi_http_0_2_0_rc_2023_12_05_types_constructor_fields(); - return (wasi_http_0_2_0_rc_2023_12_05_types_own_fields_t) { ret }; -} - -bool wasi_http_0_2_0_rc_2023_12_05_types_static_fields_from_list(bindings_list_tuple2_field_key_field_value_t *entries, wasi_http_0_2_0_rc_2023_12_05_types_own_fields_t *ret, wasi_http_0_2_0_rc_2023_12_05_types_header_error_t *err) { - __attribute__((__aligned__(4))) - uint8_t ret_area[8]; - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_http_0_2_0_rc_2023_12_05_types_static_fields_from_list((int32_t) (*entries).ptr, (int32_t) (*entries).len, ptr); - wasi_http_0_2_0_rc_2023_12_05_types_result_own_fields_header_error_t result; - switch ((int32_t) (*((uint8_t*) (ptr + 0)))) { - case 0: { - result.is_err = false; - result.val.ok = (wasi_http_0_2_0_rc_2023_12_05_types_own_fields_t) { *((int32_t*) (ptr + 4)) }; - break; - } - case 1: { - result.is_err = true; - wasi_http_0_2_0_rc_2023_12_05_types_header_error_t variant; - variant.tag = (int32_t) (*((uint8_t*) (ptr + 4))); - switch ((int32_t) variant.tag) { - case 0: { - break; - } - case 1: { - break; - } - case 2: { - break; - } - } - - result.val.err = variant; - break; - } - } - if (!result.is_err) { - *ret = result.val.ok; - return 1; - } else { - *err = result.val.err; - return 0; - } -} - -void wasi_http_0_2_0_rc_2023_12_05_types_method_fields_get(wasi_http_0_2_0_rc_2023_12_05_types_borrow_fields_t self, wasi_http_0_2_0_rc_2023_12_05_types_field_key_t *name, bindings_list_field_value_t *ret) { - __attribute__((__aligned__(4))) - uint8_t ret_area[8]; - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_http_0_2_0_rc_2023_12_05_types_method_fields_get((self).__handle, (int32_t) (*name).ptr, (int32_t) (*name).len, ptr); - *ret = (bindings_list_field_value_t) { (wasi_http_0_2_0_rc_2023_12_05_types_field_value_t*)(*((int32_t*) (ptr + 0))), (size_t)(*((int32_t*) (ptr + 4))) }; -} - -bool wasi_http_0_2_0_rc_2023_12_05_types_method_fields_has(wasi_http_0_2_0_rc_2023_12_05_types_borrow_fields_t self, wasi_http_0_2_0_rc_2023_12_05_types_field_key_t *name) { - int32_t ret = __wasm_import_wasi_http_0_2_0_rc_2023_12_05_types_method_fields_has((self).__handle, (int32_t) (*name).ptr, (int32_t) (*name).len); - return ret; -} - -bool wasi_http_0_2_0_rc_2023_12_05_types_method_fields_set(wasi_http_0_2_0_rc_2023_12_05_types_borrow_fields_t self, wasi_http_0_2_0_rc_2023_12_05_types_field_key_t *name, bindings_list_field_value_t *value, wasi_http_0_2_0_rc_2023_12_05_types_header_error_t *err) { - __attribute__((__aligned__(1))) - uint8_t ret_area[2]; - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_http_0_2_0_rc_2023_12_05_types_method_fields_set((self).__handle, (int32_t) (*name).ptr, (int32_t) (*name).len, (int32_t) (*value).ptr, (int32_t) (*value).len, ptr); - wasi_http_0_2_0_rc_2023_12_05_types_result_void_header_error_t result; - switch ((int32_t) (*((uint8_t*) (ptr + 0)))) { - case 0: { - result.is_err = false; - break; - } - case 1: { - result.is_err = true; - wasi_http_0_2_0_rc_2023_12_05_types_header_error_t variant; - variant.tag = (int32_t) (*((uint8_t*) (ptr + 1))); - switch ((int32_t) variant.tag) { - case 0: { - break; - } - case 1: { - break; - } - case 2: { - break; - } - } - - result.val.err = variant; - break; - } - } - if (!result.is_err) { - return 1; - } else { - *err = result.val.err; - return 0; - } -} - -bool wasi_http_0_2_0_rc_2023_12_05_types_method_fields_delete(wasi_http_0_2_0_rc_2023_12_05_types_borrow_fields_t self, wasi_http_0_2_0_rc_2023_12_05_types_field_key_t *name, wasi_http_0_2_0_rc_2023_12_05_types_header_error_t *err) { - __attribute__((__aligned__(1))) - uint8_t ret_area[2]; - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_http_0_2_0_rc_2023_12_05_types_method_fields_delete((self).__handle, (int32_t) (*name).ptr, (int32_t) (*name).len, ptr); - wasi_http_0_2_0_rc_2023_12_05_types_result_void_header_error_t result; - switch ((int32_t) (*((uint8_t*) (ptr + 0)))) { - case 0: { - result.is_err = false; - break; - } - case 1: { - result.is_err = true; - wasi_http_0_2_0_rc_2023_12_05_types_header_error_t variant; - variant.tag = (int32_t) (*((uint8_t*) (ptr + 1))); - switch ((int32_t) variant.tag) { - case 0: { - break; - } - case 1: { - break; - } - case 2: { - break; - } - } - - result.val.err = variant; - break; - } - } - if (!result.is_err) { - return 1; - } else { - *err = result.val.err; - return 0; - } -} - -bool wasi_http_0_2_0_rc_2023_12_05_types_method_fields_append(wasi_http_0_2_0_rc_2023_12_05_types_borrow_fields_t self, wasi_http_0_2_0_rc_2023_12_05_types_field_key_t *name, wasi_http_0_2_0_rc_2023_12_05_types_field_value_t *value, wasi_http_0_2_0_rc_2023_12_05_types_header_error_t *err) { - __attribute__((__aligned__(1))) - uint8_t ret_area[2]; - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_http_0_2_0_rc_2023_12_05_types_method_fields_append((self).__handle, (int32_t) (*name).ptr, (int32_t) (*name).len, (int32_t) (*value).ptr, (int32_t) (*value).len, ptr); - wasi_http_0_2_0_rc_2023_12_05_types_result_void_header_error_t result; - switch ((int32_t) (*((uint8_t*) (ptr + 0)))) { - case 0: { - result.is_err = false; - break; - } - case 1: { - result.is_err = true; - wasi_http_0_2_0_rc_2023_12_05_types_header_error_t variant; - variant.tag = (int32_t) (*((uint8_t*) (ptr + 1))); - switch ((int32_t) variant.tag) { - case 0: { - break; - } - case 1: { - break; - } - case 2: { - break; - } - } - - result.val.err = variant; - break; - } - } - if (!result.is_err) { - return 1; - } else { - *err = result.val.err; - return 0; - } -} - -void wasi_http_0_2_0_rc_2023_12_05_types_method_fields_entries(wasi_http_0_2_0_rc_2023_12_05_types_borrow_fields_t self, bindings_list_tuple2_field_key_field_value_t *ret) { - __attribute__((__aligned__(4))) - uint8_t ret_area[8]; - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_http_0_2_0_rc_2023_12_05_types_method_fields_entries((self).__handle, ptr); - *ret = (bindings_list_tuple2_field_key_field_value_t) { (bindings_tuple2_field_key_field_value_t*)(*((int32_t*) (ptr + 0))), (size_t)(*((int32_t*) (ptr + 4))) }; -} - -wasi_http_0_2_0_rc_2023_12_05_types_own_fields_t wasi_http_0_2_0_rc_2023_12_05_types_method_fields_clone(wasi_http_0_2_0_rc_2023_12_05_types_borrow_fields_t self) { - int32_t ret = __wasm_import_wasi_http_0_2_0_rc_2023_12_05_types_method_fields_clone((self).__handle); - return (wasi_http_0_2_0_rc_2023_12_05_types_own_fields_t) { ret }; -} - -void wasi_http_0_2_0_rc_2023_12_05_types_method_incoming_request_method(wasi_http_0_2_0_rc_2023_12_05_types_borrow_incoming_request_t self, wasi_http_0_2_0_rc_2023_12_05_types_method_t *ret) { - __attribute__((__aligned__(4))) - uint8_t ret_area[12]; - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_http_0_2_0_rc_2023_12_05_types_method_incoming_request_method((self).__handle, ptr); - wasi_http_0_2_0_rc_2023_12_05_types_method_t variant; - variant.tag = (int32_t) (*((uint8_t*) (ptr + 0))); - switch ((int32_t) variant.tag) { - case 0: { - break; - } - case 1: { - break; - } - case 2: { - break; - } - case 3: { - break; - } - case 4: { - break; - } - case 5: { - break; - } - case 6: { - break; - } - case 7: { - break; - } - case 8: { - break; - } - case 9: { - variant.val.other = (bindings_string_t) { (uint8_t*)(*((int32_t*) (ptr + 4))), (size_t)(*((int32_t*) (ptr + 8))) }; - break; - } - } - *ret = variant; -} - -bool wasi_http_0_2_0_rc_2023_12_05_types_method_incoming_request_path_with_query(wasi_http_0_2_0_rc_2023_12_05_types_borrow_incoming_request_t self, bindings_string_t *ret) { - __attribute__((__aligned__(4))) - uint8_t ret_area[12]; - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_http_0_2_0_rc_2023_12_05_types_method_incoming_request_path_with_query((self).__handle, ptr); - bindings_option_string_t option; - switch ((int32_t) (*((uint8_t*) (ptr + 0)))) { - case 0: { - option.is_some = false; - break; - } - case 1: { - option.is_some = true; - option.val = (bindings_string_t) { (uint8_t*)(*((int32_t*) (ptr + 4))), (size_t)(*((int32_t*) (ptr + 8))) }; - break; - } - } - *ret = option.val; - return option.is_some; -} - -bool wasi_http_0_2_0_rc_2023_12_05_types_method_incoming_request_scheme(wasi_http_0_2_0_rc_2023_12_05_types_borrow_incoming_request_t self, wasi_http_0_2_0_rc_2023_12_05_types_scheme_t *ret) { - __attribute__((__aligned__(4))) - uint8_t ret_area[16]; - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_http_0_2_0_rc_2023_12_05_types_method_incoming_request_scheme((self).__handle, ptr); - wasi_http_0_2_0_rc_2023_12_05_types_option_scheme_t option; - switch ((int32_t) (*((uint8_t*) (ptr + 0)))) { - case 0: { - option.is_some = false; - break; - } - case 1: { - option.is_some = true; - wasi_http_0_2_0_rc_2023_12_05_types_scheme_t variant; - variant.tag = (int32_t) (*((uint8_t*) (ptr + 4))); - switch ((int32_t) variant.tag) { - case 0: { - break; - } - case 1: { - break; - } - case 2: { - variant.val.other = (bindings_string_t) { (uint8_t*)(*((int32_t*) (ptr + 8))), (size_t)(*((int32_t*) (ptr + 12))) }; - break; - } - } - - option.val = variant; - break; - } - } - *ret = option.val; - return option.is_some; -} - -bool wasi_http_0_2_0_rc_2023_12_05_types_method_incoming_request_authority(wasi_http_0_2_0_rc_2023_12_05_types_borrow_incoming_request_t self, bindings_string_t *ret) { - __attribute__((__aligned__(4))) - uint8_t ret_area[12]; - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_http_0_2_0_rc_2023_12_05_types_method_incoming_request_authority((self).__handle, ptr); - bindings_option_string_t option; - switch ((int32_t) (*((uint8_t*) (ptr + 0)))) { - case 0: { - option.is_some = false; - break; - } - case 1: { - option.is_some = true; - option.val = (bindings_string_t) { (uint8_t*)(*((int32_t*) (ptr + 4))), (size_t)(*((int32_t*) (ptr + 8))) }; - break; - } - } - *ret = option.val; - return option.is_some; -} - -wasi_http_0_2_0_rc_2023_12_05_types_own_headers_t wasi_http_0_2_0_rc_2023_12_05_types_method_incoming_request_headers(wasi_http_0_2_0_rc_2023_12_05_types_borrow_incoming_request_t self) { - int32_t ret = __wasm_import_wasi_http_0_2_0_rc_2023_12_05_types_method_incoming_request_headers((self).__handle); - return (wasi_http_0_2_0_rc_2023_12_05_types_own_headers_t) { ret }; -} - -bool wasi_http_0_2_0_rc_2023_12_05_types_method_incoming_request_consume(wasi_http_0_2_0_rc_2023_12_05_types_borrow_incoming_request_t self, wasi_http_0_2_0_rc_2023_12_05_types_own_incoming_body_t *ret) { - __attribute__((__aligned__(4))) - uint8_t ret_area[8]; - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_http_0_2_0_rc_2023_12_05_types_method_incoming_request_consume((self).__handle, ptr); - wasi_http_0_2_0_rc_2023_12_05_types_result_own_incoming_body_void_t result; - switch ((int32_t) (*((uint8_t*) (ptr + 0)))) { - case 0: { - result.is_err = false; - result.val.ok = (wasi_http_0_2_0_rc_2023_12_05_types_own_incoming_body_t) { *((int32_t*) (ptr + 4)) }; - break; - } - case 1: { - result.is_err = true; - break; - } - } - if (!result.is_err) { - *ret = result.val.ok; - return 1; - } else { - return 0; - } -} - -wasi_http_0_2_0_rc_2023_12_05_types_own_outgoing_request_t wasi_http_0_2_0_rc_2023_12_05_types_constructor_outgoing_request(wasi_http_0_2_0_rc_2023_12_05_types_own_headers_t headers) { - int32_t ret = __wasm_import_wasi_http_0_2_0_rc_2023_12_05_types_constructor_outgoing_request((headers).__handle); - return (wasi_http_0_2_0_rc_2023_12_05_types_own_outgoing_request_t) { ret }; -} - -bool wasi_http_0_2_0_rc_2023_12_05_types_method_outgoing_request_body(wasi_http_0_2_0_rc_2023_12_05_types_borrow_outgoing_request_t self, wasi_http_0_2_0_rc_2023_12_05_types_own_outgoing_body_t *ret) { - __attribute__((__aligned__(4))) - uint8_t ret_area[8]; - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_http_0_2_0_rc_2023_12_05_types_method_outgoing_request_body((self).__handle, ptr); - wasi_http_0_2_0_rc_2023_12_05_types_result_own_outgoing_body_void_t result; - switch ((int32_t) (*((uint8_t*) (ptr + 0)))) { - case 0: { - result.is_err = false; - result.val.ok = (wasi_http_0_2_0_rc_2023_12_05_types_own_outgoing_body_t) { *((int32_t*) (ptr + 4)) }; - break; - } - case 1: { - result.is_err = true; - break; - } - } - if (!result.is_err) { - *ret = result.val.ok; - return 1; - } else { - return 0; - } -} - -void wasi_http_0_2_0_rc_2023_12_05_types_method_outgoing_request_method(wasi_http_0_2_0_rc_2023_12_05_types_borrow_outgoing_request_t self, wasi_http_0_2_0_rc_2023_12_05_types_method_t *ret) { - __attribute__((__aligned__(4))) - uint8_t ret_area[12]; - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_http_0_2_0_rc_2023_12_05_types_method_outgoing_request_method((self).__handle, ptr); - wasi_http_0_2_0_rc_2023_12_05_types_method_t variant; - variant.tag = (int32_t) (*((uint8_t*) (ptr + 0))); - switch ((int32_t) variant.tag) { - case 0: { - break; - } - case 1: { - break; - } - case 2: { - break; - } - case 3: { - break; - } - case 4: { - break; - } - case 5: { - break; - } - case 6: { - break; - } - case 7: { - break; - } - case 8: { - break; - } - case 9: { - variant.val.other = (bindings_string_t) { (uint8_t*)(*((int32_t*) (ptr + 4))), (size_t)(*((int32_t*) (ptr + 8))) }; - break; - } - } - *ret = variant; -} - -bool wasi_http_0_2_0_rc_2023_12_05_types_method_outgoing_request_set_method(wasi_http_0_2_0_rc_2023_12_05_types_borrow_outgoing_request_t self, wasi_http_0_2_0_rc_2023_12_05_types_method_t *method) { - int32_t variant; - int32_t variant9; - int32_t variant10; - switch ((int32_t) (*method).tag) { - case 0: { - variant = 0; - variant9 = 0; - variant10 = 0; - break; - } - case 1: { - variant = 1; - variant9 = 0; - variant10 = 0; - break; - } - case 2: { - variant = 2; - variant9 = 0; - variant10 = 0; - break; - } - case 3: { - variant = 3; - variant9 = 0; - variant10 = 0; - break; - } - case 4: { - variant = 4; - variant9 = 0; - variant10 = 0; - break; - } - case 5: { - variant = 5; - variant9 = 0; - variant10 = 0; - break; - } - case 6: { - variant = 6; - variant9 = 0; - variant10 = 0; - break; - } - case 7: { - variant = 7; - variant9 = 0; - variant10 = 0; - break; - } - case 8: { - variant = 8; - variant9 = 0; - variant10 = 0; - break; - } - case 9: { - const bindings_string_t *payload8 = &(*method).val.other; - variant = 9; - variant9 = (int32_t) (*payload8).ptr; - variant10 = (int32_t) (*payload8).len; - break; - } - } - int32_t ret = __wasm_import_wasi_http_0_2_0_rc_2023_12_05_types_method_outgoing_request_set_method((self).__handle, variant, variant9, variant10); - wasi_http_0_2_0_rc_2023_12_05_types_result_void_void_t result; - switch (ret) { - case 0: { - result.is_err = false; - break; - } - case 1: { - result.is_err = true; - break; - } - } - if (!result.is_err) { - return 1; - } else { - return 0; - } -} - -bool wasi_http_0_2_0_rc_2023_12_05_types_method_outgoing_request_path_with_query(wasi_http_0_2_0_rc_2023_12_05_types_borrow_outgoing_request_t self, bindings_string_t *ret) { - __attribute__((__aligned__(4))) - uint8_t ret_area[12]; - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_http_0_2_0_rc_2023_12_05_types_method_outgoing_request_path_with_query((self).__handle, ptr); - bindings_option_string_t option; - switch ((int32_t) (*((uint8_t*) (ptr + 0)))) { - case 0: { - option.is_some = false; - break; - } - case 1: { - option.is_some = true; - option.val = (bindings_string_t) { (uint8_t*)(*((int32_t*) (ptr + 4))), (size_t)(*((int32_t*) (ptr + 8))) }; - break; - } - } - *ret = option.val; - return option.is_some; -} - -bool wasi_http_0_2_0_rc_2023_12_05_types_method_outgoing_request_set_path_with_query(wasi_http_0_2_0_rc_2023_12_05_types_borrow_outgoing_request_t self, bindings_string_t *maybe_path_with_query) { - bindings_option_string_t path_with_query; - path_with_query.is_some = maybe_path_with_query != NULL;if (maybe_path_with_query) { - path_with_query.val = *maybe_path_with_query; - } - int32_t option; - int32_t option1; - int32_t option2; - if ((path_with_query).is_some) { - const bindings_string_t *payload0 = &(path_with_query).val; - option = 1; - option1 = (int32_t) (*payload0).ptr; - option2 = (int32_t) (*payload0).len; - } else { - option = 0; - option1 = 0; - option2 = 0; - } - int32_t ret = __wasm_import_wasi_http_0_2_0_rc_2023_12_05_types_method_outgoing_request_set_path_with_query((self).__handle, option, option1, option2); - wasi_http_0_2_0_rc_2023_12_05_types_result_void_void_t result; - switch (ret) { - case 0: { - result.is_err = false; - break; - } - case 1: { - result.is_err = true; - break; - } - } - if (!result.is_err) { - return 1; - } else { - return 0; - } -} - -bool wasi_http_0_2_0_rc_2023_12_05_types_method_outgoing_request_scheme(wasi_http_0_2_0_rc_2023_12_05_types_borrow_outgoing_request_t self, wasi_http_0_2_0_rc_2023_12_05_types_scheme_t *ret) { - __attribute__((__aligned__(4))) - uint8_t ret_area[16]; - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_http_0_2_0_rc_2023_12_05_types_method_outgoing_request_scheme((self).__handle, ptr); - wasi_http_0_2_0_rc_2023_12_05_types_option_scheme_t option; - switch ((int32_t) (*((uint8_t*) (ptr + 0)))) { - case 0: { - option.is_some = false; - break; - } - case 1: { - option.is_some = true; - wasi_http_0_2_0_rc_2023_12_05_types_scheme_t variant; - variant.tag = (int32_t) (*((uint8_t*) (ptr + 4))); - switch ((int32_t) variant.tag) { - case 0: { - break; - } - case 1: { - break; - } - case 2: { - variant.val.other = (bindings_string_t) { (uint8_t*)(*((int32_t*) (ptr + 8))), (size_t)(*((int32_t*) (ptr + 12))) }; - break; - } - } - - option.val = variant; - break; - } - } - *ret = option.val; - return option.is_some; -} - -bool wasi_http_0_2_0_rc_2023_12_05_types_method_outgoing_request_set_scheme(wasi_http_0_2_0_rc_2023_12_05_types_borrow_outgoing_request_t self, wasi_http_0_2_0_rc_2023_12_05_types_scheme_t *maybe_scheme) { - wasi_http_0_2_0_rc_2023_12_05_types_option_scheme_t scheme; - scheme.is_some = maybe_scheme != NULL;if (maybe_scheme) { - scheme.val = *maybe_scheme; - } - int32_t option; - int32_t option6; - int32_t option7; - int32_t option8; - if ((scheme).is_some) { - const wasi_http_0_2_0_rc_2023_12_05_types_scheme_t *payload0 = &(scheme).val; - int32_t variant; - int32_t variant4; - int32_t variant5; - switch ((int32_t) (*payload0).tag) { - case 0: { - variant = 0; - variant4 = 0; - variant5 = 0; - break; - } - case 1: { - variant = 1; - variant4 = 0; - variant5 = 0; - break; - } - case 2: { - const bindings_string_t *payload3 = &(*payload0).val.other; - variant = 2; - variant4 = (int32_t) (*payload3).ptr; - variant5 = (int32_t) (*payload3).len; - break; - } - } - option = 1; - option6 = variant; - option7 = variant4; - option8 = variant5; - } else { - option = 0; - option6 = 0; - option7 = 0; - option8 = 0; - } - int32_t ret = __wasm_import_wasi_http_0_2_0_rc_2023_12_05_types_method_outgoing_request_set_scheme((self).__handle, option, option6, option7, option8); - wasi_http_0_2_0_rc_2023_12_05_types_result_void_void_t result; - switch (ret) { - case 0: { - result.is_err = false; - break; - } - case 1: { - result.is_err = true; - break; - } - } - if (!result.is_err) { - return 1; - } else { - return 0; - } -} - -bool wasi_http_0_2_0_rc_2023_12_05_types_method_outgoing_request_authority(wasi_http_0_2_0_rc_2023_12_05_types_borrow_outgoing_request_t self, bindings_string_t *ret) { - __attribute__((__aligned__(4))) - uint8_t ret_area[12]; - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_http_0_2_0_rc_2023_12_05_types_method_outgoing_request_authority((self).__handle, ptr); - bindings_option_string_t option; - switch ((int32_t) (*((uint8_t*) (ptr + 0)))) { - case 0: { - option.is_some = false; - break; - } - case 1: { - option.is_some = true; - option.val = (bindings_string_t) { (uint8_t*)(*((int32_t*) (ptr + 4))), (size_t)(*((int32_t*) (ptr + 8))) }; - break; - } - } - *ret = option.val; - return option.is_some; -} - -bool wasi_http_0_2_0_rc_2023_12_05_types_method_outgoing_request_set_authority(wasi_http_0_2_0_rc_2023_12_05_types_borrow_outgoing_request_t self, bindings_string_t *maybe_authority) { - bindings_option_string_t authority; - authority.is_some = maybe_authority != NULL;if (maybe_authority) { - authority.val = *maybe_authority; - } - int32_t option; - int32_t option1; - int32_t option2; - if ((authority).is_some) { - const bindings_string_t *payload0 = &(authority).val; - option = 1; - option1 = (int32_t) (*payload0).ptr; - option2 = (int32_t) (*payload0).len; - } else { - option = 0; - option1 = 0; - option2 = 0; - } - int32_t ret = __wasm_import_wasi_http_0_2_0_rc_2023_12_05_types_method_outgoing_request_set_authority((self).__handle, option, option1, option2); - wasi_http_0_2_0_rc_2023_12_05_types_result_void_void_t result; - switch (ret) { - case 0: { - result.is_err = false; - break; - } - case 1: { - result.is_err = true; - break; - } - } - if (!result.is_err) { - return 1; - } else { - return 0; - } -} - -wasi_http_0_2_0_rc_2023_12_05_types_own_headers_t wasi_http_0_2_0_rc_2023_12_05_types_method_outgoing_request_headers(wasi_http_0_2_0_rc_2023_12_05_types_borrow_outgoing_request_t self) { - int32_t ret = __wasm_import_wasi_http_0_2_0_rc_2023_12_05_types_method_outgoing_request_headers((self).__handle); - return (wasi_http_0_2_0_rc_2023_12_05_types_own_headers_t) { ret }; -} - -wasi_http_0_2_0_rc_2023_12_05_types_own_request_options_t wasi_http_0_2_0_rc_2023_12_05_types_constructor_request_options(void) { - int32_t ret = __wasm_import_wasi_http_0_2_0_rc_2023_12_05_types_constructor_request_options(); - return (wasi_http_0_2_0_rc_2023_12_05_types_own_request_options_t) { ret }; -} - -bool wasi_http_0_2_0_rc_2023_12_05_types_method_request_options_connect_timeout(wasi_http_0_2_0_rc_2023_12_05_types_borrow_request_options_t self, wasi_http_0_2_0_rc_2023_12_05_types_duration_t *ret) { - __attribute__((__aligned__(8))) - uint8_t ret_area[16]; - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_http_0_2_0_rc_2023_12_05_types_method_request_options_connect_timeout((self).__handle, ptr); - bindings_option_duration_t option; - switch ((int32_t) (*((uint8_t*) (ptr + 0)))) { - case 0: { - option.is_some = false; - break; - } - case 1: { - option.is_some = true; - option.val = (uint64_t) (*((int64_t*) (ptr + 8))); - break; - } - } - *ret = option.val; - return option.is_some; -} - -bool wasi_http_0_2_0_rc_2023_12_05_types_method_request_options_set_connect_timeout(wasi_http_0_2_0_rc_2023_12_05_types_borrow_request_options_t self, wasi_http_0_2_0_rc_2023_12_05_types_duration_t *maybe_duration) { - bindings_option_duration_t duration; - duration.is_some = maybe_duration != NULL;if (maybe_duration) { - duration.val = *maybe_duration; - } - int32_t option; - int64_t option1; - if ((duration).is_some) { - const wasi_http_0_2_0_rc_2023_12_05_types_duration_t *payload0 = &(duration).val; - option = 1; - option1 = (int64_t) (*payload0); - } else { - option = 0; - option1 = 0; - } - int32_t ret = __wasm_import_wasi_http_0_2_0_rc_2023_12_05_types_method_request_options_set_connect_timeout((self).__handle, option, option1); - wasi_http_0_2_0_rc_2023_12_05_types_result_void_void_t result; - switch (ret) { - case 0: { - result.is_err = false; - break; - } - case 1: { - result.is_err = true; - break; - } - } - if (!result.is_err) { - return 1; - } else { - return 0; - } -} - -bool wasi_http_0_2_0_rc_2023_12_05_types_method_request_options_first_byte_timeout(wasi_http_0_2_0_rc_2023_12_05_types_borrow_request_options_t self, wasi_http_0_2_0_rc_2023_12_05_types_duration_t *ret) { - __attribute__((__aligned__(8))) - uint8_t ret_area[16]; - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_http_0_2_0_rc_2023_12_05_types_method_request_options_first_byte_timeout((self).__handle, ptr); - bindings_option_duration_t option; - switch ((int32_t) (*((uint8_t*) (ptr + 0)))) { - case 0: { - option.is_some = false; - break; - } - case 1: { - option.is_some = true; - option.val = (uint64_t) (*((int64_t*) (ptr + 8))); - break; - } - } - *ret = option.val; - return option.is_some; -} - -bool wasi_http_0_2_0_rc_2023_12_05_types_method_request_options_set_first_byte_timeout(wasi_http_0_2_0_rc_2023_12_05_types_borrow_request_options_t self, wasi_http_0_2_0_rc_2023_12_05_types_duration_t *maybe_duration) { - bindings_option_duration_t duration; - duration.is_some = maybe_duration != NULL;if (maybe_duration) { - duration.val = *maybe_duration; - } - int32_t option; - int64_t option1; - if ((duration).is_some) { - const wasi_http_0_2_0_rc_2023_12_05_types_duration_t *payload0 = &(duration).val; - option = 1; - option1 = (int64_t) (*payload0); - } else { - option = 0; - option1 = 0; - } - int32_t ret = __wasm_import_wasi_http_0_2_0_rc_2023_12_05_types_method_request_options_set_first_byte_timeout((self).__handle, option, option1); - wasi_http_0_2_0_rc_2023_12_05_types_result_void_void_t result; - switch (ret) { - case 0: { - result.is_err = false; - break; - } - case 1: { - result.is_err = true; - break; - } - } - if (!result.is_err) { - return 1; - } else { - return 0; - } -} - -bool wasi_http_0_2_0_rc_2023_12_05_types_method_request_options_between_bytes_timeout(wasi_http_0_2_0_rc_2023_12_05_types_borrow_request_options_t self, wasi_http_0_2_0_rc_2023_12_05_types_duration_t *ret) { - __attribute__((__aligned__(8))) - uint8_t ret_area[16]; - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_http_0_2_0_rc_2023_12_05_types_method_request_options_between_bytes_timeout((self).__handle, ptr); - bindings_option_duration_t option; - switch ((int32_t) (*((uint8_t*) (ptr + 0)))) { - case 0: { - option.is_some = false; - break; - } - case 1: { - option.is_some = true; - option.val = (uint64_t) (*((int64_t*) (ptr + 8))); - break; - } - } - *ret = option.val; - return option.is_some; -} - -bool wasi_http_0_2_0_rc_2023_12_05_types_method_request_options_set_between_bytes_timeout(wasi_http_0_2_0_rc_2023_12_05_types_borrow_request_options_t self, wasi_http_0_2_0_rc_2023_12_05_types_duration_t *maybe_duration) { - bindings_option_duration_t duration; - duration.is_some = maybe_duration != NULL;if (maybe_duration) { - duration.val = *maybe_duration; - } - int32_t option; - int64_t option1; - if ((duration).is_some) { - const wasi_http_0_2_0_rc_2023_12_05_types_duration_t *payload0 = &(duration).val; - option = 1; - option1 = (int64_t) (*payload0); - } else { - option = 0; - option1 = 0; - } - int32_t ret = __wasm_import_wasi_http_0_2_0_rc_2023_12_05_types_method_request_options_set_between_bytes_timeout((self).__handle, option, option1); - wasi_http_0_2_0_rc_2023_12_05_types_result_void_void_t result; - switch (ret) { - case 0: { - result.is_err = false; - break; - } - case 1: { - result.is_err = true; - break; - } - } - if (!result.is_err) { - return 1; - } else { - return 0; - } -} - -void wasi_http_0_2_0_rc_2023_12_05_types_static_response_outparam_set(wasi_http_0_2_0_rc_2023_12_05_types_own_response_outparam_t param, wasi_http_0_2_0_rc_2023_12_05_types_result_own_outgoing_response_error_code_t *response) { - int32_t result; - int32_t result146; - int32_t result147; - int64_t result148; - int32_t result149; - int32_t result150; - int32_t result151; - int32_t result152; - if ((*response).is_err) { - const wasi_http_0_2_0_rc_2023_12_05_types_error_code_t *payload0 = &(*response).val.err;int32_t variant; - int32_t variant140; - int64_t variant141; - int32_t variant142; - int32_t variant143; - int32_t variant144; - int32_t variant145; - switch ((int32_t) (*payload0).tag) { - case 0: { - variant = 0; - variant140 = 0; - variant141 = 0; - variant142 = 0; - variant143 = 0; - variant144 = 0; - variant145 = 0; - break; - } - case 1: { - const wasi_http_0_2_0_rc_2023_12_05_types_dns_error_payload_t *payload2 = &(*payload0).val.dns_error; - int32_t option; - int32_t option5; - int32_t option6; - if (((*payload2).rcode).is_some) { - const bindings_string_t *payload4 = &((*payload2).rcode).val; - option = 1; - option5 = (int32_t) (*payload4).ptr; - option6 = (int32_t) (*payload4).len; - } else { - option = 0; - option5 = 0; - option6 = 0; - } - int32_t option9; - int32_t option10; - if (((*payload2).info_code).is_some) { - const uint16_t *payload8 = &((*payload2).info_code).val; - option9 = 1; - option10 = (int32_t) (*payload8); - } else { - option9 = 0; - option10 = 0; - } - variant = 1; - variant140 = option; - variant141 = (int64_t) option5; - variant142 = option6; - variant143 = option9; - variant144 = option10; - variant145 = 0; - break; - } - case 2: { - variant = 2; - variant140 = 0; - variant141 = 0; - variant142 = 0; - variant143 = 0; - variant144 = 0; - variant145 = 0; - break; - } - case 3: { - variant = 3; - variant140 = 0; - variant141 = 0; - variant142 = 0; - variant143 = 0; - variant144 = 0; - variant145 = 0; - break; - } - case 4: { - variant = 4; - variant140 = 0; - variant141 = 0; - variant142 = 0; - variant143 = 0; - variant144 = 0; - variant145 = 0; - break; - } - case 5: { - variant = 5; - variant140 = 0; - variant141 = 0; - variant142 = 0; - variant143 = 0; - variant144 = 0; - variant145 = 0; - break; - } - case 6: { - variant = 6; - variant140 = 0; - variant141 = 0; - variant142 = 0; - variant143 = 0; - variant144 = 0; - variant145 = 0; - break; - } - case 7: { - variant = 7; - variant140 = 0; - variant141 = 0; - variant142 = 0; - variant143 = 0; - variant144 = 0; - variant145 = 0; - break; - } - case 8: { - variant = 8; - variant140 = 0; - variant141 = 0; - variant142 = 0; - variant143 = 0; - variant144 = 0; - variant145 = 0; - break; - } - case 9: { - variant = 9; - variant140 = 0; - variant141 = 0; - variant142 = 0; - variant143 = 0; - variant144 = 0; - variant145 = 0; - break; - } - case 10: { - variant = 10; - variant140 = 0; - variant141 = 0; - variant142 = 0; - variant143 = 0; - variant144 = 0; - variant145 = 0; - break; - } - case 11: { - variant = 11; - variant140 = 0; - variant141 = 0; - variant142 = 0; - variant143 = 0; - variant144 = 0; - variant145 = 0; - break; - } - case 12: { - variant = 12; - variant140 = 0; - variant141 = 0; - variant142 = 0; - variant143 = 0; - variant144 = 0; - variant145 = 0; - break; - } - case 13: { - variant = 13; - variant140 = 0; - variant141 = 0; - variant142 = 0; - variant143 = 0; - variant144 = 0; - variant145 = 0; - break; - } - case 14: { - const wasi_http_0_2_0_rc_2023_12_05_types_tls_alert_received_payload_t *payload23 = &(*payload0).val.tls_alert_received; - int32_t option26; - int32_t option27; - if (((*payload23).alert_id).is_some) { - const uint8_t *payload25 = &((*payload23).alert_id).val; - option26 = 1; - option27 = (int32_t) (*payload25); - } else { - option26 = 0; - option27 = 0; - } - int32_t option30; - int32_t option31; - int32_t option32; - if (((*payload23).alert_message).is_some) { - const bindings_string_t *payload29 = &((*payload23).alert_message).val; - option30 = 1; - option31 = (int32_t) (*payload29).ptr; - option32 = (int32_t) (*payload29).len; - } else { - option30 = 0; - option31 = 0; - option32 = 0; - } - variant = 14; - variant140 = option26; - variant141 = (int64_t) option27; - variant142 = option30; - variant143 = option31; - variant144 = option32; - variant145 = 0; - break; - } - case 15: { - variant = 15; - variant140 = 0; - variant141 = 0; - variant142 = 0; - variant143 = 0; - variant144 = 0; - variant145 = 0; - break; - } - case 16: { - variant = 16; - variant140 = 0; - variant141 = 0; - variant142 = 0; - variant143 = 0; - variant144 = 0; - variant145 = 0; - break; - } - case 17: { - const bindings_option_u64_t *payload35 = &(*payload0).val.http_request_body_size; - int32_t option38; - int64_t option39; - if ((*payload35).is_some) { - const uint64_t *payload37 = &(*payload35).val; - option38 = 1; - option39 = (int64_t) (*payload37); - } else { - option38 = 0; - option39 = 0; - } - variant = 17; - variant140 = option38; - variant141 = option39; - variant142 = 0; - variant143 = 0; - variant144 = 0; - variant145 = 0; - break; - } - case 18: { - variant = 18; - variant140 = 0; - variant141 = 0; - variant142 = 0; - variant143 = 0; - variant144 = 0; - variant145 = 0; - break; - } - case 19: { - variant = 19; - variant140 = 0; - variant141 = 0; - variant142 = 0; - variant143 = 0; - variant144 = 0; - variant145 = 0; - break; - } - case 20: { - variant = 20; - variant140 = 0; - variant141 = 0; - variant142 = 0; - variant143 = 0; - variant144 = 0; - variant145 = 0; - break; - } - case 21: { - const bindings_option_u32_t *payload43 = &(*payload0).val.http_request_header_section_size; - int32_t option46; - int32_t option47; - if ((*payload43).is_some) { - const uint32_t *payload45 = &(*payload43).val; - option46 = 1; - option47 = (int32_t) (*payload45); - } else { - option46 = 0; - option47 = 0; - } - variant = 21; - variant140 = option46; - variant141 = (int64_t) option47; - variant142 = 0; - variant143 = 0; - variant144 = 0; - variant145 = 0; - break; - } - case 22: { - const wasi_http_0_2_0_rc_2023_12_05_types_option_field_size_payload_t *payload48 = &(*payload0).val.http_request_header_size; - int32_t option60; - int32_t option61; - int32_t option62; - int32_t option63; - int32_t option64; - int32_t option65; - if ((*payload48).is_some) { - const wasi_http_0_2_0_rc_2023_12_05_types_field_size_payload_t *payload50 = &(*payload48).val; - int32_t option53; - int32_t option54; - int32_t option55; - if (((*payload50).field_name).is_some) { - const bindings_string_t *payload52 = &((*payload50).field_name).val; - option53 = 1; - option54 = (int32_t) (*payload52).ptr; - option55 = (int32_t) (*payload52).len; - } else { - option53 = 0; - option54 = 0; - option55 = 0; - } - int32_t option58; - int32_t option59; - if (((*payload50).field_size).is_some) { - const uint32_t *payload57 = &((*payload50).field_size).val; - option58 = 1; - option59 = (int32_t) (*payload57); - } else { - option58 = 0; - option59 = 0; - } - option60 = 1; - option61 = option53; - option62 = option54; - option63 = option55; - option64 = option58; - option65 = option59; - } else { - option60 = 0; - option61 = 0; - option62 = 0; - option63 = 0; - option64 = 0; - option65 = 0; - } - variant = 22; - variant140 = option60; - variant141 = (int64_t) option61; - variant142 = option62; - variant143 = option63; - variant144 = option64; - variant145 = option65; - break; - } - case 23: { - const bindings_option_u32_t *payload66 = &(*payload0).val.http_request_trailer_section_size; - int32_t option69; - int32_t option70; - if ((*payload66).is_some) { - const uint32_t *payload68 = &(*payload66).val; - option69 = 1; - option70 = (int32_t) (*payload68); - } else { - option69 = 0; - option70 = 0; - } - variant = 23; - variant140 = option69; - variant141 = (int64_t) option70; - variant142 = 0; - variant143 = 0; - variant144 = 0; - variant145 = 0; - break; - } - case 24: { - const wasi_http_0_2_0_rc_2023_12_05_types_field_size_payload_t *payload71 = &(*payload0).val.http_request_trailer_size; - int32_t option74; - int32_t option75; - int32_t option76; - if (((*payload71).field_name).is_some) { - const bindings_string_t *payload73 = &((*payload71).field_name).val; - option74 = 1; - option75 = (int32_t) (*payload73).ptr; - option76 = (int32_t) (*payload73).len; - } else { - option74 = 0; - option75 = 0; - option76 = 0; - } - int32_t option79; - int32_t option80; - if (((*payload71).field_size).is_some) { - const uint32_t *payload78 = &((*payload71).field_size).val; - option79 = 1; - option80 = (int32_t) (*payload78); - } else { - option79 = 0; - option80 = 0; - } - variant = 24; - variant140 = option74; - variant141 = (int64_t) option75; - variant142 = option76; - variant143 = option79; - variant144 = option80; - variant145 = 0; - break; - } - case 25: { - variant = 25; - variant140 = 0; - variant141 = 0; - variant142 = 0; - variant143 = 0; - variant144 = 0; - variant145 = 0; - break; - } - case 26: { - const bindings_option_u32_t *payload82 = &(*payload0).val.http_response_header_section_size; - int32_t option85; - int32_t option86; - if ((*payload82).is_some) { - const uint32_t *payload84 = &(*payload82).val; - option85 = 1; - option86 = (int32_t) (*payload84); - } else { - option85 = 0; - option86 = 0; - } - variant = 26; - variant140 = option85; - variant141 = (int64_t) option86; - variant142 = 0; - variant143 = 0; - variant144 = 0; - variant145 = 0; - break; - } - case 27: { - const wasi_http_0_2_0_rc_2023_12_05_types_field_size_payload_t *payload87 = &(*payload0).val.http_response_header_size; - int32_t option90; - int32_t option91; - int32_t option92; - if (((*payload87).field_name).is_some) { - const bindings_string_t *payload89 = &((*payload87).field_name).val; - option90 = 1; - option91 = (int32_t) (*payload89).ptr; - option92 = (int32_t) (*payload89).len; - } else { - option90 = 0; - option91 = 0; - option92 = 0; - } - int32_t option95; - int32_t option96; - if (((*payload87).field_size).is_some) { - const uint32_t *payload94 = &((*payload87).field_size).val; - option95 = 1; - option96 = (int32_t) (*payload94); - } else { - option95 = 0; - option96 = 0; - } - variant = 27; - variant140 = option90; - variant141 = (int64_t) option91; - variant142 = option92; - variant143 = option95; - variant144 = option96; - variant145 = 0; - break; - } - case 28: { - const bindings_option_u64_t *payload97 = &(*payload0).val.http_response_body_size; - int32_t option100; - int64_t option101; - if ((*payload97).is_some) { - const uint64_t *payload99 = &(*payload97).val; - option100 = 1; - option101 = (int64_t) (*payload99); - } else { - option100 = 0; - option101 = 0; - } - variant = 28; - variant140 = option100; - variant141 = option101; - variant142 = 0; - variant143 = 0; - variant144 = 0; - variant145 = 0; - break; - } - case 29: { - const bindings_option_u32_t *payload102 = &(*payload0).val.http_response_trailer_section_size; - int32_t option105; - int32_t option106; - if ((*payload102).is_some) { - const uint32_t *payload104 = &(*payload102).val; - option105 = 1; - option106 = (int32_t) (*payload104); - } else { - option105 = 0; - option106 = 0; - } - variant = 29; - variant140 = option105; - variant141 = (int64_t) option106; - variant142 = 0; - variant143 = 0; - variant144 = 0; - variant145 = 0; - break; - } - case 30: { - const wasi_http_0_2_0_rc_2023_12_05_types_field_size_payload_t *payload107 = &(*payload0).val.http_response_trailer_size; - int32_t option110; - int32_t option111; - int32_t option112; - if (((*payload107).field_name).is_some) { - const bindings_string_t *payload109 = &((*payload107).field_name).val; - option110 = 1; - option111 = (int32_t) (*payload109).ptr; - option112 = (int32_t) (*payload109).len; - } else { - option110 = 0; - option111 = 0; - option112 = 0; - } - int32_t option115; - int32_t option116; - if (((*payload107).field_size).is_some) { - const uint32_t *payload114 = &((*payload107).field_size).val; - option115 = 1; - option116 = (int32_t) (*payload114); - } else { - option115 = 0; - option116 = 0; - } - variant = 30; - variant140 = option110; - variant141 = (int64_t) option111; - variant142 = option112; - variant143 = option115; - variant144 = option116; - variant145 = 0; - break; - } - case 31: { - const bindings_option_string_t *payload117 = &(*payload0).val.http_response_transfer_coding; - int32_t option120; - int32_t option121; - int32_t option122; - if ((*payload117).is_some) { - const bindings_string_t *payload119 = &(*payload117).val; - option120 = 1; - option121 = (int32_t) (*payload119).ptr; - option122 = (int32_t) (*payload119).len; - } else { - option120 = 0; - option121 = 0; - option122 = 0; - } - variant = 31; - variant140 = option120; - variant141 = (int64_t) option121; - variant142 = option122; - variant143 = 0; - variant144 = 0; - variant145 = 0; - break; - } - case 32: { - const bindings_option_string_t *payload123 = &(*payload0).val.http_response_content_coding; - int32_t option126; - int32_t option127; - int32_t option128; - if ((*payload123).is_some) { - const bindings_string_t *payload125 = &(*payload123).val; - option126 = 1; - option127 = (int32_t) (*payload125).ptr; - option128 = (int32_t) (*payload125).len; - } else { - option126 = 0; - option127 = 0; - option128 = 0; - } - variant = 32; - variant140 = option126; - variant141 = (int64_t) option127; - variant142 = option128; - variant143 = 0; - variant144 = 0; - variant145 = 0; - break; - } - case 33: { - variant = 33; - variant140 = 0; - variant141 = 0; - variant142 = 0; - variant143 = 0; - variant144 = 0; - variant145 = 0; - break; - } - case 34: { - variant = 34; - variant140 = 0; - variant141 = 0; - variant142 = 0; - variant143 = 0; - variant144 = 0; - variant145 = 0; - break; - } - case 35: { - variant = 35; - variant140 = 0; - variant141 = 0; - variant142 = 0; - variant143 = 0; - variant144 = 0; - variant145 = 0; - break; - } - case 36: { - variant = 36; - variant140 = 0; - variant141 = 0; - variant142 = 0; - variant143 = 0; - variant144 = 0; - variant145 = 0; - break; - } - case 37: { - variant = 37; - variant140 = 0; - variant141 = 0; - variant142 = 0; - variant143 = 0; - variant144 = 0; - variant145 = 0; - break; - } - case 38: { - const bindings_option_string_t *payload134 = &(*payload0).val.internal_error; - int32_t option137; - int32_t option138; - int32_t option139; - if ((*payload134).is_some) { - const bindings_string_t *payload136 = &(*payload134).val; - option137 = 1; - option138 = (int32_t) (*payload136).ptr; - option139 = (int32_t) (*payload136).len; - } else { - option137 = 0; - option138 = 0; - option139 = 0; - } - variant = 38; - variant140 = option137; - variant141 = (int64_t) option138; - variant142 = option139; - variant143 = 0; - variant144 = 0; - variant145 = 0; - break; - } - } - result = 1; - result146 = variant; - result147 = variant140; - result148 = variant141; - result149 = variant142; - result150 = variant143; - result151 = variant144; - result152 = variant145; - } else { - const wasi_http_0_2_0_rc_2023_12_05_types_own_outgoing_response_t *payload = &(*response).val.ok;result = 0; - result146 = (*payload).__handle; - result147 = 0; - result148 = 0; - result149 = 0; - result150 = 0; - result151 = 0; - result152 = 0; - } - __wasm_import_wasi_http_0_2_0_rc_2023_12_05_types_static_response_outparam_set((param).__handle, result, result146, result147, result148, result149, result150, result151, result152); -} - -wasi_http_0_2_0_rc_2023_12_05_types_status_code_t wasi_http_0_2_0_rc_2023_12_05_types_method_incoming_response_status(wasi_http_0_2_0_rc_2023_12_05_types_borrow_incoming_response_t self) { - int32_t ret = __wasm_import_wasi_http_0_2_0_rc_2023_12_05_types_method_incoming_response_status((self).__handle); - return (uint16_t) (ret); -} - -wasi_http_0_2_0_rc_2023_12_05_types_own_headers_t wasi_http_0_2_0_rc_2023_12_05_types_method_incoming_response_headers(wasi_http_0_2_0_rc_2023_12_05_types_borrow_incoming_response_t self) { - int32_t ret = __wasm_import_wasi_http_0_2_0_rc_2023_12_05_types_method_incoming_response_headers((self).__handle); - return (wasi_http_0_2_0_rc_2023_12_05_types_own_headers_t) { ret }; -} - -bool wasi_http_0_2_0_rc_2023_12_05_types_method_incoming_response_consume(wasi_http_0_2_0_rc_2023_12_05_types_borrow_incoming_response_t self, wasi_http_0_2_0_rc_2023_12_05_types_own_incoming_body_t *ret) { - __attribute__((__aligned__(4))) - uint8_t ret_area[8]; - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_http_0_2_0_rc_2023_12_05_types_method_incoming_response_consume((self).__handle, ptr); - wasi_http_0_2_0_rc_2023_12_05_types_result_own_incoming_body_void_t result; - switch ((int32_t) (*((uint8_t*) (ptr + 0)))) { - case 0: { - result.is_err = false; - result.val.ok = (wasi_http_0_2_0_rc_2023_12_05_types_own_incoming_body_t) { *((int32_t*) (ptr + 4)) }; - break; - } - case 1: { - result.is_err = true; - break; - } - } - if (!result.is_err) { - *ret = result.val.ok; - return 1; - } else { - return 0; - } -} - -bool wasi_http_0_2_0_rc_2023_12_05_types_method_incoming_body_stream(wasi_http_0_2_0_rc_2023_12_05_types_borrow_incoming_body_t self, wasi_http_0_2_0_rc_2023_12_05_types_own_input_stream_t *ret) { - __attribute__((__aligned__(4))) - uint8_t ret_area[8]; - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_http_0_2_0_rc_2023_12_05_types_method_incoming_body_stream((self).__handle, ptr); - wasi_http_0_2_0_rc_2023_12_05_types_result_own_input_stream_void_t result; - switch ((int32_t) (*((uint8_t*) (ptr + 0)))) { - case 0: { - result.is_err = false; - result.val.ok = (wasi_http_0_2_0_rc_2023_12_05_types_own_input_stream_t) { *((int32_t*) (ptr + 4)) }; - break; - } - case 1: { - result.is_err = true; - break; - } - } - if (!result.is_err) { - *ret = result.val.ok; - return 1; - } else { - return 0; - } -} - -wasi_http_0_2_0_rc_2023_12_05_types_own_future_trailers_t wasi_http_0_2_0_rc_2023_12_05_types_static_incoming_body_finish(wasi_http_0_2_0_rc_2023_12_05_types_own_incoming_body_t this_) { - int32_t ret = __wasm_import_wasi_http_0_2_0_rc_2023_12_05_types_static_incoming_body_finish((this_).__handle); - return (wasi_http_0_2_0_rc_2023_12_05_types_own_future_trailers_t) { ret }; -} - -wasi_http_0_2_0_rc_2023_12_05_types_own_pollable_t wasi_http_0_2_0_rc_2023_12_05_types_method_future_trailers_subscribe(wasi_http_0_2_0_rc_2023_12_05_types_borrow_future_trailers_t self) { - int32_t ret = __wasm_import_wasi_http_0_2_0_rc_2023_12_05_types_method_future_trailers_subscribe((self).__handle); - return (wasi_http_0_2_0_rc_2023_12_05_types_own_pollable_t) { ret }; -} - -bool wasi_http_0_2_0_rc_2023_12_05_types_method_future_trailers_get(wasi_http_0_2_0_rc_2023_12_05_types_borrow_future_trailers_t self, wasi_http_0_2_0_rc_2023_12_05_types_result_result_option_own_trailers_error_code_void_t *ret) { - __attribute__((__aligned__(8))) - uint8_t ret_area[56]; - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_http_0_2_0_rc_2023_12_05_types_method_future_trailers_get((self).__handle, ptr); - wasi_http_0_2_0_rc_2023_12_05_types_option_result_result_option_own_trailers_error_code_void_t option23; - switch ((int32_t) (*((uint8_t*) (ptr + 0)))) { - case 0: { - option23.is_some = false; - break; - } - case 1: { - option23.is_some = true; - wasi_http_0_2_0_rc_2023_12_05_types_result_result_option_own_trailers_error_code_void_t result22; - switch ((int32_t) (*((uint8_t*) (ptr + 8)))) { - case 0: { - result22.is_err = false; - wasi_http_0_2_0_rc_2023_12_05_types_result_option_own_trailers_error_code_t result; - switch ((int32_t) (*((uint8_t*) (ptr + 16)))) { - case 0: { - result.is_err = false; - wasi_http_0_2_0_rc_2023_12_05_types_option_own_trailers_t option; - switch ((int32_t) (*((uint8_t*) (ptr + 24)))) { - case 0: { - option.is_some = false; - break; - } - case 1: { - option.is_some = true; - option.val = (wasi_http_0_2_0_rc_2023_12_05_types_own_trailers_t) { *((int32_t*) (ptr + 28)) }; - break; - } - } - - result.val.ok = option; - break; - } - case 1: { - result.is_err = true; - wasi_http_0_2_0_rc_2023_12_05_types_error_code_t variant; - variant.tag = (int32_t) (*((uint8_t*) (ptr + 24))); - switch ((int32_t) variant.tag) { - case 0: { - break; - } - case 1: { - bindings_option_string_t option0; - switch ((int32_t) (*((uint8_t*) (ptr + 32)))) { - case 0: { - option0.is_some = false; - break; - } - case 1: { - option0.is_some = true; - option0.val = (bindings_string_t) { (uint8_t*)(*((int32_t*) (ptr + 36))), (size_t)(*((int32_t*) (ptr + 40))) }; - break; - } - } - bindings_option_u16_t option1; - switch ((int32_t) (*((uint8_t*) (ptr + 44)))) { - case 0: { - option1.is_some = false; - break; - } - case 1: { - option1.is_some = true; - option1.val = (uint16_t) ((int32_t) (*((uint16_t*) (ptr + 46)))); - break; - } - } - variant.val.dns_error = (wasi_http_0_2_0_rc_2023_12_05_types_dns_error_payload_t) { - option0, - option1, - }; - break; - } - case 2: { - break; - } - case 3: { - break; - } - case 4: { - break; - } - case 5: { - break; - } - case 6: { - break; - } - case 7: { - break; - } - case 8: { - break; - } - case 9: { - break; - } - case 10: { - break; - } - case 11: { - break; - } - case 12: { - break; - } - case 13: { - break; - } - case 14: { - bindings_option_u8_t option2; - switch ((int32_t) (*((uint8_t*) (ptr + 32)))) { - case 0: { - option2.is_some = false; - break; - } - case 1: { - option2.is_some = true; - option2.val = (uint8_t) ((int32_t) (*((uint8_t*) (ptr + 33)))); - break; - } - } - bindings_option_string_t option3; - switch ((int32_t) (*((uint8_t*) (ptr + 36)))) { - case 0: { - option3.is_some = false; - break; - } - case 1: { - option3.is_some = true; - option3.val = (bindings_string_t) { (uint8_t*)(*((int32_t*) (ptr + 40))), (size_t)(*((int32_t*) (ptr + 44))) }; - break; - } - } - variant.val.tls_alert_received = (wasi_http_0_2_0_rc_2023_12_05_types_tls_alert_received_payload_t) { - option2, - option3, - }; - break; - } - case 15: { - break; - } - case 16: { - break; - } - case 17: { - bindings_option_u64_t option4; - switch ((int32_t) (*((uint8_t*) (ptr + 32)))) { - case 0: { - option4.is_some = false; - break; - } - case 1: { - option4.is_some = true; - option4.val = (uint64_t) (*((int64_t*) (ptr + 40))); - break; - } - } - variant.val.http_request_body_size = option4; - break; - } - case 18: { - break; - } - case 19: { - break; - } - case 20: { - break; - } - case 21: { - bindings_option_u32_t option5; - switch ((int32_t) (*((uint8_t*) (ptr + 32)))) { - case 0: { - option5.is_some = false; - break; - } - case 1: { - option5.is_some = true; - option5.val = (uint32_t) (*((int32_t*) (ptr + 36))); - break; - } - } - variant.val.http_request_header_section_size = option5; - break; - } - case 22: { - wasi_http_0_2_0_rc_2023_12_05_types_option_field_size_payload_t option8; - switch ((int32_t) (*((uint8_t*) (ptr + 32)))) { - case 0: { - option8.is_some = false; - break; - } - case 1: { - option8.is_some = true; - bindings_option_string_t option6; - switch ((int32_t) (*((uint8_t*) (ptr + 36)))) { - case 0: { - option6.is_some = false; - break; - } - case 1: { - option6.is_some = true; - option6.val = (bindings_string_t) { (uint8_t*)(*((int32_t*) (ptr + 40))), (size_t)(*((int32_t*) (ptr + 44))) }; - break; - } - } - bindings_option_u32_t option7; - switch ((int32_t) (*((uint8_t*) (ptr + 48)))) { - case 0: { - option7.is_some = false; - break; - } - case 1: { - option7.is_some = true; - option7.val = (uint32_t) (*((int32_t*) (ptr + 52))); - break; - } - } - - option8.val = (wasi_http_0_2_0_rc_2023_12_05_types_field_size_payload_t) { - option6, - option7, - }; - break; - } - } - variant.val.http_request_header_size = option8; - break; - } - case 23: { - bindings_option_u32_t option9; - switch ((int32_t) (*((uint8_t*) (ptr + 32)))) { - case 0: { - option9.is_some = false; - break; - } - case 1: { - option9.is_some = true; - option9.val = (uint32_t) (*((int32_t*) (ptr + 36))); - break; - } - } - variant.val.http_request_trailer_section_size = option9; - break; - } - case 24: { - bindings_option_string_t option10; - switch ((int32_t) (*((uint8_t*) (ptr + 32)))) { - case 0: { - option10.is_some = false; - break; - } - case 1: { - option10.is_some = true; - option10.val = (bindings_string_t) { (uint8_t*)(*((int32_t*) (ptr + 36))), (size_t)(*((int32_t*) (ptr + 40))) }; - break; - } - } - bindings_option_u32_t option11; - switch ((int32_t) (*((uint8_t*) (ptr + 44)))) { - case 0: { - option11.is_some = false; - break; - } - case 1: { - option11.is_some = true; - option11.val = (uint32_t) (*((int32_t*) (ptr + 48))); - break; - } - } - variant.val.http_request_trailer_size = (wasi_http_0_2_0_rc_2023_12_05_types_field_size_payload_t) { - option10, - option11, - }; - break; - } - case 25: { - break; - } - case 26: { - bindings_option_u32_t option12; - switch ((int32_t) (*((uint8_t*) (ptr + 32)))) { - case 0: { - option12.is_some = false; - break; - } - case 1: { - option12.is_some = true; - option12.val = (uint32_t) (*((int32_t*) (ptr + 36))); - break; - } - } - variant.val.http_response_header_section_size = option12; - break; - } - case 27: { - bindings_option_string_t option13; - switch ((int32_t) (*((uint8_t*) (ptr + 32)))) { - case 0: { - option13.is_some = false; - break; - } - case 1: { - option13.is_some = true; - option13.val = (bindings_string_t) { (uint8_t*)(*((int32_t*) (ptr + 36))), (size_t)(*((int32_t*) (ptr + 40))) }; - break; - } - } - bindings_option_u32_t option14; - switch ((int32_t) (*((uint8_t*) (ptr + 44)))) { - case 0: { - option14.is_some = false; - break; - } - case 1: { - option14.is_some = true; - option14.val = (uint32_t) (*((int32_t*) (ptr + 48))); - break; - } - } - variant.val.http_response_header_size = (wasi_http_0_2_0_rc_2023_12_05_types_field_size_payload_t) { - option13, - option14, - }; - break; - } - case 28: { - bindings_option_u64_t option15; - switch ((int32_t) (*((uint8_t*) (ptr + 32)))) { - case 0: { - option15.is_some = false; - break; - } - case 1: { - option15.is_some = true; - option15.val = (uint64_t) (*((int64_t*) (ptr + 40))); - break; - } - } - variant.val.http_response_body_size = option15; - break; - } - case 29: { - bindings_option_u32_t option16; - switch ((int32_t) (*((uint8_t*) (ptr + 32)))) { - case 0: { - option16.is_some = false; - break; - } - case 1: { - option16.is_some = true; - option16.val = (uint32_t) (*((int32_t*) (ptr + 36))); - break; - } - } - variant.val.http_response_trailer_section_size = option16; - break; - } - case 30: { - bindings_option_string_t option17; - switch ((int32_t) (*((uint8_t*) (ptr + 32)))) { - case 0: { - option17.is_some = false; - break; - } - case 1: { - option17.is_some = true; - option17.val = (bindings_string_t) { (uint8_t*)(*((int32_t*) (ptr + 36))), (size_t)(*((int32_t*) (ptr + 40))) }; - break; - } - } - bindings_option_u32_t option18; - switch ((int32_t) (*((uint8_t*) (ptr + 44)))) { - case 0: { - option18.is_some = false; - break; - } - case 1: { - option18.is_some = true; - option18.val = (uint32_t) (*((int32_t*) (ptr + 48))); - break; - } - } - variant.val.http_response_trailer_size = (wasi_http_0_2_0_rc_2023_12_05_types_field_size_payload_t) { - option17, - option18, - }; - break; - } - case 31: { - bindings_option_string_t option19; - switch ((int32_t) (*((uint8_t*) (ptr + 32)))) { - case 0: { - option19.is_some = false; - break; - } - case 1: { - option19.is_some = true; - option19.val = (bindings_string_t) { (uint8_t*)(*((int32_t*) (ptr + 36))), (size_t)(*((int32_t*) (ptr + 40))) }; - break; - } - } - variant.val.http_response_transfer_coding = option19; - break; - } - case 32: { - bindings_option_string_t option20; - switch ((int32_t) (*((uint8_t*) (ptr + 32)))) { - case 0: { - option20.is_some = false; - break; - } - case 1: { - option20.is_some = true; - option20.val = (bindings_string_t) { (uint8_t*)(*((int32_t*) (ptr + 36))), (size_t)(*((int32_t*) (ptr + 40))) }; - break; - } - } - variant.val.http_response_content_coding = option20; - break; - } - case 33: { - break; - } - case 34: { - break; - } - case 35: { - break; - } - case 36: { - break; - } - case 37: { - break; - } - case 38: { - bindings_option_string_t option21; - switch ((int32_t) (*((uint8_t*) (ptr + 32)))) { - case 0: { - option21.is_some = false; - break; - } - case 1: { - option21.is_some = true; - option21.val = (bindings_string_t) { (uint8_t*)(*((int32_t*) (ptr + 36))), (size_t)(*((int32_t*) (ptr + 40))) }; - break; - } - } - variant.val.internal_error = option21; - break; - } - } - - result.val.err = variant; - break; - } - } - - result22.val.ok = result; - break; - } - case 1: { - result22.is_err = true; - break; - } - } - - option23.val = result22; - break; - } - } - *ret = option23.val; - return option23.is_some; -} - -wasi_http_0_2_0_rc_2023_12_05_types_own_outgoing_response_t wasi_http_0_2_0_rc_2023_12_05_types_constructor_outgoing_response(wasi_http_0_2_0_rc_2023_12_05_types_own_headers_t headers) { - int32_t ret = __wasm_import_wasi_http_0_2_0_rc_2023_12_05_types_constructor_outgoing_response((headers).__handle); - return (wasi_http_0_2_0_rc_2023_12_05_types_own_outgoing_response_t) { ret }; -} - -wasi_http_0_2_0_rc_2023_12_05_types_status_code_t wasi_http_0_2_0_rc_2023_12_05_types_method_outgoing_response_status_code(wasi_http_0_2_0_rc_2023_12_05_types_borrow_outgoing_response_t self) { - int32_t ret = __wasm_import_wasi_http_0_2_0_rc_2023_12_05_types_method_outgoing_response_status_code((self).__handle); - return (uint16_t) (ret); -} - -bool wasi_http_0_2_0_rc_2023_12_05_types_method_outgoing_response_set_status_code(wasi_http_0_2_0_rc_2023_12_05_types_borrow_outgoing_response_t self, wasi_http_0_2_0_rc_2023_12_05_types_status_code_t status_code) { - int32_t ret = __wasm_import_wasi_http_0_2_0_rc_2023_12_05_types_method_outgoing_response_set_status_code((self).__handle, (int32_t) (status_code)); - wasi_http_0_2_0_rc_2023_12_05_types_result_void_void_t result; - switch (ret) { - case 0: { - result.is_err = false; - break; - } - case 1: { - result.is_err = true; - break; - } - } - if (!result.is_err) { - return 1; - } else { - return 0; - } -} - -wasi_http_0_2_0_rc_2023_12_05_types_own_headers_t wasi_http_0_2_0_rc_2023_12_05_types_method_outgoing_response_headers(wasi_http_0_2_0_rc_2023_12_05_types_borrow_outgoing_response_t self) { - int32_t ret = __wasm_import_wasi_http_0_2_0_rc_2023_12_05_types_method_outgoing_response_headers((self).__handle); - return (wasi_http_0_2_0_rc_2023_12_05_types_own_headers_t) { ret }; -} - -bool wasi_http_0_2_0_rc_2023_12_05_types_method_outgoing_response_body(wasi_http_0_2_0_rc_2023_12_05_types_borrow_outgoing_response_t self, wasi_http_0_2_0_rc_2023_12_05_types_own_outgoing_body_t *ret) { - __attribute__((__aligned__(4))) - uint8_t ret_area[8]; - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_http_0_2_0_rc_2023_12_05_types_method_outgoing_response_body((self).__handle, ptr); - wasi_http_0_2_0_rc_2023_12_05_types_result_own_outgoing_body_void_t result; - switch ((int32_t) (*((uint8_t*) (ptr + 0)))) { - case 0: { - result.is_err = false; - result.val.ok = (wasi_http_0_2_0_rc_2023_12_05_types_own_outgoing_body_t) { *((int32_t*) (ptr + 4)) }; - break; - } - case 1: { - result.is_err = true; - break; - } - } - if (!result.is_err) { - *ret = result.val.ok; - return 1; - } else { - return 0; - } -} - -bool wasi_http_0_2_0_rc_2023_12_05_types_method_outgoing_body_write(wasi_http_0_2_0_rc_2023_12_05_types_borrow_outgoing_body_t self, wasi_http_0_2_0_rc_2023_12_05_types_own_output_stream_t *ret) { - __attribute__((__aligned__(4))) - uint8_t ret_area[8]; - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_http_0_2_0_rc_2023_12_05_types_method_outgoing_body_write((self).__handle, ptr); - wasi_http_0_2_0_rc_2023_12_05_types_result_own_output_stream_void_t result; - switch ((int32_t) (*((uint8_t*) (ptr + 0)))) { - case 0: { - result.is_err = false; - result.val.ok = (wasi_http_0_2_0_rc_2023_12_05_types_own_output_stream_t) { *((int32_t*) (ptr + 4)) }; - break; - } - case 1: { - result.is_err = true; - break; - } - } - if (!result.is_err) { - *ret = result.val.ok; - return 1; - } else { - return 0; - } -} - -bool wasi_http_0_2_0_rc_2023_12_05_types_static_outgoing_body_finish(wasi_http_0_2_0_rc_2023_12_05_types_own_outgoing_body_t this_, wasi_http_0_2_0_rc_2023_12_05_types_own_trailers_t *maybe_trailers, wasi_http_0_2_0_rc_2023_12_05_types_error_code_t *err) { - __attribute__((__aligned__(8))) - uint8_t ret_area[40]; - wasi_http_0_2_0_rc_2023_12_05_types_option_own_trailers_t trailers; - trailers.is_some = maybe_trailers != NULL;if (maybe_trailers) { - trailers.val = *maybe_trailers; - } - int32_t option; - int32_t option1; - if ((trailers).is_some) { - const wasi_http_0_2_0_rc_2023_12_05_types_own_trailers_t *payload0 = &(trailers).val; - option = 1; - option1 = (*payload0).__handle; - } else { - option = 0; - option1 = 0; - } - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_http_0_2_0_rc_2023_12_05_types_static_outgoing_body_finish((this_).__handle, option, option1, ptr); - wasi_http_0_2_0_rc_2023_12_05_types_result_void_error_code_t result; - switch ((int32_t) (*((uint8_t*) (ptr + 0)))) { - case 0: { - result.is_err = false; - break; - } - case 1: { - result.is_err = true; - wasi_http_0_2_0_rc_2023_12_05_types_error_code_t variant; - variant.tag = (int32_t) (*((uint8_t*) (ptr + 8))); - switch ((int32_t) variant.tag) { - case 0: { - break; - } - case 1: { - bindings_option_string_t option2; - switch ((int32_t) (*((uint8_t*) (ptr + 16)))) { - case 0: { - option2.is_some = false; - break; - } - case 1: { - option2.is_some = true; - option2.val = (bindings_string_t) { (uint8_t*)(*((int32_t*) (ptr + 20))), (size_t)(*((int32_t*) (ptr + 24))) }; - break; - } - } - bindings_option_u16_t option3; - switch ((int32_t) (*((uint8_t*) (ptr + 28)))) { - case 0: { - option3.is_some = false; - break; - } - case 1: { - option3.is_some = true; - option3.val = (uint16_t) ((int32_t) (*((uint16_t*) (ptr + 30)))); - break; - } - } - variant.val.dns_error = (wasi_http_0_2_0_rc_2023_12_05_types_dns_error_payload_t) { - option2, - option3, - }; - break; - } - case 2: { - break; - } - case 3: { - break; - } - case 4: { - break; - } - case 5: { - break; - } - case 6: { - break; - } - case 7: { - break; - } - case 8: { - break; - } - case 9: { - break; - } - case 10: { - break; - } - case 11: { - break; - } - case 12: { - break; - } - case 13: { - break; - } - case 14: { - bindings_option_u8_t option4; - switch ((int32_t) (*((uint8_t*) (ptr + 16)))) { - case 0: { - option4.is_some = false; - break; - } - case 1: { - option4.is_some = true; - option4.val = (uint8_t) ((int32_t) (*((uint8_t*) (ptr + 17)))); - break; - } - } - bindings_option_string_t option5; - switch ((int32_t) (*((uint8_t*) (ptr + 20)))) { - case 0: { - option5.is_some = false; - break; - } - case 1: { - option5.is_some = true; - option5.val = (bindings_string_t) { (uint8_t*)(*((int32_t*) (ptr + 24))), (size_t)(*((int32_t*) (ptr + 28))) }; - break; - } - } - variant.val.tls_alert_received = (wasi_http_0_2_0_rc_2023_12_05_types_tls_alert_received_payload_t) { - option4, - option5, - }; - break; - } - case 15: { - break; - } - case 16: { - break; - } - case 17: { - bindings_option_u64_t option6; - switch ((int32_t) (*((uint8_t*) (ptr + 16)))) { - case 0: { - option6.is_some = false; - break; - } - case 1: { - option6.is_some = true; - option6.val = (uint64_t) (*((int64_t*) (ptr + 24))); - break; - } - } - variant.val.http_request_body_size = option6; - break; - } - case 18: { - break; - } - case 19: { - break; - } - case 20: { - break; - } - case 21: { - bindings_option_u32_t option7; - switch ((int32_t) (*((uint8_t*) (ptr + 16)))) { - case 0: { - option7.is_some = false; - break; - } - case 1: { - option7.is_some = true; - option7.val = (uint32_t) (*((int32_t*) (ptr + 20))); - break; - } - } - variant.val.http_request_header_section_size = option7; - break; - } - case 22: { - wasi_http_0_2_0_rc_2023_12_05_types_option_field_size_payload_t option10; - switch ((int32_t) (*((uint8_t*) (ptr + 16)))) { - case 0: { - option10.is_some = false; - break; - } - case 1: { - option10.is_some = true; - bindings_option_string_t option8; - switch ((int32_t) (*((uint8_t*) (ptr + 20)))) { - case 0: { - option8.is_some = false; - break; - } - case 1: { - option8.is_some = true; - option8.val = (bindings_string_t) { (uint8_t*)(*((int32_t*) (ptr + 24))), (size_t)(*((int32_t*) (ptr + 28))) }; - break; - } - } - bindings_option_u32_t option9; - switch ((int32_t) (*((uint8_t*) (ptr + 32)))) { - case 0: { - option9.is_some = false; - break; - } - case 1: { - option9.is_some = true; - option9.val = (uint32_t) (*((int32_t*) (ptr + 36))); - break; - } - } - - option10.val = (wasi_http_0_2_0_rc_2023_12_05_types_field_size_payload_t) { - option8, - option9, - }; - break; - } - } - variant.val.http_request_header_size = option10; - break; - } - case 23: { - bindings_option_u32_t option11; - switch ((int32_t) (*((uint8_t*) (ptr + 16)))) { - case 0: { - option11.is_some = false; - break; - } - case 1: { - option11.is_some = true; - option11.val = (uint32_t) (*((int32_t*) (ptr + 20))); - break; - } - } - variant.val.http_request_trailer_section_size = option11; - break; - } - case 24: { - bindings_option_string_t option12; - switch ((int32_t) (*((uint8_t*) (ptr + 16)))) { - case 0: { - option12.is_some = false; - break; - } - case 1: { - option12.is_some = true; - option12.val = (bindings_string_t) { (uint8_t*)(*((int32_t*) (ptr + 20))), (size_t)(*((int32_t*) (ptr + 24))) }; - break; - } - } - bindings_option_u32_t option13; - switch ((int32_t) (*((uint8_t*) (ptr + 28)))) { - case 0: { - option13.is_some = false; - break; - } - case 1: { - option13.is_some = true; - option13.val = (uint32_t) (*((int32_t*) (ptr + 32))); - break; - } - } - variant.val.http_request_trailer_size = (wasi_http_0_2_0_rc_2023_12_05_types_field_size_payload_t) { - option12, - option13, - }; - break; - } - case 25: { - break; - } - case 26: { - bindings_option_u32_t option14; - switch ((int32_t) (*((uint8_t*) (ptr + 16)))) { - case 0: { - option14.is_some = false; - break; - } - case 1: { - option14.is_some = true; - option14.val = (uint32_t) (*((int32_t*) (ptr + 20))); - break; - } - } - variant.val.http_response_header_section_size = option14; - break; - } - case 27: { - bindings_option_string_t option15; - switch ((int32_t) (*((uint8_t*) (ptr + 16)))) { - case 0: { - option15.is_some = false; - break; - } - case 1: { - option15.is_some = true; - option15.val = (bindings_string_t) { (uint8_t*)(*((int32_t*) (ptr + 20))), (size_t)(*((int32_t*) (ptr + 24))) }; - break; - } - } - bindings_option_u32_t option16; - switch ((int32_t) (*((uint8_t*) (ptr + 28)))) { - case 0: { - option16.is_some = false; - break; - } - case 1: { - option16.is_some = true; - option16.val = (uint32_t) (*((int32_t*) (ptr + 32))); - break; - } - } - variant.val.http_response_header_size = (wasi_http_0_2_0_rc_2023_12_05_types_field_size_payload_t) { - option15, - option16, - }; - break; - } - case 28: { - bindings_option_u64_t option17; - switch ((int32_t) (*((uint8_t*) (ptr + 16)))) { - case 0: { - option17.is_some = false; - break; - } - case 1: { - option17.is_some = true; - option17.val = (uint64_t) (*((int64_t*) (ptr + 24))); - break; - } - } - variant.val.http_response_body_size = option17; - break; - } - case 29: { - bindings_option_u32_t option18; - switch ((int32_t) (*((uint8_t*) (ptr + 16)))) { - case 0: { - option18.is_some = false; - break; - } - case 1: { - option18.is_some = true; - option18.val = (uint32_t) (*((int32_t*) (ptr + 20))); - break; - } - } - variant.val.http_response_trailer_section_size = option18; - break; - } - case 30: { - bindings_option_string_t option19; - switch ((int32_t) (*((uint8_t*) (ptr + 16)))) { - case 0: { - option19.is_some = false; - break; - } - case 1: { - option19.is_some = true; - option19.val = (bindings_string_t) { (uint8_t*)(*((int32_t*) (ptr + 20))), (size_t)(*((int32_t*) (ptr + 24))) }; - break; - } - } - bindings_option_u32_t option20; - switch ((int32_t) (*((uint8_t*) (ptr + 28)))) { - case 0: { - option20.is_some = false; - break; - } - case 1: { - option20.is_some = true; - option20.val = (uint32_t) (*((int32_t*) (ptr + 32))); - break; - } - } - variant.val.http_response_trailer_size = (wasi_http_0_2_0_rc_2023_12_05_types_field_size_payload_t) { - option19, - option20, - }; - break; - } - case 31: { - bindings_option_string_t option21; - switch ((int32_t) (*((uint8_t*) (ptr + 16)))) { - case 0: { - option21.is_some = false; - break; - } - case 1: { - option21.is_some = true; - option21.val = (bindings_string_t) { (uint8_t*)(*((int32_t*) (ptr + 20))), (size_t)(*((int32_t*) (ptr + 24))) }; - break; - } - } - variant.val.http_response_transfer_coding = option21; - break; - } - case 32: { - bindings_option_string_t option22; - switch ((int32_t) (*((uint8_t*) (ptr + 16)))) { - case 0: { - option22.is_some = false; - break; - } - case 1: { - option22.is_some = true; - option22.val = (bindings_string_t) { (uint8_t*)(*((int32_t*) (ptr + 20))), (size_t)(*((int32_t*) (ptr + 24))) }; - break; - } - } - variant.val.http_response_content_coding = option22; - break; - } - case 33: { - break; - } - case 34: { - break; - } - case 35: { - break; - } - case 36: { - break; - } - case 37: { - break; - } - case 38: { - bindings_option_string_t option23; - switch ((int32_t) (*((uint8_t*) (ptr + 16)))) { - case 0: { - option23.is_some = false; - break; - } - case 1: { - option23.is_some = true; - option23.val = (bindings_string_t) { (uint8_t*)(*((int32_t*) (ptr + 20))), (size_t)(*((int32_t*) (ptr + 24))) }; - break; - } - } - variant.val.internal_error = option23; - break; - } - } - - result.val.err = variant; - break; - } - } - if (!result.is_err) { - return 1; - } else { - *err = result.val.err; - return 0; - } -} - -wasi_http_0_2_0_rc_2023_12_05_types_own_pollable_t wasi_http_0_2_0_rc_2023_12_05_types_method_future_incoming_response_subscribe(wasi_http_0_2_0_rc_2023_12_05_types_borrow_future_incoming_response_t self) { - int32_t ret = __wasm_import_wasi_http_0_2_0_rc_2023_12_05_types_method_future_incoming_response_subscribe((self).__handle); - return (wasi_http_0_2_0_rc_2023_12_05_types_own_pollable_t) { ret }; -} - -bool wasi_http_0_2_0_rc_2023_12_05_types_method_future_incoming_response_get(wasi_http_0_2_0_rc_2023_12_05_types_borrow_future_incoming_response_t self, wasi_http_0_2_0_rc_2023_12_05_types_result_result_own_incoming_response_error_code_void_t *ret) { - __attribute__((__aligned__(8))) - uint8_t ret_area[56]; - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_http_0_2_0_rc_2023_12_05_types_method_future_incoming_response_get((self).__handle, ptr); - wasi_http_0_2_0_rc_2023_12_05_types_option_result_result_own_incoming_response_error_code_void_t option22; - switch ((int32_t) (*((uint8_t*) (ptr + 0)))) { - case 0: { - option22.is_some = false; - break; - } - case 1: { - option22.is_some = true; - wasi_http_0_2_0_rc_2023_12_05_types_result_result_own_incoming_response_error_code_void_t result21; - switch ((int32_t) (*((uint8_t*) (ptr + 8)))) { - case 0: { - result21.is_err = false; - wasi_http_0_2_0_rc_2023_12_05_types_result_own_incoming_response_error_code_t result; - switch ((int32_t) (*((uint8_t*) (ptr + 16)))) { - case 0: { - result.is_err = false; - result.val.ok = (wasi_http_0_2_0_rc_2023_12_05_types_own_incoming_response_t) { *((int32_t*) (ptr + 24)) }; - break; - } - case 1: { - result.is_err = true; - wasi_http_0_2_0_rc_2023_12_05_types_error_code_t variant; - variant.tag = (int32_t) (*((uint8_t*) (ptr + 24))); - switch ((int32_t) variant.tag) { - case 0: { - break; - } - case 1: { - bindings_option_string_t option; - switch ((int32_t) (*((uint8_t*) (ptr + 32)))) { - case 0: { - option.is_some = false; - break; - } - case 1: { - option.is_some = true; - option.val = (bindings_string_t) { (uint8_t*)(*((int32_t*) (ptr + 36))), (size_t)(*((int32_t*) (ptr + 40))) }; - break; - } - } - bindings_option_u16_t option0; - switch ((int32_t) (*((uint8_t*) (ptr + 44)))) { - case 0: { - option0.is_some = false; - break; - } - case 1: { - option0.is_some = true; - option0.val = (uint16_t) ((int32_t) (*((uint16_t*) (ptr + 46)))); - break; - } - } - variant.val.dns_error = (wasi_http_0_2_0_rc_2023_12_05_types_dns_error_payload_t) { - option, - option0, - }; - break; - } - case 2: { - break; - } - case 3: { - break; - } - case 4: { - break; - } - case 5: { - break; - } - case 6: { - break; - } - case 7: { - break; - } - case 8: { - break; - } - case 9: { - break; - } - case 10: { - break; - } - case 11: { - break; - } - case 12: { - break; - } - case 13: { - break; - } - case 14: { - bindings_option_u8_t option1; - switch ((int32_t) (*((uint8_t*) (ptr + 32)))) { - case 0: { - option1.is_some = false; - break; - } - case 1: { - option1.is_some = true; - option1.val = (uint8_t) ((int32_t) (*((uint8_t*) (ptr + 33)))); - break; - } - } - bindings_option_string_t option2; - switch ((int32_t) (*((uint8_t*) (ptr + 36)))) { - case 0: { - option2.is_some = false; - break; - } - case 1: { - option2.is_some = true; - option2.val = (bindings_string_t) { (uint8_t*)(*((int32_t*) (ptr + 40))), (size_t)(*((int32_t*) (ptr + 44))) }; - break; - } - } - variant.val.tls_alert_received = (wasi_http_0_2_0_rc_2023_12_05_types_tls_alert_received_payload_t) { - option1, - option2, - }; - break; - } - case 15: { - break; - } - case 16: { - break; - } - case 17: { - bindings_option_u64_t option3; - switch ((int32_t) (*((uint8_t*) (ptr + 32)))) { - case 0: { - option3.is_some = false; - break; - } - case 1: { - option3.is_some = true; - option3.val = (uint64_t) (*((int64_t*) (ptr + 40))); - break; - } - } - variant.val.http_request_body_size = option3; - break; - } - case 18: { - break; - } - case 19: { - break; - } - case 20: { - break; - } - case 21: { - bindings_option_u32_t option4; - switch ((int32_t) (*((uint8_t*) (ptr + 32)))) { - case 0: { - option4.is_some = false; - break; - } - case 1: { - option4.is_some = true; - option4.val = (uint32_t) (*((int32_t*) (ptr + 36))); - break; - } - } - variant.val.http_request_header_section_size = option4; - break; - } - case 22: { - wasi_http_0_2_0_rc_2023_12_05_types_option_field_size_payload_t option7; - switch ((int32_t) (*((uint8_t*) (ptr + 32)))) { - case 0: { - option7.is_some = false; - break; - } - case 1: { - option7.is_some = true; - bindings_option_string_t option5; - switch ((int32_t) (*((uint8_t*) (ptr + 36)))) { - case 0: { - option5.is_some = false; - break; - } - case 1: { - option5.is_some = true; - option5.val = (bindings_string_t) { (uint8_t*)(*((int32_t*) (ptr + 40))), (size_t)(*((int32_t*) (ptr + 44))) }; - break; - } - } - bindings_option_u32_t option6; - switch ((int32_t) (*((uint8_t*) (ptr + 48)))) { - case 0: { - option6.is_some = false; - break; - } - case 1: { - option6.is_some = true; - option6.val = (uint32_t) (*((int32_t*) (ptr + 52))); - break; - } - } - - option7.val = (wasi_http_0_2_0_rc_2023_12_05_types_field_size_payload_t) { - option5, - option6, - }; - break; - } - } - variant.val.http_request_header_size = option7; - break; - } - case 23: { - bindings_option_u32_t option8; - switch ((int32_t) (*((uint8_t*) (ptr + 32)))) { - case 0: { - option8.is_some = false; - break; - } - case 1: { - option8.is_some = true; - option8.val = (uint32_t) (*((int32_t*) (ptr + 36))); - break; - } - } - variant.val.http_request_trailer_section_size = option8; - break; - } - case 24: { - bindings_option_string_t option9; - switch ((int32_t) (*((uint8_t*) (ptr + 32)))) { - case 0: { - option9.is_some = false; - break; - } - case 1: { - option9.is_some = true; - option9.val = (bindings_string_t) { (uint8_t*)(*((int32_t*) (ptr + 36))), (size_t)(*((int32_t*) (ptr + 40))) }; - break; - } - } - bindings_option_u32_t option10; - switch ((int32_t) (*((uint8_t*) (ptr + 44)))) { - case 0: { - option10.is_some = false; - break; - } - case 1: { - option10.is_some = true; - option10.val = (uint32_t) (*((int32_t*) (ptr + 48))); - break; - } - } - variant.val.http_request_trailer_size = (wasi_http_0_2_0_rc_2023_12_05_types_field_size_payload_t) { - option9, - option10, - }; - break; - } - case 25: { - break; - } - case 26: { - bindings_option_u32_t option11; - switch ((int32_t) (*((uint8_t*) (ptr + 32)))) { - case 0: { - option11.is_some = false; - break; - } - case 1: { - option11.is_some = true; - option11.val = (uint32_t) (*((int32_t*) (ptr + 36))); - break; - } - } - variant.val.http_response_header_section_size = option11; - break; - } - case 27: { - bindings_option_string_t option12; - switch ((int32_t) (*((uint8_t*) (ptr + 32)))) { - case 0: { - option12.is_some = false; - break; - } - case 1: { - option12.is_some = true; - option12.val = (bindings_string_t) { (uint8_t*)(*((int32_t*) (ptr + 36))), (size_t)(*((int32_t*) (ptr + 40))) }; - break; - } - } - bindings_option_u32_t option13; - switch ((int32_t) (*((uint8_t*) (ptr + 44)))) { - case 0: { - option13.is_some = false; - break; - } - case 1: { - option13.is_some = true; - option13.val = (uint32_t) (*((int32_t*) (ptr + 48))); - break; - } - } - variant.val.http_response_header_size = (wasi_http_0_2_0_rc_2023_12_05_types_field_size_payload_t) { - option12, - option13, - }; - break; - } - case 28: { - bindings_option_u64_t option14; - switch ((int32_t) (*((uint8_t*) (ptr + 32)))) { - case 0: { - option14.is_some = false; - break; - } - case 1: { - option14.is_some = true; - option14.val = (uint64_t) (*((int64_t*) (ptr + 40))); - break; - } - } - variant.val.http_response_body_size = option14; - break; - } - case 29: { - bindings_option_u32_t option15; - switch ((int32_t) (*((uint8_t*) (ptr + 32)))) { - case 0: { - option15.is_some = false; - break; - } - case 1: { - option15.is_some = true; - option15.val = (uint32_t) (*((int32_t*) (ptr + 36))); - break; - } - } - variant.val.http_response_trailer_section_size = option15; - break; - } - case 30: { - bindings_option_string_t option16; - switch ((int32_t) (*((uint8_t*) (ptr + 32)))) { - case 0: { - option16.is_some = false; - break; - } - case 1: { - option16.is_some = true; - option16.val = (bindings_string_t) { (uint8_t*)(*((int32_t*) (ptr + 36))), (size_t)(*((int32_t*) (ptr + 40))) }; - break; - } - } - bindings_option_u32_t option17; - switch ((int32_t) (*((uint8_t*) (ptr + 44)))) { - case 0: { - option17.is_some = false; - break; - } - case 1: { - option17.is_some = true; - option17.val = (uint32_t) (*((int32_t*) (ptr + 48))); - break; - } - } - variant.val.http_response_trailer_size = (wasi_http_0_2_0_rc_2023_12_05_types_field_size_payload_t) { - option16, - option17, - }; - break; - } - case 31: { - bindings_option_string_t option18; - switch ((int32_t) (*((uint8_t*) (ptr + 32)))) { - case 0: { - option18.is_some = false; - break; - } - case 1: { - option18.is_some = true; - option18.val = (bindings_string_t) { (uint8_t*)(*((int32_t*) (ptr + 36))), (size_t)(*((int32_t*) (ptr + 40))) }; - break; - } - } - variant.val.http_response_transfer_coding = option18; - break; - } - case 32: { - bindings_option_string_t option19; - switch ((int32_t) (*((uint8_t*) (ptr + 32)))) { - case 0: { - option19.is_some = false; - break; - } - case 1: { - option19.is_some = true; - option19.val = (bindings_string_t) { (uint8_t*)(*((int32_t*) (ptr + 36))), (size_t)(*((int32_t*) (ptr + 40))) }; - break; - } - } - variant.val.http_response_content_coding = option19; - break; - } - case 33: { - break; - } - case 34: { - break; - } - case 35: { - break; - } - case 36: { - break; - } - case 37: { - break; - } - case 38: { - bindings_option_string_t option20; - switch ((int32_t) (*((uint8_t*) (ptr + 32)))) { - case 0: { - option20.is_some = false; - break; - } - case 1: { - option20.is_some = true; - option20.val = (bindings_string_t) { (uint8_t*)(*((int32_t*) (ptr + 36))), (size_t)(*((int32_t*) (ptr + 40))) }; - break; - } - } - variant.val.internal_error = option20; - break; - } - } - - result.val.err = variant; - break; - } - } - - result21.val.ok = result; - break; - } - case 1: { - result21.is_err = true; - break; - } - } - - option22.val = result21; - break; - } - } - *ret = option22.val; - return option22.is_some; -} - -bool wasi_http_0_2_0_rc_2023_12_05_outgoing_handler_handle(wasi_http_0_2_0_rc_2023_12_05_outgoing_handler_own_outgoing_request_t request, wasi_http_0_2_0_rc_2023_12_05_outgoing_handler_own_request_options_t *maybe_options, wasi_http_0_2_0_rc_2023_12_05_outgoing_handler_own_future_incoming_response_t *ret, wasi_http_0_2_0_rc_2023_12_05_outgoing_handler_error_code_t *err) { - __attribute__((__aligned__(8))) - uint8_t ret_area[40]; - wasi_http_0_2_0_rc_2023_12_05_outgoing_handler_option_own_request_options_t options; - options.is_some = maybe_options != NULL;if (maybe_options) { - options.val = *maybe_options; - } - int32_t option; - int32_t option1; - if ((options).is_some) { - const wasi_http_0_2_0_rc_2023_12_05_outgoing_handler_own_request_options_t *payload0 = &(options).val; - option = 1; - option1 = (*payload0).__handle; - } else { - option = 0; - option1 = 0; - } - int32_t ptr = (int32_t) &ret_area; - __wasm_import_wasi_http_0_2_0_rc_2023_12_05_outgoing_handler_handle((request).__handle, option, option1, ptr); - wasi_http_0_2_0_rc_2023_12_05_outgoing_handler_result_own_future_incoming_response_error_code_t result; - switch ((int32_t) (*((uint8_t*) (ptr + 0)))) { - case 0: { - result.is_err = false; - result.val.ok = (wasi_http_0_2_0_rc_2023_12_05_outgoing_handler_own_future_incoming_response_t) { *((int32_t*) (ptr + 8)) }; - break; - } - case 1: { - result.is_err = true; - wasi_http_0_2_0_rc_2023_12_05_types_error_code_t variant; - variant.tag = (int32_t) (*((uint8_t*) (ptr + 8))); - switch ((int32_t) variant.tag) { - case 0: { - break; - } - case 1: { - bindings_option_string_t option2; - switch ((int32_t) (*((uint8_t*) (ptr + 16)))) { - case 0: { - option2.is_some = false; - break; - } - case 1: { - option2.is_some = true; - option2.val = (bindings_string_t) { (uint8_t*)(*((int32_t*) (ptr + 20))), (size_t)(*((int32_t*) (ptr + 24))) }; - break; - } - } - bindings_option_u16_t option3; - switch ((int32_t) (*((uint8_t*) (ptr + 28)))) { - case 0: { - option3.is_some = false; - break; - } - case 1: { - option3.is_some = true; - option3.val = (uint16_t) ((int32_t) (*((uint16_t*) (ptr + 30)))); - break; - } - } - variant.val.dns_error = (wasi_http_0_2_0_rc_2023_12_05_types_dns_error_payload_t) { - option2, - option3, - }; - break; - } - case 2: { - break; - } - case 3: { - break; - } - case 4: { - break; - } - case 5: { - break; - } - case 6: { - break; - } - case 7: { - break; - } - case 8: { - break; - } - case 9: { - break; - } - case 10: { - break; - } - case 11: { - break; - } - case 12: { - break; - } - case 13: { - break; - } - case 14: { - bindings_option_u8_t option4; - switch ((int32_t) (*((uint8_t*) (ptr + 16)))) { - case 0: { - option4.is_some = false; - break; - } - case 1: { - option4.is_some = true; - option4.val = (uint8_t) ((int32_t) (*((uint8_t*) (ptr + 17)))); - break; - } - } - bindings_option_string_t option5; - switch ((int32_t) (*((uint8_t*) (ptr + 20)))) { - case 0: { - option5.is_some = false; - break; - } - case 1: { - option5.is_some = true; - option5.val = (bindings_string_t) { (uint8_t*)(*((int32_t*) (ptr + 24))), (size_t)(*((int32_t*) (ptr + 28))) }; - break; - } - } - variant.val.tls_alert_received = (wasi_http_0_2_0_rc_2023_12_05_types_tls_alert_received_payload_t) { - option4, - option5, - }; - break; - } - case 15: { - break; - } - case 16: { - break; - } - case 17: { - bindings_option_u64_t option6; - switch ((int32_t) (*((uint8_t*) (ptr + 16)))) { - case 0: { - option6.is_some = false; - break; - } - case 1: { - option6.is_some = true; - option6.val = (uint64_t) (*((int64_t*) (ptr + 24))); - break; - } - } - variant.val.http_request_body_size = option6; - break; - } - case 18: { - break; - } - case 19: { - break; - } - case 20: { - break; - } - case 21: { - bindings_option_u32_t option7; - switch ((int32_t) (*((uint8_t*) (ptr + 16)))) { - case 0: { - option7.is_some = false; - break; - } - case 1: { - option7.is_some = true; - option7.val = (uint32_t) (*((int32_t*) (ptr + 20))); - break; - } - } - variant.val.http_request_header_section_size = option7; - break; - } - case 22: { - wasi_http_0_2_0_rc_2023_12_05_types_option_field_size_payload_t option10; - switch ((int32_t) (*((uint8_t*) (ptr + 16)))) { - case 0: { - option10.is_some = false; - break; - } - case 1: { - option10.is_some = true; - bindings_option_string_t option8; - switch ((int32_t) (*((uint8_t*) (ptr + 20)))) { - case 0: { - option8.is_some = false; - break; - } - case 1: { - option8.is_some = true; - option8.val = (bindings_string_t) { (uint8_t*)(*((int32_t*) (ptr + 24))), (size_t)(*((int32_t*) (ptr + 28))) }; - break; - } - } - bindings_option_u32_t option9; - switch ((int32_t) (*((uint8_t*) (ptr + 32)))) { - case 0: { - option9.is_some = false; - break; - } - case 1: { - option9.is_some = true; - option9.val = (uint32_t) (*((int32_t*) (ptr + 36))); - break; - } - } - - option10.val = (wasi_http_0_2_0_rc_2023_12_05_types_field_size_payload_t) { - option8, - option9, - }; - break; - } - } - variant.val.http_request_header_size = option10; - break; - } - case 23: { - bindings_option_u32_t option11; - switch ((int32_t) (*((uint8_t*) (ptr + 16)))) { - case 0: { - option11.is_some = false; - break; - } - case 1: { - option11.is_some = true; - option11.val = (uint32_t) (*((int32_t*) (ptr + 20))); - break; - } - } - variant.val.http_request_trailer_section_size = option11; - break; - } - case 24: { - bindings_option_string_t option12; - switch ((int32_t) (*((uint8_t*) (ptr + 16)))) { - case 0: { - option12.is_some = false; - break; - } - case 1: { - option12.is_some = true; - option12.val = (bindings_string_t) { (uint8_t*)(*((int32_t*) (ptr + 20))), (size_t)(*((int32_t*) (ptr + 24))) }; - break; - } - } - bindings_option_u32_t option13; - switch ((int32_t) (*((uint8_t*) (ptr + 28)))) { - case 0: { - option13.is_some = false; - break; - } - case 1: { - option13.is_some = true; - option13.val = (uint32_t) (*((int32_t*) (ptr + 32))); - break; - } - } - variant.val.http_request_trailer_size = (wasi_http_0_2_0_rc_2023_12_05_types_field_size_payload_t) { - option12, - option13, - }; - break; - } - case 25: { - break; - } - case 26: { - bindings_option_u32_t option14; - switch ((int32_t) (*((uint8_t*) (ptr + 16)))) { - case 0: { - option14.is_some = false; - break; - } - case 1: { - option14.is_some = true; - option14.val = (uint32_t) (*((int32_t*) (ptr + 20))); - break; - } - } - variant.val.http_response_header_section_size = option14; - break; - } - case 27: { - bindings_option_string_t option15; - switch ((int32_t) (*((uint8_t*) (ptr + 16)))) { - case 0: { - option15.is_some = false; - break; - } - case 1: { - option15.is_some = true; - option15.val = (bindings_string_t) { (uint8_t*)(*((int32_t*) (ptr + 20))), (size_t)(*((int32_t*) (ptr + 24))) }; - break; - } - } - bindings_option_u32_t option16; - switch ((int32_t) (*((uint8_t*) (ptr + 28)))) { - case 0: { - option16.is_some = false; - break; - } - case 1: { - option16.is_some = true; - option16.val = (uint32_t) (*((int32_t*) (ptr + 32))); - break; - } - } - variant.val.http_response_header_size = (wasi_http_0_2_0_rc_2023_12_05_types_field_size_payload_t) { - option15, - option16, - }; - break; - } - case 28: { - bindings_option_u64_t option17; - switch ((int32_t) (*((uint8_t*) (ptr + 16)))) { - case 0: { - option17.is_some = false; - break; - } - case 1: { - option17.is_some = true; - option17.val = (uint64_t) (*((int64_t*) (ptr + 24))); - break; - } - } - variant.val.http_response_body_size = option17; - break; - } - case 29: { - bindings_option_u32_t option18; - switch ((int32_t) (*((uint8_t*) (ptr + 16)))) { - case 0: { - option18.is_some = false; - break; - } - case 1: { - option18.is_some = true; - option18.val = (uint32_t) (*((int32_t*) (ptr + 20))); - break; - } - } - variant.val.http_response_trailer_section_size = option18; - break; - } - case 30: { - bindings_option_string_t option19; - switch ((int32_t) (*((uint8_t*) (ptr + 16)))) { - case 0: { - option19.is_some = false; - break; - } - case 1: { - option19.is_some = true; - option19.val = (bindings_string_t) { (uint8_t*)(*((int32_t*) (ptr + 20))), (size_t)(*((int32_t*) (ptr + 24))) }; - break; - } - } - bindings_option_u32_t option20; - switch ((int32_t) (*((uint8_t*) (ptr + 28)))) { - case 0: { - option20.is_some = false; - break; - } - case 1: { - option20.is_some = true; - option20.val = (uint32_t) (*((int32_t*) (ptr + 32))); - break; - } - } - variant.val.http_response_trailer_size = (wasi_http_0_2_0_rc_2023_12_05_types_field_size_payload_t) { - option19, - option20, - }; - break; - } - case 31: { - bindings_option_string_t option21; - switch ((int32_t) (*((uint8_t*) (ptr + 16)))) { - case 0: { - option21.is_some = false; - break; - } - case 1: { - option21.is_some = true; - option21.val = (bindings_string_t) { (uint8_t*)(*((int32_t*) (ptr + 20))), (size_t)(*((int32_t*) (ptr + 24))) }; - break; - } - } - variant.val.http_response_transfer_coding = option21; - break; - } - case 32: { - bindings_option_string_t option22; - switch ((int32_t) (*((uint8_t*) (ptr + 16)))) { - case 0: { - option22.is_some = false; - break; - } - case 1: { - option22.is_some = true; - option22.val = (bindings_string_t) { (uint8_t*)(*((int32_t*) (ptr + 20))), (size_t)(*((int32_t*) (ptr + 24))) }; - break; - } - } - variant.val.http_response_content_coding = option22; - break; - } - case 33: { - break; - } - case 34: { - break; - } - case 35: { - break; - } - case 36: { - break; - } - case 37: { - break; - } - case 38: { - bindings_option_string_t option23; - switch ((int32_t) (*((uint8_t*) (ptr + 16)))) { - case 0: { - option23.is_some = false; - break; - } - case 1: { - option23.is_some = true; - option23.val = (bindings_string_t) { (uint8_t*)(*((int32_t*) (ptr + 20))), (size_t)(*((int32_t*) (ptr + 24))) }; - break; - } - } - variant.val.internal_error = option23; - break; - } - } - - result.val.err = variant; - break; - } - } - if (!result.is_err) { - *ret = result.val.ok; - return 1; - } else { - *err = result.val.err; - return 0; - } -} - -__attribute__((__export_name__("wasi:cli/run@0.2.0-rc-2023-12-05#run"))) -int32_t __wasm_export_exports_wasi_cli_0_2_0_rc_2023_12_05_run_run(void) { - exports_wasi_cli_0_2_0_rc_2023_12_05_run_result_void_void_t ret; - ret.is_err = !exports_wasi_cli_0_2_0_rc_2023_12_05_run_run(); - int32_t result; - if ((ret).is_err) { - result = 1; - } else { - result = 0; - } - return result; -} - -__attribute__((__export_name__("wasi:http/incoming-handler@0.2.0-rc-2023-12-05#handle"))) -void __wasm_export_exports_wasi_http_0_2_0_rc_2023_12_05_incoming_handler_handle(int32_t arg, int32_t arg0) { - exports_wasi_http_0_2_0_rc_2023_12_05_incoming_handler_handle((exports_wasi_http_0_2_0_rc_2023_12_05_incoming_handler_own_incoming_request_t) { arg }, (exports_wasi_http_0_2_0_rc_2023_12_05_incoming_handler_own_response_outparam_t) { arg0 }); -} - -extern void __component_type_object_force_link_bindings(void); -void __component_type_object_force_link_bindings_public_use_in_this_compilation_unit(void) { - __component_type_object_force_link_bindings(); -} diff --git a/host-apis/wasi-0.2.0-rc-2023-12-05/bindings/bindings.h b/host-apis/wasi-0.2.0-rc-2023-12-05/bindings/bindings.h deleted file mode 100644 index 6293dc65..00000000 --- a/host-apis/wasi-0.2.0-rc-2023-12-05/bindings/bindings.h +++ /dev/null @@ -1,3351 +0,0 @@ -// Generated by `wit-bindgen` 0.16.0. DO NOT EDIT! -#ifndef __BINDINGS_BINDINGS_H -#define __BINDINGS_BINDINGS_H -#ifdef __cplusplus -extern "C" { -#endif - -#include -#include -#include -#include - -typedef struct { - uint8_t*ptr; - size_t len; -} bindings_string_t; - -typedef struct { - bindings_string_t f0; - bindings_string_t f1; -} bindings_tuple2_string_string_t; - -typedef struct { - bindings_tuple2_string_string_t *ptr; - size_t len; -} bindings_list_tuple2_string_string_t; - -typedef struct { - bindings_string_t *ptr; - size_t len; -} bindings_list_string_t; - -typedef struct { - bool is_some; - bindings_string_t val; -} bindings_option_string_t; - -typedef struct { - bool is_err; -} wasi_cli_0_2_0_rc_2023_12_05_exit_result_void_void_t; - -typedef struct wasi_io_0_2_0_rc_2023_11_10_error_own_error_t { - int32_t __handle; -} wasi_io_0_2_0_rc_2023_11_10_error_own_error_t; - -typedef struct wasi_io_0_2_0_rc_2023_11_10_error_borrow_error_t { - int32_t __handle; -} wasi_io_0_2_0_rc_2023_11_10_error_borrow_error_t; - -typedef struct wasi_io_0_2_0_rc_2023_11_10_poll_own_pollable_t { - int32_t __handle; -} wasi_io_0_2_0_rc_2023_11_10_poll_own_pollable_t; - -typedef struct wasi_io_0_2_0_rc_2023_11_10_poll_borrow_pollable_t { - int32_t __handle; -} wasi_io_0_2_0_rc_2023_11_10_poll_borrow_pollable_t; - -typedef struct { - wasi_io_0_2_0_rc_2023_11_10_poll_borrow_pollable_t *ptr; - size_t len; -} wasi_io_0_2_0_rc_2023_11_10_poll_list_borrow_pollable_t; - -typedef struct { - uint32_t *ptr; - size_t len; -} bindings_list_u32_t; - -typedef wasi_io_0_2_0_rc_2023_11_10_error_own_error_t wasi_io_0_2_0_rc_2023_11_10_streams_own_error_t; - -// An error for input-stream and output-stream operations. -typedef struct { - uint8_t tag; - union { - wasi_io_0_2_0_rc_2023_11_10_streams_own_error_t last_operation_failed; - } val; -} wasi_io_0_2_0_rc_2023_11_10_streams_stream_error_t; - -// The last operation (a write or flush) failed before completion. -// -// More information is available in the `error` payload. -#define WASI_IO_0_2_0_RC_2023_11_10_STREAMS_STREAM_ERROR_LAST_OPERATION_FAILED 0 -// The stream is closed: no more input will be accepted by the -// stream. A closed output-stream will return this error on all -// future operations. -#define WASI_IO_0_2_0_RC_2023_11_10_STREAMS_STREAM_ERROR_CLOSED 1 - -typedef struct wasi_io_0_2_0_rc_2023_11_10_streams_own_input_stream_t { - int32_t __handle; -} wasi_io_0_2_0_rc_2023_11_10_streams_own_input_stream_t; - -typedef struct wasi_io_0_2_0_rc_2023_11_10_streams_borrow_input_stream_t { - int32_t __handle; -} wasi_io_0_2_0_rc_2023_11_10_streams_borrow_input_stream_t; - -typedef struct wasi_io_0_2_0_rc_2023_11_10_streams_own_output_stream_t { - int32_t __handle; -} wasi_io_0_2_0_rc_2023_11_10_streams_own_output_stream_t; - -typedef struct wasi_io_0_2_0_rc_2023_11_10_streams_borrow_output_stream_t { - int32_t __handle; -} wasi_io_0_2_0_rc_2023_11_10_streams_borrow_output_stream_t; - -typedef struct { - uint8_t *ptr; - size_t len; -} bindings_list_u8_t; - -typedef struct { - bool is_err; - union { - bindings_list_u8_t ok; - wasi_io_0_2_0_rc_2023_11_10_streams_stream_error_t err; - } val; -} wasi_io_0_2_0_rc_2023_11_10_streams_result_list_u8_stream_error_t; - -typedef struct { - bool is_err; - union { - uint64_t ok; - wasi_io_0_2_0_rc_2023_11_10_streams_stream_error_t err; - } val; -} wasi_io_0_2_0_rc_2023_11_10_streams_result_u64_stream_error_t; - -typedef wasi_io_0_2_0_rc_2023_11_10_poll_own_pollable_t wasi_io_0_2_0_rc_2023_11_10_streams_own_pollable_t; - -typedef struct { - bool is_err; - union { - wasi_io_0_2_0_rc_2023_11_10_streams_stream_error_t err; - } val; -} wasi_io_0_2_0_rc_2023_11_10_streams_result_void_stream_error_t; - -typedef wasi_io_0_2_0_rc_2023_11_10_streams_own_input_stream_t wasi_cli_0_2_0_rc_2023_12_05_stdin_own_input_stream_t; - -typedef wasi_io_0_2_0_rc_2023_11_10_streams_own_output_stream_t wasi_cli_0_2_0_rc_2023_12_05_stdout_own_output_stream_t; - -typedef wasi_io_0_2_0_rc_2023_11_10_streams_own_output_stream_t wasi_cli_0_2_0_rc_2023_12_05_stderr_own_output_stream_t; - -typedef struct wasi_cli_0_2_0_rc_2023_12_05_terminal_input_own_terminal_input_t { - int32_t __handle; -} wasi_cli_0_2_0_rc_2023_12_05_terminal_input_own_terminal_input_t; - -typedef struct wasi_cli_0_2_0_rc_2023_12_05_terminal_input_borrow_terminal_input_t { - int32_t __handle; -} wasi_cli_0_2_0_rc_2023_12_05_terminal_input_borrow_terminal_input_t; - -typedef struct wasi_cli_0_2_0_rc_2023_12_05_terminal_output_own_terminal_output_t { - int32_t __handle; -} wasi_cli_0_2_0_rc_2023_12_05_terminal_output_own_terminal_output_t; - -typedef struct wasi_cli_0_2_0_rc_2023_12_05_terminal_output_borrow_terminal_output_t { - int32_t __handle; -} wasi_cli_0_2_0_rc_2023_12_05_terminal_output_borrow_terminal_output_t; - -typedef wasi_cli_0_2_0_rc_2023_12_05_terminal_input_own_terminal_input_t wasi_cli_0_2_0_rc_2023_12_05_terminal_stdin_own_terminal_input_t; - -typedef struct { - bool is_some; - wasi_cli_0_2_0_rc_2023_12_05_terminal_stdin_own_terminal_input_t val; -} wasi_cli_0_2_0_rc_2023_12_05_terminal_stdin_option_own_terminal_input_t; - -typedef wasi_cli_0_2_0_rc_2023_12_05_terminal_output_own_terminal_output_t wasi_cli_0_2_0_rc_2023_12_05_terminal_stdout_own_terminal_output_t; - -typedef struct { - bool is_some; - wasi_cli_0_2_0_rc_2023_12_05_terminal_stdout_own_terminal_output_t val; -} wasi_cli_0_2_0_rc_2023_12_05_terminal_stdout_option_own_terminal_output_t; - -typedef wasi_cli_0_2_0_rc_2023_12_05_terminal_output_own_terminal_output_t wasi_cli_0_2_0_rc_2023_12_05_terminal_stderr_own_terminal_output_t; - -typedef struct { - bool is_some; - wasi_cli_0_2_0_rc_2023_12_05_terminal_stderr_own_terminal_output_t val; -} wasi_cli_0_2_0_rc_2023_12_05_terminal_stderr_option_own_terminal_output_t; - -// An instant in time, in nanoseconds. An instant is relative to an -// unspecified initial value, and can only be compared to instances from -// the same monotonic-clock. -typedef uint64_t wasi_clocks_0_2_0_rc_2023_11_10_monotonic_clock_instant_t; - -// A duration of time, in nanoseconds. -typedef uint64_t wasi_clocks_0_2_0_rc_2023_11_10_monotonic_clock_duration_t; - -typedef wasi_io_0_2_0_rc_2023_11_10_poll_own_pollable_t wasi_clocks_0_2_0_rc_2023_11_10_monotonic_clock_own_pollable_t; - -// A time and date in seconds plus nanoseconds. -typedef struct { - uint64_t seconds; - uint32_t nanoseconds; -} wasi_clocks_0_2_0_rc_2023_11_10_wall_clock_datetime_t; - -typedef wasi_clocks_0_2_0_rc_2023_11_10_wall_clock_datetime_t wasi_filesystem_0_2_0_rc_2023_11_10_types_datetime_t; - -// File size or length of a region within a file. -typedef uint64_t wasi_filesystem_0_2_0_rc_2023_11_10_types_filesize_t; - -// The type of a filesystem object referenced by a descriptor. -// -// Note: This was called `filetype` in earlier versions of WASI. -typedef uint8_t wasi_filesystem_0_2_0_rc_2023_11_10_types_descriptor_type_t; - -// The type of the descriptor or file is unknown or is different from -// any of the other types specified. -#define WASI_FILESYSTEM_0_2_0_RC_2023_11_10_TYPES_DESCRIPTOR_TYPE_UNKNOWN 0 -// The descriptor refers to a block device inode. -#define WASI_FILESYSTEM_0_2_0_RC_2023_11_10_TYPES_DESCRIPTOR_TYPE_BLOCK_DEVICE 1 -// The descriptor refers to a character device inode. -#define WASI_FILESYSTEM_0_2_0_RC_2023_11_10_TYPES_DESCRIPTOR_TYPE_CHARACTER_DEVICE 2 -// The descriptor refers to a directory inode. -#define WASI_FILESYSTEM_0_2_0_RC_2023_11_10_TYPES_DESCRIPTOR_TYPE_DIRECTORY 3 -// The descriptor refers to a named pipe. -#define WASI_FILESYSTEM_0_2_0_RC_2023_11_10_TYPES_DESCRIPTOR_TYPE_FIFO 4 -// The file refers to a symbolic link inode. -#define WASI_FILESYSTEM_0_2_0_RC_2023_11_10_TYPES_DESCRIPTOR_TYPE_SYMBOLIC_LINK 5 -// The descriptor refers to a regular file inode. -#define WASI_FILESYSTEM_0_2_0_RC_2023_11_10_TYPES_DESCRIPTOR_TYPE_REGULAR_FILE 6 -// The descriptor refers to a socket. -#define WASI_FILESYSTEM_0_2_0_RC_2023_11_10_TYPES_DESCRIPTOR_TYPE_SOCKET 7 - -// Descriptor flags. -// -// Note: This was called `fdflags` in earlier versions of WASI. -typedef uint8_t wasi_filesystem_0_2_0_rc_2023_11_10_types_descriptor_flags_t; - -// Read mode: Data can be read. -#define WASI_FILESYSTEM_0_2_0_RC_2023_11_10_TYPES_DESCRIPTOR_FLAGS_READ (1 << 0) -// Write mode: Data can be written to. -#define WASI_FILESYSTEM_0_2_0_RC_2023_11_10_TYPES_DESCRIPTOR_FLAGS_WRITE (1 << 1) -// Request that writes be performed according to synchronized I/O file -// integrity completion. The data stored in the file and the file's -// metadata are synchronized. This is similar to `O_SYNC` in POSIX. -// -// The precise semantics of this operation have not yet been defined for -// WASI. At this time, it should be interpreted as a request, and not a -// requirement. -#define WASI_FILESYSTEM_0_2_0_RC_2023_11_10_TYPES_DESCRIPTOR_FLAGS_FILE_INTEGRITY_SYNC (1 << 2) -// Request that writes be performed according to synchronized I/O data -// integrity completion. Only the data stored in the file is -// synchronized. This is similar to `O_DSYNC` in POSIX. -// -// The precise semantics of this operation have not yet been defined for -// WASI. At this time, it should be interpreted as a request, and not a -// requirement. -#define WASI_FILESYSTEM_0_2_0_RC_2023_11_10_TYPES_DESCRIPTOR_FLAGS_DATA_INTEGRITY_SYNC (1 << 3) -// Requests that reads be performed at the same level of integrety -// requested for writes. This is similar to `O_RSYNC` in POSIX. -// -// The precise semantics of this operation have not yet been defined for -// WASI. At this time, it should be interpreted as a request, and not a -// requirement. -#define WASI_FILESYSTEM_0_2_0_RC_2023_11_10_TYPES_DESCRIPTOR_FLAGS_REQUESTED_WRITE_SYNC (1 << 4) -// Mutating directories mode: Directory contents may be mutated. -// -// When this flag is unset on a descriptor, operations using the -// descriptor which would create, rename, delete, modify the data or -// metadata of filesystem objects, or obtain another handle which -// would permit any of those, shall fail with `error-code::read-only` if -// they would otherwise succeed. -// -// This may only be set on directories. -#define WASI_FILESYSTEM_0_2_0_RC_2023_11_10_TYPES_DESCRIPTOR_FLAGS_MUTATE_DIRECTORY (1 << 5) - -// Flags determining the method of how paths are resolved. -typedef uint8_t wasi_filesystem_0_2_0_rc_2023_11_10_types_path_flags_t; - -// As long as the resolved path corresponds to a symbolic link, it is -// expanded. -#define WASI_FILESYSTEM_0_2_0_RC_2023_11_10_TYPES_PATH_FLAGS_SYMLINK_FOLLOW (1 << 0) - -// Open flags used by `open-at`. -typedef uint8_t wasi_filesystem_0_2_0_rc_2023_11_10_types_open_flags_t; - -// Create file if it does not exist, similar to `O_CREAT` in POSIX. -#define WASI_FILESYSTEM_0_2_0_RC_2023_11_10_TYPES_OPEN_FLAGS_CREATE (1 << 0) -// Fail if not a directory, similar to `O_DIRECTORY` in POSIX. -#define WASI_FILESYSTEM_0_2_0_RC_2023_11_10_TYPES_OPEN_FLAGS_DIRECTORY (1 << 1) -// Fail if file already exists, similar to `O_EXCL` in POSIX. -#define WASI_FILESYSTEM_0_2_0_RC_2023_11_10_TYPES_OPEN_FLAGS_EXCLUSIVE (1 << 2) -// Truncate file to size 0, similar to `O_TRUNC` in POSIX. -#define WASI_FILESYSTEM_0_2_0_RC_2023_11_10_TYPES_OPEN_FLAGS_TRUNCATE (1 << 3) - -// Number of hard links to an inode. -typedef uint64_t wasi_filesystem_0_2_0_rc_2023_11_10_types_link_count_t; - -typedef struct { - bool is_some; - wasi_filesystem_0_2_0_rc_2023_11_10_types_datetime_t val; -} wasi_filesystem_0_2_0_rc_2023_11_10_types_option_datetime_t; - -// File attributes. -// -// Note: This was called `filestat` in earlier versions of WASI. -typedef struct { - // File type. - wasi_filesystem_0_2_0_rc_2023_11_10_types_descriptor_type_t type; - // Number of hard links to the file. - wasi_filesystem_0_2_0_rc_2023_11_10_types_link_count_t link_count; - // For regular files, the file size in bytes. For symbolic links, the - // length in bytes of the pathname contained in the symbolic link. - wasi_filesystem_0_2_0_rc_2023_11_10_types_filesize_t size; - // Last data access timestamp. - // - // If the `option` is none, the platform doesn't maintain an access - // timestamp for this file. - wasi_filesystem_0_2_0_rc_2023_11_10_types_option_datetime_t data_access_timestamp; - // Last data modification timestamp. - // - // If the `option` is none, the platform doesn't maintain a - // modification timestamp for this file. - wasi_filesystem_0_2_0_rc_2023_11_10_types_option_datetime_t data_modification_timestamp; - // Last file status-change timestamp. - // - // If the `option` is none, the platform doesn't maintain a - // status-change timestamp for this file. - wasi_filesystem_0_2_0_rc_2023_11_10_types_option_datetime_t status_change_timestamp; -} wasi_filesystem_0_2_0_rc_2023_11_10_types_descriptor_stat_t; - -// When setting a timestamp, this gives the value to set it to. -typedef struct { - uint8_t tag; - union { - wasi_filesystem_0_2_0_rc_2023_11_10_types_datetime_t timestamp; - } val; -} wasi_filesystem_0_2_0_rc_2023_11_10_types_new_timestamp_t; - -// Leave the timestamp set to its previous value. -#define WASI_FILESYSTEM_0_2_0_RC_2023_11_10_TYPES_NEW_TIMESTAMP_NO_CHANGE 0 -// Set the timestamp to the current time of the system clock associated -// with the filesystem. -#define WASI_FILESYSTEM_0_2_0_RC_2023_11_10_TYPES_NEW_TIMESTAMP_NOW 1 -// Set the timestamp to the given value. -#define WASI_FILESYSTEM_0_2_0_RC_2023_11_10_TYPES_NEW_TIMESTAMP_TIMESTAMP 2 - -// A directory entry. -typedef struct { - // The type of the file referred to by this directory entry. - wasi_filesystem_0_2_0_rc_2023_11_10_types_descriptor_type_t type; - // The name of the object. - bindings_string_t name; -} wasi_filesystem_0_2_0_rc_2023_11_10_types_directory_entry_t; - -// Error codes returned by functions, similar to `errno` in POSIX. -// Not all of these error codes are returned by the functions provided by this -// API; some are used in higher-level library layers, and others are provided -// merely for alignment with POSIX. -typedef uint8_t wasi_filesystem_0_2_0_rc_2023_11_10_types_error_code_t; - -// Permission denied, similar to `EACCES` in POSIX. -#define WASI_FILESYSTEM_0_2_0_RC_2023_11_10_TYPES_ERROR_CODE_ACCESS 0 -// Resource unavailable, or operation would block, similar to `EAGAIN` and `EWOULDBLOCK` in POSIX. -#define WASI_FILESYSTEM_0_2_0_RC_2023_11_10_TYPES_ERROR_CODE_WOULD_BLOCK 1 -// Connection already in progress, similar to `EALREADY` in POSIX. -#define WASI_FILESYSTEM_0_2_0_RC_2023_11_10_TYPES_ERROR_CODE_ALREADY 2 -// Bad descriptor, similar to `EBADF` in POSIX. -#define WASI_FILESYSTEM_0_2_0_RC_2023_11_10_TYPES_ERROR_CODE_BAD_DESCRIPTOR 3 -// Device or resource busy, similar to `EBUSY` in POSIX. -#define WASI_FILESYSTEM_0_2_0_RC_2023_11_10_TYPES_ERROR_CODE_BUSY 4 -// Resource deadlock would occur, similar to `EDEADLK` in POSIX. -#define WASI_FILESYSTEM_0_2_0_RC_2023_11_10_TYPES_ERROR_CODE_DEADLOCK 5 -// Storage quota exceeded, similar to `EDQUOT` in POSIX. -#define WASI_FILESYSTEM_0_2_0_RC_2023_11_10_TYPES_ERROR_CODE_QUOTA 6 -// File exists, similar to `EEXIST` in POSIX. -#define WASI_FILESYSTEM_0_2_0_RC_2023_11_10_TYPES_ERROR_CODE_EXIST 7 -// File too large, similar to `EFBIG` in POSIX. -#define WASI_FILESYSTEM_0_2_0_RC_2023_11_10_TYPES_ERROR_CODE_FILE_TOO_LARGE 8 -// Illegal byte sequence, similar to `EILSEQ` in POSIX. -#define WASI_FILESYSTEM_0_2_0_RC_2023_11_10_TYPES_ERROR_CODE_ILLEGAL_BYTE_SEQUENCE 9 -// Operation in progress, similar to `EINPROGRESS` in POSIX. -#define WASI_FILESYSTEM_0_2_0_RC_2023_11_10_TYPES_ERROR_CODE_IN_PROGRESS 10 -// Interrupted function, similar to `EINTR` in POSIX. -#define WASI_FILESYSTEM_0_2_0_RC_2023_11_10_TYPES_ERROR_CODE_INTERRUPTED 11 -// Invalid argument, similar to `EINVAL` in POSIX. -#define WASI_FILESYSTEM_0_2_0_RC_2023_11_10_TYPES_ERROR_CODE_INVALID 12 -// I/O error, similar to `EIO` in POSIX. -#define WASI_FILESYSTEM_0_2_0_RC_2023_11_10_TYPES_ERROR_CODE_IO 13 -// Is a directory, similar to `EISDIR` in POSIX. -#define WASI_FILESYSTEM_0_2_0_RC_2023_11_10_TYPES_ERROR_CODE_IS_DIRECTORY 14 -// Too many levels of symbolic links, similar to `ELOOP` in POSIX. -#define WASI_FILESYSTEM_0_2_0_RC_2023_11_10_TYPES_ERROR_CODE_LOOP 15 -// Too many links, similar to `EMLINK` in POSIX. -#define WASI_FILESYSTEM_0_2_0_RC_2023_11_10_TYPES_ERROR_CODE_TOO_MANY_LINKS 16 -// Message too large, similar to `EMSGSIZE` in POSIX. -#define WASI_FILESYSTEM_0_2_0_RC_2023_11_10_TYPES_ERROR_CODE_MESSAGE_SIZE 17 -// Filename too long, similar to `ENAMETOOLONG` in POSIX. -#define WASI_FILESYSTEM_0_2_0_RC_2023_11_10_TYPES_ERROR_CODE_NAME_TOO_LONG 18 -// No such device, similar to `ENODEV` in POSIX. -#define WASI_FILESYSTEM_0_2_0_RC_2023_11_10_TYPES_ERROR_CODE_NO_DEVICE 19 -// No such file or directory, similar to `ENOENT` in POSIX. -#define WASI_FILESYSTEM_0_2_0_RC_2023_11_10_TYPES_ERROR_CODE_NO_ENTRY 20 -// No locks available, similar to `ENOLCK` in POSIX. -#define WASI_FILESYSTEM_0_2_0_RC_2023_11_10_TYPES_ERROR_CODE_NO_LOCK 21 -// Not enough space, similar to `ENOMEM` in POSIX. -#define WASI_FILESYSTEM_0_2_0_RC_2023_11_10_TYPES_ERROR_CODE_INSUFFICIENT_MEMORY 22 -// No space left on device, similar to `ENOSPC` in POSIX. -#define WASI_FILESYSTEM_0_2_0_RC_2023_11_10_TYPES_ERROR_CODE_INSUFFICIENT_SPACE 23 -// Not a directory or a symbolic link to a directory, similar to `ENOTDIR` in POSIX. -#define WASI_FILESYSTEM_0_2_0_RC_2023_11_10_TYPES_ERROR_CODE_NOT_DIRECTORY 24 -// Directory not empty, similar to `ENOTEMPTY` in POSIX. -#define WASI_FILESYSTEM_0_2_0_RC_2023_11_10_TYPES_ERROR_CODE_NOT_EMPTY 25 -// State not recoverable, similar to `ENOTRECOVERABLE` in POSIX. -#define WASI_FILESYSTEM_0_2_0_RC_2023_11_10_TYPES_ERROR_CODE_NOT_RECOVERABLE 26 -// Not supported, similar to `ENOTSUP` and `ENOSYS` in POSIX. -#define WASI_FILESYSTEM_0_2_0_RC_2023_11_10_TYPES_ERROR_CODE_UNSUPPORTED 27 -// Inappropriate I/O control operation, similar to `ENOTTY` in POSIX. -#define WASI_FILESYSTEM_0_2_0_RC_2023_11_10_TYPES_ERROR_CODE_NO_TTY 28 -// No such device or address, similar to `ENXIO` in POSIX. -#define WASI_FILESYSTEM_0_2_0_RC_2023_11_10_TYPES_ERROR_CODE_NO_SUCH_DEVICE 29 -// Value too large to be stored in data type, similar to `EOVERFLOW` in POSIX. -#define WASI_FILESYSTEM_0_2_0_RC_2023_11_10_TYPES_ERROR_CODE_OVERFLOW 30 -// Operation not permitted, similar to `EPERM` in POSIX. -#define WASI_FILESYSTEM_0_2_0_RC_2023_11_10_TYPES_ERROR_CODE_NOT_PERMITTED 31 -// Broken pipe, similar to `EPIPE` in POSIX. -#define WASI_FILESYSTEM_0_2_0_RC_2023_11_10_TYPES_ERROR_CODE_PIPE 32 -// Read-only file system, similar to `EROFS` in POSIX. -#define WASI_FILESYSTEM_0_2_0_RC_2023_11_10_TYPES_ERROR_CODE_READ_ONLY 33 -// Invalid seek, similar to `ESPIPE` in POSIX. -#define WASI_FILESYSTEM_0_2_0_RC_2023_11_10_TYPES_ERROR_CODE_INVALID_SEEK 34 -// Text file busy, similar to `ETXTBSY` in POSIX. -#define WASI_FILESYSTEM_0_2_0_RC_2023_11_10_TYPES_ERROR_CODE_TEXT_FILE_BUSY 35 -// Cross-device link, similar to `EXDEV` in POSIX. -#define WASI_FILESYSTEM_0_2_0_RC_2023_11_10_TYPES_ERROR_CODE_CROSS_DEVICE 36 - -// File or memory access pattern advisory information. -typedef uint8_t wasi_filesystem_0_2_0_rc_2023_11_10_types_advice_t; - -// The application has no advice to give on its behavior with respect -// to the specified data. -#define WASI_FILESYSTEM_0_2_0_RC_2023_11_10_TYPES_ADVICE_NORMAL 0 -// The application expects to access the specified data sequentially -// from lower offsets to higher offsets. -#define WASI_FILESYSTEM_0_2_0_RC_2023_11_10_TYPES_ADVICE_SEQUENTIAL 1 -// The application expects to access the specified data in a random -// order. -#define WASI_FILESYSTEM_0_2_0_RC_2023_11_10_TYPES_ADVICE_RANDOM 2 -// The application expects to access the specified data in the near -// future. -#define WASI_FILESYSTEM_0_2_0_RC_2023_11_10_TYPES_ADVICE_WILL_NEED 3 -// The application expects that it will not access the specified data -// in the near future. -#define WASI_FILESYSTEM_0_2_0_RC_2023_11_10_TYPES_ADVICE_DONT_NEED 4 -// The application expects to access the specified data once and then -// not reuse it thereafter. -#define WASI_FILESYSTEM_0_2_0_RC_2023_11_10_TYPES_ADVICE_NO_REUSE 5 - -// A 128-bit hash value, split into parts because wasm doesn't have a -// 128-bit integer type. -typedef struct { - // 64 bits of a 128-bit hash value. - uint64_t lower; - // Another 64 bits of a 128-bit hash value. - uint64_t upper; -} wasi_filesystem_0_2_0_rc_2023_11_10_types_metadata_hash_value_t; - -typedef struct wasi_filesystem_0_2_0_rc_2023_11_10_types_own_descriptor_t { - int32_t __handle; -} wasi_filesystem_0_2_0_rc_2023_11_10_types_own_descriptor_t; - -typedef struct wasi_filesystem_0_2_0_rc_2023_11_10_types_borrow_descriptor_t { - int32_t __handle; -} wasi_filesystem_0_2_0_rc_2023_11_10_types_borrow_descriptor_t; - -typedef struct wasi_filesystem_0_2_0_rc_2023_11_10_types_own_directory_entry_stream_t { - int32_t __handle; -} wasi_filesystem_0_2_0_rc_2023_11_10_types_own_directory_entry_stream_t; - -typedef struct wasi_filesystem_0_2_0_rc_2023_11_10_types_borrow_directory_entry_stream_t { - int32_t __handle; -} wasi_filesystem_0_2_0_rc_2023_11_10_types_borrow_directory_entry_stream_t; - -typedef wasi_io_0_2_0_rc_2023_11_10_streams_own_input_stream_t wasi_filesystem_0_2_0_rc_2023_11_10_types_own_input_stream_t; - -typedef struct { - bool is_err; - union { - wasi_filesystem_0_2_0_rc_2023_11_10_types_own_input_stream_t ok; - wasi_filesystem_0_2_0_rc_2023_11_10_types_error_code_t err; - } val; -} wasi_filesystem_0_2_0_rc_2023_11_10_types_result_own_input_stream_error_code_t; - -typedef wasi_io_0_2_0_rc_2023_11_10_streams_own_output_stream_t wasi_filesystem_0_2_0_rc_2023_11_10_types_own_output_stream_t; - -typedef struct { - bool is_err; - union { - wasi_filesystem_0_2_0_rc_2023_11_10_types_own_output_stream_t ok; - wasi_filesystem_0_2_0_rc_2023_11_10_types_error_code_t err; - } val; -} wasi_filesystem_0_2_0_rc_2023_11_10_types_result_own_output_stream_error_code_t; - -typedef struct { - bool is_err; - union { - wasi_filesystem_0_2_0_rc_2023_11_10_types_error_code_t err; - } val; -} wasi_filesystem_0_2_0_rc_2023_11_10_types_result_void_error_code_t; - -typedef struct { - bool is_err; - union { - wasi_filesystem_0_2_0_rc_2023_11_10_types_descriptor_flags_t ok; - wasi_filesystem_0_2_0_rc_2023_11_10_types_error_code_t err; - } val; -} wasi_filesystem_0_2_0_rc_2023_11_10_types_result_descriptor_flags_error_code_t; - -typedef struct { - bool is_err; - union { - wasi_filesystem_0_2_0_rc_2023_11_10_types_descriptor_type_t ok; - wasi_filesystem_0_2_0_rc_2023_11_10_types_error_code_t err; - } val; -} wasi_filesystem_0_2_0_rc_2023_11_10_types_result_descriptor_type_error_code_t; - -typedef struct { - bindings_list_u8_t f0; - bool f1; -} bindings_tuple2_list_u8_bool_t; - -typedef struct { - bool is_err; - union { - bindings_tuple2_list_u8_bool_t ok; - wasi_filesystem_0_2_0_rc_2023_11_10_types_error_code_t err; - } val; -} wasi_filesystem_0_2_0_rc_2023_11_10_types_result_tuple2_list_u8_bool_error_code_t; - -typedef struct { - bool is_err; - union { - wasi_filesystem_0_2_0_rc_2023_11_10_types_filesize_t ok; - wasi_filesystem_0_2_0_rc_2023_11_10_types_error_code_t err; - } val; -} wasi_filesystem_0_2_0_rc_2023_11_10_types_result_filesize_error_code_t; - -typedef struct { - bool is_err; - union { - wasi_filesystem_0_2_0_rc_2023_11_10_types_own_directory_entry_stream_t ok; - wasi_filesystem_0_2_0_rc_2023_11_10_types_error_code_t err; - } val; -} wasi_filesystem_0_2_0_rc_2023_11_10_types_result_own_directory_entry_stream_error_code_t; - -typedef struct { - bool is_err; - union { - wasi_filesystem_0_2_0_rc_2023_11_10_types_descriptor_stat_t ok; - wasi_filesystem_0_2_0_rc_2023_11_10_types_error_code_t err; - } val; -} wasi_filesystem_0_2_0_rc_2023_11_10_types_result_descriptor_stat_error_code_t; - -typedef struct { - bool is_err; - union { - wasi_filesystem_0_2_0_rc_2023_11_10_types_own_descriptor_t ok; - wasi_filesystem_0_2_0_rc_2023_11_10_types_error_code_t err; - } val; -} wasi_filesystem_0_2_0_rc_2023_11_10_types_result_own_descriptor_error_code_t; - -typedef struct { - bool is_err; - union { - bindings_string_t ok; - wasi_filesystem_0_2_0_rc_2023_11_10_types_error_code_t err; - } val; -} wasi_filesystem_0_2_0_rc_2023_11_10_types_result_string_error_code_t; - -typedef struct { - bool is_err; - union { - wasi_filesystem_0_2_0_rc_2023_11_10_types_metadata_hash_value_t ok; - wasi_filesystem_0_2_0_rc_2023_11_10_types_error_code_t err; - } val; -} wasi_filesystem_0_2_0_rc_2023_11_10_types_result_metadata_hash_value_error_code_t; - -typedef struct { - bool is_some; - wasi_filesystem_0_2_0_rc_2023_11_10_types_directory_entry_t val; -} wasi_filesystem_0_2_0_rc_2023_11_10_types_option_directory_entry_t; - -typedef struct { - bool is_err; - union { - wasi_filesystem_0_2_0_rc_2023_11_10_types_option_directory_entry_t ok; - wasi_filesystem_0_2_0_rc_2023_11_10_types_error_code_t err; - } val; -} wasi_filesystem_0_2_0_rc_2023_11_10_types_result_option_directory_entry_error_code_t; - -typedef wasi_io_0_2_0_rc_2023_11_10_error_borrow_error_t wasi_filesystem_0_2_0_rc_2023_11_10_types_borrow_error_t; - -typedef struct { - bool is_some; - wasi_filesystem_0_2_0_rc_2023_11_10_types_error_code_t val; -} wasi_filesystem_0_2_0_rc_2023_11_10_types_option_error_code_t; - -typedef wasi_filesystem_0_2_0_rc_2023_11_10_types_own_descriptor_t wasi_filesystem_0_2_0_rc_2023_11_10_preopens_own_descriptor_t; - -typedef struct { - wasi_filesystem_0_2_0_rc_2023_11_10_preopens_own_descriptor_t f0; - bindings_string_t f1; -} wasi_filesystem_0_2_0_rc_2023_11_10_preopens_tuple2_own_descriptor_string_t; - -typedef struct { - wasi_filesystem_0_2_0_rc_2023_11_10_preopens_tuple2_own_descriptor_string_t *ptr; - size_t len; -} wasi_filesystem_0_2_0_rc_2023_11_10_preopens_list_tuple2_own_descriptor_string_t; - -typedef struct wasi_sockets_0_2_0_rc_2023_11_10_network_own_network_t { - int32_t __handle; -} wasi_sockets_0_2_0_rc_2023_11_10_network_own_network_t; - -typedef struct wasi_sockets_0_2_0_rc_2023_11_10_network_borrow_network_t { - int32_t __handle; -} wasi_sockets_0_2_0_rc_2023_11_10_network_borrow_network_t; - -// Error codes. -// -// In theory, every API can return any error code. -// In practice, API's typically only return the errors documented per API -// combined with a couple of errors that are always possible: -// - `unknown` -// - `access-denied` -// - `not-supported` -// - `out-of-memory` -// - `concurrency-conflict` -// -// See each individual API for what the POSIX equivalents are. They sometimes differ per API. -typedef uint8_t wasi_sockets_0_2_0_rc_2023_11_10_network_error_code_t; - -// Unknown error -#define WASI_SOCKETS_0_2_0_RC_2023_11_10_NETWORK_ERROR_CODE_UNKNOWN 0 -// Access denied. -// -// POSIX equivalent: EACCES, EPERM -#define WASI_SOCKETS_0_2_0_RC_2023_11_10_NETWORK_ERROR_CODE_ACCESS_DENIED 1 -// The operation is not supported. -// -// POSIX equivalent: EOPNOTSUPP -#define WASI_SOCKETS_0_2_0_RC_2023_11_10_NETWORK_ERROR_CODE_NOT_SUPPORTED 2 -// One of the arguments is invalid. -// -// POSIX equivalent: EINVAL -#define WASI_SOCKETS_0_2_0_RC_2023_11_10_NETWORK_ERROR_CODE_INVALID_ARGUMENT 3 -// Not enough memory to complete the operation. -// -// POSIX equivalent: ENOMEM, ENOBUFS, EAI_MEMORY -#define WASI_SOCKETS_0_2_0_RC_2023_11_10_NETWORK_ERROR_CODE_OUT_OF_MEMORY 4 -// The operation timed out before it could finish completely. -#define WASI_SOCKETS_0_2_0_RC_2023_11_10_NETWORK_ERROR_CODE_TIMEOUT 5 -// This operation is incompatible with another asynchronous operation that is already in progress. -// -// POSIX equivalent: EALREADY -#define WASI_SOCKETS_0_2_0_RC_2023_11_10_NETWORK_ERROR_CODE_CONCURRENCY_CONFLICT 6 -// Trying to finish an asynchronous operation that: -// - has not been started yet, or: -// - was already finished by a previous `finish-*` call. -// -// Note: this is scheduled to be removed when `future`s are natively supported. -#define WASI_SOCKETS_0_2_0_RC_2023_11_10_NETWORK_ERROR_CODE_NOT_IN_PROGRESS 7 -// The operation has been aborted because it could not be completed immediately. -// -// Note: this is scheduled to be removed when `future`s are natively supported. -#define WASI_SOCKETS_0_2_0_RC_2023_11_10_NETWORK_ERROR_CODE_WOULD_BLOCK 8 -// The operation is not valid in the socket's current state. -#define WASI_SOCKETS_0_2_0_RC_2023_11_10_NETWORK_ERROR_CODE_INVALID_STATE 9 -// A new socket resource could not be created because of a system limit. -#define WASI_SOCKETS_0_2_0_RC_2023_11_10_NETWORK_ERROR_CODE_NEW_SOCKET_LIMIT 10 -// A bind operation failed because the provided address is not an address that the `network` can bind to. -#define WASI_SOCKETS_0_2_0_RC_2023_11_10_NETWORK_ERROR_CODE_ADDRESS_NOT_BINDABLE 11 -// A bind operation failed because the provided address is already in use or because there are no ephemeral ports available. -#define WASI_SOCKETS_0_2_0_RC_2023_11_10_NETWORK_ERROR_CODE_ADDRESS_IN_USE 12 -// The remote address is not reachable -#define WASI_SOCKETS_0_2_0_RC_2023_11_10_NETWORK_ERROR_CODE_REMOTE_UNREACHABLE 13 -// The connection was forcefully rejected -#define WASI_SOCKETS_0_2_0_RC_2023_11_10_NETWORK_ERROR_CODE_CONNECTION_REFUSED 14 -// The connection was reset. -#define WASI_SOCKETS_0_2_0_RC_2023_11_10_NETWORK_ERROR_CODE_CONNECTION_RESET 15 -// A connection was aborted. -#define WASI_SOCKETS_0_2_0_RC_2023_11_10_NETWORK_ERROR_CODE_CONNECTION_ABORTED 16 -#define WASI_SOCKETS_0_2_0_RC_2023_11_10_NETWORK_ERROR_CODE_DATAGRAM_TOO_LARGE 17 -// Name does not exist or has no suitable associated IP addresses. -#define WASI_SOCKETS_0_2_0_RC_2023_11_10_NETWORK_ERROR_CODE_NAME_UNRESOLVABLE 18 -// A temporary failure in name resolution occurred. -#define WASI_SOCKETS_0_2_0_RC_2023_11_10_NETWORK_ERROR_CODE_TEMPORARY_RESOLVER_FAILURE 19 -// A permanent failure in name resolution occurred. -#define WASI_SOCKETS_0_2_0_RC_2023_11_10_NETWORK_ERROR_CODE_PERMANENT_RESOLVER_FAILURE 20 - -typedef uint8_t wasi_sockets_0_2_0_rc_2023_11_10_network_ip_address_family_t; - -// Similar to `AF_INET` in POSIX. -#define WASI_SOCKETS_0_2_0_RC_2023_11_10_NETWORK_IP_ADDRESS_FAMILY_IPV4 0 -// Similar to `AF_INET6` in POSIX. -#define WASI_SOCKETS_0_2_0_RC_2023_11_10_NETWORK_IP_ADDRESS_FAMILY_IPV6 1 - -typedef struct { - uint8_t f0; - uint8_t f1; - uint8_t f2; - uint8_t f3; -} wasi_sockets_0_2_0_rc_2023_11_10_network_ipv4_address_t; - -typedef struct { - uint16_t f0; - uint16_t f1; - uint16_t f2; - uint16_t f3; - uint16_t f4; - uint16_t f5; - uint16_t f6; - uint16_t f7; -} wasi_sockets_0_2_0_rc_2023_11_10_network_ipv6_address_t; - -typedef struct { - uint8_t tag; - union { - wasi_sockets_0_2_0_rc_2023_11_10_network_ipv4_address_t ipv4; - wasi_sockets_0_2_0_rc_2023_11_10_network_ipv6_address_t ipv6; - } val; -} wasi_sockets_0_2_0_rc_2023_11_10_network_ip_address_t; - -#define WASI_SOCKETS_0_2_0_RC_2023_11_10_NETWORK_IP_ADDRESS_IPV4 0 -#define WASI_SOCKETS_0_2_0_RC_2023_11_10_NETWORK_IP_ADDRESS_IPV6 1 - -typedef struct { - uint16_t port; - wasi_sockets_0_2_0_rc_2023_11_10_network_ipv4_address_t address; -} wasi_sockets_0_2_0_rc_2023_11_10_network_ipv4_socket_address_t; - -typedef struct { - uint16_t port; - uint32_t flow_info; - wasi_sockets_0_2_0_rc_2023_11_10_network_ipv6_address_t address; - uint32_t scope_id; -} wasi_sockets_0_2_0_rc_2023_11_10_network_ipv6_socket_address_t; - -typedef struct { - uint8_t tag; - union { - wasi_sockets_0_2_0_rc_2023_11_10_network_ipv4_socket_address_t ipv4; - wasi_sockets_0_2_0_rc_2023_11_10_network_ipv6_socket_address_t ipv6; - } val; -} wasi_sockets_0_2_0_rc_2023_11_10_network_ip_socket_address_t; - -#define WASI_SOCKETS_0_2_0_RC_2023_11_10_NETWORK_IP_SOCKET_ADDRESS_IPV4 0 -#define WASI_SOCKETS_0_2_0_RC_2023_11_10_NETWORK_IP_SOCKET_ADDRESS_IPV6 1 - -typedef wasi_sockets_0_2_0_rc_2023_11_10_network_own_network_t wasi_sockets_0_2_0_rc_2023_11_10_instance_network_own_network_t; - -typedef wasi_sockets_0_2_0_rc_2023_11_10_network_error_code_t wasi_sockets_0_2_0_rc_2023_11_10_udp_error_code_t; - -typedef wasi_sockets_0_2_0_rc_2023_11_10_network_ip_socket_address_t wasi_sockets_0_2_0_rc_2023_11_10_udp_ip_socket_address_t; - -typedef wasi_sockets_0_2_0_rc_2023_11_10_network_ip_address_family_t wasi_sockets_0_2_0_rc_2023_11_10_udp_ip_address_family_t; - -// A received datagram. -typedef struct { - // The payload. - // - // Theoretical max size: ~64 KiB. In practice, typically less than 1500 bytes. - bindings_list_u8_t data; - // The source address. - // - // This field is guaranteed to match the remote address the stream was initialized with, if any. - // - // Equivalent to the `src_addr` out parameter of `recvfrom`. - wasi_sockets_0_2_0_rc_2023_11_10_udp_ip_socket_address_t remote_address; -} wasi_sockets_0_2_0_rc_2023_11_10_udp_incoming_datagram_t; - -typedef struct { - bool is_some; - wasi_sockets_0_2_0_rc_2023_11_10_udp_ip_socket_address_t val; -} wasi_sockets_0_2_0_rc_2023_11_10_udp_option_ip_socket_address_t; - -// A datagram to be sent out. -typedef struct { - // The payload. - bindings_list_u8_t data; - // The destination address. - // - // The requirements on this field depend on how the stream was initialized: - // - with a remote address: this field must be None or match the stream's remote address exactly. - // - without a remote address: this field is required. - // - // If this value is None, the send operation is equivalent to `send` in POSIX. Otherwise it is equivalent to `sendto`. - wasi_sockets_0_2_0_rc_2023_11_10_udp_option_ip_socket_address_t remote_address; -} wasi_sockets_0_2_0_rc_2023_11_10_udp_outgoing_datagram_t; - -typedef struct wasi_sockets_0_2_0_rc_2023_11_10_udp_own_udp_socket_t { - int32_t __handle; -} wasi_sockets_0_2_0_rc_2023_11_10_udp_own_udp_socket_t; - -typedef struct wasi_sockets_0_2_0_rc_2023_11_10_udp_borrow_udp_socket_t { - int32_t __handle; -} wasi_sockets_0_2_0_rc_2023_11_10_udp_borrow_udp_socket_t; - -typedef struct wasi_sockets_0_2_0_rc_2023_11_10_udp_own_incoming_datagram_stream_t { - int32_t __handle; -} wasi_sockets_0_2_0_rc_2023_11_10_udp_own_incoming_datagram_stream_t; - -typedef struct wasi_sockets_0_2_0_rc_2023_11_10_udp_borrow_incoming_datagram_stream_t { - int32_t __handle; -} wasi_sockets_0_2_0_rc_2023_11_10_udp_borrow_incoming_datagram_stream_t; - -typedef struct wasi_sockets_0_2_0_rc_2023_11_10_udp_own_outgoing_datagram_stream_t { - int32_t __handle; -} wasi_sockets_0_2_0_rc_2023_11_10_udp_own_outgoing_datagram_stream_t; - -typedef struct wasi_sockets_0_2_0_rc_2023_11_10_udp_borrow_outgoing_datagram_stream_t { - int32_t __handle; -} wasi_sockets_0_2_0_rc_2023_11_10_udp_borrow_outgoing_datagram_stream_t; - -typedef wasi_sockets_0_2_0_rc_2023_11_10_network_borrow_network_t wasi_sockets_0_2_0_rc_2023_11_10_udp_borrow_network_t; - -typedef struct { - bool is_err; - union { - wasi_sockets_0_2_0_rc_2023_11_10_udp_error_code_t err; - } val; -} wasi_sockets_0_2_0_rc_2023_11_10_udp_result_void_error_code_t; - -typedef struct { - wasi_sockets_0_2_0_rc_2023_11_10_udp_own_incoming_datagram_stream_t f0; - wasi_sockets_0_2_0_rc_2023_11_10_udp_own_outgoing_datagram_stream_t f1; -} wasi_sockets_0_2_0_rc_2023_11_10_udp_tuple2_own_incoming_datagram_stream_own_outgoing_datagram_stream_t; - -typedef struct { - bool is_err; - union { - wasi_sockets_0_2_0_rc_2023_11_10_udp_tuple2_own_incoming_datagram_stream_own_outgoing_datagram_stream_t ok; - wasi_sockets_0_2_0_rc_2023_11_10_udp_error_code_t err; - } val; -} wasi_sockets_0_2_0_rc_2023_11_10_udp_result_tuple2_own_incoming_datagram_stream_own_outgoing_datagram_stream_error_code_t; - -typedef struct { - bool is_err; - union { - wasi_sockets_0_2_0_rc_2023_11_10_udp_ip_socket_address_t ok; - wasi_sockets_0_2_0_rc_2023_11_10_udp_error_code_t err; - } val; -} wasi_sockets_0_2_0_rc_2023_11_10_udp_result_ip_socket_address_error_code_t; - -typedef struct { - bool is_err; - union { - bool ok; - wasi_sockets_0_2_0_rc_2023_11_10_udp_error_code_t err; - } val; -} wasi_sockets_0_2_0_rc_2023_11_10_udp_result_bool_error_code_t; - -typedef struct { - bool is_err; - union { - uint8_t ok; - wasi_sockets_0_2_0_rc_2023_11_10_udp_error_code_t err; - } val; -} wasi_sockets_0_2_0_rc_2023_11_10_udp_result_u8_error_code_t; - -typedef struct { - bool is_err; - union { - uint64_t ok; - wasi_sockets_0_2_0_rc_2023_11_10_udp_error_code_t err; - } val; -} wasi_sockets_0_2_0_rc_2023_11_10_udp_result_u64_error_code_t; - -typedef wasi_io_0_2_0_rc_2023_11_10_poll_own_pollable_t wasi_sockets_0_2_0_rc_2023_11_10_udp_own_pollable_t; - -typedef struct { - wasi_sockets_0_2_0_rc_2023_11_10_udp_incoming_datagram_t *ptr; - size_t len; -} wasi_sockets_0_2_0_rc_2023_11_10_udp_list_incoming_datagram_t; - -typedef struct { - bool is_err; - union { - wasi_sockets_0_2_0_rc_2023_11_10_udp_list_incoming_datagram_t ok; - wasi_sockets_0_2_0_rc_2023_11_10_udp_error_code_t err; - } val; -} wasi_sockets_0_2_0_rc_2023_11_10_udp_result_list_incoming_datagram_error_code_t; - -typedef struct { - wasi_sockets_0_2_0_rc_2023_11_10_udp_outgoing_datagram_t *ptr; - size_t len; -} wasi_sockets_0_2_0_rc_2023_11_10_udp_list_outgoing_datagram_t; - -typedef wasi_sockets_0_2_0_rc_2023_11_10_network_error_code_t wasi_sockets_0_2_0_rc_2023_11_10_udp_create_socket_error_code_t; - -typedef wasi_sockets_0_2_0_rc_2023_11_10_network_ip_address_family_t wasi_sockets_0_2_0_rc_2023_11_10_udp_create_socket_ip_address_family_t; - -typedef wasi_sockets_0_2_0_rc_2023_11_10_udp_own_udp_socket_t wasi_sockets_0_2_0_rc_2023_11_10_udp_create_socket_own_udp_socket_t; - -typedef struct { - bool is_err; - union { - wasi_sockets_0_2_0_rc_2023_11_10_udp_create_socket_own_udp_socket_t ok; - wasi_sockets_0_2_0_rc_2023_11_10_udp_create_socket_error_code_t err; - } val; -} wasi_sockets_0_2_0_rc_2023_11_10_udp_create_socket_result_own_udp_socket_error_code_t; - -typedef wasi_clocks_0_2_0_rc_2023_11_10_monotonic_clock_duration_t wasi_sockets_0_2_0_rc_2023_11_10_tcp_duration_t; - -typedef wasi_sockets_0_2_0_rc_2023_11_10_network_error_code_t wasi_sockets_0_2_0_rc_2023_11_10_tcp_error_code_t; - -typedef wasi_sockets_0_2_0_rc_2023_11_10_network_ip_socket_address_t wasi_sockets_0_2_0_rc_2023_11_10_tcp_ip_socket_address_t; - -typedef wasi_sockets_0_2_0_rc_2023_11_10_network_ip_address_family_t wasi_sockets_0_2_0_rc_2023_11_10_tcp_ip_address_family_t; - -typedef uint8_t wasi_sockets_0_2_0_rc_2023_11_10_tcp_shutdown_type_t; - -// Similar to `SHUT_RD` in POSIX. -#define WASI_SOCKETS_0_2_0_RC_2023_11_10_TCP_SHUTDOWN_TYPE_RECEIVE 0 -// Similar to `SHUT_WR` in POSIX. -#define WASI_SOCKETS_0_2_0_RC_2023_11_10_TCP_SHUTDOWN_TYPE_SEND 1 -// Similar to `SHUT_RDWR` in POSIX. -#define WASI_SOCKETS_0_2_0_RC_2023_11_10_TCP_SHUTDOWN_TYPE_BOTH 2 - -typedef struct wasi_sockets_0_2_0_rc_2023_11_10_tcp_own_tcp_socket_t { - int32_t __handle; -} wasi_sockets_0_2_0_rc_2023_11_10_tcp_own_tcp_socket_t; - -typedef struct wasi_sockets_0_2_0_rc_2023_11_10_tcp_borrow_tcp_socket_t { - int32_t __handle; -} wasi_sockets_0_2_0_rc_2023_11_10_tcp_borrow_tcp_socket_t; - -typedef wasi_sockets_0_2_0_rc_2023_11_10_network_borrow_network_t wasi_sockets_0_2_0_rc_2023_11_10_tcp_borrow_network_t; - -typedef struct { - bool is_err; - union { - wasi_sockets_0_2_0_rc_2023_11_10_tcp_error_code_t err; - } val; -} wasi_sockets_0_2_0_rc_2023_11_10_tcp_result_void_error_code_t; - -typedef wasi_io_0_2_0_rc_2023_11_10_streams_own_input_stream_t wasi_sockets_0_2_0_rc_2023_11_10_tcp_own_input_stream_t; - -typedef wasi_io_0_2_0_rc_2023_11_10_streams_own_output_stream_t wasi_sockets_0_2_0_rc_2023_11_10_tcp_own_output_stream_t; - -typedef struct { - wasi_sockets_0_2_0_rc_2023_11_10_tcp_own_input_stream_t f0; - wasi_sockets_0_2_0_rc_2023_11_10_tcp_own_output_stream_t f1; -} wasi_sockets_0_2_0_rc_2023_11_10_tcp_tuple2_own_input_stream_own_output_stream_t; - -typedef struct { - bool is_err; - union { - wasi_sockets_0_2_0_rc_2023_11_10_tcp_tuple2_own_input_stream_own_output_stream_t ok; - wasi_sockets_0_2_0_rc_2023_11_10_tcp_error_code_t err; - } val; -} wasi_sockets_0_2_0_rc_2023_11_10_tcp_result_tuple2_own_input_stream_own_output_stream_error_code_t; - -typedef struct { - wasi_sockets_0_2_0_rc_2023_11_10_tcp_own_tcp_socket_t f0; - wasi_sockets_0_2_0_rc_2023_11_10_tcp_own_input_stream_t f1; - wasi_sockets_0_2_0_rc_2023_11_10_tcp_own_output_stream_t f2; -} wasi_sockets_0_2_0_rc_2023_11_10_tcp_tuple3_own_tcp_socket_own_input_stream_own_output_stream_t; - -typedef struct { - bool is_err; - union { - wasi_sockets_0_2_0_rc_2023_11_10_tcp_tuple3_own_tcp_socket_own_input_stream_own_output_stream_t ok; - wasi_sockets_0_2_0_rc_2023_11_10_tcp_error_code_t err; - } val; -} wasi_sockets_0_2_0_rc_2023_11_10_tcp_result_tuple3_own_tcp_socket_own_input_stream_own_output_stream_error_code_t; - -typedef struct { - bool is_err; - union { - wasi_sockets_0_2_0_rc_2023_11_10_tcp_ip_socket_address_t ok; - wasi_sockets_0_2_0_rc_2023_11_10_tcp_error_code_t err; - } val; -} wasi_sockets_0_2_0_rc_2023_11_10_tcp_result_ip_socket_address_error_code_t; - -typedef struct { - bool is_err; - union { - bool ok; - wasi_sockets_0_2_0_rc_2023_11_10_tcp_error_code_t err; - } val; -} wasi_sockets_0_2_0_rc_2023_11_10_tcp_result_bool_error_code_t; - -typedef struct { - bool is_err; - union { - wasi_sockets_0_2_0_rc_2023_11_10_tcp_duration_t ok; - wasi_sockets_0_2_0_rc_2023_11_10_tcp_error_code_t err; - } val; -} wasi_sockets_0_2_0_rc_2023_11_10_tcp_result_duration_error_code_t; - -typedef struct { - bool is_err; - union { - uint32_t ok; - wasi_sockets_0_2_0_rc_2023_11_10_tcp_error_code_t err; - } val; -} wasi_sockets_0_2_0_rc_2023_11_10_tcp_result_u32_error_code_t; - -typedef struct { - bool is_err; - union { - uint8_t ok; - wasi_sockets_0_2_0_rc_2023_11_10_tcp_error_code_t err; - } val; -} wasi_sockets_0_2_0_rc_2023_11_10_tcp_result_u8_error_code_t; - -typedef struct { - bool is_err; - union { - uint64_t ok; - wasi_sockets_0_2_0_rc_2023_11_10_tcp_error_code_t err; - } val; -} wasi_sockets_0_2_0_rc_2023_11_10_tcp_result_u64_error_code_t; - -typedef wasi_io_0_2_0_rc_2023_11_10_poll_own_pollable_t wasi_sockets_0_2_0_rc_2023_11_10_tcp_own_pollable_t; - -typedef wasi_sockets_0_2_0_rc_2023_11_10_network_error_code_t wasi_sockets_0_2_0_rc_2023_11_10_tcp_create_socket_error_code_t; - -typedef wasi_sockets_0_2_0_rc_2023_11_10_network_ip_address_family_t wasi_sockets_0_2_0_rc_2023_11_10_tcp_create_socket_ip_address_family_t; - -typedef wasi_sockets_0_2_0_rc_2023_11_10_tcp_own_tcp_socket_t wasi_sockets_0_2_0_rc_2023_11_10_tcp_create_socket_own_tcp_socket_t; - -typedef struct { - bool is_err; - union { - wasi_sockets_0_2_0_rc_2023_11_10_tcp_create_socket_own_tcp_socket_t ok; - wasi_sockets_0_2_0_rc_2023_11_10_tcp_create_socket_error_code_t err; - } val; -} wasi_sockets_0_2_0_rc_2023_11_10_tcp_create_socket_result_own_tcp_socket_error_code_t; - -typedef wasi_sockets_0_2_0_rc_2023_11_10_network_error_code_t wasi_sockets_0_2_0_rc_2023_11_10_ip_name_lookup_error_code_t; - -typedef wasi_sockets_0_2_0_rc_2023_11_10_network_ip_address_t wasi_sockets_0_2_0_rc_2023_11_10_ip_name_lookup_ip_address_t; - -typedef struct wasi_sockets_0_2_0_rc_2023_11_10_ip_name_lookup_own_resolve_address_stream_t { - int32_t __handle; -} wasi_sockets_0_2_0_rc_2023_11_10_ip_name_lookup_own_resolve_address_stream_t; - -typedef struct wasi_sockets_0_2_0_rc_2023_11_10_ip_name_lookup_borrow_resolve_address_stream_t { - int32_t __handle; -} wasi_sockets_0_2_0_rc_2023_11_10_ip_name_lookup_borrow_resolve_address_stream_t; - -typedef wasi_sockets_0_2_0_rc_2023_11_10_network_borrow_network_t wasi_sockets_0_2_0_rc_2023_11_10_ip_name_lookup_borrow_network_t; - -typedef struct { - bool is_err; - union { - wasi_sockets_0_2_0_rc_2023_11_10_ip_name_lookup_own_resolve_address_stream_t ok; - wasi_sockets_0_2_0_rc_2023_11_10_ip_name_lookup_error_code_t err; - } val; -} wasi_sockets_0_2_0_rc_2023_11_10_ip_name_lookup_result_own_resolve_address_stream_error_code_t; - -typedef struct { - bool is_some; - wasi_sockets_0_2_0_rc_2023_11_10_ip_name_lookup_ip_address_t val; -} wasi_sockets_0_2_0_rc_2023_11_10_ip_name_lookup_option_ip_address_t; - -typedef struct { - bool is_err; - union { - wasi_sockets_0_2_0_rc_2023_11_10_ip_name_lookup_option_ip_address_t ok; - wasi_sockets_0_2_0_rc_2023_11_10_ip_name_lookup_error_code_t err; - } val; -} wasi_sockets_0_2_0_rc_2023_11_10_ip_name_lookup_result_option_ip_address_error_code_t; - -typedef wasi_io_0_2_0_rc_2023_11_10_poll_own_pollable_t wasi_sockets_0_2_0_rc_2023_11_10_ip_name_lookup_own_pollable_t; - -typedef struct { - uint64_t f0; - uint64_t f1; -} bindings_tuple2_u64_u64_t; - -typedef wasi_clocks_0_2_0_rc_2023_11_10_monotonic_clock_duration_t wasi_http_0_2_0_rc_2023_12_05_types_duration_t; - -// This type corresponds to HTTP standard Methods. -typedef struct { - uint8_t tag; - union { - bindings_string_t other; - } val; -} wasi_http_0_2_0_rc_2023_12_05_types_method_t; - -#define WASI_HTTP_0_2_0_RC_2023_12_05_TYPES_METHOD_GET 0 -#define WASI_HTTP_0_2_0_RC_2023_12_05_TYPES_METHOD_HEAD 1 -#define WASI_HTTP_0_2_0_RC_2023_12_05_TYPES_METHOD_POST 2 -#define WASI_HTTP_0_2_0_RC_2023_12_05_TYPES_METHOD_PUT 3 -#define WASI_HTTP_0_2_0_RC_2023_12_05_TYPES_METHOD_DELETE 4 -#define WASI_HTTP_0_2_0_RC_2023_12_05_TYPES_METHOD_CONNECT 5 -#define WASI_HTTP_0_2_0_RC_2023_12_05_TYPES_METHOD_OPTIONS 6 -#define WASI_HTTP_0_2_0_RC_2023_12_05_TYPES_METHOD_TRACE 7 -#define WASI_HTTP_0_2_0_RC_2023_12_05_TYPES_METHOD_PATCH 8 -#define WASI_HTTP_0_2_0_RC_2023_12_05_TYPES_METHOD_OTHER 9 - -// This type corresponds to HTTP standard Related Schemes. -typedef struct { - uint8_t tag; - union { - bindings_string_t other; - } val; -} wasi_http_0_2_0_rc_2023_12_05_types_scheme_t; - -#define WASI_HTTP_0_2_0_RC_2023_12_05_TYPES_SCHEME_HTTP 0 -#define WASI_HTTP_0_2_0_RC_2023_12_05_TYPES_SCHEME_HTTPS 1 -#define WASI_HTTP_0_2_0_RC_2023_12_05_TYPES_SCHEME_OTHER 2 - -typedef struct { - bool is_some; - uint16_t val; -} bindings_option_u16_t; - -// Defines the case payload type for `DNS-error` above: -typedef struct { - bindings_option_string_t rcode; - bindings_option_u16_t info_code; -} wasi_http_0_2_0_rc_2023_12_05_types_dns_error_payload_t; - -typedef struct { - bool is_some; - uint8_t val; -} bindings_option_u8_t; - -// Defines the case payload type for `TLS-alert-received` above: -typedef struct { - bindings_option_u8_t alert_id; - bindings_option_string_t alert_message; -} wasi_http_0_2_0_rc_2023_12_05_types_tls_alert_received_payload_t; - -typedef struct { - bool is_some; - uint32_t val; -} bindings_option_u32_t; - -// Defines the case payload type for `HTTP-response-{header,trailer}-size` above: -typedef struct { - bindings_option_string_t field_name; - bindings_option_u32_t field_size; -} wasi_http_0_2_0_rc_2023_12_05_types_field_size_payload_t; - -typedef struct { - bool is_some; - uint64_t val; -} bindings_option_u64_t; - -typedef struct { - bool is_some; - wasi_http_0_2_0_rc_2023_12_05_types_field_size_payload_t val; -} wasi_http_0_2_0_rc_2023_12_05_types_option_field_size_payload_t; - -// These cases are inspired by the IANA HTTP Proxy Error Types: -// https://www.iana.org/assignments/http-proxy-status/http-proxy-status.xhtml#table-http-proxy-error-types -typedef struct { - uint8_t tag; - union { - wasi_http_0_2_0_rc_2023_12_05_types_dns_error_payload_t dns_error; - wasi_http_0_2_0_rc_2023_12_05_types_tls_alert_received_payload_t tls_alert_received; - bindings_option_u64_t http_request_body_size; - bindings_option_u32_t http_request_header_section_size; - wasi_http_0_2_0_rc_2023_12_05_types_option_field_size_payload_t http_request_header_size; - bindings_option_u32_t http_request_trailer_section_size; - wasi_http_0_2_0_rc_2023_12_05_types_field_size_payload_t http_request_trailer_size; - bindings_option_u32_t http_response_header_section_size; - wasi_http_0_2_0_rc_2023_12_05_types_field_size_payload_t http_response_header_size; - bindings_option_u64_t http_response_body_size; - bindings_option_u32_t http_response_trailer_section_size; - wasi_http_0_2_0_rc_2023_12_05_types_field_size_payload_t http_response_trailer_size; - bindings_option_string_t http_response_transfer_coding; - bindings_option_string_t http_response_content_coding; - bindings_option_string_t internal_error; - } val; -} wasi_http_0_2_0_rc_2023_12_05_types_error_code_t; - -#define WASI_HTTP_0_2_0_RC_2023_12_05_TYPES_ERROR_CODE_DNS_TIMEOUT 0 -#define WASI_HTTP_0_2_0_RC_2023_12_05_TYPES_ERROR_CODE_DNS_ERROR 1 -#define WASI_HTTP_0_2_0_RC_2023_12_05_TYPES_ERROR_CODE_DESTINATION_NOT_FOUND 2 -#define WASI_HTTP_0_2_0_RC_2023_12_05_TYPES_ERROR_CODE_DESTINATION_UNAVAILABLE 3 -#define WASI_HTTP_0_2_0_RC_2023_12_05_TYPES_ERROR_CODE_DESTINATION_IP_PROHIBITED 4 -#define WASI_HTTP_0_2_0_RC_2023_12_05_TYPES_ERROR_CODE_DESTINATION_IP_UNROUTABLE 5 -#define WASI_HTTP_0_2_0_RC_2023_12_05_TYPES_ERROR_CODE_CONNECTION_REFUSED 6 -#define WASI_HTTP_0_2_0_RC_2023_12_05_TYPES_ERROR_CODE_CONNECTION_TERMINATED 7 -#define WASI_HTTP_0_2_0_RC_2023_12_05_TYPES_ERROR_CODE_CONNECTION_TIMEOUT 8 -#define WASI_HTTP_0_2_0_RC_2023_12_05_TYPES_ERROR_CODE_CONNECTION_READ_TIMEOUT 9 -#define WASI_HTTP_0_2_0_RC_2023_12_05_TYPES_ERROR_CODE_CONNECTION_WRITE_TIMEOUT 10 -#define WASI_HTTP_0_2_0_RC_2023_12_05_TYPES_ERROR_CODE_CONNECTION_LIMIT_REACHED 11 -#define WASI_HTTP_0_2_0_RC_2023_12_05_TYPES_ERROR_CODE_TLS_PROTOCOL_ERROR 12 -#define WASI_HTTP_0_2_0_RC_2023_12_05_TYPES_ERROR_CODE_TLS_CERTIFICATE_ERROR 13 -#define WASI_HTTP_0_2_0_RC_2023_12_05_TYPES_ERROR_CODE_TLS_ALERT_RECEIVED 14 -#define WASI_HTTP_0_2_0_RC_2023_12_05_TYPES_ERROR_CODE_HTTP_REQUEST_DENIED 15 -#define WASI_HTTP_0_2_0_RC_2023_12_05_TYPES_ERROR_CODE_HTTP_REQUEST_LENGTH_REQUIRED 16 -#define WASI_HTTP_0_2_0_RC_2023_12_05_TYPES_ERROR_CODE_HTTP_REQUEST_BODY_SIZE 17 -#define WASI_HTTP_0_2_0_RC_2023_12_05_TYPES_ERROR_CODE_HTTP_REQUEST_METHOD_INVALID 18 -#define WASI_HTTP_0_2_0_RC_2023_12_05_TYPES_ERROR_CODE_HTTP_REQUEST_URI_INVALID 19 -#define WASI_HTTP_0_2_0_RC_2023_12_05_TYPES_ERROR_CODE_HTTP_REQUEST_URI_TOO_LONG 20 -#define WASI_HTTP_0_2_0_RC_2023_12_05_TYPES_ERROR_CODE_HTTP_REQUEST_HEADER_SECTION_SIZE 21 -#define WASI_HTTP_0_2_0_RC_2023_12_05_TYPES_ERROR_CODE_HTTP_REQUEST_HEADER_SIZE 22 -#define WASI_HTTP_0_2_0_RC_2023_12_05_TYPES_ERROR_CODE_HTTP_REQUEST_TRAILER_SECTION_SIZE 23 -#define WASI_HTTP_0_2_0_RC_2023_12_05_TYPES_ERROR_CODE_HTTP_REQUEST_TRAILER_SIZE 24 -#define WASI_HTTP_0_2_0_RC_2023_12_05_TYPES_ERROR_CODE_HTTP_RESPONSE_INCOMPLETE 25 -#define WASI_HTTP_0_2_0_RC_2023_12_05_TYPES_ERROR_CODE_HTTP_RESPONSE_HEADER_SECTION_SIZE 26 -#define WASI_HTTP_0_2_0_RC_2023_12_05_TYPES_ERROR_CODE_HTTP_RESPONSE_HEADER_SIZE 27 -#define WASI_HTTP_0_2_0_RC_2023_12_05_TYPES_ERROR_CODE_HTTP_RESPONSE_BODY_SIZE 28 -#define WASI_HTTP_0_2_0_RC_2023_12_05_TYPES_ERROR_CODE_HTTP_RESPONSE_TRAILER_SECTION_SIZE 29 -#define WASI_HTTP_0_2_0_RC_2023_12_05_TYPES_ERROR_CODE_HTTP_RESPONSE_TRAILER_SIZE 30 -#define WASI_HTTP_0_2_0_RC_2023_12_05_TYPES_ERROR_CODE_HTTP_RESPONSE_TRANSFER_CODING 31 -#define WASI_HTTP_0_2_0_RC_2023_12_05_TYPES_ERROR_CODE_HTTP_RESPONSE_CONTENT_CODING 32 -#define WASI_HTTP_0_2_0_RC_2023_12_05_TYPES_ERROR_CODE_HTTP_RESPONSE_TIMEOUT 33 -#define WASI_HTTP_0_2_0_RC_2023_12_05_TYPES_ERROR_CODE_HTTP_UPGRADE_FAILED 34 -#define WASI_HTTP_0_2_0_RC_2023_12_05_TYPES_ERROR_CODE_HTTP_PROTOCOL_ERROR 35 -#define WASI_HTTP_0_2_0_RC_2023_12_05_TYPES_ERROR_CODE_LOOP_DETECTED 36 -#define WASI_HTTP_0_2_0_RC_2023_12_05_TYPES_ERROR_CODE_CONFIGURATION_ERROR 37 -// This is a catch-all error for anything that doesn't fit cleanly into a -// more specific case. It also includes an optional string for an -// unstructured description of the error. Users should not depend on the -// string for diagnosing errors, as it's not required to be consistent -// between implementations. -#define WASI_HTTP_0_2_0_RC_2023_12_05_TYPES_ERROR_CODE_INTERNAL_ERROR 38 - -// This type enumerates the different kinds of errors that may occur when -// setting or appending to a `fields` resource. -typedef struct { - uint8_t tag; -} wasi_http_0_2_0_rc_2023_12_05_types_header_error_t; - -// This error indicates that a `field-key` or `field-value` was -// syntactically invalid when used with an operation that sets headers in a -// `fields`. -#define WASI_HTTP_0_2_0_RC_2023_12_05_TYPES_HEADER_ERROR_INVALID_SYNTAX 0 -// This error indicates that a forbidden `field-key` was used when trying -// to set a header in a `fields`. -#define WASI_HTTP_0_2_0_RC_2023_12_05_TYPES_HEADER_ERROR_FORBIDDEN 1 -// This error indicates that the operation on the `fields` was not -// permitted because the fields are immutable. -#define WASI_HTTP_0_2_0_RC_2023_12_05_TYPES_HEADER_ERROR_IMMUTABLE 2 - -// Field keys are always strings. -typedef bindings_string_t wasi_http_0_2_0_rc_2023_12_05_types_field_key_t; - -// Field values should always be ASCII strings. However, in -// reality, HTTP implementations often have to interpret malformed values, -// so they are provided as a list of bytes. -typedef struct { - uint8_t *ptr; - size_t len; -} wasi_http_0_2_0_rc_2023_12_05_types_field_value_t; - -typedef struct wasi_http_0_2_0_rc_2023_12_05_types_own_fields_t { - int32_t __handle; -} wasi_http_0_2_0_rc_2023_12_05_types_own_fields_t; - -typedef struct wasi_http_0_2_0_rc_2023_12_05_types_borrow_fields_t { - int32_t __handle; -} wasi_http_0_2_0_rc_2023_12_05_types_borrow_fields_t; - -typedef struct wasi_http_0_2_0_rc_2023_12_05_types_own_incoming_request_t { - int32_t __handle; -} wasi_http_0_2_0_rc_2023_12_05_types_own_incoming_request_t; - -typedef struct wasi_http_0_2_0_rc_2023_12_05_types_borrow_incoming_request_t { - int32_t __handle; -} wasi_http_0_2_0_rc_2023_12_05_types_borrow_incoming_request_t; - -typedef struct wasi_http_0_2_0_rc_2023_12_05_types_own_outgoing_request_t { - int32_t __handle; -} wasi_http_0_2_0_rc_2023_12_05_types_own_outgoing_request_t; - -typedef struct wasi_http_0_2_0_rc_2023_12_05_types_borrow_outgoing_request_t { - int32_t __handle; -} wasi_http_0_2_0_rc_2023_12_05_types_borrow_outgoing_request_t; - -typedef struct wasi_http_0_2_0_rc_2023_12_05_types_own_request_options_t { - int32_t __handle; -} wasi_http_0_2_0_rc_2023_12_05_types_own_request_options_t; - -typedef struct wasi_http_0_2_0_rc_2023_12_05_types_borrow_request_options_t { - int32_t __handle; -} wasi_http_0_2_0_rc_2023_12_05_types_borrow_request_options_t; - -typedef struct wasi_http_0_2_0_rc_2023_12_05_types_own_response_outparam_t { - int32_t __handle; -} wasi_http_0_2_0_rc_2023_12_05_types_own_response_outparam_t; - -typedef struct wasi_http_0_2_0_rc_2023_12_05_types_borrow_response_outparam_t { - int32_t __handle; -} wasi_http_0_2_0_rc_2023_12_05_types_borrow_response_outparam_t; - -// This type corresponds to the HTTP standard Status Code. -typedef uint16_t wasi_http_0_2_0_rc_2023_12_05_types_status_code_t; - -typedef struct wasi_http_0_2_0_rc_2023_12_05_types_own_incoming_response_t { - int32_t __handle; -} wasi_http_0_2_0_rc_2023_12_05_types_own_incoming_response_t; - -typedef struct wasi_http_0_2_0_rc_2023_12_05_types_borrow_incoming_response_t { - int32_t __handle; -} wasi_http_0_2_0_rc_2023_12_05_types_borrow_incoming_response_t; - -typedef struct wasi_http_0_2_0_rc_2023_12_05_types_own_incoming_body_t { - int32_t __handle; -} wasi_http_0_2_0_rc_2023_12_05_types_own_incoming_body_t; - -typedef struct wasi_http_0_2_0_rc_2023_12_05_types_borrow_incoming_body_t { - int32_t __handle; -} wasi_http_0_2_0_rc_2023_12_05_types_borrow_incoming_body_t; - -typedef struct wasi_http_0_2_0_rc_2023_12_05_types_own_future_trailers_t { - int32_t __handle; -} wasi_http_0_2_0_rc_2023_12_05_types_own_future_trailers_t; - -typedef struct wasi_http_0_2_0_rc_2023_12_05_types_borrow_future_trailers_t { - int32_t __handle; -} wasi_http_0_2_0_rc_2023_12_05_types_borrow_future_trailers_t; - -typedef struct wasi_http_0_2_0_rc_2023_12_05_types_own_outgoing_response_t { - int32_t __handle; -} wasi_http_0_2_0_rc_2023_12_05_types_own_outgoing_response_t; - -typedef struct wasi_http_0_2_0_rc_2023_12_05_types_borrow_outgoing_response_t { - int32_t __handle; -} wasi_http_0_2_0_rc_2023_12_05_types_borrow_outgoing_response_t; - -typedef struct wasi_http_0_2_0_rc_2023_12_05_types_own_outgoing_body_t { - int32_t __handle; -} wasi_http_0_2_0_rc_2023_12_05_types_own_outgoing_body_t; - -typedef struct wasi_http_0_2_0_rc_2023_12_05_types_borrow_outgoing_body_t { - int32_t __handle; -} wasi_http_0_2_0_rc_2023_12_05_types_borrow_outgoing_body_t; - -typedef struct wasi_http_0_2_0_rc_2023_12_05_types_own_future_incoming_response_t { - int32_t __handle; -} wasi_http_0_2_0_rc_2023_12_05_types_own_future_incoming_response_t; - -typedef struct wasi_http_0_2_0_rc_2023_12_05_types_borrow_future_incoming_response_t { - int32_t __handle; -} wasi_http_0_2_0_rc_2023_12_05_types_borrow_future_incoming_response_t; - -typedef wasi_io_0_2_0_rc_2023_11_10_error_borrow_error_t wasi_http_0_2_0_rc_2023_12_05_types_borrow_io_error_t; - -typedef struct { - bool is_some; - wasi_http_0_2_0_rc_2023_12_05_types_error_code_t val; -} wasi_http_0_2_0_rc_2023_12_05_types_option_error_code_t; - -typedef struct { - wasi_http_0_2_0_rc_2023_12_05_types_field_key_t f0; - wasi_http_0_2_0_rc_2023_12_05_types_field_value_t f1; -} bindings_tuple2_field_key_field_value_t; - -typedef struct { - bindings_tuple2_field_key_field_value_t *ptr; - size_t len; -} bindings_list_tuple2_field_key_field_value_t; - -typedef struct { - bool is_err; - union { - wasi_http_0_2_0_rc_2023_12_05_types_own_fields_t ok; - wasi_http_0_2_0_rc_2023_12_05_types_header_error_t err; - } val; -} wasi_http_0_2_0_rc_2023_12_05_types_result_own_fields_header_error_t; - -typedef struct { - wasi_http_0_2_0_rc_2023_12_05_types_field_value_t *ptr; - size_t len; -} bindings_list_field_value_t; - -typedef struct { - bool is_err; - union { - wasi_http_0_2_0_rc_2023_12_05_types_header_error_t err; - } val; -} wasi_http_0_2_0_rc_2023_12_05_types_result_void_header_error_t; - -typedef struct { - bool is_some; - wasi_http_0_2_0_rc_2023_12_05_types_scheme_t val; -} wasi_http_0_2_0_rc_2023_12_05_types_option_scheme_t; - -typedef wasi_http_0_2_0_rc_2023_12_05_types_own_fields_t wasi_http_0_2_0_rc_2023_12_05_types_own_headers_t; - -typedef struct { - bool is_err; - union { - wasi_http_0_2_0_rc_2023_12_05_types_own_incoming_body_t ok; - } val; -} wasi_http_0_2_0_rc_2023_12_05_types_result_own_incoming_body_void_t; - -typedef struct { - bool is_err; - union { - wasi_http_0_2_0_rc_2023_12_05_types_own_outgoing_body_t ok; - } val; -} wasi_http_0_2_0_rc_2023_12_05_types_result_own_outgoing_body_void_t; - -typedef struct { - bool is_err; -} wasi_http_0_2_0_rc_2023_12_05_types_result_void_void_t; - -typedef struct { - bool is_some; - wasi_http_0_2_0_rc_2023_12_05_types_duration_t val; -} bindings_option_duration_t; - -typedef struct { - bool is_err; - union { - wasi_http_0_2_0_rc_2023_12_05_types_own_outgoing_response_t ok; - wasi_http_0_2_0_rc_2023_12_05_types_error_code_t err; - } val; -} wasi_http_0_2_0_rc_2023_12_05_types_result_own_outgoing_response_error_code_t; - -typedef wasi_io_0_2_0_rc_2023_11_10_streams_own_input_stream_t wasi_http_0_2_0_rc_2023_12_05_types_own_input_stream_t; - -typedef struct { - bool is_err; - union { - wasi_http_0_2_0_rc_2023_12_05_types_own_input_stream_t ok; - } val; -} wasi_http_0_2_0_rc_2023_12_05_types_result_own_input_stream_void_t; - -typedef wasi_io_0_2_0_rc_2023_11_10_poll_own_pollable_t wasi_http_0_2_0_rc_2023_12_05_types_own_pollable_t; - -typedef wasi_http_0_2_0_rc_2023_12_05_types_own_fields_t wasi_http_0_2_0_rc_2023_12_05_types_own_trailers_t; - -typedef struct { - bool is_some; - wasi_http_0_2_0_rc_2023_12_05_types_own_trailers_t val; -} wasi_http_0_2_0_rc_2023_12_05_types_option_own_trailers_t; - -typedef struct { - bool is_err; - union { - wasi_http_0_2_0_rc_2023_12_05_types_option_own_trailers_t ok; - wasi_http_0_2_0_rc_2023_12_05_types_error_code_t err; - } val; -} wasi_http_0_2_0_rc_2023_12_05_types_result_option_own_trailers_error_code_t; - -typedef struct { - bool is_err; - union { - wasi_http_0_2_0_rc_2023_12_05_types_result_option_own_trailers_error_code_t ok; - } val; -} wasi_http_0_2_0_rc_2023_12_05_types_result_result_option_own_trailers_error_code_void_t; - -typedef struct { - bool is_some; - wasi_http_0_2_0_rc_2023_12_05_types_result_result_option_own_trailers_error_code_void_t val; -} wasi_http_0_2_0_rc_2023_12_05_types_option_result_result_option_own_trailers_error_code_void_t; - -typedef wasi_io_0_2_0_rc_2023_11_10_streams_own_output_stream_t wasi_http_0_2_0_rc_2023_12_05_types_own_output_stream_t; - -typedef struct { - bool is_err; - union { - wasi_http_0_2_0_rc_2023_12_05_types_own_output_stream_t ok; - } val; -} wasi_http_0_2_0_rc_2023_12_05_types_result_own_output_stream_void_t; - -typedef struct { - bool is_err; - union { - wasi_http_0_2_0_rc_2023_12_05_types_error_code_t err; - } val; -} wasi_http_0_2_0_rc_2023_12_05_types_result_void_error_code_t; - -typedef struct { - bool is_err; - union { - wasi_http_0_2_0_rc_2023_12_05_types_own_incoming_response_t ok; - wasi_http_0_2_0_rc_2023_12_05_types_error_code_t err; - } val; -} wasi_http_0_2_0_rc_2023_12_05_types_result_own_incoming_response_error_code_t; - -typedef struct { - bool is_err; - union { - wasi_http_0_2_0_rc_2023_12_05_types_result_own_incoming_response_error_code_t ok; - } val; -} wasi_http_0_2_0_rc_2023_12_05_types_result_result_own_incoming_response_error_code_void_t; - -typedef struct { - bool is_some; - wasi_http_0_2_0_rc_2023_12_05_types_result_result_own_incoming_response_error_code_void_t val; -} wasi_http_0_2_0_rc_2023_12_05_types_option_result_result_own_incoming_response_error_code_void_t; - -typedef wasi_http_0_2_0_rc_2023_12_05_types_error_code_t wasi_http_0_2_0_rc_2023_12_05_outgoing_handler_error_code_t; - -typedef wasi_http_0_2_0_rc_2023_12_05_types_own_outgoing_request_t wasi_http_0_2_0_rc_2023_12_05_outgoing_handler_own_outgoing_request_t; - -typedef wasi_http_0_2_0_rc_2023_12_05_types_own_request_options_t wasi_http_0_2_0_rc_2023_12_05_outgoing_handler_own_request_options_t; - -typedef struct { - bool is_some; - wasi_http_0_2_0_rc_2023_12_05_outgoing_handler_own_request_options_t val; -} wasi_http_0_2_0_rc_2023_12_05_outgoing_handler_option_own_request_options_t; - -typedef wasi_http_0_2_0_rc_2023_12_05_types_own_future_incoming_response_t wasi_http_0_2_0_rc_2023_12_05_outgoing_handler_own_future_incoming_response_t; - -typedef struct { - bool is_err; - union { - wasi_http_0_2_0_rc_2023_12_05_outgoing_handler_own_future_incoming_response_t ok; - wasi_http_0_2_0_rc_2023_12_05_outgoing_handler_error_code_t err; - } val; -} wasi_http_0_2_0_rc_2023_12_05_outgoing_handler_result_own_future_incoming_response_error_code_t; - -typedef struct { - bool is_err; -} exports_wasi_cli_0_2_0_rc_2023_12_05_run_result_void_void_t; - -typedef wasi_http_0_2_0_rc_2023_12_05_types_own_incoming_request_t exports_wasi_http_0_2_0_rc_2023_12_05_incoming_handler_own_incoming_request_t; - -typedef wasi_http_0_2_0_rc_2023_12_05_types_own_response_outparam_t exports_wasi_http_0_2_0_rc_2023_12_05_incoming_handler_own_response_outparam_t; - -// Imported Functions from `wasi:cli/environment@0.2.0-rc-2023-12-05` -// Get the POSIX-style environment variables. -// -// Each environment variable is provided as a pair of string variable names -// and string value. -// -// Morally, these are a value import, but until value imports are available -// in the component model, this import function should return the same -// values each time it is called. -extern void wasi_cli_0_2_0_rc_2023_12_05_environment_get_environment(bindings_list_tuple2_string_string_t *ret); -// Get the POSIX-style arguments to the program. -extern void wasi_cli_0_2_0_rc_2023_12_05_environment_get_arguments(bindings_list_string_t *ret); -// Return a path that programs should use as their initial current working -// directory, interpreting `.` as shorthand for this. -extern bool wasi_cli_0_2_0_rc_2023_12_05_environment_initial_cwd(bindings_string_t *ret); - -// Imported Functions from `wasi:cli/exit@0.2.0-rc-2023-12-05` -// Exit the current instance and any linked instances. -extern void wasi_cli_0_2_0_rc_2023_12_05_exit_exit(wasi_cli_0_2_0_rc_2023_12_05_exit_result_void_void_t *status); - -// Imported Functions from `wasi:io/error@0.2.0-rc-2023-11-10` -// Returns a string that is suitable to assist humans in debugging -// this error. -// -// WARNING: The returned string should not be consumed mechanically! -// It may change across platforms, hosts, or other implementation -// details. Parsing this string is a major platform-compatibility -// hazard. -extern void wasi_io_0_2_0_rc_2023_11_10_error_method_error_to_debug_string(wasi_io_0_2_0_rc_2023_11_10_error_borrow_error_t self, bindings_string_t *ret); - -// Imported Functions from `wasi:io/poll@0.2.0-rc-2023-11-10` -// Return the readiness of a pollable. This function never blocks. -// -// Returns `true` when the pollable is ready, and `false` otherwise. -extern bool wasi_io_0_2_0_rc_2023_11_10_poll_method_pollable_ready(wasi_io_0_2_0_rc_2023_11_10_poll_borrow_pollable_t self); -// `block` returns immediately if the pollable is ready, and otherwise -// blocks until ready. -// -// This function is equivalent to calling `poll.poll` on a list -// containing only this pollable. -extern void wasi_io_0_2_0_rc_2023_11_10_poll_method_pollable_block(wasi_io_0_2_0_rc_2023_11_10_poll_borrow_pollable_t self); -// Poll for completion on a set of pollables. -// -// This function takes a list of pollables, which identify I/O sources of -// interest, and waits until one or more of the events is ready for I/O. -// -// The result `list` contains one or more indices of handles in the -// argument list that is ready for I/O. -// -// If the list contains more elements than can be indexed with a `u32` -// value, this function traps. -// -// A timeout can be implemented by adding a pollable from the -// wasi-clocks API to the list. -// -// This function does not return a `result`; polling in itself does not -// do any I/O so it doesn't fail. If any of the I/O sources identified by -// the pollables has an error, it is indicated by marking the source as -// being reaedy for I/O. -extern void wasi_io_0_2_0_rc_2023_11_10_poll_poll(wasi_io_0_2_0_rc_2023_11_10_poll_list_borrow_pollable_t *in, bindings_list_u32_t *ret); - -// Imported Functions from `wasi:io/streams@0.2.0-rc-2023-11-10` -// Perform a non-blocking read from the stream. -// -// This function returns a list of bytes containing the read data, -// when successful. The returned list will contain up to `len` bytes; -// it may return fewer than requested, but not more. The list is -// empty when no bytes are available for reading at this time. The -// pollable given by `subscribe` will be ready when more bytes are -// available. -// -// This function fails with a `stream-error` when the operation -// encounters an error, giving `last-operation-failed`, or when the -// stream is closed, giving `closed`. -// -// When the caller gives a `len` of 0, it represents a request to -// read 0 bytes. If the stream is still open, this call should -// succeed and return an empty list, or otherwise fail with `closed`. -// -// The `len` parameter is a `u64`, which could represent a list of u8 which -// is not possible to allocate in wasm32, or not desirable to allocate as -// as a return value by the callee. The callee may return a list of bytes -// less than `len` in size while more bytes are available for reading. -extern bool wasi_io_0_2_0_rc_2023_11_10_streams_method_input_stream_read(wasi_io_0_2_0_rc_2023_11_10_streams_borrow_input_stream_t self, uint64_t len, bindings_list_u8_t *ret, wasi_io_0_2_0_rc_2023_11_10_streams_stream_error_t *err); -// Read bytes from a stream, after blocking until at least one byte can -// be read. Except for blocking, behavior is identical to `read`. -extern bool wasi_io_0_2_0_rc_2023_11_10_streams_method_input_stream_blocking_read(wasi_io_0_2_0_rc_2023_11_10_streams_borrow_input_stream_t self, uint64_t len, bindings_list_u8_t *ret, wasi_io_0_2_0_rc_2023_11_10_streams_stream_error_t *err); -// Skip bytes from a stream. Returns number of bytes skipped. -// -// Behaves identical to `read`, except instead of returning a list -// of bytes, returns the number of bytes consumed from the stream. -extern bool wasi_io_0_2_0_rc_2023_11_10_streams_method_input_stream_skip(wasi_io_0_2_0_rc_2023_11_10_streams_borrow_input_stream_t self, uint64_t len, uint64_t *ret, wasi_io_0_2_0_rc_2023_11_10_streams_stream_error_t *err); -// Skip bytes from a stream, after blocking until at least one byte -// can be skipped. Except for blocking behavior, identical to `skip`. -extern bool wasi_io_0_2_0_rc_2023_11_10_streams_method_input_stream_blocking_skip(wasi_io_0_2_0_rc_2023_11_10_streams_borrow_input_stream_t self, uint64_t len, uint64_t *ret, wasi_io_0_2_0_rc_2023_11_10_streams_stream_error_t *err); -// Create a `pollable` which will resolve once either the specified stream -// has bytes available to read or the other end of the stream has been -// closed. -// The created `pollable` is a child resource of the `input-stream`. -// Implementations may trap if the `input-stream` is dropped before -// all derived `pollable`s created with this function are dropped. -extern wasi_io_0_2_0_rc_2023_11_10_streams_own_pollable_t wasi_io_0_2_0_rc_2023_11_10_streams_method_input_stream_subscribe(wasi_io_0_2_0_rc_2023_11_10_streams_borrow_input_stream_t self); -// Check readiness for writing. This function never blocks. -// -// Returns the number of bytes permitted for the next call to `write`, -// or an error. Calling `write` with more bytes than this function has -// permitted will trap. -// -// When this function returns 0 bytes, the `subscribe` pollable will -// become ready when this function will report at least 1 byte, or an -// error. -extern bool wasi_io_0_2_0_rc_2023_11_10_streams_method_output_stream_check_write(wasi_io_0_2_0_rc_2023_11_10_streams_borrow_output_stream_t self, uint64_t *ret, wasi_io_0_2_0_rc_2023_11_10_streams_stream_error_t *err); -// Perform a write. This function never blocks. -// -// Precondition: check-write gave permit of Ok(n) and contents has a -// length of less than or equal to n. Otherwise, this function will trap. -// -// returns Err(closed) without writing if the stream has closed since -// the last call to check-write provided a permit. -extern bool wasi_io_0_2_0_rc_2023_11_10_streams_method_output_stream_write(wasi_io_0_2_0_rc_2023_11_10_streams_borrow_output_stream_t self, bindings_list_u8_t *contents, wasi_io_0_2_0_rc_2023_11_10_streams_stream_error_t *err); -// Perform a write of up to 4096 bytes, and then flush the stream. Block -// until all of these operations are complete, or an error occurs. -// -// This is a convenience wrapper around the use of `check-write`, -// `subscribe`, `write`, and `flush`, and is implemented with the -// following pseudo-code: -// -// ```text -// let pollable = this.subscribe(); -// while !contents.is_empty() { - // // Wait for the stream to become writable - // poll-one(pollable); - // let Ok(n) = this.check-write(); // eliding error handling - // let len = min(n, contents.len()); - // let (chunk, rest) = contents.split_at(len); - // this.write(chunk ); // eliding error handling - // contents = rest; - // } - // this.flush(); - // // Wait for completion of `flush` - // poll-one(pollable); - // // Check for any errors that arose during `flush` - // let _ = this.check-write(); // eliding error handling - // ``` - extern bool wasi_io_0_2_0_rc_2023_11_10_streams_method_output_stream_blocking_write_and_flush(wasi_io_0_2_0_rc_2023_11_10_streams_borrow_output_stream_t self, bindings_list_u8_t *contents, wasi_io_0_2_0_rc_2023_11_10_streams_stream_error_t *err); - // Request to flush buffered output. This function never blocks. - // - // This tells the output-stream that the caller intends any buffered - // output to be flushed. the output which is expected to be flushed - // is all that has been passed to `write` prior to this call. - // - // Upon calling this function, the `output-stream` will not accept any - // writes (`check-write` will return `ok(0)`) until the flush has - // completed. The `subscribe` pollable will become ready when the - // flush has completed and the stream can accept more writes. - extern bool wasi_io_0_2_0_rc_2023_11_10_streams_method_output_stream_flush(wasi_io_0_2_0_rc_2023_11_10_streams_borrow_output_stream_t self, wasi_io_0_2_0_rc_2023_11_10_streams_stream_error_t *err); - // Request to flush buffered output, and block until flush completes - // and stream is ready for writing again. - extern bool wasi_io_0_2_0_rc_2023_11_10_streams_method_output_stream_blocking_flush(wasi_io_0_2_0_rc_2023_11_10_streams_borrow_output_stream_t self, wasi_io_0_2_0_rc_2023_11_10_streams_stream_error_t *err); - // Create a `pollable` which will resolve once the output-stream - // is ready for more writing, or an error has occured. When this - // pollable is ready, `check-write` will return `ok(n)` with n>0, or an - // error. - // - // If the stream is closed, this pollable is always ready immediately. - // - // The created `pollable` is a child resource of the `output-stream`. - // Implementations may trap if the `output-stream` is dropped before - // all derived `pollable`s created with this function are dropped. - extern wasi_io_0_2_0_rc_2023_11_10_streams_own_pollable_t wasi_io_0_2_0_rc_2023_11_10_streams_method_output_stream_subscribe(wasi_io_0_2_0_rc_2023_11_10_streams_borrow_output_stream_t self); - // Write zeroes to a stream. - // - // this should be used precisely like `write` with the exact same - // preconditions (must use check-write first), but instead of - // passing a list of bytes, you simply pass the number of zero-bytes - // that should be written. - extern bool wasi_io_0_2_0_rc_2023_11_10_streams_method_output_stream_write_zeroes(wasi_io_0_2_0_rc_2023_11_10_streams_borrow_output_stream_t self, uint64_t len, wasi_io_0_2_0_rc_2023_11_10_streams_stream_error_t *err); - // Perform a write of up to 4096 zeroes, and then flush the stream. - // Block until all of these operations are complete, or an error - // occurs. - // - // This is a convenience wrapper around the use of `check-write`, - // `subscribe`, `write-zeroes`, and `flush`, and is implemented with - // the following pseudo-code: - // - // ```text - // let pollable = this.subscribe(); - // while num_zeroes != 0 { - // // Wait for the stream to become writable - // poll-one(pollable); - // let Ok(n) = this.check-write(); // eliding error handling - // let len = min(n, num_zeroes); - // this.write-zeroes(len); // eliding error handling - // num_zeroes -= len; - // } - // this.flush(); - // // Wait for completion of `flush` - // poll-one(pollable); - // // Check for any errors that arose during `flush` - // let _ = this.check-write(); // eliding error handling - // ``` - extern bool wasi_io_0_2_0_rc_2023_11_10_streams_method_output_stream_blocking_write_zeroes_and_flush(wasi_io_0_2_0_rc_2023_11_10_streams_borrow_output_stream_t self, uint64_t len, wasi_io_0_2_0_rc_2023_11_10_streams_stream_error_t *err); - // Read from one stream and write to another. - // - // The behavior of splice is equivelant to: - // 1. calling `check-write` on the `output-stream` - // 2. calling `read` on the `input-stream` with the smaller of the - // `check-write` permitted length and the `len` provided to `splice` - // 3. calling `write` on the `output-stream` with that read data. - // - // Any error reported by the call to `check-write`, `read`, or - // `write` ends the splice and reports that error. - // - // This function returns the number of bytes transferred; it may be less - // than `len`. - extern bool wasi_io_0_2_0_rc_2023_11_10_streams_method_output_stream_splice(wasi_io_0_2_0_rc_2023_11_10_streams_borrow_output_stream_t self, wasi_io_0_2_0_rc_2023_11_10_streams_borrow_input_stream_t src, uint64_t len, uint64_t *ret, wasi_io_0_2_0_rc_2023_11_10_streams_stream_error_t *err); - // Read from one stream and write to another, with blocking. - // - // This is similar to `splice`, except that it blocks until the - // `output-stream` is ready for writing, and the `input-stream` - // is ready for reading, before performing the `splice`. - extern bool wasi_io_0_2_0_rc_2023_11_10_streams_method_output_stream_blocking_splice(wasi_io_0_2_0_rc_2023_11_10_streams_borrow_output_stream_t self, wasi_io_0_2_0_rc_2023_11_10_streams_borrow_input_stream_t src, uint64_t len, uint64_t *ret, wasi_io_0_2_0_rc_2023_11_10_streams_stream_error_t *err); - - // Imported Functions from `wasi:cli/stdin@0.2.0-rc-2023-12-05` - extern wasi_cli_0_2_0_rc_2023_12_05_stdin_own_input_stream_t wasi_cli_0_2_0_rc_2023_12_05_stdin_get_stdin(void); - - // Imported Functions from `wasi:cli/stdout@0.2.0-rc-2023-12-05` - extern wasi_cli_0_2_0_rc_2023_12_05_stdout_own_output_stream_t wasi_cli_0_2_0_rc_2023_12_05_stdout_get_stdout(void); - - // Imported Functions from `wasi:cli/stderr@0.2.0-rc-2023-12-05` - extern wasi_cli_0_2_0_rc_2023_12_05_stderr_own_output_stream_t wasi_cli_0_2_0_rc_2023_12_05_stderr_get_stderr(void); - - // Imported Functions from `wasi:cli/terminal-stdin@0.2.0-rc-2023-12-05` - // If stdin is connected to a terminal, return a `terminal-input` handle - // allowing further interaction with it. - extern bool wasi_cli_0_2_0_rc_2023_12_05_terminal_stdin_get_terminal_stdin(wasi_cli_0_2_0_rc_2023_12_05_terminal_stdin_own_terminal_input_t *ret); - - // Imported Functions from `wasi:cli/terminal-stdout@0.2.0-rc-2023-12-05` - // If stdout is connected to a terminal, return a `terminal-output` handle - // allowing further interaction with it. - extern bool wasi_cli_0_2_0_rc_2023_12_05_terminal_stdout_get_terminal_stdout(wasi_cli_0_2_0_rc_2023_12_05_terminal_stdout_own_terminal_output_t *ret); - - // Imported Functions from `wasi:cli/terminal-stderr@0.2.0-rc-2023-12-05` - // If stderr is connected to a terminal, return a `terminal-output` handle - // allowing further interaction with it. - extern bool wasi_cli_0_2_0_rc_2023_12_05_terminal_stderr_get_terminal_stderr(wasi_cli_0_2_0_rc_2023_12_05_terminal_stderr_own_terminal_output_t *ret); - - // Imported Functions from `wasi:clocks/monotonic-clock@0.2.0-rc-2023-11-10` - // Read the current value of the clock. - // - // The clock is monotonic, therefore calling this function repeatedly will - // produce a sequence of non-decreasing values. - extern wasi_clocks_0_2_0_rc_2023_11_10_monotonic_clock_instant_t wasi_clocks_0_2_0_rc_2023_11_10_monotonic_clock_now(void); - // Query the resolution of the clock. Returns the duration of time - // corresponding to a clock tick. - extern wasi_clocks_0_2_0_rc_2023_11_10_monotonic_clock_duration_t wasi_clocks_0_2_0_rc_2023_11_10_monotonic_clock_resolution(void); - // Create a `pollable` which will resolve once the specified instant - // occured. - extern wasi_clocks_0_2_0_rc_2023_11_10_monotonic_clock_own_pollable_t wasi_clocks_0_2_0_rc_2023_11_10_monotonic_clock_subscribe_instant(wasi_clocks_0_2_0_rc_2023_11_10_monotonic_clock_instant_t when); - // Create a `pollable` which will resolve once the given duration has - // elapsed, starting at the time at which this function was called. - // occured. - extern wasi_clocks_0_2_0_rc_2023_11_10_monotonic_clock_own_pollable_t wasi_clocks_0_2_0_rc_2023_11_10_monotonic_clock_subscribe_duration(wasi_clocks_0_2_0_rc_2023_11_10_monotonic_clock_duration_t when); - - // Imported Functions from `wasi:clocks/wall-clock@0.2.0-rc-2023-11-10` - // Read the current value of the clock. - // - // This clock is not monotonic, therefore calling this function repeatedly - // will not necessarily produce a sequence of non-decreasing values. - // - // The returned timestamps represent the number of seconds since - // 1970-01-01T00:00:00Z, also known as [POSIX's Seconds Since the Epoch], - // also known as [Unix Time]. - // - // The nanoseconds field of the output is always less than 1000000000. - // - // [POSIX's Seconds Since the Epoch]: https://pubs.opengroup.org/onlinepubs/9699919799/xrat/V4_xbd_chap04.html#tag_21_04_16 - // [Unix Time]: https://en.wikipedia.org/wiki/Unix_time - extern void wasi_clocks_0_2_0_rc_2023_11_10_wall_clock_now(wasi_clocks_0_2_0_rc_2023_11_10_wall_clock_datetime_t *ret); - // Query the resolution of the clock. - // - // The nanoseconds field of the output is always less than 1000000000. - extern void wasi_clocks_0_2_0_rc_2023_11_10_wall_clock_resolution(wasi_clocks_0_2_0_rc_2023_11_10_wall_clock_datetime_t *ret); - - // Imported Functions from `wasi:filesystem/types@0.2.0-rc-2023-11-10` - // Return a stream for reading from a file, if available. - // - // May fail with an error-code describing why the file cannot be read. - // - // Multiple read, write, and append streams may be active on the same open - // file and they do not interfere with each other. - // - // Note: This allows using `read-stream`, which is similar to `read` in POSIX. - extern bool wasi_filesystem_0_2_0_rc_2023_11_10_types_method_descriptor_read_via_stream(wasi_filesystem_0_2_0_rc_2023_11_10_types_borrow_descriptor_t self, wasi_filesystem_0_2_0_rc_2023_11_10_types_filesize_t offset, wasi_filesystem_0_2_0_rc_2023_11_10_types_own_input_stream_t *ret, wasi_filesystem_0_2_0_rc_2023_11_10_types_error_code_t *err); - // Return a stream for writing to a file, if available. - // - // May fail with an error-code describing why the file cannot be written. - // - // Note: This allows using `write-stream`, which is similar to `write` in - // POSIX. - extern bool wasi_filesystem_0_2_0_rc_2023_11_10_types_method_descriptor_write_via_stream(wasi_filesystem_0_2_0_rc_2023_11_10_types_borrow_descriptor_t self, wasi_filesystem_0_2_0_rc_2023_11_10_types_filesize_t offset, wasi_filesystem_0_2_0_rc_2023_11_10_types_own_output_stream_t *ret, wasi_filesystem_0_2_0_rc_2023_11_10_types_error_code_t *err); - // Return a stream for appending to a file, if available. - // - // May fail with an error-code describing why the file cannot be appended. - // - // Note: This allows using `write-stream`, which is similar to `write` with - // `O_APPEND` in in POSIX. - extern bool wasi_filesystem_0_2_0_rc_2023_11_10_types_method_descriptor_append_via_stream(wasi_filesystem_0_2_0_rc_2023_11_10_types_borrow_descriptor_t self, wasi_filesystem_0_2_0_rc_2023_11_10_types_own_output_stream_t *ret, wasi_filesystem_0_2_0_rc_2023_11_10_types_error_code_t *err); - // Provide file advisory information on a descriptor. - // - // This is similar to `posix_fadvise` in POSIX. - extern bool wasi_filesystem_0_2_0_rc_2023_11_10_types_method_descriptor_advise(wasi_filesystem_0_2_0_rc_2023_11_10_types_borrow_descriptor_t self, wasi_filesystem_0_2_0_rc_2023_11_10_types_filesize_t offset, wasi_filesystem_0_2_0_rc_2023_11_10_types_filesize_t length, wasi_filesystem_0_2_0_rc_2023_11_10_types_advice_t advice, wasi_filesystem_0_2_0_rc_2023_11_10_types_error_code_t *err); - // Synchronize the data of a file to disk. - // - // This function succeeds with no effect if the file descriptor is not - // opened for writing. - // - // Note: This is similar to `fdatasync` in POSIX. - extern bool wasi_filesystem_0_2_0_rc_2023_11_10_types_method_descriptor_sync_data(wasi_filesystem_0_2_0_rc_2023_11_10_types_borrow_descriptor_t self, wasi_filesystem_0_2_0_rc_2023_11_10_types_error_code_t *err); - // Get flags associated with a descriptor. - // - // Note: This returns similar flags to `fcntl(fd, F_GETFL)` in POSIX. - // - // Note: This returns the value that was the `fs_flags` value returned - // from `fdstat_get` in earlier versions of WASI. - extern bool wasi_filesystem_0_2_0_rc_2023_11_10_types_method_descriptor_get_flags(wasi_filesystem_0_2_0_rc_2023_11_10_types_borrow_descriptor_t self, wasi_filesystem_0_2_0_rc_2023_11_10_types_descriptor_flags_t *ret, wasi_filesystem_0_2_0_rc_2023_11_10_types_error_code_t *err); - // Get the dynamic type of a descriptor. - // - // Note: This returns the same value as the `type` field of the `fd-stat` - // returned by `stat`, `stat-at` and similar. - // - // Note: This returns similar flags to the `st_mode & S_IFMT` value provided - // by `fstat` in POSIX. - // - // Note: This returns the value that was the `fs_filetype` value returned - // from `fdstat_get` in earlier versions of WASI. - extern bool wasi_filesystem_0_2_0_rc_2023_11_10_types_method_descriptor_get_type(wasi_filesystem_0_2_0_rc_2023_11_10_types_borrow_descriptor_t self, wasi_filesystem_0_2_0_rc_2023_11_10_types_descriptor_type_t *ret, wasi_filesystem_0_2_0_rc_2023_11_10_types_error_code_t *err); - // Adjust the size of an open file. If this increases the file's size, the - // extra bytes are filled with zeros. - // - // Note: This was called `fd_filestat_set_size` in earlier versions of WASI. - extern bool wasi_filesystem_0_2_0_rc_2023_11_10_types_method_descriptor_set_size(wasi_filesystem_0_2_0_rc_2023_11_10_types_borrow_descriptor_t self, wasi_filesystem_0_2_0_rc_2023_11_10_types_filesize_t size, wasi_filesystem_0_2_0_rc_2023_11_10_types_error_code_t *err); - // Adjust the timestamps of an open file or directory. - // - // Note: This is similar to `futimens` in POSIX. - // - // Note: This was called `fd_filestat_set_times` in earlier versions of WASI. - extern bool wasi_filesystem_0_2_0_rc_2023_11_10_types_method_descriptor_set_times(wasi_filesystem_0_2_0_rc_2023_11_10_types_borrow_descriptor_t self, wasi_filesystem_0_2_0_rc_2023_11_10_types_new_timestamp_t *data_access_timestamp, wasi_filesystem_0_2_0_rc_2023_11_10_types_new_timestamp_t *data_modification_timestamp, wasi_filesystem_0_2_0_rc_2023_11_10_types_error_code_t *err); - // Read from a descriptor, without using and updating the descriptor's offset. - // - // This function returns a list of bytes containing the data that was - // read, along with a bool which, when true, indicates that the end of the - // file was reached. The returned list will contain up to `length` bytes; it - // may return fewer than requested, if the end of the file is reached or - // if the I/O operation is interrupted. - // - // In the future, this may change to return a `stream`. - // - // Note: This is similar to `pread` in POSIX. - extern bool wasi_filesystem_0_2_0_rc_2023_11_10_types_method_descriptor_read(wasi_filesystem_0_2_0_rc_2023_11_10_types_borrow_descriptor_t self, wasi_filesystem_0_2_0_rc_2023_11_10_types_filesize_t length, wasi_filesystem_0_2_0_rc_2023_11_10_types_filesize_t offset, bindings_tuple2_list_u8_bool_t *ret, wasi_filesystem_0_2_0_rc_2023_11_10_types_error_code_t *err); - // Write to a descriptor, without using and updating the descriptor's offset. - // - // It is valid to write past the end of a file; the file is extended to the - // extent of the write, with bytes between the previous end and the start of - // the write set to zero. - // - // In the future, this may change to take a `stream`. - // - // Note: This is similar to `pwrite` in POSIX. - extern bool wasi_filesystem_0_2_0_rc_2023_11_10_types_method_descriptor_write(wasi_filesystem_0_2_0_rc_2023_11_10_types_borrow_descriptor_t self, bindings_list_u8_t *buffer, wasi_filesystem_0_2_0_rc_2023_11_10_types_filesize_t offset, wasi_filesystem_0_2_0_rc_2023_11_10_types_filesize_t *ret, wasi_filesystem_0_2_0_rc_2023_11_10_types_error_code_t *err); - // Read directory entries from a directory. - // - // On filesystems where directories contain entries referring to themselves - // and their parents, often named `.` and `..` respectively, these entries - // are omitted. - // - // This always returns a new stream which starts at the beginning of the - // directory. Multiple streams may be active on the same directory, and they - // do not interfere with each other. - extern bool wasi_filesystem_0_2_0_rc_2023_11_10_types_method_descriptor_read_directory(wasi_filesystem_0_2_0_rc_2023_11_10_types_borrow_descriptor_t self, wasi_filesystem_0_2_0_rc_2023_11_10_types_own_directory_entry_stream_t *ret, wasi_filesystem_0_2_0_rc_2023_11_10_types_error_code_t *err); - // Synchronize the data and metadata of a file to disk. - // - // This function succeeds with no effect if the file descriptor is not - // opened for writing. - // - // Note: This is similar to `fsync` in POSIX. - extern bool wasi_filesystem_0_2_0_rc_2023_11_10_types_method_descriptor_sync(wasi_filesystem_0_2_0_rc_2023_11_10_types_borrow_descriptor_t self, wasi_filesystem_0_2_0_rc_2023_11_10_types_error_code_t *err); - // Create a directory. - // - // Note: This is similar to `mkdirat` in POSIX. - extern bool wasi_filesystem_0_2_0_rc_2023_11_10_types_method_descriptor_create_directory_at(wasi_filesystem_0_2_0_rc_2023_11_10_types_borrow_descriptor_t self, bindings_string_t *path, wasi_filesystem_0_2_0_rc_2023_11_10_types_error_code_t *err); - // Return the attributes of an open file or directory. - // - // Note: This is similar to `fstat` in POSIX, except that it does not return - // device and inode information. For testing whether two descriptors refer to - // the same underlying filesystem object, use `is-same-object`. To obtain - // additional data that can be used do determine whether a file has been - // modified, use `metadata-hash`. - // - // Note: This was called `fd_filestat_get` in earlier versions of WASI. - extern bool wasi_filesystem_0_2_0_rc_2023_11_10_types_method_descriptor_stat(wasi_filesystem_0_2_0_rc_2023_11_10_types_borrow_descriptor_t self, wasi_filesystem_0_2_0_rc_2023_11_10_types_descriptor_stat_t *ret, wasi_filesystem_0_2_0_rc_2023_11_10_types_error_code_t *err); - // Return the attributes of a file or directory. - // - // Note: This is similar to `fstatat` in POSIX, except that it does not - // return device and inode information. See the `stat` description for a - // discussion of alternatives. - // - // Note: This was called `path_filestat_get` in earlier versions of WASI. - extern bool wasi_filesystem_0_2_0_rc_2023_11_10_types_method_descriptor_stat_at(wasi_filesystem_0_2_0_rc_2023_11_10_types_borrow_descriptor_t self, wasi_filesystem_0_2_0_rc_2023_11_10_types_path_flags_t path_flags, bindings_string_t *path, wasi_filesystem_0_2_0_rc_2023_11_10_types_descriptor_stat_t *ret, wasi_filesystem_0_2_0_rc_2023_11_10_types_error_code_t *err); - // Adjust the timestamps of a file or directory. - // - // Note: This is similar to `utimensat` in POSIX. - // - // Note: This was called `path_filestat_set_times` in earlier versions of - // WASI. - extern bool wasi_filesystem_0_2_0_rc_2023_11_10_types_method_descriptor_set_times_at(wasi_filesystem_0_2_0_rc_2023_11_10_types_borrow_descriptor_t self, wasi_filesystem_0_2_0_rc_2023_11_10_types_path_flags_t path_flags, bindings_string_t *path, wasi_filesystem_0_2_0_rc_2023_11_10_types_new_timestamp_t *data_access_timestamp, wasi_filesystem_0_2_0_rc_2023_11_10_types_new_timestamp_t *data_modification_timestamp, wasi_filesystem_0_2_0_rc_2023_11_10_types_error_code_t *err); - // Create a hard link. - // - // Note: This is similar to `linkat` in POSIX. - extern bool wasi_filesystem_0_2_0_rc_2023_11_10_types_method_descriptor_link_at(wasi_filesystem_0_2_0_rc_2023_11_10_types_borrow_descriptor_t self, wasi_filesystem_0_2_0_rc_2023_11_10_types_path_flags_t old_path_flags, bindings_string_t *old_path, wasi_filesystem_0_2_0_rc_2023_11_10_types_borrow_descriptor_t new_descriptor, bindings_string_t *new_path, wasi_filesystem_0_2_0_rc_2023_11_10_types_error_code_t *err); - // Open a file or directory. - // - // The returned descriptor is not guaranteed to be the lowest-numbered - // descriptor not currently open/ it is randomized to prevent applications - // from depending on making assumptions about indexes, since this is - // error-prone in multi-threaded contexts. The returned descriptor is - // guaranteed to be less than 2**31. - // - // If `flags` contains `descriptor-flags::mutate-directory`, and the base - // descriptor doesn't have `descriptor-flags::mutate-directory` set, - // `open-at` fails with `error-code::read-only`. - // - // If `flags` contains `write` or `mutate-directory`, or `open-flags` - // contains `truncate` or `create`, and the base descriptor doesn't have - // `descriptor-flags::mutate-directory` set, `open-at` fails with - // `error-code::read-only`. - // - // Note: This is similar to `openat` in POSIX. - extern bool wasi_filesystem_0_2_0_rc_2023_11_10_types_method_descriptor_open_at(wasi_filesystem_0_2_0_rc_2023_11_10_types_borrow_descriptor_t self, wasi_filesystem_0_2_0_rc_2023_11_10_types_path_flags_t path_flags, bindings_string_t *path, wasi_filesystem_0_2_0_rc_2023_11_10_types_open_flags_t open_flags, wasi_filesystem_0_2_0_rc_2023_11_10_types_descriptor_flags_t flags, wasi_filesystem_0_2_0_rc_2023_11_10_types_own_descriptor_t *ret, wasi_filesystem_0_2_0_rc_2023_11_10_types_error_code_t *err); - // Read the contents of a symbolic link. - // - // If the contents contain an absolute or rooted path in the underlying - // filesystem, this function fails with `error-code::not-permitted`. - // - // Note: This is similar to `readlinkat` in POSIX. - extern bool wasi_filesystem_0_2_0_rc_2023_11_10_types_method_descriptor_readlink_at(wasi_filesystem_0_2_0_rc_2023_11_10_types_borrow_descriptor_t self, bindings_string_t *path, bindings_string_t *ret, wasi_filesystem_0_2_0_rc_2023_11_10_types_error_code_t *err); - // Remove a directory. - // - // Return `error-code::not-empty` if the directory is not empty. - // - // Note: This is similar to `unlinkat(fd, path, AT_REMOVEDIR)` in POSIX. - extern bool wasi_filesystem_0_2_0_rc_2023_11_10_types_method_descriptor_remove_directory_at(wasi_filesystem_0_2_0_rc_2023_11_10_types_borrow_descriptor_t self, bindings_string_t *path, wasi_filesystem_0_2_0_rc_2023_11_10_types_error_code_t *err); - // Rename a filesystem object. - // - // Note: This is similar to `renameat` in POSIX. - extern bool wasi_filesystem_0_2_0_rc_2023_11_10_types_method_descriptor_rename_at(wasi_filesystem_0_2_0_rc_2023_11_10_types_borrow_descriptor_t self, bindings_string_t *old_path, wasi_filesystem_0_2_0_rc_2023_11_10_types_borrow_descriptor_t new_descriptor, bindings_string_t *new_path, wasi_filesystem_0_2_0_rc_2023_11_10_types_error_code_t *err); - // Create a symbolic link (also known as a "symlink"). - // - // If `old-path` starts with `/`, the function fails with - // `error-code::not-permitted`. - // - // Note: This is similar to `symlinkat` in POSIX. - extern bool wasi_filesystem_0_2_0_rc_2023_11_10_types_method_descriptor_symlink_at(wasi_filesystem_0_2_0_rc_2023_11_10_types_borrow_descriptor_t self, bindings_string_t *old_path, bindings_string_t *new_path, wasi_filesystem_0_2_0_rc_2023_11_10_types_error_code_t *err); - // Unlink a filesystem object that is not a directory. - // - // Return `error-code::is-directory` if the path refers to a directory. - // Note: This is similar to `unlinkat(fd, path, 0)` in POSIX. - extern bool wasi_filesystem_0_2_0_rc_2023_11_10_types_method_descriptor_unlink_file_at(wasi_filesystem_0_2_0_rc_2023_11_10_types_borrow_descriptor_t self, bindings_string_t *path, wasi_filesystem_0_2_0_rc_2023_11_10_types_error_code_t *err); - // Test whether two descriptors refer to the same filesystem object. - // - // In POSIX, this corresponds to testing whether the two descriptors have the - // same device (`st_dev`) and inode (`st_ino` or `d_ino`) numbers. - // wasi-filesystem does not expose device and inode numbers, so this function - // may be used instead. - extern bool wasi_filesystem_0_2_0_rc_2023_11_10_types_method_descriptor_is_same_object(wasi_filesystem_0_2_0_rc_2023_11_10_types_borrow_descriptor_t self, wasi_filesystem_0_2_0_rc_2023_11_10_types_borrow_descriptor_t other); - // Return a hash of the metadata associated with a filesystem object referred - // to by a descriptor. - // - // This returns a hash of the last-modification timestamp and file size, and - // may also include the inode number, device number, birth timestamp, and - // other metadata fields that may change when the file is modified or - // replaced. It may also include a secret value chosen by the - // implementation and not otherwise exposed. - // - // Implementations are encourated to provide the following properties: - // - // - If the file is not modified or replaced, the computed hash value should - // usually not change. - // - If the object is modified or replaced, the computed hash value should - // usually change. - // - The inputs to the hash should not be easily computable from the - // computed hash. - // - // However, none of these is required. - extern bool wasi_filesystem_0_2_0_rc_2023_11_10_types_method_descriptor_metadata_hash(wasi_filesystem_0_2_0_rc_2023_11_10_types_borrow_descriptor_t self, wasi_filesystem_0_2_0_rc_2023_11_10_types_metadata_hash_value_t *ret, wasi_filesystem_0_2_0_rc_2023_11_10_types_error_code_t *err); - // Return a hash of the metadata associated with a filesystem object referred - // to by a directory descriptor and a relative path. - // - // This performs the same hash computation as `metadata-hash`. - extern bool wasi_filesystem_0_2_0_rc_2023_11_10_types_method_descriptor_metadata_hash_at(wasi_filesystem_0_2_0_rc_2023_11_10_types_borrow_descriptor_t self, wasi_filesystem_0_2_0_rc_2023_11_10_types_path_flags_t path_flags, bindings_string_t *path, wasi_filesystem_0_2_0_rc_2023_11_10_types_metadata_hash_value_t *ret, wasi_filesystem_0_2_0_rc_2023_11_10_types_error_code_t *err); - // Read a single directory entry from a `directory-entry-stream`. - extern bool wasi_filesystem_0_2_0_rc_2023_11_10_types_method_directory_entry_stream_read_directory_entry(wasi_filesystem_0_2_0_rc_2023_11_10_types_borrow_directory_entry_stream_t self, wasi_filesystem_0_2_0_rc_2023_11_10_types_option_directory_entry_t *ret, wasi_filesystem_0_2_0_rc_2023_11_10_types_error_code_t *err); - // Attempts to extract a filesystem-related `error-code` from the stream - // `error` provided. - // - // Stream operations which return `stream-error::last-operation-failed` - // have a payload with more information about the operation that failed. - // This payload can be passed through to this function to see if there's - // filesystem-related information about the error to return. - // - // Note that this function is fallible because not all stream-related - // errors are filesystem-related errors. - extern bool wasi_filesystem_0_2_0_rc_2023_11_10_types_filesystem_error_code(wasi_filesystem_0_2_0_rc_2023_11_10_types_borrow_error_t err_, wasi_filesystem_0_2_0_rc_2023_11_10_types_error_code_t *ret); - - // Imported Functions from `wasi:filesystem/preopens@0.2.0-rc-2023-11-10` - // Return the set of preopened directories, and their path. - extern void wasi_filesystem_0_2_0_rc_2023_11_10_preopens_get_directories(wasi_filesystem_0_2_0_rc_2023_11_10_preopens_list_tuple2_own_descriptor_string_t *ret); - - // Imported Functions from `wasi:sockets/instance-network@0.2.0-rc-2023-11-10` - // Get a handle to the default network. - extern wasi_sockets_0_2_0_rc_2023_11_10_instance_network_own_network_t wasi_sockets_0_2_0_rc_2023_11_10_instance_network_instance_network(void); - - // Imported Functions from `wasi:sockets/udp@0.2.0-rc-2023-11-10` - // Bind the socket to a specific network on the provided IP address and port. - // - // If the IP address is zero (`0.0.0.0` in IPv4, `::` in IPv6), it is left to the implementation to decide which - // network interface(s) to bind to. - // If the port is zero, the socket will be bound to a random free port. - // - // Unlike in POSIX, this function is async. This enables interactive WASI hosts to inject permission prompts. - // - // # Typical `start` errors - // - `invalid-argument`: The `local-address` has the wrong address family. (EAFNOSUPPORT, EFAULT on Windows) - // - `invalid-state`: The socket is already bound. (EINVAL) - // - // # Typical `finish` errors - // - `address-in-use`: No ephemeral ports available. (EADDRINUSE, ENOBUFS on Windows) - // - `address-in-use`: Address is already in use. (EADDRINUSE) - // - `address-not-bindable`: `local-address` is not an address that the `network` can bind to. (EADDRNOTAVAIL) - // - `not-in-progress`: A `bind` operation is not in progress. - // - `would-block`: Can't finish the operation, it is still in progress. (EWOULDBLOCK, EAGAIN) - // - // # References - // - - // - - // - - // - - extern bool wasi_sockets_0_2_0_rc_2023_11_10_udp_method_udp_socket_start_bind(wasi_sockets_0_2_0_rc_2023_11_10_udp_borrow_udp_socket_t self, wasi_sockets_0_2_0_rc_2023_11_10_udp_borrow_network_t network, wasi_sockets_0_2_0_rc_2023_11_10_udp_ip_socket_address_t *local_address, wasi_sockets_0_2_0_rc_2023_11_10_udp_error_code_t *err); - extern bool wasi_sockets_0_2_0_rc_2023_11_10_udp_method_udp_socket_finish_bind(wasi_sockets_0_2_0_rc_2023_11_10_udp_borrow_udp_socket_t self, wasi_sockets_0_2_0_rc_2023_11_10_udp_error_code_t *err); - // Set up inbound & outbound communication channels, optionally to a specific peer. - // - // This function only changes the local socket configuration and does not generate any network traffic. - // On success, the `remote-address` of the socket is updated. The `local-address` may be updated as well, - // based on the best network path to `remote-address`. - // - // When a `remote-address` is provided, the returned streams are limited to communicating with that specific peer: - // - `send` can only be used to send to this destination. - // - `receive` will only return datagrams sent from the provided `remote-address`. - // - // This method may be called multiple times on the same socket to change its association, but - // only the most recently returned pair of streams will be operational. Implementations may trap if - // the streams returned by a previous invocation haven't been dropped yet before calling `stream` again. - // - // The POSIX equivalent in pseudo-code is: - // ```text - // if (was previously connected) { - // connect(s, AF_UNSPEC) - // } - // if (remote_address is Some) { - // connect(s, remote_address) - // } - // ``` - // - // Unlike in POSIX, the socket must already be explicitly bound. - // - // # Typical errors - // - `invalid-argument`: The `remote-address` has the wrong address family. (EAFNOSUPPORT) - // - `invalid-argument`: `remote-address` is a non-IPv4-mapped IPv6 address, but the socket was bound to a specific IPv4-mapped IPv6 address. (or vice versa) - // - `invalid-argument`: The IP address in `remote-address` is set to INADDR_ANY (`0.0.0.0` / `::`). (EDESTADDRREQ, EADDRNOTAVAIL) - // - `invalid-argument`: The port in `remote-address` is set to 0. (EDESTADDRREQ, EADDRNOTAVAIL) - // - `invalid-state`: The socket is not bound. - // - `address-in-use`: Tried to perform an implicit bind, but there were no ephemeral ports available. (EADDRINUSE, EADDRNOTAVAIL on Linux, EAGAIN on BSD) - // - `remote-unreachable`: The remote address is not reachable. (ECONNRESET, ENETRESET, EHOSTUNREACH, EHOSTDOWN, ENETUNREACH, ENETDOWN, ENONET) - // - `connection-refused`: The connection was refused. (ECONNREFUSED) - // - // # References - // - - // - - // - - // - - extern bool wasi_sockets_0_2_0_rc_2023_11_10_udp_method_udp_socket_stream(wasi_sockets_0_2_0_rc_2023_11_10_udp_borrow_udp_socket_t self, wasi_sockets_0_2_0_rc_2023_11_10_udp_ip_socket_address_t *maybe_remote_address, wasi_sockets_0_2_0_rc_2023_11_10_udp_tuple2_own_incoming_datagram_stream_own_outgoing_datagram_stream_t *ret, wasi_sockets_0_2_0_rc_2023_11_10_udp_error_code_t *err); - // Get the current bound address. - // - // POSIX mentions: - // > If the socket has not been bound to a local name, the value - // > stored in the object pointed to by `address` is unspecified. - // - // WASI is stricter and requires `local-address` to return `invalid-state` when the socket hasn't been bound yet. - // - // # Typical errors - // - `invalid-state`: The socket is not bound to any local address. - // - // # References - // - - // - - // - - // - - extern bool wasi_sockets_0_2_0_rc_2023_11_10_udp_method_udp_socket_local_address(wasi_sockets_0_2_0_rc_2023_11_10_udp_borrow_udp_socket_t self, wasi_sockets_0_2_0_rc_2023_11_10_udp_ip_socket_address_t *ret, wasi_sockets_0_2_0_rc_2023_11_10_udp_error_code_t *err); - // Get the address the socket is currently streaming to. - // - // # Typical errors - // - `invalid-state`: The socket is not streaming to a specific remote address. (ENOTCONN) - // - // # References - // - - // - - // - - // - - extern bool wasi_sockets_0_2_0_rc_2023_11_10_udp_method_udp_socket_remote_address(wasi_sockets_0_2_0_rc_2023_11_10_udp_borrow_udp_socket_t self, wasi_sockets_0_2_0_rc_2023_11_10_udp_ip_socket_address_t *ret, wasi_sockets_0_2_0_rc_2023_11_10_udp_error_code_t *err); - // Whether this is a IPv4 or IPv6 socket. - // - // Equivalent to the SO_DOMAIN socket option. - extern wasi_sockets_0_2_0_rc_2023_11_10_udp_ip_address_family_t wasi_sockets_0_2_0_rc_2023_11_10_udp_method_udp_socket_address_family(wasi_sockets_0_2_0_rc_2023_11_10_udp_borrow_udp_socket_t self); - // Whether IPv4 compatibility (dual-stack) mode is disabled or not. - // - // Equivalent to the IPV6_V6ONLY socket option. - // - // # Typical errors - // - `not-supported`: (get/set) `this` socket is an IPv4 socket. - // - `invalid-state`: (set) The socket is already bound. - // - `not-supported`: (set) Host does not support dual-stack sockets. (Implementations are not required to.) - extern bool wasi_sockets_0_2_0_rc_2023_11_10_udp_method_udp_socket_ipv6_only(wasi_sockets_0_2_0_rc_2023_11_10_udp_borrow_udp_socket_t self, bool *ret, wasi_sockets_0_2_0_rc_2023_11_10_udp_error_code_t *err); - extern bool wasi_sockets_0_2_0_rc_2023_11_10_udp_method_udp_socket_set_ipv6_only(wasi_sockets_0_2_0_rc_2023_11_10_udp_borrow_udp_socket_t self, bool value, wasi_sockets_0_2_0_rc_2023_11_10_udp_error_code_t *err); - // Equivalent to the IP_TTL & IPV6_UNICAST_HOPS socket options. - // - // If the provided value is 0, an `invalid-argument` error is returned. - // - // # Typical errors - // - `invalid-argument`: (set) The TTL value must be 1 or higher. - extern bool wasi_sockets_0_2_0_rc_2023_11_10_udp_method_udp_socket_unicast_hop_limit(wasi_sockets_0_2_0_rc_2023_11_10_udp_borrow_udp_socket_t self, uint8_t *ret, wasi_sockets_0_2_0_rc_2023_11_10_udp_error_code_t *err); - extern bool wasi_sockets_0_2_0_rc_2023_11_10_udp_method_udp_socket_set_unicast_hop_limit(wasi_sockets_0_2_0_rc_2023_11_10_udp_borrow_udp_socket_t self, uint8_t value, wasi_sockets_0_2_0_rc_2023_11_10_udp_error_code_t *err); - // The kernel buffer space reserved for sends/receives on this socket. - // - // If the provided value is 0, an `invalid-argument` error is returned. - // Any other value will never cause an error, but it might be silently clamped and/or rounded. - // I.e. after setting a value, reading the same setting back may return a different value. - // - // Equivalent to the SO_RCVBUF and SO_SNDBUF socket options. - // - // # Typical errors - // - `invalid-argument`: (set) The provided value was 0. - extern bool wasi_sockets_0_2_0_rc_2023_11_10_udp_method_udp_socket_receive_buffer_size(wasi_sockets_0_2_0_rc_2023_11_10_udp_borrow_udp_socket_t self, uint64_t *ret, wasi_sockets_0_2_0_rc_2023_11_10_udp_error_code_t *err); - extern bool wasi_sockets_0_2_0_rc_2023_11_10_udp_method_udp_socket_set_receive_buffer_size(wasi_sockets_0_2_0_rc_2023_11_10_udp_borrow_udp_socket_t self, uint64_t value, wasi_sockets_0_2_0_rc_2023_11_10_udp_error_code_t *err); - extern bool wasi_sockets_0_2_0_rc_2023_11_10_udp_method_udp_socket_send_buffer_size(wasi_sockets_0_2_0_rc_2023_11_10_udp_borrow_udp_socket_t self, uint64_t *ret, wasi_sockets_0_2_0_rc_2023_11_10_udp_error_code_t *err); - extern bool wasi_sockets_0_2_0_rc_2023_11_10_udp_method_udp_socket_set_send_buffer_size(wasi_sockets_0_2_0_rc_2023_11_10_udp_borrow_udp_socket_t self, uint64_t value, wasi_sockets_0_2_0_rc_2023_11_10_udp_error_code_t *err); - // Create a `pollable` which will resolve once the socket is ready for I/O. - // - // Note: this function is here for WASI Preview2 only. - // It's planned to be removed when `future` is natively supported in Preview3. - extern wasi_sockets_0_2_0_rc_2023_11_10_udp_own_pollable_t wasi_sockets_0_2_0_rc_2023_11_10_udp_method_udp_socket_subscribe(wasi_sockets_0_2_0_rc_2023_11_10_udp_borrow_udp_socket_t self); - // Receive messages on the socket. - // - // This function attempts to receive up to `max-results` datagrams on the socket without blocking. - // The returned list may contain fewer elements than requested, but never more. - // - // This function returns successfully with an empty list when either: - // - `max-results` is 0, or: - // - `max-results` is greater than 0, but no results are immediately available. - // This function never returns `error(would-block)`. - // - // # Typical errors - // - `remote-unreachable`: The remote address is not reachable. (ECONNRESET, ENETRESET on Windows, EHOSTUNREACH, EHOSTDOWN, ENETUNREACH, ENETDOWN, ENONET) - // - `connection-refused`: The connection was refused. (ECONNREFUSED) - // - // # References - // - - // - - // - - // - - // - - // - - // - - // - - extern bool wasi_sockets_0_2_0_rc_2023_11_10_udp_method_incoming_datagram_stream_receive(wasi_sockets_0_2_0_rc_2023_11_10_udp_borrow_incoming_datagram_stream_t self, uint64_t max_results, wasi_sockets_0_2_0_rc_2023_11_10_udp_list_incoming_datagram_t *ret, wasi_sockets_0_2_0_rc_2023_11_10_udp_error_code_t *err); - // Create a `pollable` which will resolve once the stream is ready to receive again. - // - // Note: this function is here for WASI Preview2 only. - // It's planned to be removed when `future` is natively supported in Preview3. - extern wasi_sockets_0_2_0_rc_2023_11_10_udp_own_pollable_t wasi_sockets_0_2_0_rc_2023_11_10_udp_method_incoming_datagram_stream_subscribe(wasi_sockets_0_2_0_rc_2023_11_10_udp_borrow_incoming_datagram_stream_t self); - // Check readiness for sending. This function never blocks. - // - // Returns the number of datagrams permitted for the next call to `send`, - // or an error. Calling `send` with more datagrams than this function has - // permitted will trap. - // - // When this function returns ok(0), the `subscribe` pollable will - // become ready when this function will report at least ok(1), or an - // error. - // - // Never returns `would-block`. - extern bool wasi_sockets_0_2_0_rc_2023_11_10_udp_method_outgoing_datagram_stream_check_send(wasi_sockets_0_2_0_rc_2023_11_10_udp_borrow_outgoing_datagram_stream_t self, uint64_t *ret, wasi_sockets_0_2_0_rc_2023_11_10_udp_error_code_t *err); - // Send messages on the socket. - // - // This function attempts to send all provided `datagrams` on the socket without blocking and - // returns how many messages were actually sent (or queued for sending). This function never - // returns `error(would-block)`. If none of the datagrams were able to be sent, `ok(0)` is returned. - // - // This function semantically behaves the same as iterating the `datagrams` list and sequentially - // sending each individual datagram until either the end of the list has been reached or the first error occurred. - // If at least one datagram has been sent successfully, this function never returns an error. - // - // If the input list is empty, the function returns `ok(0)`. - // - // Each call to `send` must be permitted by a preceding `check-send`. Implementations must trap if - // either `check-send` was not called or `datagrams` contains more items than `check-send` permitted. - // - // # Typical errors - // - `invalid-argument`: The `remote-address` has the wrong address family. (EAFNOSUPPORT) - // - `invalid-argument`: `remote-address` is a non-IPv4-mapped IPv6 address, but the socket was bound to a specific IPv4-mapped IPv6 address. (or vice versa) - // - `invalid-argument`: The IP address in `remote-address` is set to INADDR_ANY (`0.0.0.0` / `::`). (EDESTADDRREQ, EADDRNOTAVAIL) - // - `invalid-argument`: The port in `remote-address` is set to 0. (EDESTADDRREQ, EADDRNOTAVAIL) - // - `invalid-argument`: The socket is in "connected" mode and `remote-address` is `some` value that does not match the address passed to `stream`. (EISCONN) - // - `invalid-argument`: The socket is not "connected" and no value for `remote-address` was provided. (EDESTADDRREQ) - // - `remote-unreachable`: The remote address is not reachable. (ECONNRESET, ENETRESET on Windows, EHOSTUNREACH, EHOSTDOWN, ENETUNREACH, ENETDOWN, ENONET) - // - `connection-refused`: The connection was refused. (ECONNREFUSED) - // - `datagram-too-large`: The datagram is too large. (EMSGSIZE) - // - // # References - // - - // - - // - - // - - // - - // - - // - - // - - extern bool wasi_sockets_0_2_0_rc_2023_11_10_udp_method_outgoing_datagram_stream_send(wasi_sockets_0_2_0_rc_2023_11_10_udp_borrow_outgoing_datagram_stream_t self, wasi_sockets_0_2_0_rc_2023_11_10_udp_list_outgoing_datagram_t *datagrams, uint64_t *ret, wasi_sockets_0_2_0_rc_2023_11_10_udp_error_code_t *err); - // Create a `pollable` which will resolve once the stream is ready to send again. - // - // Note: this function is here for WASI Preview2 only. - // It's planned to be removed when `future` is natively supported in Preview3. - extern wasi_sockets_0_2_0_rc_2023_11_10_udp_own_pollable_t wasi_sockets_0_2_0_rc_2023_11_10_udp_method_outgoing_datagram_stream_subscribe(wasi_sockets_0_2_0_rc_2023_11_10_udp_borrow_outgoing_datagram_stream_t self); - - // Imported Functions from `wasi:sockets/udp-create-socket@0.2.0-rc-2023-11-10` - // Create a new UDP socket. - // - // Similar to `socket(AF_INET or AF_INET6, SOCK_DGRAM, IPPROTO_UDP)` in POSIX. - // - // This function does not require a network capability handle. This is considered to be safe because - // at time of creation, the socket is not bound to any `network` yet. Up to the moment `bind` is called, - // the socket is effectively an in-memory configuration object, unable to communicate with the outside world. - // - // All sockets are non-blocking. Use the wasi-poll interface to block on asynchronous operations. - // - // # Typical errors - // - `not-supported`: The specified `address-family` is not supported. (EAFNOSUPPORT) - // - `new-socket-limit`: The new socket resource could not be created because of a system limit. (EMFILE, ENFILE) - // - // # References: - // - - // - - // - - // - - extern bool wasi_sockets_0_2_0_rc_2023_11_10_udp_create_socket_create_udp_socket(wasi_sockets_0_2_0_rc_2023_11_10_udp_create_socket_ip_address_family_t address_family, wasi_sockets_0_2_0_rc_2023_11_10_udp_create_socket_own_udp_socket_t *ret, wasi_sockets_0_2_0_rc_2023_11_10_udp_create_socket_error_code_t *err); - - // Imported Functions from `wasi:sockets/tcp@0.2.0-rc-2023-11-10` - // Bind the socket to a specific network on the provided IP address and port. - // - // If the IP address is zero (`0.0.0.0` in IPv4, `::` in IPv6), it is left to the implementation to decide which - // network interface(s) to bind to. - // If the TCP/UDP port is zero, the socket will be bound to a random free port. - // - // When a socket is not explicitly bound, the first invocation to a listen or connect operation will - // implicitly bind the socket. - // - // Unlike in POSIX, this function is async. This enables interactive WASI hosts to inject permission prompts. - // - // # Typical `start` errors - // - `invalid-argument`: The `local-address` has the wrong address family. (EAFNOSUPPORT, EFAULT on Windows) - // - `invalid-argument`: `local-address` is not a unicast address. (EINVAL) - // - `invalid-argument`: `local-address` is an IPv4-mapped IPv6 address, but the socket has `ipv6-only` enabled. (EINVAL) - // - `invalid-state`: The socket is already bound. (EINVAL) - // - // # Typical `finish` errors - // - `address-in-use`: No ephemeral ports available. (EADDRINUSE, ENOBUFS on Windows) - // - `address-in-use`: Address is already in use. (EADDRINUSE) - // - `address-not-bindable`: `local-address` is not an address that the `network` can bind to. (EADDRNOTAVAIL) - // - `not-in-progress`: A `bind` operation is not in progress. - // - `would-block`: Can't finish the operation, it is still in progress. (EWOULDBLOCK, EAGAIN) - // - // # Implementors note - // When binding to a non-zero port, this bind operation shouldn't be affected by the TIME_WAIT - // state of a recently closed socket on the same local address (i.e. the SO_REUSEADDR socket - // option should be set implicitly on platforms that require it). - // - // # References - // - - // - - // - - // - - extern bool wasi_sockets_0_2_0_rc_2023_11_10_tcp_method_tcp_socket_start_bind(wasi_sockets_0_2_0_rc_2023_11_10_tcp_borrow_tcp_socket_t self, wasi_sockets_0_2_0_rc_2023_11_10_tcp_borrow_network_t network, wasi_sockets_0_2_0_rc_2023_11_10_tcp_ip_socket_address_t *local_address, wasi_sockets_0_2_0_rc_2023_11_10_tcp_error_code_t *err); - extern bool wasi_sockets_0_2_0_rc_2023_11_10_tcp_method_tcp_socket_finish_bind(wasi_sockets_0_2_0_rc_2023_11_10_tcp_borrow_tcp_socket_t self, wasi_sockets_0_2_0_rc_2023_11_10_tcp_error_code_t *err); - // Connect to a remote endpoint. - // - // On success: - // - the socket is transitioned into the Connection state - // - a pair of streams is returned that can be used to read & write to the connection - // - // POSIX mentions: - // > If connect() fails, the state of the socket is unspecified. Conforming applications should - // > close the file descriptor and create a new socket before attempting to reconnect. - // - // WASI prescribes the following behavior: - // - If `connect` fails because an input/state validation error, the socket should remain usable. - // - If a connection was actually attempted but failed, the socket should become unusable for further network communication. - // Besides `drop`, any method after such a failure may return an error. - // - // # Typical `start` errors - // - `invalid-argument`: The `remote-address` has the wrong address family. (EAFNOSUPPORT) - // - `invalid-argument`: `remote-address` is not a unicast address. (EINVAL, ENETUNREACH on Linux, EAFNOSUPPORT on MacOS) - // - `invalid-argument`: `remote-address` is an IPv4-mapped IPv6 address, but the socket has `ipv6-only` enabled. (EINVAL, EADDRNOTAVAIL on Illumos) - // - `invalid-argument`: `remote-address` is a non-IPv4-mapped IPv6 address, but the socket was bound to a specific IPv4-mapped IPv6 address. (or vice versa) - // - `invalid-argument`: The IP address in `remote-address` is set to INADDR_ANY (`0.0.0.0` / `::`). (EADDRNOTAVAIL on Windows) - // - `invalid-argument`: The port in `remote-address` is set to 0. (EADDRNOTAVAIL on Windows) - // - `invalid-argument`: The socket is already attached to a different network. The `network` passed to `connect` must be identical to the one passed to `bind`. - // - `invalid-state`: The socket is already in the Connection state. (EISCONN) - // - `invalid-state`: The socket is already in the Listener state. (EOPNOTSUPP, EINVAL on Windows) - // - // # Typical `finish` errors - // - `timeout`: Connection timed out. (ETIMEDOUT) - // - `connection-refused`: The connection was forcefully rejected. (ECONNREFUSED) - // - `connection-reset`: The connection was reset. (ECONNRESET) - // - `connection-aborted`: The connection was aborted. (ECONNABORTED) - // - `remote-unreachable`: The remote address is not reachable. (EHOSTUNREACH, EHOSTDOWN, ENETUNREACH, ENETDOWN, ENONET) - // - `address-in-use`: Tried to perform an implicit bind, but there were no ephemeral ports available. (EADDRINUSE, EADDRNOTAVAIL on Linux, EAGAIN on BSD) - // - `not-in-progress`: A `connect` operation is not in progress. - // - `would-block`: Can't finish the operation, it is still in progress. (EWOULDBLOCK, EAGAIN) - // - // # References - // - - // - - // - - // - - extern bool wasi_sockets_0_2_0_rc_2023_11_10_tcp_method_tcp_socket_start_connect(wasi_sockets_0_2_0_rc_2023_11_10_tcp_borrow_tcp_socket_t self, wasi_sockets_0_2_0_rc_2023_11_10_tcp_borrow_network_t network, wasi_sockets_0_2_0_rc_2023_11_10_tcp_ip_socket_address_t *remote_address, wasi_sockets_0_2_0_rc_2023_11_10_tcp_error_code_t *err); - extern bool wasi_sockets_0_2_0_rc_2023_11_10_tcp_method_tcp_socket_finish_connect(wasi_sockets_0_2_0_rc_2023_11_10_tcp_borrow_tcp_socket_t self, wasi_sockets_0_2_0_rc_2023_11_10_tcp_tuple2_own_input_stream_own_output_stream_t *ret, wasi_sockets_0_2_0_rc_2023_11_10_tcp_error_code_t *err); - // Start listening for new connections. - // - // Transitions the socket into the Listener state. - // - // Unlike POSIX: - // - this function is async. This enables interactive WASI hosts to inject permission prompts. - // - the socket must already be explicitly bound. - // - // # Typical `start` errors - // - `invalid-state`: The socket is not bound to any local address. (EDESTADDRREQ) - // - `invalid-state`: The socket is already in the Connection state. (EISCONN, EINVAL on BSD) - // - `invalid-state`: The socket is already in the Listener state. - // - // # Typical `finish` errors - // - `address-in-use`: Tried to perform an implicit bind, but there were no ephemeral ports available. (EADDRINUSE) - // - `not-in-progress`: A `listen` operation is not in progress. - // - `would-block`: Can't finish the operation, it is still in progress. (EWOULDBLOCK, EAGAIN) - // - // # References - // - - // - - // - - // - - extern bool wasi_sockets_0_2_0_rc_2023_11_10_tcp_method_tcp_socket_start_listen(wasi_sockets_0_2_0_rc_2023_11_10_tcp_borrow_tcp_socket_t self, wasi_sockets_0_2_0_rc_2023_11_10_tcp_error_code_t *err); - extern bool wasi_sockets_0_2_0_rc_2023_11_10_tcp_method_tcp_socket_finish_listen(wasi_sockets_0_2_0_rc_2023_11_10_tcp_borrow_tcp_socket_t self, wasi_sockets_0_2_0_rc_2023_11_10_tcp_error_code_t *err); - // Accept a new client socket. - // - // The returned socket is bound and in the Connection state. The following properties are inherited from the listener socket: - // - `address-family` - // - `ipv6-only` - // - `keep-alive-enabled` - // - `keep-alive-idle-time` - // - `keep-alive-interval` - // - `keep-alive-count` - // - `hop-limit` - // - `receive-buffer-size` - // - `send-buffer-size` - // - // On success, this function returns the newly accepted client socket along with - // a pair of streams that can be used to read & write to the connection. - // - // # Typical errors - // - `invalid-state`: Socket is not in the Listener state. (EINVAL) - // - `would-block`: No pending connections at the moment. (EWOULDBLOCK, EAGAIN) - // - `connection-aborted`: An incoming connection was pending, but was terminated by the client before this listener could accept it. (ECONNABORTED) - // - `new-socket-limit`: The new socket resource could not be created because of a system limit. (EMFILE, ENFILE) - // - // # References - // - - // - - // - - // - - extern bool wasi_sockets_0_2_0_rc_2023_11_10_tcp_method_tcp_socket_accept(wasi_sockets_0_2_0_rc_2023_11_10_tcp_borrow_tcp_socket_t self, wasi_sockets_0_2_0_rc_2023_11_10_tcp_tuple3_own_tcp_socket_own_input_stream_own_output_stream_t *ret, wasi_sockets_0_2_0_rc_2023_11_10_tcp_error_code_t *err); - // Get the bound local address. - // - // POSIX mentions: - // > If the socket has not been bound to a local name, the value - // > stored in the object pointed to by `address` is unspecified. - // - // WASI is stricter and requires `local-address` to return `invalid-state` when the socket hasn't been bound yet. - // - // # Typical errors - // - `invalid-state`: The socket is not bound to any local address. - // - // # References - // - - // - - // - - // - - extern bool wasi_sockets_0_2_0_rc_2023_11_10_tcp_method_tcp_socket_local_address(wasi_sockets_0_2_0_rc_2023_11_10_tcp_borrow_tcp_socket_t self, wasi_sockets_0_2_0_rc_2023_11_10_tcp_ip_socket_address_t *ret, wasi_sockets_0_2_0_rc_2023_11_10_tcp_error_code_t *err); - // Get the remote address. - // - // # Typical errors - // - `invalid-state`: The socket is not connected to a remote address. (ENOTCONN) - // - // # References - // - - // - - // - - // - - extern bool wasi_sockets_0_2_0_rc_2023_11_10_tcp_method_tcp_socket_remote_address(wasi_sockets_0_2_0_rc_2023_11_10_tcp_borrow_tcp_socket_t self, wasi_sockets_0_2_0_rc_2023_11_10_tcp_ip_socket_address_t *ret, wasi_sockets_0_2_0_rc_2023_11_10_tcp_error_code_t *err); - // Whether the socket is listening for new connections. - // - // Equivalent to the SO_ACCEPTCONN socket option. - extern bool wasi_sockets_0_2_0_rc_2023_11_10_tcp_method_tcp_socket_is_listening(wasi_sockets_0_2_0_rc_2023_11_10_tcp_borrow_tcp_socket_t self); - // Whether this is a IPv4 or IPv6 socket. - // - // Equivalent to the SO_DOMAIN socket option. - extern wasi_sockets_0_2_0_rc_2023_11_10_tcp_ip_address_family_t wasi_sockets_0_2_0_rc_2023_11_10_tcp_method_tcp_socket_address_family(wasi_sockets_0_2_0_rc_2023_11_10_tcp_borrow_tcp_socket_t self); - // Whether IPv4 compatibility (dual-stack) mode is disabled or not. - // - // Equivalent to the IPV6_V6ONLY socket option. - // - // # Typical errors - // - `invalid-state`: (set) The socket is already bound. - // - `not-supported`: (get/set) `this` socket is an IPv4 socket. - // - `not-supported`: (set) Host does not support dual-stack sockets. (Implementations are not required to.) - extern bool wasi_sockets_0_2_0_rc_2023_11_10_tcp_method_tcp_socket_ipv6_only(wasi_sockets_0_2_0_rc_2023_11_10_tcp_borrow_tcp_socket_t self, bool *ret, wasi_sockets_0_2_0_rc_2023_11_10_tcp_error_code_t *err); - extern bool wasi_sockets_0_2_0_rc_2023_11_10_tcp_method_tcp_socket_set_ipv6_only(wasi_sockets_0_2_0_rc_2023_11_10_tcp_borrow_tcp_socket_t self, bool value, wasi_sockets_0_2_0_rc_2023_11_10_tcp_error_code_t *err); - // Hints the desired listen queue size. Implementations are free to ignore this. - // - // If the provided value is 0, an `invalid-argument` error is returned. - // Any other value will never cause an error, but it might be silently clamped and/or rounded. - // - // # Typical errors - // - `not-supported`: (set) The platform does not support changing the backlog size after the initial listen. - // - `invalid-argument`: (set) The provided value was 0. - // - `invalid-state`: (set) The socket is already in the Connection state. - extern bool wasi_sockets_0_2_0_rc_2023_11_10_tcp_method_tcp_socket_set_listen_backlog_size(wasi_sockets_0_2_0_rc_2023_11_10_tcp_borrow_tcp_socket_t self, uint64_t value, wasi_sockets_0_2_0_rc_2023_11_10_tcp_error_code_t *err); - // Enables or disables keepalive. - // - // The keepalive behavior can be adjusted using: - // - `keep-alive-idle-time` - // - `keep-alive-interval` - // - `keep-alive-count` - // These properties can be configured while `keep-alive-enabled` is false, but only come into effect when `keep-alive-enabled` is true. - // - // Equivalent to the SO_KEEPALIVE socket option. - extern bool wasi_sockets_0_2_0_rc_2023_11_10_tcp_method_tcp_socket_keep_alive_enabled(wasi_sockets_0_2_0_rc_2023_11_10_tcp_borrow_tcp_socket_t self, bool *ret, wasi_sockets_0_2_0_rc_2023_11_10_tcp_error_code_t *err); - extern bool wasi_sockets_0_2_0_rc_2023_11_10_tcp_method_tcp_socket_set_keep_alive_enabled(wasi_sockets_0_2_0_rc_2023_11_10_tcp_borrow_tcp_socket_t self, bool value, wasi_sockets_0_2_0_rc_2023_11_10_tcp_error_code_t *err); - // Amount of time the connection has to be idle before TCP starts sending keepalive packets. - // - // If the provided value is 0, an `invalid-argument` error is returned. - // Any other value will never cause an error, but it might be silently clamped and/or rounded. - // I.e. after setting a value, reading the same setting back may return a different value. - // - // Equivalent to the TCP_KEEPIDLE socket option. (TCP_KEEPALIVE on MacOS) - // - // # Typical errors - // - `invalid-argument`: (set) The provided value was 0. - extern bool wasi_sockets_0_2_0_rc_2023_11_10_tcp_method_tcp_socket_keep_alive_idle_time(wasi_sockets_0_2_0_rc_2023_11_10_tcp_borrow_tcp_socket_t self, wasi_sockets_0_2_0_rc_2023_11_10_tcp_duration_t *ret, wasi_sockets_0_2_0_rc_2023_11_10_tcp_error_code_t *err); - extern bool wasi_sockets_0_2_0_rc_2023_11_10_tcp_method_tcp_socket_set_keep_alive_idle_time(wasi_sockets_0_2_0_rc_2023_11_10_tcp_borrow_tcp_socket_t self, wasi_sockets_0_2_0_rc_2023_11_10_tcp_duration_t value, wasi_sockets_0_2_0_rc_2023_11_10_tcp_error_code_t *err); - // The time between keepalive packets. - // - // If the provided value is 0, an `invalid-argument` error is returned. - // Any other value will never cause an error, but it might be silently clamped and/or rounded. - // I.e. after setting a value, reading the same setting back may return a different value. - // - // Equivalent to the TCP_KEEPINTVL socket option. - // - // # Typical errors - // - `invalid-argument`: (set) The provided value was 0. - extern bool wasi_sockets_0_2_0_rc_2023_11_10_tcp_method_tcp_socket_keep_alive_interval(wasi_sockets_0_2_0_rc_2023_11_10_tcp_borrow_tcp_socket_t self, wasi_sockets_0_2_0_rc_2023_11_10_tcp_duration_t *ret, wasi_sockets_0_2_0_rc_2023_11_10_tcp_error_code_t *err); - extern bool wasi_sockets_0_2_0_rc_2023_11_10_tcp_method_tcp_socket_set_keep_alive_interval(wasi_sockets_0_2_0_rc_2023_11_10_tcp_borrow_tcp_socket_t self, wasi_sockets_0_2_0_rc_2023_11_10_tcp_duration_t value, wasi_sockets_0_2_0_rc_2023_11_10_tcp_error_code_t *err); - // The maximum amount of keepalive packets TCP should send before aborting the connection. - // - // If the provided value is 0, an `invalid-argument` error is returned. - // Any other value will never cause an error, but it might be silently clamped and/or rounded. - // I.e. after setting a value, reading the same setting back may return a different value. - // - // Equivalent to the TCP_KEEPCNT socket option. - // - // # Typical errors - // - `invalid-argument`: (set) The provided value was 0. - extern bool wasi_sockets_0_2_0_rc_2023_11_10_tcp_method_tcp_socket_keep_alive_count(wasi_sockets_0_2_0_rc_2023_11_10_tcp_borrow_tcp_socket_t self, uint32_t *ret, wasi_sockets_0_2_0_rc_2023_11_10_tcp_error_code_t *err); - extern bool wasi_sockets_0_2_0_rc_2023_11_10_tcp_method_tcp_socket_set_keep_alive_count(wasi_sockets_0_2_0_rc_2023_11_10_tcp_borrow_tcp_socket_t self, uint32_t value, wasi_sockets_0_2_0_rc_2023_11_10_tcp_error_code_t *err); - // Equivalent to the IP_TTL & IPV6_UNICAST_HOPS socket options. - // - // If the provided value is 0, an `invalid-argument` error is returned. - // - // # Typical errors - // - `invalid-argument`: (set) The TTL value must be 1 or higher. - // - `invalid-state`: (set) The socket is already in the Connection state. - // - `invalid-state`: (set) The socket is already in the Listener state. - extern bool wasi_sockets_0_2_0_rc_2023_11_10_tcp_method_tcp_socket_hop_limit(wasi_sockets_0_2_0_rc_2023_11_10_tcp_borrow_tcp_socket_t self, uint8_t *ret, wasi_sockets_0_2_0_rc_2023_11_10_tcp_error_code_t *err); - extern bool wasi_sockets_0_2_0_rc_2023_11_10_tcp_method_tcp_socket_set_hop_limit(wasi_sockets_0_2_0_rc_2023_11_10_tcp_borrow_tcp_socket_t self, uint8_t value, wasi_sockets_0_2_0_rc_2023_11_10_tcp_error_code_t *err); - // The kernel buffer space reserved for sends/receives on this socket. - // - // If the provided value is 0, an `invalid-argument` error is returned. - // Any other value will never cause an error, but it might be silently clamped and/or rounded. - // I.e. after setting a value, reading the same setting back may return a different value. - // - // Equivalent to the SO_RCVBUF and SO_SNDBUF socket options. - // - // # Typical errors - // - `invalid-argument`: (set) The provided value was 0. - // - `invalid-state`: (set) The socket is already in the Connection state. - // - `invalid-state`: (set) The socket is already in the Listener state. - extern bool wasi_sockets_0_2_0_rc_2023_11_10_tcp_method_tcp_socket_receive_buffer_size(wasi_sockets_0_2_0_rc_2023_11_10_tcp_borrow_tcp_socket_t self, uint64_t *ret, wasi_sockets_0_2_0_rc_2023_11_10_tcp_error_code_t *err); - extern bool wasi_sockets_0_2_0_rc_2023_11_10_tcp_method_tcp_socket_set_receive_buffer_size(wasi_sockets_0_2_0_rc_2023_11_10_tcp_borrow_tcp_socket_t self, uint64_t value, wasi_sockets_0_2_0_rc_2023_11_10_tcp_error_code_t *err); - extern bool wasi_sockets_0_2_0_rc_2023_11_10_tcp_method_tcp_socket_send_buffer_size(wasi_sockets_0_2_0_rc_2023_11_10_tcp_borrow_tcp_socket_t self, uint64_t *ret, wasi_sockets_0_2_0_rc_2023_11_10_tcp_error_code_t *err); - extern bool wasi_sockets_0_2_0_rc_2023_11_10_tcp_method_tcp_socket_set_send_buffer_size(wasi_sockets_0_2_0_rc_2023_11_10_tcp_borrow_tcp_socket_t self, uint64_t value, wasi_sockets_0_2_0_rc_2023_11_10_tcp_error_code_t *err); - // Create a `pollable` which will resolve once the socket is ready for I/O. - // - // Note: this function is here for WASI Preview2 only. - // It's planned to be removed when `future` is natively supported in Preview3. - extern wasi_sockets_0_2_0_rc_2023_11_10_tcp_own_pollable_t wasi_sockets_0_2_0_rc_2023_11_10_tcp_method_tcp_socket_subscribe(wasi_sockets_0_2_0_rc_2023_11_10_tcp_borrow_tcp_socket_t self); - // Initiate a graceful shutdown. - // - // - receive: the socket is not expecting to receive any more data from the peer. All subsequent read - // operations on the `input-stream` associated with this socket will return an End Of Stream indication. - // Any data still in the receive queue at time of calling `shutdown` will be discarded. - // - send: the socket is not expecting to send any more data to the peer. All subsequent write - // operations on the `output-stream` associated with this socket will return an error. - // - both: same effect as receive & send combined. - // - // The shutdown function does not close (drop) the socket. - // - // # Typical errors - // - `invalid-state`: The socket is not in the Connection state. (ENOTCONN) - // - // # References - // - - // - - // - - // - - extern bool wasi_sockets_0_2_0_rc_2023_11_10_tcp_method_tcp_socket_shutdown(wasi_sockets_0_2_0_rc_2023_11_10_tcp_borrow_tcp_socket_t self, wasi_sockets_0_2_0_rc_2023_11_10_tcp_shutdown_type_t shutdown_type, wasi_sockets_0_2_0_rc_2023_11_10_tcp_error_code_t *err); - - // Imported Functions from `wasi:sockets/tcp-create-socket@0.2.0-rc-2023-11-10` - // Create a new TCP socket. - // - // Similar to `socket(AF_INET or AF_INET6, SOCK_STREAM, IPPROTO_TCP)` in POSIX. - // - // This function does not require a network capability handle. This is considered to be safe because - // at time of creation, the socket is not bound to any `network` yet. Up to the moment `bind`/`listen`/`connect` - // is called, the socket is effectively an in-memory configuration object, unable to communicate with the outside world. - // - // All sockets are non-blocking. Use the wasi-poll interface to block on asynchronous operations. - // - // # Typical errors - // - `not-supported`: The specified `address-family` is not supported. (EAFNOSUPPORT) - // - `new-socket-limit`: The new socket resource could not be created because of a system limit. (EMFILE, ENFILE) - // - // # References - // - - // - - // - - // - - extern bool wasi_sockets_0_2_0_rc_2023_11_10_tcp_create_socket_create_tcp_socket(wasi_sockets_0_2_0_rc_2023_11_10_tcp_create_socket_ip_address_family_t address_family, wasi_sockets_0_2_0_rc_2023_11_10_tcp_create_socket_own_tcp_socket_t *ret, wasi_sockets_0_2_0_rc_2023_11_10_tcp_create_socket_error_code_t *err); - - // Imported Functions from `wasi:sockets/ip-name-lookup@0.2.0-rc-2023-11-10` - // Resolve an internet host name to a list of IP addresses. - // - // Unicode domain names are automatically converted to ASCII using IDNA encoding. - // If the input is an IP address string, the address is parsed and returned - // as-is without making any external requests. - // - // See the wasi-socket proposal README.md for a comparison with getaddrinfo. - // - // This function never blocks. It either immediately fails or immediately - // returns successfully with a `resolve-address-stream` that can be used - // to (asynchronously) fetch the results. - // - // # Typical errors - // - `invalid-argument`: `name` is a syntactically invalid domain name or IP address. - // - // # References: - // - - // - - // - - // - - extern bool wasi_sockets_0_2_0_rc_2023_11_10_ip_name_lookup_resolve_addresses(wasi_sockets_0_2_0_rc_2023_11_10_ip_name_lookup_borrow_network_t network, bindings_string_t *name, wasi_sockets_0_2_0_rc_2023_11_10_ip_name_lookup_own_resolve_address_stream_t *ret, wasi_sockets_0_2_0_rc_2023_11_10_ip_name_lookup_error_code_t *err); - // Returns the next address from the resolver. - // - // This function should be called multiple times. On each call, it will - // return the next address in connection order preference. If all - // addresses have been exhausted, this function returns `none`. - // - // This function never returns IPv4-mapped IPv6 addresses. - // - // # Typical errors - // - `name-unresolvable`: Name does not exist or has no suitable associated IP addresses. (EAI_NONAME, EAI_NODATA, EAI_ADDRFAMILY) - // - `temporary-resolver-failure`: A temporary failure in name resolution occurred. (EAI_AGAIN) - // - `permanent-resolver-failure`: A permanent failure in name resolution occurred. (EAI_FAIL) - // - `would-block`: A result is not available yet. (EWOULDBLOCK, EAGAIN) - extern bool wasi_sockets_0_2_0_rc_2023_11_10_ip_name_lookup_method_resolve_address_stream_resolve_next_address(wasi_sockets_0_2_0_rc_2023_11_10_ip_name_lookup_borrow_resolve_address_stream_t self, wasi_sockets_0_2_0_rc_2023_11_10_ip_name_lookup_option_ip_address_t *ret, wasi_sockets_0_2_0_rc_2023_11_10_ip_name_lookup_error_code_t *err); - // Create a `pollable` which will resolve once the stream is ready for I/O. - // - // Note: this function is here for WASI Preview2 only. - // It's planned to be removed when `future` is natively supported in Preview3. - extern wasi_sockets_0_2_0_rc_2023_11_10_ip_name_lookup_own_pollable_t wasi_sockets_0_2_0_rc_2023_11_10_ip_name_lookup_method_resolve_address_stream_subscribe(wasi_sockets_0_2_0_rc_2023_11_10_ip_name_lookup_borrow_resolve_address_stream_t self); - - // Imported Functions from `wasi:random/random@0.2.0-rc-2023-11-10` - // Return `len` cryptographically-secure random or pseudo-random bytes. - // - // This function must produce data at least as cryptographically secure and - // fast as an adequately seeded cryptographically-secure pseudo-random - // number generator (CSPRNG). It must not block, from the perspective of - // the calling program, under any circumstances, including on the first - // request and on requests for numbers of bytes. The returned data must - // always be unpredictable. - // - // This function must always return fresh data. Deterministic environments - // must omit this function, rather than implementing it with deterministic - // data. - extern void wasi_random_0_2_0_rc_2023_11_10_random_get_random_bytes(uint64_t len, bindings_list_u8_t *ret); - // Return a cryptographically-secure random or pseudo-random `u64` value. - // - // This function returns the same type of data as `get-random-bytes`, - // represented as a `u64`. - extern uint64_t wasi_random_0_2_0_rc_2023_11_10_random_get_random_u64(void); - - // Imported Functions from `wasi:random/insecure@0.2.0-rc-2023-11-10` - // Return `len` insecure pseudo-random bytes. - // - // This function is not cryptographically secure. Do not use it for - // anything related to security. - // - // There are no requirements on the values of the returned bytes, however - // implementations are encouraged to return evenly distributed values with - // a long period. - extern void wasi_random_0_2_0_rc_2023_11_10_insecure_get_insecure_random_bytes(uint64_t len, bindings_list_u8_t *ret); - // Return an insecure pseudo-random `u64` value. - // - // This function returns the same type of pseudo-random data as - // `get-insecure-random-bytes`, represented as a `u64`. - extern uint64_t wasi_random_0_2_0_rc_2023_11_10_insecure_get_insecure_random_u64(void); - - // Imported Functions from `wasi:random/insecure-seed@0.2.0-rc-2023-11-10` - // Return a 128-bit value that may contain a pseudo-random value. - // - // The returned value is not required to be computed from a CSPRNG, and may - // even be entirely deterministic. Host implementations are encouraged to - // provide pseudo-random values to any program exposed to - // attacker-controlled content, to enable DoS protection built into many - // languages' hash-map implementations. - // - // This function is intended to only be called once, by a source language - // to initialize Denial Of Service (DoS) protection in its hash-map - // implementation. - // - // # Expected future evolution - // - // This will likely be changed to a value import, to prevent it from being - // called multiple times and potentially used for purposes other than DoS - // protection. - extern void wasi_random_0_2_0_rc_2023_11_10_insecure_seed_insecure_seed(bindings_tuple2_u64_u64_t *ret); - - // Imported Functions from `wasi:http/types@0.2.0-rc-2023-12-05` - // Attempts to extract a http-related `error` from the wasi:io `error` - // provided. - // - // Stream operations which return - // `wasi:io/stream/stream-error::last-operation-failed` have a payload of - // type `wasi:io/error/error` with more information about the operation - // that failed. This payload can be passed through to this function to see - // if there's http-related information about the error to return. - // - // Note that this function is fallible because not all io-errors are - // http-related errors. - extern bool wasi_http_0_2_0_rc_2023_12_05_types_http_error_code(wasi_http_0_2_0_rc_2023_12_05_types_borrow_io_error_t err_, wasi_http_0_2_0_rc_2023_12_05_types_error_code_t *ret); - // Construct an empty HTTP Fields. - // - // The resulting `fields` is mutable. - extern wasi_http_0_2_0_rc_2023_12_05_types_own_fields_t wasi_http_0_2_0_rc_2023_12_05_types_constructor_fields(void); - // Construct an HTTP Fields. - // - // The resulting `fields` is mutable. - // - // The list represents each key-value pair in the Fields. Keys - // which have multiple values are represented by multiple entries in this - // list with the same key. - // - // The tuple is a pair of the field key, represented as a string, and - // Value, represented as a list of bytes. In a valid Fields, all keys - // and values are valid UTF-8 strings. However, values are not always - // well-formed, so they are represented as a raw list of bytes. - // - // An error result will be returned if any header or value was - // syntactically invalid, or if a header was forbidden. - extern bool wasi_http_0_2_0_rc_2023_12_05_types_static_fields_from_list(bindings_list_tuple2_field_key_field_value_t *entries, wasi_http_0_2_0_rc_2023_12_05_types_own_fields_t *ret, wasi_http_0_2_0_rc_2023_12_05_types_header_error_t *err); - // Get all of the values corresponding to a key. If the key is not present - // in this `fields`, an empty list is returned. However, if the key is - // present but empty, this is represented by a list with one or more - // empty field-values present. - extern void wasi_http_0_2_0_rc_2023_12_05_types_method_fields_get(wasi_http_0_2_0_rc_2023_12_05_types_borrow_fields_t self, wasi_http_0_2_0_rc_2023_12_05_types_field_key_t *name, bindings_list_field_value_t *ret); - // Returns `true` when the key is present in this `fields`. If the key is - // syntactically invalid, `false` is returned. - extern bool wasi_http_0_2_0_rc_2023_12_05_types_method_fields_has(wasi_http_0_2_0_rc_2023_12_05_types_borrow_fields_t self, wasi_http_0_2_0_rc_2023_12_05_types_field_key_t *name); - // Set all of the values for a key. Clears any existing values for that - // key, if they have been set. - // - // Fails with `header-error.immutable` if the `fields` are immutable. - extern bool wasi_http_0_2_0_rc_2023_12_05_types_method_fields_set(wasi_http_0_2_0_rc_2023_12_05_types_borrow_fields_t self, wasi_http_0_2_0_rc_2023_12_05_types_field_key_t *name, bindings_list_field_value_t *value, wasi_http_0_2_0_rc_2023_12_05_types_header_error_t *err); - // Delete all values for a key. Does nothing if no values for the key - // exist. - // - // Fails with `header-error.immutable` if the `fields` are immutable. - extern bool wasi_http_0_2_0_rc_2023_12_05_types_method_fields_delete(wasi_http_0_2_0_rc_2023_12_05_types_borrow_fields_t self, wasi_http_0_2_0_rc_2023_12_05_types_field_key_t *name, wasi_http_0_2_0_rc_2023_12_05_types_header_error_t *err); - // Append a value for a key. Does not change or delete any existing - // values for that key. - // - // Fails with `header-error.immutable` if the `fields` are immutable. - extern bool wasi_http_0_2_0_rc_2023_12_05_types_method_fields_append(wasi_http_0_2_0_rc_2023_12_05_types_borrow_fields_t self, wasi_http_0_2_0_rc_2023_12_05_types_field_key_t *name, wasi_http_0_2_0_rc_2023_12_05_types_field_value_t *value, wasi_http_0_2_0_rc_2023_12_05_types_header_error_t *err); - // Retrieve the full set of keys and values in the Fields. Like the - // constructor, the list represents each key-value pair. - // - // The outer list represents each key-value pair in the Fields. Keys - // which have multiple values are represented by multiple entries in this - // list with the same key. - extern void wasi_http_0_2_0_rc_2023_12_05_types_method_fields_entries(wasi_http_0_2_0_rc_2023_12_05_types_borrow_fields_t self, bindings_list_tuple2_field_key_field_value_t *ret); - // Make a deep copy of the Fields. Equivelant in behavior to calling the - // `fields` constructor on the return value of `entries`. The resulting - // `fields` is mutable. - extern wasi_http_0_2_0_rc_2023_12_05_types_own_fields_t wasi_http_0_2_0_rc_2023_12_05_types_method_fields_clone(wasi_http_0_2_0_rc_2023_12_05_types_borrow_fields_t self); - // Returns the method of the incoming request. - extern void wasi_http_0_2_0_rc_2023_12_05_types_method_incoming_request_method(wasi_http_0_2_0_rc_2023_12_05_types_borrow_incoming_request_t self, wasi_http_0_2_0_rc_2023_12_05_types_method_t *ret); - // Returns the path with query parameters from the request, as a string. - extern bool wasi_http_0_2_0_rc_2023_12_05_types_method_incoming_request_path_with_query(wasi_http_0_2_0_rc_2023_12_05_types_borrow_incoming_request_t self, bindings_string_t *ret); - // Returns the protocol scheme from the request. - extern bool wasi_http_0_2_0_rc_2023_12_05_types_method_incoming_request_scheme(wasi_http_0_2_0_rc_2023_12_05_types_borrow_incoming_request_t self, wasi_http_0_2_0_rc_2023_12_05_types_scheme_t *ret); - // Returns the authority from the request, if it was present. - extern bool wasi_http_0_2_0_rc_2023_12_05_types_method_incoming_request_authority(wasi_http_0_2_0_rc_2023_12_05_types_borrow_incoming_request_t self, bindings_string_t *ret); - // Get the `headers` associated with the request. - // - // The returned `headers` resource is immutable: `set`, `append`, and - // `delete` operations will fail with `header-error.immutable`. - // - // The `headers` returned are a child resource: it must be dropped before - // the parent `incoming-request` is dropped. Dropping this - // `incoming-request` before all children are dropped will trap. - extern wasi_http_0_2_0_rc_2023_12_05_types_own_headers_t wasi_http_0_2_0_rc_2023_12_05_types_method_incoming_request_headers(wasi_http_0_2_0_rc_2023_12_05_types_borrow_incoming_request_t self); - // Gives the `incoming-body` associated with this request. Will only - // return success at most once, and subsequent calls will return error. - extern bool wasi_http_0_2_0_rc_2023_12_05_types_method_incoming_request_consume(wasi_http_0_2_0_rc_2023_12_05_types_borrow_incoming_request_t self, wasi_http_0_2_0_rc_2023_12_05_types_own_incoming_body_t *ret); - // Construct a new `outgoing-request` with a default `method` of `GET`, and - // `none` values for `path-with-query`, `scheme`, and `authority`. - // - // * `headers` is the HTTP Headers for the Request. - // - // It is possible to construct, or manipulate with the accessor functions - // below, an `outgoing-request` with an invalid combination of `scheme` - // and `authority`, or `headers` which are not permitted to be sent. - // It is the obligation of the `outgoing-handler.handle` implementation - // to reject invalid constructions of `outgoing-request`. - extern wasi_http_0_2_0_rc_2023_12_05_types_own_outgoing_request_t wasi_http_0_2_0_rc_2023_12_05_types_constructor_outgoing_request(wasi_http_0_2_0_rc_2023_12_05_types_own_headers_t headers); - // Returns the resource corresponding to the outgoing Body for this - // Request. - // - // Returns success on the first call: the `outgoing-body` resource for - // this `outgoing-request` can be retrieved at most once. Subsequent - // calls will return error. - extern bool wasi_http_0_2_0_rc_2023_12_05_types_method_outgoing_request_body(wasi_http_0_2_0_rc_2023_12_05_types_borrow_outgoing_request_t self, wasi_http_0_2_0_rc_2023_12_05_types_own_outgoing_body_t *ret); - // Get the Method for the Request. - extern void wasi_http_0_2_0_rc_2023_12_05_types_method_outgoing_request_method(wasi_http_0_2_0_rc_2023_12_05_types_borrow_outgoing_request_t self, wasi_http_0_2_0_rc_2023_12_05_types_method_t *ret); - // Set the Method for the Request. Fails if the string present in a - // `method.other` argument is not a syntactically valid method. - extern bool wasi_http_0_2_0_rc_2023_12_05_types_method_outgoing_request_set_method(wasi_http_0_2_0_rc_2023_12_05_types_borrow_outgoing_request_t self, wasi_http_0_2_0_rc_2023_12_05_types_method_t *method); - // Get the combination of the HTTP Path and Query for the Request. - // When `none`, this represents an empty Path and empty Query. - extern bool wasi_http_0_2_0_rc_2023_12_05_types_method_outgoing_request_path_with_query(wasi_http_0_2_0_rc_2023_12_05_types_borrow_outgoing_request_t self, bindings_string_t *ret); - // Set the combination of the HTTP Path and Query for the Request. - // When `none`, this represents an empty Path and empty Query. Fails is the - // string given is not a syntactically valid path and query uri component. - extern bool wasi_http_0_2_0_rc_2023_12_05_types_method_outgoing_request_set_path_with_query(wasi_http_0_2_0_rc_2023_12_05_types_borrow_outgoing_request_t self, bindings_string_t *maybe_path_with_query); - // Get the HTTP Related Scheme for the Request. When `none`, the - // implementation may choose an appropriate default scheme. - extern bool wasi_http_0_2_0_rc_2023_12_05_types_method_outgoing_request_scheme(wasi_http_0_2_0_rc_2023_12_05_types_borrow_outgoing_request_t self, wasi_http_0_2_0_rc_2023_12_05_types_scheme_t *ret); - // Set the HTTP Related Scheme for the Request. When `none`, the - // implementation may choose an appropriate default scheme. Fails if the - // string given is not a syntactically valid uri scheme. - extern bool wasi_http_0_2_0_rc_2023_12_05_types_method_outgoing_request_set_scheme(wasi_http_0_2_0_rc_2023_12_05_types_borrow_outgoing_request_t self, wasi_http_0_2_0_rc_2023_12_05_types_scheme_t *maybe_scheme); - // Get the HTTP Authority for the Request. A value of `none` may be used - // with Related Schemes which do not require an Authority. The HTTP and - // HTTPS schemes always require an authority. - extern bool wasi_http_0_2_0_rc_2023_12_05_types_method_outgoing_request_authority(wasi_http_0_2_0_rc_2023_12_05_types_borrow_outgoing_request_t self, bindings_string_t *ret); - // Set the HTTP Authority for the Request. A value of `none` may be used - // with Related Schemes which do not require an Authority. The HTTP and - // HTTPS schemes always require an authority. Fails if the string given is - // not a syntactically valid uri authority. - extern bool wasi_http_0_2_0_rc_2023_12_05_types_method_outgoing_request_set_authority(wasi_http_0_2_0_rc_2023_12_05_types_borrow_outgoing_request_t self, bindings_string_t *maybe_authority); - // Get the headers associated with the Request. - // - // The returned `headers` resource is immutable: `set`, `append`, and - // `delete` operations will fail with `header-error.immutable`. - // - // This headers resource is a child: it must be dropped before the parent - // `outgoing-request` is dropped, or its ownership is transfered to - // another component by e.g. `outgoing-handler.handle`. - extern wasi_http_0_2_0_rc_2023_12_05_types_own_headers_t wasi_http_0_2_0_rc_2023_12_05_types_method_outgoing_request_headers(wasi_http_0_2_0_rc_2023_12_05_types_borrow_outgoing_request_t self); - // Construct a default `request-options` value. - extern wasi_http_0_2_0_rc_2023_12_05_types_own_request_options_t wasi_http_0_2_0_rc_2023_12_05_types_constructor_request_options(void); - // The timeout for the initial connect to the HTTP Server. - extern bool wasi_http_0_2_0_rc_2023_12_05_types_method_request_options_connect_timeout(wasi_http_0_2_0_rc_2023_12_05_types_borrow_request_options_t self, wasi_http_0_2_0_rc_2023_12_05_types_duration_t *ret); - // Set the timeout for the initial connect to the HTTP Server. An error - // return value indicates that this timeout is not supported. - extern bool wasi_http_0_2_0_rc_2023_12_05_types_method_request_options_set_connect_timeout(wasi_http_0_2_0_rc_2023_12_05_types_borrow_request_options_t self, wasi_http_0_2_0_rc_2023_12_05_types_duration_t *maybe_duration); - // The timeout for receiving the first byte of the Response body. - extern bool wasi_http_0_2_0_rc_2023_12_05_types_method_request_options_first_byte_timeout(wasi_http_0_2_0_rc_2023_12_05_types_borrow_request_options_t self, wasi_http_0_2_0_rc_2023_12_05_types_duration_t *ret); - // Set the timeout for receiving the first byte of the Response body. An - // error return value indicates that this timeout is not supported. - extern bool wasi_http_0_2_0_rc_2023_12_05_types_method_request_options_set_first_byte_timeout(wasi_http_0_2_0_rc_2023_12_05_types_borrow_request_options_t self, wasi_http_0_2_0_rc_2023_12_05_types_duration_t *maybe_duration); - // The timeout for receiving subsequent chunks of bytes in the Response - // body stream. - extern bool wasi_http_0_2_0_rc_2023_12_05_types_method_request_options_between_bytes_timeout(wasi_http_0_2_0_rc_2023_12_05_types_borrow_request_options_t self, wasi_http_0_2_0_rc_2023_12_05_types_duration_t *ret); - // Set the timeout for receiving subsequent chunks of bytes in the Response - // body stream. An error return value indicates that this timeout is not - // supported. - extern bool wasi_http_0_2_0_rc_2023_12_05_types_method_request_options_set_between_bytes_timeout(wasi_http_0_2_0_rc_2023_12_05_types_borrow_request_options_t self, wasi_http_0_2_0_rc_2023_12_05_types_duration_t *maybe_duration); - // Set the value of the `response-outparam` to either send a response, - // or indicate an error. - // - // This method consumes the `response-outparam` to ensure that it is - // called at most once. If it is never called, the implementation - // will respond with an error. - // - // The user may provide an `error` to `response` to allow the - // implementation determine how to respond with an HTTP error response. - extern void wasi_http_0_2_0_rc_2023_12_05_types_static_response_outparam_set(wasi_http_0_2_0_rc_2023_12_05_types_own_response_outparam_t param, wasi_http_0_2_0_rc_2023_12_05_types_result_own_outgoing_response_error_code_t *response); - // Returns the status code from the incoming response. - extern wasi_http_0_2_0_rc_2023_12_05_types_status_code_t wasi_http_0_2_0_rc_2023_12_05_types_method_incoming_response_status(wasi_http_0_2_0_rc_2023_12_05_types_borrow_incoming_response_t self); - // Returns the headers from the incoming response. - // - // The returned `headers` resource is immutable: `set`, `append`, and - // `delete` operations will fail with `header-error.immutable`. - // - // This headers resource is a child: it must be dropped before the parent - // `incoming-response` is dropped. - extern wasi_http_0_2_0_rc_2023_12_05_types_own_headers_t wasi_http_0_2_0_rc_2023_12_05_types_method_incoming_response_headers(wasi_http_0_2_0_rc_2023_12_05_types_borrow_incoming_response_t self); - // Returns the incoming body. May be called at most once. Returns error - // if called additional times. - extern bool wasi_http_0_2_0_rc_2023_12_05_types_method_incoming_response_consume(wasi_http_0_2_0_rc_2023_12_05_types_borrow_incoming_response_t self, wasi_http_0_2_0_rc_2023_12_05_types_own_incoming_body_t *ret); - // Returns the contents of the body, as a stream of bytes. - // - // Returns success on first call: the stream representing the contents - // can be retrieved at most once. Subsequent calls will return error. - // - // The returned `input-stream` resource is a child: it must be dropped - // before the parent `incoming-body` is dropped, or consumed by - // `incoming-body.finish`. - // - // This invariant ensures that the implementation can determine whether - // the user is consuming the contents of the body, waiting on the - // `future-trailers` to be ready, or neither. This allows for network - // backpressure is to be applied when the user is consuming the body, - // and for that backpressure to not inhibit delivery of the trailers if - // the user does not read the entire body. - extern bool wasi_http_0_2_0_rc_2023_12_05_types_method_incoming_body_stream(wasi_http_0_2_0_rc_2023_12_05_types_borrow_incoming_body_t self, wasi_http_0_2_0_rc_2023_12_05_types_own_input_stream_t *ret); - // Takes ownership of `incoming-body`, and returns a `future-trailers`. - // This function will trap if the `input-stream` child is still alive. - extern wasi_http_0_2_0_rc_2023_12_05_types_own_future_trailers_t wasi_http_0_2_0_rc_2023_12_05_types_static_incoming_body_finish(wasi_http_0_2_0_rc_2023_12_05_types_own_incoming_body_t this_); - // Returns a pollable which becomes ready when either the trailers have - // been received, or an error has occured. When this pollable is ready, - // the `get` method will return `some`. - extern wasi_http_0_2_0_rc_2023_12_05_types_own_pollable_t wasi_http_0_2_0_rc_2023_12_05_types_method_future_trailers_subscribe(wasi_http_0_2_0_rc_2023_12_05_types_borrow_future_trailers_t self); - // Returns the contents of the trailers, or an error which occured, - // once the future is ready. - // - // The outer `option` represents future readiness. Users can wait on this - // `option` to become `some` using the `subscribe` method. - // - // The outer `result` is used to retrieve the trailers or error at most - // once. It will be success on the first call in which the outer option - // is `some`, and error on subsequent calls. - // - // The inner `result` represents that either the HTTP Request or Response - // body, as well as any trailers, were received successfully, or that an - // error occured receiving them. The optional `trailers` indicates whether - // or not trailers were present in the body. - // - // When some `trailers` are returned by this method, the `trailers` - // resource is immutable, and a child. Use of the `set`, `append`, or - // `delete` methods will return an error, and the resource must be - // dropped before the parent `future-trailers` is dropped. - extern bool wasi_http_0_2_0_rc_2023_12_05_types_method_future_trailers_get(wasi_http_0_2_0_rc_2023_12_05_types_borrow_future_trailers_t self, wasi_http_0_2_0_rc_2023_12_05_types_result_result_option_own_trailers_error_code_void_t *ret); - // Construct an `outgoing-response`, with a default `status-code` of `200`. - // If a different `status-code` is needed, it must be set via the - // `set-status-code` method. - // - // * `headers` is the HTTP Headers for the Response. - extern wasi_http_0_2_0_rc_2023_12_05_types_own_outgoing_response_t wasi_http_0_2_0_rc_2023_12_05_types_constructor_outgoing_response(wasi_http_0_2_0_rc_2023_12_05_types_own_headers_t headers); - // Get the HTTP Status Code for the Response. - extern wasi_http_0_2_0_rc_2023_12_05_types_status_code_t wasi_http_0_2_0_rc_2023_12_05_types_method_outgoing_response_status_code(wasi_http_0_2_0_rc_2023_12_05_types_borrow_outgoing_response_t self); - // Set the HTTP Status Code for the Response. Fails if the status-code - // given is not a valid http status code. - extern bool wasi_http_0_2_0_rc_2023_12_05_types_method_outgoing_response_set_status_code(wasi_http_0_2_0_rc_2023_12_05_types_borrow_outgoing_response_t self, wasi_http_0_2_0_rc_2023_12_05_types_status_code_t status_code); - // Get the headers associated with the Request. - // - // The returned `headers` resource is immutable: `set`, `append`, and - // `delete` operations will fail with `header-error.immutable`. - // - // This headers resource is a child: it must be dropped before the parent - // `outgoing-request` is dropped, or its ownership is transfered to - // another component by e.g. `outgoing-handler.handle`. - extern wasi_http_0_2_0_rc_2023_12_05_types_own_headers_t wasi_http_0_2_0_rc_2023_12_05_types_method_outgoing_response_headers(wasi_http_0_2_0_rc_2023_12_05_types_borrow_outgoing_response_t self); - // Returns the resource corresponding to the outgoing Body for this Response. - // - // Returns success on the first call: the `outgoing-body` resource for - // this `outgoing-response` can be retrieved at most once. Subsequent - // calls will return error. - extern bool wasi_http_0_2_0_rc_2023_12_05_types_method_outgoing_response_body(wasi_http_0_2_0_rc_2023_12_05_types_borrow_outgoing_response_t self, wasi_http_0_2_0_rc_2023_12_05_types_own_outgoing_body_t *ret); - // Returns a stream for writing the body contents. - // - // The returned `output-stream` is a child resource: it must be dropped - // before the parent `outgoing-body` resource is dropped (or finished), - // otherwise the `outgoing-body` drop or `finish` will trap. - // - // Returns success on the first call: the `output-stream` resource for - // this `outgoing-body` may be retrieved at most once. Subsequent calls - // will return error. - extern bool wasi_http_0_2_0_rc_2023_12_05_types_method_outgoing_body_write(wasi_http_0_2_0_rc_2023_12_05_types_borrow_outgoing_body_t self, wasi_http_0_2_0_rc_2023_12_05_types_own_output_stream_t *ret); - // Finalize an outgoing body, optionally providing trailers. This must be - // called to signal that the response is complete. If the `outgoing-body` - // is dropped without calling `outgoing-body.finalize`, the implementation - // should treat the body as corrupted. - // - // Fails if the body's `outgoing-request` or `outgoing-response` was - // constructed with a Content-Length header, and the contents written - // to the body (via `write`) does not match the value given in the - // Content-Length. - extern bool wasi_http_0_2_0_rc_2023_12_05_types_static_outgoing_body_finish(wasi_http_0_2_0_rc_2023_12_05_types_own_outgoing_body_t this_, wasi_http_0_2_0_rc_2023_12_05_types_own_trailers_t *maybe_trailers, wasi_http_0_2_0_rc_2023_12_05_types_error_code_t *err); - // Returns a pollable which becomes ready when either the Response has - // been received, or an error has occured. When this pollable is ready, - // the `get` method will return `some`. - extern wasi_http_0_2_0_rc_2023_12_05_types_own_pollable_t wasi_http_0_2_0_rc_2023_12_05_types_method_future_incoming_response_subscribe(wasi_http_0_2_0_rc_2023_12_05_types_borrow_future_incoming_response_t self); - // Returns the incoming HTTP Response, or an error, once one is ready. - // - // The outer `option` represents future readiness. Users can wait on this - // `option` to become `some` using the `subscribe` method. - // - // The outer `result` is used to retrieve the response or error at most - // once. It will be success on the first call in which the outer option - // is `some`, and error on subsequent calls. - // - // The inner `result` represents that either the incoming HTTP Response - // status and headers have recieved successfully, or that an error - // occured. Errors may also occur while consuming the response body, - // but those will be reported by the `incoming-body` and its - // `output-stream` child. - extern bool wasi_http_0_2_0_rc_2023_12_05_types_method_future_incoming_response_get(wasi_http_0_2_0_rc_2023_12_05_types_borrow_future_incoming_response_t self, wasi_http_0_2_0_rc_2023_12_05_types_result_result_own_incoming_response_error_code_void_t *ret); - - // Imported Functions from `wasi:http/outgoing-handler@0.2.0-rc-2023-12-05` - // This function is invoked with an outgoing HTTP Request, and it returns - // a resource `future-incoming-response` which represents an HTTP Response - // which may arrive in the future. - // - // The `options` argument accepts optional parameters for the HTTP - // protocol's transport layer. - // - // This function may return an error if the `outgoing-request` is invalid - // or not allowed to be made. Otherwise, protocol errors are reported - // through the `future-incoming-response`. - extern bool wasi_http_0_2_0_rc_2023_12_05_outgoing_handler_handle(wasi_http_0_2_0_rc_2023_12_05_outgoing_handler_own_outgoing_request_t request, wasi_http_0_2_0_rc_2023_12_05_outgoing_handler_own_request_options_t *maybe_options, wasi_http_0_2_0_rc_2023_12_05_outgoing_handler_own_future_incoming_response_t *ret, wasi_http_0_2_0_rc_2023_12_05_outgoing_handler_error_code_t *err); - - // Exported Functions from `wasi:cli/run@0.2.0-rc-2023-12-05` - bool exports_wasi_cli_0_2_0_rc_2023_12_05_run_run(void); - - // Exported Functions from `wasi:http/incoming-handler@0.2.0-rc-2023-12-05` - void exports_wasi_http_0_2_0_rc_2023_12_05_incoming_handler_handle(exports_wasi_http_0_2_0_rc_2023_12_05_incoming_handler_own_incoming_request_t request, exports_wasi_http_0_2_0_rc_2023_12_05_incoming_handler_own_response_outparam_t response_out); - - // Helper Functions - - void bindings_tuple2_string_string_free(bindings_tuple2_string_string_t *ptr); - - void bindings_list_tuple2_string_string_free(bindings_list_tuple2_string_string_t *ptr); - - void bindings_list_string_free(bindings_list_string_t *ptr); - - void bindings_option_string_free(bindings_option_string_t *ptr); - - void wasi_cli_0_2_0_rc_2023_12_05_exit_result_void_void_free(wasi_cli_0_2_0_rc_2023_12_05_exit_result_void_void_t *ptr); - - extern void wasi_io_0_2_0_rc_2023_11_10_error_error_drop_own(wasi_io_0_2_0_rc_2023_11_10_error_own_error_t handle); - extern void wasi_io_0_2_0_rc_2023_11_10_error_error_drop_borrow(wasi_io_0_2_0_rc_2023_11_10_error_own_error_t handle); - - extern wasi_io_0_2_0_rc_2023_11_10_error_borrow_error_t wasi_io_0_2_0_rc_2023_11_10_error_borrow_error(wasi_io_0_2_0_rc_2023_11_10_error_own_error_t handle); - - extern void wasi_io_0_2_0_rc_2023_11_10_poll_pollable_drop_own(wasi_io_0_2_0_rc_2023_11_10_poll_own_pollable_t handle); - extern void wasi_io_0_2_0_rc_2023_11_10_poll_pollable_drop_borrow(wasi_io_0_2_0_rc_2023_11_10_poll_own_pollable_t handle); - - extern wasi_io_0_2_0_rc_2023_11_10_poll_borrow_pollable_t wasi_io_0_2_0_rc_2023_11_10_poll_borrow_pollable(wasi_io_0_2_0_rc_2023_11_10_poll_own_pollable_t handle); - - void wasi_io_0_2_0_rc_2023_11_10_poll_list_borrow_pollable_free(wasi_io_0_2_0_rc_2023_11_10_poll_list_borrow_pollable_t *ptr); - - void bindings_list_u32_free(bindings_list_u32_t *ptr); - - void wasi_io_0_2_0_rc_2023_11_10_streams_stream_error_free(wasi_io_0_2_0_rc_2023_11_10_streams_stream_error_t *ptr); - - extern void wasi_io_0_2_0_rc_2023_11_10_streams_input_stream_drop_own(wasi_io_0_2_0_rc_2023_11_10_streams_own_input_stream_t handle); - extern void wasi_io_0_2_0_rc_2023_11_10_streams_input_stream_drop_borrow(wasi_io_0_2_0_rc_2023_11_10_streams_own_input_stream_t handle); - - extern wasi_io_0_2_0_rc_2023_11_10_streams_borrow_input_stream_t wasi_io_0_2_0_rc_2023_11_10_streams_borrow_input_stream(wasi_io_0_2_0_rc_2023_11_10_streams_own_input_stream_t handle); - - extern void wasi_io_0_2_0_rc_2023_11_10_streams_output_stream_drop_own(wasi_io_0_2_0_rc_2023_11_10_streams_own_output_stream_t handle); - extern void wasi_io_0_2_0_rc_2023_11_10_streams_output_stream_drop_borrow(wasi_io_0_2_0_rc_2023_11_10_streams_own_output_stream_t handle); - - extern wasi_io_0_2_0_rc_2023_11_10_streams_borrow_output_stream_t wasi_io_0_2_0_rc_2023_11_10_streams_borrow_output_stream(wasi_io_0_2_0_rc_2023_11_10_streams_own_output_stream_t handle); - - void bindings_list_u8_free(bindings_list_u8_t *ptr); - - void wasi_io_0_2_0_rc_2023_11_10_streams_result_list_u8_stream_error_free(wasi_io_0_2_0_rc_2023_11_10_streams_result_list_u8_stream_error_t *ptr); - - void wasi_io_0_2_0_rc_2023_11_10_streams_result_u64_stream_error_free(wasi_io_0_2_0_rc_2023_11_10_streams_result_u64_stream_error_t *ptr); - - void wasi_io_0_2_0_rc_2023_11_10_streams_result_void_stream_error_free(wasi_io_0_2_0_rc_2023_11_10_streams_result_void_stream_error_t *ptr); - - extern void wasi_cli_0_2_0_rc_2023_12_05_terminal_input_terminal_input_drop_own(wasi_cli_0_2_0_rc_2023_12_05_terminal_input_own_terminal_input_t handle); - extern void wasi_cli_0_2_0_rc_2023_12_05_terminal_input_terminal_input_drop_borrow(wasi_cli_0_2_0_rc_2023_12_05_terminal_input_own_terminal_input_t handle); - - extern wasi_cli_0_2_0_rc_2023_12_05_terminal_input_borrow_terminal_input_t wasi_cli_0_2_0_rc_2023_12_05_terminal_input_borrow_terminal_input(wasi_cli_0_2_0_rc_2023_12_05_terminal_input_own_terminal_input_t handle); - - extern void wasi_cli_0_2_0_rc_2023_12_05_terminal_output_terminal_output_drop_own(wasi_cli_0_2_0_rc_2023_12_05_terminal_output_own_terminal_output_t handle); - extern void wasi_cli_0_2_0_rc_2023_12_05_terminal_output_terminal_output_drop_borrow(wasi_cli_0_2_0_rc_2023_12_05_terminal_output_own_terminal_output_t handle); - - extern wasi_cli_0_2_0_rc_2023_12_05_terminal_output_borrow_terminal_output_t wasi_cli_0_2_0_rc_2023_12_05_terminal_output_borrow_terminal_output(wasi_cli_0_2_0_rc_2023_12_05_terminal_output_own_terminal_output_t handle); - - void wasi_cli_0_2_0_rc_2023_12_05_terminal_stdin_option_own_terminal_input_free(wasi_cli_0_2_0_rc_2023_12_05_terminal_stdin_option_own_terminal_input_t *ptr); - - void wasi_cli_0_2_0_rc_2023_12_05_terminal_stdout_option_own_terminal_output_free(wasi_cli_0_2_0_rc_2023_12_05_terminal_stdout_option_own_terminal_output_t *ptr); - - void wasi_cli_0_2_0_rc_2023_12_05_terminal_stderr_option_own_terminal_output_free(wasi_cli_0_2_0_rc_2023_12_05_terminal_stderr_option_own_terminal_output_t *ptr); - - void wasi_filesystem_0_2_0_rc_2023_11_10_types_option_datetime_free(wasi_filesystem_0_2_0_rc_2023_11_10_types_option_datetime_t *ptr); - - void wasi_filesystem_0_2_0_rc_2023_11_10_types_descriptor_stat_free(wasi_filesystem_0_2_0_rc_2023_11_10_types_descriptor_stat_t *ptr); - - void wasi_filesystem_0_2_0_rc_2023_11_10_types_new_timestamp_free(wasi_filesystem_0_2_0_rc_2023_11_10_types_new_timestamp_t *ptr); - - void wasi_filesystem_0_2_0_rc_2023_11_10_types_directory_entry_free(wasi_filesystem_0_2_0_rc_2023_11_10_types_directory_entry_t *ptr); - - extern void wasi_filesystem_0_2_0_rc_2023_11_10_types_descriptor_drop_own(wasi_filesystem_0_2_0_rc_2023_11_10_types_own_descriptor_t handle); - extern void wasi_filesystem_0_2_0_rc_2023_11_10_types_descriptor_drop_borrow(wasi_filesystem_0_2_0_rc_2023_11_10_types_own_descriptor_t handle); - - extern wasi_filesystem_0_2_0_rc_2023_11_10_types_borrow_descriptor_t wasi_filesystem_0_2_0_rc_2023_11_10_types_borrow_descriptor(wasi_filesystem_0_2_0_rc_2023_11_10_types_own_descriptor_t handle); - - extern void wasi_filesystem_0_2_0_rc_2023_11_10_types_directory_entry_stream_drop_own(wasi_filesystem_0_2_0_rc_2023_11_10_types_own_directory_entry_stream_t handle); - extern void wasi_filesystem_0_2_0_rc_2023_11_10_types_directory_entry_stream_drop_borrow(wasi_filesystem_0_2_0_rc_2023_11_10_types_own_directory_entry_stream_t handle); - - extern wasi_filesystem_0_2_0_rc_2023_11_10_types_borrow_directory_entry_stream_t wasi_filesystem_0_2_0_rc_2023_11_10_types_borrow_directory_entry_stream(wasi_filesystem_0_2_0_rc_2023_11_10_types_own_directory_entry_stream_t handle); - - void wasi_filesystem_0_2_0_rc_2023_11_10_types_result_own_input_stream_error_code_free(wasi_filesystem_0_2_0_rc_2023_11_10_types_result_own_input_stream_error_code_t *ptr); - - void wasi_filesystem_0_2_0_rc_2023_11_10_types_result_own_output_stream_error_code_free(wasi_filesystem_0_2_0_rc_2023_11_10_types_result_own_output_stream_error_code_t *ptr); - - void wasi_filesystem_0_2_0_rc_2023_11_10_types_result_void_error_code_free(wasi_filesystem_0_2_0_rc_2023_11_10_types_result_void_error_code_t *ptr); - - void wasi_filesystem_0_2_0_rc_2023_11_10_types_result_descriptor_flags_error_code_free(wasi_filesystem_0_2_0_rc_2023_11_10_types_result_descriptor_flags_error_code_t *ptr); - - void wasi_filesystem_0_2_0_rc_2023_11_10_types_result_descriptor_type_error_code_free(wasi_filesystem_0_2_0_rc_2023_11_10_types_result_descriptor_type_error_code_t *ptr); - - void wasi_filesystem_0_2_0_rc_2023_11_10_types_result_tuple2_list_u8_bool_error_code_free(wasi_filesystem_0_2_0_rc_2023_11_10_types_result_tuple2_list_u8_bool_error_code_t *ptr); - - void wasi_filesystem_0_2_0_rc_2023_11_10_types_result_filesize_error_code_free(wasi_filesystem_0_2_0_rc_2023_11_10_types_result_filesize_error_code_t *ptr); - - void wasi_filesystem_0_2_0_rc_2023_11_10_types_result_own_directory_entry_stream_error_code_free(wasi_filesystem_0_2_0_rc_2023_11_10_types_result_own_directory_entry_stream_error_code_t *ptr); - - void wasi_filesystem_0_2_0_rc_2023_11_10_types_result_descriptor_stat_error_code_free(wasi_filesystem_0_2_0_rc_2023_11_10_types_result_descriptor_stat_error_code_t *ptr); - - void wasi_filesystem_0_2_0_rc_2023_11_10_types_result_own_descriptor_error_code_free(wasi_filesystem_0_2_0_rc_2023_11_10_types_result_own_descriptor_error_code_t *ptr); - - void wasi_filesystem_0_2_0_rc_2023_11_10_types_result_string_error_code_free(wasi_filesystem_0_2_0_rc_2023_11_10_types_result_string_error_code_t *ptr); - - void wasi_filesystem_0_2_0_rc_2023_11_10_types_result_metadata_hash_value_error_code_free(wasi_filesystem_0_2_0_rc_2023_11_10_types_result_metadata_hash_value_error_code_t *ptr); - - void wasi_filesystem_0_2_0_rc_2023_11_10_types_option_directory_entry_free(wasi_filesystem_0_2_0_rc_2023_11_10_types_option_directory_entry_t *ptr); - - void wasi_filesystem_0_2_0_rc_2023_11_10_types_result_option_directory_entry_error_code_free(wasi_filesystem_0_2_0_rc_2023_11_10_types_result_option_directory_entry_error_code_t *ptr); - - void wasi_filesystem_0_2_0_rc_2023_11_10_types_option_error_code_free(wasi_filesystem_0_2_0_rc_2023_11_10_types_option_error_code_t *ptr); - - void wasi_filesystem_0_2_0_rc_2023_11_10_preopens_tuple2_own_descriptor_string_free(wasi_filesystem_0_2_0_rc_2023_11_10_preopens_tuple2_own_descriptor_string_t *ptr); - - void wasi_filesystem_0_2_0_rc_2023_11_10_preopens_list_tuple2_own_descriptor_string_free(wasi_filesystem_0_2_0_rc_2023_11_10_preopens_list_tuple2_own_descriptor_string_t *ptr); - - extern void wasi_sockets_0_2_0_rc_2023_11_10_network_network_drop_own(wasi_sockets_0_2_0_rc_2023_11_10_network_own_network_t handle); - extern void wasi_sockets_0_2_0_rc_2023_11_10_network_network_drop_borrow(wasi_sockets_0_2_0_rc_2023_11_10_network_own_network_t handle); - - extern wasi_sockets_0_2_0_rc_2023_11_10_network_borrow_network_t wasi_sockets_0_2_0_rc_2023_11_10_network_borrow_network(wasi_sockets_0_2_0_rc_2023_11_10_network_own_network_t handle); - - void wasi_sockets_0_2_0_rc_2023_11_10_network_ip_address_free(wasi_sockets_0_2_0_rc_2023_11_10_network_ip_address_t *ptr); - - void wasi_sockets_0_2_0_rc_2023_11_10_network_ip_socket_address_free(wasi_sockets_0_2_0_rc_2023_11_10_network_ip_socket_address_t *ptr); - - void wasi_sockets_0_2_0_rc_2023_11_10_udp_ip_socket_address_free(wasi_sockets_0_2_0_rc_2023_11_10_udp_ip_socket_address_t *ptr); - - void wasi_sockets_0_2_0_rc_2023_11_10_udp_incoming_datagram_free(wasi_sockets_0_2_0_rc_2023_11_10_udp_incoming_datagram_t *ptr); - - void wasi_sockets_0_2_0_rc_2023_11_10_udp_option_ip_socket_address_free(wasi_sockets_0_2_0_rc_2023_11_10_udp_option_ip_socket_address_t *ptr); - - void wasi_sockets_0_2_0_rc_2023_11_10_udp_outgoing_datagram_free(wasi_sockets_0_2_0_rc_2023_11_10_udp_outgoing_datagram_t *ptr); - - extern void wasi_sockets_0_2_0_rc_2023_11_10_udp_udp_socket_drop_own(wasi_sockets_0_2_0_rc_2023_11_10_udp_own_udp_socket_t handle); - extern void wasi_sockets_0_2_0_rc_2023_11_10_udp_udp_socket_drop_borrow(wasi_sockets_0_2_0_rc_2023_11_10_udp_own_udp_socket_t handle); - - extern wasi_sockets_0_2_0_rc_2023_11_10_udp_borrow_udp_socket_t wasi_sockets_0_2_0_rc_2023_11_10_udp_borrow_udp_socket(wasi_sockets_0_2_0_rc_2023_11_10_udp_own_udp_socket_t handle); - - extern void wasi_sockets_0_2_0_rc_2023_11_10_udp_incoming_datagram_stream_drop_own(wasi_sockets_0_2_0_rc_2023_11_10_udp_own_incoming_datagram_stream_t handle); - extern void wasi_sockets_0_2_0_rc_2023_11_10_udp_incoming_datagram_stream_drop_borrow(wasi_sockets_0_2_0_rc_2023_11_10_udp_own_incoming_datagram_stream_t handle); - - extern wasi_sockets_0_2_0_rc_2023_11_10_udp_borrow_incoming_datagram_stream_t wasi_sockets_0_2_0_rc_2023_11_10_udp_borrow_incoming_datagram_stream(wasi_sockets_0_2_0_rc_2023_11_10_udp_own_incoming_datagram_stream_t handle); - - extern void wasi_sockets_0_2_0_rc_2023_11_10_udp_outgoing_datagram_stream_drop_own(wasi_sockets_0_2_0_rc_2023_11_10_udp_own_outgoing_datagram_stream_t handle); - extern void wasi_sockets_0_2_0_rc_2023_11_10_udp_outgoing_datagram_stream_drop_borrow(wasi_sockets_0_2_0_rc_2023_11_10_udp_own_outgoing_datagram_stream_t handle); - - extern wasi_sockets_0_2_0_rc_2023_11_10_udp_borrow_outgoing_datagram_stream_t wasi_sockets_0_2_0_rc_2023_11_10_udp_borrow_outgoing_datagram_stream(wasi_sockets_0_2_0_rc_2023_11_10_udp_own_outgoing_datagram_stream_t handle); - - void wasi_sockets_0_2_0_rc_2023_11_10_udp_result_void_error_code_free(wasi_sockets_0_2_0_rc_2023_11_10_udp_result_void_error_code_t *ptr); - - void wasi_sockets_0_2_0_rc_2023_11_10_udp_result_tuple2_own_incoming_datagram_stream_own_outgoing_datagram_stream_error_code_free(wasi_sockets_0_2_0_rc_2023_11_10_udp_result_tuple2_own_incoming_datagram_stream_own_outgoing_datagram_stream_error_code_t *ptr); - - void wasi_sockets_0_2_0_rc_2023_11_10_udp_result_ip_socket_address_error_code_free(wasi_sockets_0_2_0_rc_2023_11_10_udp_result_ip_socket_address_error_code_t *ptr); - - void wasi_sockets_0_2_0_rc_2023_11_10_udp_result_bool_error_code_free(wasi_sockets_0_2_0_rc_2023_11_10_udp_result_bool_error_code_t *ptr); - - void wasi_sockets_0_2_0_rc_2023_11_10_udp_result_u8_error_code_free(wasi_sockets_0_2_0_rc_2023_11_10_udp_result_u8_error_code_t *ptr); - - void wasi_sockets_0_2_0_rc_2023_11_10_udp_result_u64_error_code_free(wasi_sockets_0_2_0_rc_2023_11_10_udp_result_u64_error_code_t *ptr); - - void wasi_sockets_0_2_0_rc_2023_11_10_udp_list_incoming_datagram_free(wasi_sockets_0_2_0_rc_2023_11_10_udp_list_incoming_datagram_t *ptr); - - void wasi_sockets_0_2_0_rc_2023_11_10_udp_result_list_incoming_datagram_error_code_free(wasi_sockets_0_2_0_rc_2023_11_10_udp_result_list_incoming_datagram_error_code_t *ptr); - - void wasi_sockets_0_2_0_rc_2023_11_10_udp_list_outgoing_datagram_free(wasi_sockets_0_2_0_rc_2023_11_10_udp_list_outgoing_datagram_t *ptr); - - void wasi_sockets_0_2_0_rc_2023_11_10_udp_create_socket_result_own_udp_socket_error_code_free(wasi_sockets_0_2_0_rc_2023_11_10_udp_create_socket_result_own_udp_socket_error_code_t *ptr); - - void wasi_sockets_0_2_0_rc_2023_11_10_tcp_ip_socket_address_free(wasi_sockets_0_2_0_rc_2023_11_10_tcp_ip_socket_address_t *ptr); - - extern void wasi_sockets_0_2_0_rc_2023_11_10_tcp_tcp_socket_drop_own(wasi_sockets_0_2_0_rc_2023_11_10_tcp_own_tcp_socket_t handle); - extern void wasi_sockets_0_2_0_rc_2023_11_10_tcp_tcp_socket_drop_borrow(wasi_sockets_0_2_0_rc_2023_11_10_tcp_own_tcp_socket_t handle); - - extern wasi_sockets_0_2_0_rc_2023_11_10_tcp_borrow_tcp_socket_t wasi_sockets_0_2_0_rc_2023_11_10_tcp_borrow_tcp_socket(wasi_sockets_0_2_0_rc_2023_11_10_tcp_own_tcp_socket_t handle); - - void wasi_sockets_0_2_0_rc_2023_11_10_tcp_result_void_error_code_free(wasi_sockets_0_2_0_rc_2023_11_10_tcp_result_void_error_code_t *ptr); - - void wasi_sockets_0_2_0_rc_2023_11_10_tcp_result_tuple2_own_input_stream_own_output_stream_error_code_free(wasi_sockets_0_2_0_rc_2023_11_10_tcp_result_tuple2_own_input_stream_own_output_stream_error_code_t *ptr); - - void wasi_sockets_0_2_0_rc_2023_11_10_tcp_result_tuple3_own_tcp_socket_own_input_stream_own_output_stream_error_code_free(wasi_sockets_0_2_0_rc_2023_11_10_tcp_result_tuple3_own_tcp_socket_own_input_stream_own_output_stream_error_code_t *ptr); - - void wasi_sockets_0_2_0_rc_2023_11_10_tcp_result_ip_socket_address_error_code_free(wasi_sockets_0_2_0_rc_2023_11_10_tcp_result_ip_socket_address_error_code_t *ptr); - - void wasi_sockets_0_2_0_rc_2023_11_10_tcp_result_bool_error_code_free(wasi_sockets_0_2_0_rc_2023_11_10_tcp_result_bool_error_code_t *ptr); - - void wasi_sockets_0_2_0_rc_2023_11_10_tcp_result_duration_error_code_free(wasi_sockets_0_2_0_rc_2023_11_10_tcp_result_duration_error_code_t *ptr); - - void wasi_sockets_0_2_0_rc_2023_11_10_tcp_result_u32_error_code_free(wasi_sockets_0_2_0_rc_2023_11_10_tcp_result_u32_error_code_t *ptr); - - void wasi_sockets_0_2_0_rc_2023_11_10_tcp_result_u8_error_code_free(wasi_sockets_0_2_0_rc_2023_11_10_tcp_result_u8_error_code_t *ptr); - - void wasi_sockets_0_2_0_rc_2023_11_10_tcp_result_u64_error_code_free(wasi_sockets_0_2_0_rc_2023_11_10_tcp_result_u64_error_code_t *ptr); - - void wasi_sockets_0_2_0_rc_2023_11_10_tcp_create_socket_result_own_tcp_socket_error_code_free(wasi_sockets_0_2_0_rc_2023_11_10_tcp_create_socket_result_own_tcp_socket_error_code_t *ptr); - - void wasi_sockets_0_2_0_rc_2023_11_10_ip_name_lookup_ip_address_free(wasi_sockets_0_2_0_rc_2023_11_10_ip_name_lookup_ip_address_t *ptr); - - extern void wasi_sockets_0_2_0_rc_2023_11_10_ip_name_lookup_resolve_address_stream_drop_own(wasi_sockets_0_2_0_rc_2023_11_10_ip_name_lookup_own_resolve_address_stream_t handle); - extern void wasi_sockets_0_2_0_rc_2023_11_10_ip_name_lookup_resolve_address_stream_drop_borrow(wasi_sockets_0_2_0_rc_2023_11_10_ip_name_lookup_own_resolve_address_stream_t handle); - - extern wasi_sockets_0_2_0_rc_2023_11_10_ip_name_lookup_borrow_resolve_address_stream_t wasi_sockets_0_2_0_rc_2023_11_10_ip_name_lookup_borrow_resolve_address_stream(wasi_sockets_0_2_0_rc_2023_11_10_ip_name_lookup_own_resolve_address_stream_t handle); - - void wasi_sockets_0_2_0_rc_2023_11_10_ip_name_lookup_result_own_resolve_address_stream_error_code_free(wasi_sockets_0_2_0_rc_2023_11_10_ip_name_lookup_result_own_resolve_address_stream_error_code_t *ptr); - - void wasi_sockets_0_2_0_rc_2023_11_10_ip_name_lookup_option_ip_address_free(wasi_sockets_0_2_0_rc_2023_11_10_ip_name_lookup_option_ip_address_t *ptr); - - void wasi_sockets_0_2_0_rc_2023_11_10_ip_name_lookup_result_option_ip_address_error_code_free(wasi_sockets_0_2_0_rc_2023_11_10_ip_name_lookup_result_option_ip_address_error_code_t *ptr); - - void wasi_http_0_2_0_rc_2023_12_05_types_method_free(wasi_http_0_2_0_rc_2023_12_05_types_method_t *ptr); - - void wasi_http_0_2_0_rc_2023_12_05_types_scheme_free(wasi_http_0_2_0_rc_2023_12_05_types_scheme_t *ptr); - - void bindings_option_u16_free(bindings_option_u16_t *ptr); - - void wasi_http_0_2_0_rc_2023_12_05_types_dns_error_payload_free(wasi_http_0_2_0_rc_2023_12_05_types_dns_error_payload_t *ptr); - - void bindings_option_u8_free(bindings_option_u8_t *ptr); - - void wasi_http_0_2_0_rc_2023_12_05_types_tls_alert_received_payload_free(wasi_http_0_2_0_rc_2023_12_05_types_tls_alert_received_payload_t *ptr); - - void bindings_option_u32_free(bindings_option_u32_t *ptr); - - void wasi_http_0_2_0_rc_2023_12_05_types_field_size_payload_free(wasi_http_0_2_0_rc_2023_12_05_types_field_size_payload_t *ptr); - - void bindings_option_u64_free(bindings_option_u64_t *ptr); - - void wasi_http_0_2_0_rc_2023_12_05_types_option_field_size_payload_free(wasi_http_0_2_0_rc_2023_12_05_types_option_field_size_payload_t *ptr); - - void wasi_http_0_2_0_rc_2023_12_05_types_error_code_free(wasi_http_0_2_0_rc_2023_12_05_types_error_code_t *ptr); - - void wasi_http_0_2_0_rc_2023_12_05_types_header_error_free(wasi_http_0_2_0_rc_2023_12_05_types_header_error_t *ptr); - - void wasi_http_0_2_0_rc_2023_12_05_types_field_key_free(wasi_http_0_2_0_rc_2023_12_05_types_field_key_t *ptr); - - void wasi_http_0_2_0_rc_2023_12_05_types_field_value_free(wasi_http_0_2_0_rc_2023_12_05_types_field_value_t *ptr); - - extern void wasi_http_0_2_0_rc_2023_12_05_types_fields_drop_own(wasi_http_0_2_0_rc_2023_12_05_types_own_fields_t handle); - extern void wasi_http_0_2_0_rc_2023_12_05_types_fields_drop_borrow(wasi_http_0_2_0_rc_2023_12_05_types_own_fields_t handle); - - extern wasi_http_0_2_0_rc_2023_12_05_types_borrow_fields_t wasi_http_0_2_0_rc_2023_12_05_types_borrow_fields(wasi_http_0_2_0_rc_2023_12_05_types_own_fields_t handle); - - extern void wasi_http_0_2_0_rc_2023_12_05_types_incoming_request_drop_own(wasi_http_0_2_0_rc_2023_12_05_types_own_incoming_request_t handle); - extern void wasi_http_0_2_0_rc_2023_12_05_types_incoming_request_drop_borrow(wasi_http_0_2_0_rc_2023_12_05_types_own_incoming_request_t handle); - - extern wasi_http_0_2_0_rc_2023_12_05_types_borrow_incoming_request_t wasi_http_0_2_0_rc_2023_12_05_types_borrow_incoming_request(wasi_http_0_2_0_rc_2023_12_05_types_own_incoming_request_t handle); - - extern void wasi_http_0_2_0_rc_2023_12_05_types_outgoing_request_drop_own(wasi_http_0_2_0_rc_2023_12_05_types_own_outgoing_request_t handle); - extern void wasi_http_0_2_0_rc_2023_12_05_types_outgoing_request_drop_borrow(wasi_http_0_2_0_rc_2023_12_05_types_own_outgoing_request_t handle); - - extern wasi_http_0_2_0_rc_2023_12_05_types_borrow_outgoing_request_t wasi_http_0_2_0_rc_2023_12_05_types_borrow_outgoing_request(wasi_http_0_2_0_rc_2023_12_05_types_own_outgoing_request_t handle); - - extern void wasi_http_0_2_0_rc_2023_12_05_types_request_options_drop_own(wasi_http_0_2_0_rc_2023_12_05_types_own_request_options_t handle); - extern void wasi_http_0_2_0_rc_2023_12_05_types_request_options_drop_borrow(wasi_http_0_2_0_rc_2023_12_05_types_own_request_options_t handle); - - extern wasi_http_0_2_0_rc_2023_12_05_types_borrow_request_options_t wasi_http_0_2_0_rc_2023_12_05_types_borrow_request_options(wasi_http_0_2_0_rc_2023_12_05_types_own_request_options_t handle); - - extern void wasi_http_0_2_0_rc_2023_12_05_types_response_outparam_drop_own(wasi_http_0_2_0_rc_2023_12_05_types_own_response_outparam_t handle); - extern void wasi_http_0_2_0_rc_2023_12_05_types_response_outparam_drop_borrow(wasi_http_0_2_0_rc_2023_12_05_types_own_response_outparam_t handle); - - extern wasi_http_0_2_0_rc_2023_12_05_types_borrow_response_outparam_t wasi_http_0_2_0_rc_2023_12_05_types_borrow_response_outparam(wasi_http_0_2_0_rc_2023_12_05_types_own_response_outparam_t handle); - - extern void wasi_http_0_2_0_rc_2023_12_05_types_incoming_response_drop_own(wasi_http_0_2_0_rc_2023_12_05_types_own_incoming_response_t handle); - extern void wasi_http_0_2_0_rc_2023_12_05_types_incoming_response_drop_borrow(wasi_http_0_2_0_rc_2023_12_05_types_own_incoming_response_t handle); - - extern wasi_http_0_2_0_rc_2023_12_05_types_borrow_incoming_response_t wasi_http_0_2_0_rc_2023_12_05_types_borrow_incoming_response(wasi_http_0_2_0_rc_2023_12_05_types_own_incoming_response_t handle); - - extern void wasi_http_0_2_0_rc_2023_12_05_types_incoming_body_drop_own(wasi_http_0_2_0_rc_2023_12_05_types_own_incoming_body_t handle); - extern void wasi_http_0_2_0_rc_2023_12_05_types_incoming_body_drop_borrow(wasi_http_0_2_0_rc_2023_12_05_types_own_incoming_body_t handle); - - extern wasi_http_0_2_0_rc_2023_12_05_types_borrow_incoming_body_t wasi_http_0_2_0_rc_2023_12_05_types_borrow_incoming_body(wasi_http_0_2_0_rc_2023_12_05_types_own_incoming_body_t handle); - - extern void wasi_http_0_2_0_rc_2023_12_05_types_future_trailers_drop_own(wasi_http_0_2_0_rc_2023_12_05_types_own_future_trailers_t handle); - extern void wasi_http_0_2_0_rc_2023_12_05_types_future_trailers_drop_borrow(wasi_http_0_2_0_rc_2023_12_05_types_own_future_trailers_t handle); - - extern wasi_http_0_2_0_rc_2023_12_05_types_borrow_future_trailers_t wasi_http_0_2_0_rc_2023_12_05_types_borrow_future_trailers(wasi_http_0_2_0_rc_2023_12_05_types_own_future_trailers_t handle); - - extern void wasi_http_0_2_0_rc_2023_12_05_types_outgoing_response_drop_own(wasi_http_0_2_0_rc_2023_12_05_types_own_outgoing_response_t handle); - extern void wasi_http_0_2_0_rc_2023_12_05_types_outgoing_response_drop_borrow(wasi_http_0_2_0_rc_2023_12_05_types_own_outgoing_response_t handle); - - extern wasi_http_0_2_0_rc_2023_12_05_types_borrow_outgoing_response_t wasi_http_0_2_0_rc_2023_12_05_types_borrow_outgoing_response(wasi_http_0_2_0_rc_2023_12_05_types_own_outgoing_response_t handle); - - extern void wasi_http_0_2_0_rc_2023_12_05_types_outgoing_body_drop_own(wasi_http_0_2_0_rc_2023_12_05_types_own_outgoing_body_t handle); - extern void wasi_http_0_2_0_rc_2023_12_05_types_outgoing_body_drop_borrow(wasi_http_0_2_0_rc_2023_12_05_types_own_outgoing_body_t handle); - - extern wasi_http_0_2_0_rc_2023_12_05_types_borrow_outgoing_body_t wasi_http_0_2_0_rc_2023_12_05_types_borrow_outgoing_body(wasi_http_0_2_0_rc_2023_12_05_types_own_outgoing_body_t handle); - - extern void wasi_http_0_2_0_rc_2023_12_05_types_future_incoming_response_drop_own(wasi_http_0_2_0_rc_2023_12_05_types_own_future_incoming_response_t handle); - extern void wasi_http_0_2_0_rc_2023_12_05_types_future_incoming_response_drop_borrow(wasi_http_0_2_0_rc_2023_12_05_types_own_future_incoming_response_t handle); - - extern wasi_http_0_2_0_rc_2023_12_05_types_borrow_future_incoming_response_t wasi_http_0_2_0_rc_2023_12_05_types_borrow_future_incoming_response(wasi_http_0_2_0_rc_2023_12_05_types_own_future_incoming_response_t handle); - - void wasi_http_0_2_0_rc_2023_12_05_types_option_error_code_free(wasi_http_0_2_0_rc_2023_12_05_types_option_error_code_t *ptr); - - void bindings_tuple2_field_key_field_value_free(bindings_tuple2_field_key_field_value_t *ptr); - - void bindings_list_tuple2_field_key_field_value_free(bindings_list_tuple2_field_key_field_value_t *ptr); - - void wasi_http_0_2_0_rc_2023_12_05_types_result_own_fields_header_error_free(wasi_http_0_2_0_rc_2023_12_05_types_result_own_fields_header_error_t *ptr); - - void bindings_list_field_value_free(bindings_list_field_value_t *ptr); - - void wasi_http_0_2_0_rc_2023_12_05_types_result_void_header_error_free(wasi_http_0_2_0_rc_2023_12_05_types_result_void_header_error_t *ptr); - - void wasi_http_0_2_0_rc_2023_12_05_types_option_scheme_free(wasi_http_0_2_0_rc_2023_12_05_types_option_scheme_t *ptr); - - void wasi_http_0_2_0_rc_2023_12_05_types_result_own_incoming_body_void_free(wasi_http_0_2_0_rc_2023_12_05_types_result_own_incoming_body_void_t *ptr); - - void wasi_http_0_2_0_rc_2023_12_05_types_result_own_outgoing_body_void_free(wasi_http_0_2_0_rc_2023_12_05_types_result_own_outgoing_body_void_t *ptr); - - void wasi_http_0_2_0_rc_2023_12_05_types_result_void_void_free(wasi_http_0_2_0_rc_2023_12_05_types_result_void_void_t *ptr); - - void bindings_option_duration_free(bindings_option_duration_t *ptr); - - void wasi_http_0_2_0_rc_2023_12_05_types_result_own_outgoing_response_error_code_free(wasi_http_0_2_0_rc_2023_12_05_types_result_own_outgoing_response_error_code_t *ptr); - - void wasi_http_0_2_0_rc_2023_12_05_types_result_own_input_stream_void_free(wasi_http_0_2_0_rc_2023_12_05_types_result_own_input_stream_void_t *ptr); - - void wasi_http_0_2_0_rc_2023_12_05_types_option_own_trailers_free(wasi_http_0_2_0_rc_2023_12_05_types_option_own_trailers_t *ptr); - - void wasi_http_0_2_0_rc_2023_12_05_types_result_option_own_trailers_error_code_free(wasi_http_0_2_0_rc_2023_12_05_types_result_option_own_trailers_error_code_t *ptr); - - void wasi_http_0_2_0_rc_2023_12_05_types_result_result_option_own_trailers_error_code_void_free(wasi_http_0_2_0_rc_2023_12_05_types_result_result_option_own_trailers_error_code_void_t *ptr); - - void wasi_http_0_2_0_rc_2023_12_05_types_option_result_result_option_own_trailers_error_code_void_free(wasi_http_0_2_0_rc_2023_12_05_types_option_result_result_option_own_trailers_error_code_void_t *ptr); - - void wasi_http_0_2_0_rc_2023_12_05_types_result_own_output_stream_void_free(wasi_http_0_2_0_rc_2023_12_05_types_result_own_output_stream_void_t *ptr); - - void wasi_http_0_2_0_rc_2023_12_05_types_result_void_error_code_free(wasi_http_0_2_0_rc_2023_12_05_types_result_void_error_code_t *ptr); - - void wasi_http_0_2_0_rc_2023_12_05_types_result_own_incoming_response_error_code_free(wasi_http_0_2_0_rc_2023_12_05_types_result_own_incoming_response_error_code_t *ptr); - - void wasi_http_0_2_0_rc_2023_12_05_types_result_result_own_incoming_response_error_code_void_free(wasi_http_0_2_0_rc_2023_12_05_types_result_result_own_incoming_response_error_code_void_t *ptr); - - void wasi_http_0_2_0_rc_2023_12_05_types_option_result_result_own_incoming_response_error_code_void_free(wasi_http_0_2_0_rc_2023_12_05_types_option_result_result_own_incoming_response_error_code_void_t *ptr); - - void wasi_http_0_2_0_rc_2023_12_05_outgoing_handler_error_code_free(wasi_http_0_2_0_rc_2023_12_05_outgoing_handler_error_code_t *ptr); - - void wasi_http_0_2_0_rc_2023_12_05_outgoing_handler_option_own_request_options_free(wasi_http_0_2_0_rc_2023_12_05_outgoing_handler_option_own_request_options_t *ptr); - - void wasi_http_0_2_0_rc_2023_12_05_outgoing_handler_result_own_future_incoming_response_error_code_free(wasi_http_0_2_0_rc_2023_12_05_outgoing_handler_result_own_future_incoming_response_error_code_t *ptr); - - void exports_wasi_cli_0_2_0_rc_2023_12_05_run_result_void_void_free(exports_wasi_cli_0_2_0_rc_2023_12_05_run_result_void_void_t *ptr); - - // Transfers ownership of `s` into the string `ret` - void bindings_string_set(bindings_string_t *ret, char*s); - - // Creates a copy of the input nul-terminate string `s` and - // stores it into the component model string `ret`. - void bindings_string_dup(bindings_string_t *ret, const char*s); - - // Deallocates the string pointed to by `ret`, deallocating - // the memory behind the string. - void bindings_string_free(bindings_string_t *ret); - - #ifdef __cplusplus - } - #endif - #endif - \ No newline at end of file diff --git a/host-apis/wasi-0.2.0-rc-2023-12-05/bindings/bindings_component_type.o b/host-apis/wasi-0.2.0-rc-2023-12-05/bindings/bindings_component_type.o deleted file mode 100644 index b5788e88..00000000 Binary files a/host-apis/wasi-0.2.0-rc-2023-12-05/bindings/bindings_component_type.o and /dev/null differ diff --git a/host-apis/wasi-0.2.0-rc-2023-12-05/host_api.cpp b/host-apis/wasi-0.2.0-rc-2023-12-05/host_api.cpp deleted file mode 100644 index f125b29b..00000000 --- a/host-apis/wasi-0.2.0-rc-2023-12-05/host_api.cpp +++ /dev/null @@ -1,1031 +0,0 @@ -#include "host_api.h" -#include "bindings/bindings.h" - -#include - -using std::optional; -using std::string_view; -using std::tuple; -using std::unique_ptr; -using std::vector; - -// The host interface makes the assumption regularly that uint32_t is sufficient space to store a -// pointer. -static_assert(sizeof(uint32_t) == sizeof(void *)); - -typedef wasi_http_0_2_0_rc_2023_12_05_types_own_incoming_request_t incoming_request_t; -typedef wasi_http_0_2_0_rc_2023_12_05_types_borrow_incoming_request_t borrow_incoming_request_t; -typedef wasi_http_0_2_0_rc_2023_12_05_types_own_incoming_response_t incoming_response_t; -typedef wasi_http_0_2_0_rc_2023_12_05_types_borrow_outgoing_request_t borrow_outgoing_request_t; - -typedef wasi_http_0_2_0_rc_2023_12_05_types_own_future_incoming_response_t - future_incoming_response_t; -typedef wasi_http_0_2_0_rc_2023_12_05_types_borrow_future_incoming_response_t - borrow_future_incoming_response_t; - -typedef wasi_http_0_2_0_rc_2023_12_05_types_own_incoming_body_t incoming_body_t; -typedef wasi_http_0_2_0_rc_2023_12_05_types_own_outgoing_body_t outgoing_body_t; - -using field_key = wasi_http_0_2_0_rc_2023_12_05_types_field_key_t; -using field_value = wasi_http_0_2_0_rc_2023_12_05_types_field_value_t; - -typedef wasi_http_0_2_0_rc_2023_12_05_types_borrow_incoming_body_t borrow_incoming_body_t; -typedef wasi_http_0_2_0_rc_2023_12_05_types_borrow_outgoing_body_t borrow_outgoing_body_t; - -typedef wasi_io_0_2_0_rc_2023_11_10_poll_own_pollable_t own_pollable_t; -typedef wasi_io_0_2_0_rc_2023_11_10_poll_borrow_pollable_t borrow_pollable_t; -typedef wasi_io_0_2_0_rc_2023_11_10_poll_list_borrow_pollable_t list_borrow_pollable_t; - -typedef wasi_io_0_2_0_rc_2023_11_10_streams_own_input_stream_t own_input_stream_t; -typedef wasi_io_0_2_0_rc_2023_11_10_streams_borrow_input_stream_t borrow_input_stream_t; - -typedef wasi_io_0_2_0_rc_2023_11_10_streams_own_output_stream_t own_output_stream_t; - -namespace { - -/// This is the type contract for using the Own and Borrow templates. -template struct HandleOps {}; - -/// A convenience wrapper for constructing a borrow. As we only create borrows of things we already -/// own, this wrapper will never explicitly drop borrows. -template class Borrow final { - static constexpr const typename HandleOps::borrow invalid{std::numeric_limits::max()}; - HandleOps::borrow handle{Borrow::invalid}; - -public: - Borrow() = default; - - // Construct a borrow from an owned handle. - Borrow(HandleOps::own handle) : handle{HandleOps::borrow_owned(handle)} {} - - // Construct a borrow from a raw `Handle` value. - Borrow(host_api::Handle handle) : Borrow{typename HandleOps::own{handle}} {} - - // Convenience wrapper for constructing a borrow of a HandleState. - Borrow(host_api::HandleState *state) : Borrow{typename HandleOps::own{state->handle}} {} - - bool valid() const { return this->handle.__handle != Borrow::invalid.__handle; } - - operator bool() const { return this->valid(); } - - operator typename HandleOps::borrow() const { return this->handle; } -}; - -template <> struct HandleOps { - using own = wasi_http_0_2_0_rc_2023_12_05_types_own_fields_t; - using borrow = wasi_http_0_2_0_rc_2023_12_05_types_borrow_fields_t; - - static constexpr const auto borrow_owned = wasi_http_0_2_0_rc_2023_12_05_types_borrow_fields; -}; - -struct OutputStream {}; - -template <> struct HandleOps { - using own = wasi_io_0_2_0_rc_2023_11_10_streams_own_output_stream_t; - using borrow = wasi_io_0_2_0_rc_2023_11_10_streams_borrow_output_stream_t; - - static constexpr const auto borrow_owned = - wasi_io_0_2_0_rc_2023_11_10_streams_borrow_output_stream; -}; - -struct Pollable {}; - -template <> struct HandleOps { - using own = wasi_io_0_2_0_rc_2023_11_10_poll_own_pollable_t; - using borrow = wasi_io_0_2_0_rc_2023_11_10_poll_borrow_pollable_t; - - static constexpr const auto borrow_owned = wasi_io_0_2_0_rc_2023_11_10_poll_borrow_pollable; -}; - -} // namespace - -size_t api::AsyncTask::select(std::vector *tasks) { - auto count = tasks->size(); - vector> handles; - for (const auto task : *tasks) { - handles.emplace_back(task->id()); - } - auto list = list_borrow_pollable_t{ - reinterpret_cast::borrow *>(handles.data()), count}; - bindings_list_u32_t result{nullptr, 0}; - wasi_io_0_2_0_rc_2023_11_10_poll_poll(&list, &result); - MOZ_ASSERT(result.len > 0); - const auto ready_index = result.ptr[0]; - free(result.ptr); - - return ready_index; -} - -std::optional api::AsyncTask::ready(std::vector *tasks) { - auto count = tasks->size(); - vector> handles; - auto list = list_borrow_pollable_t{ - reinterpret_cast::borrow *>(handles.data()), count}; - bindings_list_u32_t result{nullptr, 0}; - wasi_io_0_2_0_rc_2023_10_18_poll_poll_list(&list, &result); - MOZ_ASSERT(result.len > 0); - const auto ready_index = result.ptr[0]; - free(result.ptr); - - return ready_index; -} - -namespace host_api { - -HostString::HostString(const char *c_str) { - len = strlen(c_str); - ptr = JS::UniqueChars(static_cast(malloc(len + 1))); - std::memcpy(ptr.get(), c_str, len); - ptr[len] = '\0'; -} - -namespace { - -template HostString to_host_string(T str) { - return {JS::UniqueChars(reinterpret_cast(str.ptr)), str.len}; -} - -auto bindings_string_to_host_string = to_host_string; - -template T from_string_view(std::string_view str) { - return T{ - .ptr = (uint8_t *)str.data(), - .len = str.size(), - }; -} - -auto string_view_to_world_string = from_string_view; - -HostString scheme_to_string(const wasi_http_0_2_0_rc_2023_12_05_types_scheme_t scheme) { - if (scheme.tag == WASI_HTTP_0_2_0_RC_2023_12_05_TYPES_SCHEME_HTTP) { - return {"http:"}; - } - if (scheme.tag == WASI_HTTP_0_2_0_RC_2023_12_05_TYPES_SCHEME_HTTPS) { - return {"https:"}; - } - return to_host_string(scheme.val.other); -} - -} // namespace - -Result Random::get_bytes(size_t num_bytes) { - Result res; - - bindings_list_u8_t list{}; - wasi_random_0_2_0_rc_2023_11_10_random_get_random_bytes(num_bytes, &list); - auto ret = HostBytes{ - std::unique_ptr{list.ptr}, - list.len, - }; - res.emplace(std::move(ret)); - - return res; -} - -Result Random::get_u32() { - return Result::ok(wasi_random_0_2_0_rc_2023_11_10_random_get_random_u64()); -} - -uint64_t MonotonicClock::now() { return wasi_clocks_0_2_0_rc_2023_11_10_monotonic_clock_now(); } - -uint64_t MonotonicClock::resolution() { - return wasi_clocks_0_2_0_rc_2023_11_10_monotonic_clock_resolution(); -} - -int32_t MonotonicClock::subscribe(const uint64_t when, const bool absolute) { - if (absolute) { - return wasi_clocks_0_2_0_rc_2023_11_10_monotonic_clock_subscribe_instant(when).__handle; - } else { - return wasi_clocks_0_2_0_rc_2023_11_10_monotonic_clock_subscribe_duration(when).__handle; - } -} - -void MonotonicClock::unsubscribe(const int32_t handle_id) { - wasi_io_0_2_0_rc_2023_11_10_poll_pollable_drop_own(own_pollable_t{handle_id}); -} - -HttpHeaders::HttpHeaders() { - this->handle_state_ = - new HandleState(wasi_http_0_2_0_rc_2023_12_05_types_constructor_fields().__handle); -} -HttpHeaders::HttpHeaders(Handle handle) { handle_state_ = new HandleState(handle); } - -// TODO: make this a factory function -HttpHeaders::HttpHeaders(const vector>> &entries) { - std::vector pairs; - - for (const auto &[name, values] : entries) { - for (const auto &value : values) { - pairs.emplace_back(from_string_view(name), from_string_view(value)); - } - } - - bindings_list_tuple2_field_key_field_value_t tuples{pairs.data(), entries.size()}; - - wasi_http_0_2_0_rc_2023_12_05_types_own_fields_t ret; - wasi_http_0_2_0_rc_2023_12_05_types_header_error_t err; - wasi_http_0_2_0_rc_2023_12_05_types_static_fields_from_list(&tuples, &ret, &err); - // TODO: handle `err` - - this->handle_state_ = new HandleState(ret.__handle); -} - -HttpHeaders::HttpHeaders(const HttpHeaders &headers) { - Borrow borrow(headers.handle_state_); - auto handle = wasi_http_0_2_0_rc_2023_12_05_types_method_fields_clone(borrow); - this->handle_state_ = new HandleState(handle.__handle); -} - -Result>> HttpHeaders::entries() const { - Result>> res; - MOZ_ASSERT(valid()); - - bindings_list_tuple2_field_key_field_value_t entries; - Borrow borrow(this->handle_state_); - wasi_http_0_2_0_rc_2023_12_05_types_method_fields_entries(borrow, &entries); - - vector> entries_vec; - for (int i = 0; i < entries.len; i++) { - auto key = entries.ptr[i].f0; - auto value = entries.ptr[i].f1; - entries_vec.emplace_back(to_host_string(key), to_host_string(value)); - } - // Free the outer list, but not the entries themselves. - free(entries.ptr); - res.emplace(std::move(entries_vec)); - - return res; -} - -Result> HttpHeaders::names() const { - Result> res; - MOZ_ASSERT(valid()); - - bindings_list_tuple2_field_key_field_value_t entries; - Borrow borrow(this->handle_state_); - wasi_http_0_2_0_rc_2023_12_05_types_method_fields_entries(borrow, &entries); - - vector names; - for (int i = 0; i < entries.len; i++) { - names.emplace_back(bindings_string_to_host_string(entries.ptr[i].f0)); - } - // Free the outer list, but not the entries themselves. - free(entries.ptr); - res.emplace(std::move(names)); - - return res; -} - -Result>> HttpHeaders::get(string_view name) const { - Result>> res; - MOZ_ASSERT(valid()); - - bindings_list_field_value_t values; - auto hdr = string_view_to_world_string(name); - Borrow borrow(this->handle_state_); - wasi_http_0_2_0_rc_2023_12_05_types_method_fields_get(borrow, &hdr, &values); - - if (values.len > 0) { - std::vector names; - for (int i = 0; i < values.len; i++) { - names.emplace_back(to_host_string(values.ptr[i])); - } - // Free the outer list, but not the values themselves. - free(values.ptr); - res.emplace(std::move(names)); - } else { - res.emplace(std::nullopt); - } - - return res; -} - -Result HttpHeaders::set(string_view name, string_view value) { - MOZ_ASSERT(valid()); - auto hdr = from_string_view(name); - auto val = from_string_view(value); - bindings_list_field_value_t host_values{&val, 1}; - Borrow borrow(this->handle_state_); - - wasi_http_0_2_0_rc_2023_12_05_types_header_error_t err; - wasi_http_0_2_0_rc_2023_12_05_types_method_fields_set(borrow, &hdr, &host_values, &err); - - // TODO: handle `err` - - return {}; -} - -Result HttpHeaders::append(string_view name, string_view value) { - MOZ_ASSERT(valid()); - auto hdr = from_string_view(name); - auto val = from_string_view(value); - Borrow borrow(this->handle_state_); - - wasi_http_0_2_0_rc_2023_12_05_types_header_error_t err; - wasi_http_0_2_0_rc_2023_12_05_types_method_fields_append(borrow, &hdr, &val, &err); - - // TODO: handle `err` - - return {}; -} - -Result HttpHeaders::remove(string_view name) { - MOZ_ASSERT(valid()); - auto hdr = string_view_to_world_string(name); - Borrow borrow(this->handle_state_); - - wasi_http_0_2_0_rc_2023_12_05_types_header_error_t err; - wasi_http_0_2_0_rc_2023_12_05_types_method_fields_delete(borrow, &hdr, &err); - - // TODO: handle `err` - - return {}; -} - -// TODO: convert to `Result` -string_view HttpRequestResponseBase::url() { - if (_url) { - return string_view(*_url); - } - - auto borrow = borrow_incoming_request_t{handle_state_->handle}; - - wasi_http_0_2_0_rc_2023_12_05_types_scheme_t scheme; - bool success; - success = wasi_http_0_2_0_rc_2023_12_05_types_method_incoming_request_scheme(borrow, &scheme); - MOZ_RELEASE_ASSERT(success); - - bindings_string_t authority; - success = - wasi_http_0_2_0_rc_2023_12_05_types_method_incoming_request_authority(borrow, &authority); - MOZ_RELEASE_ASSERT(success); - - bindings_string_t path; - success = - wasi_http_0_2_0_rc_2023_12_05_types_method_incoming_request_path_with_query(borrow, &path); - MOZ_RELEASE_ASSERT(success); - - HostString scheme_str = scheme_to_string(scheme); - _url = new std::string(scheme_str.ptr.release(), scheme_str.len); - _url->append(string_view(bindings_string_to_host_string(authority))); - _url->append(string_view(bindings_string_to_host_string(path))); - - return string_view(*_url); -} - -bool write_to_outgoing_body(Borrow borrow, const uint8_t *ptr, const size_t len) { - // The write call doesn't mutate the buffer; the cast is just for the - // generated bindings. - bindings_list_u8_t list{const_cast(ptr), len}; - wasi_io_0_2_0_rc_2023_11_10_streams_stream_error_t err; - // TODO: proper error handling. - return wasi_io_0_2_0_rc_2023_11_10_streams_method_output_stream_write(borrow, &list, &err); -} - -class OutgoingBodyHandleState final : HandleState { - Handle stream_handle_; - PollableHandle pollable_handle_; - - friend HttpOutgoingBody; - -public: - explicit OutgoingBodyHandleState(const Handle handle) - : HandleState(handle), pollable_handle_(INVALID_POLLABLE_HANDLE) { - const borrow_outgoing_body_t borrow = {handle}; - own_output_stream_t stream{}; - if (!wasi_http_0_2_0_rc_2023_12_05_types_method_outgoing_body_write(borrow, &stream)) { - MOZ_ASSERT_UNREACHABLE("Getting a body's stream should never fail"); - } - stream_handle_ = stream.__handle; - } -}; - -HttpOutgoingBody::HttpOutgoingBody(Handle handle) : Pollable() { - handle_state_ = new OutgoingBodyHandleState(handle); -} -Result HttpOutgoingBody::capacity() { - if (!valid()) { - // TODO: proper error handling for all 154 error codes. - return Result::err(154); - } - - auto *state = static_cast(this->handle_state_); - Borrow borrow(state->stream_handle_); - uint64_t capacity = 0; - wasi_io_0_2_0_rc_2023_11_10_streams_stream_error_t err; - if (!wasi_io_0_2_0_rc_2023_11_10_streams_method_output_stream_check_write(borrow, &capacity, - &err)) { - return Result::err(154); - } - return Result::ok(capacity); -} - -Result HttpOutgoingBody::write(const uint8_t *bytes, size_t len) { - auto res = capacity(); - if (res.is_err()) { - // TODO: proper error handling for all 154 error codes. - return Result::err(154); - } - auto capacity = res.unwrap(); - auto bytes_to_write = std::min(len, static_cast(capacity)); - - auto *state = static_cast(this->handle_state_); - Borrow borrow(state->stream_handle_); - if (!write_to_outgoing_body(borrow, bytes, bytes_to_write)) { - return Result::err(154); - } - - return Result::ok(bytes_to_write); -} - -Result HttpOutgoingBody::write_all(const uint8_t *bytes, size_t len) { - if (!valid()) { - // TODO: proper error handling for all 154 error codes. - return Result::err({}); - } - - auto *state = static_cast(handle_state_); - Borrow borrow(state->stream_handle_); - - while (len > 0) { - auto capacity_res = capacity(); - if (capacity_res.is_err()) { - // TODO: proper error handling for all 154 error codes. - return Result::err(154); - } - auto capacity = capacity_res.unwrap(); - auto bytes_to_write = std::min(len, static_cast(capacity)); - if (!write_to_outgoing_body(borrow, bytes, len)) { - return Result::err(154); - } - - bytes += bytes_to_write; - len -= bytes_to_write; - } - - return {}; -} - -class BodyAppendTask final : public api::AsyncTask { - enum class State { - BlockedOnBoth, - BlockedOnIncoming, - BlockedOnOutgoing, - Ready, - Done, - }; - - HttpIncomingBody *incoming_body_; - HttpOutgoingBody *outgoing_body_; - PollableHandle incoming_pollable_; - PollableHandle outgoing_pollable_; - State state_; - - void set_state(const State state) { - MOZ_ASSERT(state_ != State::Done); - state_ = state; - } - -public: - explicit BodyAppendTask(HttpIncomingBody *incoming_body, HttpOutgoingBody *outgoing_body) - : incoming_body_(incoming_body), outgoing_body_(outgoing_body) { - auto res = incoming_body_->subscribe(); - MOZ_ASSERT(!res.is_err()); - incoming_pollable_ = res.unwrap(); - - res = outgoing_body_->subscribe(); - MOZ_ASSERT(!res.is_err()); - outgoing_pollable_ = res.unwrap(); - - state_ = State::BlockedOnBoth; - } - - [[nodiscard]] bool run(api::Engine *engine) override { - // If run is called while we're blocked on the incoming stream, that means that stream's - // pollable has resolved, so the stream must be ready. - if (state_ == State::BlockedOnBoth || state_ == State::BlockedOnIncoming) { - auto res = incoming_body_->read(0); - MOZ_ASSERT(!res.is_err()); - auto [bytes, done] = std::move(res.unwrap()); - if (done) { - set_state(State::Done); - return true; - } - set_state(State::BlockedOnOutgoing); - } - - uint64_t capacity = 0; - if (state_ == State::BlockedOnOutgoing) { - auto res = outgoing_body_->capacity(); - if (res.is_err()) { - return false; - } - capacity = res.unwrap(); - if (capacity > 0) { - set_state(State::Ready); - } else { - engine->queue_async_task(this); - return true; - } - } - - MOZ_ASSERT(state_ == State::Ready); - - // TODO: reuse a buffer for this loop - do { - auto res = incoming_body_->read(capacity); - if (res.is_err()) { - // TODO: proper error handling. - return false; - } - auto [done, bytes] = std::move(res.unwrap()); - if (bytes.len == 0 && !done) { - set_state(State::BlockedOnIncoming); - engine->queue_async_task(this); - return true; - } - - auto offset = 0; - while (bytes.len - offset > 0) { - // TODO: remove double checking of write-readiness - // TODO: make this async by storing the remaining chunk in the task and marking it as - // being blocked on write - auto write_res = outgoing_body_->write(bytes.ptr.get() + offset, bytes.len - offset); - if (write_res.is_err()) { - // TODO: proper error handling. - return false; - } - offset += write_res.unwrap(); - } - - if (done) { - set_state(State::Done); - return true; - } - - auto capacity_res = outgoing_body_->capacity(); - if (capacity_res.is_err()) { - // TODO: proper error handling. - return false; - } - capacity = capacity_res.unwrap(); - } while (capacity > 0); - - set_state(State::BlockedOnOutgoing); - engine->queue_async_task(this); - return true; - } - - [[nodiscard]] bool cancel(api::Engine *engine) override { - MOZ_ASSERT_UNREACHABLE("BodyAppendTask's semantics don't allow for cancellation"); - return true; - } - - [[nodiscard]] int32_t id() override { - if (state_ == State::BlockedOnBoth || state_ == State::BlockedOnIncoming) { - return incoming_pollable_; - } - - MOZ_ASSERT(state_ == State::BlockedOnOutgoing, - "BodyAppendTask should only be queued if it's not known to be ready"); - return outgoing_pollable_; - } - - void trace(JSTracer *trc) override { - // Nothing to trace. - } -}; - -Result HttpOutgoingBody::append(api::Engine *engine, HttpIncomingBody *other) { - MOZ_ASSERT(valid()); - engine->queue_async_task(new BodyAppendTask(other, this)); - return {}; -} - -Result HttpOutgoingBody::close() { - MOZ_ASSERT(valid()); - - auto state = static_cast(handle_state_); - // A blocking flush is required here to ensure that all buffered contents are - // actually written before finishing the body. - Borrow borrow{state->stream_handle_}; - - { - wasi_io_0_2_0_rc_2023_11_10_streams_stream_error_t err; - bool success = - wasi_io_0_2_0_rc_2023_11_10_streams_method_output_stream_blocking_flush(borrow, &err); - MOZ_RELEASE_ASSERT(success); - // TODO: handle `err` - } - - if (state->pollable_handle_ != INVALID_POLLABLE_HANDLE) { - wasi_io_0_2_0_rc_2023_11_10_poll_pollable_drop_own(own_pollable_t{state->pollable_handle_}); - } - wasi_io_0_2_0_rc_2023_11_10_streams_output_stream_drop_own({state->stream_handle_}); - - { - wasi_http_0_2_0_rc_2023_12_05_types_error_code_t err; - wasi_http_0_2_0_rc_2023_12_05_types_static_outgoing_body_finish({state->handle}, nullptr, &err); - // TODO: handle `err` - } - - delete handle_state_; - handle_state_ = nullptr; - - return {}; -} -Result HttpOutgoingBody::subscribe() { - auto state = static_cast(handle_state_); - if (state->pollable_handle_ == INVALID_POLLABLE_HANDLE) { - Borrow borrow(state->stream_handle_); - state->pollable_handle_ = - wasi_io_0_2_0_rc_2023_11_10_streams_method_output_stream_subscribe(borrow).__handle; - } - return Result::ok(state->pollable_handle_); -} - -void HttpOutgoingBody::unsubscribe() { - auto state = static_cast(handle_state_); - if (state->pollable_handle_ == INVALID_POLLABLE_HANDLE) { - return; - } - wasi_io_0_2_0_rc_2023_11_10_poll_pollable_drop_own(own_pollable_t{state->pollable_handle_}); - state->pollable_handle_ = INVALID_POLLABLE_HANDLE; -} - -static const char *http_method_names[9] = {"GET", "HEAD", "POST", "PUT", "DELETE", - "CONNECT", "OPTIONS", "TRACE", "PATCH"}; - -wasi_http_0_2_0_rc_2023_12_05_types_method_t http_method_to_host(string_view method_str) { - - if (method_str.empty()) { - return wasi_http_0_2_0_rc_2023_12_05_types_method_t{ - WASI_HTTP_0_2_0_RC_2023_12_05_TYPES_METHOD_GET}; - } - - auto method = method_str.begin(); - for (uint8_t i = 0; i < WASI_HTTP_0_2_0_RC_2023_12_05_TYPES_METHOD_OTHER; i++) { - auto name = http_method_names[i]; - if (strcasecmp(method, name) == 0) { - return wasi_http_0_2_0_rc_2023_12_05_types_method_t{i}; - } - } - - auto val = bindings_string_t{reinterpret_cast(const_cast(method)), - method_str.length()}; - return wasi_http_0_2_0_rc_2023_12_05_types_method_t{ - WASI_HTTP_0_2_0_RC_2023_12_05_TYPES_METHOD_OTHER, {val}}; -} - -HttpOutgoingRequest::HttpOutgoingRequest(HandleState *state) { this->handle_state_ = state; } - -HttpOutgoingRequest *HttpOutgoingRequest::make(string_view method_str, optional url_str, - HttpHeaders *headers) { - bindings_string_t path_with_query; - wasi_http_0_2_0_rc_2023_12_05_types_scheme_t scheme; - bindings_string_t authority; - - bindings_string_t *maybe_path_with_query = nullptr; - wasi_http_0_2_0_rc_2023_12_05_types_scheme_t *maybe_scheme = nullptr; - bindings_string_t *maybe_authority = nullptr; - - if (url_str) { - jsurl::SpecString val = url_str.value(); - jsurl::JSUrl *url = new_jsurl(&val); - jsurl::SpecSlice protocol = jsurl::protocol(url); - if (std::memcmp(protocol.data, "http:", protocol.len) == 0) { - scheme.tag = WASI_HTTP_0_2_0_RC_2023_12_05_TYPES_SCHEME_HTTP; - } else if (std::memcmp(protocol.data, "https:", protocol.len) == 0) { - scheme.tag = WASI_HTTP_0_2_0_RC_2023_12_05_TYPES_SCHEME_HTTPS; - } else { - scheme.tag = WASI_HTTP_0_2_0_RC_2023_12_05_TYPES_SCHEME_OTHER; - scheme.val = {const_cast(protocol.data), protocol.len - 1}; - } - maybe_scheme = &scheme; - - jsurl::SpecSlice authority_slice = jsurl::authority(url); - authority = {const_cast(authority_slice.data), authority_slice.len}; - maybe_authority = &authority; - - jsurl::SpecSlice path_with_query_slice = jsurl::path_with_query(url); - path_with_query = {const_cast(path_with_query_slice.data), - path_with_query_slice.len}; - maybe_path_with_query = &path_with_query; - } - - auto handle = wasi_http_0_2_0_rc_2023_12_05_types_constructor_outgoing_request( - {headers->handle_state_->handle}); - { - auto borrow = wasi_http_0_2_0_rc_2023_12_05_types_borrow_outgoing_request(handle); - - // TODO: error handling on result - auto method = http_method_to_host(method_str); - wasi_http_0_2_0_rc_2023_12_05_types_method_outgoing_request_set_method(borrow, &method); - - // TODO: error handling on result - wasi_http_0_2_0_rc_2023_12_05_types_method_outgoing_request_set_scheme(borrow, maybe_scheme); - - // TODO: error handling on result - wasi_http_0_2_0_rc_2023_12_05_types_method_outgoing_request_set_authority(borrow, - maybe_authority); - - // TODO: error handling on result - wasi_http_0_2_0_rc_2023_12_05_types_method_outgoing_request_set_path_with_query( - borrow, maybe_path_with_query); - } - - auto *state = new HandleState(handle.__handle); - auto *resp = new HttpOutgoingRequest(state); - - resp->headers_ = headers; - - return resp; -} - -Result HttpOutgoingRequest::method() { - MOZ_ASSERT(valid()); - MOZ_ASSERT(headers_); - return Result::ok(method_); -} - -Result HttpOutgoingRequest::headers() { - MOZ_ASSERT(valid()); - MOZ_ASSERT(headers_); - return Result::ok(headers_); -} - -Result HttpOutgoingRequest::body() { - typedef Result Res; - MOZ_ASSERT(valid()); - if (!this->body_) { - outgoing_body_t body; - if (!wasi_http_0_2_0_rc_2023_12_05_types_method_outgoing_request_body( - wasi_http_0_2_0_rc_2023_12_05_types_borrow_outgoing_request({handle_state_->handle}), - &body)) { - return Res::err(154); - } - this->body_ = new HttpOutgoingBody(body.__handle); - } - return Res::ok(body_); -} - -Result HttpOutgoingRequest::send() { - MOZ_ASSERT(valid()); - future_incoming_response_t ret; - wasi_http_0_2_0_rc_2023_12_05_outgoing_handler_error_code_t err; - wasi_http_0_2_0_rc_2023_12_05_outgoing_handler_handle({handle_state_->handle}, nullptr, &ret, - &err); - auto res = new FutureHttpIncomingResponse(ret.__handle); - return Result::ok(res); -} - -class IncomingBodyHandleState final : HandleState { - Handle stream_handle_; - PollableHandle pollable_handle_; - - friend HttpIncomingBody; - -public: - explicit IncomingBodyHandleState(const Handle handle) - : HandleState(handle), pollable_handle_(INVALID_POLLABLE_HANDLE) { - const borrow_incoming_body_t borrow = {handle}; - own_input_stream_t stream{}; - if (!wasi_http_0_2_0_rc_2023_12_05_types_method_incoming_body_stream(borrow, &stream)) { - MOZ_ASSERT_UNREACHABLE("Getting a body's stream should never fail"); - } - stream_handle_ = stream.__handle; - } -}; - -HttpIncomingBody::HttpIncomingBody(const Handle handle) : Pollable() { - handle_state_ = new IncomingBodyHandleState(handle); -} - -Result HttpIncomingBody::read(uint32_t chunk_size) { - typedef Result Res; - - bindings_list_u8_t ret{}; - wasi_io_0_2_0_rc_2023_11_10_streams_stream_error_t err{}; - auto borrow = borrow_input_stream_t( - {static_cast(handle_state_)->stream_handle_}); - bool success = - wasi_io_0_2_0_rc_2023_11_10_streams_method_input_stream_read(borrow, chunk_size, &ret, &err); - if (!success) { - if (err.tag == WASI_IO_0_2_0_RC_2023_11_10_STREAMS_STREAM_ERROR_CLOSED) { - return Res::ok(ReadResult(true, nullptr, 0)); - } - return Res::err(154); - } - return Res::ok(ReadResult(false, unique_ptr(ret.ptr), ret.len)); -} - -// TODO: implement -Result HttpIncomingBody::close() { return {}; } - -Result HttpIncomingBody::subscribe() { - auto borrow = borrow_input_stream_t( - {static_cast(handle_state_)->stream_handle_}); - auto pollable = wasi_io_0_2_0_rc_2023_11_10_streams_method_input_stream_subscribe(borrow); - return Result::ok(pollable.__handle); -} -void HttpIncomingBody::unsubscribe() { - auto state = static_cast(handle_state_); - if (state->pollable_handle_ == INVALID_POLLABLE_HANDLE) { - return; - } - wasi_io_0_2_0_rc_2023_11_10_poll_pollable_drop_own(own_pollable_t{state->pollable_handle_}); - state->pollable_handle_ = INVALID_POLLABLE_HANDLE; -} - -FutureHttpIncomingResponse::FutureHttpIncomingResponse(Handle handle) { - handle_state_ = new HandleState(handle); -} - -Result> FutureHttpIncomingResponse::maybe_response() { - typedef Result> Res; - wasi_http_0_2_0_rc_2023_12_05_types_result_result_own_incoming_response_error_code_void_t res; - auto borrow = - wasi_http_0_2_0_rc_2023_12_05_types_borrow_future_incoming_response({handle_state_->handle}); - if (!wasi_http_0_2_0_rc_2023_12_05_types_method_future_incoming_response_get(borrow, &res)) { - return Res::ok(std::nullopt); - } - - MOZ_ASSERT(!res.is_err, - "FutureHttpIncomingResponse::poll must not be called again after succeeding once"); - - auto [is_err, val] = res.val.ok; - if (is_err) { - return Res::err(154); - } - - return Res::ok(new HttpIncomingResponse(val.ok.__handle)); -} - -Result FutureHttpIncomingResponse::subscribe() { - auto borrow = - wasi_http_0_2_0_rc_2023_12_05_types_borrow_future_incoming_response({handle_state_->handle}); - auto pollable = - wasi_http_0_2_0_rc_2023_12_05_types_method_future_incoming_response_subscribe(borrow); - return Result::ok(pollable.__handle); -} -void FutureHttpIncomingResponse::unsubscribe() { - // TODO: implement -} - -Result HttpIncomingResponse::status() { - if (status_ == UNSET_STATUS) { - if (!valid()) { - return Result::err(154); - } - auto borrow = - wasi_http_0_2_0_rc_2023_12_05_types_borrow_incoming_response_t({handle_state_->handle}); - status_ = wasi_http_0_2_0_rc_2023_12_05_types_method_incoming_response_status(borrow); - } - return Result::ok(status_); -} - -HttpIncomingResponse::HttpIncomingResponse(Handle handle) { - handle_state_ = new HandleState(handle); -} - -Result HttpIncomingResponse::headers() { - if (!headers_) { - if (!valid()) { - return Result::err(154); - } - auto res = wasi_http_0_2_0_rc_2023_12_05_types_method_incoming_response_headers( - wasi_http_0_2_0_rc_2023_12_05_types_borrow_incoming_response({handle_state_->handle})); - headers_ = new HttpHeaders(res.__handle); - } - - return Result::ok(headers_); -} - -Result HttpIncomingResponse::body() { - if (!body_) { - if (!valid()) { - return Result::err(154); - } - incoming_body_t body; - if (!wasi_http_0_2_0_rc_2023_12_05_types_method_incoming_response_consume( - wasi_http_0_2_0_rc_2023_12_05_types_borrow_incoming_response({handle_state_->handle}), - &body)) { - return Result::err(154); - } - body_ = new HttpIncomingBody(body.__handle); - } - return Result::ok(body_); -} - -HttpOutgoingResponse::HttpOutgoingResponse(HandleState *state) { this->handle_state_ = state; } - -HttpOutgoingResponse *HttpOutgoingResponse::make(const uint16_t status, HttpHeaders *headers) { - wasi_http_0_2_0_rc_2023_12_05_types_own_headers_t owned{headers->handle_state_->handle}; - auto handle = wasi_http_0_2_0_rc_2023_12_05_types_constructor_outgoing_response(owned); - auto borrow = wasi_http_0_2_0_rc_2023_12_05_types_borrow_outgoing_response(handle); - - auto *state = new HandleState(handle.__handle); - auto *resp = new HttpOutgoingResponse(state); - - // Set the status - if (status != 200) { - // TODO: handle success result - wasi_http_0_2_0_rc_2023_12_05_types_method_outgoing_response_set_status_code(borrow, status); - } - - // Freshen the headers handle to point to an immutable version of the outgoing headers. - headers->handle_state_->handle = - wasi_http_0_2_0_rc_2023_12_05_types_method_outgoing_response_headers(borrow).__handle; - - resp->status_ = status; - resp->headers_ = headers; - - return resp; -} - -Result HttpOutgoingResponse::headers() { - if (!valid()) { - return Result::err(154); - } - return Result::ok(headers_); -} - -Result HttpOutgoingResponse::body() { - typedef Result Res; - MOZ_ASSERT(valid()); - if (!this->body_) { - outgoing_body_t body; - if (!wasi_http_0_2_0_rc_2023_12_05_types_method_outgoing_response_body( - wasi_http_0_2_0_rc_2023_12_05_types_borrow_outgoing_response({handle_state_->handle}), - &body)) { - return Res::err(154); - } - this->body_ = new HttpOutgoingBody(body.__handle); - } - return Res::ok(this->body_); -} -Result HttpOutgoingResponse::status() { return Result::ok(status_); } - -Result HttpOutgoingResponse::send(ResponseOutparam out_param) { - // Drop the headers that we eagerly grab in the factory function - wasi_http_0_2_0_rc_2023_12_05_types_fields_drop_own({this->headers_->handle_state_->handle}); - - wasi_http_0_2_0_rc_2023_12_05_types_result_own_outgoing_response_error_code_t result; - - result.is_err = false; - result.val.ok = {this->handle_state_->handle}; - - wasi_http_0_2_0_rc_2023_12_05_types_static_response_outparam_set({out_param}, &result); - - return {}; -} - -HttpIncomingRequest::HttpIncomingRequest(Handle handle) { handle_state_ = new HandleState(handle); } - -Result HttpIncomingRequest::method() { - if (method_.empty()) { - if (!valid()) { - return Result::err(154); - } - } - wasi_http_0_2_0_rc_2023_12_05_types_method_t method; - wasi_http_0_2_0_rc_2023_12_05_types_method_incoming_request_method( - borrow_incoming_request_t(handle_state_->handle), &method); - if (method.tag != WASI_HTTP_0_2_0_RC_2023_12_05_TYPES_METHOD_OTHER) { - method_ = std::string(http_method_names[method.tag], strlen(http_method_names[method.tag])); - } else { - method_ = std::string(reinterpret_cast(method.val.other.ptr), method.val.other.len); - bindings_string_free(&method.val.other); - } - return Result::ok(method_); -} - -Result HttpIncomingRequest::headers() { - if (!headers_) { - if (!valid()) { - return Result::err(154); - } - borrow_incoming_request_t borrow(handle_state_->handle); - auto res = wasi_http_0_2_0_rc_2023_12_05_types_method_incoming_request_headers(borrow); - headers_ = new HttpHeaders(res.__handle); - } - - return Result::ok(headers_); -} - -Result HttpIncomingRequest::body() { - if (!body_) { - if (!valid()) { - return Result::err(154); - } - incoming_body_t body; - if (!wasi_http_0_2_0_rc_2023_12_05_types_method_incoming_request_consume( - borrow_incoming_request_t(handle_state_->handle), &body)) { - return Result::err(154); - } - body_ = new HttpIncomingBody(body.__handle); - } - return Result::ok(body_); -} - -} // namespace host_api diff --git a/host-apis/wasi-0.2.0-rc-2023-12-05/host_call.cpp b/host-apis/wasi-0.2.0-rc-2023-12-05/host_call.cpp deleted file mode 100644 index b4536140..00000000 --- a/host-apis/wasi-0.2.0-rc-2023-12-05/host_call.cpp +++ /dev/null @@ -1,11 +0,0 @@ -#include "host_api.h" - -namespace host_api { - -/* Returns false if an exception is set on `cx` and the caller should - immediately return to propagate the exception. */ -void handle_api_error(JSContext *cx, uint8_t err, int line, const char *func) { - JS_ReportErrorUTF8(cx, "%s: An error occurred while using the host API.\n", func); -} - -} // namespace host_api diff --git a/host-apis/wasi-0.2.0-rc-2023-12-05/include/exports.h b/host-apis/wasi-0.2.0-rc-2023-12-05/include/exports.h deleted file mode 100644 index 90a9b105..00000000 --- a/host-apis/wasi-0.2.0-rc-2023-12-05/include/exports.h +++ /dev/null @@ -1,13 +0,0 @@ -#ifndef WASI_PREVIEW2_EXPORTS -#define WASI_PREVIEW2_EXPORTS - -#define exports_wasi_http_incoming_handler \ - exports_wasi_http_0_2_0_rc_2023_12_05_incoming_handler_handle -#define exports_wasi_http_incoming_request \ - exports_wasi_http_0_2_0_rc_2023_12_05_incoming_handler_own_incoming_request_t -#define exports_wasi_http_response_outparam \ - exports_wasi_http_0_2_0_rc_2023_12_05_incoming_handler_own_response_outparam_t - -#define exports_wasi_cli_run_run exports_wasi_cli_0_2_0_rc_2023_12_05_run_run - -#endif diff --git a/host-apis/wasi-0.2.0-rc-2023-12-05/preview1-adapter-debug/wasi_snapshot_preview1.wasm b/host-apis/wasi-0.2.0-rc-2023-12-05/preview1-adapter-debug/wasi_snapshot_preview1.wasm deleted file mode 100755 index 1cf881e6..00000000 Binary files a/host-apis/wasi-0.2.0-rc-2023-12-05/preview1-adapter-debug/wasi_snapshot_preview1.wasm and /dev/null differ diff --git a/host-apis/wasi-0.2.0-rc-2023-12-05/preview1-adapter-release/wasi_snapshot_preview1.wasm b/host-apis/wasi-0.2.0-rc-2023-12-05/preview1-adapter-release/wasi_snapshot_preview1.wasm deleted file mode 100755 index f74b47c3..00000000 Binary files a/host-apis/wasi-0.2.0-rc-2023-12-05/preview1-adapter-release/wasi_snapshot_preview1.wasm and /dev/null differ diff --git a/host-apis/wasi-0.2.0-rc-2023-12-05/wit/command-extended.wit b/host-apis/wasi-0.2.0-rc-2023-12-05/wit/command-extended.wit deleted file mode 100644 index 16f01bc2..00000000 --- a/host-apis/wasi-0.2.0-rc-2023-12-05/wit/command-extended.wit +++ /dev/null @@ -1,6 +0,0 @@ -// All of the same imports and exports available in the wasi:cli/command world -// with addition of HTTP proxy related imports: -world command-extended { - include wasi:cli/command@0.2.0-rc-2023-12-05; - import wasi:http/outgoing-handler@0.2.0-rc-2023-12-05; -} diff --git a/host-apis/wasi-0.2.0-rc-2023-12-05/wit/deps/cli/command.wit b/host-apis/wasi-0.2.0-rc-2023-12-05/wit/deps/cli/command.wit deleted file mode 100644 index cc82ae5d..00000000 --- a/host-apis/wasi-0.2.0-rc-2023-12-05/wit/deps/cli/command.wit +++ /dev/null @@ -1,7 +0,0 @@ -package wasi:cli@0.2.0-rc-2023-12-05; - -world command { - include imports; - - export run; -} diff --git a/host-apis/wasi-0.2.0-rc-2023-12-05/wit/deps/cli/environment.wit b/host-apis/wasi-0.2.0-rc-2023-12-05/wit/deps/cli/environment.wit deleted file mode 100644 index 70065233..00000000 --- a/host-apis/wasi-0.2.0-rc-2023-12-05/wit/deps/cli/environment.wit +++ /dev/null @@ -1,18 +0,0 @@ -interface environment { - /// Get the POSIX-style environment variables. - /// - /// Each environment variable is provided as a pair of string variable names - /// and string value. - /// - /// Morally, these are a value import, but until value imports are available - /// in the component model, this import function should return the same - /// values each time it is called. - get-environment: func() -> list>; - - /// Get the POSIX-style arguments to the program. - get-arguments: func() -> list; - - /// Return a path that programs should use as their initial current working - /// directory, interpreting `.` as shorthand for this. - initial-cwd: func() -> option; -} diff --git a/host-apis/wasi-0.2.0-rc-2023-12-05/wit/deps/cli/exit.wit b/host-apis/wasi-0.2.0-rc-2023-12-05/wit/deps/cli/exit.wit deleted file mode 100644 index d0c2b82a..00000000 --- a/host-apis/wasi-0.2.0-rc-2023-12-05/wit/deps/cli/exit.wit +++ /dev/null @@ -1,4 +0,0 @@ -interface exit { - /// Exit the current instance and any linked instances. - exit: func(status: result); -} diff --git a/host-apis/wasi-0.2.0-rc-2023-12-05/wit/deps/cli/imports.wit b/host-apis/wasi-0.2.0-rc-2023-12-05/wit/deps/cli/imports.wit deleted file mode 100644 index 9965ea35..00000000 --- a/host-apis/wasi-0.2.0-rc-2023-12-05/wit/deps/cli/imports.wit +++ /dev/null @@ -1,20 +0,0 @@ -package wasi:cli@0.2.0-rc-2023-12-05; - -world imports { - include wasi:clocks/imports@0.2.0-rc-2023-11-10; - include wasi:filesystem/imports@0.2.0-rc-2023-11-10; - include wasi:sockets/imports@0.2.0-rc-2023-11-10; - include wasi:random/imports@0.2.0-rc-2023-11-10; - include wasi:io/imports@0.2.0-rc-2023-11-10; - - import environment; - import exit; - import stdin; - import stdout; - import stderr; - import terminal-input; - import terminal-output; - import terminal-stdin; - import terminal-stdout; - import terminal-stderr; -} diff --git a/host-apis/wasi-0.2.0-rc-2023-12-05/wit/deps/cli/run.wit b/host-apis/wasi-0.2.0-rc-2023-12-05/wit/deps/cli/run.wit deleted file mode 100644 index a70ee8c0..00000000 --- a/host-apis/wasi-0.2.0-rc-2023-12-05/wit/deps/cli/run.wit +++ /dev/null @@ -1,4 +0,0 @@ -interface run { - /// Run the program. - run: func() -> result; -} diff --git a/host-apis/wasi-0.2.0-rc-2023-12-05/wit/deps/cli/stdio.wit b/host-apis/wasi-0.2.0-rc-2023-12-05/wit/deps/cli/stdio.wit deleted file mode 100644 index 1b653b6e..00000000 --- a/host-apis/wasi-0.2.0-rc-2023-12-05/wit/deps/cli/stdio.wit +++ /dev/null @@ -1,17 +0,0 @@ -interface stdin { - use wasi:io/streams@0.2.0-rc-2023-11-10.{input-stream}; - - get-stdin: func() -> input-stream; -} - -interface stdout { - use wasi:io/streams@0.2.0-rc-2023-11-10.{output-stream}; - - get-stdout: func() -> output-stream; -} - -interface stderr { - use wasi:io/streams@0.2.0-rc-2023-11-10.{output-stream}; - - get-stderr: func() -> output-stream; -} diff --git a/host-apis/wasi-0.2.0-rc-2023-12-05/wit/deps/cli/terminal.wit b/host-apis/wasi-0.2.0-rc-2023-12-05/wit/deps/cli/terminal.wit deleted file mode 100644 index 47495769..00000000 --- a/host-apis/wasi-0.2.0-rc-2023-12-05/wit/deps/cli/terminal.wit +++ /dev/null @@ -1,47 +0,0 @@ -interface terminal-input { - /// The input side of a terminal. - resource terminal-input; - - // In the future, this may include functions for disabling echoing, - // disabling input buffering so that keyboard events are sent through - // immediately, querying supported features, and so on. -} - -interface terminal-output { - /// The output side of a terminal. - resource terminal-output; - - // In the future, this may include functions for querying the terminal - // size, being notified of terminal size changes, querying supported - // features, and so on. -} - -/// An interface providing an optional `terminal-input` for stdin as a -/// link-time authority. -interface terminal-stdin { - use terminal-input.{terminal-input}; - - /// If stdin is connected to a terminal, return a `terminal-input` handle - /// allowing further interaction with it. - get-terminal-stdin: func() -> option; -} - -/// An interface providing an optional `terminal-output` for stdout as a -/// link-time authority. -interface terminal-stdout { - use terminal-output.{terminal-output}; - - /// If stdout is connected to a terminal, return a `terminal-output` handle - /// allowing further interaction with it. - get-terminal-stdout: func() -> option; -} - -/// An interface providing an optional `terminal-output` for stderr as a -/// link-time authority. -interface terminal-stderr { - use terminal-output.{terminal-output}; - - /// If stderr is connected to a terminal, return a `terminal-output` handle - /// allowing further interaction with it. - get-terminal-stderr: func() -> option; -} diff --git a/host-apis/wasi-0.2.0-rc-2023-12-05/wit/deps/clocks/monotonic-clock.wit b/host-apis/wasi-0.2.0-rc-2023-12-05/wit/deps/clocks/monotonic-clock.wit deleted file mode 100644 index 09ef32c3..00000000 --- a/host-apis/wasi-0.2.0-rc-2023-12-05/wit/deps/clocks/monotonic-clock.wit +++ /dev/null @@ -1,45 +0,0 @@ -package wasi:clocks@0.2.0-rc-2023-11-10; -/// WASI Monotonic Clock is a clock API intended to let users measure elapsed -/// time. -/// -/// It is intended to be portable at least between Unix-family platforms and -/// Windows. -/// -/// A monotonic clock is a clock which has an unspecified initial value, and -/// successive reads of the clock will produce non-decreasing values. -/// -/// It is intended for measuring elapsed time. -interface monotonic-clock { - use wasi:io/poll@0.2.0-rc-2023-11-10.{pollable}; - - /// An instant in time, in nanoseconds. An instant is relative to an - /// unspecified initial value, and can only be compared to instances from - /// the same monotonic-clock. - type instant = u64; - - /// A duration of time, in nanoseconds. - type duration = u64; - - /// Read the current value of the clock. - /// - /// The clock is monotonic, therefore calling this function repeatedly will - /// produce a sequence of non-decreasing values. - now: func() -> instant; - - /// Query the resolution of the clock. Returns the duration of time - /// corresponding to a clock tick. - resolution: func() -> duration; - - /// Create a `pollable` which will resolve once the specified instant - /// occured. - subscribe-instant: func( - when: instant, - ) -> pollable; - - /// Create a `pollable` which will resolve once the given duration has - /// elapsed, starting at the time at which this function was called. - /// occured. - subscribe-duration: func( - when: duration, - ) -> pollable; -} diff --git a/host-apis/wasi-0.2.0-rc-2023-12-05/wit/deps/clocks/wall-clock.wit b/host-apis/wasi-0.2.0-rc-2023-12-05/wit/deps/clocks/wall-clock.wit deleted file mode 100644 index 8abb9a0c..00000000 --- a/host-apis/wasi-0.2.0-rc-2023-12-05/wit/deps/clocks/wall-clock.wit +++ /dev/null @@ -1,42 +0,0 @@ -package wasi:clocks@0.2.0-rc-2023-11-10; -/// WASI Wall Clock is a clock API intended to let users query the current -/// time. The name "wall" makes an analogy to a "clock on the wall", which -/// is not necessarily monotonic as it may be reset. -/// -/// It is intended to be portable at least between Unix-family platforms and -/// Windows. -/// -/// A wall clock is a clock which measures the date and time according to -/// some external reference. -/// -/// External references may be reset, so this clock is not necessarily -/// monotonic, making it unsuitable for measuring elapsed time. -/// -/// It is intended for reporting the current date and time for humans. -interface wall-clock { - /// A time and date in seconds plus nanoseconds. - record datetime { - seconds: u64, - nanoseconds: u32, - } - - /// Read the current value of the clock. - /// - /// This clock is not monotonic, therefore calling this function repeatedly - /// will not necessarily produce a sequence of non-decreasing values. - /// - /// The returned timestamps represent the number of seconds since - /// 1970-01-01T00:00:00Z, also known as [POSIX's Seconds Since the Epoch], - /// also known as [Unix Time]. - /// - /// The nanoseconds field of the output is always less than 1000000000. - /// - /// [POSIX's Seconds Since the Epoch]: https://pubs.opengroup.org/onlinepubs/9699919799/xrat/V4_xbd_chap04.html#tag_21_04_16 - /// [Unix Time]: https://en.wikipedia.org/wiki/Unix_time - now: func() -> datetime; - - /// Query the resolution of the clock. - /// - /// The nanoseconds field of the output is always less than 1000000000. - resolution: func() -> datetime; -} diff --git a/host-apis/wasi-0.2.0-rc-2023-12-05/wit/deps/clocks/world.wit b/host-apis/wasi-0.2.0-rc-2023-12-05/wit/deps/clocks/world.wit deleted file mode 100644 index 8fa080f0..00000000 --- a/host-apis/wasi-0.2.0-rc-2023-12-05/wit/deps/clocks/world.wit +++ /dev/null @@ -1,6 +0,0 @@ -package wasi:clocks@0.2.0-rc-2023-11-10; - -world imports { - import monotonic-clock; - import wall-clock; -} diff --git a/host-apis/wasi-0.2.0-rc-2023-12-05/wit/deps/filesystem/preopens.wit b/host-apis/wasi-0.2.0-rc-2023-12-05/wit/deps/filesystem/preopens.wit deleted file mode 100644 index 95ec6784..00000000 --- a/host-apis/wasi-0.2.0-rc-2023-12-05/wit/deps/filesystem/preopens.wit +++ /dev/null @@ -1,8 +0,0 @@ -package wasi:filesystem@0.2.0-rc-2023-11-10; - -interface preopens { - use types.{descriptor}; - - /// Return the set of preopened directories, and their path. - get-directories: func() -> list>; -} diff --git a/host-apis/wasi-0.2.0-rc-2023-12-05/wit/deps/filesystem/types.wit b/host-apis/wasi-0.2.0-rc-2023-12-05/wit/deps/filesystem/types.wit deleted file mode 100644 index 059722ab..00000000 --- a/host-apis/wasi-0.2.0-rc-2023-12-05/wit/deps/filesystem/types.wit +++ /dev/null @@ -1,634 +0,0 @@ -package wasi:filesystem@0.2.0-rc-2023-11-10; -/// WASI filesystem is a filesystem API primarily intended to let users run WASI -/// programs that access their files on their existing filesystems, without -/// significant overhead. -/// -/// It is intended to be roughly portable between Unix-family platforms and -/// Windows, though it does not hide many of the major differences. -/// -/// Paths are passed as interface-type `string`s, meaning they must consist of -/// a sequence of Unicode Scalar Values (USVs). Some filesystems may contain -/// paths which are not accessible by this API. -/// -/// The directory separator in WASI is always the forward-slash (`/`). -/// -/// All paths in WASI are relative paths, and are interpreted relative to a -/// `descriptor` referring to a base directory. If a `path` argument to any WASI -/// function starts with `/`, or if any step of resolving a `path`, including -/// `..` and symbolic link steps, reaches a directory outside of the base -/// directory, or reaches a symlink to an absolute or rooted path in the -/// underlying filesystem, the function fails with `error-code::not-permitted`. -/// -/// For more information about WASI path resolution and sandboxing, see -/// [WASI filesystem path resolution]. -/// -/// [WASI filesystem path resolution]: https://github.com/WebAssembly/wasi-filesystem/blob/main/path-resolution.md -interface types { - use wasi:io/streams@0.2.0-rc-2023-11-10.{input-stream, output-stream, error}; - use wasi:clocks/wall-clock@0.2.0-rc-2023-11-10.{datetime}; - - /// File size or length of a region within a file. - type filesize = u64; - - /// The type of a filesystem object referenced by a descriptor. - /// - /// Note: This was called `filetype` in earlier versions of WASI. - enum descriptor-type { - /// The type of the descriptor or file is unknown or is different from - /// any of the other types specified. - unknown, - /// The descriptor refers to a block device inode. - block-device, - /// The descriptor refers to a character device inode. - character-device, - /// The descriptor refers to a directory inode. - directory, - /// The descriptor refers to a named pipe. - fifo, - /// The file refers to a symbolic link inode. - symbolic-link, - /// The descriptor refers to a regular file inode. - regular-file, - /// The descriptor refers to a socket. - socket, - } - - /// Descriptor flags. - /// - /// Note: This was called `fdflags` in earlier versions of WASI. - flags descriptor-flags { - /// Read mode: Data can be read. - read, - /// Write mode: Data can be written to. - write, - /// Request that writes be performed according to synchronized I/O file - /// integrity completion. The data stored in the file and the file's - /// metadata are synchronized. This is similar to `O_SYNC` in POSIX. - /// - /// The precise semantics of this operation have not yet been defined for - /// WASI. At this time, it should be interpreted as a request, and not a - /// requirement. - file-integrity-sync, - /// Request that writes be performed according to synchronized I/O data - /// integrity completion. Only the data stored in the file is - /// synchronized. This is similar to `O_DSYNC` in POSIX. - /// - /// The precise semantics of this operation have not yet been defined for - /// WASI. At this time, it should be interpreted as a request, and not a - /// requirement. - data-integrity-sync, - /// Requests that reads be performed at the same level of integrety - /// requested for writes. This is similar to `O_RSYNC` in POSIX. - /// - /// The precise semantics of this operation have not yet been defined for - /// WASI. At this time, it should be interpreted as a request, and not a - /// requirement. - requested-write-sync, - /// Mutating directories mode: Directory contents may be mutated. - /// - /// When this flag is unset on a descriptor, operations using the - /// descriptor which would create, rename, delete, modify the data or - /// metadata of filesystem objects, or obtain another handle which - /// would permit any of those, shall fail with `error-code::read-only` if - /// they would otherwise succeed. - /// - /// This may only be set on directories. - mutate-directory, - } - - /// File attributes. - /// - /// Note: This was called `filestat` in earlier versions of WASI. - record descriptor-stat { - /// File type. - %type: descriptor-type, - /// Number of hard links to the file. - link-count: link-count, - /// For regular files, the file size in bytes. For symbolic links, the - /// length in bytes of the pathname contained in the symbolic link. - size: filesize, - /// Last data access timestamp. - /// - /// If the `option` is none, the platform doesn't maintain an access - /// timestamp for this file. - data-access-timestamp: option, - /// Last data modification timestamp. - /// - /// If the `option` is none, the platform doesn't maintain a - /// modification timestamp for this file. - data-modification-timestamp: option, - /// Last file status-change timestamp. - /// - /// If the `option` is none, the platform doesn't maintain a - /// status-change timestamp for this file. - status-change-timestamp: option, - } - - /// Flags determining the method of how paths are resolved. - flags path-flags { - /// As long as the resolved path corresponds to a symbolic link, it is - /// expanded. - symlink-follow, - } - - /// Open flags used by `open-at`. - flags open-flags { - /// Create file if it does not exist, similar to `O_CREAT` in POSIX. - create, - /// Fail if not a directory, similar to `O_DIRECTORY` in POSIX. - directory, - /// Fail if file already exists, similar to `O_EXCL` in POSIX. - exclusive, - /// Truncate file to size 0, similar to `O_TRUNC` in POSIX. - truncate, - } - - /// Number of hard links to an inode. - type link-count = u64; - - /// When setting a timestamp, this gives the value to set it to. - variant new-timestamp { - /// Leave the timestamp set to its previous value. - no-change, - /// Set the timestamp to the current time of the system clock associated - /// with the filesystem. - now, - /// Set the timestamp to the given value. - timestamp(datetime), - } - - /// A directory entry. - record directory-entry { - /// The type of the file referred to by this directory entry. - %type: descriptor-type, - - /// The name of the object. - name: string, - } - - /// Error codes returned by functions, similar to `errno` in POSIX. - /// Not all of these error codes are returned by the functions provided by this - /// API; some are used in higher-level library layers, and others are provided - /// merely for alignment with POSIX. - enum error-code { - /// Permission denied, similar to `EACCES` in POSIX. - access, - /// Resource unavailable, or operation would block, similar to `EAGAIN` and `EWOULDBLOCK` in POSIX. - would-block, - /// Connection already in progress, similar to `EALREADY` in POSIX. - already, - /// Bad descriptor, similar to `EBADF` in POSIX. - bad-descriptor, - /// Device or resource busy, similar to `EBUSY` in POSIX. - busy, - /// Resource deadlock would occur, similar to `EDEADLK` in POSIX. - deadlock, - /// Storage quota exceeded, similar to `EDQUOT` in POSIX. - quota, - /// File exists, similar to `EEXIST` in POSIX. - exist, - /// File too large, similar to `EFBIG` in POSIX. - file-too-large, - /// Illegal byte sequence, similar to `EILSEQ` in POSIX. - illegal-byte-sequence, - /// Operation in progress, similar to `EINPROGRESS` in POSIX. - in-progress, - /// Interrupted function, similar to `EINTR` in POSIX. - interrupted, - /// Invalid argument, similar to `EINVAL` in POSIX. - invalid, - /// I/O error, similar to `EIO` in POSIX. - io, - /// Is a directory, similar to `EISDIR` in POSIX. - is-directory, - /// Too many levels of symbolic links, similar to `ELOOP` in POSIX. - loop, - /// Too many links, similar to `EMLINK` in POSIX. - too-many-links, - /// Message too large, similar to `EMSGSIZE` in POSIX. - message-size, - /// Filename too long, similar to `ENAMETOOLONG` in POSIX. - name-too-long, - /// No such device, similar to `ENODEV` in POSIX. - no-device, - /// No such file or directory, similar to `ENOENT` in POSIX. - no-entry, - /// No locks available, similar to `ENOLCK` in POSIX. - no-lock, - /// Not enough space, similar to `ENOMEM` in POSIX. - insufficient-memory, - /// No space left on device, similar to `ENOSPC` in POSIX. - insufficient-space, - /// Not a directory or a symbolic link to a directory, similar to `ENOTDIR` in POSIX. - not-directory, - /// Directory not empty, similar to `ENOTEMPTY` in POSIX. - not-empty, - /// State not recoverable, similar to `ENOTRECOVERABLE` in POSIX. - not-recoverable, - /// Not supported, similar to `ENOTSUP` and `ENOSYS` in POSIX. - unsupported, - /// Inappropriate I/O control operation, similar to `ENOTTY` in POSIX. - no-tty, - /// No such device or address, similar to `ENXIO` in POSIX. - no-such-device, - /// Value too large to be stored in data type, similar to `EOVERFLOW` in POSIX. - overflow, - /// Operation not permitted, similar to `EPERM` in POSIX. - not-permitted, - /// Broken pipe, similar to `EPIPE` in POSIX. - pipe, - /// Read-only file system, similar to `EROFS` in POSIX. - read-only, - /// Invalid seek, similar to `ESPIPE` in POSIX. - invalid-seek, - /// Text file busy, similar to `ETXTBSY` in POSIX. - text-file-busy, - /// Cross-device link, similar to `EXDEV` in POSIX. - cross-device, - } - - /// File or memory access pattern advisory information. - enum advice { - /// The application has no advice to give on its behavior with respect - /// to the specified data. - normal, - /// The application expects to access the specified data sequentially - /// from lower offsets to higher offsets. - sequential, - /// The application expects to access the specified data in a random - /// order. - random, - /// The application expects to access the specified data in the near - /// future. - will-need, - /// The application expects that it will not access the specified data - /// in the near future. - dont-need, - /// The application expects to access the specified data once and then - /// not reuse it thereafter. - no-reuse, - } - - /// A 128-bit hash value, split into parts because wasm doesn't have a - /// 128-bit integer type. - record metadata-hash-value { - /// 64 bits of a 128-bit hash value. - lower: u64, - /// Another 64 bits of a 128-bit hash value. - upper: u64, - } - - /// A descriptor is a reference to a filesystem object, which may be a file, - /// directory, named pipe, special file, or other object on which filesystem - /// calls may be made. - resource descriptor { - /// Return a stream for reading from a file, if available. - /// - /// May fail with an error-code describing why the file cannot be read. - /// - /// Multiple read, write, and append streams may be active on the same open - /// file and they do not interfere with each other. - /// - /// Note: This allows using `read-stream`, which is similar to `read` in POSIX. - read-via-stream: func( - /// The offset within the file at which to start reading. - offset: filesize, - ) -> result; - - /// Return a stream for writing to a file, if available. - /// - /// May fail with an error-code describing why the file cannot be written. - /// - /// Note: This allows using `write-stream`, which is similar to `write` in - /// POSIX. - write-via-stream: func( - /// The offset within the file at which to start writing. - offset: filesize, - ) -> result; - - /// Return a stream for appending to a file, if available. - /// - /// May fail with an error-code describing why the file cannot be appended. - /// - /// Note: This allows using `write-stream`, which is similar to `write` with - /// `O_APPEND` in in POSIX. - append-via-stream: func() -> result; - - /// Provide file advisory information on a descriptor. - /// - /// This is similar to `posix_fadvise` in POSIX. - advise: func( - /// The offset within the file to which the advisory applies. - offset: filesize, - /// The length of the region to which the advisory applies. - length: filesize, - /// The advice. - advice: advice - ) -> result<_, error-code>; - - /// Synchronize the data of a file to disk. - /// - /// This function succeeds with no effect if the file descriptor is not - /// opened for writing. - /// - /// Note: This is similar to `fdatasync` in POSIX. - sync-data: func() -> result<_, error-code>; - - /// Get flags associated with a descriptor. - /// - /// Note: This returns similar flags to `fcntl(fd, F_GETFL)` in POSIX. - /// - /// Note: This returns the value that was the `fs_flags` value returned - /// from `fdstat_get` in earlier versions of WASI. - get-flags: func() -> result; - - /// Get the dynamic type of a descriptor. - /// - /// Note: This returns the same value as the `type` field of the `fd-stat` - /// returned by `stat`, `stat-at` and similar. - /// - /// Note: This returns similar flags to the `st_mode & S_IFMT` value provided - /// by `fstat` in POSIX. - /// - /// Note: This returns the value that was the `fs_filetype` value returned - /// from `fdstat_get` in earlier versions of WASI. - get-type: func() -> result; - - /// Adjust the size of an open file. If this increases the file's size, the - /// extra bytes are filled with zeros. - /// - /// Note: This was called `fd_filestat_set_size` in earlier versions of WASI. - set-size: func(size: filesize) -> result<_, error-code>; - - /// Adjust the timestamps of an open file or directory. - /// - /// Note: This is similar to `futimens` in POSIX. - /// - /// Note: This was called `fd_filestat_set_times` in earlier versions of WASI. - set-times: func( - /// The desired values of the data access timestamp. - data-access-timestamp: new-timestamp, - /// The desired values of the data modification timestamp. - data-modification-timestamp: new-timestamp, - ) -> result<_, error-code>; - - /// Read from a descriptor, without using and updating the descriptor's offset. - /// - /// This function returns a list of bytes containing the data that was - /// read, along with a bool which, when true, indicates that the end of the - /// file was reached. The returned list will contain up to `length` bytes; it - /// may return fewer than requested, if the end of the file is reached or - /// if the I/O operation is interrupted. - /// - /// In the future, this may change to return a `stream`. - /// - /// Note: This is similar to `pread` in POSIX. - read: func( - /// The maximum number of bytes to read. - length: filesize, - /// The offset within the file at which to read. - offset: filesize, - ) -> result, bool>, error-code>; - - /// Write to a descriptor, without using and updating the descriptor's offset. - /// - /// It is valid to write past the end of a file; the file is extended to the - /// extent of the write, with bytes between the previous end and the start of - /// the write set to zero. - /// - /// In the future, this may change to take a `stream`. - /// - /// Note: This is similar to `pwrite` in POSIX. - write: func( - /// Data to write - buffer: list, - /// The offset within the file at which to write. - offset: filesize, - ) -> result; - - /// Read directory entries from a directory. - /// - /// On filesystems where directories contain entries referring to themselves - /// and their parents, often named `.` and `..` respectively, these entries - /// are omitted. - /// - /// This always returns a new stream which starts at the beginning of the - /// directory. Multiple streams may be active on the same directory, and they - /// do not interfere with each other. - read-directory: func() -> result; - - /// Synchronize the data and metadata of a file to disk. - /// - /// This function succeeds with no effect if the file descriptor is not - /// opened for writing. - /// - /// Note: This is similar to `fsync` in POSIX. - sync: func() -> result<_, error-code>; - - /// Create a directory. - /// - /// Note: This is similar to `mkdirat` in POSIX. - create-directory-at: func( - /// The relative path at which to create the directory. - path: string, - ) -> result<_, error-code>; - - /// Return the attributes of an open file or directory. - /// - /// Note: This is similar to `fstat` in POSIX, except that it does not return - /// device and inode information. For testing whether two descriptors refer to - /// the same underlying filesystem object, use `is-same-object`. To obtain - /// additional data that can be used do determine whether a file has been - /// modified, use `metadata-hash`. - /// - /// Note: This was called `fd_filestat_get` in earlier versions of WASI. - stat: func() -> result; - - /// Return the attributes of a file or directory. - /// - /// Note: This is similar to `fstatat` in POSIX, except that it does not - /// return device and inode information. See the `stat` description for a - /// discussion of alternatives. - /// - /// Note: This was called `path_filestat_get` in earlier versions of WASI. - stat-at: func( - /// Flags determining the method of how the path is resolved. - path-flags: path-flags, - /// The relative path of the file or directory to inspect. - path: string, - ) -> result; - - /// Adjust the timestamps of a file or directory. - /// - /// Note: This is similar to `utimensat` in POSIX. - /// - /// Note: This was called `path_filestat_set_times` in earlier versions of - /// WASI. - set-times-at: func( - /// Flags determining the method of how the path is resolved. - path-flags: path-flags, - /// The relative path of the file or directory to operate on. - path: string, - /// The desired values of the data access timestamp. - data-access-timestamp: new-timestamp, - /// The desired values of the data modification timestamp. - data-modification-timestamp: new-timestamp, - ) -> result<_, error-code>; - - /// Create a hard link. - /// - /// Note: This is similar to `linkat` in POSIX. - link-at: func( - /// Flags determining the method of how the path is resolved. - old-path-flags: path-flags, - /// The relative source path from which to link. - old-path: string, - /// The base directory for `new-path`. - new-descriptor: borrow, - /// The relative destination path at which to create the hard link. - new-path: string, - ) -> result<_, error-code>; - - /// Open a file or directory. - /// - /// The returned descriptor is not guaranteed to be the lowest-numbered - /// descriptor not currently open/ it is randomized to prevent applications - /// from depending on making assumptions about indexes, since this is - /// error-prone in multi-threaded contexts. The returned descriptor is - /// guaranteed to be less than 2**31. - /// - /// If `flags` contains `descriptor-flags::mutate-directory`, and the base - /// descriptor doesn't have `descriptor-flags::mutate-directory` set, - /// `open-at` fails with `error-code::read-only`. - /// - /// If `flags` contains `write` or `mutate-directory`, or `open-flags` - /// contains `truncate` or `create`, and the base descriptor doesn't have - /// `descriptor-flags::mutate-directory` set, `open-at` fails with - /// `error-code::read-only`. - /// - /// Note: This is similar to `openat` in POSIX. - open-at: func( - /// Flags determining the method of how the path is resolved. - path-flags: path-flags, - /// The relative path of the object to open. - path: string, - /// The method by which to open the file. - open-flags: open-flags, - /// Flags to use for the resulting descriptor. - %flags: descriptor-flags, - ) -> result; - - /// Read the contents of a symbolic link. - /// - /// If the contents contain an absolute or rooted path in the underlying - /// filesystem, this function fails with `error-code::not-permitted`. - /// - /// Note: This is similar to `readlinkat` in POSIX. - readlink-at: func( - /// The relative path of the symbolic link from which to read. - path: string, - ) -> result; - - /// Remove a directory. - /// - /// Return `error-code::not-empty` if the directory is not empty. - /// - /// Note: This is similar to `unlinkat(fd, path, AT_REMOVEDIR)` in POSIX. - remove-directory-at: func( - /// The relative path to a directory to remove. - path: string, - ) -> result<_, error-code>; - - /// Rename a filesystem object. - /// - /// Note: This is similar to `renameat` in POSIX. - rename-at: func( - /// The relative source path of the file or directory to rename. - old-path: string, - /// The base directory for `new-path`. - new-descriptor: borrow, - /// The relative destination path to which to rename the file or directory. - new-path: string, - ) -> result<_, error-code>; - - /// Create a symbolic link (also known as a "symlink"). - /// - /// If `old-path` starts with `/`, the function fails with - /// `error-code::not-permitted`. - /// - /// Note: This is similar to `symlinkat` in POSIX. - symlink-at: func( - /// The contents of the symbolic link. - old-path: string, - /// The relative destination path at which to create the symbolic link. - new-path: string, - ) -> result<_, error-code>; - - /// Unlink a filesystem object that is not a directory. - /// - /// Return `error-code::is-directory` if the path refers to a directory. - /// Note: This is similar to `unlinkat(fd, path, 0)` in POSIX. - unlink-file-at: func( - /// The relative path to a file to unlink. - path: string, - ) -> result<_, error-code>; - - /// Test whether two descriptors refer to the same filesystem object. - /// - /// In POSIX, this corresponds to testing whether the two descriptors have the - /// same device (`st_dev`) and inode (`st_ino` or `d_ino`) numbers. - /// wasi-filesystem does not expose device and inode numbers, so this function - /// may be used instead. - is-same-object: func(other: borrow) -> bool; - - /// Return a hash of the metadata associated with a filesystem object referred - /// to by a descriptor. - /// - /// This returns a hash of the last-modification timestamp and file size, and - /// may also include the inode number, device number, birth timestamp, and - /// other metadata fields that may change when the file is modified or - /// replaced. It may also include a secret value chosen by the - /// implementation and not otherwise exposed. - /// - /// Implementations are encourated to provide the following properties: - /// - /// - If the file is not modified or replaced, the computed hash value should - /// usually not change. - /// - If the object is modified or replaced, the computed hash value should - /// usually change. - /// - The inputs to the hash should not be easily computable from the - /// computed hash. - /// - /// However, none of these is required. - metadata-hash: func() -> result; - - /// Return a hash of the metadata associated with a filesystem object referred - /// to by a directory descriptor and a relative path. - /// - /// This performs the same hash computation as `metadata-hash`. - metadata-hash-at: func( - /// Flags determining the method of how the path is resolved. - path-flags: path-flags, - /// The relative path of the file or directory to inspect. - path: string, - ) -> result; - } - - /// A stream of directory entries. - resource directory-entry-stream { - /// Read a single directory entry from a `directory-entry-stream`. - read-directory-entry: func() -> result, error-code>; - } - - /// Attempts to extract a filesystem-related `error-code` from the stream - /// `error` provided. - /// - /// Stream operations which return `stream-error::last-operation-failed` - /// have a payload with more information about the operation that failed. - /// This payload can be passed through to this function to see if there's - /// filesystem-related information about the error to return. - /// - /// Note that this function is fallible because not all stream-related - /// errors are filesystem-related errors. - filesystem-error-code: func(err: borrow) -> option; -} diff --git a/host-apis/wasi-0.2.0-rc-2023-12-05/wit/deps/filesystem/world.wit b/host-apis/wasi-0.2.0-rc-2023-12-05/wit/deps/filesystem/world.wit deleted file mode 100644 index 285e0bae..00000000 --- a/host-apis/wasi-0.2.0-rc-2023-12-05/wit/deps/filesystem/world.wit +++ /dev/null @@ -1,6 +0,0 @@ -package wasi:filesystem@0.2.0-rc-2023-11-10; - -world imports { - import types; - import preopens; -} diff --git a/host-apis/wasi-0.2.0-rc-2023-12-05/wit/deps/http/handler.wit b/host-apis/wasi-0.2.0-rc-2023-12-05/wit/deps/http/handler.wit deleted file mode 100644 index a34a0649..00000000 --- a/host-apis/wasi-0.2.0-rc-2023-12-05/wit/deps/http/handler.wit +++ /dev/null @@ -1,43 +0,0 @@ -/// This interface defines a handler of incoming HTTP Requests. It should -/// be exported by components which can respond to HTTP Requests. -interface incoming-handler { - use types.{incoming-request, response-outparam}; - - /// This function is invoked with an incoming HTTP Request, and a resource - /// `response-outparam` which provides the capability to reply with an HTTP - /// Response. The response is sent by calling the `response-outparam.set` - /// method, which allows execution to continue after the response has been - /// sent. This enables both streaming to the response body, and performing other - /// work. - /// - /// The implementor of this function must write a response to the - /// `response-outparam` before returning, or else the caller will respond - /// with an error on its behalf. - handle: func( - request: incoming-request, - response-out: response-outparam - ); -} - -/// This interface defines a handler of outgoing HTTP Requests. It should be -/// imported by components which wish to make HTTP Requests. -interface outgoing-handler { - use types.{ - outgoing-request, request-options, future-incoming-response, error-code - }; - - /// This function is invoked with an outgoing HTTP Request, and it returns - /// a resource `future-incoming-response` which represents an HTTP Response - /// which may arrive in the future. - /// - /// The `options` argument accepts optional parameters for the HTTP - /// protocol's transport layer. - /// - /// This function may return an error if the `outgoing-request` is invalid - /// or not allowed to be made. Otherwise, protocol errors are reported - /// through the `future-incoming-response`. - handle: func( - request: outgoing-request, - options: option - ) -> result; -} diff --git a/host-apis/wasi-0.2.0-rc-2023-12-05/wit/deps/http/proxy.wit b/host-apis/wasi-0.2.0-rc-2023-12-05/wit/deps/http/proxy.wit deleted file mode 100644 index 0f466c93..00000000 --- a/host-apis/wasi-0.2.0-rc-2023-12-05/wit/deps/http/proxy.wit +++ /dev/null @@ -1,32 +0,0 @@ -package wasi:http@0.2.0-rc-2023-12-05; - -/// The `wasi:http/proxy` world captures a widely-implementable intersection of -/// hosts that includes HTTP forward and reverse proxies. Components targeting -/// this world may concurrently stream in and out any number of incoming and -/// outgoing HTTP requests. -world proxy { - /// HTTP proxies have access to time and randomness. - include wasi:clocks/imports@0.2.0-rc-2023-11-10; - import wasi:random/random@0.2.0-rc-2023-11-10; - - /// Proxies have standard output and error streams which are expected to - /// terminate in a developer-facing console provided by the host. - import wasi:cli/stdout@0.2.0-rc-2023-12-05; - import wasi:cli/stderr@0.2.0-rc-2023-12-05; - - /// TODO: this is a temporary workaround until component tooling is able to - /// gracefully handle the absence of stdin. Hosts must return an eof stream - /// for this import, which is what wasi-libc + tooling will do automatically - /// when this import is properly removed. - import wasi:cli/stdin@0.2.0-rc-2023-12-05; - - /// This is the default handler to use when user code simply wants to make an - /// HTTP request (e.g., via `fetch()`). - import outgoing-handler; - - /// The host delivers incoming HTTP requests to a component by calling the - /// `handle` function of this exported interface. A host may arbitrarily reuse - /// or not reuse component instance when delivering incoming HTTP requests and - /// thus a component must be able to handle 0..N calls to `handle`. - export incoming-handler; -} diff --git a/host-apis/wasi-0.2.0-rc-2023-12-05/wit/deps/http/types.wit b/host-apis/wasi-0.2.0-rc-2023-12-05/wit/deps/http/types.wit deleted file mode 100644 index 0f698e76..00000000 --- a/host-apis/wasi-0.2.0-rc-2023-12-05/wit/deps/http/types.wit +++ /dev/null @@ -1,570 +0,0 @@ -/// This interface defines all of the types and methods for implementing -/// HTTP Requests and Responses, both incoming and outgoing, as well as -/// their headers, trailers, and bodies. -interface types { - use wasi:clocks/monotonic-clock@0.2.0-rc-2023-11-10.{duration}; - use wasi:io/streams@0.2.0-rc-2023-11-10.{input-stream, output-stream}; - use wasi:io/error@0.2.0-rc-2023-11-10.{error as io-error}; - use wasi:io/poll@0.2.0-rc-2023-11-10.{pollable}; - - /// This type corresponds to HTTP standard Methods. - variant method { - get, - head, - post, - put, - delete, - connect, - options, - trace, - patch, - other(string) - } - - /// This type corresponds to HTTP standard Related Schemes. - variant scheme { - HTTP, - HTTPS, - other(string) - } - - /// These cases are inspired by the IANA HTTP Proxy Error Types: - /// https://www.iana.org/assignments/http-proxy-status/http-proxy-status.xhtml#table-http-proxy-error-types - variant error-code { - DNS-timeout, - DNS-error(DNS-error-payload), - destination-not-found, - destination-unavailable, - destination-IP-prohibited, - destination-IP-unroutable, - connection-refused, - connection-terminated, - connection-timeout, - connection-read-timeout, - connection-write-timeout, - connection-limit-reached, - TLS-protocol-error, - TLS-certificate-error, - TLS-alert-received(TLS-alert-received-payload), - HTTP-request-denied, - HTTP-request-length-required, - HTTP-request-body-size(option), - HTTP-request-method-invalid, - HTTP-request-URI-invalid, - HTTP-request-URI-too-long, - HTTP-request-header-section-size(option), - HTTP-request-header-size(option), - HTTP-request-trailer-section-size(option), - HTTP-request-trailer-size(field-size-payload), - HTTP-response-incomplete, - HTTP-response-header-section-size(option), - HTTP-response-header-size(field-size-payload), - HTTP-response-body-size(option), - HTTP-response-trailer-section-size(option), - HTTP-response-trailer-size(field-size-payload), - HTTP-response-transfer-coding(option), - HTTP-response-content-coding(option), - HTTP-response-timeout, - HTTP-upgrade-failed, - HTTP-protocol-error, - loop-detected, - configuration-error, - /// This is a catch-all error for anything that doesn't fit cleanly into a - /// more specific case. It also includes an optional string for an - /// unstructured description of the error. Users should not depend on the - /// string for diagnosing errors, as it's not required to be consistent - /// between implementations. - internal-error(option) - } - - /// Defines the case payload type for `DNS-error` above: - record DNS-error-payload { - rcode: option, - info-code: option - } - - /// Defines the case payload type for `TLS-alert-received` above: - record TLS-alert-received-payload { - alert-id: option, - alert-message: option - } - - /// Defines the case payload type for `HTTP-response-{header,trailer}-size` above: - record field-size-payload { - field-name: option, - field-size: option - } - - /// Attempts to extract a http-related `error` from the wasi:io `error` - /// provided. - /// - /// Stream operations which return - /// `wasi:io/stream/stream-error::last-operation-failed` have a payload of - /// type `wasi:io/error/error` with more information about the operation - /// that failed. This payload can be passed through to this function to see - /// if there's http-related information about the error to return. - /// - /// Note that this function is fallible because not all io-errors are - /// http-related errors. - http-error-code: func(err: borrow) -> option; - - /// This type enumerates the different kinds of errors that may occur when - /// setting or appending to a `fields` resource. - variant header-error { - /// This error indicates that a `field-key` or `field-value` was - /// syntactically invalid when used with an operation that sets headers in a - /// `fields`. - invalid-syntax, - - /// This error indicates that a forbidden `field-key` was used when trying - /// to set a header in a `fields`. - forbidden, - - /// This error indicates that the operation on the `fields` was not - /// permitted because the fields are immutable. - immutable, - } - - /// Field keys are always strings. - type field-key = string; - - /// Field values should always be ASCII strings. However, in - /// reality, HTTP implementations often have to interpret malformed values, - /// so they are provided as a list of bytes. - type field-value = list; - - /// This following block defines the `fields` resource which corresponds to - /// HTTP standard Fields. Fields are a common representation used for both - /// Headers and Trailers. - /// - /// A `fields` may be mutable or immutable. A `fields` created using the - /// constructor, `from-list`, or `clone` will be mutable, but a `fields` - /// resource given by other means (including, but not limited to, - /// `incoming-request.headers`, `outgoing-request.headers`) might be be - /// immutable. In an immutable fields, the `set`, `append`, and `delete` - /// operations will fail with `header-error.immutable`. - resource fields { - - /// Construct an empty HTTP Fields. - /// - /// The resulting `fields` is mutable. - constructor(); - - /// Construct an HTTP Fields. - /// - /// The resulting `fields` is mutable. - /// - /// The list represents each key-value pair in the Fields. Keys - /// which have multiple values are represented by multiple entries in this - /// list with the same key. - /// - /// The tuple is a pair of the field key, represented as a string, and - /// Value, represented as a list of bytes. In a valid Fields, all keys - /// and values are valid UTF-8 strings. However, values are not always - /// well-formed, so they are represented as a raw list of bytes. - /// - /// An error result will be returned if any header or value was - /// syntactically invalid, or if a header was forbidden. - from-list: static func( - entries: list> - ) -> result; - - /// Get all of the values corresponding to a key. If the key is not present - /// in this `fields`, an empty list is returned. However, if the key is - /// present but empty, this is represented by a list with one or more - /// empty field-values present. - get: func(name: field-key) -> list; - - /// Returns `true` when the key is present in this `fields`. If the key is - /// syntactically invalid, `false` is returned. - has: func(name: field-key) -> bool; - - /// Set all of the values for a key. Clears any existing values for that - /// key, if they have been set. - /// - /// Fails with `header-error.immutable` if the `fields` are immutable. - set: func(name: field-key, value: list) -> result<_, header-error>; - - /// Delete all values for a key. Does nothing if no values for the key - /// exist. - /// - /// Fails with `header-error.immutable` if the `fields` are immutable. - delete: func(name: field-key) -> result<_, header-error>; - - /// Append a value for a key. Does not change or delete any existing - /// values for that key. - /// - /// Fails with `header-error.immutable` if the `fields` are immutable. - append: func(name: field-key, value: field-value) -> result<_, header-error>; - - /// Retrieve the full set of keys and values in the Fields. Like the - /// constructor, the list represents each key-value pair. - /// - /// The outer list represents each key-value pair in the Fields. Keys - /// which have multiple values are represented by multiple entries in this - /// list with the same key. - entries: func() -> list>; - - /// Make a deep copy of the Fields. Equivelant in behavior to calling the - /// `fields` constructor on the return value of `entries`. The resulting - /// `fields` is mutable. - clone: func() -> fields; - } - - /// Headers is an alias for Fields. - type headers = fields; - - /// Trailers is an alias for Fields. - type trailers = fields; - - /// Represents an incoming HTTP Request. - resource incoming-request { - - /// Returns the method of the incoming request. - method: func() -> method; - - /// Returns the path with query parameters from the request, as a string. - path-with-query: func() -> option; - - /// Returns the protocol scheme from the request. - scheme: func() -> option; - - /// Returns the authority from the request, if it was present. - authority: func() -> option; - - /// Get the `headers` associated with the request. - /// - /// The returned `headers` resource is immutable: `set`, `append`, and - /// `delete` operations will fail with `header-error.immutable`. - /// - /// The `headers` returned are a child resource: it must be dropped before - /// the parent `incoming-request` is dropped. Dropping this - /// `incoming-request` before all children are dropped will trap. - headers: func() -> headers; - - /// Gives the `incoming-body` associated with this request. Will only - /// return success at most once, and subsequent calls will return error. - consume: func() -> result; - } - - /// Represents an outgoing HTTP Request. - resource outgoing-request { - - /// Construct a new `outgoing-request` with a default `method` of `GET`, and - /// `none` values for `path-with-query`, `scheme`, and `authority`. - /// - /// * `headers` is the HTTP Headers for the Request. - /// - /// It is possible to construct, or manipulate with the accessor functions - /// below, an `outgoing-request` with an invalid combination of `scheme` - /// and `authority`, or `headers` which are not permitted to be sent. - /// It is the obligation of the `outgoing-handler.handle` implementation - /// to reject invalid constructions of `outgoing-request`. - constructor( - headers: headers - ); - - /// Returns the resource corresponding to the outgoing Body for this - /// Request. - /// - /// Returns success on the first call: the `outgoing-body` resource for - /// this `outgoing-request` can be retrieved at most once. Subsequent - /// calls will return error. - body: func() -> result; - - /// Get the Method for the Request. - method: func() -> method; - /// Set the Method for the Request. Fails if the string present in a - /// `method.other` argument is not a syntactically valid method. - set-method: func(method: method) -> result; - - /// Get the combination of the HTTP Path and Query for the Request. - /// When `none`, this represents an empty Path and empty Query. - path-with-query: func() -> option; - /// Set the combination of the HTTP Path and Query for the Request. - /// When `none`, this represents an empty Path and empty Query. Fails is the - /// string given is not a syntactically valid path and query uri component. - set-path-with-query: func(path-with-query: option) -> result; - - /// Get the HTTP Related Scheme for the Request. When `none`, the - /// implementation may choose an appropriate default scheme. - scheme: func() -> option; - /// Set the HTTP Related Scheme for the Request. When `none`, the - /// implementation may choose an appropriate default scheme. Fails if the - /// string given is not a syntactically valid uri scheme. - set-scheme: func(scheme: option) -> result; - - /// Get the HTTP Authority for the Request. A value of `none` may be used - /// with Related Schemes which do not require an Authority. The HTTP and - /// HTTPS schemes always require an authority. - authority: func() -> option; - /// Set the HTTP Authority for the Request. A value of `none` may be used - /// with Related Schemes which do not require an Authority. The HTTP and - /// HTTPS schemes always require an authority. Fails if the string given is - /// not a syntactically valid uri authority. - set-authority: func(authority: option) -> result; - - /// Get the headers associated with the Request. - /// - /// The returned `headers` resource is immutable: `set`, `append`, and - /// `delete` operations will fail with `header-error.immutable`. - /// - /// This headers resource is a child: it must be dropped before the parent - /// `outgoing-request` is dropped, or its ownership is transfered to - /// another component by e.g. `outgoing-handler.handle`. - headers: func() -> headers; - } - - /// Parameters for making an HTTP Request. Each of these parameters is - /// currently an optional timeout applicable to the transport layer of the - /// HTTP protocol. - /// - /// These timeouts are separate from any the user may use to bound a - /// blocking call to `wasi:io/poll.poll`. - resource request-options { - /// Construct a default `request-options` value. - constructor(); - - /// The timeout for the initial connect to the HTTP Server. - connect-timeout: func() -> option; - - /// Set the timeout for the initial connect to the HTTP Server. An error - /// return value indicates that this timeout is not supported. - set-connect-timeout: func(duration: option) -> result; - - /// The timeout for receiving the first byte of the Response body. - first-byte-timeout: func() -> option; - - /// Set the timeout for receiving the first byte of the Response body. An - /// error return value indicates that this timeout is not supported. - set-first-byte-timeout: func(duration: option) -> result; - - /// The timeout for receiving subsequent chunks of bytes in the Response - /// body stream. - between-bytes-timeout: func() -> option; - - /// Set the timeout for receiving subsequent chunks of bytes in the Response - /// body stream. An error return value indicates that this timeout is not - /// supported. - set-between-bytes-timeout: func(duration: option) -> result; - } - - /// Represents the ability to send an HTTP Response. - /// - /// This resource is used by the `wasi:http/incoming-handler` interface to - /// allow a Response to be sent corresponding to the Request provided as the - /// other argument to `incoming-handler.handle`. - resource response-outparam { - - /// Set the value of the `response-outparam` to either send a response, - /// or indicate an error. - /// - /// This method consumes the `response-outparam` to ensure that it is - /// called at most once. If it is never called, the implementation - /// will respond with an error. - /// - /// The user may provide an `error` to `response` to allow the - /// implementation determine how to respond with an HTTP error response. - set: static func( - param: response-outparam, - response: result, - ); - } - - /// This type corresponds to the HTTP standard Status Code. - type status-code = u16; - - /// Represents an incoming HTTP Response. - resource incoming-response { - - /// Returns the status code from the incoming response. - status: func() -> status-code; - - /// Returns the headers from the incoming response. - /// - /// The returned `headers` resource is immutable: `set`, `append`, and - /// `delete` operations will fail with `header-error.immutable`. - /// - /// This headers resource is a child: it must be dropped before the parent - /// `incoming-response` is dropped. - headers: func() -> headers; - - /// Returns the incoming body. May be called at most once. Returns error - /// if called additional times. - consume: func() -> result; - } - - /// Represents an incoming HTTP Request or Response's Body. - /// - /// A body has both its contents - a stream of bytes - and a (possibly - /// empty) set of trailers, indicating that the full contents of the - /// body have been received. This resource represents the contents as - /// an `input-stream` and the delivery of trailers as a `future-trailers`, - /// and ensures that the user of this interface may only be consuming either - /// the body contents or waiting on trailers at any given time. - resource incoming-body { - - /// Returns the contents of the body, as a stream of bytes. - /// - /// Returns success on first call: the stream representing the contents - /// can be retrieved at most once. Subsequent calls will return error. - /// - /// The returned `input-stream` resource is a child: it must be dropped - /// before the parent `incoming-body` is dropped, or consumed by - /// `incoming-body.finish`. - /// - /// This invariant ensures that the implementation can determine whether - /// the user is consuming the contents of the body, waiting on the - /// `future-trailers` to be ready, or neither. This allows for network - /// backpressure is to be applied when the user is consuming the body, - /// and for that backpressure to not inhibit delivery of the trailers if - /// the user does not read the entire body. - %stream: func() -> result; - - /// Takes ownership of `incoming-body`, and returns a `future-trailers`. - /// This function will trap if the `input-stream` child is still alive. - finish: static func(this: incoming-body) -> future-trailers; - } - - /// Represents a future which may eventaully return trailers, or an error. - /// - /// In the case that the incoming HTTP Request or Response did not have any - /// trailers, this future will resolve to the empty set of trailers once the - /// complete Request or Response body has been received. - resource future-trailers { - - /// Returns a pollable which becomes ready when either the trailers have - /// been received, or an error has occured. When this pollable is ready, - /// the `get` method will return `some`. - subscribe: func() -> pollable; - - /// Returns the contents of the trailers, or an error which occured, - /// once the future is ready. - /// - /// The outer `option` represents future readiness. Users can wait on this - /// `option` to become `some` using the `subscribe` method. - /// - /// The outer `result` is used to retrieve the trailers or error at most - /// once. It will be success on the first call in which the outer option - /// is `some`, and error on subsequent calls. - /// - /// The inner `result` represents that either the HTTP Request or Response - /// body, as well as any trailers, were received successfully, or that an - /// error occured receiving them. The optional `trailers` indicates whether - /// or not trailers were present in the body. - /// - /// When some `trailers` are returned by this method, the `trailers` - /// resource is immutable, and a child. Use of the `set`, `append`, or - /// `delete` methods will return an error, and the resource must be - /// dropped before the parent `future-trailers` is dropped. - get: func() -> option, error-code>>>; - } - - /// Represents an outgoing HTTP Response. - resource outgoing-response { - - /// Construct an `outgoing-response`, with a default `status-code` of `200`. - /// If a different `status-code` is needed, it must be set via the - /// `set-status-code` method. - /// - /// * `headers` is the HTTP Headers for the Response. - constructor(headers: headers); - - /// Get the HTTP Status Code for the Response. - status-code: func() -> status-code; - - /// Set the HTTP Status Code for the Response. Fails if the status-code - /// given is not a valid http status code. - set-status-code: func(status-code: status-code) -> result; - - /// Get the headers associated with the Request. - /// - /// The returned `headers` resource is immutable: `set`, `append`, and - /// `delete` operations will fail with `header-error.immutable`. - /// - /// This headers resource is a child: it must be dropped before the parent - /// `outgoing-request` is dropped, or its ownership is transfered to - /// another component by e.g. `outgoing-handler.handle`. - headers: func() -> headers; - - /// Returns the resource corresponding to the outgoing Body for this Response. - /// - /// Returns success on the first call: the `outgoing-body` resource for - /// this `outgoing-response` can be retrieved at most once. Subsequent - /// calls will return error. - body: func() -> result; - } - - /// Represents an outgoing HTTP Request or Response's Body. - /// - /// A body has both its contents - a stream of bytes - and a (possibly - /// empty) set of trailers, inducating the full contents of the body - /// have been sent. This resource represents the contents as an - /// `output-stream` child resource, and the completion of the body (with - /// optional trailers) with a static function that consumes the - /// `outgoing-body` resource, and ensures that the user of this interface - /// may not write to the body contents after the body has been finished. - /// - /// If the user code drops this resource, as opposed to calling the static - /// method `finish`, the implementation should treat the body as incomplete, - /// and that an error has occured. The implementation should propogate this - /// error to the HTTP protocol by whatever means it has available, - /// including: corrupting the body on the wire, aborting the associated - /// Request, or sending a late status code for the Response. - resource outgoing-body { - - /// Returns a stream for writing the body contents. - /// - /// The returned `output-stream` is a child resource: it must be dropped - /// before the parent `outgoing-body` resource is dropped (or finished), - /// otherwise the `outgoing-body` drop or `finish` will trap. - /// - /// Returns success on the first call: the `output-stream` resource for - /// this `outgoing-body` may be retrieved at most once. Subsequent calls - /// will return error. - write: func() -> result; - - /// Finalize an outgoing body, optionally providing trailers. This must be - /// called to signal that the response is complete. If the `outgoing-body` - /// is dropped without calling `outgoing-body.finalize`, the implementation - /// should treat the body as corrupted. - /// - /// Fails if the body's `outgoing-request` or `outgoing-response` was - /// constructed with a Content-Length header, and the contents written - /// to the body (via `write`) does not match the value given in the - /// Content-Length. - finish: static func( - this: outgoing-body, - trailers: option - ) -> result<_, error-code>; - } - - /// Represents a future which may eventaully return an incoming HTTP - /// Response, or an error. - /// - /// This resource is returned by the `wasi:http/outgoing-handler` interface to - /// provide the HTTP Response corresponding to the sent Request. - resource future-incoming-response { - /// Returns a pollable which becomes ready when either the Response has - /// been received, or an error has occured. When this pollable is ready, - /// the `get` method will return `some`. - subscribe: func() -> pollable; - - /// Returns the incoming HTTP Response, or an error, once one is ready. - /// - /// The outer `option` represents future readiness. Users can wait on this - /// `option` to become `some` using the `subscribe` method. - /// - /// The outer `result` is used to retrieve the response or error at most - /// once. It will be success on the first call in which the outer option - /// is `some`, and error on subsequent calls. - /// - /// The inner `result` represents that either the incoming HTTP Response - /// status and headers have recieved successfully, or that an error - /// occured. Errors may also occur while consuming the response body, - /// but those will be reported by the `incoming-body` and its - /// `output-stream` child. - get: func() -> option>>; - - } -} diff --git a/host-apis/wasi-0.2.0-rc-2023-12-05/wit/deps/io/error.wit b/host-apis/wasi-0.2.0-rc-2023-12-05/wit/deps/io/error.wit deleted file mode 100644 index 31918acb..00000000 --- a/host-apis/wasi-0.2.0-rc-2023-12-05/wit/deps/io/error.wit +++ /dev/null @@ -1,34 +0,0 @@ -package wasi:io@0.2.0-rc-2023-11-10; - - -interface error { - /// A resource which represents some error information. - /// - /// The only method provided by this resource is `to-debug-string`, - /// which provides some human-readable information about the error. - /// - /// In the `wasi:io` package, this resource is returned through the - /// `wasi:io/streams/stream-error` type. - /// - /// To provide more specific error information, other interfaces may - /// provide functions to further "downcast" this error into more specific - /// error information. For example, `error`s returned in streams derived - /// from filesystem types to be described using the filesystem's own - /// error-code type, using the function - /// `wasi:filesystem/types/filesystem-error-code`, which takes a parameter - /// `borrow` and returns - /// `option`. - /// - /// The set of functions which can "downcast" an `error` into a more - /// concrete type is open. - resource error { - /// Returns a string that is suitable to assist humans in debugging - /// this error. - /// - /// WARNING: The returned string should not be consumed mechanically! - /// It may change across platforms, hosts, or other implementation - /// details. Parsing this string is a major platform-compatibility - /// hazard. - to-debug-string: func() -> string; - } -} diff --git a/host-apis/wasi-0.2.0-rc-2023-12-05/wit/deps/io/poll.wit b/host-apis/wasi-0.2.0-rc-2023-12-05/wit/deps/io/poll.wit deleted file mode 100644 index bddde3c1..00000000 --- a/host-apis/wasi-0.2.0-rc-2023-12-05/wit/deps/io/poll.wit +++ /dev/null @@ -1,41 +0,0 @@ -package wasi:io@0.2.0-rc-2023-11-10; - -/// A poll API intended to let users wait for I/O events on multiple handles -/// at once. -interface poll { - /// `pollable` epresents a single I/O event which may be ready, or not. - resource pollable { - - /// Return the readiness of a pollable. This function never blocks. - /// - /// Returns `true` when the pollable is ready, and `false` otherwise. - ready: func() -> bool; - - /// `block` returns immediately if the pollable is ready, and otherwise - /// blocks until ready. - /// - /// This function is equivalent to calling `poll.poll` on a list - /// containing only this pollable. - block: func(); - } - - /// Poll for completion on a set of pollables. - /// - /// This function takes a list of pollables, which identify I/O sources of - /// interest, and waits until one or more of the events is ready for I/O. - /// - /// The result `list` contains one or more indices of handles in the - /// argument list that is ready for I/O. - /// - /// If the list contains more elements than can be indexed with a `u32` - /// value, this function traps. - /// - /// A timeout can be implemented by adding a pollable from the - /// wasi-clocks API to the list. - /// - /// This function does not return a `result`; polling in itself does not - /// do any I/O so it doesn't fail. If any of the I/O sources identified by - /// the pollables has an error, it is indicated by marking the source as - /// being reaedy for I/O. - poll: func(in: list>) -> list; -} diff --git a/host-apis/wasi-0.2.0-rc-2023-12-05/wit/deps/io/streams.wit b/host-apis/wasi-0.2.0-rc-2023-12-05/wit/deps/io/streams.wit deleted file mode 100644 index e7e1b689..00000000 --- a/host-apis/wasi-0.2.0-rc-2023-12-05/wit/deps/io/streams.wit +++ /dev/null @@ -1,251 +0,0 @@ -package wasi:io@0.2.0-rc-2023-11-10; - -/// WASI I/O is an I/O abstraction API which is currently focused on providing -/// stream types. -/// -/// In the future, the component model is expected to add built-in stream types; -/// when it does, they are expected to subsume this API. -interface streams { - use error.{error}; - use poll.{pollable}; - - /// An error for input-stream and output-stream operations. - variant stream-error { - /// The last operation (a write or flush) failed before completion. - /// - /// More information is available in the `error` payload. - last-operation-failed(error), - /// The stream is closed: no more input will be accepted by the - /// stream. A closed output-stream will return this error on all - /// future operations. - closed - } - - /// An input bytestream. - /// - /// `input-stream`s are *non-blocking* to the extent practical on underlying - /// platforms. I/O operations always return promptly; if fewer bytes are - /// promptly available than requested, they return the number of bytes promptly - /// available, which could even be zero. To wait for data to be available, - /// use the `subscribe` function to obtain a `pollable` which can be polled - /// for using `wasi:io/poll`. - resource input-stream { - /// Perform a non-blocking read from the stream. - /// - /// This function returns a list of bytes containing the read data, - /// when successful. The returned list will contain up to `len` bytes; - /// it may return fewer than requested, but not more. The list is - /// empty when no bytes are available for reading at this time. The - /// pollable given by `subscribe` will be ready when more bytes are - /// available. - /// - /// This function fails with a `stream-error` when the operation - /// encounters an error, giving `last-operation-failed`, or when the - /// stream is closed, giving `closed`. - /// - /// When the caller gives a `len` of 0, it represents a request to - /// read 0 bytes. If the stream is still open, this call should - /// succeed and return an empty list, or otherwise fail with `closed`. - /// - /// The `len` parameter is a `u64`, which could represent a list of u8 which - /// is not possible to allocate in wasm32, or not desirable to allocate as - /// as a return value by the callee. The callee may return a list of bytes - /// less than `len` in size while more bytes are available for reading. - read: func( - /// The maximum number of bytes to read - len: u64 - ) -> result, stream-error>; - - /// Read bytes from a stream, after blocking until at least one byte can - /// be read. Except for blocking, behavior is identical to `read`. - blocking-read: func( - /// The maximum number of bytes to read - len: u64 - ) -> result, stream-error>; - - /// Skip bytes from a stream. Returns number of bytes skipped. - /// - /// Behaves identical to `read`, except instead of returning a list - /// of bytes, returns the number of bytes consumed from the stream. - skip: func( - /// The maximum number of bytes to skip. - len: u64, - ) -> result; - - /// Skip bytes from a stream, after blocking until at least one byte - /// can be skipped. Except for blocking behavior, identical to `skip`. - blocking-skip: func( - /// The maximum number of bytes to skip. - len: u64, - ) -> result; - - /// Create a `pollable` which will resolve once either the specified stream - /// has bytes available to read or the other end of the stream has been - /// closed. - /// The created `pollable` is a child resource of the `input-stream`. - /// Implementations may trap if the `input-stream` is dropped before - /// all derived `pollable`s created with this function are dropped. - subscribe: func() -> pollable; - } - - - /// An output bytestream. - /// - /// `output-stream`s are *non-blocking* to the extent practical on - /// underlying platforms. Except where specified otherwise, I/O operations also - /// always return promptly, after the number of bytes that can be written - /// promptly, which could even be zero. To wait for the stream to be ready to - /// accept data, the `subscribe` function to obtain a `pollable` which can be - /// polled for using `wasi:io/poll`. - resource output-stream { - /// Check readiness for writing. This function never blocks. - /// - /// Returns the number of bytes permitted for the next call to `write`, - /// or an error. Calling `write` with more bytes than this function has - /// permitted will trap. - /// - /// When this function returns 0 bytes, the `subscribe` pollable will - /// become ready when this function will report at least 1 byte, or an - /// error. - check-write: func() -> result; - - /// Perform a write. This function never blocks. - /// - /// Precondition: check-write gave permit of Ok(n) and contents has a - /// length of less than or equal to n. Otherwise, this function will trap. - /// - /// returns Err(closed) without writing if the stream has closed since - /// the last call to check-write provided a permit. - write: func( - contents: list - ) -> result<_, stream-error>; - - /// Perform a write of up to 4096 bytes, and then flush the stream. Block - /// until all of these operations are complete, or an error occurs. - /// - /// This is a convenience wrapper around the use of `check-write`, - /// `subscribe`, `write`, and `flush`, and is implemented with the - /// following pseudo-code: - /// - /// ```text - /// let pollable = this.subscribe(); - /// while !contents.is_empty() { - /// // Wait for the stream to become writable - /// poll-one(pollable); - /// let Ok(n) = this.check-write(); // eliding error handling - /// let len = min(n, contents.len()); - /// let (chunk, rest) = contents.split_at(len); - /// this.write(chunk ); // eliding error handling - /// contents = rest; - /// } - /// this.flush(); - /// // Wait for completion of `flush` - /// poll-one(pollable); - /// // Check for any errors that arose during `flush` - /// let _ = this.check-write(); // eliding error handling - /// ``` - blocking-write-and-flush: func( - contents: list - ) -> result<_, stream-error>; - - /// Request to flush buffered output. This function never blocks. - /// - /// This tells the output-stream that the caller intends any buffered - /// output to be flushed. the output which is expected to be flushed - /// is all that has been passed to `write` prior to this call. - /// - /// Upon calling this function, the `output-stream` will not accept any - /// writes (`check-write` will return `ok(0)`) until the flush has - /// completed. The `subscribe` pollable will become ready when the - /// flush has completed and the stream can accept more writes. - flush: func() -> result<_, stream-error>; - - /// Request to flush buffered output, and block until flush completes - /// and stream is ready for writing again. - blocking-flush: func() -> result<_, stream-error>; - - /// Create a `pollable` which will resolve once the output-stream - /// is ready for more writing, or an error has occured. When this - /// pollable is ready, `check-write` will return `ok(n)` with n>0, or an - /// error. - /// - /// If the stream is closed, this pollable is always ready immediately. - /// - /// The created `pollable` is a child resource of the `output-stream`. - /// Implementations may trap if the `output-stream` is dropped before - /// all derived `pollable`s created with this function are dropped. - subscribe: func() -> pollable; - - /// Write zeroes to a stream. - /// - /// this should be used precisely like `write` with the exact same - /// preconditions (must use check-write first), but instead of - /// passing a list of bytes, you simply pass the number of zero-bytes - /// that should be written. - write-zeroes: func( - /// The number of zero-bytes to write - len: u64 - ) -> result<_, stream-error>; - - /// Perform a write of up to 4096 zeroes, and then flush the stream. - /// Block until all of these operations are complete, or an error - /// occurs. - /// - /// This is a convenience wrapper around the use of `check-write`, - /// `subscribe`, `write-zeroes`, and `flush`, and is implemented with - /// the following pseudo-code: - /// - /// ```text - /// let pollable = this.subscribe(); - /// while num_zeroes != 0 { - /// // Wait for the stream to become writable - /// poll-one(pollable); - /// let Ok(n) = this.check-write(); // eliding error handling - /// let len = min(n, num_zeroes); - /// this.write-zeroes(len); // eliding error handling - /// num_zeroes -= len; - /// } - /// this.flush(); - /// // Wait for completion of `flush` - /// poll-one(pollable); - /// // Check for any errors that arose during `flush` - /// let _ = this.check-write(); // eliding error handling - /// ``` - blocking-write-zeroes-and-flush: func( - /// The number of zero-bytes to write - len: u64 - ) -> result<_, stream-error>; - - /// Read from one stream and write to another. - /// - /// The behavior of splice is equivelant to: - /// 1. calling `check-write` on the `output-stream` - /// 2. calling `read` on the `input-stream` with the smaller of the - /// `check-write` permitted length and the `len` provided to `splice` - /// 3. calling `write` on the `output-stream` with that read data. - /// - /// Any error reported by the call to `check-write`, `read`, or - /// `write` ends the splice and reports that error. - /// - /// This function returns the number of bytes transferred; it may be less - /// than `len`. - splice: func( - /// The stream to read from - src: borrow, - /// The number of bytes to splice - len: u64, - ) -> result; - - /// Read from one stream and write to another, with blocking. - /// - /// This is similar to `splice`, except that it blocks until the - /// `output-stream` is ready for writing, and the `input-stream` - /// is ready for reading, before performing the `splice`. - blocking-splice: func( - /// The stream to read from - src: borrow, - /// The number of bytes to splice - len: u64, - ) -> result; - } -} diff --git a/host-apis/wasi-0.2.0-rc-2023-12-05/wit/deps/io/world.wit b/host-apis/wasi-0.2.0-rc-2023-12-05/wit/deps/io/world.wit deleted file mode 100644 index 8243da2e..00000000 --- a/host-apis/wasi-0.2.0-rc-2023-12-05/wit/deps/io/world.wit +++ /dev/null @@ -1,6 +0,0 @@ -package wasi:io@0.2.0-rc-2023-11-10; - -world imports { - import streams; - import poll; -} diff --git a/host-apis/wasi-0.2.0-rc-2023-12-05/wit/deps/random/insecure-seed.wit b/host-apis/wasi-0.2.0-rc-2023-12-05/wit/deps/random/insecure-seed.wit deleted file mode 100644 index f76e87da..00000000 --- a/host-apis/wasi-0.2.0-rc-2023-12-05/wit/deps/random/insecure-seed.wit +++ /dev/null @@ -1,25 +0,0 @@ -package wasi:random@0.2.0-rc-2023-11-10; -/// The insecure-seed interface for seeding hash-map DoS resistance. -/// -/// It is intended to be portable at least between Unix-family platforms and -/// Windows. -interface insecure-seed { - /// Return a 128-bit value that may contain a pseudo-random value. - /// - /// The returned value is not required to be computed from a CSPRNG, and may - /// even be entirely deterministic. Host implementations are encouraged to - /// provide pseudo-random values to any program exposed to - /// attacker-controlled content, to enable DoS protection built into many - /// languages' hash-map implementations. - /// - /// This function is intended to only be called once, by a source language - /// to initialize Denial Of Service (DoS) protection in its hash-map - /// implementation. - /// - /// # Expected future evolution - /// - /// This will likely be changed to a value import, to prevent it from being - /// called multiple times and potentially used for purposes other than DoS - /// protection. - insecure-seed: func() -> tuple; -} diff --git a/host-apis/wasi-0.2.0-rc-2023-12-05/wit/deps/random/insecure.wit b/host-apis/wasi-0.2.0-rc-2023-12-05/wit/deps/random/insecure.wit deleted file mode 100644 index ec7b9973..00000000 --- a/host-apis/wasi-0.2.0-rc-2023-12-05/wit/deps/random/insecure.wit +++ /dev/null @@ -1,22 +0,0 @@ -package wasi:random@0.2.0-rc-2023-11-10; -/// The insecure interface for insecure pseudo-random numbers. -/// -/// It is intended to be portable at least between Unix-family platforms and -/// Windows. -interface insecure { - /// Return `len` insecure pseudo-random bytes. - /// - /// This function is not cryptographically secure. Do not use it for - /// anything related to security. - /// - /// There are no requirements on the values of the returned bytes, however - /// implementations are encouraged to return evenly distributed values with - /// a long period. - get-insecure-random-bytes: func(len: u64) -> list; - - /// Return an insecure pseudo-random `u64` value. - /// - /// This function returns the same type of pseudo-random data as - /// `get-insecure-random-bytes`, represented as a `u64`. - get-insecure-random-u64: func() -> u64; -} diff --git a/host-apis/wasi-0.2.0-rc-2023-12-05/wit/deps/random/random.wit b/host-apis/wasi-0.2.0-rc-2023-12-05/wit/deps/random/random.wit deleted file mode 100644 index 7a7dfa27..00000000 --- a/host-apis/wasi-0.2.0-rc-2023-12-05/wit/deps/random/random.wit +++ /dev/null @@ -1,26 +0,0 @@ -package wasi:random@0.2.0-rc-2023-11-10; -/// WASI Random is a random data API. -/// -/// It is intended to be portable at least between Unix-family platforms and -/// Windows. -interface random { - /// Return `len` cryptographically-secure random or pseudo-random bytes. - /// - /// This function must produce data at least as cryptographically secure and - /// fast as an adequately seeded cryptographically-secure pseudo-random - /// number generator (CSPRNG). It must not block, from the perspective of - /// the calling program, under any circumstances, including on the first - /// request and on requests for numbers of bytes. The returned data must - /// always be unpredictable. - /// - /// This function must always return fresh data. Deterministic environments - /// must omit this function, rather than implementing it with deterministic - /// data. - get-random-bytes: func(len: u64) -> list; - - /// Return a cryptographically-secure random or pseudo-random `u64` value. - /// - /// This function returns the same type of data as `get-random-bytes`, - /// represented as a `u64`. - get-random-u64: func() -> u64; -} diff --git a/host-apis/wasi-0.2.0-rc-2023-12-05/wit/deps/random/world.wit b/host-apis/wasi-0.2.0-rc-2023-12-05/wit/deps/random/world.wit deleted file mode 100644 index 49e5743b..00000000 --- a/host-apis/wasi-0.2.0-rc-2023-12-05/wit/deps/random/world.wit +++ /dev/null @@ -1,7 +0,0 @@ -package wasi:random@0.2.0-rc-2023-11-10; - -world imports { - import random; - import insecure; - import insecure-seed; -} diff --git a/host-apis/wasi-0.2.0-rc-2023-12-05/wit/deps/sockets/instance-network.wit b/host-apis/wasi-0.2.0-rc-2023-12-05/wit/deps/sockets/instance-network.wit deleted file mode 100644 index e455d0ff..00000000 --- a/host-apis/wasi-0.2.0-rc-2023-12-05/wit/deps/sockets/instance-network.wit +++ /dev/null @@ -1,9 +0,0 @@ - -/// This interface provides a value-export of the default network handle.. -interface instance-network { - use network.{network}; - - /// Get a handle to the default network. - instance-network: func() -> network; - -} diff --git a/host-apis/wasi-0.2.0-rc-2023-12-05/wit/deps/sockets/ip-name-lookup.wit b/host-apis/wasi-0.2.0-rc-2023-12-05/wit/deps/sockets/ip-name-lookup.wit deleted file mode 100644 index 931ccf7e..00000000 --- a/host-apis/wasi-0.2.0-rc-2023-12-05/wit/deps/sockets/ip-name-lookup.wit +++ /dev/null @@ -1,51 +0,0 @@ - -interface ip-name-lookup { - use wasi:io/poll@0.2.0-rc-2023-11-10.{pollable}; - use network.{network, error-code, ip-address}; - - - /// Resolve an internet host name to a list of IP addresses. - /// - /// Unicode domain names are automatically converted to ASCII using IDNA encoding. - /// If the input is an IP address string, the address is parsed and returned - /// as-is without making any external requests. - /// - /// See the wasi-socket proposal README.md for a comparison with getaddrinfo. - /// - /// This function never blocks. It either immediately fails or immediately - /// returns successfully with a `resolve-address-stream` that can be used - /// to (asynchronously) fetch the results. - /// - /// # Typical errors - /// - `invalid-argument`: `name` is a syntactically invalid domain name or IP address. - /// - /// # References: - /// - - /// - - /// - - /// - - resolve-addresses: func(network: borrow, name: string) -> result; - - resource resolve-address-stream { - /// Returns the next address from the resolver. - /// - /// This function should be called multiple times. On each call, it will - /// return the next address in connection order preference. If all - /// addresses have been exhausted, this function returns `none`. - /// - /// This function never returns IPv4-mapped IPv6 addresses. - /// - /// # Typical errors - /// - `name-unresolvable`: Name does not exist or has no suitable associated IP addresses. (EAI_NONAME, EAI_NODATA, EAI_ADDRFAMILY) - /// - `temporary-resolver-failure`: A temporary failure in name resolution occurred. (EAI_AGAIN) - /// - `permanent-resolver-failure`: A permanent failure in name resolution occurred. (EAI_FAIL) - /// - `would-block`: A result is not available yet. (EWOULDBLOCK, EAGAIN) - resolve-next-address: func() -> result, error-code>; - - /// Create a `pollable` which will resolve once the stream is ready for I/O. - /// - /// Note: this function is here for WASI Preview2 only. - /// It's planned to be removed when `future` is natively supported in Preview3. - subscribe: func() -> pollable; - } -} diff --git a/host-apis/wasi-0.2.0-rc-2023-12-05/wit/deps/sockets/network.wit b/host-apis/wasi-0.2.0-rc-2023-12-05/wit/deps/sockets/network.wit deleted file mode 100644 index 6bb07cd6..00000000 --- a/host-apis/wasi-0.2.0-rc-2023-12-05/wit/deps/sockets/network.wit +++ /dev/null @@ -1,147 +0,0 @@ - -interface network { - /// An opaque resource that represents access to (a subset of) the network. - /// This enables context-based security for networking. - /// There is no need for this to map 1:1 to a physical network interface. - resource network; - - /// Error codes. - /// - /// In theory, every API can return any error code. - /// In practice, API's typically only return the errors documented per API - /// combined with a couple of errors that are always possible: - /// - `unknown` - /// - `access-denied` - /// - `not-supported` - /// - `out-of-memory` - /// - `concurrency-conflict` - /// - /// See each individual API for what the POSIX equivalents are. They sometimes differ per API. - enum error-code { - // ### GENERAL ERRORS ### - - /// Unknown error - unknown, - - /// Access denied. - /// - /// POSIX equivalent: EACCES, EPERM - access-denied, - - /// The operation is not supported. - /// - /// POSIX equivalent: EOPNOTSUPP - not-supported, - - /// One of the arguments is invalid. - /// - /// POSIX equivalent: EINVAL - invalid-argument, - - /// Not enough memory to complete the operation. - /// - /// POSIX equivalent: ENOMEM, ENOBUFS, EAI_MEMORY - out-of-memory, - - /// The operation timed out before it could finish completely. - timeout, - - /// This operation is incompatible with another asynchronous operation that is already in progress. - /// - /// POSIX equivalent: EALREADY - concurrency-conflict, - - /// Trying to finish an asynchronous operation that: - /// - has not been started yet, or: - /// - was already finished by a previous `finish-*` call. - /// - /// Note: this is scheduled to be removed when `future`s are natively supported. - not-in-progress, - - /// The operation has been aborted because it could not be completed immediately. - /// - /// Note: this is scheduled to be removed when `future`s are natively supported. - would-block, - - - - // ### TCP & UDP SOCKET ERRORS ### - - /// The operation is not valid in the socket's current state. - invalid-state, - - /// A new socket resource could not be created because of a system limit. - new-socket-limit, - - /// A bind operation failed because the provided address is not an address that the `network` can bind to. - address-not-bindable, - - /// A bind operation failed because the provided address is already in use or because there are no ephemeral ports available. - address-in-use, - - /// The remote address is not reachable - remote-unreachable, - - - // ### TCP SOCKET ERRORS ### - - /// The connection was forcefully rejected - connection-refused, - - /// The connection was reset. - connection-reset, - - /// A connection was aborted. - connection-aborted, - - - // ### UDP SOCKET ERRORS ### - datagram-too-large, - - - // ### NAME LOOKUP ERRORS ### - - /// Name does not exist or has no suitable associated IP addresses. - name-unresolvable, - - /// A temporary failure in name resolution occurred. - temporary-resolver-failure, - - /// A permanent failure in name resolution occurred. - permanent-resolver-failure, - } - - enum ip-address-family { - /// Similar to `AF_INET` in POSIX. - ipv4, - - /// Similar to `AF_INET6` in POSIX. - ipv6, - } - - type ipv4-address = tuple; - type ipv6-address = tuple; - - variant ip-address { - ipv4(ipv4-address), - ipv6(ipv6-address), - } - - record ipv4-socket-address { - port: u16, // sin_port - address: ipv4-address, // sin_addr - } - - record ipv6-socket-address { - port: u16, // sin6_port - flow-info: u32, // sin6_flowinfo - address: ipv6-address, // sin6_addr - scope-id: u32, // sin6_scope_id - } - - variant ip-socket-address { - ipv4(ipv4-socket-address), - ipv6(ipv6-socket-address), - } - -} diff --git a/host-apis/wasi-0.2.0-rc-2023-12-05/wit/deps/sockets/tcp-create-socket.wit b/host-apis/wasi-0.2.0-rc-2023-12-05/wit/deps/sockets/tcp-create-socket.wit deleted file mode 100644 index 768a07c8..00000000 --- a/host-apis/wasi-0.2.0-rc-2023-12-05/wit/deps/sockets/tcp-create-socket.wit +++ /dev/null @@ -1,26 +0,0 @@ - -interface tcp-create-socket { - use network.{network, error-code, ip-address-family}; - use tcp.{tcp-socket}; - - /// Create a new TCP socket. - /// - /// Similar to `socket(AF_INET or AF_INET6, SOCK_STREAM, IPPROTO_TCP)` in POSIX. - /// - /// This function does not require a network capability handle. This is considered to be safe because - /// at time of creation, the socket is not bound to any `network` yet. Up to the moment `bind`/`listen`/`connect` - /// is called, the socket is effectively an in-memory configuration object, unable to communicate with the outside world. - /// - /// All sockets are non-blocking. Use the wasi-poll interface to block on asynchronous operations. - /// - /// # Typical errors - /// - `not-supported`: The specified `address-family` is not supported. (EAFNOSUPPORT) - /// - `new-socket-limit`: The new socket resource could not be created because of a system limit. (EMFILE, ENFILE) - /// - /// # References - /// - - /// - - /// - - /// - - create-tcp-socket: func(address-family: ip-address-family) -> result; -} diff --git a/host-apis/wasi-0.2.0-rc-2023-12-05/wit/deps/sockets/tcp.wit b/host-apis/wasi-0.2.0-rc-2023-12-05/wit/deps/sockets/tcp.wit deleted file mode 100644 index 976b272c..00000000 --- a/host-apis/wasi-0.2.0-rc-2023-12-05/wit/deps/sockets/tcp.wit +++ /dev/null @@ -1,326 +0,0 @@ - -interface tcp { - use wasi:io/streams@0.2.0-rc-2023-11-10.{input-stream, output-stream}; - use wasi:io/poll@0.2.0-rc-2023-11-10.{pollable}; - use wasi:clocks/monotonic-clock@0.2.0-rc-2023-11-10.{duration}; - use network.{network, error-code, ip-socket-address, ip-address-family}; - - enum shutdown-type { - /// Similar to `SHUT_RD` in POSIX. - receive, - - /// Similar to `SHUT_WR` in POSIX. - send, - - /// Similar to `SHUT_RDWR` in POSIX. - both, - } - - - /// A TCP socket handle. - resource tcp-socket { - /// Bind the socket to a specific network on the provided IP address and port. - /// - /// If the IP address is zero (`0.0.0.0` in IPv4, `::` in IPv6), it is left to the implementation to decide which - /// network interface(s) to bind to. - /// If the TCP/UDP port is zero, the socket will be bound to a random free port. - /// - /// When a socket is not explicitly bound, the first invocation to a listen or connect operation will - /// implicitly bind the socket. - /// - /// Unlike in POSIX, this function is async. This enables interactive WASI hosts to inject permission prompts. - /// - /// # Typical `start` errors - /// - `invalid-argument`: The `local-address` has the wrong address family. (EAFNOSUPPORT, EFAULT on Windows) - /// - `invalid-argument`: `local-address` is not a unicast address. (EINVAL) - /// - `invalid-argument`: `local-address` is an IPv4-mapped IPv6 address, but the socket has `ipv6-only` enabled. (EINVAL) - /// - `invalid-state`: The socket is already bound. (EINVAL) - /// - /// # Typical `finish` errors - /// - `address-in-use`: No ephemeral ports available. (EADDRINUSE, ENOBUFS on Windows) - /// - `address-in-use`: Address is already in use. (EADDRINUSE) - /// - `address-not-bindable`: `local-address` is not an address that the `network` can bind to. (EADDRNOTAVAIL) - /// - `not-in-progress`: A `bind` operation is not in progress. - /// - `would-block`: Can't finish the operation, it is still in progress. (EWOULDBLOCK, EAGAIN) - /// - /// # Implementors note - /// When binding to a non-zero port, this bind operation shouldn't be affected by the TIME_WAIT - /// state of a recently closed socket on the same local address (i.e. the SO_REUSEADDR socket - /// option should be set implicitly on platforms that require it). - /// - /// # References - /// - - /// - - /// - - /// - - start-bind: func(network: borrow, local-address: ip-socket-address) -> result<_, error-code>; - finish-bind: func() -> result<_, error-code>; - - /// Connect to a remote endpoint. - /// - /// On success: - /// - the socket is transitioned into the Connection state - /// - a pair of streams is returned that can be used to read & write to the connection - /// - /// POSIX mentions: - /// > If connect() fails, the state of the socket is unspecified. Conforming applications should - /// > close the file descriptor and create a new socket before attempting to reconnect. - /// - /// WASI prescribes the following behavior: - /// - If `connect` fails because an input/state validation error, the socket should remain usable. - /// - If a connection was actually attempted but failed, the socket should become unusable for further network communication. - /// Besides `drop`, any method after such a failure may return an error. - /// - /// # Typical `start` errors - /// - `invalid-argument`: The `remote-address` has the wrong address family. (EAFNOSUPPORT) - /// - `invalid-argument`: `remote-address` is not a unicast address. (EINVAL, ENETUNREACH on Linux, EAFNOSUPPORT on MacOS) - /// - `invalid-argument`: `remote-address` is an IPv4-mapped IPv6 address, but the socket has `ipv6-only` enabled. (EINVAL, EADDRNOTAVAIL on Illumos) - /// - `invalid-argument`: `remote-address` is a non-IPv4-mapped IPv6 address, but the socket was bound to a specific IPv4-mapped IPv6 address. (or vice versa) - /// - `invalid-argument`: The IP address in `remote-address` is set to INADDR_ANY (`0.0.0.0` / `::`). (EADDRNOTAVAIL on Windows) - /// - `invalid-argument`: The port in `remote-address` is set to 0. (EADDRNOTAVAIL on Windows) - /// - `invalid-argument`: The socket is already attached to a different network. The `network` passed to `connect` must be identical to the one passed to `bind`. - /// - `invalid-state`: The socket is already in the Connection state. (EISCONN) - /// - `invalid-state`: The socket is already in the Listener state. (EOPNOTSUPP, EINVAL on Windows) - /// - /// # Typical `finish` errors - /// - `timeout`: Connection timed out. (ETIMEDOUT) - /// - `connection-refused`: The connection was forcefully rejected. (ECONNREFUSED) - /// - `connection-reset`: The connection was reset. (ECONNRESET) - /// - `connection-aborted`: The connection was aborted. (ECONNABORTED) - /// - `remote-unreachable`: The remote address is not reachable. (EHOSTUNREACH, EHOSTDOWN, ENETUNREACH, ENETDOWN, ENONET) - /// - `address-in-use`: Tried to perform an implicit bind, but there were no ephemeral ports available. (EADDRINUSE, EADDRNOTAVAIL on Linux, EAGAIN on BSD) - /// - `not-in-progress`: A `connect` operation is not in progress. - /// - `would-block`: Can't finish the operation, it is still in progress. (EWOULDBLOCK, EAGAIN) - /// - /// # References - /// - - /// - - /// - - /// - - start-connect: func(network: borrow, remote-address: ip-socket-address) -> result<_, error-code>; - finish-connect: func() -> result, error-code>; - - /// Start listening for new connections. - /// - /// Transitions the socket into the Listener state. - /// - /// Unlike POSIX: - /// - this function is async. This enables interactive WASI hosts to inject permission prompts. - /// - the socket must already be explicitly bound. - /// - /// # Typical `start` errors - /// - `invalid-state`: The socket is not bound to any local address. (EDESTADDRREQ) - /// - `invalid-state`: The socket is already in the Connection state. (EISCONN, EINVAL on BSD) - /// - `invalid-state`: The socket is already in the Listener state. - /// - /// # Typical `finish` errors - /// - `address-in-use`: Tried to perform an implicit bind, but there were no ephemeral ports available. (EADDRINUSE) - /// - `not-in-progress`: A `listen` operation is not in progress. - /// - `would-block`: Can't finish the operation, it is still in progress. (EWOULDBLOCK, EAGAIN) - /// - /// # References - /// - - /// - - /// - - /// - - start-listen: func() -> result<_, error-code>; - finish-listen: func() -> result<_, error-code>; - - /// Accept a new client socket. - /// - /// The returned socket is bound and in the Connection state. The following properties are inherited from the listener socket: - /// - `address-family` - /// - `ipv6-only` - /// - `keep-alive-enabled` - /// - `keep-alive-idle-time` - /// - `keep-alive-interval` - /// - `keep-alive-count` - /// - `hop-limit` - /// - `receive-buffer-size` - /// - `send-buffer-size` - /// - /// On success, this function returns the newly accepted client socket along with - /// a pair of streams that can be used to read & write to the connection. - /// - /// # Typical errors - /// - `invalid-state`: Socket is not in the Listener state. (EINVAL) - /// - `would-block`: No pending connections at the moment. (EWOULDBLOCK, EAGAIN) - /// - `connection-aborted`: An incoming connection was pending, but was terminated by the client before this listener could accept it. (ECONNABORTED) - /// - `new-socket-limit`: The new socket resource could not be created because of a system limit. (EMFILE, ENFILE) - /// - /// # References - /// - - /// - - /// - - /// - - accept: func() -> result, error-code>; - - /// Get the bound local address. - /// - /// POSIX mentions: - /// > If the socket has not been bound to a local name, the value - /// > stored in the object pointed to by `address` is unspecified. - /// - /// WASI is stricter and requires `local-address` to return `invalid-state` when the socket hasn't been bound yet. - /// - /// # Typical errors - /// - `invalid-state`: The socket is not bound to any local address. - /// - /// # References - /// - - /// - - /// - - /// - - local-address: func() -> result; - - /// Get the remote address. - /// - /// # Typical errors - /// - `invalid-state`: The socket is not connected to a remote address. (ENOTCONN) - /// - /// # References - /// - - /// - - /// - - /// - - remote-address: func() -> result; - - /// Whether the socket is listening for new connections. - /// - /// Equivalent to the SO_ACCEPTCONN socket option. - is-listening: func() -> bool; - - /// Whether this is a IPv4 or IPv6 socket. - /// - /// Equivalent to the SO_DOMAIN socket option. - address-family: func() -> ip-address-family; - - /// Whether IPv4 compatibility (dual-stack) mode is disabled or not. - /// - /// Equivalent to the IPV6_V6ONLY socket option. - /// - /// # Typical errors - /// - `invalid-state`: (set) The socket is already bound. - /// - `not-supported`: (get/set) `this` socket is an IPv4 socket. - /// - `not-supported`: (set) Host does not support dual-stack sockets. (Implementations are not required to.) - ipv6-only: func() -> result; - set-ipv6-only: func(value: bool) -> result<_, error-code>; - - /// Hints the desired listen queue size. Implementations are free to ignore this. - /// - /// If the provided value is 0, an `invalid-argument` error is returned. - /// Any other value will never cause an error, but it might be silently clamped and/or rounded. - /// - /// # Typical errors - /// - `not-supported`: (set) The platform does not support changing the backlog size after the initial listen. - /// - `invalid-argument`: (set) The provided value was 0. - /// - `invalid-state`: (set) The socket is already in the Connection state. - set-listen-backlog-size: func(value: u64) -> result<_, error-code>; - - /// Enables or disables keepalive. - /// - /// The keepalive behavior can be adjusted using: - /// - `keep-alive-idle-time` - /// - `keep-alive-interval` - /// - `keep-alive-count` - /// These properties can be configured while `keep-alive-enabled` is false, but only come into effect when `keep-alive-enabled` is true. - /// - /// Equivalent to the SO_KEEPALIVE socket option. - keep-alive-enabled: func() -> result; - set-keep-alive-enabled: func(value: bool) -> result<_, error-code>; - - /// Amount of time the connection has to be idle before TCP starts sending keepalive packets. - /// - /// If the provided value is 0, an `invalid-argument` error is returned. - /// Any other value will never cause an error, but it might be silently clamped and/or rounded. - /// I.e. after setting a value, reading the same setting back may return a different value. - /// - /// Equivalent to the TCP_KEEPIDLE socket option. (TCP_KEEPALIVE on MacOS) - /// - /// # Typical errors - /// - `invalid-argument`: (set) The provided value was 0. - keep-alive-idle-time: func() -> result; - set-keep-alive-idle-time: func(value: duration) -> result<_, error-code>; - - /// The time between keepalive packets. - /// - /// If the provided value is 0, an `invalid-argument` error is returned. - /// Any other value will never cause an error, but it might be silently clamped and/or rounded. - /// I.e. after setting a value, reading the same setting back may return a different value. - /// - /// Equivalent to the TCP_KEEPINTVL socket option. - /// - /// # Typical errors - /// - `invalid-argument`: (set) The provided value was 0. - keep-alive-interval: func() -> result; - set-keep-alive-interval: func(value: duration) -> result<_, error-code>; - - /// The maximum amount of keepalive packets TCP should send before aborting the connection. - /// - /// If the provided value is 0, an `invalid-argument` error is returned. - /// Any other value will never cause an error, but it might be silently clamped and/or rounded. - /// I.e. after setting a value, reading the same setting back may return a different value. - /// - /// Equivalent to the TCP_KEEPCNT socket option. - /// - /// # Typical errors - /// - `invalid-argument`: (set) The provided value was 0. - keep-alive-count: func() -> result; - set-keep-alive-count: func(value: u32) -> result<_, error-code>; - - /// Equivalent to the IP_TTL & IPV6_UNICAST_HOPS socket options. - /// - /// If the provided value is 0, an `invalid-argument` error is returned. - /// - /// # Typical errors - /// - `invalid-argument`: (set) The TTL value must be 1 or higher. - /// - `invalid-state`: (set) The socket is already in the Connection state. - /// - `invalid-state`: (set) The socket is already in the Listener state. - hop-limit: func() -> result; - set-hop-limit: func(value: u8) -> result<_, error-code>; - - /// The kernel buffer space reserved for sends/receives on this socket. - /// - /// If the provided value is 0, an `invalid-argument` error is returned. - /// Any other value will never cause an error, but it might be silently clamped and/or rounded. - /// I.e. after setting a value, reading the same setting back may return a different value. - /// - /// Equivalent to the SO_RCVBUF and SO_SNDBUF socket options. - /// - /// # Typical errors - /// - `invalid-argument`: (set) The provided value was 0. - /// - `invalid-state`: (set) The socket is already in the Connection state. - /// - `invalid-state`: (set) The socket is already in the Listener state. - receive-buffer-size: func() -> result; - set-receive-buffer-size: func(value: u64) -> result<_, error-code>; - send-buffer-size: func() -> result; - set-send-buffer-size: func(value: u64) -> result<_, error-code>; - - /// Create a `pollable` which will resolve once the socket is ready for I/O. - /// - /// Note: this function is here for WASI Preview2 only. - /// It's planned to be removed when `future` is natively supported in Preview3. - subscribe: func() -> pollable; - - /// Initiate a graceful shutdown. - /// - /// - receive: the socket is not expecting to receive any more data from the peer. All subsequent read - /// operations on the `input-stream` associated with this socket will return an End Of Stream indication. - /// Any data still in the receive queue at time of calling `shutdown` will be discarded. - /// - send: the socket is not expecting to send any more data to the peer. All subsequent write - /// operations on the `output-stream` associated with this socket will return an error. - /// - both: same effect as receive & send combined. - /// - /// The shutdown function does not close (drop) the socket. - /// - /// # Typical errors - /// - `invalid-state`: The socket is not in the Connection state. (ENOTCONN) - /// - /// # References - /// - - /// - - /// - - /// - - shutdown: func(shutdown-type: shutdown-type) -> result<_, error-code>; - } -} diff --git a/host-apis/wasi-0.2.0-rc-2023-12-05/wit/deps/sockets/udp-create-socket.wit b/host-apis/wasi-0.2.0-rc-2023-12-05/wit/deps/sockets/udp-create-socket.wit deleted file mode 100644 index cc58234d..00000000 --- a/host-apis/wasi-0.2.0-rc-2023-12-05/wit/deps/sockets/udp-create-socket.wit +++ /dev/null @@ -1,26 +0,0 @@ - -interface udp-create-socket { - use network.{network, error-code, ip-address-family}; - use udp.{udp-socket}; - - /// Create a new UDP socket. - /// - /// Similar to `socket(AF_INET or AF_INET6, SOCK_DGRAM, IPPROTO_UDP)` in POSIX. - /// - /// This function does not require a network capability handle. This is considered to be safe because - /// at time of creation, the socket is not bound to any `network` yet. Up to the moment `bind` is called, - /// the socket is effectively an in-memory configuration object, unable to communicate with the outside world. - /// - /// All sockets are non-blocking. Use the wasi-poll interface to block on asynchronous operations. - /// - /// # Typical errors - /// - `not-supported`: The specified `address-family` is not supported. (EAFNOSUPPORT) - /// - `new-socket-limit`: The new socket resource could not be created because of a system limit. (EMFILE, ENFILE) - /// - /// # References: - /// - - /// - - /// - - /// - - create-udp-socket: func(address-family: ip-address-family) -> result; -} diff --git a/host-apis/wasi-0.2.0-rc-2023-12-05/wit/deps/sockets/udp.wit b/host-apis/wasi-0.2.0-rc-2023-12-05/wit/deps/sockets/udp.wit deleted file mode 100644 index c8dafadf..00000000 --- a/host-apis/wasi-0.2.0-rc-2023-12-05/wit/deps/sockets/udp.wit +++ /dev/null @@ -1,277 +0,0 @@ - -interface udp { - use wasi:io/poll@0.2.0-rc-2023-11-10.{pollable}; - use network.{network, error-code, ip-socket-address, ip-address-family}; - - /// A received datagram. - record incoming-datagram { - /// The payload. - /// - /// Theoretical max size: ~64 KiB. In practice, typically less than 1500 bytes. - data: list, - - /// The source address. - /// - /// This field is guaranteed to match the remote address the stream was initialized with, if any. - /// - /// Equivalent to the `src_addr` out parameter of `recvfrom`. - remote-address: ip-socket-address, - } - - /// A datagram to be sent out. - record outgoing-datagram { - /// The payload. - data: list, - - /// The destination address. - /// - /// The requirements on this field depend on how the stream was initialized: - /// - with a remote address: this field must be None or match the stream's remote address exactly. - /// - without a remote address: this field is required. - /// - /// If this value is None, the send operation is equivalent to `send` in POSIX. Otherwise it is equivalent to `sendto`. - remote-address: option, - } - - - - /// A UDP socket handle. - resource udp-socket { - /// Bind the socket to a specific network on the provided IP address and port. - /// - /// If the IP address is zero (`0.0.0.0` in IPv4, `::` in IPv6), it is left to the implementation to decide which - /// network interface(s) to bind to. - /// If the port is zero, the socket will be bound to a random free port. - /// - /// Unlike in POSIX, this function is async. This enables interactive WASI hosts to inject permission prompts. - /// - /// # Typical `start` errors - /// - `invalid-argument`: The `local-address` has the wrong address family. (EAFNOSUPPORT, EFAULT on Windows) - /// - `invalid-state`: The socket is already bound. (EINVAL) - /// - /// # Typical `finish` errors - /// - `address-in-use`: No ephemeral ports available. (EADDRINUSE, ENOBUFS on Windows) - /// - `address-in-use`: Address is already in use. (EADDRINUSE) - /// - `address-not-bindable`: `local-address` is not an address that the `network` can bind to. (EADDRNOTAVAIL) - /// - `not-in-progress`: A `bind` operation is not in progress. - /// - `would-block`: Can't finish the operation, it is still in progress. (EWOULDBLOCK, EAGAIN) - /// - /// # References - /// - - /// - - /// - - /// - - start-bind: func(network: borrow, local-address: ip-socket-address) -> result<_, error-code>; - finish-bind: func() -> result<_, error-code>; - - /// Set up inbound & outbound communication channels, optionally to a specific peer. - /// - /// This function only changes the local socket configuration and does not generate any network traffic. - /// On success, the `remote-address` of the socket is updated. The `local-address` may be updated as well, - /// based on the best network path to `remote-address`. - /// - /// When a `remote-address` is provided, the returned streams are limited to communicating with that specific peer: - /// - `send` can only be used to send to this destination. - /// - `receive` will only return datagrams sent from the provided `remote-address`. - /// - /// This method may be called multiple times on the same socket to change its association, but - /// only the most recently returned pair of streams will be operational. Implementations may trap if - /// the streams returned by a previous invocation haven't been dropped yet before calling `stream` again. - /// - /// The POSIX equivalent in pseudo-code is: - /// ```text - /// if (was previously connected) { - /// connect(s, AF_UNSPEC) - /// } - /// if (remote_address is Some) { - /// connect(s, remote_address) - /// } - /// ``` - /// - /// Unlike in POSIX, the socket must already be explicitly bound. - /// - /// # Typical errors - /// - `invalid-argument`: The `remote-address` has the wrong address family. (EAFNOSUPPORT) - /// - `invalid-argument`: `remote-address` is a non-IPv4-mapped IPv6 address, but the socket was bound to a specific IPv4-mapped IPv6 address. (or vice versa) - /// - `invalid-argument`: The IP address in `remote-address` is set to INADDR_ANY (`0.0.0.0` / `::`). (EDESTADDRREQ, EADDRNOTAVAIL) - /// - `invalid-argument`: The port in `remote-address` is set to 0. (EDESTADDRREQ, EADDRNOTAVAIL) - /// - `invalid-state`: The socket is not bound. - /// - `address-in-use`: Tried to perform an implicit bind, but there were no ephemeral ports available. (EADDRINUSE, EADDRNOTAVAIL on Linux, EAGAIN on BSD) - /// - `remote-unreachable`: The remote address is not reachable. (ECONNRESET, ENETRESET, EHOSTUNREACH, EHOSTDOWN, ENETUNREACH, ENETDOWN, ENONET) - /// - `connection-refused`: The connection was refused. (ECONNREFUSED) - /// - /// # References - /// - - /// - - /// - - /// - - %stream: func(remote-address: option) -> result, error-code>; - - /// Get the current bound address. - /// - /// POSIX mentions: - /// > If the socket has not been bound to a local name, the value - /// > stored in the object pointed to by `address` is unspecified. - /// - /// WASI is stricter and requires `local-address` to return `invalid-state` when the socket hasn't been bound yet. - /// - /// # Typical errors - /// - `invalid-state`: The socket is not bound to any local address. - /// - /// # References - /// - - /// - - /// - - /// - - local-address: func() -> result; - - /// Get the address the socket is currently streaming to. - /// - /// # Typical errors - /// - `invalid-state`: The socket is not streaming to a specific remote address. (ENOTCONN) - /// - /// # References - /// - - /// - - /// - - /// - - remote-address: func() -> result; - - /// Whether this is a IPv4 or IPv6 socket. - /// - /// Equivalent to the SO_DOMAIN socket option. - address-family: func() -> ip-address-family; - - /// Whether IPv4 compatibility (dual-stack) mode is disabled or not. - /// - /// Equivalent to the IPV6_V6ONLY socket option. - /// - /// # Typical errors - /// - `not-supported`: (get/set) `this` socket is an IPv4 socket. - /// - `invalid-state`: (set) The socket is already bound. - /// - `not-supported`: (set) Host does not support dual-stack sockets. (Implementations are not required to.) - ipv6-only: func() -> result; - set-ipv6-only: func(value: bool) -> result<_, error-code>; - - /// Equivalent to the IP_TTL & IPV6_UNICAST_HOPS socket options. - /// - /// If the provided value is 0, an `invalid-argument` error is returned. - /// - /// # Typical errors - /// - `invalid-argument`: (set) The TTL value must be 1 or higher. - unicast-hop-limit: func() -> result; - set-unicast-hop-limit: func(value: u8) -> result<_, error-code>; - - /// The kernel buffer space reserved for sends/receives on this socket. - /// - /// If the provided value is 0, an `invalid-argument` error is returned. - /// Any other value will never cause an error, but it might be silently clamped and/or rounded. - /// I.e. after setting a value, reading the same setting back may return a different value. - /// - /// Equivalent to the SO_RCVBUF and SO_SNDBUF socket options. - /// - /// # Typical errors - /// - `invalid-argument`: (set) The provided value was 0. - receive-buffer-size: func() -> result; - set-receive-buffer-size: func(value: u64) -> result<_, error-code>; - send-buffer-size: func() -> result; - set-send-buffer-size: func(value: u64) -> result<_, error-code>; - - /// Create a `pollable` which will resolve once the socket is ready for I/O. - /// - /// Note: this function is here for WASI Preview2 only. - /// It's planned to be removed when `future` is natively supported in Preview3. - subscribe: func() -> pollable; - } - - resource incoming-datagram-stream { - /// Receive messages on the socket. - /// - /// This function attempts to receive up to `max-results` datagrams on the socket without blocking. - /// The returned list may contain fewer elements than requested, but never more. - /// - /// This function returns successfully with an empty list when either: - /// - `max-results` is 0, or: - /// - `max-results` is greater than 0, but no results are immediately available. - /// This function never returns `error(would-block)`. - /// - /// # Typical errors - /// - `remote-unreachable`: The remote address is not reachable. (ECONNRESET, ENETRESET on Windows, EHOSTUNREACH, EHOSTDOWN, ENETUNREACH, ENETDOWN, ENONET) - /// - `connection-refused`: The connection was refused. (ECONNREFUSED) - /// - /// # References - /// - - /// - - /// - - /// - - /// - - /// - - /// - - /// - - receive: func(max-results: u64) -> result, error-code>; - - /// Create a `pollable` which will resolve once the stream is ready to receive again. - /// - /// Note: this function is here for WASI Preview2 only. - /// It's planned to be removed when `future` is natively supported in Preview3. - subscribe: func() -> pollable; - } - - resource outgoing-datagram-stream { - /// Check readiness for sending. This function never blocks. - /// - /// Returns the number of datagrams permitted for the next call to `send`, - /// or an error. Calling `send` with more datagrams than this function has - /// permitted will trap. - /// - /// When this function returns ok(0), the `subscribe` pollable will - /// become ready when this function will report at least ok(1), or an - /// error. - /// - /// Never returns `would-block`. - check-send: func() -> result; - - /// Send messages on the socket. - /// - /// This function attempts to send all provided `datagrams` on the socket without blocking and - /// returns how many messages were actually sent (or queued for sending). This function never - /// returns `error(would-block)`. If none of the datagrams were able to be sent, `ok(0)` is returned. - /// - /// This function semantically behaves the same as iterating the `datagrams` list and sequentially - /// sending each individual datagram until either the end of the list has been reached or the first error occurred. - /// If at least one datagram has been sent successfully, this function never returns an error. - /// - /// If the input list is empty, the function returns `ok(0)`. - /// - /// Each call to `send` must be permitted by a preceding `check-send`. Implementations must trap if - /// either `check-send` was not called or `datagrams` contains more items than `check-send` permitted. - /// - /// # Typical errors - /// - `invalid-argument`: The `remote-address` has the wrong address family. (EAFNOSUPPORT) - /// - `invalid-argument`: `remote-address` is a non-IPv4-mapped IPv6 address, but the socket was bound to a specific IPv4-mapped IPv6 address. (or vice versa) - /// - `invalid-argument`: The IP address in `remote-address` is set to INADDR_ANY (`0.0.0.0` / `::`). (EDESTADDRREQ, EADDRNOTAVAIL) - /// - `invalid-argument`: The port in `remote-address` is set to 0. (EDESTADDRREQ, EADDRNOTAVAIL) - /// - `invalid-argument`: The socket is in "connected" mode and `remote-address` is `some` value that does not match the address passed to `stream`. (EISCONN) - /// - `invalid-argument`: The socket is not "connected" and no value for `remote-address` was provided. (EDESTADDRREQ) - /// - `remote-unreachable`: The remote address is not reachable. (ECONNRESET, ENETRESET on Windows, EHOSTUNREACH, EHOSTDOWN, ENETUNREACH, ENETDOWN, ENONET) - /// - `connection-refused`: The connection was refused. (ECONNREFUSED) - /// - `datagram-too-large`: The datagram is too large. (EMSGSIZE) - /// - /// # References - /// - - /// - - /// - - /// - - /// - - /// - - /// - - /// - - send: func(datagrams: list) -> result; - - /// Create a `pollable` which will resolve once the stream is ready to send again. - /// - /// Note: this function is here for WASI Preview2 only. - /// It's planned to be removed when `future` is natively supported in Preview3. - subscribe: func() -> pollable; - } -} diff --git a/host-apis/wasi-0.2.0-rc-2023-12-05/wit/deps/sockets/world.wit b/host-apis/wasi-0.2.0-rc-2023-12-05/wit/deps/sockets/world.wit deleted file mode 100644 index 49ad8d3d..00000000 --- a/host-apis/wasi-0.2.0-rc-2023-12-05/wit/deps/sockets/world.wit +++ /dev/null @@ -1,11 +0,0 @@ -package wasi:sockets@0.2.0-rc-2023-11-10; - -world imports { - import instance-network; - import network; - import udp; - import udp-create-socket; - import tcp; - import tcp-create-socket; - import ip-name-lookup; -} diff --git a/host-apis/wasi-0.2.0-rc-2023-12-05/wit/main.wit b/host-apis/wasi-0.2.0-rc-2023-12-05/wit/main.wit deleted file mode 100644 index 013d6efa..00000000 --- a/host-apis/wasi-0.2.0-rc-2023-12-05/wit/main.wit +++ /dev/null @@ -1,6 +0,0 @@ -package local:bindings; - -world bindings { - include wasi:cli/command@0.2.0-rc-2023-12-05; - include wasi:http/proxy@0.2.0-rc-2023-12-05; -} diff --git a/host-apis/wasi-0.2.0/host_api.cpp b/host-apis/wasi-0.2.0/host_api.cpp index 23e25896..b9ef6644 100644 --- a/host-apis/wasi-0.2.0/host_api.cpp +++ b/host-apis/wasi-0.2.0/host_api.cpp @@ -247,10 +247,10 @@ class OutgoingBodyHandle final : public WASIHandle { } }; -size_t api::AsyncTask::select(std::vector *tasks) { - auto count = tasks->size(); +size_t api::AsyncTask::select(std::vector &tasks) { + auto count = tasks.size(); vector::Borrowed> handles; - for (const auto task : *tasks) { + for (const auto task : tasks) { handles.emplace_back(task->id()); } auto list = list_borrow_pollable_t{ handles.data(), count}; @@ -263,11 +263,12 @@ size_t api::AsyncTask::select(std::vector *tasks) { return ready_index; } -std::optional api::AsyncTask::ready(std::vector *tasks) { - auto count = tasks->size(); +std::optional api::AsyncTask::ready(std::vector &tasks) { + auto count = tasks.size(); for (size_t idx = 0; idx < count; ++idx) { - auto task = tasks->at(idx); - if (wasi_io_0_2_0_poll_method_pollable_ready({task->id()})) { + auto task = tasks.at(idx); + WASIHandle::Borrowed poll = { task->id() }; + if (wasi_io_0_2_0_poll_method_pollable_ready(poll)) { return idx; } } diff --git a/include/builtin.h b/include/builtin.h index 814c4889..a7842a93 100644 --- a/include/builtin.h +++ b/include/builtin.h @@ -49,27 +49,18 @@ using JS::PersistentRooted; std::optional> value_to_buffer(JSContext *cx, HandleValue val, const char *val_desc); -enum JSErrNum { -#define MSG_DEF(name, count, exception, format) name, -#include "error-numbers.msg" -#undef MSG_DEF - JSErrNum_Limit -}; +#define DEF_ERR(name, exception, format, count) \ +static constexpr JSErrorFormatString name = { #name, format, count, exception }; + +namespace api { +#include "errors.h" +} bool hasWizeningFinished(); bool isWizening(); void markWizeningAsFinished(); -const JSErrorFormatString js_ErrorFormatString[JSErrNum_Limit] = { -#define MSG_DEF(name, count, exception, format) {#name, format, count, exception}, -#include "error-numbers.msg" - -#undef MSG_DEF -}; - -const JSErrorFormatString *GetErrorMessage(void *userRef, unsigned errorNumber); - #define DBG(...) \ printf("%s#%d: ", __func__, __LINE__); \ printf(__VA_ARGS__); \ @@ -114,20 +105,12 @@ const JSErrorFormatString *GetErrorMessage(void *userRef, unsigned errorNumber); #define REQUEST_HANDLER_ONLY(name) \ if (isWizening()) { \ - JS_ReportErrorUTF8(cx, \ - "%s can only be used during request handling, " \ - "not during initialization", \ - name); \ - return false; \ + return api::throw_error(cx, api::Errors::RequestHandlerOnly, name); \ } #define INIT_ONLY(name) \ if (hasWizeningFinished()) { \ - JS_ReportErrorUTF8(cx, \ - "%s can only be used during initialization, " \ - "not during request handling", \ - name); \ - return false; \ + return api::throw_error(cx, api::Errors::InitializationOnly, name); \ } inline bool ThrowIfNotConstructing(JSContext *cx, const CallArgs &args, const char *builtinName) { @@ -135,8 +118,7 @@ inline bool ThrowIfNotConstructing(JSContext *cx, const CallArgs &args, const ch return true; } - JS_ReportErrorNumberASCII(cx, GetErrorMessage, nullptr, JSMSG_BUILTIN_CTOR_NO_NEW, builtinName); - return false; + return api::throw_error(cx, api::Errors::CtorCalledWithoutNew, builtinName); } namespace builtins { @@ -178,9 +160,7 @@ template class BuiltinImpl { static bool check_receiver(JSContext *cx, HandleValue receiver, const char *method_name) { if (!Impl::is_instance(receiver)) { - JS_ReportErrorNumberASCII(cx, GetErrorMessage, nullptr, JSMSG_INCOMPATIBLE_INSTANCE, - method_name, Impl::class_.name); - return false; + return api::throw_error(cx, api::Errors::WrongReceiver, method_name, Impl::class_name); } return true; @@ -204,8 +184,7 @@ template class BuiltinNoConstructor : public BuiltinImpl { static bool constructor(JSContext *cx, [[maybe_unused]] unsigned argc, [[maybe_unused]] Value *vp) { - JS_ReportErrorUTF8(cx, "%s can't be instantiated directly", Impl::class_name); - return false; + return api::throw_error(cx, api::Errors::NoCtorBuiltin, Impl::class_name); } static bool init_class(JSContext *cx, HandleObject global) { diff --git a/include/error-numbers.msg b/include/error-numbers.msg deleted file mode 100644 index 58be33e6..00000000 --- a/include/error-numbers.msg +++ /dev/null @@ -1,66 +0,0 @@ -/* - * Our own version of spidermonkey/js/friend/ErrorNumbers.msg - * where we can add our own custom error messages for use within the runtime - */ - -/* - * This is our JavaScript error message file. - * - * The format for each JS error message is: - * - * MSG_DEF(, , , - * ) - * - * where ; - * is a legal C identifer that will be used in the - * JS engine source. - * - * is an integer literal specifying the total number of - * replaceable arguments in the following format string. - * - * is an enum JSExnType value, defined in js/ErrorReport.h. - * - * is a string literal, optionally containing sequences - * {X} where X is an integer representing the argument number that will - * be replaced with a string value when the error is reported. - * - * e.g. - * - * MSG_DEF(JSMSG_NOT_A_SUBSPECIES, 2, JSEXN_TYPEERROR, - * "{0} is not a member of the {1} family") - * - * can be used: - * - * JS_ReportErrorNumberASCII(JSMSG_NOT_A_SUBSPECIES, "Rhino", "Monkey"); - * - * to report: - * - * "TypeError: Rhino is not a member of the Monkey family" - */ - -// clang-format off -MSG_DEF(JSMSG_BUILTIN_NOT_AN_ERROR, 0, JSEXN_ERR, "") -MSG_DEF(JSMSG_BUILTIN_CTOR_NO_NEW, 1, JSEXN_TYPEERR, "calling a builtin {0} constructor without new is forbidden") -MSG_DEF(JSMSG_ILLEGAL_CTOR, 0, JSEXN_TYPEERR, "Illegal constructor") -MSG_DEF(JSMSG_INVALID_INTERFACE, 2, JSEXN_TYPEERR, "'{0}' called on an object that does not implement interface {1}") -MSG_DEF(JSMSG_INCOMPATIBLE_INSTANCE, 2, JSEXN_TYPEERR, "Method {0} called on receiver that's not an instance of {1}") -MSG_DEF(JSMSG_INVALID_BUFFER_ARG, 2, JSEXN_TYPEERR, "{0} must be of type ArrayBuffer or ArrayBufferView but got \"{1}\"") -MSG_DEF(JSMSG_INVALID_COMPRESSION_FORMAT, 1, JSEXN_TYPEERR, "'format' has to be \"deflate\", \"deflate-raw\", or \"gzip\", but got \"{0}\"") -MSG_DEF(JSMSG_DECOMPRESSING_ERROR, 0, JSEXN_TYPEERR, "DecompressionStream transform: error decompressing chunk") -MSG_DEF(JSMSG_READABLE_STREAM_LOCKED_OR_DISTRUBED, 0, JSEXN_TYPEERR, "Can't use a ReadableStream that's locked or has ever been read from or canceled") -MSG_DEF(JSMSG_RESPONSE_VALUE_NOT_UINT8ARRAY, 0, JSEXN_TYPEERR, "Can't convert value to Uint8Array while consuming Body") -MSG_DEF(JSMSG_RESPONSE_BODY_DISTURBED_OR_LOCKED, 0, JSEXN_TYPEERR, "Response body object should not be disturbed or locked") -MSG_DEF(JSMSG_INVALID_CHARACTER_ERROR, 0, JSEXN_ERR, "String contains an invalid character") -MSG_DEF(JSMSG_SUBTLE_CRYPTO_ERROR, 1, JSEXN_ERR, "{0}") -MSG_DEF(JSMSG_SUBTLE_CRYPTO_INVALID_JWK_KTY_VALUE, 1, JSEXN_ERR, "The JWK 'kty' member was not '{0}'") -MSG_DEF(JSMSG_SUBTLE_CRYPTO_INVALID_KEY_USAGES_VALUE, 0, JSEXN_TYPEERR, "Invalid keyUsages argument") -MSG_DEF(JSMSG_RESPONSE_REDIRECT_INVALID_URI, 0, JSEXN_TYPEERR, "Response.redirect: url parameter is not a valid URL.") -MSG_DEF(JSMSG_RESPONSE_REDIRECT_INVALID_STATUS, 0, JSEXN_RANGEERR, "Response.redirect: Invalid redirect status code.") -MSG_DEF(JSMSG_RESPONSE_NULL_BODY_STATUS_WITH_BODY, 0, JSEXN_TYPEERR, "Response with null body status cannot have body") -MSG_DEF(JSMSG_RESPONSE_JSON_INVALID_VALUE, 0, JSEXN_TYPEERR, "Redirect.json: The data is not JSON serializable") -MSG_DEF(JSMSG_TEXT_DECODER_INVALID_ENCODING, 1, JSEXN_RANGEERR, "TextDecoder constructor: The given encoding '{0}' is not supported.") -MSG_DEF(JSMSG_TEXT_DECODER_DECODING_FAILED, 0, JSEXN_TYPEERR, "TextDecoder.decode: Decoding failed.") -MSG_DEF(JSMSG_TEXT_DECODER_OPTIONS_NOT_DICTIONARY, 0, JSEXN_TYPEERR, "TextDecoder constructor: options argument can't be converted to a dictionary.") -MSG_DEF(JSMSG_TEXT_DECODER_DECODE_OPTIONS_NOT_DICTIONARY, 0, JSEXN_TYPEERR, "TextDecoder.decode: options argument can't be converted to a dictionary.") -MSG_DEF(JSMSG_TEXT_ENCODER_ENCODEINTO_INVALID_ARRAY, 0, JSEXN_TYPEERR, "TextEncoder.encodeInto: Argument 2 does not implement interface Uint8Array.") -//clang-format on \ No newline at end of file diff --git a/include/errors.h b/include/errors.h new file mode 100644 index 00000000..15ceec9e --- /dev/null +++ b/include/errors.h @@ -0,0 +1,27 @@ +#ifndef CORE_ERRORS_H +#define CORE_ERRORS_H + +bool throw_error(JSContext* cx, const JSErrorFormatString &error, + const char* arg1 = nullptr, + const char* arg2 = nullptr, + const char* arg3 = nullptr, + const char* arg4 = nullptr); + +namespace Errors { +DEF_ERR(WrongReceiver, JSEXN_TYPEERR, "Method '{0}' called on receiver that's not an instance of {1}", 2) +DEF_ERR(NoCtorBuiltin, JSEXN_TYPEERR, "{0} builtin can't be instantiated directly", 1) +DEF_ERR(TypeError, JSEXN_TYPEERR, "{0}: {1} must {2}", 3) +DEF_ERR(CtorCalledWithoutNew, JSEXN_TYPEERR, "calling a builtin {0} constructor without new is forbidden", 1) +DEF_ERR(InvalidSequence, JSEXN_TYPEERR, "Failed to construct {0} object. If defined, the first " + "argument must be either a [ ['name', 'value'], ... ] sequence, " + "or a { 'name' : 'value', ... } record{1}.", 2) +DEF_ERR(InvalidBuffer, JSEXN_TYPEERR, "{0} must be of type ArrayBuffer or ArrayBufferView", 1) +DEF_ERR(ForEachCallback, JSEXN_TYPEERR, "Failed to execute 'forEach' on '{0}': " + "parameter 1 is not of type 'Function'", 1) +DEF_ERR(RequestHandlerOnly, JSEXN_TYPEERR, "{0} can only be used during request handling, " + "not during initialization", 1) +DEF_ERR(InitializationOnly, JSEXN_TYPEERR, "{0} can only be used during request handling, " + "not during initialization", 1) +}; // namespace Errors + +#endif // CORE_ERRORS_H diff --git a/include/extension-api.h b/include/extension-api.h index 1c0c8816..20cdb3bd 100644 --- a/include/extension-api.h +++ b/include/extension-api.h @@ -33,6 +33,7 @@ class AsyncTask; class Engine { + public: Engine(); JSContext *cx(); @@ -94,13 +95,13 @@ class Engine { /** * Add an event loop interest to track */ - void incr_event_loop_interest(const char *const debug); + void incr_event_loop_interest(); /** * Remove an event loop interest to track * The last decrementer marks the event loop as complete to finish */ - void decr_event_loop_interest(const char *const debug); + void decr_event_loop_interest(); /** * Get the JS value associated with the top-level script execution - @@ -110,7 +111,7 @@ class Engine { bool has_pending_async_tasks(); void queue_async_task(AsyncTask *task); - bool cancel_async_task(int32_t id); + bool cancel_async_task(AsyncTask *task); void abort(const char *reason); @@ -140,17 +141,21 @@ class AsyncTask { return handle_; } + [[nodiscard]] virtual uint64_t deadline() { + return 0; + } + virtual void trace(JSTracer *trc) = 0; /** * Select for the next available ready task, providing the oldest ready first. */ - static size_t select(std::vector *handles); + static size_t select(std::vector &handles); /** * Non-blocking check for a ready task, providing the oldest ready first, if any. */ - static std::optional ready(std::vector *handles); + static std::optional ready(std::vector &handles); }; } // namespace api diff --git a/include/host_api.h b/include/host_api.h index 55fa0e89..54ec4f38 100644 --- a/include/host_api.h +++ b/include/host_api.h @@ -146,6 +146,11 @@ struct HostString final { return jsurl::SpecString(reinterpret_cast(this->ptr.release()), this->len, this->len); } + + /// Conversion to a `jsurl::SpecString`. + operator const jsurl::SpecString() const { + return jsurl::SpecString(reinterpret_cast(this->ptr.get()), this->len, this->len); + } }; struct HostBytes final { diff --git a/runtime/builtin.cpp b/runtime/builtin.cpp index 7d1c03cd..ea092543 100644 --- a/runtime/builtin.cpp +++ b/runtime/builtin.cpp @@ -1,19 +1,30 @@ #include "builtin.h" -const JSErrorFormatString *GetErrorMessage(void *userRef, unsigned errorNumber) { - if (errorNumber > 0 && errorNumber < JSErrNum_Limit) { - return &js_ErrorFormatString[errorNumber]; +static const JSErrorFormatString *GetErrorMessageFromRef(void *userRef, unsigned errorNumber) { + auto error = static_cast(userRef); + + JS::ConstUTF8CharsZ(error->format, strlen(error->format)); + return error; +} + +bool api::throw_error(JSContext* cx, const JSErrorFormatString &error, + const char* arg1, const char* arg2, const char* arg3, const char* arg4) { + const char** args = nullptr; + const char* list[4] = { arg1, arg2, arg3, arg4 }; + if (arg1) { + args = list; } - return nullptr; + JS_ReportErrorNumberUTF8Array(cx, GetErrorMessageFromRef, + const_cast(&error), 0, args); + return false; } std::optional> value_to_buffer(JSContext *cx, JS::HandleValue val, const char *val_desc) { if (!val.isObject() || !(JS_IsArrayBufferViewObject(&val.toObject()) || JS::IsArrayBufferObject(&val.toObject()))) { - JS_ReportErrorNumberUTF8(cx, GetErrorMessage, nullptr, JSMSG_INVALID_BUFFER_ARG, val_desc, - val.type()); + api::throw_error(cx, api::Errors::InvalidBuffer, val_desc); return std::nullopt; } diff --git a/runtime/engine.cpp b/runtime/engine.cpp index c1cf17f9..dca28665 100644 --- a/runtime/engine.cpp +++ b/runtime/engine.cpp @@ -479,12 +479,12 @@ bool api::Engine::run_event_loop_until_interest() { return core::EventLoop::run_event_loop_until_interest(this, 0); } -void api::Engine::incr_event_loop_interest(const char *const debug) { - return core::EventLoop::incr_event_loop_interest(debug); +void api::Engine::incr_event_loop_interest() { + return core::EventLoop::incr_event_loop_interest(); } -void api::Engine::decr_event_loop_interest(const char *const debug) { - return core::EventLoop::decr_event_loop_interest(debug); +void api::Engine::decr_event_loop_interest() { + return core::EventLoop::decr_event_loop_interest(); } bool api::Engine::dump_value(JS::Value val, FILE *fp) { return ::dump_value(CONTEXT, val, fp); } @@ -503,6 +503,6 @@ bool api::Engine::debug_logging_enabled() { return ::debug_logging_enabled(); } bool api::Engine::has_pending_async_tasks() { return core::EventLoop::has_pending_async_tasks(); } void api::Engine::queue_async_task(AsyncTask *task) { core::EventLoop::queue_async_task(task); } -bool api::Engine::cancel_async_task(int32_t id) { - return core::EventLoop::cancel_async_task(this, id); +bool api::Engine::cancel_async_task(AsyncTask *task) { + return core::EventLoop::cancel_async_task(this, task); } diff --git a/runtime/event_loop.cpp b/runtime/event_loop.cpp index 5d518664..1975b713 100644 --- a/runtime/event_loop.cpp +++ b/runtime/event_loop.cpp @@ -24,15 +24,17 @@ static PersistentRooted queue; namespace core { -void EventLoop::queue_async_task(api::AsyncTask *task) { queue.get().tasks.emplace_back(task); } +void EventLoop::queue_async_task(api::AsyncTask *task) { + MOZ_ASSERT(task); + queue.get().tasks.emplace_back(task); +} -bool EventLoop::cancel_async_task(api::Engine *engine, const int32_t id) { +bool EventLoop::cancel_async_task(api::Engine *engine, api::AsyncTask *task) { const auto tasks = &queue.get().tasks; for (auto it = tasks->begin(); it != tasks->end(); ++it) { - const auto task = *it; - if (task->id() == id) { - task->cancel(engine); + if (*it == task) { tasks->erase(it); + task->cancel(engine); return true; } } @@ -41,15 +43,11 @@ bool EventLoop::cancel_async_task(api::Engine *engine, const int32_t id) { bool EventLoop::has_pending_async_tasks() { return !queue.get().tasks.empty(); } -void EventLoop::incr_event_loop_interest(const char *const debug) { - queue.get().interest_cnt++; - LOG("EventLoop::incr_event_loop_interest: %s, %d", debug, queue.get().interest_cnt); -} +void EventLoop::incr_event_loop_interest() { queue.get().interest_cnt++; } -void EventLoop::decr_event_loop_interest(const char *const debug) { +void EventLoop::decr_event_loop_interest() { MOZ_ASSERT(queue.get().interest_cnt > 0); queue.get().interest_cnt--; - LOG("EventLoop::decr_event_loop_interest: %s %d", debug, queue.get().interest_cnt); } inline bool interest_complete() { return queue.get().interest_cnt == 0; } @@ -91,7 +89,7 @@ bool EventLoop::run_event_loop(api::Engine *engine, double total_compute) { } exit_event_loop(); fprintf(stderr, "event loop error - both task and job queues are empty, but expected " - "operations did not resolve\n"); + "operations did not resolve"); return false; } @@ -101,18 +99,18 @@ bool EventLoop::run_event_loop(api::Engine *engine, double total_compute) { if (interest_complete()) { // Perform a non-blocking select in the case of there being no event loop interest // (we are thus only performing a "single tick", but must still progress work that is ready) - std::optional maybe_task_idx = api::AsyncTask::ready(tasks); + std::optional maybe_task_idx = api::AsyncTask::ready(*tasks); if (!maybe_task_idx.has_value()) { break; } task_idx = maybe_task_idx.value(); } else { - task_idx = api::AsyncTask::select(tasks); + task_idx = api::AsyncTask::select(*tasks); } auto task = tasks->at(task_idx); - bool success = task->run(engine); tasks->erase(tasks->begin() + task_idx); + bool success = task->run(engine); if (!success) { exit_event_loop(); return false; diff --git a/runtime/event_loop.h b/runtime/event_loop.h index dca483de..d551ae24 100644 --- a/runtime/event_loop.h +++ b/runtime/event_loop.h @@ -26,14 +26,14 @@ class EventLoop { /** * Run the event loop until all interests are complete. - * See run_in extension-api.h for the complete description. + * See run_event_loop in extension-api.h for the complete description. */ static bool run_event_loop(api::Engine *engine, double total_compute); static bool run_event_loop_until_interest(api::Engine *engine, double total_compute); - static void incr_event_loop_interest(const char *const debug); - static void decr_event_loop_interest(const char *const debug); + static void incr_event_loop_interest(); + static void decr_event_loop_interest(); /** * Select on the next async tasks @@ -48,7 +48,7 @@ class EventLoop { /** * Remove a queued async task. */ - static bool cancel_async_task(api::Engine *engine, int32_t id); + static bool cancel_async_task(api::Engine *engine, api::AsyncTask *task); }; } // namespace core diff --git a/runtime/sequence.hpp b/runtime/sequence.hpp index b88611b6..82cb9394 100644 --- a/runtime/sequence.hpp +++ b/runtime/sequence.hpp @@ -4,23 +4,15 @@ // TODO: remove these once the warnings are fixed #pragma clang diagnostic push #pragma clang diagnostic ignored "-Winvalid-offsetof" +#include "js/ForOfIterator.h" #include "jsapi.h" #include "jsfriendapi.h" -#include "js/ForOfIterator.h" + +#include #pragma clang diagnostic pop namespace core { -inline bool report_sequence_or_record_arg_error(JSContext *cx, const char *name, - const char *alt_text) { - JS_ReportErrorUTF8(cx, - "Failed to construct %s object. If defined, the first " - "argument must be either a [ ['name', 'value'], ... ] sequence, " - "or a { 'name' : 'value', ... } record%s.", - name, alt_text); - return false; -} - /** * Extract pairs from the given value if it is either a * sequence or a record. @@ -57,14 +49,14 @@ bool maybe_consume_sequence_or_record(JSContext *cx, JS::HandleValue initv, JS:: break; if (!entry.isObject()) - return report_sequence_or_record_arg_error(cx, ctor_name, alt_text); + return api::throw_error(cx, api::Errors::InvalidSequence, ctor_name, alt_text); JS::ForOfIterator entr_iter(cx); if (!entr_iter.init(entry, JS::ForOfIterator::AllowNonIterable)) return false; if (!entr_iter.valueIsIterable()) - return report_sequence_or_record_arg_error(cx, ctor_name, alt_text); + return api::throw_error(cx, api::Errors::InvalidSequence, ctor_name, alt_text); { bool done; @@ -73,19 +65,19 @@ bool maybe_consume_sequence_or_record(JSContext *cx, JS::HandleValue initv, JS:: if (!entr_iter.next(&key, &done)) return false; if (done) - return report_sequence_or_record_arg_error(cx, ctor_name, alt_text); + return api::throw_error(cx, api::Errors::InvalidSequence, ctor_name, alt_text); // Extract value. if (!entr_iter.next(&value, &done)) return false; if (done) - return report_sequence_or_record_arg_error(cx, ctor_name, alt_text); + return api::throw_error(cx, api::Errors::InvalidSequence, ctor_name, alt_text); // Ensure that there aren't any further entries. if (!entr_iter.next(&entry, &done)) return false; if (!done) - return report_sequence_or_record_arg_error(cx, ctor_name, alt_text); + return api::throw_error(cx, api::Errors::InvalidSequence, ctor_name, alt_text); if (!apply(cx, target, key, value, ctor_name)) return false; diff --git a/tests/e2e/stream-forwarding/expect_serve_body.txt b/tests/e2e/stream-forwarding/expect_serve_body.txt new file mode 100644 index 00000000..94954abd --- /dev/null +++ b/tests/e2e/stream-forwarding/expect_serve_body.txt @@ -0,0 +1,2 @@ +hello +world diff --git a/tests/e2e/stream-forwarding/stream-forwarding.js b/tests/e2e/stream-forwarding/stream-forwarding.js new file mode 100644 index 00000000..af2aafd6 --- /dev/null +++ b/tests/e2e/stream-forwarding/stream-forwarding.js @@ -0,0 +1,29 @@ +addEventListener('fetch', async (event) => { + try { + if (event.request.url.endsWith('/nested')) { + let encoder = new TextEncoder(); + let body = new TransformStream({ + start(controller) { + }, + transform(chunk, controller) { + controller.enqueue(encoder.encode(chunk)); + }, + flush(controller) { + } + }); + let writer = body.writable.getWriter(); + event.respondWith(new Response(body.readable)); + await writer.write('hello\n'); + await writer.write('world\n'); + writer.close(); + return; + } + + let resolve; + event.respondWith(new Promise((r) => resolve = r)); + let response = await fetch(event.request.url + 'nested'); + resolve(new Response(response.body, response)); + } catch (e) { + console.error(e); + } +}); diff --git a/tests/integration/assert.js b/tests/integration/assert.js index 64534f83..f0c71f41 100644 --- a/tests/integration/assert.js +++ b/tests/integration/assert.js @@ -70,7 +70,7 @@ export function throws(func, errorClass, errorMessage) { throw new AssertionError(`Expected \`${func.toString()}\` to throw, but it didn't`); } -export async function rejects(asyncFunc, errorClass, errorMessage) { +export async function rejects(asyncFunc, errorClass, errorMessage, errorName) { try { await asyncFunc(); } catch (err) { @@ -78,6 +78,9 @@ export async function rejects(asyncFunc, errorClass, errorMessage) { if (!(err instanceof errorClass)) { throw new AssertionError(`not expected error instance calling \`${asyncFunc.toString()}\``, errorMessage, err.name + ': ' + err.message, errorClass.name); } + if (errorClass === DOMException && errorName && err.name !== errorName) { + throw new AssertionError(`expected error name ${errorName} but got ${err.name} when calling \`${asyncFunc.toString()}\``); + } } if (errorMessage) { if (err.message !== errorMessage) { diff --git a/tests/integration/crypto/crypto.js b/tests/integration/crypto/crypto.js index 28967285..f2fc9835 100644 --- a/tests/integration/crypto/crypto.js +++ b/tests/integration/crypto/crypto.js @@ -103,8 +103,7 @@ export const handler = serveTest(async (t) => { () => { new crypto.subtle.importKey(); }, - TypeError, - "crypto.subtle.importKey is not a constructor" + TypeError ); }); await t.test("subtle.importKey.called-with-wrong-this", async () => { @@ -120,8 +119,7 @@ export const handler = serveTest(async (t) => { publicRsaJsonWebKeyData.key_ops ); }, - TypeError, - "Method SubtleCrypto.importKey called on receiver that's not an instance of SubtleCrypto" + TypeError ); }); await t.test("subtle.importKey.called-with-no-arguments", async () => { @@ -129,8 +127,7 @@ export const handler = serveTest(async (t) => { async () => { await crypto.subtle.importKey(); }, - TypeError, - "SubtleCrypto.importKey: At least 5 arguments required, but only 0 passed" + TypeError ); }); @@ -164,7 +161,7 @@ export const handler = serveTest(async (t) => { } ); await t.test( - "subtle.importKey.first-parameter-non-existant-format", + "subtle.importKey.first-parameter-non-existent-format", async () => { const publicRsaJsonWebKeyData = createPublicRsaJsonWebKeyData(); await rejects( @@ -177,8 +174,7 @@ export const handler = serveTest(async (t) => { publicRsaJsonWebKeyData.key_ops ); }, - Error, - "Provided format parameter is not supported. Supported formats are: 'spki', 'pkcs8', 'jwk', and 'raw'" + DOMException, null, "NotSupportedError" ); } ); @@ -200,8 +196,7 @@ export const handler = serveTest(async (t) => { publicRsaJsonWebKeyData.key_ops ); }, - Error, - "The provided value is not of type JsonWebKey" + TypeError ); } ); @@ -222,8 +217,7 @@ export const handler = serveTest(async (t) => { publicRsaJsonWebKeyData.key_ops ); }, - DOMException, - "Data provided to an operation does not meet requirements" + DOMException, null, "DataError" ); } ); @@ -270,8 +264,7 @@ export const handler = serveTest(async (t) => { publicRsaJsonWebKeyData.key_ops ); }, - Error, - "The JWK member 'e' could not be base64url decoded or contained padding" + DOMException, null, "DataError" ); } ); @@ -290,8 +283,7 @@ export const handler = serveTest(async (t) => { publicRsaJsonWebKeyData.key_ops ); }, - Error, - "The required JWK member 'kty' was missing" + TypeError ); } ); @@ -310,8 +302,7 @@ export const handler = serveTest(async (t) => { publicRsaJsonWebKeyData.key_ops ); }, - Error, - "The JWK 'kty' member was not 'RSA'" + DOMException, null, "DataError" ); } ); @@ -346,8 +337,7 @@ export const handler = serveTest(async (t) => { key_ops ); }, - Error, - "Failed to read the 'key_ops' property from 'JsonWebKey': The provided value cannot be converted to a sequence" + DOMException, null, "DataError" ); } ); @@ -383,8 +373,7 @@ export const handler = serveTest(async (t) => { key_ops ); }, - Error, - "The 'key_ops' member of the JWK dictionary contains duplicate usages" + DOMException, null, "DataError" ); } ); @@ -404,8 +393,7 @@ export const handler = serveTest(async (t) => { key_ops ); }, - TypeError, - "Invalid keyUsages argument" + DOMException, null, "DataError" ); } ); @@ -456,8 +444,7 @@ export const handler = serveTest(async (t) => { publicRsaJsonWebKeyData.key_ops ); }, - Error, - "Data provided to an operation does not meet requirements" + DOMException, null, "DataError" ); } ); @@ -504,8 +491,7 @@ export const handler = serveTest(async (t) => { publicRsaJsonWebKeyData.key_ops ); }, - Error, - "The JWK member 'n' could not be base64url decoded or contained padding" + DOMException, null, "DataError" ); } ); @@ -531,8 +517,7 @@ export const handler = serveTest(async (t) => { publicEcdsaJsonWebKeyData.key_ops ); }, - DOMException, - "Data provided to an operation does not meet requirements" + DOMException, null, "DataError" ); } ); @@ -579,8 +564,7 @@ export const handler = serveTest(async (t) => { publicEcdsaJsonWebKeyData.key_ops ); }, - Error, - "The JWK member 'x' could not be base64url decoded or contained padding" + DOMException, null, "DataError" ); } ); @@ -599,8 +583,7 @@ export const handler = serveTest(async (t) => { publicEcdsaJsonWebKeyData.key_ops ); }, - DOMException, - "Data provided to an operation does not meet requirements" + DOMException, null, "DataError" ); } ); @@ -647,8 +630,7 @@ export const handler = serveTest(async (t) => { publicEcdsaJsonWebKeyData.key_ops ); }, - Error, - "The JWK member 'y' could not be base64url decoded or contained padding" + DOMException, null, "DataError" ); } ); @@ -667,8 +649,7 @@ export const handler = serveTest(async (t) => { publicEcdsaJsonWebKeyData.key_ops ); }, - Error, - "The required JWK member 'kty' was missing" + TypeError ); } ); @@ -687,8 +668,7 @@ export const handler = serveTest(async (t) => { publicEcdsaJsonWebKeyData.key_ops ); }, - Error, - "The JWK 'kty' member was not 'EC'" + DOMException, null, "DataError" ); } ); @@ -723,8 +703,7 @@ export const handler = serveTest(async (t) => { key_ops ); }, - Error, - "Failed to read the 'key_ops' property from 'JsonWebKey': The provided value cannot be converted to a sequence" + DOMException, null, "DataError" ); } ); @@ -760,8 +739,7 @@ export const handler = serveTest(async (t) => { key_ops ); }, - Error, - "The 'key_ops' member of the JWK dictionary contains duplicate usages" + DOMException, null, "DataError" ); } ); @@ -781,8 +759,7 @@ export const handler = serveTest(async (t) => { key_ops ); }, - TypeError, - "Invalid keyUsages argument" + DOMException, null, "DataError" ); } ); @@ -863,8 +840,7 @@ export const handler = serveTest(async (t) => { privateEcdsaJsonWebKeyData.key_ops ); }, - Error, - "The JWK member 'd' could not be base64url decoded or contained padding" + DOMException, null, "DataError" ); } ); @@ -888,8 +864,7 @@ export const handler = serveTest(async (t) => { publicRsaJsonWebKeyData.key_ops ); }, - Error, - "Algorithm: Unrecognized name" + DOMException, null, "NotSupportedError" ); }); await t.test( @@ -936,8 +911,7 @@ export const handler = serveTest(async (t) => { publicRsaJsonWebKeyData.key_ops ); }, - Error, - "Algorithm: Unrecognized name" + DOMException, null, "NotSupportedError" ); } ); @@ -985,8 +959,7 @@ export const handler = serveTest(async (t) => { publicRsaJsonWebKeyData.key_ops ); }, - Error, - "The JWK 'alg' member was inconsistent with that specified by the Web Crypto call" + DOMException, null, "DataError" ); } ); @@ -1006,8 +979,7 @@ export const handler = serveTest(async (t) => { undefined ); }, - Error, - "The provided value cannot be converted to a sequence" + TypeError ); }); await t.test("subtle.importKey.fifth-parameter-invalid", async () => { @@ -1022,8 +994,7 @@ export const handler = serveTest(async (t) => { ["jake"] ); }, - Error, - "SubtleCrypto.importKey: Invalid keyUsages argument" + TypeError ); }); await t.test( @@ -1057,8 +1028,7 @@ export const handler = serveTest(async (t) => { ["sign"] ); }, - Error, - "The JWK 'key_ops' member was inconsistent with that specified by the Web Crypto call. The JWK usage must be a superset of those requested" + DOMException, null, "DataError" ); } ); @@ -1244,8 +1214,7 @@ export const handler = serveTest(async (t) => { () => { new crypto.subtle.digest(); }, - TypeError, - "crypto.subtle.digest is not a constructor" + TypeError ); }); await t.test("subtle.digest.called-with-wrong-this", async () => { @@ -1254,7 +1223,6 @@ export const handler = serveTest(async (t) => { await crypto.subtle.digest.call(undefined); }, TypeError, - "Method SubtleCrypto.digest called on receiver that's not an instance of SubtleCrypto" ); }); await t.test("subtle.digest.called-with-no-arguments", async () => { @@ -1263,7 +1231,6 @@ export const handler = serveTest(async (t) => { await crypto.subtle.digest(); }, TypeError, - "SubtleCrypto.digest: At least 2 arguments required, but only 0 passed" ); }); @@ -1294,14 +1261,13 @@ export const handler = serveTest(async (t) => { } ); await t.test( - "subtle.digest.first-parameter-non-existant-format", + "subtle.digest.first-parameter-non-existent-format", async () => { await rejects( async () => { await crypto.subtle.digest("jake", data); }, - Error, - "Algorithm: Unrecognized name" + DOMException, null, "NotSupportedError" ); } ); @@ -1313,8 +1279,7 @@ export const handler = serveTest(async (t) => { async () => { await crypto.subtle.digest("sha-1", undefined); }, - Error, - 'SubtleCrypto.digest: data must be of type ArrayBuffer or ArrayBufferView but got ""' + TypeError, ); }); } @@ -1412,8 +1377,7 @@ export const handler = serveTest(async (t) => { () => { new crypto.subtle.sign(); }, - TypeError, - "crypto.subtle.sign is not a constructor" + TypeError ); }); await t.test("subtle.sign.called-with-wrong-this", async () => { @@ -1428,7 +1392,6 @@ export const handler = serveTest(async (t) => { ); }, TypeError, - "Method SubtleCrypto.sign called on receiver that's not an instance of SubtleCrypto" ); }); await t.test("subtle.sign.called-with-no-arguments", async () => { @@ -1437,7 +1400,6 @@ export const handler = serveTest(async (t) => { await crypto.subtle.sign(); }, TypeError, - "SubtleCrypto.sign: At least 3 arguments required, but only 0 passed" ); }); // first-parameter @@ -1476,7 +1438,7 @@ export const handler = serveTest(async (t) => { } ); await t.test( - "subtle.sign.first-parameter-non-existant-algorithm", + "subtle.sign.first-parameter-non-existent-algorithm", async () => { const privateRsaJsonWebKeyData = createPrivateRsaJsonWebKeyData(); await rejects( @@ -1490,8 +1452,7 @@ export const handler = serveTest(async (t) => { ); await crypto.subtle.sign("jake", key, data); }, - Error, - "Algorithm: Unrecognized name" + DOMException, null, "NotSupportedError" ); } ); @@ -1507,8 +1468,7 @@ export const handler = serveTest(async (t) => { data ); }, - Error, - "parameter 2 is not of type 'CryptoKey'" + TypeError ); }); await t.test("subtle.sign.second-parameter-invalid-usages", async () => { @@ -1524,8 +1484,7 @@ export const handler = serveTest(async (t) => { ); await crypto.subtle.sign(createRsaJsonWebKeyAlgorithm(), key, data); }, - Error, - "CryptoKey doesn't support signing" + DOMException, null, "InvalidAccessError" ); }); } @@ -1548,8 +1507,7 @@ export const handler = serveTest(async (t) => { undefined ); }, - Error, - 'SubtleCrypto.sign: data must be of type ArrayBuffer or ArrayBufferView but got ""' + TypeError ); }); } @@ -1666,8 +1624,7 @@ export const handler = serveTest(async (t) => { () => { new crypto.subtle.verify(); }, - TypeError, - "crypto.subtle.verify is not a constructor" + TypeError ); }); await t.test("subtle.verify.called-with-wrong-this", async () => { @@ -1690,7 +1647,6 @@ export const handler = serveTest(async (t) => { ); }, TypeError, - "Method SubtleCrypto.verify called on receiver that's not an instance of SubtleCrypto" ); }); await t.test("subtle.verify.called-with-no-arguments", async () => { @@ -1699,7 +1655,6 @@ export const handler = serveTest(async (t) => { await crypto.subtle.verify(); }, TypeError, - "SubtleCrypto.verify: At least 4 arguments required, but only 0 passed" ); }); // first-parameter @@ -1739,7 +1694,7 @@ export const handler = serveTest(async (t) => { } ); await t.test( - "subtle.verify.first-parameter-non-existant-algorithm", + "subtle.verify.first-parameter-non-existent-algorithm", async () => { const publicRsaJsonWebKeyData = createPublicRsaJsonWebKeyData(); await rejects( @@ -1758,8 +1713,7 @@ export const handler = serveTest(async (t) => { new Uint8Array() ); }, - Error, - "Algorithm: Unrecognized name" + DOMException, null, "NotSupportedError" ); } ); @@ -1778,8 +1732,7 @@ export const handler = serveTest(async (t) => { new Uint8Array() ); }, - Error, - "parameter 2 is not of type 'CryptoKey'" + TypeError ); } ); @@ -1803,8 +1756,7 @@ export const handler = serveTest(async (t) => { new Uint8Array() ); }, - Error, - "CryptoKey doesn't support verification" + DOMException, null, "InvalidAccessError" ); } ); @@ -1829,8 +1781,7 @@ export const handler = serveTest(async (t) => { new Uint8Array() ); }, - Error, - 'SubtleCrypto.verify: signature (argument 3) must be of type ArrayBuffer or ArrayBufferView but got ""' + TypeError ); }); } @@ -1856,8 +1807,7 @@ export const handler = serveTest(async (t) => { undefined ); }, - Error, - 'SubtleCrypto.verify: data (argument 4) must be of type ArrayBuffer or ArrayBufferView but got ""' + TypeError ); } ); diff --git a/tests/integration/fetchsync/fetchsync.js b/tests/integration/fetchsync/fetchsync.js index 2f56e37b..c99fd063 100644 --- a/tests/integration/fetchsync/fetchsync.js +++ b/tests/integration/fetchsync/fetchsync.js @@ -44,6 +44,7 @@ export const handler = serveTest(async (t) => { }); function testGetJsonArray(url, length) { + console.log(`testGetJsonArray: ${url}, ${length}`); let result = syncGetJson(url); assert(result != null, 'result is not nullish'); assert(result['length'] === length, `length == ${length}`); @@ -51,6 +52,7 @@ function testGetJsonArray(url, length) { } function testGetTextArray(url, length) { + console.log(`testGetTextArray: ${url}, ${length}`); let textResult = syncGetText(url); let result = JSON.parse(textResult); assert(result != null, 'result is not nullish'); @@ -59,6 +61,7 @@ function testGetTextArray(url, length) { } function testPatchJson(url, body) { + console.log(`testPatchJson: ${url}, ${body}`); let result = syncPatchJson(url, body); for (let key of Object.keys(body)) { assert(result[key] != null, `result[${key}] is not nullish`); @@ -67,6 +70,7 @@ function testPatchJson(url, body) { } function testPatchText(url, body) { + console.log(`testPatchText: ${url}, ${body}`); let textResult = syncPatchText(url, body); let result = JSON.parse(textResult); for (let key of Object.keys(body)) { diff --git a/tests/integration/handlers.js b/tests/integration/handlers.js index ac0ff100..fa0d59a8 100644 --- a/tests/integration/handlers.js +++ b/tests/integration/handlers.js @@ -1,6 +1,6 @@ export { handler as btoa } from './btoa/btoa.js'; export { handler as performance } from './performance/performance.js'; export { handler as crypto } from './crypto/crypto.js'; -// Disabled for now -// export { handler as fetchsync } from './fetchsync/fetchsync.js'; +export { handler as fetchsync } from './fetchsync/fetchsync.js'; export { handler as timers } from './timers/timers.js'; +export { handler as headers } from './headers/headers.js'; diff --git a/tests/integration/headers/headers.js b/tests/integration/headers/headers.js new file mode 100644 index 00000000..bccc8293 --- /dev/null +++ b/tests/integration/headers/headers.js @@ -0,0 +1,9 @@ +import { serveTest } from '../test-server.js'; +import { strictEqual } from '../assert.js'; + +export const handler = serveTest(async (t) => { + await t.test('non-ascii-latin1-field-value', async () => { + const response = await fetch("https://http-me.glitch.me/meow?header=cat:é"); + strictEqual(response.headers.get('cat'), "é"); + }); +}); diff --git a/tests/integration/test-server.js b/tests/integration/test-server.js index 4f1e81b2..2e75d1f4 100644 --- a/tests/integration/test-server.js +++ b/tests/integration/test-server.js @@ -35,6 +35,21 @@ export function serveTest (handler) { curSubtest = null; subtestCnt++; } + }, + async asyncTest (name, subtest) { + if (!filter(name)) + return; + curSubtest = name; + let resolve, reject; + let promise = new Promise((res, rej) => { + resolve = res; + reject = rej; + }); + subtest(resolve, reject); + evt.waitUntil(promise); + await promise; + curSubtest = null; + subtestCnt++; } }); } diff --git a/tests/integration/timers/timers.js b/tests/integration/timers/timers.js index feb85d1a..0017282b 100644 --- a/tests/integration/timers/timers.js +++ b/tests/integration/timers/timers.js @@ -1,36 +1,51 @@ import { serveTest } from "../test-server.js"; -import { assert, strictEqual, throws, deepStrictEqual } from "../assert.js"; +import { assert, strictEqual, throws, deepStrictEqual, AssertionError } from "../assert.js"; export const handler = serveTest(async (t) => { - await t.test("setTimeout", async () => { + await t.asyncTest("clearTimeout invalid", (resolve, reject) => { + // cleartimeout can be called with arbitrary stuff + clearTimeout('blah'); + + const dontDeleteTimeout = setTimeout(resolve, 100); + + // null converts to zero, which must not delete a real timer + clearTimeout(null); + }); + + await t.asyncTest("setTimeout-order", (resolve, reject) => { let first = false; - return new Promise((resolve, reject) => { - setTimeout(() => { - first = true; - }, 10); - setTimeout(() => { - try { - assert(first, 'first timeout should trigger first'); - } catch (e) { - reject(e); - return; - } + setTimeout(() => { + first = true; + }, 10); + setTimeout(() => { + try { + assert(first, 'first timeout should trigger first'); + } catch (e) { + reject(e); + return; + } + resolve(); + }, 20); + }); + await t.asyncTest("setInterval-10-times", (resolve, reject) => { + let timeout = setTimeout(() => { + reject(new AssertionError("Expected setInterval to be called 10 times quickly")); + }, 1000); + let cnt = 0; + let interval = setInterval(() => { + cnt++; + if (cnt === 10) { + clearTimeout(timeout); + clearInterval(interval); resolve(); - }, 20); + } }); }); - await t.test("setInterval", async () => { - return new Promise((resolve, reject) => { - setTimeout(() => { - reject(new AssertionError("Expected setInterval to be called 10 times quickly")); - }, 1000); - let cnt = 0; - setInterval(() => { - cnt++; - if (cnt === 10) - resolve(); - }); - }); + await t.asyncTest("setTimeout-cleared-in-callback", (resolve, reject) => { + let id = setTimeout.call(undefined, () => { + clearTimeout(id); + resolve(); + }, 1); }); t.test("setInterval-exposed-as-global", () => { strictEqual(typeof setInterval, "function", `typeof setInterval`); @@ -129,10 +144,8 @@ export const handler = serveTest(async (t) => { throws( () => { setInterval(type); - // TODO: Make a TypeError }, - Error, - `First argument to setInterval must be a function` + TypeError ); } }); @@ -284,10 +297,8 @@ export const handler = serveTest(async (t) => { throws( () => { setTimeout(type); - // TODO: Make a TypeError }, - Error, - `First argument to setTimeout must be a function` + TypeError, ); } }); @@ -343,6 +354,9 @@ export const handler = serveTest(async (t) => { t.test("setTimeout-called-unbound", () => { setTimeout.call(undefined, () => {}, 1); }); + t.test("setTimeout-cleared-in-callback", () => { + let id = setTimeout.call(undefined, () => { clearTimeout(id); }, 1); + }); t.test("clearInterval-exposed-as-global", () => { deepStrictEqual(typeof clearInterval, "function", `typeof clearInterval`); diff --git a/tests/tests.cmake b/tests/tests.cmake index 1d7be519..cf3c5e42 100644 --- a/tests/tests.cmake +++ b/tests/tests.cmake @@ -38,6 +38,6 @@ test_e2e(tla-runtime-resolve) test_integration(btoa) test_integration(performance) test_integration(crypto) -# Disabled for now +test_integration(headers) # test_integration(fetchsync) test_integration(timers) diff --git a/tests/wpt-harness/expectations/WebCryptoAPI/getRandomValues.any.js.json b/tests/wpt-harness/expectations/WebCryptoAPI/getRandomValues.any.js.json index 42c44670..877f4a9f 100644 --- a/tests/wpt-harness/expectations/WebCryptoAPI/getRandomValues.any.js.json +++ b/tests/wpt-harness/expectations/WebCryptoAPI/getRandomValues.any.js.json @@ -1,4 +1,7 @@ { + "Float16 arrays": { + "status": "PASS" + }, "Float arrays": { "status": "PASS" }, diff --git a/tests/wpt-harness/expectations/WebCryptoAPI/idlharness.https.any.js.json b/tests/wpt-harness/expectations/WebCryptoAPI/idlharness.https.any.js.json index 32f0e4bd..35e383e6 100644 --- a/tests/wpt-harness/expectations/WebCryptoAPI/idlharness.https.any.js.json +++ b/tests/wpt-harness/expectations/WebCryptoAPI/idlharness.https.any.js.json @@ -149,7 +149,7 @@ "SubtleCrypto interface: operation deriveKey(AlgorithmIdentifier, CryptoKey, AlgorithmIdentifier, boolean, sequence)": { "status": "FAIL" }, - "SubtleCrypto interface: operation deriveBits(AlgorithmIdentifier, CryptoKey, unsigned long)": { + "SubtleCrypto interface: operation deriveBits(AlgorithmIdentifier, CryptoKey, optional unsigned long?)": { "status": "FAIL" }, "SubtleCrypto interface: operation importKey(KeyFormat, (BufferSource or JsonWebKey), AlgorithmIdentifier, boolean, sequence)": { @@ -212,10 +212,10 @@ "SubtleCrypto interface: calling deriveKey(AlgorithmIdentifier, CryptoKey, AlgorithmIdentifier, boolean, sequence) on crypto.subtle with too few arguments must throw TypeError": { "status": "FAIL" }, - "SubtleCrypto interface: crypto.subtle must inherit property \"deriveBits(AlgorithmIdentifier, CryptoKey, unsigned long)\" with the proper type": { + "SubtleCrypto interface: crypto.subtle must inherit property \"deriveBits(AlgorithmIdentifier, CryptoKey, optional unsigned long?)\" with the proper type": { "status": "FAIL" }, - "SubtleCrypto interface: calling deriveBits(AlgorithmIdentifier, CryptoKey, unsigned long) on crypto.subtle with too few arguments must throw TypeError": { + "SubtleCrypto interface: calling deriveBits(AlgorithmIdentifier, CryptoKey, optional unsigned long?) on crypto.subtle with too few arguments must throw TypeError": { "status": "FAIL" }, "SubtleCrypto interface: crypto.subtle must inherit property \"importKey(KeyFormat, (BufferSource or JsonWebKey), AlgorithmIdentifier, boolean, sequence)\" with the proper type": { diff --git a/tests/wpt-harness/expectations/WebCryptoAPI/import_export/ec_importKey.https.any.js.json b/tests/wpt-harness/expectations/WebCryptoAPI/import_export/ec_importKey.https.any.js.json index 0e90e693..1dd7e8e4 100644 --- a/tests/wpt-harness/expectations/WebCryptoAPI/import_export/ec_importKey.https.any.js.json +++ b/tests/wpt-harness/expectations/WebCryptoAPI/import_export/ec_importKey.https.any.js.json @@ -1,4 +1,19 @@ { + "Good parameters: P-256 bits (spki, buffer(91), {name: ECDSA, namedCurve: P-256}, true, [verify])": { + "status": "FAIL" + }, + "Good parameters: P-256 bits (spki, buffer(59, compressed), {name: ECDSA, namedCurve: P-256}, true, [verify])": { + "status": "FAIL" + }, + "Good parameters: P-256 bits (jwk, object(kty, crv, x, y), {name: ECDSA, namedCurve: P-256}, true, [verify])": { + "status": "FAIL" + }, + "Good parameters: P-256 bits (raw, buffer(65), {name: ECDSA, namedCurve: P-256}, true, [verify])": { + "status": "FAIL" + }, + "Good parameters: P-256 bits (raw, buffer(33, compressed), {name: ECDSA, namedCurve: P-256}, true, [verify])": { + "status": "FAIL" + }, "Good parameters: P-256 bits (spki, buffer(91), {name: ECDSA, namedCurve: P-256}, true, [])": { "status": "FAIL" }, @@ -14,18 +29,54 @@ "Good parameters: P-256 bits (raw, buffer(33, compressed), {name: ECDSA, namedCurve: P-256}, true, [])": { "status": "FAIL" }, + "Good parameters: P-256 bits (spki, buffer(91), {name: ECDSA, namedCurve: P-256}, true, [verify, verify])": { + "status": "FAIL" + }, + "Good parameters: P-256 bits (spki, buffer(59, compressed), {name: ECDSA, namedCurve: P-256}, true, [verify, verify])": { + "status": "FAIL" + }, + "Good parameters: P-256 bits (jwk, object(kty, crv, x, y), {name: ECDSA, namedCurve: P-256}, true, [verify, verify])": { + "status": "FAIL" + }, + "Good parameters: P-256 bits (raw, buffer(65), {name: ECDSA, namedCurve: P-256}, true, [verify, verify])": { + "status": "FAIL" + }, + "Good parameters: P-256 bits (raw, buffer(33, compressed), {name: ECDSA, namedCurve: P-256}, true, [verify, verify])": { + "status": "FAIL" + }, "Good parameters: P-256 bits (pkcs8, buffer(138), {name: ECDSA, namedCurve: P-256}, true, [sign])": { "status": "FAIL" }, + "Good parameters: P-256 bits (pkcs8, buffer(138), {name: ECDSA, namedCurve: P-256}, true, [sign, sign])": { + "status": "FAIL" + }, "Empty Usages: P-256 bits (pkcs8, buffer(138), {name: ECDSA, namedCurve: P-256}, true, [])": { "status": "FAIL" }, "Good parameters: P-256 bits (jwk, object(kty, crv, x, y, d), {name: ECDSA, namedCurve: P-256}, true, [sign])": { "status": "FAIL" }, + "Good parameters: P-256 bits (jwk, object(kty, crv, x, y, d), {name: ECDSA, namedCurve: P-256}, true, [sign, sign])": { + "status": "FAIL" + }, "Empty Usages: P-256 bits (jwk, object(kty, crv, x, y, d), {name: ECDSA, namedCurve: P-256}, true, [])": { "status": "FAIL" }, + "Good parameters: P-256 bits (spki, buffer(91), {name: ECDSA, namedCurve: P-256}, false, [verify])": { + "status": "FAIL" + }, + "Good parameters: P-256 bits (spki, buffer(59, compressed), {name: ECDSA, namedCurve: P-256}, false, [verify])": { + "status": "FAIL" + }, + "Good parameters: P-256 bits (jwk, object(kty, crv, x, y), {name: ECDSA, namedCurve: P-256}, false, [verify])": { + "status": "PASS" + }, + "Good parameters: P-256 bits (raw, buffer(65), {name: ECDSA, namedCurve: P-256}, false, [verify])": { + "status": "FAIL" + }, + "Good parameters: P-256 bits (raw, buffer(33, compressed), {name: ECDSA, namedCurve: P-256}, false, [verify])": { + "status": "FAIL" + }, "Good parameters: P-256 bits (spki, buffer(91), {name: ECDSA, namedCurve: P-256}, false, [])": { "status": "FAIL" }, @@ -41,18 +92,54 @@ "Good parameters: P-256 bits (raw, buffer(33, compressed), {name: ECDSA, namedCurve: P-256}, false, [])": { "status": "FAIL" }, + "Good parameters: P-256 bits (spki, buffer(91), {name: ECDSA, namedCurve: P-256}, false, [verify, verify])": { + "status": "FAIL" + }, + "Good parameters: P-256 bits (spki, buffer(59, compressed), {name: ECDSA, namedCurve: P-256}, false, [verify, verify])": { + "status": "FAIL" + }, + "Good parameters: P-256 bits (jwk, object(kty, crv, x, y), {name: ECDSA, namedCurve: P-256}, false, [verify, verify])": { + "status": "PASS" + }, + "Good parameters: P-256 bits (raw, buffer(65), {name: ECDSA, namedCurve: P-256}, false, [verify, verify])": { + "status": "FAIL" + }, + "Good parameters: P-256 bits (raw, buffer(33, compressed), {name: ECDSA, namedCurve: P-256}, false, [verify, verify])": { + "status": "FAIL" + }, "Good parameters: P-256 bits (pkcs8, buffer(138), {name: ECDSA, namedCurve: P-256}, false, [sign])": { "status": "FAIL" }, + "Good parameters: P-256 bits (pkcs8, buffer(138), {name: ECDSA, namedCurve: P-256}, false, [sign, sign])": { + "status": "FAIL" + }, "Empty Usages: P-256 bits (pkcs8, buffer(138), {name: ECDSA, namedCurve: P-256}, false, [])": { "status": "FAIL" }, "Good parameters: P-256 bits (jwk, object(kty, crv, x, y, d), {name: ECDSA, namedCurve: P-256}, false, [sign])": { "status": "PASS" }, + "Good parameters: P-256 bits (jwk, object(kty, crv, x, y, d), {name: ECDSA, namedCurve: P-256}, false, [sign, sign])": { + "status": "PASS" + }, "Empty Usages: P-256 bits (jwk, object(kty, crv, x, y, d), {name: ECDSA, namedCurve: P-256}, false, [])": { "status": "FAIL" }, + "Good parameters: P-384 bits (spki, buffer(120), {name: ECDSA, namedCurve: P-384}, true, [verify])": { + "status": "FAIL" + }, + "Good parameters: P-384 bits (spki, buffer(72, compressed), {name: ECDSA, namedCurve: P-384}, true, [verify])": { + "status": "FAIL" + }, + "Good parameters: P-384 bits (jwk, object(kty, crv, x, y), {name: ECDSA, namedCurve: P-384}, true, [verify])": { + "status": "FAIL" + }, + "Good parameters: P-384 bits (raw, buffer(97), {name: ECDSA, namedCurve: P-384}, true, [verify])": { + "status": "FAIL" + }, + "Good parameters: P-384 bits (raw, buffer(49, compressed), {name: ECDSA, namedCurve: P-384}, true, [verify])": { + "status": "FAIL" + }, "Good parameters: P-384 bits (spki, buffer(120), {name: ECDSA, namedCurve: P-384}, true, [])": { "status": "FAIL" }, @@ -68,18 +155,54 @@ "Good parameters: P-384 bits (raw, buffer(49, compressed), {name: ECDSA, namedCurve: P-384}, true, [])": { "status": "FAIL" }, + "Good parameters: P-384 bits (spki, buffer(120), {name: ECDSA, namedCurve: P-384}, true, [verify, verify])": { + "status": "FAIL" + }, + "Good parameters: P-384 bits (spki, buffer(72, compressed), {name: ECDSA, namedCurve: P-384}, true, [verify, verify])": { + "status": "FAIL" + }, + "Good parameters: P-384 bits (jwk, object(kty, crv, x, y), {name: ECDSA, namedCurve: P-384}, true, [verify, verify])": { + "status": "FAIL" + }, + "Good parameters: P-384 bits (raw, buffer(97), {name: ECDSA, namedCurve: P-384}, true, [verify, verify])": { + "status": "FAIL" + }, + "Good parameters: P-384 bits (raw, buffer(49, compressed), {name: ECDSA, namedCurve: P-384}, true, [verify, verify])": { + "status": "FAIL" + }, "Good parameters: P-384 bits (pkcs8, buffer(185), {name: ECDSA, namedCurve: P-384}, true, [sign])": { "status": "FAIL" }, + "Good parameters: P-384 bits (pkcs8, buffer(185), {name: ECDSA, namedCurve: P-384}, true, [sign, sign])": { + "status": "FAIL" + }, "Empty Usages: P-384 bits (pkcs8, buffer(185), {name: ECDSA, namedCurve: P-384}, true, [])": { "status": "FAIL" }, "Good parameters: P-384 bits (jwk, object(kty, crv, x, y, d), {name: ECDSA, namedCurve: P-384}, true, [sign])": { "status": "FAIL" }, + "Good parameters: P-384 bits (jwk, object(kty, crv, x, y, d), {name: ECDSA, namedCurve: P-384}, true, [sign, sign])": { + "status": "FAIL" + }, "Empty Usages: P-384 bits (jwk, object(kty, crv, x, y, d), {name: ECDSA, namedCurve: P-384}, true, [])": { "status": "FAIL" }, + "Good parameters: P-384 bits (spki, buffer(120), {name: ECDSA, namedCurve: P-384}, false, [verify])": { + "status": "FAIL" + }, + "Good parameters: P-384 bits (spki, buffer(72, compressed), {name: ECDSA, namedCurve: P-384}, false, [verify])": { + "status": "FAIL" + }, + "Good parameters: P-384 bits (jwk, object(kty, crv, x, y), {name: ECDSA, namedCurve: P-384}, false, [verify])": { + "status": "PASS" + }, + "Good parameters: P-384 bits (raw, buffer(97), {name: ECDSA, namedCurve: P-384}, false, [verify])": { + "status": "FAIL" + }, + "Good parameters: P-384 bits (raw, buffer(49, compressed), {name: ECDSA, namedCurve: P-384}, false, [verify])": { + "status": "FAIL" + }, "Good parameters: P-384 bits (spki, buffer(120), {name: ECDSA, namedCurve: P-384}, false, [])": { "status": "FAIL" }, @@ -95,18 +218,54 @@ "Good parameters: P-384 bits (raw, buffer(49, compressed), {name: ECDSA, namedCurve: P-384}, false, [])": { "status": "FAIL" }, + "Good parameters: P-384 bits (spki, buffer(120), {name: ECDSA, namedCurve: P-384}, false, [verify, verify])": { + "status": "FAIL" + }, + "Good parameters: P-384 bits (spki, buffer(72, compressed), {name: ECDSA, namedCurve: P-384}, false, [verify, verify])": { + "status": "FAIL" + }, + "Good parameters: P-384 bits (jwk, object(kty, crv, x, y), {name: ECDSA, namedCurve: P-384}, false, [verify, verify])": { + "status": "PASS" + }, + "Good parameters: P-384 bits (raw, buffer(97), {name: ECDSA, namedCurve: P-384}, false, [verify, verify])": { + "status": "FAIL" + }, + "Good parameters: P-384 bits (raw, buffer(49, compressed), {name: ECDSA, namedCurve: P-384}, false, [verify, verify])": { + "status": "FAIL" + }, "Good parameters: P-384 bits (pkcs8, buffer(185), {name: ECDSA, namedCurve: P-384}, false, [sign])": { "status": "FAIL" }, + "Good parameters: P-384 bits (pkcs8, buffer(185), {name: ECDSA, namedCurve: P-384}, false, [sign, sign])": { + "status": "FAIL" + }, "Empty Usages: P-384 bits (pkcs8, buffer(185), {name: ECDSA, namedCurve: P-384}, false, [])": { "status": "FAIL" }, "Good parameters: P-384 bits (jwk, object(kty, crv, x, y, d), {name: ECDSA, namedCurve: P-384}, false, [sign])": { "status": "PASS" }, + "Good parameters: P-384 bits (jwk, object(kty, crv, x, y, d), {name: ECDSA, namedCurve: P-384}, false, [sign, sign])": { + "status": "PASS" + }, "Empty Usages: P-384 bits (jwk, object(kty, crv, x, y, d), {name: ECDSA, namedCurve: P-384}, false, [])": { "status": "FAIL" }, + "Good parameters: P-521 bits (spki, buffer(158), {name: ECDSA, namedCurve: P-521}, true, [verify])": { + "status": "FAIL" + }, + "Good parameters: P-521 bits (spki, buffer(90, compressed), {name: ECDSA, namedCurve: P-521}, true, [verify])": { + "status": "FAIL" + }, + "Good parameters: P-521 bits (jwk, object(kty, crv, x, y), {name: ECDSA, namedCurve: P-521}, true, [verify])": { + "status": "FAIL" + }, + "Good parameters: P-521 bits (raw, buffer(133), {name: ECDSA, namedCurve: P-521}, true, [verify])": { + "status": "FAIL" + }, + "Good parameters: P-521 bits (raw, buffer(67, compressed), {name: ECDSA, namedCurve: P-521}, true, [verify])": { + "status": "FAIL" + }, "Good parameters: P-521 bits (spki, buffer(158), {name: ECDSA, namedCurve: P-521}, true, [])": { "status": "FAIL" }, @@ -122,18 +281,54 @@ "Good parameters: P-521 bits (raw, buffer(67, compressed), {name: ECDSA, namedCurve: P-521}, true, [])": { "status": "FAIL" }, + "Good parameters: P-521 bits (spki, buffer(158), {name: ECDSA, namedCurve: P-521}, true, [verify, verify])": { + "status": "FAIL" + }, + "Good parameters: P-521 bits (spki, buffer(90, compressed), {name: ECDSA, namedCurve: P-521}, true, [verify, verify])": { + "status": "FAIL" + }, + "Good parameters: P-521 bits (jwk, object(kty, crv, x, y), {name: ECDSA, namedCurve: P-521}, true, [verify, verify])": { + "status": "FAIL" + }, + "Good parameters: P-521 bits (raw, buffer(133), {name: ECDSA, namedCurve: P-521}, true, [verify, verify])": { + "status": "FAIL" + }, + "Good parameters: P-521 bits (raw, buffer(67, compressed), {name: ECDSA, namedCurve: P-521}, true, [verify, verify])": { + "status": "FAIL" + }, "Good parameters: P-521 bits (pkcs8, buffer(241), {name: ECDSA, namedCurve: P-521}, true, [sign])": { "status": "FAIL" }, + "Good parameters: P-521 bits (pkcs8, buffer(241), {name: ECDSA, namedCurve: P-521}, true, [sign, sign])": { + "status": "FAIL" + }, "Empty Usages: P-521 bits (pkcs8, buffer(241), {name: ECDSA, namedCurve: P-521}, true, [])": { "status": "FAIL" }, "Good parameters: P-521 bits (jwk, object(kty, crv, x, y, d), {name: ECDSA, namedCurve: P-521}, true, [sign])": { "status": "FAIL" }, + "Good parameters: P-521 bits (jwk, object(kty, crv, x, y, d), {name: ECDSA, namedCurve: P-521}, true, [sign, sign])": { + "status": "FAIL" + }, "Empty Usages: P-521 bits (jwk, object(kty, crv, x, y, d), {name: ECDSA, namedCurve: P-521}, true, [])": { "status": "FAIL" }, + "Good parameters: P-521 bits (spki, buffer(158), {name: ECDSA, namedCurve: P-521}, false, [verify])": { + "status": "FAIL" + }, + "Good parameters: P-521 bits (spki, buffer(90, compressed), {name: ECDSA, namedCurve: P-521}, false, [verify])": { + "status": "FAIL" + }, + "Good parameters: P-521 bits (jwk, object(kty, crv, x, y), {name: ECDSA, namedCurve: P-521}, false, [verify])": { + "status": "PASS" + }, + "Good parameters: P-521 bits (raw, buffer(133), {name: ECDSA, namedCurve: P-521}, false, [verify])": { + "status": "FAIL" + }, + "Good parameters: P-521 bits (raw, buffer(67, compressed), {name: ECDSA, namedCurve: P-521}, false, [verify])": { + "status": "FAIL" + }, "Good parameters: P-521 bits (spki, buffer(158), {name: ECDSA, namedCurve: P-521}, false, [])": { "status": "FAIL" }, @@ -149,15 +344,36 @@ "Good parameters: P-521 bits (raw, buffer(67, compressed), {name: ECDSA, namedCurve: P-521}, false, [])": { "status": "FAIL" }, + "Good parameters: P-521 bits (spki, buffer(158), {name: ECDSA, namedCurve: P-521}, false, [verify, verify])": { + "status": "FAIL" + }, + "Good parameters: P-521 bits (spki, buffer(90, compressed), {name: ECDSA, namedCurve: P-521}, false, [verify, verify])": { + "status": "FAIL" + }, + "Good parameters: P-521 bits (jwk, object(kty, crv, x, y), {name: ECDSA, namedCurve: P-521}, false, [verify, verify])": { + "status": "PASS" + }, + "Good parameters: P-521 bits (raw, buffer(133), {name: ECDSA, namedCurve: P-521}, false, [verify, verify])": { + "status": "FAIL" + }, + "Good parameters: P-521 bits (raw, buffer(67, compressed), {name: ECDSA, namedCurve: P-521}, false, [verify, verify])": { + "status": "FAIL" + }, "Good parameters: P-521 bits (pkcs8, buffer(241), {name: ECDSA, namedCurve: P-521}, false, [sign])": { "status": "FAIL" }, + "Good parameters: P-521 bits (pkcs8, buffer(241), {name: ECDSA, namedCurve: P-521}, false, [sign, sign])": { + "status": "FAIL" + }, "Empty Usages: P-521 bits (pkcs8, buffer(241), {name: ECDSA, namedCurve: P-521}, false, [])": { "status": "FAIL" }, "Good parameters: P-521 bits (jwk, object(kty, crv, x, y, d), {name: ECDSA, namedCurve: P-521}, false, [sign])": { "status": "PASS" }, + "Good parameters: P-521 bits (jwk, object(kty, crv, x, y, d), {name: ECDSA, namedCurve: P-521}, false, [sign, sign])": { + "status": "PASS" + }, "Empty Usages: P-521 bits (jwk, object(kty, crv, x, y, d), {name: ECDSA, namedCurve: P-521}, false, [])": { "status": "FAIL" }, @@ -170,6 +386,9 @@ "Good parameters: P-256 bits (jwk, object(kty, crv, x, y), {name: ECDH, namedCurve: P-256}, true, [])": { "status": "FAIL" }, + "ECDH any JWK alg: P-256 bits (jwk, object(kty, crv, x, y, alg), {name: ECDH, namedCurve: P-256}, true, [])": { + "status": "FAIL" + }, "Good parameters: P-256 bits (raw, buffer(65), {name: ECDH, namedCurve: P-256}, true, [])": { "status": "FAIL" }, @@ -185,18 +404,36 @@ "Good parameters: P-256 bits (pkcs8, buffer(138), {name: ECDH, namedCurve: P-256}, true, [deriveBits])": { "status": "FAIL" }, + "Good parameters: P-256 bits (pkcs8, buffer(138), {name: ECDH, namedCurve: P-256}, true, [deriveKey, deriveBits, deriveKey, deriveBits])": { + "status": "FAIL" + }, "Empty Usages: P-256 bits (pkcs8, buffer(138), {name: ECDH, namedCurve: P-256}, true, [])": { "status": "FAIL" }, "Good parameters: P-256 bits (jwk, object(kty, crv, x, y, d), {name: ECDH, namedCurve: P-256}, true, [deriveKey])": { "status": "FAIL" }, + "ECDH any JWK alg: P-256 bits (jwk, object(kty, crv, x, y, d, alg), {name: ECDH, namedCurve: P-256}, true, [deriveKey])": { + "status": "FAIL" + }, "Good parameters: P-256 bits (jwk, object(kty, crv, x, y, d), {name: ECDH, namedCurve: P-256}, true, [deriveBits, deriveKey])": { "status": "FAIL" }, + "ECDH any JWK alg: P-256 bits (jwk, object(kty, crv, x, y, d, alg), {name: ECDH, namedCurve: P-256}, true, [deriveBits, deriveKey])": { + "status": "FAIL" + }, "Good parameters: P-256 bits (jwk, object(kty, crv, x, y, d), {name: ECDH, namedCurve: P-256}, true, [deriveBits])": { "status": "FAIL" }, + "ECDH any JWK alg: P-256 bits (jwk, object(kty, crv, x, y, d, alg), {name: ECDH, namedCurve: P-256}, true, [deriveBits])": { + "status": "FAIL" + }, + "Good parameters: P-256 bits (jwk, object(kty, crv, x, y, d), {name: ECDH, namedCurve: P-256}, true, [deriveKey, deriveBits, deriveKey, deriveBits])": { + "status": "FAIL" + }, + "ECDH any JWK alg: P-256 bits (jwk, object(kty, crv, x, y, d, alg), {name: ECDH, namedCurve: P-256}, true, [deriveKey, deriveBits, deriveKey, deriveBits])": { + "status": "FAIL" + }, "Empty Usages: P-256 bits (jwk, object(kty, crv, x, y, d), {name: ECDH, namedCurve: P-256}, true, [])": { "status": "FAIL" }, @@ -209,6 +446,9 @@ "Good parameters: P-256 bits (jwk, object(kty, crv, x, y), {name: ECDH, namedCurve: P-256}, false, [])": { "status": "FAIL" }, + "ECDH any JWK alg: P-256 bits (jwk, object(kty, crv, x, y, alg), {name: ECDH, namedCurve: P-256}, false, [])": { + "status": "FAIL" + }, "Good parameters: P-256 bits (raw, buffer(65), {name: ECDH, namedCurve: P-256}, false, [])": { "status": "FAIL" }, @@ -224,18 +464,36 @@ "Good parameters: P-256 bits (pkcs8, buffer(138), {name: ECDH, namedCurve: P-256}, false, [deriveBits])": { "status": "FAIL" }, + "Good parameters: P-256 bits (pkcs8, buffer(138), {name: ECDH, namedCurve: P-256}, false, [deriveKey, deriveBits, deriveKey, deriveBits])": { + "status": "FAIL" + }, "Empty Usages: P-256 bits (pkcs8, buffer(138), {name: ECDH, namedCurve: P-256}, false, [])": { "status": "FAIL" }, "Good parameters: P-256 bits (jwk, object(kty, crv, x, y, d), {name: ECDH, namedCurve: P-256}, false, [deriveKey])": { "status": "FAIL" }, + "ECDH any JWK alg: P-256 bits (jwk, object(kty, crv, x, y, d, alg), {name: ECDH, namedCurve: P-256}, false, [deriveKey])": { + "status": "FAIL" + }, "Good parameters: P-256 bits (jwk, object(kty, crv, x, y, d), {name: ECDH, namedCurve: P-256}, false, [deriveBits, deriveKey])": { "status": "FAIL" }, + "ECDH any JWK alg: P-256 bits (jwk, object(kty, crv, x, y, d, alg), {name: ECDH, namedCurve: P-256}, false, [deriveBits, deriveKey])": { + "status": "FAIL" + }, "Good parameters: P-256 bits (jwk, object(kty, crv, x, y, d), {name: ECDH, namedCurve: P-256}, false, [deriveBits])": { "status": "FAIL" }, + "ECDH any JWK alg: P-256 bits (jwk, object(kty, crv, x, y, d, alg), {name: ECDH, namedCurve: P-256}, false, [deriveBits])": { + "status": "FAIL" + }, + "Good parameters: P-256 bits (jwk, object(kty, crv, x, y, d), {name: ECDH, namedCurve: P-256}, false, [deriveKey, deriveBits, deriveKey, deriveBits])": { + "status": "FAIL" + }, + "ECDH any JWK alg: P-256 bits (jwk, object(kty, crv, x, y, d, alg), {name: ECDH, namedCurve: P-256}, false, [deriveKey, deriveBits, deriveKey, deriveBits])": { + "status": "FAIL" + }, "Empty Usages: P-256 bits (jwk, object(kty, crv, x, y, d), {name: ECDH, namedCurve: P-256}, false, [])": { "status": "FAIL" }, @@ -248,6 +506,9 @@ "Good parameters: P-384 bits (jwk, object(kty, crv, x, y), {name: ECDH, namedCurve: P-384}, true, [])": { "status": "FAIL" }, + "ECDH any JWK alg: P-384 bits (jwk, object(kty, crv, x, y, alg), {name: ECDH, namedCurve: P-384}, true, [])": { + "status": "FAIL" + }, "Good parameters: P-384 bits (raw, buffer(97), {name: ECDH, namedCurve: P-384}, true, [])": { "status": "FAIL" }, @@ -263,18 +524,36 @@ "Good parameters: P-384 bits (pkcs8, buffer(185), {name: ECDH, namedCurve: P-384}, true, [deriveBits])": { "status": "FAIL" }, + "Good parameters: P-384 bits (pkcs8, buffer(185), {name: ECDH, namedCurve: P-384}, true, [deriveKey, deriveBits, deriveKey, deriveBits])": { + "status": "FAIL" + }, "Empty Usages: P-384 bits (pkcs8, buffer(185), {name: ECDH, namedCurve: P-384}, true, [])": { "status": "FAIL" }, "Good parameters: P-384 bits (jwk, object(kty, crv, x, y, d), {name: ECDH, namedCurve: P-384}, true, [deriveKey])": { "status": "FAIL" }, + "ECDH any JWK alg: P-384 bits (jwk, object(kty, crv, x, y, d, alg), {name: ECDH, namedCurve: P-384}, true, [deriveKey])": { + "status": "FAIL" + }, "Good parameters: P-384 bits (jwk, object(kty, crv, x, y, d), {name: ECDH, namedCurve: P-384}, true, [deriveBits, deriveKey])": { "status": "FAIL" }, + "ECDH any JWK alg: P-384 bits (jwk, object(kty, crv, x, y, d, alg), {name: ECDH, namedCurve: P-384}, true, [deriveBits, deriveKey])": { + "status": "FAIL" + }, "Good parameters: P-384 bits (jwk, object(kty, crv, x, y, d), {name: ECDH, namedCurve: P-384}, true, [deriveBits])": { "status": "FAIL" }, + "ECDH any JWK alg: P-384 bits (jwk, object(kty, crv, x, y, d, alg), {name: ECDH, namedCurve: P-384}, true, [deriveBits])": { + "status": "FAIL" + }, + "Good parameters: P-384 bits (jwk, object(kty, crv, x, y, d), {name: ECDH, namedCurve: P-384}, true, [deriveKey, deriveBits, deriveKey, deriveBits])": { + "status": "FAIL" + }, + "ECDH any JWK alg: P-384 bits (jwk, object(kty, crv, x, y, d, alg), {name: ECDH, namedCurve: P-384}, true, [deriveKey, deriveBits, deriveKey, deriveBits])": { + "status": "FAIL" + }, "Empty Usages: P-384 bits (jwk, object(kty, crv, x, y, d), {name: ECDH, namedCurve: P-384}, true, [])": { "status": "FAIL" }, @@ -287,6 +566,9 @@ "Good parameters: P-384 bits (jwk, object(kty, crv, x, y), {name: ECDH, namedCurve: P-384}, false, [])": { "status": "FAIL" }, + "ECDH any JWK alg: P-384 bits (jwk, object(kty, crv, x, y, alg), {name: ECDH, namedCurve: P-384}, false, [])": { + "status": "FAIL" + }, "Good parameters: P-384 bits (raw, buffer(97), {name: ECDH, namedCurve: P-384}, false, [])": { "status": "FAIL" }, @@ -302,18 +584,36 @@ "Good parameters: P-384 bits (pkcs8, buffer(185), {name: ECDH, namedCurve: P-384}, false, [deriveBits])": { "status": "FAIL" }, + "Good parameters: P-384 bits (pkcs8, buffer(185), {name: ECDH, namedCurve: P-384}, false, [deriveKey, deriveBits, deriveKey, deriveBits])": { + "status": "FAIL" + }, "Empty Usages: P-384 bits (pkcs8, buffer(185), {name: ECDH, namedCurve: P-384}, false, [])": { "status": "FAIL" }, "Good parameters: P-384 bits (jwk, object(kty, crv, x, y, d), {name: ECDH, namedCurve: P-384}, false, [deriveKey])": { "status": "FAIL" }, + "ECDH any JWK alg: P-384 bits (jwk, object(kty, crv, x, y, d, alg), {name: ECDH, namedCurve: P-384}, false, [deriveKey])": { + "status": "FAIL" + }, "Good parameters: P-384 bits (jwk, object(kty, crv, x, y, d), {name: ECDH, namedCurve: P-384}, false, [deriveBits, deriveKey])": { "status": "FAIL" }, + "ECDH any JWK alg: P-384 bits (jwk, object(kty, crv, x, y, d, alg), {name: ECDH, namedCurve: P-384}, false, [deriveBits, deriveKey])": { + "status": "FAIL" + }, "Good parameters: P-384 bits (jwk, object(kty, crv, x, y, d), {name: ECDH, namedCurve: P-384}, false, [deriveBits])": { "status": "FAIL" }, + "ECDH any JWK alg: P-384 bits (jwk, object(kty, crv, x, y, d, alg), {name: ECDH, namedCurve: P-384}, false, [deriveBits])": { + "status": "FAIL" + }, + "Good parameters: P-384 bits (jwk, object(kty, crv, x, y, d), {name: ECDH, namedCurve: P-384}, false, [deriveKey, deriveBits, deriveKey, deriveBits])": { + "status": "FAIL" + }, + "ECDH any JWK alg: P-384 bits (jwk, object(kty, crv, x, y, d, alg), {name: ECDH, namedCurve: P-384}, false, [deriveKey, deriveBits, deriveKey, deriveBits])": { + "status": "FAIL" + }, "Empty Usages: P-384 bits (jwk, object(kty, crv, x, y, d), {name: ECDH, namedCurve: P-384}, false, [])": { "status": "FAIL" }, @@ -326,6 +626,9 @@ "Good parameters: P-521 bits (jwk, object(kty, crv, x, y), {name: ECDH, namedCurve: P-521}, true, [])": { "status": "FAIL" }, + "ECDH any JWK alg: P-521 bits (jwk, object(kty, crv, x, y, alg), {name: ECDH, namedCurve: P-521}, true, [])": { + "status": "FAIL" + }, "Good parameters: P-521 bits (raw, buffer(133), {name: ECDH, namedCurve: P-521}, true, [])": { "status": "FAIL" }, @@ -341,18 +644,36 @@ "Good parameters: P-521 bits (pkcs8, buffer(241), {name: ECDH, namedCurve: P-521}, true, [deriveBits])": { "status": "FAIL" }, + "Good parameters: P-521 bits (pkcs8, buffer(241), {name: ECDH, namedCurve: P-521}, true, [deriveKey, deriveBits, deriveKey, deriveBits])": { + "status": "FAIL" + }, "Empty Usages: P-521 bits (pkcs8, buffer(241), {name: ECDH, namedCurve: P-521}, true, [])": { "status": "FAIL" }, "Good parameters: P-521 bits (jwk, object(kty, crv, x, y, d), {name: ECDH, namedCurve: P-521}, true, [deriveKey])": { "status": "FAIL" }, + "ECDH any JWK alg: P-521 bits (jwk, object(kty, crv, x, y, d, alg), {name: ECDH, namedCurve: P-521}, true, [deriveKey])": { + "status": "FAIL" + }, "Good parameters: P-521 bits (jwk, object(kty, crv, x, y, d), {name: ECDH, namedCurve: P-521}, true, [deriveBits, deriveKey])": { "status": "FAIL" }, + "ECDH any JWK alg: P-521 bits (jwk, object(kty, crv, x, y, d, alg), {name: ECDH, namedCurve: P-521}, true, [deriveBits, deriveKey])": { + "status": "FAIL" + }, "Good parameters: P-521 bits (jwk, object(kty, crv, x, y, d), {name: ECDH, namedCurve: P-521}, true, [deriveBits])": { "status": "FAIL" }, + "ECDH any JWK alg: P-521 bits (jwk, object(kty, crv, x, y, d, alg), {name: ECDH, namedCurve: P-521}, true, [deriveBits])": { + "status": "FAIL" + }, + "Good parameters: P-521 bits (jwk, object(kty, crv, x, y, d), {name: ECDH, namedCurve: P-521}, true, [deriveKey, deriveBits, deriveKey, deriveBits])": { + "status": "FAIL" + }, + "ECDH any JWK alg: P-521 bits (jwk, object(kty, crv, x, y, d, alg), {name: ECDH, namedCurve: P-521}, true, [deriveKey, deriveBits, deriveKey, deriveBits])": { + "status": "FAIL" + }, "Empty Usages: P-521 bits (jwk, object(kty, crv, x, y, d), {name: ECDH, namedCurve: P-521}, true, [])": { "status": "FAIL" }, @@ -365,6 +686,9 @@ "Good parameters: P-521 bits (jwk, object(kty, crv, x, y), {name: ECDH, namedCurve: P-521}, false, [])": { "status": "FAIL" }, + "ECDH any JWK alg: P-521 bits (jwk, object(kty, crv, x, y, alg), {name: ECDH, namedCurve: P-521}, false, [])": { + "status": "FAIL" + }, "Good parameters: P-521 bits (raw, buffer(133), {name: ECDH, namedCurve: P-521}, false, [])": { "status": "FAIL" }, @@ -380,18 +704,36 @@ "Good parameters: P-521 bits (pkcs8, buffer(241), {name: ECDH, namedCurve: P-521}, false, [deriveBits])": { "status": "FAIL" }, + "Good parameters: P-521 bits (pkcs8, buffer(241), {name: ECDH, namedCurve: P-521}, false, [deriveKey, deriveBits, deriveKey, deriveBits])": { + "status": "FAIL" + }, "Empty Usages: P-521 bits (pkcs8, buffer(241), {name: ECDH, namedCurve: P-521}, false, [])": { "status": "FAIL" }, "Good parameters: P-521 bits (jwk, object(kty, crv, x, y, d), {name: ECDH, namedCurve: P-521}, false, [deriveKey])": { "status": "FAIL" }, + "ECDH any JWK alg: P-521 bits (jwk, object(kty, crv, x, y, d, alg), {name: ECDH, namedCurve: P-521}, false, [deriveKey])": { + "status": "FAIL" + }, "Good parameters: P-521 bits (jwk, object(kty, crv, x, y, d), {name: ECDH, namedCurve: P-521}, false, [deriveBits, deriveKey])": { "status": "FAIL" }, + "ECDH any JWK alg: P-521 bits (jwk, object(kty, crv, x, y, d, alg), {name: ECDH, namedCurve: P-521}, false, [deriveBits, deriveKey])": { + "status": "FAIL" + }, "Good parameters: P-521 bits (jwk, object(kty, crv, x, y, d), {name: ECDH, namedCurve: P-521}, false, [deriveBits])": { "status": "FAIL" }, + "ECDH any JWK alg: P-521 bits (jwk, object(kty, crv, x, y, d, alg), {name: ECDH, namedCurve: P-521}, false, [deriveBits])": { + "status": "FAIL" + }, + "Good parameters: P-521 bits (jwk, object(kty, crv, x, y, d), {name: ECDH, namedCurve: P-521}, false, [deriveKey, deriveBits, deriveKey, deriveBits])": { + "status": "FAIL" + }, + "ECDH any JWK alg: P-521 bits (jwk, object(kty, crv, x, y, d, alg), {name: ECDH, namedCurve: P-521}, false, [deriveKey, deriveBits, deriveKey, deriveBits])": { + "status": "FAIL" + }, "Empty Usages: P-521 bits (jwk, object(kty, crv, x, y, d), {name: ECDH, namedCurve: P-521}, false, [])": { "status": "FAIL" } diff --git a/tests/wpt-harness/expectations/compression/compression-constructor-error.tentative.any.js.json b/tests/wpt-harness/expectations/compression/compression-constructor-error.tentative.any.js.json new file mode 100644 index 00000000..7fd43eca --- /dev/null +++ b/tests/wpt-harness/expectations/compression/compression-constructor-error.tentative.any.js.json @@ -0,0 +1,11 @@ +{ + "\"a\" should cause the constructor to throw": { + "status": "PASS" + }, + "no input should cause the constructor to throw": { + "status": "PASS" + }, + "non-string input should cause the constructor to throw": { + "status": "PASS" + } +} \ No newline at end of file diff --git a/tests/wpt-harness/expectations/compression/compression-large-flush-output.any.js.json b/tests/wpt-harness/expectations/compression/compression-large-flush-output.any.js.json new file mode 100644 index 00000000..32813d9d --- /dev/null +++ b/tests/wpt-harness/expectations/compression/compression-large-flush-output.any.js.json @@ -0,0 +1,11 @@ +{ + "deflate compression with large flush output": { + "status": "FAIL" + }, + "gzip compression with large flush output": { + "status": "FAIL" + }, + "deflate-raw compression with large flush output": { + "status": "FAIL" + } +} \ No newline at end of file diff --git a/tests/wpt-harness/expectations/compression/compression-stream.tentative.any.js.json b/tests/wpt-harness/expectations/compression/compression-stream.tentative.any.js.json index f901cc72..f59f14f4 100644 --- a/tests/wpt-harness/expectations/compression/compression-stream.tentative.any.js.json +++ b/tests/wpt-harness/expectations/compression/compression-stream.tentative.any.js.json @@ -1,6 +1,6 @@ { "CompressionStream constructor should throw on invalid format": { - "status": "FAIL" + "status": "PASS" }, "deflated empty data should be reinflated back to its origin": { "status": "PASS" diff --git a/tests/wpt-harness/expectations/compression/decompression-buffersource.tentative.any.js.json b/tests/wpt-harness/expectations/compression/decompression-buffersource.tentative.any.js.json index cb57a226..5e132dac 100644 --- a/tests/wpt-harness/expectations/compression/decompression-buffersource.tentative.any.js.json +++ b/tests/wpt-harness/expectations/compression/decompression-buffersource.tentative.any.js.json @@ -23,6 +23,9 @@ "chunk of type Uint32Array should work for deflate": { "status": "PASS" }, + "chunk of type Float16Array should work for deflate": { + "status": "PASS" + }, "chunk of type Float32Array should work for deflate": { "status": "PASS" }, @@ -56,6 +59,9 @@ "chunk of type Uint32Array should work for gzip": { "status": "PASS" }, + "chunk of type Float16Array should work for gzip": { + "status": "PASS" + }, "chunk of type Float32Array should work for gzip": { "status": "PASS" }, @@ -89,6 +95,9 @@ "chunk of type Uint32Array should work for deflate-raw": { "status": "PASS" }, + "chunk of type Float16Array should work for deflate-raw": { + "status": "PASS" + }, "chunk of type Float32Array should work for deflate-raw": { "status": "PASS" }, diff --git a/tests/wpt-harness/expectations/compression/decompression-corrupt-input.tentative.any.js.json b/tests/wpt-harness/expectations/compression/decompression-corrupt-input.tentative.any.js.json index 1b9447db..3b266e32 100644 --- a/tests/wpt-harness/expectations/compression/decompression-corrupt-input.tentative.any.js.json +++ b/tests/wpt-harness/expectations/compression/decompression-corrupt-input.tentative.any.js.json @@ -30,7 +30,7 @@ "status": "PASS" }, "format 'deflate' field ADLER should be error for 255": { - "status": "PASS" + "status": "FAIL" }, "the unchanged input for 'gzip' should decompress successfully": { "status": "PASS" @@ -72,7 +72,7 @@ "status": "PASS" }, "format 'gzip' field ISIZE should be error for 1": { - "status": "PASS" + "status": "FAIL" }, "the deflate input compressed with dictionary should give an error": { "status": "PASS" diff --git a/tests/wpt-harness/expectations/console/console-log-symbol.any.js.json b/tests/wpt-harness/expectations/console/console-log-symbol.any.js.json new file mode 100644 index 00000000..5935c552 --- /dev/null +++ b/tests/wpt-harness/expectations/console/console-log-symbol.any.js.json @@ -0,0 +1,5 @@ +{ + "Logging a symbol doesn't throw": { + "status": "PASS" + } +} \ No newline at end of file diff --git a/tests/wpt-harness/expectations/encoding/api-invalid-label.any.js.json b/tests/wpt-harness/expectations/encoding/api-invalid-label.any.js.json index 9e26dfee..308e2967 100644 --- a/tests/wpt-harness/expectations/encoding/api-invalid-label.any.js.json +++ b/tests/wpt-harness/expectations/encoding/api-invalid-label.any.js.json @@ -1 +1,10265 @@ -{} \ No newline at end of file +{ + "Invalid label \"invalid-invalidLabel\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0unicode-1-1-utf-8\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"unicode-1-1-utf-8\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0unicode-1-1-utf-8\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vunicode-1-1-utf-8\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"unicode-1-1-utf-8\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vunicode-1-1-utf-8\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" unicode-1-1-utf-8\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"unicode-1-1-utf-8 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" unicode-1-1-utf-8 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
unicode-1-1-utf-8\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"unicode-1-1-utf-8
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
unicode-1-1-utf-8
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
unicode-1-1-utf-8\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"unicode-1-1-utf-8
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
unicode-1-1-utf-8
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0unicode11utf8\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"unicode11utf8\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0unicode11utf8\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vunicode11utf8\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"unicode11utf8\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vunicode11utf8\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" unicode11utf8\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"unicode11utf8 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" unicode11utf8 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
unicode11utf8\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"unicode11utf8
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
unicode11utf8
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
unicode11utf8\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"unicode11utf8
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
unicode11utf8
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0unicode20utf8\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"unicode20utf8\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0unicode20utf8\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vunicode20utf8\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"unicode20utf8\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vunicode20utf8\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" unicode20utf8\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"unicode20utf8 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" unicode20utf8 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
unicode20utf8\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"unicode20utf8
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
unicode20utf8
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
unicode20utf8\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"unicode20utf8
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
unicode20utf8
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0utf-8\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"utf-8\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0utf-8\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vutf-8\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"utf-8\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vutf-8\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" utf-8\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"utf-8 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" utf-8 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
utf-8\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"utf-8
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
utf-8
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
utf-8\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"utf-8
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
utf-8
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0utf8\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"utf8\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0utf8\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vutf8\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"utf8\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vutf8\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" utf8\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"utf8 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" utf8 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
utf8\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"utf8
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
utf8
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
utf8\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"utf8
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
utf8
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0x-unicode20utf8\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"x-unicode20utf8\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0x-unicode20utf8\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vx-unicode20utf8\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"x-unicode20utf8\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vx-unicode20utf8\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" x-unicode20utf8\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"x-unicode20utf8 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" x-unicode20utf8 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
x-unicode20utf8\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"x-unicode20utf8
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
x-unicode20utf8
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
x-unicode20utf8\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"x-unicode20utf8
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
x-unicode20utf8
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0866\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"866\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0866\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\v866\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"866\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\v866\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" 866\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"866 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" 866 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
866\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"866
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
866
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
866\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"866
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
866
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0cp866\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"cp866\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0cp866\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vcp866\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"cp866\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vcp866\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" cp866\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"cp866 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" cp866 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
cp866\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"cp866
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
cp866
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
cp866\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"cp866
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
cp866
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0csibm866\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"csibm866\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0csibm866\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vcsibm866\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"csibm866\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vcsibm866\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" csibm866\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"csibm866 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" csibm866 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
csibm866\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"csibm866
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
csibm866
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
csibm866\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"csibm866
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
csibm866
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0ibm866\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"ibm866\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0ibm866\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vibm866\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"ibm866\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vibm866\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" ibm866\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"ibm866 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" ibm866 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
ibm866\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"ibm866
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
ibm866
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
ibm866\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"ibm866
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
ibm866
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0csisolatin2\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"csisolatin2\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0csisolatin2\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vcsisolatin2\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"csisolatin2\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vcsisolatin2\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" csisolatin2\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"csisolatin2 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" csisolatin2 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
csisolatin2\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"csisolatin2
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
csisolatin2
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
csisolatin2\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"csisolatin2
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
csisolatin2
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0iso-8859-2\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso-8859-2\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0iso-8859-2\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\viso-8859-2\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso-8859-2\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\viso-8859-2\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" iso-8859-2\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso-8859-2 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" iso-8859-2 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso-8859-2\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso-8859-2
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso-8859-2
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso-8859-2\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso-8859-2
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso-8859-2
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0iso-ir-101\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso-ir-101\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0iso-ir-101\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\viso-ir-101\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso-ir-101\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\viso-ir-101\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" iso-ir-101\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso-ir-101 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" iso-ir-101 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso-ir-101\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso-ir-101
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso-ir-101
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso-ir-101\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso-ir-101
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso-ir-101
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0iso8859-2\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso8859-2\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0iso8859-2\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\viso8859-2\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso8859-2\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\viso8859-2\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" iso8859-2\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso8859-2 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" iso8859-2 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso8859-2\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso8859-2
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso8859-2
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso8859-2\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso8859-2
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso8859-2
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0iso88592\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso88592\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0iso88592\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\viso88592\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso88592\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\viso88592\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" iso88592\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso88592 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" iso88592 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso88592\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso88592
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso88592
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso88592\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso88592
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso88592
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0iso_8859-2\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso_8859-2\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0iso_8859-2\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\viso_8859-2\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso_8859-2\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\viso_8859-2\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" iso_8859-2\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso_8859-2 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" iso_8859-2 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso_8859-2\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso_8859-2
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso_8859-2
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso_8859-2\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso_8859-2
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso_8859-2
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0iso_8859-2:1987\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso_8859-2:1987\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0iso_8859-2:1987\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\viso_8859-2:1987\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso_8859-2:1987\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\viso_8859-2:1987\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" iso_8859-2:1987\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso_8859-2:1987 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" iso_8859-2:1987 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso_8859-2:1987\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso_8859-2:1987
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso_8859-2:1987
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso_8859-2:1987\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso_8859-2:1987
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso_8859-2:1987
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0l2\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"l2\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0l2\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vl2\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"l2\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vl2\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" l2\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"l2 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" l2 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
l2\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"l2
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
l2
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
l2\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"l2
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
l2
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0latin2\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"latin2\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0latin2\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vlatin2\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"latin2\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vlatin2\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" latin2\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"latin2 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" latin2 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
latin2\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"latin2
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
latin2
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
latin2\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"latin2
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
latin2
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0csisolatin3\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"csisolatin3\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0csisolatin3\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vcsisolatin3\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"csisolatin3\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vcsisolatin3\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" csisolatin3\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"csisolatin3 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" csisolatin3 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
csisolatin3\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"csisolatin3
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
csisolatin3
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
csisolatin3\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"csisolatin3
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
csisolatin3
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0iso-8859-3\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso-8859-3\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0iso-8859-3\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\viso-8859-3\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso-8859-3\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\viso-8859-3\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" iso-8859-3\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso-8859-3 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" iso-8859-3 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso-8859-3\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso-8859-3
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso-8859-3
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso-8859-3\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso-8859-3
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso-8859-3
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0iso-ir-109\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso-ir-109\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0iso-ir-109\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\viso-ir-109\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso-ir-109\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\viso-ir-109\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" iso-ir-109\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso-ir-109 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" iso-ir-109 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso-ir-109\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso-ir-109
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso-ir-109
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso-ir-109\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso-ir-109
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso-ir-109
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0iso8859-3\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso8859-3\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0iso8859-3\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\viso8859-3\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso8859-3\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\viso8859-3\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" iso8859-3\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso8859-3 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" iso8859-3 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso8859-3\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso8859-3
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso8859-3
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso8859-3\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso8859-3
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso8859-3
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0iso88593\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso88593\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0iso88593\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\viso88593\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso88593\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\viso88593\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" iso88593\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso88593 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" iso88593 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso88593\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso88593
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso88593
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso88593\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso88593
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso88593
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0iso_8859-3\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso_8859-3\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0iso_8859-3\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\viso_8859-3\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso_8859-3\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\viso_8859-3\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" iso_8859-3\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso_8859-3 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" iso_8859-3 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso_8859-3\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso_8859-3
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso_8859-3
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso_8859-3\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso_8859-3
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso_8859-3
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0iso_8859-3:1988\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso_8859-3:1988\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0iso_8859-3:1988\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\viso_8859-3:1988\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso_8859-3:1988\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\viso_8859-3:1988\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" iso_8859-3:1988\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso_8859-3:1988 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" iso_8859-3:1988 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso_8859-3:1988\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso_8859-3:1988
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso_8859-3:1988
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso_8859-3:1988\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso_8859-3:1988
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso_8859-3:1988
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0l3\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"l3\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0l3\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vl3\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"l3\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vl3\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" l3\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"l3 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" l3 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
l3\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"l3
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
l3
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
l3\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"l3
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
l3
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0latin3\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"latin3\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0latin3\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vlatin3\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"latin3\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vlatin3\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" latin3\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"latin3 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" latin3 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
latin3\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"latin3
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
latin3
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
latin3\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"latin3
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
latin3
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0csisolatin4\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"csisolatin4\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0csisolatin4\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vcsisolatin4\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"csisolatin4\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vcsisolatin4\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" csisolatin4\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"csisolatin4 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" csisolatin4 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
csisolatin4\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"csisolatin4
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
csisolatin4
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
csisolatin4\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"csisolatin4
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
csisolatin4
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0iso-8859-4\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso-8859-4\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0iso-8859-4\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\viso-8859-4\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso-8859-4\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\viso-8859-4\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" iso-8859-4\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso-8859-4 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" iso-8859-4 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso-8859-4\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso-8859-4
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso-8859-4
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso-8859-4\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso-8859-4
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso-8859-4
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0iso-ir-110\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso-ir-110\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0iso-ir-110\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\viso-ir-110\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso-ir-110\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\viso-ir-110\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" iso-ir-110\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso-ir-110 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" iso-ir-110 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso-ir-110\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso-ir-110
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso-ir-110
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso-ir-110\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso-ir-110
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso-ir-110
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0iso8859-4\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso8859-4\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0iso8859-4\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\viso8859-4\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso8859-4\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\viso8859-4\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" iso8859-4\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso8859-4 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" iso8859-4 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso8859-4\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso8859-4
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso8859-4
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso8859-4\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso8859-4
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso8859-4
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0iso88594\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso88594\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0iso88594\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\viso88594\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso88594\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\viso88594\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" iso88594\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso88594 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" iso88594 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso88594\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso88594
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso88594
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso88594\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso88594
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso88594
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0iso_8859-4\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso_8859-4\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0iso_8859-4\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\viso_8859-4\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso_8859-4\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\viso_8859-4\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" iso_8859-4\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso_8859-4 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" iso_8859-4 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso_8859-4\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso_8859-4
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso_8859-4
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso_8859-4\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso_8859-4
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso_8859-4
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0iso_8859-4:1988\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso_8859-4:1988\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0iso_8859-4:1988\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\viso_8859-4:1988\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso_8859-4:1988\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\viso_8859-4:1988\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" iso_8859-4:1988\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso_8859-4:1988 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" iso_8859-4:1988 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso_8859-4:1988\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso_8859-4:1988
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso_8859-4:1988
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso_8859-4:1988\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso_8859-4:1988
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso_8859-4:1988
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0l4\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"l4\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0l4\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vl4\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"l4\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vl4\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" l4\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"l4 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" l4 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
l4\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"l4
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
l4
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
l4\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"l4
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
l4
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0latin4\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"latin4\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0latin4\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vlatin4\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"latin4\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vlatin4\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" latin4\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"latin4 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" latin4 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
latin4\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"latin4
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
latin4
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
latin4\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"latin4
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
latin4
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0csisolatincyrillic\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"csisolatincyrillic\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0csisolatincyrillic\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vcsisolatincyrillic\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"csisolatincyrillic\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vcsisolatincyrillic\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" csisolatincyrillic\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"csisolatincyrillic \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" csisolatincyrillic \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
csisolatincyrillic\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"csisolatincyrillic
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
csisolatincyrillic
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
csisolatincyrillic\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"csisolatincyrillic
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
csisolatincyrillic
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0cyrillic\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"cyrillic\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0cyrillic\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vcyrillic\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"cyrillic\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vcyrillic\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" cyrillic\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"cyrillic \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" cyrillic \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
cyrillic\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"cyrillic
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
cyrillic
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
cyrillic\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"cyrillic
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
cyrillic
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0iso-8859-5\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso-8859-5\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0iso-8859-5\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\viso-8859-5\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso-8859-5\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\viso-8859-5\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" iso-8859-5\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso-8859-5 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" iso-8859-5 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso-8859-5\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso-8859-5
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso-8859-5
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso-8859-5\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso-8859-5
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso-8859-5
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0iso-ir-144\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso-ir-144\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0iso-ir-144\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\viso-ir-144\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso-ir-144\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\viso-ir-144\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" iso-ir-144\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso-ir-144 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" iso-ir-144 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso-ir-144\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso-ir-144
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso-ir-144
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso-ir-144\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso-ir-144
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso-ir-144
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0iso8859-5\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso8859-5\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0iso8859-5\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\viso8859-5\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso8859-5\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\viso8859-5\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" iso8859-5\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso8859-5 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" iso8859-5 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso8859-5\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso8859-5
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso8859-5
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso8859-5\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso8859-5
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso8859-5
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0iso88595\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso88595\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0iso88595\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\viso88595\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso88595\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\viso88595\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" iso88595\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso88595 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" iso88595 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso88595\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso88595
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso88595
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso88595\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso88595
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso88595
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0iso_8859-5\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso_8859-5\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0iso_8859-5\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\viso_8859-5\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso_8859-5\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\viso_8859-5\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" iso_8859-5\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso_8859-5 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" iso_8859-5 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso_8859-5\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso_8859-5
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso_8859-5
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso_8859-5\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso_8859-5
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso_8859-5
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0iso_8859-5:1988\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso_8859-5:1988\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0iso_8859-5:1988\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\viso_8859-5:1988\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso_8859-5:1988\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\viso_8859-5:1988\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" iso_8859-5:1988\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso_8859-5:1988 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" iso_8859-5:1988 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso_8859-5:1988\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso_8859-5:1988
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso_8859-5:1988
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso_8859-5:1988\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso_8859-5:1988
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso_8859-5:1988
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0arabic\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"arabic\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0arabic\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\varabic\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"arabic\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\varabic\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" arabic\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"arabic \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" arabic \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
arabic\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"arabic
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
arabic
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
arabic\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"arabic
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
arabic
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0asmo-708\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"asmo-708\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0asmo-708\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vasmo-708\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"asmo-708\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vasmo-708\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" asmo-708\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"asmo-708 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" asmo-708 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
asmo-708\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"asmo-708
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
asmo-708
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
asmo-708\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"asmo-708
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
asmo-708
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0csiso88596e\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"csiso88596e\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0csiso88596e\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vcsiso88596e\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"csiso88596e\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vcsiso88596e\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" csiso88596e\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"csiso88596e \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" csiso88596e \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
csiso88596e\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"csiso88596e
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
csiso88596e
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
csiso88596e\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"csiso88596e
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
csiso88596e
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0csiso88596i\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"csiso88596i\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0csiso88596i\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vcsiso88596i\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"csiso88596i\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vcsiso88596i\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" csiso88596i\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"csiso88596i \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" csiso88596i \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
csiso88596i\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"csiso88596i
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
csiso88596i
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
csiso88596i\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"csiso88596i
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
csiso88596i
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0csisolatinarabic\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"csisolatinarabic\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0csisolatinarabic\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vcsisolatinarabic\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"csisolatinarabic\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vcsisolatinarabic\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" csisolatinarabic\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"csisolatinarabic \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" csisolatinarabic \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
csisolatinarabic\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"csisolatinarabic
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
csisolatinarabic
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
csisolatinarabic\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"csisolatinarabic
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
csisolatinarabic
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0ecma-114\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"ecma-114\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0ecma-114\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vecma-114\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"ecma-114\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vecma-114\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" ecma-114\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"ecma-114 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" ecma-114 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
ecma-114\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"ecma-114
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
ecma-114
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
ecma-114\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"ecma-114
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
ecma-114
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0iso-8859-6\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso-8859-6\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0iso-8859-6\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\viso-8859-6\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso-8859-6\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\viso-8859-6\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" iso-8859-6\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso-8859-6 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" iso-8859-6 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso-8859-6\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso-8859-6
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso-8859-6
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso-8859-6\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso-8859-6
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso-8859-6
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0iso-8859-6-e\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso-8859-6-e\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0iso-8859-6-e\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\viso-8859-6-e\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso-8859-6-e\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\viso-8859-6-e\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" iso-8859-6-e\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso-8859-6-e \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" iso-8859-6-e \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso-8859-6-e\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso-8859-6-e
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso-8859-6-e
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso-8859-6-e\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso-8859-6-e
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso-8859-6-e
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0iso-8859-6-i\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso-8859-6-i\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0iso-8859-6-i\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\viso-8859-6-i\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso-8859-6-i\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\viso-8859-6-i\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" iso-8859-6-i\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso-8859-6-i \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" iso-8859-6-i \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso-8859-6-i\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso-8859-6-i
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso-8859-6-i
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso-8859-6-i\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso-8859-6-i
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso-8859-6-i
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0iso-ir-127\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso-ir-127\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0iso-ir-127\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\viso-ir-127\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso-ir-127\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\viso-ir-127\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" iso-ir-127\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso-ir-127 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" iso-ir-127 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso-ir-127\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso-ir-127
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso-ir-127
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso-ir-127\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso-ir-127
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso-ir-127
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0iso8859-6\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso8859-6\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0iso8859-6\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\viso8859-6\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso8859-6\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\viso8859-6\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" iso8859-6\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso8859-6 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" iso8859-6 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso8859-6\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso8859-6
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso8859-6
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso8859-6\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso8859-6
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso8859-6
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0iso88596\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso88596\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0iso88596\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\viso88596\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso88596\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\viso88596\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" iso88596\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso88596 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" iso88596 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso88596\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso88596
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso88596
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso88596\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso88596
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso88596
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0iso_8859-6\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso_8859-6\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0iso_8859-6\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\viso_8859-6\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso_8859-6\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\viso_8859-6\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" iso_8859-6\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso_8859-6 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" iso_8859-6 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso_8859-6\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso_8859-6
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso_8859-6
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso_8859-6\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso_8859-6
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso_8859-6
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0iso_8859-6:1987\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso_8859-6:1987\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0iso_8859-6:1987\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\viso_8859-6:1987\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso_8859-6:1987\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\viso_8859-6:1987\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" iso_8859-6:1987\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso_8859-6:1987 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" iso_8859-6:1987 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso_8859-6:1987\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso_8859-6:1987
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso_8859-6:1987
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso_8859-6:1987\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso_8859-6:1987
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso_8859-6:1987
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0csisolatingreek\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"csisolatingreek\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0csisolatingreek\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vcsisolatingreek\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"csisolatingreek\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vcsisolatingreek\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" csisolatingreek\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"csisolatingreek \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" csisolatingreek \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
csisolatingreek\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"csisolatingreek
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
csisolatingreek
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
csisolatingreek\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"csisolatingreek
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
csisolatingreek
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0ecma-118\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"ecma-118\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0ecma-118\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vecma-118\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"ecma-118\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vecma-118\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" ecma-118\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"ecma-118 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" ecma-118 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
ecma-118\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"ecma-118
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
ecma-118
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
ecma-118\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"ecma-118
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
ecma-118
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0elot_928\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"elot_928\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0elot_928\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\velot_928\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"elot_928\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\velot_928\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" elot_928\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"elot_928 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" elot_928 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
elot_928\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"elot_928
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
elot_928
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
elot_928\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"elot_928
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
elot_928
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0greek\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"greek\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0greek\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vgreek\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"greek\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vgreek\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" greek\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"greek \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" greek \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
greek\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"greek
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
greek
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
greek\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"greek
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
greek
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0greek8\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"greek8\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0greek8\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vgreek8\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"greek8\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vgreek8\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" greek8\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"greek8 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" greek8 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
greek8\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"greek8
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
greek8
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
greek8\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"greek8
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
greek8
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0iso-8859-7\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso-8859-7\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0iso-8859-7\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\viso-8859-7\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso-8859-7\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\viso-8859-7\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" iso-8859-7\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso-8859-7 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" iso-8859-7 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso-8859-7\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso-8859-7
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso-8859-7
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso-8859-7\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso-8859-7
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso-8859-7
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0iso-ir-126\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso-ir-126\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0iso-ir-126\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\viso-ir-126\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso-ir-126\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\viso-ir-126\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" iso-ir-126\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso-ir-126 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" iso-ir-126 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso-ir-126\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso-ir-126
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso-ir-126
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso-ir-126\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso-ir-126
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso-ir-126
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0iso8859-7\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso8859-7\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0iso8859-7\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\viso8859-7\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso8859-7\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\viso8859-7\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" iso8859-7\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso8859-7 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" iso8859-7 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso8859-7\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso8859-7
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso8859-7
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso8859-7\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso8859-7
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso8859-7
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0iso88597\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso88597\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0iso88597\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\viso88597\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso88597\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\viso88597\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" iso88597\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso88597 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" iso88597 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso88597\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso88597
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso88597
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso88597\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso88597
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso88597
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0iso_8859-7\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso_8859-7\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0iso_8859-7\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\viso_8859-7\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso_8859-7\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\viso_8859-7\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" iso_8859-7\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso_8859-7 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" iso_8859-7 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso_8859-7\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso_8859-7
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso_8859-7
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso_8859-7\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso_8859-7
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso_8859-7
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0iso_8859-7:1987\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso_8859-7:1987\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0iso_8859-7:1987\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\viso_8859-7:1987\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso_8859-7:1987\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\viso_8859-7:1987\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" iso_8859-7:1987\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso_8859-7:1987 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" iso_8859-7:1987 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso_8859-7:1987\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso_8859-7:1987
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso_8859-7:1987
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso_8859-7:1987\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso_8859-7:1987
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso_8859-7:1987
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0sun_eu_greek\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"sun_eu_greek\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0sun_eu_greek\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vsun_eu_greek\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"sun_eu_greek\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vsun_eu_greek\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" sun_eu_greek\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"sun_eu_greek \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" sun_eu_greek \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
sun_eu_greek\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"sun_eu_greek
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
sun_eu_greek
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
sun_eu_greek\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"sun_eu_greek
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
sun_eu_greek
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0csiso88598e\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"csiso88598e\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0csiso88598e\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vcsiso88598e\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"csiso88598e\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vcsiso88598e\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" csiso88598e\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"csiso88598e \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" csiso88598e \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
csiso88598e\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"csiso88598e
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
csiso88598e
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
csiso88598e\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"csiso88598e
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
csiso88598e
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0csisolatinhebrew\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"csisolatinhebrew\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0csisolatinhebrew\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vcsisolatinhebrew\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"csisolatinhebrew\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vcsisolatinhebrew\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" csisolatinhebrew\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"csisolatinhebrew \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" csisolatinhebrew \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
csisolatinhebrew\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"csisolatinhebrew
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
csisolatinhebrew
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
csisolatinhebrew\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"csisolatinhebrew
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
csisolatinhebrew
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0hebrew\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"hebrew\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0hebrew\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vhebrew\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"hebrew\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vhebrew\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" hebrew\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"hebrew \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" hebrew \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
hebrew\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"hebrew
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
hebrew
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
hebrew\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"hebrew
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
hebrew
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0iso-8859-8\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso-8859-8\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0iso-8859-8\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\viso-8859-8\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso-8859-8\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\viso-8859-8\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" iso-8859-8\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso-8859-8 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" iso-8859-8 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso-8859-8\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso-8859-8
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso-8859-8
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso-8859-8\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso-8859-8
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso-8859-8
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0iso-8859-8-e\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso-8859-8-e\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0iso-8859-8-e\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\viso-8859-8-e\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso-8859-8-e\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\viso-8859-8-e\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" iso-8859-8-e\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso-8859-8-e \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" iso-8859-8-e \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso-8859-8-e\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso-8859-8-e
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso-8859-8-e
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso-8859-8-e\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso-8859-8-e
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso-8859-8-e
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0iso-ir-138\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso-ir-138\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0iso-ir-138\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\viso-ir-138\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso-ir-138\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\viso-ir-138\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" iso-ir-138\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso-ir-138 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" iso-ir-138 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso-ir-138\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso-ir-138
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso-ir-138
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso-ir-138\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso-ir-138
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso-ir-138
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0iso8859-8\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso8859-8\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0iso8859-8\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\viso8859-8\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso8859-8\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\viso8859-8\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" iso8859-8\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso8859-8 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" iso8859-8 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso8859-8\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso8859-8
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso8859-8
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso8859-8\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso8859-8
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso8859-8
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0iso88598\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso88598\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0iso88598\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\viso88598\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso88598\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\viso88598\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" iso88598\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso88598 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" iso88598 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso88598\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso88598
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso88598
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso88598\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso88598
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso88598
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0iso_8859-8\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso_8859-8\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0iso_8859-8\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\viso_8859-8\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso_8859-8\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\viso_8859-8\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" iso_8859-8\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso_8859-8 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" iso_8859-8 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso_8859-8\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso_8859-8
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso_8859-8
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso_8859-8\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso_8859-8
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso_8859-8
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0iso_8859-8:1988\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso_8859-8:1988\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0iso_8859-8:1988\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\viso_8859-8:1988\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso_8859-8:1988\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\viso_8859-8:1988\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" iso_8859-8:1988\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso_8859-8:1988 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" iso_8859-8:1988 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso_8859-8:1988\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso_8859-8:1988
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso_8859-8:1988
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso_8859-8:1988\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso_8859-8:1988
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso_8859-8:1988
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0visual\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"visual\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0visual\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vvisual\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"visual\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vvisual\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" visual\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"visual \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" visual \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
visual\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"visual
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
visual
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
visual\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"visual
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
visual
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0csiso88598i\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"csiso88598i\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0csiso88598i\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vcsiso88598i\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"csiso88598i\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vcsiso88598i\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" csiso88598i\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"csiso88598i \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" csiso88598i \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
csiso88598i\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"csiso88598i
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
csiso88598i
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
csiso88598i\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"csiso88598i
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
csiso88598i
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0iso-8859-8-i\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso-8859-8-i\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0iso-8859-8-i\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\viso-8859-8-i\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso-8859-8-i\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\viso-8859-8-i\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" iso-8859-8-i\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso-8859-8-i \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" iso-8859-8-i \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso-8859-8-i\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso-8859-8-i
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso-8859-8-i
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso-8859-8-i\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso-8859-8-i
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso-8859-8-i
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0logical\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"logical\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0logical\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vlogical\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"logical\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vlogical\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" logical\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"logical \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" logical \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
logical\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"logical
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
logical
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
logical\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"logical
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
logical
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0csisolatin6\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"csisolatin6\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0csisolatin6\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vcsisolatin6\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"csisolatin6\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vcsisolatin6\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" csisolatin6\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"csisolatin6 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" csisolatin6 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
csisolatin6\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"csisolatin6
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
csisolatin6
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
csisolatin6\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"csisolatin6
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
csisolatin6
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0iso-8859-10\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso-8859-10\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0iso-8859-10\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\viso-8859-10\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso-8859-10\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\viso-8859-10\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" iso-8859-10\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso-8859-10 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" iso-8859-10 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso-8859-10\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso-8859-10
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso-8859-10
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso-8859-10\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso-8859-10
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso-8859-10
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0iso-ir-157\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso-ir-157\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0iso-ir-157\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\viso-ir-157\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso-ir-157\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\viso-ir-157\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" iso-ir-157\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso-ir-157 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" iso-ir-157 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso-ir-157\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso-ir-157
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso-ir-157
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso-ir-157\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso-ir-157
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso-ir-157
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0iso8859-10\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso8859-10\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0iso8859-10\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\viso8859-10\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso8859-10\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\viso8859-10\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" iso8859-10\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso8859-10 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" iso8859-10 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso8859-10\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso8859-10
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso8859-10
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso8859-10\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso8859-10
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso8859-10
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0iso885910\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso885910\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0iso885910\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\viso885910\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso885910\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\viso885910\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" iso885910\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso885910 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" iso885910 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso885910\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso885910
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso885910
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso885910\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso885910
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso885910
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0l6\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"l6\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0l6\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vl6\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"l6\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vl6\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" l6\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"l6 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" l6 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
l6\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"l6
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
l6
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
l6\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"l6
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
l6
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0latin6\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"latin6\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0latin6\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vlatin6\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"latin6\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vlatin6\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" latin6\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"latin6 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" latin6 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
latin6\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"latin6
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
latin6
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
latin6\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"latin6
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
latin6
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0iso-8859-13\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso-8859-13\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0iso-8859-13\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\viso-8859-13\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso-8859-13\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\viso-8859-13\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" iso-8859-13\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso-8859-13 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" iso-8859-13 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso-8859-13\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso-8859-13
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso-8859-13
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso-8859-13\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso-8859-13
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso-8859-13
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0iso8859-13\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso8859-13\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0iso8859-13\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\viso8859-13\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso8859-13\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\viso8859-13\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" iso8859-13\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso8859-13 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" iso8859-13 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso8859-13\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso8859-13
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso8859-13
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso8859-13\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso8859-13
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso8859-13
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0iso885913\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso885913\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0iso885913\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\viso885913\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso885913\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\viso885913\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" iso885913\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso885913 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" iso885913 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso885913\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso885913
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso885913
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso885913\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso885913
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso885913
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0iso-8859-14\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso-8859-14\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0iso-8859-14\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\viso-8859-14\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso-8859-14\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\viso-8859-14\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" iso-8859-14\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso-8859-14 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" iso-8859-14 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso-8859-14\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso-8859-14
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso-8859-14
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso-8859-14\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso-8859-14
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso-8859-14
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0iso8859-14\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso8859-14\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0iso8859-14\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\viso8859-14\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso8859-14\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\viso8859-14\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" iso8859-14\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso8859-14 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" iso8859-14 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso8859-14\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso8859-14
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso8859-14
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso8859-14\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso8859-14
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso8859-14
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0iso885914\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso885914\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0iso885914\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\viso885914\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso885914\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\viso885914\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" iso885914\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso885914 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" iso885914 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso885914\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso885914
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso885914
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso885914\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso885914
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso885914
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0csisolatin9\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"csisolatin9\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0csisolatin9\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vcsisolatin9\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"csisolatin9\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vcsisolatin9\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" csisolatin9\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"csisolatin9 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" csisolatin9 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
csisolatin9\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"csisolatin9
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
csisolatin9
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
csisolatin9\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"csisolatin9
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
csisolatin9
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0iso-8859-15\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso-8859-15\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0iso-8859-15\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\viso-8859-15\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso-8859-15\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\viso-8859-15\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" iso-8859-15\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso-8859-15 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" iso-8859-15 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso-8859-15\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso-8859-15
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso-8859-15
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso-8859-15\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso-8859-15
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso-8859-15
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0iso8859-15\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso8859-15\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0iso8859-15\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\viso8859-15\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso8859-15\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\viso8859-15\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" iso8859-15\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso8859-15 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" iso8859-15 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso8859-15\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso8859-15
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso8859-15
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso8859-15\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso8859-15
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso8859-15
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0iso885915\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso885915\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0iso885915\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\viso885915\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso885915\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\viso885915\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" iso885915\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso885915 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" iso885915 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso885915\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso885915
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso885915
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso885915\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso885915
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso885915
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0iso_8859-15\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso_8859-15\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0iso_8859-15\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\viso_8859-15\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso_8859-15\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\viso_8859-15\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" iso_8859-15\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso_8859-15 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" iso_8859-15 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso_8859-15\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso_8859-15
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso_8859-15
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso_8859-15\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso_8859-15
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso_8859-15
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0l9\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"l9\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0l9\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vl9\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"l9\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vl9\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" l9\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"l9 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" l9 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
l9\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"l9
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
l9
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
l9\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"l9
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
l9
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0iso-8859-16\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso-8859-16\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0iso-8859-16\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\viso-8859-16\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso-8859-16\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\viso-8859-16\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" iso-8859-16\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso-8859-16 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" iso-8859-16 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso-8859-16\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso-8859-16
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso-8859-16
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso-8859-16\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso-8859-16
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso-8859-16
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0cskoi8r\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"cskoi8r\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0cskoi8r\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vcskoi8r\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"cskoi8r\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vcskoi8r\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" cskoi8r\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"cskoi8r \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" cskoi8r \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
cskoi8r\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"cskoi8r
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
cskoi8r
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
cskoi8r\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"cskoi8r
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
cskoi8r
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0koi\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"koi\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0koi\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vkoi\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"koi\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vkoi\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" koi\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"koi \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" koi \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
koi\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"koi
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
koi
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
koi\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"koi
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
koi
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0koi8\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"koi8\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0koi8\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vkoi8\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"koi8\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vkoi8\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" koi8\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"koi8 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" koi8 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
koi8\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"koi8
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
koi8
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
koi8\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"koi8
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
koi8
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0koi8-r\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"koi8-r\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0koi8-r\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vkoi8-r\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"koi8-r\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vkoi8-r\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" koi8-r\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"koi8-r \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" koi8-r \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
koi8-r\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"koi8-r
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
koi8-r
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
koi8-r\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"koi8-r
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
koi8-r
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0koi8_r\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"koi8_r\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0koi8_r\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vkoi8_r\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"koi8_r\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vkoi8_r\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" koi8_r\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"koi8_r \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" koi8_r \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
koi8_r\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"koi8_r
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
koi8_r
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
koi8_r\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"koi8_r
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
koi8_r
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0koi8-ru\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"koi8-ru\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0koi8-ru\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vkoi8-ru\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"koi8-ru\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vkoi8-ru\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" koi8-ru\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"koi8-ru \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" koi8-ru \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
koi8-ru\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"koi8-ru
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
koi8-ru
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
koi8-ru\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"koi8-ru
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
koi8-ru
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0koi8-u\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"koi8-u\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0koi8-u\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vkoi8-u\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"koi8-u\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vkoi8-u\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" koi8-u\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"koi8-u \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" koi8-u \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
koi8-u\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"koi8-u
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
koi8-u
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
koi8-u\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"koi8-u
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
koi8-u
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0csmacintosh\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"csmacintosh\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0csmacintosh\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vcsmacintosh\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"csmacintosh\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vcsmacintosh\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" csmacintosh\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"csmacintosh \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" csmacintosh \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
csmacintosh\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"csmacintosh
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
csmacintosh
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
csmacintosh\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"csmacintosh
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
csmacintosh
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0mac\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"mac\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0mac\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vmac\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"mac\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vmac\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" mac\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"mac \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" mac \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
mac\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"mac
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
mac
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
mac\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"mac
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
mac
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0macintosh\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"macintosh\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0macintosh\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vmacintosh\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"macintosh\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vmacintosh\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" macintosh\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"macintosh \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" macintosh \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
macintosh\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"macintosh
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
macintosh
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
macintosh\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"macintosh
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
macintosh
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0x-mac-roman\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"x-mac-roman\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0x-mac-roman\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vx-mac-roman\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"x-mac-roman\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vx-mac-roman\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" x-mac-roman\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"x-mac-roman \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" x-mac-roman \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
x-mac-roman\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"x-mac-roman
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
x-mac-roman
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
x-mac-roman\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"x-mac-roman
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
x-mac-roman
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0dos-874\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"dos-874\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0dos-874\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vdos-874\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"dos-874\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vdos-874\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" dos-874\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"dos-874 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" dos-874 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
dos-874\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"dos-874
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
dos-874
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
dos-874\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"dos-874
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
dos-874
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0iso-8859-11\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso-8859-11\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0iso-8859-11\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\viso-8859-11\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso-8859-11\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\viso-8859-11\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" iso-8859-11\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso-8859-11 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" iso-8859-11 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso-8859-11\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso-8859-11
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso-8859-11
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso-8859-11\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso-8859-11
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso-8859-11
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0iso8859-11\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso8859-11\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0iso8859-11\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\viso8859-11\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso8859-11\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\viso8859-11\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" iso8859-11\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso8859-11 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" iso8859-11 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso8859-11\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso8859-11
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso8859-11
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso8859-11\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso8859-11
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso8859-11
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0iso885911\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso885911\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0iso885911\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\viso885911\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso885911\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\viso885911\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" iso885911\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso885911 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" iso885911 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso885911\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso885911
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso885911
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso885911\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso885911
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso885911
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0tis-620\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"tis-620\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0tis-620\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vtis-620\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"tis-620\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vtis-620\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" tis-620\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"tis-620 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" tis-620 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
tis-620\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"tis-620
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
tis-620
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
tis-620\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"tis-620
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
tis-620
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0windows-874\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"windows-874\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0windows-874\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vwindows-874\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"windows-874\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vwindows-874\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" windows-874\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"windows-874 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" windows-874 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
windows-874\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"windows-874
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
windows-874
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
windows-874\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"windows-874
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
windows-874
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0cp1250\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"cp1250\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0cp1250\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vcp1250\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"cp1250\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vcp1250\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" cp1250\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"cp1250 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" cp1250 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
cp1250\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"cp1250
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
cp1250
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
cp1250\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"cp1250
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
cp1250
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0windows-1250\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"windows-1250\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0windows-1250\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vwindows-1250\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"windows-1250\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vwindows-1250\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" windows-1250\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"windows-1250 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" windows-1250 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
windows-1250\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"windows-1250
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
windows-1250
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
windows-1250\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"windows-1250
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
windows-1250
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0x-cp1250\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"x-cp1250\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0x-cp1250\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vx-cp1250\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"x-cp1250\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vx-cp1250\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" x-cp1250\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"x-cp1250 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" x-cp1250 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
x-cp1250\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"x-cp1250
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
x-cp1250
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
x-cp1250\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"x-cp1250
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
x-cp1250
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0cp1251\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"cp1251\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0cp1251\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vcp1251\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"cp1251\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vcp1251\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" cp1251\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"cp1251 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" cp1251 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
cp1251\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"cp1251
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
cp1251
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
cp1251\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"cp1251
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
cp1251
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0windows-1251\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"windows-1251\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0windows-1251\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vwindows-1251\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"windows-1251\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vwindows-1251\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" windows-1251\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"windows-1251 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" windows-1251 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
windows-1251\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"windows-1251
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
windows-1251
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
windows-1251\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"windows-1251
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
windows-1251
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0x-cp1251\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"x-cp1251\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0x-cp1251\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vx-cp1251\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"x-cp1251\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vx-cp1251\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" x-cp1251\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"x-cp1251 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" x-cp1251 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
x-cp1251\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"x-cp1251
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
x-cp1251
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
x-cp1251\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"x-cp1251
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
x-cp1251
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0ansi_x3.4-1968\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"ansi_x3.4-1968\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0ansi_x3.4-1968\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vansi_x3.4-1968\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"ansi_x3.4-1968\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vansi_x3.4-1968\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" ansi_x3.4-1968\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"ansi_x3.4-1968 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" ansi_x3.4-1968 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
ansi_x3.4-1968\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"ansi_x3.4-1968
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
ansi_x3.4-1968
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
ansi_x3.4-1968\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"ansi_x3.4-1968
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
ansi_x3.4-1968
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0ascii\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"ascii\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0ascii\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vascii\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"ascii\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vascii\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" ascii\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"ascii \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" ascii \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
ascii\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"ascii
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
ascii
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
ascii\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"ascii
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
ascii
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0cp1252\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"cp1252\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0cp1252\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vcp1252\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"cp1252\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vcp1252\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" cp1252\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"cp1252 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" cp1252 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
cp1252\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"cp1252
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
cp1252
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
cp1252\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"cp1252
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
cp1252
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0cp819\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"cp819\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0cp819\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vcp819\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"cp819\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vcp819\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" cp819\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"cp819 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" cp819 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
cp819\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"cp819
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
cp819
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
cp819\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"cp819
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
cp819
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0csisolatin1\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"csisolatin1\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0csisolatin1\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vcsisolatin1\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"csisolatin1\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vcsisolatin1\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" csisolatin1\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"csisolatin1 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" csisolatin1 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
csisolatin1\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"csisolatin1
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
csisolatin1
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
csisolatin1\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"csisolatin1
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
csisolatin1
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0ibm819\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"ibm819\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0ibm819\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vibm819\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"ibm819\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vibm819\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" ibm819\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"ibm819 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" ibm819 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
ibm819\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"ibm819
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
ibm819
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
ibm819\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"ibm819
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
ibm819
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0iso-8859-1\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso-8859-1\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0iso-8859-1\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\viso-8859-1\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso-8859-1\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\viso-8859-1\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" iso-8859-1\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso-8859-1 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" iso-8859-1 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso-8859-1\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso-8859-1
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso-8859-1
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso-8859-1\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso-8859-1
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso-8859-1
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0iso-ir-100\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso-ir-100\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0iso-ir-100\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\viso-ir-100\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso-ir-100\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\viso-ir-100\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" iso-ir-100\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso-ir-100 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" iso-ir-100 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso-ir-100\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso-ir-100
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso-ir-100
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso-ir-100\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso-ir-100
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso-ir-100
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0iso8859-1\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso8859-1\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0iso8859-1\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\viso8859-1\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso8859-1\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\viso8859-1\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" iso8859-1\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso8859-1 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" iso8859-1 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso8859-1\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso8859-1
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso8859-1
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso8859-1\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso8859-1
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso8859-1
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0iso88591\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso88591\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0iso88591\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\viso88591\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso88591\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\viso88591\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" iso88591\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso88591 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" iso88591 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso88591\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso88591
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso88591
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso88591\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso88591
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso88591
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0iso_8859-1\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso_8859-1\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0iso_8859-1\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\viso_8859-1\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso_8859-1\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\viso_8859-1\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" iso_8859-1\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso_8859-1 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" iso_8859-1 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso_8859-1\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso_8859-1
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso_8859-1
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso_8859-1\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso_8859-1
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso_8859-1
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0iso_8859-1:1987\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso_8859-1:1987\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0iso_8859-1:1987\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\viso_8859-1:1987\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso_8859-1:1987\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\viso_8859-1:1987\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" iso_8859-1:1987\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso_8859-1:1987 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" iso_8859-1:1987 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso_8859-1:1987\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso_8859-1:1987
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso_8859-1:1987
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso_8859-1:1987\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso_8859-1:1987
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso_8859-1:1987
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0l1\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"l1\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0l1\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vl1\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"l1\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vl1\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" l1\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"l1 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" l1 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
l1\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"l1
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
l1
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
l1\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"l1
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
l1
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0latin1\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"latin1\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0latin1\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vlatin1\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"latin1\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vlatin1\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" latin1\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"latin1 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" latin1 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
latin1\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"latin1
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
latin1
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
latin1\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"latin1
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
latin1
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0us-ascii\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"us-ascii\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0us-ascii\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vus-ascii\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"us-ascii\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vus-ascii\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" us-ascii\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"us-ascii \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" us-ascii \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
us-ascii\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"us-ascii
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
us-ascii
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
us-ascii\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"us-ascii
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
us-ascii
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0windows-1252\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"windows-1252\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0windows-1252\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vwindows-1252\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"windows-1252\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vwindows-1252\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" windows-1252\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"windows-1252 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" windows-1252 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
windows-1252\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"windows-1252
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
windows-1252
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
windows-1252\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"windows-1252
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
windows-1252
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0x-cp1252\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"x-cp1252\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0x-cp1252\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vx-cp1252\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"x-cp1252\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vx-cp1252\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" x-cp1252\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"x-cp1252 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" x-cp1252 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
x-cp1252\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"x-cp1252
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
x-cp1252
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
x-cp1252\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"x-cp1252
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
x-cp1252
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0cp1253\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"cp1253\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0cp1253\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vcp1253\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"cp1253\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vcp1253\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" cp1253\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"cp1253 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" cp1253 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
cp1253\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"cp1253
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
cp1253
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
cp1253\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"cp1253
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
cp1253
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0windows-1253\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"windows-1253\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0windows-1253\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vwindows-1253\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"windows-1253\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vwindows-1253\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" windows-1253\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"windows-1253 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" windows-1253 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
windows-1253\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"windows-1253
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
windows-1253
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
windows-1253\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"windows-1253
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
windows-1253
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0x-cp1253\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"x-cp1253\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0x-cp1253\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vx-cp1253\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"x-cp1253\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vx-cp1253\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" x-cp1253\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"x-cp1253 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" x-cp1253 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
x-cp1253\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"x-cp1253
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
x-cp1253
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
x-cp1253\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"x-cp1253
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
x-cp1253
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0cp1254\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"cp1254\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0cp1254\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vcp1254\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"cp1254\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vcp1254\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" cp1254\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"cp1254 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" cp1254 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
cp1254\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"cp1254
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
cp1254
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
cp1254\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"cp1254
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
cp1254
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0csisolatin5\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"csisolatin5\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0csisolatin5\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vcsisolatin5\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"csisolatin5\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vcsisolatin5\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" csisolatin5\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"csisolatin5 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" csisolatin5 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
csisolatin5\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"csisolatin5
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
csisolatin5
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
csisolatin5\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"csisolatin5
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
csisolatin5
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0iso-8859-9\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso-8859-9\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0iso-8859-9\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\viso-8859-9\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso-8859-9\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\viso-8859-9\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" iso-8859-9\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso-8859-9 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" iso-8859-9 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso-8859-9\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso-8859-9
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso-8859-9
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso-8859-9\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso-8859-9
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso-8859-9
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0iso-ir-148\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso-ir-148\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0iso-ir-148\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\viso-ir-148\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso-ir-148\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\viso-ir-148\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" iso-ir-148\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso-ir-148 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" iso-ir-148 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso-ir-148\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso-ir-148
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso-ir-148
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso-ir-148\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso-ir-148
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso-ir-148
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0iso8859-9\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso8859-9\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0iso8859-9\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\viso8859-9\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso8859-9\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\viso8859-9\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" iso8859-9\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso8859-9 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" iso8859-9 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso8859-9\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso8859-9
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso8859-9
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso8859-9\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso8859-9
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso8859-9
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0iso88599\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso88599\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0iso88599\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\viso88599\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso88599\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\viso88599\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" iso88599\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso88599 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" iso88599 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso88599\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso88599
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso88599
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso88599\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso88599
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso88599
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0iso_8859-9\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso_8859-9\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0iso_8859-9\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\viso_8859-9\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso_8859-9\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\viso_8859-9\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" iso_8859-9\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso_8859-9 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" iso_8859-9 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso_8859-9\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso_8859-9
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso_8859-9
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso_8859-9\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso_8859-9
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso_8859-9
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0iso_8859-9:1989\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso_8859-9:1989\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0iso_8859-9:1989\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\viso_8859-9:1989\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso_8859-9:1989\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\viso_8859-9:1989\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" iso_8859-9:1989\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso_8859-9:1989 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" iso_8859-9:1989 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso_8859-9:1989\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso_8859-9:1989
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso_8859-9:1989
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso_8859-9:1989\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso_8859-9:1989
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso_8859-9:1989
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0l5\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"l5\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0l5\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vl5\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"l5\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vl5\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" l5\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"l5 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" l5 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
l5\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"l5
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
l5
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
l5\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"l5
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
l5
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0latin5\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"latin5\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0latin5\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vlatin5\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"latin5\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vlatin5\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" latin5\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"latin5 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" latin5 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
latin5\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"latin5
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
latin5
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
latin5\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"latin5
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
latin5
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0windows-1254\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"windows-1254\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0windows-1254\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vwindows-1254\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"windows-1254\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vwindows-1254\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" windows-1254\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"windows-1254 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" windows-1254 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
windows-1254\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"windows-1254
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
windows-1254
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
windows-1254\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"windows-1254
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
windows-1254
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0x-cp1254\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"x-cp1254\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0x-cp1254\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vx-cp1254\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"x-cp1254\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vx-cp1254\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" x-cp1254\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"x-cp1254 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" x-cp1254 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
x-cp1254\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"x-cp1254
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
x-cp1254
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
x-cp1254\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"x-cp1254
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
x-cp1254
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0cp1255\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"cp1255\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0cp1255\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vcp1255\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"cp1255\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vcp1255\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" cp1255\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"cp1255 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" cp1255 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
cp1255\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"cp1255
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
cp1255
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
cp1255\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"cp1255
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
cp1255
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0windows-1255\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"windows-1255\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0windows-1255\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vwindows-1255\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"windows-1255\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vwindows-1255\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" windows-1255\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"windows-1255 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" windows-1255 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
windows-1255\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"windows-1255
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
windows-1255
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
windows-1255\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"windows-1255
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
windows-1255
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0x-cp1255\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"x-cp1255\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0x-cp1255\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vx-cp1255\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"x-cp1255\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vx-cp1255\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" x-cp1255\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"x-cp1255 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" x-cp1255 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
x-cp1255\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"x-cp1255
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
x-cp1255
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
x-cp1255\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"x-cp1255
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
x-cp1255
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0cp1256\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"cp1256\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0cp1256\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vcp1256\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"cp1256\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vcp1256\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" cp1256\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"cp1256 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" cp1256 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
cp1256\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"cp1256
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
cp1256
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
cp1256\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"cp1256
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
cp1256
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0windows-1256\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"windows-1256\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0windows-1256\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vwindows-1256\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"windows-1256\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vwindows-1256\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" windows-1256\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"windows-1256 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" windows-1256 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
windows-1256\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"windows-1256
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
windows-1256
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
windows-1256\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"windows-1256
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
windows-1256
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0x-cp1256\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"x-cp1256\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0x-cp1256\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vx-cp1256\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"x-cp1256\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vx-cp1256\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" x-cp1256\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"x-cp1256 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" x-cp1256 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
x-cp1256\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"x-cp1256
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
x-cp1256
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
x-cp1256\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"x-cp1256
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
x-cp1256
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0cp1257\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"cp1257\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0cp1257\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vcp1257\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"cp1257\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vcp1257\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" cp1257\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"cp1257 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" cp1257 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
cp1257\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"cp1257
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
cp1257
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
cp1257\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"cp1257
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
cp1257
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0windows-1257\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"windows-1257\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0windows-1257\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vwindows-1257\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"windows-1257\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vwindows-1257\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" windows-1257\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"windows-1257 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" windows-1257 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
windows-1257\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"windows-1257
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
windows-1257
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
windows-1257\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"windows-1257
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
windows-1257
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0x-cp1257\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"x-cp1257\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0x-cp1257\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vx-cp1257\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"x-cp1257\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vx-cp1257\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" x-cp1257\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"x-cp1257 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" x-cp1257 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
x-cp1257\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"x-cp1257
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
x-cp1257
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
x-cp1257\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"x-cp1257
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
x-cp1257
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0cp1258\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"cp1258\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0cp1258\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vcp1258\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"cp1258\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vcp1258\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" cp1258\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"cp1258 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" cp1258 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
cp1258\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"cp1258
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
cp1258
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
cp1258\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"cp1258
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
cp1258
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0windows-1258\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"windows-1258\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0windows-1258\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vwindows-1258\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"windows-1258\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vwindows-1258\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" windows-1258\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"windows-1258 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" windows-1258 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
windows-1258\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"windows-1258
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
windows-1258
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
windows-1258\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"windows-1258
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
windows-1258
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0x-cp1258\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"x-cp1258\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0x-cp1258\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vx-cp1258\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"x-cp1258\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vx-cp1258\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" x-cp1258\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"x-cp1258 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" x-cp1258 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
x-cp1258\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"x-cp1258
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
x-cp1258
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
x-cp1258\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"x-cp1258
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
x-cp1258
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0x-mac-cyrillic\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"x-mac-cyrillic\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0x-mac-cyrillic\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vx-mac-cyrillic\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"x-mac-cyrillic\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vx-mac-cyrillic\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" x-mac-cyrillic\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"x-mac-cyrillic \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" x-mac-cyrillic \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
x-mac-cyrillic\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"x-mac-cyrillic
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
x-mac-cyrillic
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
x-mac-cyrillic\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"x-mac-cyrillic
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
x-mac-cyrillic
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0x-mac-ukrainian\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"x-mac-ukrainian\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0x-mac-ukrainian\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vx-mac-ukrainian\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"x-mac-ukrainian\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vx-mac-ukrainian\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" x-mac-ukrainian\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"x-mac-ukrainian \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" x-mac-ukrainian \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
x-mac-ukrainian\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"x-mac-ukrainian
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
x-mac-ukrainian
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
x-mac-ukrainian\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"x-mac-ukrainian
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
x-mac-ukrainian
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0chinese\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"chinese\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0chinese\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vchinese\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"chinese\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vchinese\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" chinese\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"chinese \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" chinese \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
chinese\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"chinese
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
chinese
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
chinese\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"chinese
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
chinese
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0csgb2312\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"csgb2312\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0csgb2312\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vcsgb2312\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"csgb2312\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vcsgb2312\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" csgb2312\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"csgb2312 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" csgb2312 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
csgb2312\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"csgb2312
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
csgb2312
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
csgb2312\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"csgb2312
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
csgb2312
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0csiso58gb231280\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"csiso58gb231280\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0csiso58gb231280\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vcsiso58gb231280\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"csiso58gb231280\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vcsiso58gb231280\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" csiso58gb231280\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"csiso58gb231280 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" csiso58gb231280 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
csiso58gb231280\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"csiso58gb231280
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
csiso58gb231280
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
csiso58gb231280\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"csiso58gb231280
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
csiso58gb231280
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0gb2312\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"gb2312\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0gb2312\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vgb2312\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"gb2312\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vgb2312\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" gb2312\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"gb2312 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" gb2312 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
gb2312\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"gb2312
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
gb2312
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
gb2312\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"gb2312
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
gb2312
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0gb_2312\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"gb_2312\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0gb_2312\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vgb_2312\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"gb_2312\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vgb_2312\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" gb_2312\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"gb_2312 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" gb_2312 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
gb_2312\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"gb_2312
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
gb_2312
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
gb_2312\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"gb_2312
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
gb_2312
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0gb_2312-80\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"gb_2312-80\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0gb_2312-80\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vgb_2312-80\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"gb_2312-80\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vgb_2312-80\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" gb_2312-80\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"gb_2312-80 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" gb_2312-80 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
gb_2312-80\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"gb_2312-80
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
gb_2312-80
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
gb_2312-80\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"gb_2312-80
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
gb_2312-80
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0gbk\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"gbk\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0gbk\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vgbk\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"gbk\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vgbk\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" gbk\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"gbk \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" gbk \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
gbk\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"gbk
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
gbk
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
gbk\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"gbk
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
gbk
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0iso-ir-58\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso-ir-58\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0iso-ir-58\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\viso-ir-58\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso-ir-58\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\viso-ir-58\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" iso-ir-58\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso-ir-58 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" iso-ir-58 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso-ir-58\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso-ir-58
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso-ir-58
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso-ir-58\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso-ir-58
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso-ir-58
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0x-gbk\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"x-gbk\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0x-gbk\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vx-gbk\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"x-gbk\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vx-gbk\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" x-gbk\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"x-gbk \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" x-gbk \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
x-gbk\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"x-gbk
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
x-gbk
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
x-gbk\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"x-gbk
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
x-gbk
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0gb18030\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"gb18030\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0gb18030\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vgb18030\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"gb18030\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vgb18030\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" gb18030\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"gb18030 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" gb18030 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
gb18030\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"gb18030
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
gb18030
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
gb18030\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"gb18030
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
gb18030
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0big5\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"big5\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0big5\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vbig5\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"big5\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vbig5\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" big5\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"big5 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" big5 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
big5\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"big5
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
big5
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
big5\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"big5
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
big5
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0big5-hkscs\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"big5-hkscs\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0big5-hkscs\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vbig5-hkscs\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"big5-hkscs\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vbig5-hkscs\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" big5-hkscs\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"big5-hkscs \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" big5-hkscs \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
big5-hkscs\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"big5-hkscs
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
big5-hkscs
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
big5-hkscs\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"big5-hkscs
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
big5-hkscs
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0cn-big5\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"cn-big5\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0cn-big5\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vcn-big5\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"cn-big5\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vcn-big5\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" cn-big5\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"cn-big5 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" cn-big5 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
cn-big5\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"cn-big5
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
cn-big5
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
cn-big5\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"cn-big5
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
cn-big5
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0csbig5\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"csbig5\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0csbig5\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vcsbig5\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"csbig5\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vcsbig5\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" csbig5\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"csbig5 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" csbig5 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
csbig5\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"csbig5
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
csbig5
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
csbig5\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"csbig5
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
csbig5
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0x-x-big5\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"x-x-big5\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0x-x-big5\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vx-x-big5\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"x-x-big5\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vx-x-big5\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" x-x-big5\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"x-x-big5 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" x-x-big5 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
x-x-big5\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"x-x-big5
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
x-x-big5
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
x-x-big5\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"x-x-big5
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
x-x-big5
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0cseucpkdfmtjapanese\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"cseucpkdfmtjapanese\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0cseucpkdfmtjapanese\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vcseucpkdfmtjapanese\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"cseucpkdfmtjapanese\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vcseucpkdfmtjapanese\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" cseucpkdfmtjapanese\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"cseucpkdfmtjapanese \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" cseucpkdfmtjapanese \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
cseucpkdfmtjapanese\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"cseucpkdfmtjapanese
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
cseucpkdfmtjapanese
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
cseucpkdfmtjapanese\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"cseucpkdfmtjapanese
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
cseucpkdfmtjapanese
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0euc-jp\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"euc-jp\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0euc-jp\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\veuc-jp\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"euc-jp\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\veuc-jp\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" euc-jp\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"euc-jp \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" euc-jp \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
euc-jp\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"euc-jp
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
euc-jp
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
euc-jp\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"euc-jp
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
euc-jp
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0x-euc-jp\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"x-euc-jp\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0x-euc-jp\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vx-euc-jp\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"x-euc-jp\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vx-euc-jp\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" x-euc-jp\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"x-euc-jp \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" x-euc-jp \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
x-euc-jp\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"x-euc-jp
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
x-euc-jp
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
x-euc-jp\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"x-euc-jp
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
x-euc-jp
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0csiso2022jp\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"csiso2022jp\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0csiso2022jp\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vcsiso2022jp\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"csiso2022jp\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vcsiso2022jp\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" csiso2022jp\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"csiso2022jp \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" csiso2022jp \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
csiso2022jp\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"csiso2022jp
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
csiso2022jp
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
csiso2022jp\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"csiso2022jp
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
csiso2022jp
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0iso-2022-jp\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso-2022-jp\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0iso-2022-jp\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\viso-2022-jp\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso-2022-jp\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\viso-2022-jp\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" iso-2022-jp\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso-2022-jp \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" iso-2022-jp \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso-2022-jp\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso-2022-jp
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso-2022-jp
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso-2022-jp\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso-2022-jp
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso-2022-jp
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0csshiftjis\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"csshiftjis\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0csshiftjis\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vcsshiftjis\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"csshiftjis\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vcsshiftjis\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" csshiftjis\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"csshiftjis \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" csshiftjis \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
csshiftjis\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"csshiftjis
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
csshiftjis
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
csshiftjis\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"csshiftjis
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
csshiftjis
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0ms932\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"ms932\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0ms932\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vms932\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"ms932\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vms932\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" ms932\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"ms932 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" ms932 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
ms932\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"ms932
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
ms932
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
ms932\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"ms932
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
ms932
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0ms_kanji\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"ms_kanji\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0ms_kanji\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vms_kanji\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"ms_kanji\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vms_kanji\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" ms_kanji\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"ms_kanji \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" ms_kanji \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
ms_kanji\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"ms_kanji
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
ms_kanji
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
ms_kanji\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"ms_kanji
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
ms_kanji
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0shift-jis\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"shift-jis\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0shift-jis\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vshift-jis\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"shift-jis\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vshift-jis\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" shift-jis\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"shift-jis \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" shift-jis \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
shift-jis\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"shift-jis
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
shift-jis
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
shift-jis\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"shift-jis
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
shift-jis
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0shift_jis\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"shift_jis\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0shift_jis\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vshift_jis\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"shift_jis\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vshift_jis\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" shift_jis\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"shift_jis \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" shift_jis \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
shift_jis\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"shift_jis
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
shift_jis
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
shift_jis\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"shift_jis
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
shift_jis
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0sjis\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"sjis\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0sjis\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vsjis\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"sjis\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vsjis\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" sjis\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"sjis \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" sjis \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
sjis\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"sjis
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
sjis
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
sjis\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"sjis
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
sjis
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0windows-31j\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"windows-31j\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0windows-31j\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vwindows-31j\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"windows-31j\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vwindows-31j\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" windows-31j\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"windows-31j \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" windows-31j \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
windows-31j\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"windows-31j
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
windows-31j
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
windows-31j\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"windows-31j
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
windows-31j
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0x-sjis\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"x-sjis\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0x-sjis\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vx-sjis\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"x-sjis\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vx-sjis\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" x-sjis\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"x-sjis \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" x-sjis \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
x-sjis\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"x-sjis
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
x-sjis
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
x-sjis\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"x-sjis
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
x-sjis
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0cseuckr\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"cseuckr\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0cseuckr\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vcseuckr\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"cseuckr\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vcseuckr\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" cseuckr\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"cseuckr \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" cseuckr \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
cseuckr\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"cseuckr
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
cseuckr
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
cseuckr\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"cseuckr
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
cseuckr
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0csksc56011987\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"csksc56011987\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0csksc56011987\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vcsksc56011987\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"csksc56011987\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vcsksc56011987\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" csksc56011987\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"csksc56011987 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" csksc56011987 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
csksc56011987\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"csksc56011987
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
csksc56011987
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
csksc56011987\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"csksc56011987
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
csksc56011987
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0euc-kr\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"euc-kr\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0euc-kr\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\veuc-kr\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"euc-kr\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\veuc-kr\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" euc-kr\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"euc-kr \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" euc-kr \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
euc-kr\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"euc-kr
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
euc-kr
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
euc-kr\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"euc-kr
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
euc-kr
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0iso-ir-149\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso-ir-149\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0iso-ir-149\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\viso-ir-149\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso-ir-149\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\viso-ir-149\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" iso-ir-149\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso-ir-149 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" iso-ir-149 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso-ir-149\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso-ir-149
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso-ir-149
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso-ir-149\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso-ir-149
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso-ir-149
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0korean\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"korean\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0korean\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vkorean\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"korean\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vkorean\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" korean\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"korean \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" korean \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
korean\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"korean
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
korean
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
korean\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"korean
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
korean
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0ks_c_5601-1987\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"ks_c_5601-1987\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0ks_c_5601-1987\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vks_c_5601-1987\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"ks_c_5601-1987\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vks_c_5601-1987\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" ks_c_5601-1987\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"ks_c_5601-1987 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" ks_c_5601-1987 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
ks_c_5601-1987\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"ks_c_5601-1987
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
ks_c_5601-1987
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
ks_c_5601-1987\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"ks_c_5601-1987
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
ks_c_5601-1987
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0ks_c_5601-1989\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"ks_c_5601-1989\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0ks_c_5601-1989\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vks_c_5601-1989\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"ks_c_5601-1989\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vks_c_5601-1989\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" ks_c_5601-1989\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"ks_c_5601-1989 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" ks_c_5601-1989 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
ks_c_5601-1989\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"ks_c_5601-1989
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
ks_c_5601-1989
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
ks_c_5601-1989\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"ks_c_5601-1989
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
ks_c_5601-1989
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0ksc5601\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"ksc5601\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0ksc5601\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vksc5601\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"ksc5601\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vksc5601\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" ksc5601\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"ksc5601 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" ksc5601 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
ksc5601\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"ksc5601
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
ksc5601
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
ksc5601\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"ksc5601
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
ksc5601
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0ksc_5601\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"ksc_5601\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0ksc_5601\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vksc_5601\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"ksc_5601\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vksc_5601\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" ksc_5601\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"ksc_5601 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" ksc_5601 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
ksc_5601\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"ksc_5601
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
ksc_5601
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
ksc_5601\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"ksc_5601
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
ksc_5601
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0windows-949\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"windows-949\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0windows-949\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vwindows-949\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"windows-949\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vwindows-949\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" windows-949\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"windows-949 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" windows-949 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
windows-949\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"windows-949
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
windows-949
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
windows-949\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"windows-949
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
windows-949
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0csiso2022kr\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"csiso2022kr\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0csiso2022kr\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vcsiso2022kr\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"csiso2022kr\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vcsiso2022kr\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" csiso2022kr\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"csiso2022kr \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" csiso2022kr \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
csiso2022kr\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"csiso2022kr
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
csiso2022kr
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
csiso2022kr\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"csiso2022kr
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
csiso2022kr
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0hz-gb-2312\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"hz-gb-2312\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0hz-gb-2312\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vhz-gb-2312\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"hz-gb-2312\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vhz-gb-2312\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" hz-gb-2312\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"hz-gb-2312 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" hz-gb-2312 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
hz-gb-2312\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"hz-gb-2312
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
hz-gb-2312
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
hz-gb-2312\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"hz-gb-2312
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
hz-gb-2312
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0iso-2022-cn\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso-2022-cn\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0iso-2022-cn\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\viso-2022-cn\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso-2022-cn\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\viso-2022-cn\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" iso-2022-cn\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso-2022-cn \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" iso-2022-cn \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso-2022-cn\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso-2022-cn
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso-2022-cn
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso-2022-cn\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso-2022-cn
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso-2022-cn
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0iso-2022-cn-ext\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso-2022-cn-ext\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0iso-2022-cn-ext\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\viso-2022-cn-ext\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso-2022-cn-ext\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\viso-2022-cn-ext\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" iso-2022-cn-ext\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso-2022-cn-ext \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" iso-2022-cn-ext \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso-2022-cn-ext\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso-2022-cn-ext
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso-2022-cn-ext
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso-2022-cn-ext\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso-2022-cn-ext
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso-2022-cn-ext
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0iso-2022-kr\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso-2022-kr\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0iso-2022-kr\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\viso-2022-kr\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso-2022-kr\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\viso-2022-kr\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" iso-2022-kr\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso-2022-kr \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" iso-2022-kr \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso-2022-kr\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso-2022-kr
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso-2022-kr
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso-2022-kr\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso-2022-kr
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso-2022-kr
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0replacement\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"replacement\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0replacement\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vreplacement\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"replacement\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vreplacement\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" replacement\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"replacement \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" replacement \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
replacement\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"replacement
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
replacement
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
replacement\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"replacement
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
replacement
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0unicodefffe\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"unicodefffe\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0unicodefffe\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vunicodefffe\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"unicodefffe\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vunicodefffe\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" unicodefffe\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"unicodefffe \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" unicodefffe \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
unicodefffe\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"unicodefffe
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
unicodefffe
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
unicodefffe\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"unicodefffe
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
unicodefffe
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0utf-16be\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"utf-16be\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0utf-16be\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vutf-16be\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"utf-16be\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vutf-16be\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" utf-16be\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"utf-16be \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" utf-16be \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
utf-16be\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"utf-16be
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
utf-16be
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
utf-16be\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"utf-16be
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
utf-16be
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0csunicode\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"csunicode\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0csunicode\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vcsunicode\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"csunicode\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vcsunicode\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" csunicode\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"csunicode \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" csunicode \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
csunicode\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"csunicode
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
csunicode
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
csunicode\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"csunicode
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
csunicode
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0iso-10646-ucs-2\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso-10646-ucs-2\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0iso-10646-ucs-2\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\viso-10646-ucs-2\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso-10646-ucs-2\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\viso-10646-ucs-2\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" iso-10646-ucs-2\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso-10646-ucs-2 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" iso-10646-ucs-2 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso-10646-ucs-2\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso-10646-ucs-2
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso-10646-ucs-2
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso-10646-ucs-2\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"iso-10646-ucs-2
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
iso-10646-ucs-2
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0ucs-2\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"ucs-2\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0ucs-2\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vucs-2\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"ucs-2\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vucs-2\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" ucs-2\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"ucs-2 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" ucs-2 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
ucs-2\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"ucs-2
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
ucs-2
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
ucs-2\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"ucs-2
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
ucs-2
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0unicode\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"unicode\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0unicode\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vunicode\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"unicode\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vunicode\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" unicode\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"unicode \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" unicode \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
unicode\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"unicode
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
unicode
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
unicode\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"unicode
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
unicode
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0unicodefeff\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"unicodefeff\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0unicodefeff\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vunicodefeff\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"unicodefeff\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vunicodefeff\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" unicodefeff\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"unicodefeff \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" unicodefeff \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
unicodefeff\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"unicodefeff
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
unicodefeff
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
unicodefeff\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"unicodefeff
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
unicodefeff
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0utf-16\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"utf-16\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0utf-16\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vutf-16\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"utf-16\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vutf-16\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" utf-16\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"utf-16 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" utf-16 \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
utf-16\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"utf-16
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
utf-16
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
utf-16\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"utf-16
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
utf-16
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0utf-16le\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"utf-16le\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0utf-16le\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vutf-16le\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"utf-16le\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vutf-16le\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" utf-16le\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"utf-16le \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" utf-16le \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
utf-16le\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"utf-16le
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
utf-16le
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
utf-16le\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"utf-16le
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
utf-16le
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0x-user-defined\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"x-user-defined\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\0x-user-defined\\0\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vx-user-defined\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"x-user-defined\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"\\vx-user-defined\\v\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" x-user-defined\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"x-user-defined \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \" x-user-defined \" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
x-user-defined\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"x-user-defined
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
x-user-defined
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
x-user-defined\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"x-user-defined
\" should be rejected by TextDecoder.": { + "status": "PASS" + }, + "Invalid label \"
x-user-defined
\" should be rejected by TextDecoder.": { + "status": "PASS" + } +} \ No newline at end of file diff --git a/tests/wpt-harness/expectations/encoding/api-replacement-encodings.any.js.json b/tests/wpt-harness/expectations/encoding/api-replacement-encodings.any.js.json new file mode 100644 index 00000000..436fae50 --- /dev/null +++ b/tests/wpt-harness/expectations/encoding/api-replacement-encodings.any.js.json @@ -0,0 +1,20 @@ +{ + "Label for \"replacement\" should be rejected by API: csiso2022kr": { + "status": "PASS" + }, + "Label for \"replacement\" should be rejected by API: hz-gb-2312": { + "status": "PASS" + }, + "Label for \"replacement\" should be rejected by API: iso-2022-cn": { + "status": "PASS" + }, + "Label for \"replacement\" should be rejected by API: iso-2022-cn-ext": { + "status": "PASS" + }, + "Label for \"replacement\" should be rejected by API: iso-2022-kr": { + "status": "PASS" + }, + "Label for \"replacement\" should be rejected by API: replacement": { + "status": "PASS" + } +} \ No newline at end of file diff --git a/tests/wpt-harness/expectations/encoding/encodeInto.any.js.json b/tests/wpt-harness/expectations/encoding/encodeInto.any.js.json index e17c1e4b..7e141fdd 100644 --- a/tests/wpt-harness/expectations/encoding/encodeInto.any.js.json +++ b/tests/wpt-harness/expectations/encoding/encodeInto.any.js.json @@ -305,6 +305,12 @@ "Invalid encodeInto() destination: BigUint64Array, backed by: SharedArrayBuffer": { "status": "FAIL" }, + "Invalid encodeInto() destination: Float16Array, backed by: ArrayBuffer": { + "status": "PASS" + }, + "Invalid encodeInto() destination: Float16Array, backed by: SharedArrayBuffer": { + "status": "FAIL" + }, "Invalid encodeInto() destination: Float32Array, backed by: ArrayBuffer": { "status": "PASS" }, diff --git a/tests/wpt-harness/expectations/encoding/idlharness.any.js.json b/tests/wpt-harness/expectations/encoding/idlharness.any.js.json index 8393ed80..00b7eabd 100644 --- a/tests/wpt-harness/expectations/encoding/idlharness.any.js.json +++ b/tests/wpt-harness/expectations/encoding/idlharness.any.js.json @@ -41,7 +41,7 @@ "TextDecoder interface: existence and properties of interface prototype object's @@unscopables property": { "status": "PASS" }, - "TextDecoder interface: operation decode(optional BufferSource, optional TextDecodeOptions)": { + "TextDecoder interface: operation decode(optional AllowSharedBufferSource, optional TextDecodeOptions)": { "status": "PASS" }, "TextDecoder interface: attribute encoding": { @@ -59,10 +59,10 @@ "Stringification of new TextDecoder()": { "status": "PASS" }, - "TextDecoder interface: new TextDecoder() must inherit property \"decode(optional BufferSource, optional TextDecodeOptions)\" with the proper type": { + "TextDecoder interface: new TextDecoder() must inherit property \"decode(optional AllowSharedBufferSource, optional TextDecodeOptions)\" with the proper type": { "status": "PASS" }, - "TextDecoder interface: calling decode(optional BufferSource, optional TextDecodeOptions) on new TextDecoder() with too few arguments must throw TypeError": { + "TextDecoder interface: calling decode(optional AllowSharedBufferSource, optional TextDecodeOptions) on new TextDecoder() with too few arguments must throw TypeError": { "status": "PASS" }, "TextDecoder interface: new TextDecoder() must inherit property \"encoding\" with the proper type": { diff --git a/tests/wpt-harness/expectations/encoding/textdecoder-fatal-single-byte.any.js.json b/tests/wpt-harness/expectations/encoding/textdecoder-fatal-single-byte.any.js.json new file mode 100644 index 00000000..3ce60507 --- /dev/null +++ b/tests/wpt-harness/expectations/encoding/textdecoder-fatal-single-byte.any.js.json @@ -0,0 +1,21506 @@ +{ + "Not throw: IBM866 has a pointer 0": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 1": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 2": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 3": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 4": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 5": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 6": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 7": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 8": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 9": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 10": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 11": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 12": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 13": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 14": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 15": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 16": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 17": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 18": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 19": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 20": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 21": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 22": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 23": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 24": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 25": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 26": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 27": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 28": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 29": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 30": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 31": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 32": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 33": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 34": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 35": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 36": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 37": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 38": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 39": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 40": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 41": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 42": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 43": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 44": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 45": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 46": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 47": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 48": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 49": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 50": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 51": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 52": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 53": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 54": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 55": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 56": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 57": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 58": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 59": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 60": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 61": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 62": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 63": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 64": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 65": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 66": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 67": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 68": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 69": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 70": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 71": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 72": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 73": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 74": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 75": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 76": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 77": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 78": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 79": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 80": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 81": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 82": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 83": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 84": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 85": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 86": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 87": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 88": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 89": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 90": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 91": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 92": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 93": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 94": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 95": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 96": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 97": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 98": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 99": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 100": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 101": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 102": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 103": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 104": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 105": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 106": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 107": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 108": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 109": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 110": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 111": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 112": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 113": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 114": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 115": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 116": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 117": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 118": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 119": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 120": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 121": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 122": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 123": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 124": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 125": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 126": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 127": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 128": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 129": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 130": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 131": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 132": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 133": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 134": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 135": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 136": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 137": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 138": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 139": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 140": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 141": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 142": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 143": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 144": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 145": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 146": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 147": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 148": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 149": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 150": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 151": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 152": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 153": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 154": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 155": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 156": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 157": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 158": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 159": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 160": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 161": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 162": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 163": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 164": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 165": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 166": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 167": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 168": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 169": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 170": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 171": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 172": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 173": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 174": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 175": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 176": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 177": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 178": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 179": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 180": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 181": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 182": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 183": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 184": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 185": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 186": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 187": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 188": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 189": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 190": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 191": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 192": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 193": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 194": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 195": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 196": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 197": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 198": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 199": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 200": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 201": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 202": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 203": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 204": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 205": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 206": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 207": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 208": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 209": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 210": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 211": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 212": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 213": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 214": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 215": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 216": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 217": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 218": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 219": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 220": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 221": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 222": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 223": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 224": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 225": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 226": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 227": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 228": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 229": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 230": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 231": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 232": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 233": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 234": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 235": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 236": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 237": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 238": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 239": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 240": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 241": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 242": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 243": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 244": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 245": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 246": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 247": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 248": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 249": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 250": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 251": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 252": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 253": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 254": { + "status": "PASS" + }, + "Not throw: IBM866 has a pointer 255": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 0": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 1": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 2": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 3": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 4": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 5": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 6": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 7": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 8": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 9": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 10": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 11": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 12": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 13": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 14": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 15": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 16": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 17": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 18": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 19": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 20": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 21": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 22": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 23": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 24": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 25": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 26": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 27": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 28": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 29": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 30": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 31": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 32": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 33": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 34": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 35": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 36": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 37": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 38": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 39": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 40": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 41": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 42": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 43": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 44": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 45": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 46": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 47": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 48": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 49": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 50": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 51": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 52": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 53": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 54": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 55": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 56": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 57": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 58": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 59": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 60": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 61": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 62": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 63": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 64": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 65": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 66": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 67": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 68": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 69": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 70": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 71": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 72": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 73": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 74": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 75": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 76": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 77": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 78": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 79": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 80": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 81": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 82": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 83": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 84": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 85": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 86": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 87": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 88": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 89": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 90": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 91": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 92": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 93": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 94": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 95": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 96": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 97": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 98": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 99": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 100": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 101": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 102": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 103": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 104": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 105": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 106": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 107": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 108": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 109": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 110": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 111": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 112": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 113": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 114": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 115": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 116": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 117": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 118": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 119": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 120": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 121": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 122": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 123": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 124": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 125": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 126": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 127": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 128": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 129": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 130": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 131": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 132": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 133": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 134": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 135": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 136": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 137": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 138": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 139": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 140": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 141": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 142": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 143": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 144": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 145": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 146": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 147": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 148": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 149": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 150": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 151": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 152": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 153": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 154": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 155": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 156": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 157": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 158": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 159": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 160": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 161": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 162": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 163": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 164": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 165": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 166": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 167": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 168": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 169": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 170": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 171": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 172": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 173": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 174": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 175": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 176": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 177": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 178": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 179": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 180": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 181": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 182": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 183": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 184": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 185": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 186": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 187": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 188": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 189": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 190": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 191": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 192": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 193": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 194": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 195": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 196": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 197": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 198": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 199": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 200": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 201": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 202": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 203": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 204": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 205": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 206": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 207": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 208": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 209": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 210": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 211": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 212": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 213": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 214": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 215": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 216": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 217": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 218": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 219": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 220": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 221": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 222": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 223": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 224": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 225": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 226": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 227": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 228": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 229": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 230": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 231": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 232": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 233": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 234": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 235": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 236": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 237": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 238": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 239": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 240": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 241": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 242": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 243": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 244": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 245": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 246": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 247": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 248": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 249": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 250": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 251": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 252": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 253": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 254": { + "status": "PASS" + }, + "Not throw: ISO-8859-2 has a pointer 255": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 0": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 1": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 2": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 3": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 4": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 5": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 6": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 7": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 8": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 9": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 10": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 11": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 12": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 13": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 14": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 15": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 16": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 17": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 18": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 19": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 20": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 21": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 22": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 23": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 24": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 25": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 26": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 27": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 28": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 29": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 30": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 31": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 32": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 33": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 34": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 35": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 36": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 37": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 38": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 39": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 40": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 41": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 42": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 43": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 44": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 45": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 46": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 47": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 48": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 49": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 50": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 51": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 52": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 53": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 54": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 55": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 56": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 57": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 58": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 59": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 60": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 61": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 62": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 63": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 64": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 65": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 66": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 67": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 68": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 69": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 70": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 71": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 72": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 73": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 74": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 75": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 76": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 77": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 78": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 79": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 80": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 81": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 82": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 83": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 84": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 85": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 86": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 87": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 88": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 89": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 90": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 91": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 92": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 93": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 94": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 95": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 96": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 97": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 98": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 99": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 100": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 101": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 102": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 103": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 104": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 105": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 106": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 107": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 108": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 109": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 110": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 111": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 112": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 113": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 114": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 115": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 116": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 117": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 118": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 119": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 120": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 121": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 122": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 123": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 124": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 125": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 126": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 127": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 128": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 129": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 130": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 131": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 132": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 133": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 134": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 135": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 136": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 137": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 138": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 139": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 140": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 141": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 142": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 143": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 144": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 145": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 146": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 147": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 148": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 149": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 150": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 151": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 152": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 153": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 154": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 155": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 156": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 157": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 158": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 159": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 160": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 161": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 162": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 163": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 164": { + "status": "PASS" + }, + "Throw due to fatal flag: ISO-8859-3 doesn't have a pointer 165": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 166": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 167": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 168": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 169": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 170": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 171": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 172": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 173": { + "status": "PASS" + }, + "Throw due to fatal flag: ISO-8859-3 doesn't have a pointer 174": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 175": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 176": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 177": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 178": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 179": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 180": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 181": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 182": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 183": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 184": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 185": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 186": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 187": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 188": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 189": { + "status": "PASS" + }, + "Throw due to fatal flag: ISO-8859-3 doesn't have a pointer 190": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 191": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 192": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 193": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 194": { + "status": "PASS" + }, + "Throw due to fatal flag: ISO-8859-3 doesn't have a pointer 195": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 196": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 197": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 198": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 199": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 200": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 201": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 202": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 203": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 204": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 205": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 206": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 207": { + "status": "PASS" + }, + "Throw due to fatal flag: ISO-8859-3 doesn't have a pointer 208": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 209": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 210": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 211": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 212": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 213": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 214": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 215": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 216": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 217": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 218": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 219": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 220": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 221": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 222": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 223": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 224": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 225": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 226": { + "status": "PASS" + }, + "Throw due to fatal flag: ISO-8859-3 doesn't have a pointer 227": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 228": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 229": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 230": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 231": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 232": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 233": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 234": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 235": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 236": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 237": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 238": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 239": { + "status": "PASS" + }, + "Throw due to fatal flag: ISO-8859-3 doesn't have a pointer 240": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 241": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 242": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 243": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 244": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 245": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 246": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 247": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 248": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 249": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 250": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 251": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 252": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 253": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 254": { + "status": "PASS" + }, + "Not throw: ISO-8859-3 has a pointer 255": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 0": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 1": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 2": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 3": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 4": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 5": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 6": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 7": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 8": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 9": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 10": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 11": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 12": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 13": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 14": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 15": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 16": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 17": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 18": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 19": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 20": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 21": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 22": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 23": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 24": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 25": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 26": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 27": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 28": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 29": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 30": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 31": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 32": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 33": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 34": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 35": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 36": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 37": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 38": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 39": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 40": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 41": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 42": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 43": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 44": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 45": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 46": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 47": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 48": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 49": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 50": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 51": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 52": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 53": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 54": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 55": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 56": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 57": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 58": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 59": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 60": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 61": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 62": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 63": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 64": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 65": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 66": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 67": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 68": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 69": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 70": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 71": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 72": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 73": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 74": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 75": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 76": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 77": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 78": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 79": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 80": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 81": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 82": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 83": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 84": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 85": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 86": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 87": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 88": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 89": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 90": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 91": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 92": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 93": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 94": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 95": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 96": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 97": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 98": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 99": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 100": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 101": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 102": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 103": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 104": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 105": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 106": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 107": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 108": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 109": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 110": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 111": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 112": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 113": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 114": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 115": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 116": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 117": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 118": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 119": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 120": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 121": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 122": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 123": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 124": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 125": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 126": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 127": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 128": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 129": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 130": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 131": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 132": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 133": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 134": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 135": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 136": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 137": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 138": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 139": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 140": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 141": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 142": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 143": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 144": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 145": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 146": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 147": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 148": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 149": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 150": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 151": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 152": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 153": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 154": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 155": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 156": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 157": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 158": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 159": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 160": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 161": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 162": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 163": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 164": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 165": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 166": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 167": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 168": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 169": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 170": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 171": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 172": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 173": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 174": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 175": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 176": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 177": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 178": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 179": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 180": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 181": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 182": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 183": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 184": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 185": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 186": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 187": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 188": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 189": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 190": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 191": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 192": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 193": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 194": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 195": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 196": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 197": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 198": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 199": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 200": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 201": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 202": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 203": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 204": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 205": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 206": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 207": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 208": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 209": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 210": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 211": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 212": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 213": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 214": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 215": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 216": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 217": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 218": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 219": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 220": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 221": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 222": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 223": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 224": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 225": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 226": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 227": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 228": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 229": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 230": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 231": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 232": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 233": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 234": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 235": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 236": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 237": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 238": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 239": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 240": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 241": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 242": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 243": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 244": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 245": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 246": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 247": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 248": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 249": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 250": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 251": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 252": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 253": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 254": { + "status": "PASS" + }, + "Not throw: ISO-8859-4 has a pointer 255": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 0": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 1": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 2": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 3": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 4": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 5": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 6": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 7": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 8": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 9": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 10": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 11": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 12": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 13": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 14": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 15": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 16": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 17": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 18": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 19": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 20": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 21": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 22": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 23": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 24": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 25": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 26": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 27": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 28": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 29": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 30": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 31": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 32": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 33": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 34": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 35": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 36": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 37": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 38": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 39": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 40": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 41": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 42": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 43": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 44": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 45": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 46": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 47": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 48": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 49": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 50": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 51": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 52": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 53": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 54": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 55": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 56": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 57": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 58": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 59": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 60": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 61": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 62": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 63": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 64": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 65": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 66": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 67": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 68": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 69": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 70": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 71": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 72": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 73": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 74": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 75": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 76": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 77": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 78": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 79": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 80": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 81": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 82": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 83": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 84": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 85": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 86": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 87": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 88": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 89": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 90": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 91": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 92": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 93": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 94": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 95": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 96": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 97": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 98": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 99": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 100": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 101": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 102": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 103": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 104": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 105": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 106": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 107": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 108": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 109": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 110": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 111": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 112": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 113": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 114": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 115": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 116": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 117": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 118": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 119": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 120": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 121": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 122": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 123": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 124": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 125": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 126": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 127": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 128": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 129": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 130": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 131": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 132": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 133": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 134": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 135": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 136": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 137": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 138": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 139": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 140": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 141": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 142": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 143": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 144": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 145": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 146": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 147": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 148": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 149": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 150": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 151": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 152": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 153": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 154": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 155": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 156": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 157": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 158": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 159": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 160": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 161": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 162": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 163": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 164": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 165": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 166": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 167": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 168": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 169": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 170": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 171": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 172": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 173": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 174": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 175": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 176": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 177": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 178": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 179": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 180": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 181": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 182": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 183": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 184": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 185": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 186": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 187": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 188": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 189": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 190": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 191": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 192": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 193": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 194": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 195": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 196": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 197": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 198": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 199": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 200": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 201": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 202": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 203": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 204": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 205": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 206": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 207": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 208": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 209": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 210": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 211": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 212": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 213": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 214": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 215": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 216": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 217": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 218": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 219": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 220": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 221": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 222": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 223": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 224": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 225": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 226": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 227": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 228": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 229": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 230": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 231": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 232": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 233": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 234": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 235": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 236": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 237": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 238": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 239": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 240": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 241": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 242": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 243": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 244": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 245": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 246": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 247": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 248": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 249": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 250": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 251": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 252": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 253": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 254": { + "status": "PASS" + }, + "Not throw: ISO-8859-5 has a pointer 255": { + "status": "PASS" + }, + "Not throw: ISO-8859-6 has a pointer 0": { + "status": "PASS" + }, + "Not throw: ISO-8859-6 has a pointer 1": { + "status": "PASS" + }, + "Not throw: ISO-8859-6 has a pointer 2": { + "status": "PASS" + }, + "Not throw: ISO-8859-6 has a pointer 3": { + "status": "PASS" + }, + "Not throw: ISO-8859-6 has a pointer 4": { + "status": "PASS" + }, + "Not throw: ISO-8859-6 has a pointer 5": { + "status": "PASS" + }, + "Not throw: ISO-8859-6 has a pointer 6": { + "status": "PASS" + }, + "Not throw: ISO-8859-6 has a pointer 7": { + "status": "PASS" + }, + "Not throw: ISO-8859-6 has a pointer 8": { + "status": "PASS" + }, + "Not throw: ISO-8859-6 has a pointer 9": { + "status": "PASS" + }, + "Not throw: ISO-8859-6 has a pointer 10": { + "status": "PASS" + }, + "Not throw: ISO-8859-6 has a pointer 11": { + "status": "PASS" + }, + "Not throw: ISO-8859-6 has a pointer 12": { + "status": "PASS" + }, + "Not throw: ISO-8859-6 has a pointer 13": { + "status": "PASS" + }, + "Not throw: ISO-8859-6 has a pointer 14": { + "status": "PASS" + }, + "Not throw: ISO-8859-6 has a pointer 15": { + "status": "PASS" + }, + "Not throw: ISO-8859-6 has a pointer 16": { + "status": "PASS" + }, + "Not throw: ISO-8859-6 has a pointer 17": { + "status": "PASS" + }, + "Not throw: ISO-8859-6 has a pointer 18": { + "status": "PASS" + }, + "Not throw: ISO-8859-6 has a pointer 19": { + "status": "PASS" + }, + "Not throw: ISO-8859-6 has a pointer 20": { + "status": "PASS" + }, + "Not throw: ISO-8859-6 has a pointer 21": { + "status": "PASS" + }, + "Not throw: ISO-8859-6 has a pointer 22": { + "status": "PASS" + }, + "Not throw: ISO-8859-6 has a pointer 23": { + "status": "PASS" + }, + "Not throw: ISO-8859-6 has a pointer 24": { + "status": "PASS" + }, + "Not throw: ISO-8859-6 has a pointer 25": { + "status": "PASS" + }, + "Not throw: ISO-8859-6 has a pointer 26": { + "status": "PASS" + }, + "Not throw: ISO-8859-6 has a pointer 27": { + "status": "PASS" + }, + "Not throw: ISO-8859-6 has a pointer 28": { + "status": "PASS" + }, + "Not throw: ISO-8859-6 has a pointer 29": { + "status": "PASS" + }, + "Not throw: ISO-8859-6 has a pointer 30": { + "status": "PASS" + }, + "Not throw: ISO-8859-6 has a pointer 31": { + "status": "PASS" + }, + "Not throw: ISO-8859-6 has a pointer 32": { + "status": "PASS" + }, + "Not throw: ISO-8859-6 has a pointer 33": { + "status": "PASS" + }, + "Not throw: ISO-8859-6 has a pointer 34": { + "status": "PASS" + }, + "Not throw: ISO-8859-6 has a pointer 35": { + "status": "PASS" + }, + "Not throw: ISO-8859-6 has a pointer 36": { + "status": "PASS" + }, + "Not throw: ISO-8859-6 has a pointer 37": { + "status": "PASS" + }, + "Not throw: ISO-8859-6 has a pointer 38": { + "status": "PASS" + }, + "Not throw: ISO-8859-6 has a pointer 39": { + "status": "PASS" + }, + "Not throw: ISO-8859-6 has a pointer 40": { + "status": "PASS" + }, + "Not throw: ISO-8859-6 has a pointer 41": { + "status": "PASS" + }, + "Not throw: ISO-8859-6 has a pointer 42": { + "status": "PASS" + }, + "Not throw: ISO-8859-6 has a pointer 43": { + "status": "PASS" + }, + "Not throw: ISO-8859-6 has a pointer 44": { + "status": "PASS" + }, + "Not throw: ISO-8859-6 has a pointer 45": { + "status": "PASS" + }, + "Not throw: ISO-8859-6 has a pointer 46": { + "status": "PASS" + }, + "Not throw: ISO-8859-6 has a pointer 47": { + "status": "PASS" + }, + "Not throw: ISO-8859-6 has a pointer 48": { + "status": "PASS" + }, + "Not throw: ISO-8859-6 has a pointer 49": { + "status": "PASS" + }, + "Not throw: ISO-8859-6 has a pointer 50": { + "status": "PASS" + }, + "Not throw: ISO-8859-6 has a pointer 51": { + "status": "PASS" + }, + "Not throw: ISO-8859-6 has a pointer 52": { + "status": "PASS" + }, + "Not throw: ISO-8859-6 has a pointer 53": { + "status": "PASS" + }, + "Not throw: ISO-8859-6 has a pointer 54": { + "status": "PASS" + }, + "Not throw: ISO-8859-6 has a pointer 55": { + "status": "PASS" + }, + "Not throw: ISO-8859-6 has a pointer 56": { + "status": "PASS" + }, + "Not throw: ISO-8859-6 has a pointer 57": { + "status": "PASS" + }, + "Not throw: ISO-8859-6 has a pointer 58": { + "status": "PASS" + }, + "Not throw: ISO-8859-6 has a pointer 59": { + "status": "PASS" + }, + "Not throw: ISO-8859-6 has a pointer 60": { + "status": "PASS" + }, + "Not throw: ISO-8859-6 has a pointer 61": { + "status": "PASS" + }, + "Not throw: ISO-8859-6 has a pointer 62": { + "status": "PASS" + }, + "Not throw: ISO-8859-6 has a pointer 63": { + "status": "PASS" + }, + "Not throw: ISO-8859-6 has a pointer 64": { + "status": "PASS" + }, + "Not throw: ISO-8859-6 has a pointer 65": { + "status": "PASS" + }, + "Not throw: ISO-8859-6 has a pointer 66": { + "status": "PASS" + }, + "Not throw: ISO-8859-6 has a pointer 67": { + "status": "PASS" + }, + "Not throw: ISO-8859-6 has a pointer 68": { + "status": "PASS" + }, + "Not throw: ISO-8859-6 has a pointer 69": { + "status": "PASS" + }, + "Not throw: ISO-8859-6 has a pointer 70": { + "status": "PASS" + }, + "Not throw: ISO-8859-6 has a pointer 71": { + "status": "PASS" + }, + "Not throw: ISO-8859-6 has a pointer 72": { + "status": "PASS" + }, + "Not throw: ISO-8859-6 has a pointer 73": { + "status": "PASS" + }, + "Not throw: ISO-8859-6 has a pointer 74": { + "status": "PASS" + }, + "Not throw: ISO-8859-6 has a pointer 75": { + "status": "PASS" + }, + "Not throw: ISO-8859-6 has a pointer 76": { + "status": "PASS" + }, + "Not throw: ISO-8859-6 has a pointer 77": { + "status": "PASS" + }, + "Not throw: ISO-8859-6 has a pointer 78": { + "status": "PASS" + }, + "Not throw: ISO-8859-6 has a pointer 79": { + "status": "PASS" + }, + "Not throw: ISO-8859-6 has a pointer 80": { + "status": "PASS" + }, + "Not throw: ISO-8859-6 has a pointer 81": { + "status": "PASS" + }, + "Not throw: ISO-8859-6 has a pointer 82": { + "status": "PASS" + }, + "Not throw: ISO-8859-6 has a pointer 83": { + "status": "PASS" + }, + "Not throw: ISO-8859-6 has a pointer 84": { + "status": "PASS" + }, + "Not throw: ISO-8859-6 has a pointer 85": { + "status": "PASS" + }, + "Not throw: ISO-8859-6 has a pointer 86": { + "status": "PASS" + }, + "Not throw: ISO-8859-6 has a pointer 87": { + "status": "PASS" + }, + "Not throw: ISO-8859-6 has a pointer 88": { + "status": "PASS" + }, + "Not throw: ISO-8859-6 has a pointer 89": { + "status": "PASS" + }, + "Not throw: ISO-8859-6 has a pointer 90": { + "status": "PASS" + }, + "Not throw: ISO-8859-6 has a pointer 91": { + "status": "PASS" + }, + "Not throw: ISO-8859-6 has a pointer 92": { + "status": "PASS" + }, + "Not throw: ISO-8859-6 has a pointer 93": { + "status": "PASS" + }, + "Not throw: ISO-8859-6 has a pointer 94": { + "status": "PASS" + }, + "Not throw: ISO-8859-6 has a pointer 95": { + "status": "PASS" + }, + "Not throw: ISO-8859-6 has a pointer 96": { + "status": "PASS" + }, + "Not throw: ISO-8859-6 has a pointer 97": { + "status": "PASS" + }, + "Not throw: ISO-8859-6 has a pointer 98": { + "status": "PASS" + }, + "Not throw: ISO-8859-6 has a pointer 99": { + "status": "PASS" + }, + "Not throw: ISO-8859-6 has a pointer 100": { + "status": "PASS" + }, + "Not throw: ISO-8859-6 has a pointer 101": { + "status": "PASS" + }, + "Not throw: ISO-8859-6 has a pointer 102": { + "status": "PASS" + }, + "Not throw: ISO-8859-6 has a pointer 103": { + "status": "PASS" + }, + "Not throw: ISO-8859-6 has a pointer 104": { + "status": "PASS" + }, + "Not throw: ISO-8859-6 has a pointer 105": { + "status": "PASS" + }, + "Not throw: ISO-8859-6 has a pointer 106": { + "status": "PASS" + }, + "Not throw: ISO-8859-6 has a pointer 107": { + "status": "PASS" + }, + "Not throw: ISO-8859-6 has a pointer 108": { + "status": "PASS" + }, + "Not throw: ISO-8859-6 has a pointer 109": { + "status": "PASS" + }, + "Not throw: ISO-8859-6 has a pointer 110": { + "status": "PASS" + }, + "Not throw: ISO-8859-6 has a pointer 111": { + "status": "PASS" + }, + "Not throw: ISO-8859-6 has a pointer 112": { + "status": "PASS" + }, + "Not throw: ISO-8859-6 has a pointer 113": { + "status": "PASS" + }, + "Not throw: ISO-8859-6 has a pointer 114": { + "status": "PASS" + }, + "Not throw: ISO-8859-6 has a pointer 115": { + "status": "PASS" + }, + "Not throw: ISO-8859-6 has a pointer 116": { + "status": "PASS" + }, + "Not throw: ISO-8859-6 has a pointer 117": { + "status": "PASS" + }, + "Not throw: ISO-8859-6 has a pointer 118": { + "status": "PASS" + }, + "Not throw: ISO-8859-6 has a pointer 119": { + "status": "PASS" + }, + "Not throw: ISO-8859-6 has a pointer 120": { + "status": "PASS" + }, + "Not throw: ISO-8859-6 has a pointer 121": { + "status": "PASS" + }, + "Not throw: ISO-8859-6 has a pointer 122": { + "status": "PASS" + }, + "Not throw: ISO-8859-6 has a pointer 123": { + "status": "PASS" + }, + "Not throw: ISO-8859-6 has a pointer 124": { + "status": "PASS" + }, + "Not throw: ISO-8859-6 has a pointer 125": { + "status": "PASS" + }, + "Not throw: ISO-8859-6 has a pointer 126": { + "status": "PASS" + }, + "Not throw: ISO-8859-6 has a pointer 127": { + "status": "PASS" + }, + "Not throw: ISO-8859-6 has a pointer 128": { + "status": "PASS" + }, + "Not throw: ISO-8859-6 has a pointer 129": { + "status": "PASS" + }, + "Not throw: ISO-8859-6 has a pointer 130": { + "status": "PASS" + }, + "Not throw: ISO-8859-6 has a pointer 131": { + "status": "PASS" + }, + "Not throw: ISO-8859-6 has a pointer 132": { + "status": "PASS" + }, + "Not throw: ISO-8859-6 has a pointer 133": { + "status": "PASS" + }, + "Not throw: ISO-8859-6 has a pointer 134": { + "status": "PASS" + }, + "Not throw: ISO-8859-6 has a pointer 135": { + "status": "PASS" + }, + "Not throw: ISO-8859-6 has a pointer 136": { + "status": "PASS" + }, + "Not throw: ISO-8859-6 has a pointer 137": { + "status": "PASS" + }, + "Not throw: ISO-8859-6 has a pointer 138": { + "status": "PASS" + }, + "Not throw: ISO-8859-6 has a pointer 139": { + "status": "PASS" + }, + "Not throw: ISO-8859-6 has a pointer 140": { + "status": "PASS" + }, + "Not throw: ISO-8859-6 has a pointer 141": { + "status": "PASS" + }, + "Not throw: ISO-8859-6 has a pointer 142": { + "status": "PASS" + }, + "Not throw: ISO-8859-6 has a pointer 143": { + "status": "PASS" + }, + "Not throw: ISO-8859-6 has a pointer 144": { + "status": "PASS" + }, + "Not throw: ISO-8859-6 has a pointer 145": { + "status": "PASS" + }, + "Not throw: ISO-8859-6 has a pointer 146": { + "status": "PASS" + }, + "Not throw: ISO-8859-6 has a pointer 147": { + "status": "PASS" + }, + "Not throw: ISO-8859-6 has a pointer 148": { + "status": "PASS" + }, + "Not throw: ISO-8859-6 has a pointer 149": { + "status": "PASS" + }, + "Not throw: ISO-8859-6 has a pointer 150": { + "status": "PASS" + }, + "Not throw: ISO-8859-6 has a pointer 151": { + "status": "PASS" + }, + "Not throw: ISO-8859-6 has a pointer 152": { + "status": "PASS" + }, + "Not throw: ISO-8859-6 has a pointer 153": { + "status": "PASS" + }, + "Not throw: ISO-8859-6 has a pointer 154": { + "status": "PASS" + }, + "Not throw: ISO-8859-6 has a pointer 155": { + "status": "PASS" + }, + "Not throw: ISO-8859-6 has a pointer 156": { + "status": "PASS" + }, + "Not throw: ISO-8859-6 has a pointer 157": { + "status": "PASS" + }, + "Not throw: ISO-8859-6 has a pointer 158": { + "status": "PASS" + }, + "Not throw: ISO-8859-6 has a pointer 159": { + "status": "PASS" + }, + "Not throw: ISO-8859-6 has a pointer 160": { + "status": "PASS" + }, + "Throw due to fatal flag: ISO-8859-6 doesn't have a pointer 161": { + "status": "PASS" + }, + "Throw due to fatal flag: ISO-8859-6 doesn't have a pointer 162": { + "status": "PASS" + }, + "Throw due to fatal flag: ISO-8859-6 doesn't have a pointer 163": { + "status": "PASS" + }, + "Not throw: ISO-8859-6 has a pointer 164": { + "status": "PASS" + }, + "Throw due to fatal flag: ISO-8859-6 doesn't have a pointer 165": { + "status": "PASS" + }, + "Throw due to fatal flag: ISO-8859-6 doesn't have a pointer 166": { + "status": "PASS" + }, + "Throw due to fatal flag: ISO-8859-6 doesn't have a pointer 167": { + "status": "PASS" + }, + "Throw due to fatal flag: ISO-8859-6 doesn't have a pointer 168": { + "status": "PASS" + }, + "Throw due to fatal flag: ISO-8859-6 doesn't have a pointer 169": { + "status": "PASS" + }, + "Throw due to fatal flag: ISO-8859-6 doesn't have a pointer 170": { + "status": "PASS" + }, + "Throw due to fatal flag: ISO-8859-6 doesn't have a pointer 171": { + "status": "PASS" + }, + "Not throw: ISO-8859-6 has a pointer 172": { + "status": "PASS" + }, + "Not throw: ISO-8859-6 has a pointer 173": { + "status": "PASS" + }, + "Throw due to fatal flag: ISO-8859-6 doesn't have a pointer 174": { + "status": "PASS" + }, + "Throw due to fatal flag: ISO-8859-6 doesn't have a pointer 175": { + "status": "PASS" + }, + "Throw due to fatal flag: ISO-8859-6 doesn't have a pointer 176": { + "status": "PASS" + }, + "Throw due to fatal flag: ISO-8859-6 doesn't have a pointer 177": { + "status": "PASS" + }, + "Throw due to fatal flag: ISO-8859-6 doesn't have a pointer 178": { + "status": "PASS" + }, + "Throw due to fatal flag: ISO-8859-6 doesn't have a pointer 179": { + "status": "PASS" + }, + "Throw due to fatal flag: ISO-8859-6 doesn't have a pointer 180": { + "status": "PASS" + }, + "Throw due to fatal flag: ISO-8859-6 doesn't have a pointer 181": { + "status": "PASS" + }, + "Throw due to fatal flag: ISO-8859-6 doesn't have a pointer 182": { + "status": "PASS" + }, + "Throw due to fatal flag: ISO-8859-6 doesn't have a pointer 183": { + "status": "PASS" + }, + "Throw due to fatal flag: ISO-8859-6 doesn't have a pointer 184": { + "status": "PASS" + }, + "Throw due to fatal flag: ISO-8859-6 doesn't have a pointer 185": { + "status": "PASS" + }, + "Throw due to fatal flag: ISO-8859-6 doesn't have a pointer 186": { + "status": "PASS" + }, + "Not throw: ISO-8859-6 has a pointer 187": { + "status": "PASS" + }, + "Throw due to fatal flag: ISO-8859-6 doesn't have a pointer 188": { + "status": "PASS" + }, + "Throw due to fatal flag: ISO-8859-6 doesn't have a pointer 189": { + "status": "PASS" + }, + "Throw due to fatal flag: ISO-8859-6 doesn't have a pointer 190": { + "status": "PASS" + }, + "Not throw: ISO-8859-6 has a pointer 191": { + "status": "PASS" + }, + "Throw due to fatal flag: ISO-8859-6 doesn't have a pointer 192": { + "status": "PASS" + }, + "Not throw: ISO-8859-6 has a pointer 193": { + "status": "PASS" + }, + "Not throw: ISO-8859-6 has a pointer 194": { + "status": "PASS" + }, + "Not throw: ISO-8859-6 has a pointer 195": { + "status": "PASS" + }, + "Not throw: ISO-8859-6 has a pointer 196": { + "status": "PASS" + }, + "Not throw: ISO-8859-6 has a pointer 197": { + "status": "PASS" + }, + "Not throw: ISO-8859-6 has a pointer 198": { + "status": "PASS" + }, + "Not throw: ISO-8859-6 has a pointer 199": { + "status": "PASS" + }, + "Not throw: ISO-8859-6 has a pointer 200": { + "status": "PASS" + }, + "Not throw: ISO-8859-6 has a pointer 201": { + "status": "PASS" + }, + "Not throw: ISO-8859-6 has a pointer 202": { + "status": "PASS" + }, + "Not throw: ISO-8859-6 has a pointer 203": { + "status": "PASS" + }, + "Not throw: ISO-8859-6 has a pointer 204": { + "status": "PASS" + }, + "Not throw: ISO-8859-6 has a pointer 205": { + "status": "PASS" + }, + "Not throw: ISO-8859-6 has a pointer 206": { + "status": "PASS" + }, + "Not throw: ISO-8859-6 has a pointer 207": { + "status": "PASS" + }, + "Not throw: ISO-8859-6 has a pointer 208": { + "status": "PASS" + }, + "Not throw: ISO-8859-6 has a pointer 209": { + "status": "PASS" + }, + "Not throw: ISO-8859-6 has a pointer 210": { + "status": "PASS" + }, + "Not throw: ISO-8859-6 has a pointer 211": { + "status": "PASS" + }, + "Not throw: ISO-8859-6 has a pointer 212": { + "status": "PASS" + }, + "Not throw: ISO-8859-6 has a pointer 213": { + "status": "PASS" + }, + "Not throw: ISO-8859-6 has a pointer 214": { + "status": "PASS" + }, + "Not throw: ISO-8859-6 has a pointer 215": { + "status": "PASS" + }, + "Not throw: ISO-8859-6 has a pointer 216": { + "status": "PASS" + }, + "Not throw: ISO-8859-6 has a pointer 217": { + "status": "PASS" + }, + "Not throw: ISO-8859-6 has a pointer 218": { + "status": "PASS" + }, + "Throw due to fatal flag: ISO-8859-6 doesn't have a pointer 219": { + "status": "PASS" + }, + "Throw due to fatal flag: ISO-8859-6 doesn't have a pointer 220": { + "status": "PASS" + }, + "Throw due to fatal flag: ISO-8859-6 doesn't have a pointer 221": { + "status": "PASS" + }, + "Throw due to fatal flag: ISO-8859-6 doesn't have a pointer 222": { + "status": "PASS" + }, + "Throw due to fatal flag: ISO-8859-6 doesn't have a pointer 223": { + "status": "PASS" + }, + "Not throw: ISO-8859-6 has a pointer 224": { + "status": "PASS" + }, + "Not throw: ISO-8859-6 has a pointer 225": { + "status": "PASS" + }, + "Not throw: ISO-8859-6 has a pointer 226": { + "status": "PASS" + }, + "Not throw: ISO-8859-6 has a pointer 227": { + "status": "PASS" + }, + "Not throw: ISO-8859-6 has a pointer 228": { + "status": "PASS" + }, + "Not throw: ISO-8859-6 has a pointer 229": { + "status": "PASS" + }, + "Not throw: ISO-8859-6 has a pointer 230": { + "status": "PASS" + }, + "Not throw: ISO-8859-6 has a pointer 231": { + "status": "PASS" + }, + "Not throw: ISO-8859-6 has a pointer 232": { + "status": "PASS" + }, + "Not throw: ISO-8859-6 has a pointer 233": { + "status": "PASS" + }, + "Not throw: ISO-8859-6 has a pointer 234": { + "status": "PASS" + }, + "Not throw: ISO-8859-6 has a pointer 235": { + "status": "PASS" + }, + "Not throw: ISO-8859-6 has a pointer 236": { + "status": "PASS" + }, + "Not throw: ISO-8859-6 has a pointer 237": { + "status": "PASS" + }, + "Not throw: ISO-8859-6 has a pointer 238": { + "status": "PASS" + }, + "Not throw: ISO-8859-6 has a pointer 239": { + "status": "PASS" + }, + "Not throw: ISO-8859-6 has a pointer 240": { + "status": "PASS" + }, + "Not throw: ISO-8859-6 has a pointer 241": { + "status": "PASS" + }, + "Not throw: ISO-8859-6 has a pointer 242": { + "status": "PASS" + }, + "Throw due to fatal flag: ISO-8859-6 doesn't have a pointer 243": { + "status": "PASS" + }, + "Throw due to fatal flag: ISO-8859-6 doesn't have a pointer 244": { + "status": "PASS" + }, + "Throw due to fatal flag: ISO-8859-6 doesn't have a pointer 245": { + "status": "PASS" + }, + "Throw due to fatal flag: ISO-8859-6 doesn't have a pointer 246": { + "status": "PASS" + }, + "Throw due to fatal flag: ISO-8859-6 doesn't have a pointer 247": { + "status": "PASS" + }, + "Throw due to fatal flag: ISO-8859-6 doesn't have a pointer 248": { + "status": "PASS" + }, + "Throw due to fatal flag: ISO-8859-6 doesn't have a pointer 249": { + "status": "PASS" + }, + "Throw due to fatal flag: ISO-8859-6 doesn't have a pointer 250": { + "status": "PASS" + }, + "Throw due to fatal flag: ISO-8859-6 doesn't have a pointer 251": { + "status": "PASS" + }, + "Throw due to fatal flag: ISO-8859-6 doesn't have a pointer 252": { + "status": "PASS" + }, + "Throw due to fatal flag: ISO-8859-6 doesn't have a pointer 253": { + "status": "PASS" + }, + "Throw due to fatal flag: ISO-8859-6 doesn't have a pointer 254": { + "status": "PASS" + }, + "Throw due to fatal flag: ISO-8859-6 doesn't have a pointer 255": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 0": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 1": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 2": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 3": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 4": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 5": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 6": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 7": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 8": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 9": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 10": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 11": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 12": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 13": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 14": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 15": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 16": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 17": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 18": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 19": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 20": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 21": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 22": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 23": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 24": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 25": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 26": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 27": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 28": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 29": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 30": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 31": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 32": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 33": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 34": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 35": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 36": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 37": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 38": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 39": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 40": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 41": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 42": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 43": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 44": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 45": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 46": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 47": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 48": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 49": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 50": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 51": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 52": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 53": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 54": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 55": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 56": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 57": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 58": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 59": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 60": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 61": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 62": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 63": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 64": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 65": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 66": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 67": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 68": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 69": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 70": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 71": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 72": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 73": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 74": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 75": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 76": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 77": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 78": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 79": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 80": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 81": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 82": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 83": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 84": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 85": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 86": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 87": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 88": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 89": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 90": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 91": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 92": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 93": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 94": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 95": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 96": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 97": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 98": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 99": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 100": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 101": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 102": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 103": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 104": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 105": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 106": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 107": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 108": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 109": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 110": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 111": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 112": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 113": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 114": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 115": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 116": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 117": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 118": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 119": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 120": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 121": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 122": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 123": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 124": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 125": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 126": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 127": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 128": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 129": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 130": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 131": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 132": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 133": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 134": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 135": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 136": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 137": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 138": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 139": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 140": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 141": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 142": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 143": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 144": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 145": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 146": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 147": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 148": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 149": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 150": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 151": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 152": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 153": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 154": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 155": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 156": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 157": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 158": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 159": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 160": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 161": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 162": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 163": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 164": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 165": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 166": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 167": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 168": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 169": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 170": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 171": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 172": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 173": { + "status": "PASS" + }, + "Throw due to fatal flag: ISO-8859-7 doesn't have a pointer 174": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 175": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 176": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 177": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 178": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 179": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 180": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 181": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 182": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 183": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 184": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 185": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 186": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 187": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 188": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 189": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 190": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 191": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 192": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 193": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 194": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 195": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 196": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 197": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 198": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 199": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 200": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 201": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 202": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 203": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 204": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 205": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 206": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 207": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 208": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 209": { + "status": "PASS" + }, + "Throw due to fatal flag: ISO-8859-7 doesn't have a pointer 210": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 211": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 212": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 213": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 214": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 215": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 216": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 217": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 218": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 219": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 220": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 221": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 222": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 223": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 224": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 225": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 226": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 227": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 228": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 229": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 230": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 231": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 232": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 233": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 234": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 235": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 236": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 237": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 238": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 239": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 240": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 241": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 242": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 243": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 244": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 245": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 246": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 247": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 248": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 249": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 250": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 251": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 252": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 253": { + "status": "PASS" + }, + "Not throw: ISO-8859-7 has a pointer 254": { + "status": "PASS" + }, + "Throw due to fatal flag: ISO-8859-7 doesn't have a pointer 255": { + "status": "PASS" + }, + "Not throw: ISO-8859-8 has a pointer 0": { + "status": "PASS" + }, + "Not throw: ISO-8859-8 has a pointer 1": { + "status": "PASS" + }, + "Not throw: ISO-8859-8 has a pointer 2": { + "status": "PASS" + }, + "Not throw: ISO-8859-8 has a pointer 3": { + "status": "PASS" + }, + "Not throw: ISO-8859-8 has a pointer 4": { + "status": "PASS" + }, + "Not throw: ISO-8859-8 has a pointer 5": { + "status": "PASS" + }, + "Not throw: ISO-8859-8 has a pointer 6": { + "status": "PASS" + }, + "Not throw: ISO-8859-8 has a pointer 7": { + "status": "PASS" + }, + "Not throw: ISO-8859-8 has a pointer 8": { + "status": "PASS" + }, + "Not throw: ISO-8859-8 has a pointer 9": { + "status": "PASS" + }, + "Not throw: ISO-8859-8 has a pointer 10": { + "status": "PASS" + }, + "Not throw: ISO-8859-8 has a pointer 11": { + "status": "PASS" + }, + "Not throw: ISO-8859-8 has a pointer 12": { + "status": "PASS" + }, + "Not throw: ISO-8859-8 has a pointer 13": { + "status": "PASS" + }, + "Not throw: ISO-8859-8 has a pointer 14": { + "status": "PASS" + }, + "Not throw: ISO-8859-8 has a pointer 15": { + "status": "PASS" + }, + "Not throw: ISO-8859-8 has a pointer 16": { + "status": "PASS" + }, + "Not throw: ISO-8859-8 has a pointer 17": { + "status": "PASS" + }, + "Not throw: ISO-8859-8 has a pointer 18": { + "status": "PASS" + }, + "Not throw: ISO-8859-8 has a pointer 19": { + "status": "PASS" + }, + "Not throw: ISO-8859-8 has a pointer 20": { + "status": "PASS" + }, + "Not throw: ISO-8859-8 has a pointer 21": { + "status": "PASS" + }, + "Not throw: ISO-8859-8 has a pointer 22": { + "status": "PASS" + }, + "Not throw: ISO-8859-8 has a pointer 23": { + "status": "PASS" + }, + "Not throw: ISO-8859-8 has a pointer 24": { + "status": "PASS" + }, + "Not throw: ISO-8859-8 has a pointer 25": { + "status": "PASS" + }, + "Not throw: ISO-8859-8 has a pointer 26": { + "status": "PASS" + }, + "Not throw: ISO-8859-8 has a pointer 27": { + "status": "PASS" + }, + "Not throw: ISO-8859-8 has a pointer 28": { + "status": "PASS" + }, + "Not throw: ISO-8859-8 has a pointer 29": { + "status": "PASS" + }, + "Not throw: ISO-8859-8 has a pointer 30": { + "status": "PASS" + }, + "Not throw: ISO-8859-8 has a pointer 31": { + "status": "PASS" + }, + "Not throw: ISO-8859-8 has a pointer 32": { + "status": "PASS" + }, + "Not throw: ISO-8859-8 has a pointer 33": { + "status": "PASS" + }, + "Not throw: ISO-8859-8 has a pointer 34": { + "status": "PASS" + }, + "Not throw: ISO-8859-8 has a pointer 35": { + "status": "PASS" + }, + "Not throw: ISO-8859-8 has a pointer 36": { + "status": "PASS" + }, + "Not throw: ISO-8859-8 has a pointer 37": { + "status": "PASS" + }, + "Not throw: ISO-8859-8 has a pointer 38": { + "status": "PASS" + }, + "Not throw: ISO-8859-8 has a pointer 39": { + "status": "PASS" + }, + "Not throw: ISO-8859-8 has a pointer 40": { + "status": "PASS" + }, + "Not throw: ISO-8859-8 has a pointer 41": { + "status": "PASS" + }, + "Not throw: ISO-8859-8 has a pointer 42": { + "status": "PASS" + }, + "Not throw: ISO-8859-8 has a pointer 43": { + "status": "PASS" + }, + "Not throw: ISO-8859-8 has a pointer 44": { + "status": "PASS" + }, + "Not throw: ISO-8859-8 has a pointer 45": { + "status": "PASS" + }, + "Not throw: ISO-8859-8 has a pointer 46": { + "status": "PASS" + }, + "Not throw: ISO-8859-8 has a pointer 47": { + "status": "PASS" + }, + "Not throw: ISO-8859-8 has a pointer 48": { + "status": "PASS" + }, + "Not throw: ISO-8859-8 has a pointer 49": { + "status": "PASS" + }, + "Not throw: ISO-8859-8 has a pointer 50": { + "status": "PASS" + }, + "Not throw: ISO-8859-8 has a pointer 51": { + "status": "PASS" + }, + "Not throw: ISO-8859-8 has a pointer 52": { + "status": "PASS" + }, + "Not throw: ISO-8859-8 has a pointer 53": { + "status": "PASS" + }, + "Not throw: ISO-8859-8 has a pointer 54": { + "status": "PASS" + }, + "Not throw: ISO-8859-8 has a pointer 55": { + "status": "PASS" + }, + "Not throw: ISO-8859-8 has a pointer 56": { + "status": "PASS" + }, + "Not throw: ISO-8859-8 has a pointer 57": { + "status": "PASS" + }, + "Not throw: ISO-8859-8 has a pointer 58": { + "status": "PASS" + }, + "Not throw: ISO-8859-8 has a pointer 59": { + "status": "PASS" + }, + "Not throw: ISO-8859-8 has a pointer 60": { + "status": "PASS" + }, + "Not throw: ISO-8859-8 has a pointer 61": { + "status": "PASS" + }, + "Not throw: ISO-8859-8 has a pointer 62": { + "status": "PASS" + }, + "Not throw: ISO-8859-8 has a pointer 63": { + "status": "PASS" + }, + "Not throw: ISO-8859-8 has a pointer 64": { + "status": "PASS" + }, + "Not throw: ISO-8859-8 has a pointer 65": { + "status": "PASS" + }, + "Not throw: ISO-8859-8 has a pointer 66": { + "status": "PASS" + }, + "Not throw: ISO-8859-8 has a pointer 67": { + "status": "PASS" + }, + "Not throw: ISO-8859-8 has a pointer 68": { + "status": "PASS" + }, + "Not throw: ISO-8859-8 has a pointer 69": { + "status": "PASS" + }, + "Not throw: ISO-8859-8 has a pointer 70": { + "status": "PASS" + }, + "Not throw: ISO-8859-8 has a pointer 71": { + "status": "PASS" + }, + "Not throw: ISO-8859-8 has a pointer 72": { + "status": "PASS" + }, + "Not throw: ISO-8859-8 has a pointer 73": { + "status": "PASS" + }, + "Not throw: ISO-8859-8 has a pointer 74": { + "status": "PASS" + }, + "Not throw: ISO-8859-8 has a pointer 75": { + "status": "PASS" + }, + "Not throw: ISO-8859-8 has a pointer 76": { + "status": "PASS" + }, + "Not throw: ISO-8859-8 has a pointer 77": { + "status": "PASS" + }, + "Not throw: ISO-8859-8 has a pointer 78": { + "status": "PASS" + }, + "Not throw: ISO-8859-8 has a pointer 79": { + "status": "PASS" + }, + "Not throw: ISO-8859-8 has a pointer 80": { + "status": "PASS" + }, + "Not throw: ISO-8859-8 has a pointer 81": { + "status": "PASS" + }, + "Not throw: ISO-8859-8 has a pointer 82": { + "status": "PASS" + }, + "Not throw: ISO-8859-8 has a pointer 83": { + "status": "PASS" + }, + "Not throw: ISO-8859-8 has a pointer 84": { + "status": "PASS" + }, + "Not throw: ISO-8859-8 has a pointer 85": { + "status": "PASS" + }, + "Not throw: ISO-8859-8 has a pointer 86": { + "status": "PASS" + }, + "Not throw: ISO-8859-8 has a pointer 87": { + "status": "PASS" + }, + "Not throw: ISO-8859-8 has a pointer 88": { + "status": "PASS" + }, + "Not throw: ISO-8859-8 has a pointer 89": { + "status": "PASS" + }, + "Not throw: ISO-8859-8 has a pointer 90": { + "status": "PASS" + }, + "Not throw: ISO-8859-8 has a pointer 91": { + "status": "PASS" + }, + "Not throw: ISO-8859-8 has a pointer 92": { + "status": "PASS" + }, + "Not throw: ISO-8859-8 has a pointer 93": { + "status": "PASS" + }, + "Not throw: ISO-8859-8 has a pointer 94": { + "status": "PASS" + }, + "Not throw: ISO-8859-8 has a pointer 95": { + "status": "PASS" + }, + "Not throw: ISO-8859-8 has a pointer 96": { + "status": "PASS" + }, + "Not throw: ISO-8859-8 has a pointer 97": { + "status": "PASS" + }, + "Not throw: ISO-8859-8 has a pointer 98": { + "status": "PASS" + }, + "Not throw: ISO-8859-8 has a pointer 99": { + "status": "PASS" + }, + "Not throw: ISO-8859-8 has a pointer 100": { + "status": "PASS" + }, + "Not throw: ISO-8859-8 has a pointer 101": { + "status": "PASS" + }, + "Not throw: ISO-8859-8 has a pointer 102": { + "status": "PASS" + }, + "Not throw: ISO-8859-8 has a pointer 103": { + "status": "PASS" + }, + "Not throw: ISO-8859-8 has a pointer 104": { + "status": "PASS" + }, + "Not throw: ISO-8859-8 has a pointer 105": { + "status": "PASS" + }, + "Not throw: ISO-8859-8 has a pointer 106": { + "status": "PASS" + }, + "Not throw: ISO-8859-8 has a pointer 107": { + "status": "PASS" + }, + "Not throw: ISO-8859-8 has a pointer 108": { + "status": "PASS" + }, + "Not throw: ISO-8859-8 has a pointer 109": { + "status": "PASS" + }, + "Not throw: ISO-8859-8 has a pointer 110": { + "status": "PASS" + }, + "Not throw: ISO-8859-8 has a pointer 111": { + "status": "PASS" + }, + "Not throw: ISO-8859-8 has a pointer 112": { + "status": "PASS" + }, + "Not throw: ISO-8859-8 has a pointer 113": { + "status": "PASS" + }, + "Not throw: ISO-8859-8 has a pointer 114": { + "status": "PASS" + }, + "Not throw: ISO-8859-8 has a pointer 115": { + "status": "PASS" + }, + "Not throw: ISO-8859-8 has a pointer 116": { + "status": "PASS" + }, + "Not throw: ISO-8859-8 has a pointer 117": { + "status": "PASS" + }, + "Not throw: ISO-8859-8 has a pointer 118": { + "status": "PASS" + }, + "Not throw: ISO-8859-8 has a pointer 119": { + "status": "PASS" + }, + "Not throw: ISO-8859-8 has a pointer 120": { + "status": "PASS" + }, + "Not throw: ISO-8859-8 has a pointer 121": { + "status": "PASS" + }, + "Not throw: ISO-8859-8 has a pointer 122": { + "status": "PASS" + }, + "Not throw: ISO-8859-8 has a pointer 123": { + "status": "PASS" + }, + "Not throw: ISO-8859-8 has a pointer 124": { + "status": "PASS" + }, + "Not throw: ISO-8859-8 has a pointer 125": { + "status": "PASS" + }, + "Not throw: ISO-8859-8 has a pointer 126": { + "status": "PASS" + }, + "Not throw: ISO-8859-8 has a pointer 127": { + "status": "PASS" + }, + "Not throw: ISO-8859-8 has a pointer 128": { + "status": "PASS" + }, + "Not throw: ISO-8859-8 has a pointer 129": { + "status": "PASS" + }, + "Not throw: ISO-8859-8 has a pointer 130": { + "status": "PASS" + }, + "Not throw: ISO-8859-8 has a pointer 131": { + "status": "PASS" + }, + "Not throw: ISO-8859-8 has a pointer 132": { + "status": "PASS" + }, + "Not throw: ISO-8859-8 has a pointer 133": { + "status": "PASS" + }, + "Not throw: ISO-8859-8 has a pointer 134": { + "status": "PASS" + }, + "Not throw: ISO-8859-8 has a pointer 135": { + "status": "PASS" + }, + "Not throw: ISO-8859-8 has a pointer 136": { + "status": "PASS" + }, + "Not throw: ISO-8859-8 has a pointer 137": { + "status": "PASS" + }, + "Not throw: ISO-8859-8 has a pointer 138": { + "status": "PASS" + }, + "Not throw: ISO-8859-8 has a pointer 139": { + "status": "PASS" + }, + "Not throw: ISO-8859-8 has a pointer 140": { + "status": "PASS" + }, + "Not throw: ISO-8859-8 has a pointer 141": { + "status": "PASS" + }, + "Not throw: ISO-8859-8 has a pointer 142": { + "status": "PASS" + }, + "Not throw: ISO-8859-8 has a pointer 143": { + "status": "PASS" + }, + "Not throw: ISO-8859-8 has a pointer 144": { + "status": "PASS" + }, + "Not throw: ISO-8859-8 has a pointer 145": { + "status": "PASS" + }, + "Not throw: ISO-8859-8 has a pointer 146": { + "status": "PASS" + }, + "Not throw: ISO-8859-8 has a pointer 147": { + "status": "PASS" + }, + "Not throw: ISO-8859-8 has a pointer 148": { + "status": "PASS" + }, + "Not throw: ISO-8859-8 has a pointer 149": { + "status": "PASS" + }, + "Not throw: ISO-8859-8 has a pointer 150": { + "status": "PASS" + }, + "Not throw: ISO-8859-8 has a pointer 151": { + "status": "PASS" + }, + "Not throw: ISO-8859-8 has a pointer 152": { + "status": "PASS" + }, + "Not throw: ISO-8859-8 has a pointer 153": { + "status": "PASS" + }, + "Not throw: ISO-8859-8 has a pointer 154": { + "status": "PASS" + }, + "Not throw: ISO-8859-8 has a pointer 155": { + "status": "PASS" + }, + "Not throw: ISO-8859-8 has a pointer 156": { + "status": "PASS" + }, + "Not throw: ISO-8859-8 has a pointer 157": { + "status": "PASS" + }, + "Not throw: ISO-8859-8 has a pointer 158": { + "status": "PASS" + }, + "Not throw: ISO-8859-8 has a pointer 159": { + "status": "PASS" + }, + "Not throw: ISO-8859-8 has a pointer 160": { + "status": "PASS" + }, + "Throw due to fatal flag: ISO-8859-8 doesn't have a pointer 161": { + "status": "PASS" + }, + "Not throw: ISO-8859-8 has a pointer 162": { + "status": "PASS" + }, + "Not throw: ISO-8859-8 has a pointer 163": { + "status": "PASS" + }, + "Not throw: ISO-8859-8 has a pointer 164": { + "status": "PASS" + }, + "Not throw: ISO-8859-8 has a pointer 165": { + "status": "PASS" + }, + "Not throw: ISO-8859-8 has a pointer 166": { + "status": "PASS" + }, + "Not throw: ISO-8859-8 has a pointer 167": { + "status": "PASS" + }, + "Not throw: ISO-8859-8 has a pointer 168": { + "status": "PASS" + }, + "Not throw: ISO-8859-8 has a pointer 169": { + "status": "PASS" + }, + "Not throw: ISO-8859-8 has a pointer 170": { + "status": "PASS" + }, + "Not throw: ISO-8859-8 has a pointer 171": { + "status": "PASS" + }, + "Not throw: ISO-8859-8 has a pointer 172": { + "status": "PASS" + }, + "Not throw: ISO-8859-8 has a pointer 173": { + "status": "PASS" + }, + "Not throw: ISO-8859-8 has a pointer 174": { + "status": "PASS" + }, + "Not throw: ISO-8859-8 has a pointer 175": { + "status": "PASS" + }, + "Not throw: ISO-8859-8 has a pointer 176": { + "status": "PASS" + }, + "Not throw: ISO-8859-8 has a pointer 177": { + "status": "PASS" + }, + "Not throw: ISO-8859-8 has a pointer 178": { + "status": "PASS" + }, + "Not throw: ISO-8859-8 has a pointer 179": { + "status": "PASS" + }, + "Not throw: ISO-8859-8 has a pointer 180": { + "status": "PASS" + }, + "Not throw: ISO-8859-8 has a pointer 181": { + "status": "PASS" + }, + "Not throw: ISO-8859-8 has a pointer 182": { + "status": "PASS" + }, + "Not throw: ISO-8859-8 has a pointer 183": { + "status": "PASS" + }, + "Not throw: ISO-8859-8 has a pointer 184": { + "status": "PASS" + }, + "Not throw: ISO-8859-8 has a pointer 185": { + "status": "PASS" + }, + "Not throw: ISO-8859-8 has a pointer 186": { + "status": "PASS" + }, + "Not throw: ISO-8859-8 has a pointer 187": { + "status": "PASS" + }, + "Not throw: ISO-8859-8 has a pointer 188": { + "status": "PASS" + }, + "Not throw: ISO-8859-8 has a pointer 189": { + "status": "PASS" + }, + "Not throw: ISO-8859-8 has a pointer 190": { + "status": "PASS" + }, + "Throw due to fatal flag: ISO-8859-8 doesn't have a pointer 191": { + "status": "PASS" + }, + "Throw due to fatal flag: ISO-8859-8 doesn't have a pointer 192": { + "status": "PASS" + }, + "Throw due to fatal flag: ISO-8859-8 doesn't have a pointer 193": { + "status": "PASS" + }, + "Throw due to fatal flag: ISO-8859-8 doesn't have a pointer 194": { + "status": "PASS" + }, + "Throw due to fatal flag: ISO-8859-8 doesn't have a pointer 195": { + "status": "PASS" + }, + "Throw due to fatal flag: ISO-8859-8 doesn't have a pointer 196": { + "status": "PASS" + }, + "Throw due to fatal flag: ISO-8859-8 doesn't have a pointer 197": { + "status": "PASS" + }, + "Throw due to fatal flag: ISO-8859-8 doesn't have a pointer 198": { + "status": "PASS" + }, + "Throw due to fatal flag: ISO-8859-8 doesn't have a pointer 199": { + "status": "PASS" + }, + "Throw due to fatal flag: ISO-8859-8 doesn't have a pointer 200": { + "status": "PASS" + }, + "Throw due to fatal flag: ISO-8859-8 doesn't have a pointer 201": { + "status": "PASS" + }, + "Throw due to fatal flag: ISO-8859-8 doesn't have a pointer 202": { + "status": "PASS" + }, + "Throw due to fatal flag: ISO-8859-8 doesn't have a pointer 203": { + "status": "PASS" + }, + "Throw due to fatal flag: ISO-8859-8 doesn't have a pointer 204": { + "status": "PASS" + }, + "Throw due to fatal flag: ISO-8859-8 doesn't have a pointer 205": { + "status": "PASS" + }, + "Throw due to fatal flag: ISO-8859-8 doesn't have a pointer 206": { + "status": "PASS" + }, + "Throw due to fatal flag: ISO-8859-8 doesn't have a pointer 207": { + "status": "PASS" + }, + "Throw due to fatal flag: ISO-8859-8 doesn't have a pointer 208": { + "status": "PASS" + }, + "Throw due to fatal flag: ISO-8859-8 doesn't have a pointer 209": { + "status": "PASS" + }, + "Throw due to fatal flag: ISO-8859-8 doesn't have a pointer 210": { + "status": "PASS" + }, + "Throw due to fatal flag: ISO-8859-8 doesn't have a pointer 211": { + "status": "PASS" + }, + "Throw due to fatal flag: ISO-8859-8 doesn't have a pointer 212": { + "status": "PASS" + }, + "Throw due to fatal flag: ISO-8859-8 doesn't have a pointer 213": { + "status": "PASS" + }, + "Throw due to fatal flag: ISO-8859-8 doesn't have a pointer 214": { + "status": "PASS" + }, + "Throw due to fatal flag: ISO-8859-8 doesn't have a pointer 215": { + "status": "PASS" + }, + "Throw due to fatal flag: ISO-8859-8 doesn't have a pointer 216": { + "status": "PASS" + }, + "Throw due to fatal flag: ISO-8859-8 doesn't have a pointer 217": { + "status": "PASS" + }, + "Throw due to fatal flag: ISO-8859-8 doesn't have a pointer 218": { + "status": "PASS" + }, + "Throw due to fatal flag: ISO-8859-8 doesn't have a pointer 219": { + "status": "PASS" + }, + "Throw due to fatal flag: ISO-8859-8 doesn't have a pointer 220": { + "status": "PASS" + }, + "Throw due to fatal flag: ISO-8859-8 doesn't have a pointer 221": { + "status": "PASS" + }, + "Throw due to fatal flag: ISO-8859-8 doesn't have a pointer 222": { + "status": "PASS" + }, + "Not throw: ISO-8859-8 has a pointer 223": { + "status": "PASS" + }, + "Not throw: ISO-8859-8 has a pointer 224": { + "status": "PASS" + }, + "Not throw: ISO-8859-8 has a pointer 225": { + "status": "PASS" + }, + "Not throw: ISO-8859-8 has a pointer 226": { + "status": "PASS" + }, + "Not throw: ISO-8859-8 has a pointer 227": { + "status": "PASS" + }, + "Not throw: ISO-8859-8 has a pointer 228": { + "status": "PASS" + }, + "Not throw: ISO-8859-8 has a pointer 229": { + "status": "PASS" + }, + "Not throw: ISO-8859-8 has a pointer 230": { + "status": "PASS" + }, + "Not throw: ISO-8859-8 has a pointer 231": { + "status": "PASS" + }, + "Not throw: ISO-8859-8 has a pointer 232": { + "status": "PASS" + }, + "Not throw: ISO-8859-8 has a pointer 233": { + "status": "PASS" + }, + "Not throw: ISO-8859-8 has a pointer 234": { + "status": "PASS" + }, + "Not throw: ISO-8859-8 has a pointer 235": { + "status": "PASS" + }, + "Not throw: ISO-8859-8 has a pointer 236": { + "status": "PASS" + }, + "Not throw: ISO-8859-8 has a pointer 237": { + "status": "PASS" + }, + "Not throw: ISO-8859-8 has a pointer 238": { + "status": "PASS" + }, + "Not throw: ISO-8859-8 has a pointer 239": { + "status": "PASS" + }, + "Not throw: ISO-8859-8 has a pointer 240": { + "status": "PASS" + }, + "Not throw: ISO-8859-8 has a pointer 241": { + "status": "PASS" + }, + "Not throw: ISO-8859-8 has a pointer 242": { + "status": "PASS" + }, + "Not throw: ISO-8859-8 has a pointer 243": { + "status": "PASS" + }, + "Not throw: ISO-8859-8 has a pointer 244": { + "status": "PASS" + }, + "Not throw: ISO-8859-8 has a pointer 245": { + "status": "PASS" + }, + "Not throw: ISO-8859-8 has a pointer 246": { + "status": "PASS" + }, + "Not throw: ISO-8859-8 has a pointer 247": { + "status": "PASS" + }, + "Not throw: ISO-8859-8 has a pointer 248": { + "status": "PASS" + }, + "Not throw: ISO-8859-8 has a pointer 249": { + "status": "PASS" + }, + "Not throw: ISO-8859-8 has a pointer 250": { + "status": "PASS" + }, + "Throw due to fatal flag: ISO-8859-8 doesn't have a pointer 251": { + "status": "PASS" + }, + "Throw due to fatal flag: ISO-8859-8 doesn't have a pointer 252": { + "status": "PASS" + }, + "Not throw: ISO-8859-8 has a pointer 253": { + "status": "PASS" + }, + "Not throw: ISO-8859-8 has a pointer 254": { + "status": "PASS" + }, + "Throw due to fatal flag: ISO-8859-8 doesn't have a pointer 255": { + "status": "PASS" + }, + "Not throw: ISO-8859-8-I has a pointer 0": { + "status": "PASS" + }, + "Not throw: ISO-8859-8-I has a pointer 1": { + "status": "PASS" + }, + "Not throw: ISO-8859-8-I has a pointer 2": { + "status": "PASS" + }, + "Not throw: ISO-8859-8-I has a pointer 3": { + "status": "PASS" + }, + "Not throw: ISO-8859-8-I has a pointer 4": { + "status": "PASS" + }, + "Not throw: ISO-8859-8-I has a pointer 5": { + "status": "PASS" + }, + "Not throw: ISO-8859-8-I has a pointer 6": { + "status": "PASS" + }, + "Not throw: ISO-8859-8-I has a pointer 7": { + "status": "PASS" + }, + "Not throw: ISO-8859-8-I has a pointer 8": { + "status": "PASS" + }, + "Not throw: ISO-8859-8-I has a pointer 9": { + "status": "PASS" + }, + "Not throw: ISO-8859-8-I has a pointer 10": { + "status": "PASS" + }, + "Not throw: ISO-8859-8-I has a pointer 11": { + "status": "PASS" + }, + "Not throw: ISO-8859-8-I has a pointer 12": { + "status": "PASS" + }, + "Not throw: ISO-8859-8-I has a pointer 13": { + "status": "PASS" + }, + "Not throw: ISO-8859-8-I has a pointer 14": { + "status": "PASS" + }, + "Not throw: ISO-8859-8-I has a pointer 15": { + "status": "PASS" + }, + "Not throw: ISO-8859-8-I has a pointer 16": { + "status": "PASS" + }, + "Not throw: ISO-8859-8-I has a pointer 17": { + "status": "PASS" + }, + "Not throw: ISO-8859-8-I has a pointer 18": { + "status": "PASS" + }, + "Not throw: ISO-8859-8-I has a pointer 19": { + "status": "PASS" + }, + "Not throw: ISO-8859-8-I has a pointer 20": { + "status": "PASS" + }, + "Not throw: ISO-8859-8-I has a pointer 21": { + "status": "PASS" + }, + "Not throw: ISO-8859-8-I has a pointer 22": { + "status": "PASS" + }, + "Not throw: ISO-8859-8-I has a pointer 23": { + "status": "PASS" + }, + "Not throw: ISO-8859-8-I has a pointer 24": { + "status": "PASS" + }, + "Not throw: ISO-8859-8-I has a pointer 25": { + "status": "PASS" + }, + "Not throw: ISO-8859-8-I has a pointer 26": { + "status": "PASS" + }, + "Not throw: ISO-8859-8-I has a pointer 27": { + "status": "PASS" + }, + "Not throw: ISO-8859-8-I has a pointer 28": { + "status": "PASS" + }, + "Not throw: ISO-8859-8-I has a pointer 29": { + "status": "PASS" + }, + "Not throw: ISO-8859-8-I has a pointer 30": { + "status": "PASS" + }, + "Not throw: ISO-8859-8-I has a pointer 31": { + "status": "PASS" + }, + "Not throw: ISO-8859-8-I has a pointer 32": { + "status": "PASS" + }, + "Not throw: ISO-8859-8-I has a pointer 33": { + "status": "PASS" + }, + "Not throw: ISO-8859-8-I has a pointer 34": { + "status": "PASS" + }, + "Not throw: ISO-8859-8-I has a pointer 35": { + "status": "PASS" + }, + "Not throw: ISO-8859-8-I has a pointer 36": { + "status": "PASS" + }, + "Not throw: ISO-8859-8-I has a pointer 37": { + "status": "PASS" + }, + "Not throw: ISO-8859-8-I has a pointer 38": { + "status": "PASS" + }, + "Not throw: ISO-8859-8-I has a pointer 39": { + "status": "PASS" + }, + "Not throw: ISO-8859-8-I has a pointer 40": { + "status": "PASS" + }, + "Not throw: ISO-8859-8-I has a pointer 41": { + "status": "PASS" + }, + "Not throw: ISO-8859-8-I has a pointer 42": { + "status": "PASS" + }, + "Not throw: ISO-8859-8-I has a pointer 43": { + "status": "PASS" + }, + "Not throw: ISO-8859-8-I has a pointer 44": { + "status": "PASS" + }, + "Not throw: ISO-8859-8-I has a pointer 45": { + "status": "PASS" + }, + "Not throw: ISO-8859-8-I has a pointer 46": { + "status": "PASS" + }, + "Not throw: ISO-8859-8-I has a pointer 47": { + "status": "PASS" + }, + "Not throw: ISO-8859-8-I has a pointer 48": { + "status": "PASS" + }, + "Not throw: ISO-8859-8-I has a pointer 49": { + "status": "PASS" + }, + "Not throw: ISO-8859-8-I has a pointer 50": { + "status": "PASS" + }, + "Not throw: ISO-8859-8-I has a pointer 51": { + "status": "PASS" + }, + "Not throw: ISO-8859-8-I has a pointer 52": { + "status": "PASS" + }, + "Not throw: ISO-8859-8-I has a pointer 53": { + "status": "PASS" + }, + "Not throw: ISO-8859-8-I has a pointer 54": { + "status": "PASS" + }, + "Not throw: ISO-8859-8-I has a pointer 55": { + "status": "PASS" + }, + "Not throw: ISO-8859-8-I has a pointer 56": { + "status": "PASS" + }, + "Not throw: ISO-8859-8-I has a pointer 57": { + "status": "PASS" + }, + "Not throw: ISO-8859-8-I has a pointer 58": { + "status": "PASS" + }, + "Not throw: ISO-8859-8-I has a pointer 59": { + "status": "PASS" + }, + "Not throw: ISO-8859-8-I has a pointer 60": { + "status": "PASS" + }, + "Not throw: ISO-8859-8-I has a pointer 61": { + "status": "PASS" + }, + "Not throw: ISO-8859-8-I has a pointer 62": { + "status": "PASS" + }, + "Not throw: ISO-8859-8-I has a pointer 63": { + "status": "PASS" + }, + "Not throw: ISO-8859-8-I has a pointer 64": { + "status": "PASS" + }, + "Not throw: ISO-8859-8-I has a pointer 65": { + "status": "PASS" + }, + "Not throw: ISO-8859-8-I has a pointer 66": { + "status": "PASS" + }, + "Not throw: ISO-8859-8-I has a pointer 67": { + "status": "PASS" + }, + "Not throw: ISO-8859-8-I has a pointer 68": { + "status": "PASS" + }, + "Not throw: ISO-8859-8-I has a pointer 69": { + "status": "PASS" + }, + "Not throw: ISO-8859-8-I has a pointer 70": { + "status": "PASS" + }, + "Not throw: ISO-8859-8-I has a pointer 71": { + "status": "PASS" + }, + "Not throw: ISO-8859-8-I has a pointer 72": { + "status": "PASS" + }, + "Not throw: ISO-8859-8-I has a pointer 73": { + "status": "PASS" + }, + "Not throw: ISO-8859-8-I has a pointer 74": { + "status": "PASS" + }, + "Not throw: ISO-8859-8-I has a pointer 75": { + "status": "PASS" + }, + "Not throw: ISO-8859-8-I has a pointer 76": { + "status": "PASS" + }, + "Not throw: ISO-8859-8-I has a pointer 77": { + "status": "PASS" + }, + "Not throw: ISO-8859-8-I has a pointer 78": { + "status": "PASS" + }, + "Not throw: ISO-8859-8-I has a pointer 79": { + "status": "PASS" + }, + "Not throw: ISO-8859-8-I has a pointer 80": { + "status": "PASS" + }, + "Not throw: ISO-8859-8-I has a pointer 81": { + "status": "PASS" + }, + "Not throw: ISO-8859-8-I has a pointer 82": { + "status": "PASS" + }, + "Not throw: ISO-8859-8-I has a pointer 83": { + "status": "PASS" + }, + "Not throw: ISO-8859-8-I has a pointer 84": { + "status": "PASS" + }, + "Not throw: ISO-8859-8-I has a pointer 85": { + "status": "PASS" + }, + "Not throw: ISO-8859-8-I has a pointer 86": { + "status": "PASS" + }, + "Not throw: ISO-8859-8-I has a pointer 87": { + "status": "PASS" + }, + "Not throw: ISO-8859-8-I has a pointer 88": { + "status": "PASS" + }, + "Not throw: ISO-8859-8-I has a pointer 89": { + "status": "PASS" + }, + "Not throw: ISO-8859-8-I has a pointer 90": { + "status": "PASS" + }, + "Not throw: ISO-8859-8-I has a pointer 91": { + "status": "PASS" + }, + "Not throw: ISO-8859-8-I has a pointer 92": { + "status": "PASS" + }, + "Not throw: ISO-8859-8-I has a pointer 93": { + "status": "PASS" + }, + "Not throw: ISO-8859-8-I has a pointer 94": { + "status": "PASS" + }, + "Not throw: ISO-8859-8-I has a pointer 95": { + "status": "PASS" + }, + "Not throw: ISO-8859-8-I has a pointer 96": { + "status": "PASS" + }, + "Not throw: ISO-8859-8-I has a pointer 97": { + "status": "PASS" + }, + "Not throw: ISO-8859-8-I has a pointer 98": { + "status": "PASS" + }, + "Not throw: ISO-8859-8-I has a pointer 99": { + "status": "PASS" + }, + "Not throw: ISO-8859-8-I has a pointer 100": { + "status": "PASS" + }, + "Not throw: ISO-8859-8-I has a pointer 101": { + "status": "PASS" + }, + "Not throw: ISO-8859-8-I has a pointer 102": { + "status": "PASS" + }, + "Not throw: ISO-8859-8-I has a pointer 103": { + "status": "PASS" + }, + "Not throw: ISO-8859-8-I has a pointer 104": { + "status": "PASS" + }, + "Not throw: ISO-8859-8-I has a pointer 105": { + "status": "PASS" + }, + "Not throw: ISO-8859-8-I has a pointer 106": { + "status": "PASS" + }, + "Not throw: ISO-8859-8-I has a pointer 107": { + "status": "PASS" + }, + "Not throw: ISO-8859-8-I has a pointer 108": { + "status": "PASS" + }, + "Not throw: ISO-8859-8-I has a pointer 109": { + "status": "PASS" + }, + "Not throw: ISO-8859-8-I has a pointer 110": { + "status": "PASS" + }, + "Not throw: ISO-8859-8-I has a pointer 111": { + "status": "PASS" + }, + "Not throw: ISO-8859-8-I has a pointer 112": { + "status": "PASS" + }, + "Not throw: ISO-8859-8-I has a pointer 113": { + "status": "PASS" + }, + "Not throw: ISO-8859-8-I has a pointer 114": { + "status": "PASS" + }, + "Not throw: ISO-8859-8-I has a pointer 115": { + "status": "PASS" + }, + "Not throw: ISO-8859-8-I has a pointer 116": { + "status": "PASS" + }, + "Not throw: ISO-8859-8-I has a pointer 117": { + "status": "PASS" + }, + "Not throw: ISO-8859-8-I has a pointer 118": { + "status": "PASS" + }, + "Not throw: ISO-8859-8-I has a pointer 119": { + "status": "PASS" + }, + "Not throw: ISO-8859-8-I has a pointer 120": { + "status": "PASS" + }, + "Not throw: ISO-8859-8-I has a pointer 121": { + "status": "PASS" + }, + "Not throw: ISO-8859-8-I has a pointer 122": { + "status": "PASS" + }, + "Not throw: ISO-8859-8-I has a pointer 123": { + "status": "PASS" + }, + "Not throw: ISO-8859-8-I has a pointer 124": { + "status": "PASS" + }, + "Not throw: ISO-8859-8-I has a pointer 125": { + "status": "PASS" + }, + "Not throw: ISO-8859-8-I has a pointer 126": { + "status": "PASS" + }, + "Not throw: ISO-8859-8-I has a pointer 127": { + "status": "PASS" + }, + "Not throw: ISO-8859-8-I has a pointer 128": { + "status": "PASS" + }, + "Not throw: ISO-8859-8-I has a pointer 129": { + "status": "PASS" + }, + "Not throw: ISO-8859-8-I has a pointer 130": { + "status": "PASS" + }, + "Not throw: ISO-8859-8-I has a pointer 131": { + "status": "PASS" + }, + "Not throw: ISO-8859-8-I has a pointer 132": { + "status": "PASS" + }, + "Not throw: ISO-8859-8-I has a pointer 133": { + "status": "PASS" + }, + "Not throw: ISO-8859-8-I has a pointer 134": { + "status": "PASS" + }, + "Not throw: ISO-8859-8-I has a pointer 135": { + "status": "PASS" + }, + "Not throw: ISO-8859-8-I has a pointer 136": { + "status": "PASS" + }, + "Not throw: ISO-8859-8-I has a pointer 137": { + "status": "PASS" + }, + "Not throw: ISO-8859-8-I has a pointer 138": { + "status": "PASS" + }, + "Not throw: ISO-8859-8-I has a pointer 139": { + "status": "PASS" + }, + "Not throw: ISO-8859-8-I has a pointer 140": { + "status": "PASS" + }, + "Not throw: ISO-8859-8-I has a pointer 141": { + "status": "PASS" + }, + "Not throw: ISO-8859-8-I has a pointer 142": { + "status": "PASS" + }, + "Not throw: ISO-8859-8-I has a pointer 143": { + "status": "PASS" + }, + "Not throw: ISO-8859-8-I has a pointer 144": { + "status": "PASS" + }, + "Not throw: ISO-8859-8-I has a pointer 145": { + "status": "PASS" + }, + "Not throw: ISO-8859-8-I has a pointer 146": { + "status": "PASS" + }, + "Not throw: ISO-8859-8-I has a pointer 147": { + "status": "PASS" + }, + "Not throw: ISO-8859-8-I has a pointer 148": { + "status": "PASS" + }, + "Not throw: ISO-8859-8-I has a pointer 149": { + "status": "PASS" + }, + "Not throw: ISO-8859-8-I has a pointer 150": { + "status": "PASS" + }, + "Not throw: ISO-8859-8-I has a pointer 151": { + "status": "PASS" + }, + "Not throw: ISO-8859-8-I has a pointer 152": { + "status": "PASS" + }, + "Not throw: ISO-8859-8-I has a pointer 153": { + "status": "PASS" + }, + "Not throw: ISO-8859-8-I has a pointer 154": { + "status": "PASS" + }, + "Not throw: ISO-8859-8-I has a pointer 155": { + "status": "PASS" + }, + "Not throw: ISO-8859-8-I has a pointer 156": { + "status": "PASS" + }, + "Not throw: ISO-8859-8-I has a pointer 157": { + "status": "PASS" + }, + "Not throw: ISO-8859-8-I has a pointer 158": { + "status": "PASS" + }, + "Not throw: ISO-8859-8-I has a pointer 159": { + "status": "PASS" + }, + "Not throw: ISO-8859-8-I has a pointer 160": { + "status": "PASS" + }, + "Throw due to fatal flag: ISO-8859-8-I doesn't have a pointer 161": { + "status": "PASS" + }, + "Not throw: ISO-8859-8-I has a pointer 162": { + "status": "PASS" + }, + "Not throw: ISO-8859-8-I has a pointer 163": { + "status": "PASS" + }, + "Not throw: ISO-8859-8-I has a pointer 164": { + "status": "PASS" + }, + "Not throw: ISO-8859-8-I has a pointer 165": { + "status": "PASS" + }, + "Not throw: ISO-8859-8-I has a pointer 166": { + "status": "PASS" + }, + "Not throw: ISO-8859-8-I has a pointer 167": { + "status": "PASS" + }, + "Not throw: ISO-8859-8-I has a pointer 168": { + "status": "PASS" + }, + "Not throw: ISO-8859-8-I has a pointer 169": { + "status": "PASS" + }, + "Not throw: ISO-8859-8-I has a pointer 170": { + "status": "PASS" + }, + "Not throw: ISO-8859-8-I has a pointer 171": { + "status": "PASS" + }, + "Not throw: ISO-8859-8-I has a pointer 172": { + "status": "PASS" + }, + "Not throw: ISO-8859-8-I has a pointer 173": { + "status": "PASS" + }, + "Not throw: ISO-8859-8-I has a pointer 174": { + "status": "PASS" + }, + "Not throw: ISO-8859-8-I has a pointer 175": { + "status": "PASS" + }, + "Not throw: ISO-8859-8-I has a pointer 176": { + "status": "PASS" + }, + "Not throw: ISO-8859-8-I has a pointer 177": { + "status": "PASS" + }, + "Not throw: ISO-8859-8-I has a pointer 178": { + "status": "PASS" + }, + "Not throw: ISO-8859-8-I has a pointer 179": { + "status": "PASS" + }, + "Not throw: ISO-8859-8-I has a pointer 180": { + "status": "PASS" + }, + "Not throw: ISO-8859-8-I has a pointer 181": { + "status": "PASS" + }, + "Not throw: ISO-8859-8-I has a pointer 182": { + "status": "PASS" + }, + "Not throw: ISO-8859-8-I has a pointer 183": { + "status": "PASS" + }, + "Not throw: ISO-8859-8-I has a pointer 184": { + "status": "PASS" + }, + "Not throw: ISO-8859-8-I has a pointer 185": { + "status": "PASS" + }, + "Not throw: ISO-8859-8-I has a pointer 186": { + "status": "PASS" + }, + "Not throw: ISO-8859-8-I has a pointer 187": { + "status": "PASS" + }, + "Not throw: ISO-8859-8-I has a pointer 188": { + "status": "PASS" + }, + "Not throw: ISO-8859-8-I has a pointer 189": { + "status": "PASS" + }, + "Not throw: ISO-8859-8-I has a pointer 190": { + "status": "PASS" + }, + "Throw due to fatal flag: ISO-8859-8-I doesn't have a pointer 191": { + "status": "PASS" + }, + "Throw due to fatal flag: ISO-8859-8-I doesn't have a pointer 192": { + "status": "PASS" + }, + "Throw due to fatal flag: ISO-8859-8-I doesn't have a pointer 193": { + "status": "PASS" + }, + "Throw due to fatal flag: ISO-8859-8-I doesn't have a pointer 194": { + "status": "PASS" + }, + "Throw due to fatal flag: ISO-8859-8-I doesn't have a pointer 195": { + "status": "PASS" + }, + "Throw due to fatal flag: ISO-8859-8-I doesn't have a pointer 196": { + "status": "PASS" + }, + "Throw due to fatal flag: ISO-8859-8-I doesn't have a pointer 197": { + "status": "PASS" + }, + "Throw due to fatal flag: ISO-8859-8-I doesn't have a pointer 198": { + "status": "PASS" + }, + "Throw due to fatal flag: ISO-8859-8-I doesn't have a pointer 199": { + "status": "PASS" + }, + "Throw due to fatal flag: ISO-8859-8-I doesn't have a pointer 200": { + "status": "PASS" + }, + "Throw due to fatal flag: ISO-8859-8-I doesn't have a pointer 201": { + "status": "PASS" + }, + "Throw due to fatal flag: ISO-8859-8-I doesn't have a pointer 202": { + "status": "PASS" + }, + "Throw due to fatal flag: ISO-8859-8-I doesn't have a pointer 203": { + "status": "PASS" + }, + "Throw due to fatal flag: ISO-8859-8-I doesn't have a pointer 204": { + "status": "PASS" + }, + "Throw due to fatal flag: ISO-8859-8-I doesn't have a pointer 205": { + "status": "PASS" + }, + "Throw due to fatal flag: ISO-8859-8-I doesn't have a pointer 206": { + "status": "PASS" + }, + "Throw due to fatal flag: ISO-8859-8-I doesn't have a pointer 207": { + "status": "PASS" + }, + "Throw due to fatal flag: ISO-8859-8-I doesn't have a pointer 208": { + "status": "PASS" + }, + "Throw due to fatal flag: ISO-8859-8-I doesn't have a pointer 209": { + "status": "PASS" + }, + "Throw due to fatal flag: ISO-8859-8-I doesn't have a pointer 210": { + "status": "PASS" + }, + "Throw due to fatal flag: ISO-8859-8-I doesn't have a pointer 211": { + "status": "PASS" + }, + "Throw due to fatal flag: ISO-8859-8-I doesn't have a pointer 212": { + "status": "PASS" + }, + "Throw due to fatal flag: ISO-8859-8-I doesn't have a pointer 213": { + "status": "PASS" + }, + "Throw due to fatal flag: ISO-8859-8-I doesn't have a pointer 214": { + "status": "PASS" + }, + "Throw due to fatal flag: ISO-8859-8-I doesn't have a pointer 215": { + "status": "PASS" + }, + "Throw due to fatal flag: ISO-8859-8-I doesn't have a pointer 216": { + "status": "PASS" + }, + "Throw due to fatal flag: ISO-8859-8-I doesn't have a pointer 217": { + "status": "PASS" + }, + "Throw due to fatal flag: ISO-8859-8-I doesn't have a pointer 218": { + "status": "PASS" + }, + "Throw due to fatal flag: ISO-8859-8-I doesn't have a pointer 219": { + "status": "PASS" + }, + "Throw due to fatal flag: ISO-8859-8-I doesn't have a pointer 220": { + "status": "PASS" + }, + "Throw due to fatal flag: ISO-8859-8-I doesn't have a pointer 221": { + "status": "PASS" + }, + "Throw due to fatal flag: ISO-8859-8-I doesn't have a pointer 222": { + "status": "PASS" + }, + "Not throw: ISO-8859-8-I has a pointer 223": { + "status": "PASS" + }, + "Not throw: ISO-8859-8-I has a pointer 224": { + "status": "PASS" + }, + "Not throw: ISO-8859-8-I has a pointer 225": { + "status": "PASS" + }, + "Not throw: ISO-8859-8-I has a pointer 226": { + "status": "PASS" + }, + "Not throw: ISO-8859-8-I has a pointer 227": { + "status": "PASS" + }, + "Not throw: ISO-8859-8-I has a pointer 228": { + "status": "PASS" + }, + "Not throw: ISO-8859-8-I has a pointer 229": { + "status": "PASS" + }, + "Not throw: ISO-8859-8-I has a pointer 230": { + "status": "PASS" + }, + "Not throw: ISO-8859-8-I has a pointer 231": { + "status": "PASS" + }, + "Not throw: ISO-8859-8-I has a pointer 232": { + "status": "PASS" + }, + "Not throw: ISO-8859-8-I has a pointer 233": { + "status": "PASS" + }, + "Not throw: ISO-8859-8-I has a pointer 234": { + "status": "PASS" + }, + "Not throw: ISO-8859-8-I has a pointer 235": { + "status": "PASS" + }, + "Not throw: ISO-8859-8-I has a pointer 236": { + "status": "PASS" + }, + "Not throw: ISO-8859-8-I has a pointer 237": { + "status": "PASS" + }, + "Not throw: ISO-8859-8-I has a pointer 238": { + "status": "PASS" + }, + "Not throw: ISO-8859-8-I has a pointer 239": { + "status": "PASS" + }, + "Not throw: ISO-8859-8-I has a pointer 240": { + "status": "PASS" + }, + "Not throw: ISO-8859-8-I has a pointer 241": { + "status": "PASS" + }, + "Not throw: ISO-8859-8-I has a pointer 242": { + "status": "PASS" + }, + "Not throw: ISO-8859-8-I has a pointer 243": { + "status": "PASS" + }, + "Not throw: ISO-8859-8-I has a pointer 244": { + "status": "PASS" + }, + "Not throw: ISO-8859-8-I has a pointer 245": { + "status": "PASS" + }, + "Not throw: ISO-8859-8-I has a pointer 246": { + "status": "PASS" + }, + "Not throw: ISO-8859-8-I has a pointer 247": { + "status": "PASS" + }, + "Not throw: ISO-8859-8-I has a pointer 248": { + "status": "PASS" + }, + "Not throw: ISO-8859-8-I has a pointer 249": { + "status": "PASS" + }, + "Not throw: ISO-8859-8-I has a pointer 250": { + "status": "PASS" + }, + "Throw due to fatal flag: ISO-8859-8-I doesn't have a pointer 251": { + "status": "PASS" + }, + "Throw due to fatal flag: ISO-8859-8-I doesn't have a pointer 252": { + "status": "PASS" + }, + "Not throw: ISO-8859-8-I has a pointer 253": { + "status": "PASS" + }, + "Not throw: ISO-8859-8-I has a pointer 254": { + "status": "PASS" + }, + "Throw due to fatal flag: ISO-8859-8-I doesn't have a pointer 255": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 0": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 1": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 2": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 3": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 4": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 5": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 6": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 7": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 8": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 9": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 10": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 11": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 12": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 13": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 14": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 15": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 16": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 17": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 18": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 19": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 20": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 21": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 22": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 23": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 24": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 25": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 26": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 27": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 28": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 29": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 30": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 31": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 32": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 33": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 34": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 35": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 36": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 37": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 38": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 39": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 40": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 41": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 42": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 43": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 44": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 45": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 46": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 47": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 48": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 49": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 50": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 51": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 52": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 53": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 54": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 55": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 56": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 57": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 58": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 59": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 60": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 61": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 62": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 63": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 64": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 65": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 66": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 67": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 68": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 69": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 70": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 71": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 72": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 73": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 74": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 75": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 76": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 77": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 78": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 79": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 80": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 81": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 82": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 83": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 84": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 85": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 86": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 87": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 88": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 89": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 90": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 91": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 92": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 93": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 94": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 95": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 96": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 97": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 98": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 99": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 100": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 101": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 102": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 103": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 104": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 105": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 106": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 107": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 108": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 109": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 110": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 111": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 112": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 113": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 114": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 115": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 116": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 117": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 118": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 119": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 120": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 121": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 122": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 123": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 124": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 125": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 126": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 127": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 128": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 129": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 130": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 131": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 132": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 133": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 134": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 135": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 136": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 137": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 138": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 139": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 140": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 141": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 142": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 143": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 144": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 145": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 146": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 147": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 148": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 149": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 150": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 151": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 152": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 153": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 154": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 155": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 156": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 157": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 158": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 159": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 160": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 161": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 162": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 163": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 164": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 165": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 166": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 167": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 168": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 169": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 170": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 171": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 172": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 173": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 174": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 175": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 176": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 177": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 178": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 179": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 180": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 181": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 182": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 183": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 184": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 185": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 186": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 187": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 188": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 189": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 190": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 191": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 192": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 193": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 194": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 195": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 196": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 197": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 198": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 199": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 200": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 201": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 202": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 203": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 204": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 205": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 206": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 207": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 208": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 209": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 210": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 211": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 212": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 213": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 214": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 215": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 216": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 217": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 218": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 219": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 220": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 221": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 222": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 223": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 224": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 225": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 226": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 227": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 228": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 229": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 230": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 231": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 232": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 233": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 234": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 235": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 236": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 237": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 238": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 239": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 240": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 241": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 242": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 243": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 244": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 245": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 246": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 247": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 248": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 249": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 250": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 251": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 252": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 253": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 254": { + "status": "PASS" + }, + "Not throw: ISO-8859-10 has a pointer 255": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 0": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 1": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 2": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 3": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 4": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 5": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 6": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 7": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 8": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 9": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 10": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 11": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 12": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 13": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 14": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 15": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 16": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 17": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 18": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 19": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 20": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 21": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 22": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 23": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 24": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 25": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 26": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 27": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 28": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 29": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 30": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 31": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 32": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 33": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 34": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 35": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 36": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 37": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 38": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 39": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 40": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 41": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 42": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 43": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 44": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 45": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 46": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 47": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 48": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 49": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 50": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 51": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 52": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 53": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 54": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 55": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 56": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 57": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 58": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 59": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 60": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 61": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 62": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 63": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 64": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 65": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 66": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 67": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 68": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 69": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 70": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 71": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 72": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 73": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 74": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 75": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 76": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 77": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 78": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 79": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 80": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 81": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 82": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 83": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 84": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 85": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 86": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 87": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 88": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 89": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 90": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 91": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 92": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 93": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 94": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 95": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 96": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 97": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 98": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 99": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 100": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 101": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 102": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 103": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 104": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 105": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 106": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 107": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 108": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 109": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 110": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 111": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 112": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 113": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 114": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 115": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 116": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 117": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 118": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 119": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 120": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 121": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 122": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 123": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 124": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 125": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 126": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 127": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 128": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 129": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 130": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 131": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 132": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 133": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 134": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 135": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 136": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 137": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 138": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 139": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 140": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 141": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 142": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 143": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 144": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 145": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 146": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 147": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 148": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 149": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 150": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 151": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 152": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 153": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 154": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 155": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 156": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 157": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 158": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 159": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 160": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 161": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 162": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 163": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 164": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 165": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 166": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 167": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 168": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 169": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 170": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 171": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 172": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 173": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 174": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 175": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 176": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 177": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 178": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 179": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 180": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 181": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 182": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 183": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 184": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 185": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 186": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 187": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 188": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 189": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 190": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 191": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 192": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 193": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 194": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 195": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 196": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 197": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 198": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 199": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 200": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 201": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 202": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 203": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 204": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 205": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 206": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 207": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 208": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 209": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 210": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 211": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 212": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 213": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 214": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 215": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 216": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 217": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 218": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 219": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 220": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 221": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 222": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 223": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 224": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 225": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 226": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 227": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 228": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 229": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 230": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 231": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 232": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 233": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 234": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 235": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 236": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 237": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 238": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 239": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 240": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 241": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 242": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 243": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 244": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 245": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 246": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 247": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 248": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 249": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 250": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 251": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 252": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 253": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 254": { + "status": "PASS" + }, + "Not throw: ISO-8859-13 has a pointer 255": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 0": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 1": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 2": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 3": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 4": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 5": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 6": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 7": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 8": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 9": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 10": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 11": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 12": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 13": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 14": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 15": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 16": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 17": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 18": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 19": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 20": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 21": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 22": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 23": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 24": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 25": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 26": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 27": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 28": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 29": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 30": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 31": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 32": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 33": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 34": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 35": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 36": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 37": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 38": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 39": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 40": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 41": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 42": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 43": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 44": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 45": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 46": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 47": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 48": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 49": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 50": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 51": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 52": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 53": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 54": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 55": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 56": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 57": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 58": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 59": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 60": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 61": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 62": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 63": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 64": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 65": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 66": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 67": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 68": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 69": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 70": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 71": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 72": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 73": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 74": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 75": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 76": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 77": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 78": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 79": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 80": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 81": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 82": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 83": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 84": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 85": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 86": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 87": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 88": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 89": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 90": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 91": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 92": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 93": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 94": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 95": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 96": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 97": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 98": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 99": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 100": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 101": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 102": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 103": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 104": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 105": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 106": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 107": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 108": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 109": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 110": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 111": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 112": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 113": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 114": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 115": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 116": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 117": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 118": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 119": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 120": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 121": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 122": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 123": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 124": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 125": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 126": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 127": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 128": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 129": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 130": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 131": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 132": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 133": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 134": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 135": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 136": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 137": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 138": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 139": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 140": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 141": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 142": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 143": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 144": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 145": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 146": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 147": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 148": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 149": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 150": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 151": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 152": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 153": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 154": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 155": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 156": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 157": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 158": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 159": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 160": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 161": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 162": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 163": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 164": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 165": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 166": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 167": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 168": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 169": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 170": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 171": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 172": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 173": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 174": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 175": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 176": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 177": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 178": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 179": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 180": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 181": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 182": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 183": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 184": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 185": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 186": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 187": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 188": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 189": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 190": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 191": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 192": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 193": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 194": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 195": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 196": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 197": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 198": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 199": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 200": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 201": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 202": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 203": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 204": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 205": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 206": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 207": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 208": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 209": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 210": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 211": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 212": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 213": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 214": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 215": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 216": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 217": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 218": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 219": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 220": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 221": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 222": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 223": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 224": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 225": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 226": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 227": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 228": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 229": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 230": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 231": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 232": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 233": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 234": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 235": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 236": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 237": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 238": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 239": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 240": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 241": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 242": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 243": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 244": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 245": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 246": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 247": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 248": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 249": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 250": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 251": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 252": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 253": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 254": { + "status": "PASS" + }, + "Not throw: ISO-8859-14 has a pointer 255": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 0": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 1": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 2": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 3": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 4": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 5": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 6": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 7": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 8": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 9": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 10": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 11": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 12": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 13": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 14": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 15": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 16": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 17": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 18": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 19": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 20": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 21": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 22": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 23": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 24": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 25": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 26": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 27": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 28": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 29": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 30": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 31": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 32": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 33": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 34": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 35": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 36": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 37": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 38": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 39": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 40": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 41": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 42": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 43": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 44": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 45": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 46": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 47": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 48": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 49": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 50": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 51": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 52": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 53": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 54": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 55": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 56": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 57": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 58": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 59": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 60": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 61": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 62": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 63": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 64": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 65": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 66": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 67": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 68": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 69": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 70": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 71": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 72": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 73": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 74": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 75": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 76": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 77": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 78": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 79": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 80": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 81": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 82": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 83": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 84": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 85": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 86": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 87": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 88": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 89": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 90": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 91": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 92": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 93": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 94": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 95": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 96": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 97": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 98": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 99": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 100": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 101": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 102": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 103": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 104": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 105": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 106": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 107": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 108": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 109": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 110": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 111": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 112": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 113": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 114": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 115": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 116": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 117": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 118": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 119": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 120": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 121": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 122": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 123": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 124": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 125": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 126": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 127": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 128": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 129": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 130": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 131": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 132": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 133": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 134": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 135": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 136": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 137": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 138": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 139": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 140": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 141": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 142": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 143": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 144": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 145": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 146": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 147": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 148": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 149": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 150": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 151": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 152": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 153": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 154": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 155": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 156": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 157": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 158": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 159": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 160": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 161": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 162": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 163": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 164": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 165": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 166": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 167": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 168": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 169": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 170": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 171": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 172": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 173": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 174": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 175": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 176": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 177": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 178": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 179": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 180": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 181": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 182": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 183": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 184": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 185": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 186": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 187": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 188": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 189": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 190": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 191": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 192": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 193": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 194": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 195": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 196": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 197": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 198": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 199": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 200": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 201": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 202": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 203": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 204": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 205": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 206": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 207": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 208": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 209": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 210": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 211": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 212": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 213": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 214": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 215": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 216": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 217": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 218": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 219": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 220": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 221": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 222": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 223": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 224": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 225": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 226": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 227": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 228": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 229": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 230": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 231": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 232": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 233": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 234": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 235": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 236": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 237": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 238": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 239": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 240": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 241": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 242": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 243": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 244": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 245": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 246": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 247": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 248": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 249": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 250": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 251": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 252": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 253": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 254": { + "status": "PASS" + }, + "Not throw: ISO-8859-15 has a pointer 255": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 0": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 1": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 2": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 3": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 4": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 5": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 6": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 7": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 8": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 9": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 10": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 11": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 12": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 13": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 14": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 15": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 16": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 17": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 18": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 19": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 20": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 21": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 22": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 23": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 24": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 25": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 26": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 27": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 28": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 29": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 30": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 31": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 32": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 33": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 34": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 35": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 36": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 37": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 38": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 39": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 40": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 41": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 42": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 43": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 44": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 45": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 46": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 47": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 48": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 49": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 50": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 51": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 52": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 53": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 54": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 55": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 56": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 57": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 58": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 59": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 60": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 61": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 62": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 63": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 64": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 65": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 66": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 67": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 68": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 69": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 70": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 71": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 72": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 73": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 74": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 75": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 76": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 77": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 78": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 79": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 80": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 81": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 82": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 83": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 84": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 85": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 86": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 87": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 88": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 89": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 90": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 91": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 92": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 93": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 94": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 95": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 96": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 97": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 98": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 99": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 100": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 101": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 102": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 103": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 104": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 105": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 106": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 107": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 108": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 109": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 110": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 111": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 112": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 113": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 114": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 115": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 116": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 117": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 118": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 119": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 120": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 121": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 122": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 123": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 124": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 125": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 126": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 127": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 128": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 129": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 130": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 131": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 132": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 133": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 134": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 135": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 136": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 137": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 138": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 139": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 140": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 141": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 142": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 143": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 144": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 145": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 146": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 147": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 148": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 149": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 150": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 151": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 152": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 153": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 154": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 155": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 156": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 157": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 158": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 159": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 160": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 161": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 162": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 163": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 164": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 165": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 166": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 167": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 168": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 169": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 170": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 171": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 172": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 173": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 174": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 175": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 176": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 177": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 178": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 179": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 180": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 181": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 182": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 183": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 184": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 185": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 186": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 187": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 188": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 189": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 190": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 191": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 192": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 193": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 194": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 195": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 196": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 197": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 198": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 199": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 200": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 201": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 202": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 203": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 204": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 205": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 206": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 207": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 208": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 209": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 210": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 211": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 212": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 213": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 214": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 215": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 216": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 217": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 218": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 219": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 220": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 221": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 222": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 223": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 224": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 225": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 226": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 227": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 228": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 229": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 230": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 231": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 232": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 233": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 234": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 235": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 236": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 237": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 238": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 239": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 240": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 241": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 242": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 243": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 244": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 245": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 246": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 247": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 248": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 249": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 250": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 251": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 252": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 253": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 254": { + "status": "PASS" + }, + "Not throw: ISO-8859-16 has a pointer 255": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 0": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 1": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 2": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 3": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 4": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 5": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 6": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 7": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 8": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 9": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 10": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 11": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 12": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 13": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 14": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 15": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 16": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 17": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 18": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 19": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 20": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 21": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 22": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 23": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 24": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 25": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 26": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 27": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 28": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 29": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 30": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 31": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 32": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 33": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 34": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 35": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 36": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 37": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 38": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 39": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 40": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 41": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 42": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 43": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 44": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 45": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 46": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 47": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 48": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 49": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 50": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 51": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 52": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 53": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 54": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 55": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 56": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 57": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 58": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 59": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 60": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 61": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 62": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 63": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 64": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 65": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 66": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 67": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 68": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 69": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 70": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 71": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 72": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 73": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 74": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 75": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 76": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 77": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 78": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 79": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 80": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 81": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 82": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 83": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 84": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 85": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 86": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 87": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 88": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 89": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 90": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 91": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 92": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 93": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 94": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 95": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 96": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 97": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 98": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 99": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 100": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 101": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 102": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 103": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 104": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 105": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 106": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 107": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 108": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 109": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 110": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 111": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 112": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 113": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 114": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 115": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 116": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 117": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 118": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 119": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 120": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 121": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 122": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 123": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 124": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 125": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 126": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 127": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 128": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 129": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 130": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 131": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 132": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 133": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 134": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 135": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 136": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 137": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 138": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 139": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 140": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 141": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 142": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 143": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 144": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 145": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 146": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 147": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 148": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 149": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 150": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 151": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 152": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 153": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 154": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 155": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 156": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 157": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 158": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 159": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 160": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 161": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 162": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 163": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 164": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 165": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 166": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 167": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 168": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 169": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 170": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 171": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 172": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 173": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 174": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 175": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 176": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 177": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 178": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 179": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 180": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 181": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 182": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 183": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 184": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 185": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 186": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 187": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 188": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 189": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 190": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 191": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 192": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 193": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 194": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 195": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 196": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 197": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 198": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 199": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 200": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 201": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 202": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 203": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 204": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 205": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 206": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 207": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 208": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 209": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 210": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 211": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 212": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 213": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 214": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 215": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 216": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 217": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 218": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 219": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 220": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 221": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 222": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 223": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 224": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 225": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 226": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 227": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 228": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 229": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 230": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 231": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 232": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 233": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 234": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 235": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 236": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 237": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 238": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 239": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 240": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 241": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 242": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 243": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 244": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 245": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 246": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 247": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 248": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 249": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 250": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 251": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 252": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 253": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 254": { + "status": "PASS" + }, + "Not throw: KOI8-R has a pointer 255": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 0": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 1": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 2": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 3": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 4": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 5": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 6": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 7": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 8": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 9": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 10": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 11": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 12": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 13": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 14": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 15": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 16": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 17": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 18": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 19": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 20": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 21": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 22": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 23": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 24": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 25": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 26": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 27": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 28": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 29": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 30": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 31": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 32": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 33": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 34": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 35": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 36": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 37": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 38": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 39": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 40": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 41": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 42": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 43": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 44": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 45": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 46": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 47": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 48": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 49": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 50": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 51": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 52": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 53": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 54": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 55": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 56": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 57": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 58": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 59": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 60": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 61": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 62": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 63": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 64": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 65": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 66": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 67": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 68": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 69": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 70": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 71": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 72": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 73": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 74": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 75": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 76": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 77": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 78": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 79": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 80": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 81": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 82": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 83": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 84": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 85": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 86": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 87": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 88": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 89": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 90": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 91": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 92": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 93": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 94": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 95": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 96": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 97": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 98": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 99": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 100": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 101": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 102": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 103": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 104": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 105": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 106": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 107": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 108": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 109": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 110": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 111": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 112": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 113": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 114": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 115": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 116": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 117": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 118": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 119": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 120": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 121": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 122": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 123": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 124": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 125": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 126": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 127": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 128": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 129": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 130": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 131": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 132": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 133": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 134": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 135": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 136": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 137": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 138": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 139": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 140": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 141": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 142": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 143": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 144": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 145": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 146": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 147": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 148": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 149": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 150": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 151": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 152": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 153": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 154": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 155": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 156": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 157": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 158": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 159": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 160": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 161": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 162": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 163": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 164": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 165": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 166": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 167": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 168": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 169": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 170": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 171": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 172": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 173": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 174": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 175": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 176": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 177": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 178": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 179": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 180": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 181": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 182": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 183": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 184": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 185": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 186": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 187": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 188": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 189": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 190": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 191": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 192": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 193": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 194": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 195": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 196": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 197": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 198": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 199": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 200": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 201": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 202": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 203": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 204": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 205": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 206": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 207": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 208": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 209": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 210": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 211": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 212": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 213": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 214": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 215": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 216": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 217": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 218": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 219": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 220": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 221": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 222": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 223": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 224": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 225": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 226": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 227": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 228": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 229": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 230": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 231": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 232": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 233": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 234": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 235": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 236": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 237": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 238": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 239": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 240": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 241": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 242": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 243": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 244": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 245": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 246": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 247": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 248": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 249": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 250": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 251": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 252": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 253": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 254": { + "status": "PASS" + }, + "Not throw: KOI8-U has a pointer 255": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 0": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 1": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 2": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 3": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 4": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 5": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 6": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 7": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 8": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 9": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 10": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 11": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 12": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 13": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 14": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 15": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 16": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 17": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 18": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 19": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 20": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 21": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 22": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 23": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 24": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 25": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 26": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 27": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 28": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 29": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 30": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 31": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 32": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 33": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 34": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 35": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 36": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 37": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 38": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 39": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 40": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 41": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 42": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 43": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 44": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 45": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 46": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 47": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 48": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 49": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 50": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 51": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 52": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 53": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 54": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 55": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 56": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 57": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 58": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 59": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 60": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 61": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 62": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 63": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 64": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 65": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 66": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 67": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 68": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 69": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 70": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 71": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 72": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 73": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 74": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 75": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 76": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 77": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 78": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 79": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 80": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 81": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 82": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 83": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 84": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 85": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 86": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 87": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 88": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 89": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 90": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 91": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 92": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 93": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 94": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 95": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 96": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 97": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 98": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 99": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 100": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 101": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 102": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 103": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 104": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 105": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 106": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 107": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 108": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 109": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 110": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 111": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 112": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 113": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 114": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 115": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 116": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 117": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 118": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 119": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 120": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 121": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 122": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 123": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 124": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 125": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 126": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 127": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 128": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 129": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 130": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 131": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 132": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 133": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 134": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 135": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 136": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 137": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 138": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 139": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 140": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 141": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 142": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 143": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 144": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 145": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 146": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 147": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 148": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 149": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 150": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 151": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 152": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 153": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 154": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 155": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 156": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 157": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 158": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 159": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 160": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 161": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 162": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 163": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 164": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 165": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 166": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 167": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 168": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 169": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 170": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 171": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 172": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 173": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 174": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 175": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 176": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 177": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 178": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 179": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 180": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 181": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 182": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 183": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 184": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 185": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 186": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 187": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 188": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 189": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 190": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 191": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 192": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 193": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 194": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 195": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 196": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 197": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 198": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 199": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 200": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 201": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 202": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 203": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 204": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 205": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 206": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 207": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 208": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 209": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 210": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 211": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 212": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 213": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 214": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 215": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 216": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 217": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 218": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 219": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 220": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 221": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 222": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 223": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 224": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 225": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 226": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 227": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 228": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 229": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 230": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 231": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 232": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 233": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 234": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 235": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 236": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 237": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 238": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 239": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 240": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 241": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 242": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 243": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 244": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 245": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 246": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 247": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 248": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 249": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 250": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 251": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 252": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 253": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 254": { + "status": "PASS" + }, + "Not throw: macintosh has a pointer 255": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 0": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 1": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 2": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 3": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 4": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 5": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 6": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 7": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 8": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 9": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 10": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 11": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 12": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 13": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 14": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 15": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 16": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 17": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 18": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 19": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 20": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 21": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 22": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 23": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 24": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 25": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 26": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 27": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 28": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 29": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 30": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 31": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 32": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 33": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 34": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 35": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 36": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 37": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 38": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 39": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 40": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 41": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 42": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 43": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 44": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 45": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 46": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 47": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 48": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 49": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 50": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 51": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 52": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 53": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 54": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 55": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 56": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 57": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 58": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 59": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 60": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 61": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 62": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 63": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 64": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 65": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 66": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 67": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 68": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 69": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 70": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 71": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 72": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 73": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 74": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 75": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 76": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 77": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 78": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 79": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 80": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 81": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 82": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 83": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 84": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 85": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 86": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 87": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 88": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 89": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 90": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 91": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 92": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 93": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 94": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 95": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 96": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 97": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 98": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 99": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 100": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 101": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 102": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 103": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 104": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 105": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 106": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 107": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 108": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 109": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 110": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 111": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 112": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 113": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 114": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 115": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 116": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 117": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 118": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 119": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 120": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 121": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 122": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 123": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 124": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 125": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 126": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 127": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 128": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 129": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 130": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 131": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 132": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 133": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 134": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 135": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 136": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 137": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 138": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 139": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 140": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 141": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 142": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 143": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 144": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 145": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 146": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 147": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 148": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 149": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 150": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 151": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 152": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 153": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 154": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 155": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 156": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 157": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 158": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 159": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 160": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 161": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 162": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 163": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 164": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 165": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 166": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 167": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 168": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 169": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 170": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 171": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 172": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 173": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 174": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 175": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 176": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 177": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 178": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 179": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 180": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 181": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 182": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 183": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 184": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 185": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 186": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 187": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 188": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 189": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 190": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 191": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 192": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 193": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 194": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 195": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 196": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 197": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 198": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 199": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 200": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 201": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 202": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 203": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 204": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 205": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 206": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 207": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 208": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 209": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 210": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 211": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 212": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 213": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 214": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 215": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 216": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 217": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 218": { + "status": "PASS" + }, + "Throw due to fatal flag: windows-874 doesn't have a pointer 219": { + "status": "PASS" + }, + "Throw due to fatal flag: windows-874 doesn't have a pointer 220": { + "status": "PASS" + }, + "Throw due to fatal flag: windows-874 doesn't have a pointer 221": { + "status": "PASS" + }, + "Throw due to fatal flag: windows-874 doesn't have a pointer 222": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 223": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 224": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 225": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 226": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 227": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 228": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 229": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 230": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 231": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 232": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 233": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 234": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 235": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 236": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 237": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 238": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 239": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 240": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 241": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 242": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 243": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 244": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 245": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 246": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 247": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 248": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 249": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 250": { + "status": "PASS" + }, + "Not throw: windows-874 has a pointer 251": { + "status": "PASS" + }, + "Throw due to fatal flag: windows-874 doesn't have a pointer 252": { + "status": "PASS" + }, + "Throw due to fatal flag: windows-874 doesn't have a pointer 253": { + "status": "PASS" + }, + "Throw due to fatal flag: windows-874 doesn't have a pointer 254": { + "status": "PASS" + }, + "Throw due to fatal flag: windows-874 doesn't have a pointer 255": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 0": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 1": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 2": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 3": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 4": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 5": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 6": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 7": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 8": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 9": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 10": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 11": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 12": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 13": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 14": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 15": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 16": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 17": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 18": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 19": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 20": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 21": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 22": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 23": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 24": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 25": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 26": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 27": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 28": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 29": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 30": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 31": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 32": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 33": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 34": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 35": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 36": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 37": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 38": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 39": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 40": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 41": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 42": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 43": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 44": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 45": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 46": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 47": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 48": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 49": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 50": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 51": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 52": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 53": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 54": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 55": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 56": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 57": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 58": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 59": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 60": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 61": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 62": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 63": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 64": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 65": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 66": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 67": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 68": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 69": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 70": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 71": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 72": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 73": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 74": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 75": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 76": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 77": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 78": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 79": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 80": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 81": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 82": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 83": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 84": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 85": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 86": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 87": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 88": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 89": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 90": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 91": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 92": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 93": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 94": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 95": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 96": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 97": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 98": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 99": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 100": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 101": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 102": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 103": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 104": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 105": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 106": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 107": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 108": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 109": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 110": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 111": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 112": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 113": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 114": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 115": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 116": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 117": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 118": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 119": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 120": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 121": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 122": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 123": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 124": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 125": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 126": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 127": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 128": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 129": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 130": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 131": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 132": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 133": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 134": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 135": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 136": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 137": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 138": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 139": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 140": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 141": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 142": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 143": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 144": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 145": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 146": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 147": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 148": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 149": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 150": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 151": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 152": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 153": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 154": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 155": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 156": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 157": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 158": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 159": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 160": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 161": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 162": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 163": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 164": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 165": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 166": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 167": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 168": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 169": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 170": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 171": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 172": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 173": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 174": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 175": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 176": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 177": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 178": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 179": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 180": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 181": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 182": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 183": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 184": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 185": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 186": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 187": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 188": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 189": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 190": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 191": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 192": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 193": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 194": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 195": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 196": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 197": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 198": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 199": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 200": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 201": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 202": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 203": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 204": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 205": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 206": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 207": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 208": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 209": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 210": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 211": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 212": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 213": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 214": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 215": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 216": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 217": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 218": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 219": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 220": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 221": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 222": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 223": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 224": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 225": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 226": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 227": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 228": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 229": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 230": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 231": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 232": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 233": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 234": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 235": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 236": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 237": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 238": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 239": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 240": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 241": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 242": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 243": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 244": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 245": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 246": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 247": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 248": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 249": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 250": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 251": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 252": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 253": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 254": { + "status": "PASS" + }, + "Not throw: windows-1250 has a pointer 255": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 0": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 1": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 2": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 3": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 4": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 5": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 6": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 7": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 8": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 9": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 10": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 11": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 12": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 13": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 14": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 15": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 16": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 17": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 18": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 19": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 20": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 21": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 22": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 23": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 24": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 25": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 26": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 27": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 28": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 29": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 30": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 31": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 32": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 33": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 34": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 35": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 36": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 37": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 38": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 39": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 40": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 41": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 42": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 43": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 44": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 45": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 46": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 47": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 48": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 49": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 50": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 51": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 52": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 53": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 54": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 55": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 56": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 57": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 58": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 59": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 60": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 61": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 62": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 63": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 64": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 65": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 66": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 67": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 68": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 69": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 70": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 71": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 72": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 73": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 74": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 75": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 76": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 77": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 78": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 79": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 80": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 81": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 82": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 83": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 84": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 85": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 86": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 87": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 88": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 89": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 90": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 91": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 92": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 93": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 94": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 95": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 96": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 97": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 98": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 99": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 100": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 101": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 102": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 103": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 104": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 105": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 106": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 107": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 108": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 109": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 110": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 111": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 112": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 113": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 114": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 115": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 116": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 117": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 118": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 119": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 120": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 121": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 122": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 123": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 124": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 125": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 126": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 127": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 128": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 129": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 130": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 131": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 132": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 133": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 134": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 135": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 136": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 137": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 138": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 139": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 140": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 141": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 142": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 143": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 144": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 145": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 146": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 147": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 148": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 149": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 150": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 151": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 152": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 153": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 154": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 155": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 156": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 157": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 158": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 159": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 160": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 161": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 162": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 163": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 164": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 165": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 166": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 167": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 168": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 169": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 170": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 171": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 172": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 173": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 174": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 175": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 176": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 177": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 178": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 179": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 180": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 181": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 182": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 183": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 184": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 185": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 186": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 187": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 188": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 189": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 190": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 191": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 192": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 193": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 194": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 195": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 196": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 197": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 198": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 199": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 200": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 201": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 202": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 203": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 204": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 205": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 206": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 207": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 208": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 209": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 210": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 211": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 212": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 213": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 214": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 215": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 216": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 217": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 218": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 219": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 220": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 221": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 222": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 223": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 224": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 225": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 226": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 227": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 228": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 229": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 230": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 231": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 232": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 233": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 234": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 235": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 236": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 237": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 238": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 239": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 240": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 241": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 242": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 243": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 244": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 245": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 246": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 247": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 248": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 249": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 250": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 251": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 252": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 253": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 254": { + "status": "PASS" + }, + "Not throw: windows-1251 has a pointer 255": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 0": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 1": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 2": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 3": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 4": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 5": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 6": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 7": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 8": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 9": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 10": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 11": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 12": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 13": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 14": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 15": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 16": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 17": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 18": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 19": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 20": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 21": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 22": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 23": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 24": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 25": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 26": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 27": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 28": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 29": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 30": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 31": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 32": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 33": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 34": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 35": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 36": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 37": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 38": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 39": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 40": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 41": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 42": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 43": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 44": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 45": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 46": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 47": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 48": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 49": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 50": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 51": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 52": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 53": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 54": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 55": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 56": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 57": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 58": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 59": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 60": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 61": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 62": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 63": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 64": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 65": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 66": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 67": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 68": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 69": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 70": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 71": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 72": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 73": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 74": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 75": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 76": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 77": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 78": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 79": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 80": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 81": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 82": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 83": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 84": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 85": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 86": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 87": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 88": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 89": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 90": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 91": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 92": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 93": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 94": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 95": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 96": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 97": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 98": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 99": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 100": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 101": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 102": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 103": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 104": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 105": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 106": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 107": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 108": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 109": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 110": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 111": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 112": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 113": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 114": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 115": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 116": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 117": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 118": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 119": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 120": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 121": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 122": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 123": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 124": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 125": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 126": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 127": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 128": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 129": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 130": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 131": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 132": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 133": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 134": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 135": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 136": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 137": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 138": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 139": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 140": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 141": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 142": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 143": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 144": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 145": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 146": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 147": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 148": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 149": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 150": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 151": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 152": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 153": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 154": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 155": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 156": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 157": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 158": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 159": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 160": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 161": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 162": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 163": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 164": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 165": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 166": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 167": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 168": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 169": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 170": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 171": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 172": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 173": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 174": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 175": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 176": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 177": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 178": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 179": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 180": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 181": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 182": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 183": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 184": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 185": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 186": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 187": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 188": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 189": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 190": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 191": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 192": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 193": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 194": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 195": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 196": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 197": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 198": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 199": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 200": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 201": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 202": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 203": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 204": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 205": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 206": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 207": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 208": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 209": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 210": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 211": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 212": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 213": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 214": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 215": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 216": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 217": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 218": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 219": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 220": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 221": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 222": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 223": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 224": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 225": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 226": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 227": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 228": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 229": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 230": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 231": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 232": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 233": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 234": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 235": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 236": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 237": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 238": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 239": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 240": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 241": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 242": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 243": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 244": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 245": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 246": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 247": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 248": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 249": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 250": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 251": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 252": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 253": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 254": { + "status": "PASS" + }, + "Not throw: windows-1252 has a pointer 255": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 0": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 1": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 2": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 3": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 4": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 5": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 6": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 7": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 8": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 9": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 10": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 11": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 12": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 13": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 14": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 15": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 16": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 17": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 18": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 19": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 20": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 21": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 22": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 23": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 24": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 25": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 26": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 27": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 28": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 29": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 30": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 31": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 32": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 33": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 34": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 35": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 36": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 37": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 38": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 39": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 40": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 41": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 42": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 43": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 44": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 45": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 46": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 47": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 48": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 49": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 50": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 51": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 52": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 53": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 54": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 55": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 56": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 57": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 58": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 59": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 60": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 61": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 62": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 63": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 64": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 65": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 66": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 67": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 68": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 69": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 70": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 71": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 72": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 73": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 74": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 75": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 76": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 77": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 78": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 79": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 80": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 81": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 82": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 83": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 84": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 85": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 86": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 87": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 88": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 89": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 90": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 91": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 92": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 93": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 94": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 95": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 96": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 97": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 98": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 99": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 100": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 101": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 102": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 103": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 104": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 105": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 106": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 107": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 108": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 109": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 110": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 111": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 112": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 113": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 114": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 115": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 116": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 117": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 118": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 119": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 120": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 121": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 122": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 123": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 124": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 125": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 126": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 127": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 128": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 129": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 130": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 131": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 132": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 133": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 134": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 135": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 136": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 137": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 138": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 139": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 140": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 141": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 142": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 143": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 144": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 145": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 146": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 147": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 148": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 149": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 150": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 151": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 152": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 153": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 154": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 155": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 156": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 157": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 158": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 159": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 160": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 161": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 162": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 163": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 164": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 165": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 166": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 167": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 168": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 169": { + "status": "PASS" + }, + "Throw due to fatal flag: windows-1253 doesn't have a pointer 170": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 171": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 172": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 173": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 174": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 175": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 176": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 177": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 178": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 179": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 180": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 181": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 182": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 183": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 184": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 185": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 186": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 187": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 188": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 189": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 190": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 191": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 192": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 193": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 194": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 195": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 196": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 197": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 198": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 199": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 200": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 201": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 202": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 203": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 204": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 205": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 206": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 207": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 208": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 209": { + "status": "PASS" + }, + "Throw due to fatal flag: windows-1253 doesn't have a pointer 210": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 211": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 212": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 213": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 214": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 215": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 216": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 217": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 218": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 219": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 220": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 221": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 222": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 223": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 224": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 225": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 226": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 227": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 228": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 229": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 230": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 231": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 232": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 233": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 234": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 235": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 236": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 237": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 238": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 239": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 240": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 241": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 242": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 243": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 244": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 245": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 246": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 247": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 248": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 249": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 250": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 251": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 252": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 253": { + "status": "PASS" + }, + "Not throw: windows-1253 has a pointer 254": { + "status": "PASS" + }, + "Throw due to fatal flag: windows-1253 doesn't have a pointer 255": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 0": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 1": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 2": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 3": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 4": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 5": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 6": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 7": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 8": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 9": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 10": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 11": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 12": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 13": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 14": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 15": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 16": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 17": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 18": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 19": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 20": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 21": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 22": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 23": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 24": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 25": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 26": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 27": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 28": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 29": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 30": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 31": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 32": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 33": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 34": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 35": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 36": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 37": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 38": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 39": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 40": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 41": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 42": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 43": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 44": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 45": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 46": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 47": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 48": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 49": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 50": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 51": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 52": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 53": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 54": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 55": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 56": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 57": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 58": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 59": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 60": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 61": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 62": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 63": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 64": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 65": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 66": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 67": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 68": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 69": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 70": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 71": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 72": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 73": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 74": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 75": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 76": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 77": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 78": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 79": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 80": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 81": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 82": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 83": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 84": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 85": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 86": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 87": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 88": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 89": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 90": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 91": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 92": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 93": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 94": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 95": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 96": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 97": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 98": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 99": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 100": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 101": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 102": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 103": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 104": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 105": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 106": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 107": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 108": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 109": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 110": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 111": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 112": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 113": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 114": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 115": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 116": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 117": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 118": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 119": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 120": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 121": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 122": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 123": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 124": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 125": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 126": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 127": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 128": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 129": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 130": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 131": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 132": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 133": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 134": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 135": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 136": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 137": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 138": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 139": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 140": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 141": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 142": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 143": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 144": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 145": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 146": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 147": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 148": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 149": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 150": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 151": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 152": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 153": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 154": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 155": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 156": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 157": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 158": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 159": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 160": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 161": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 162": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 163": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 164": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 165": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 166": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 167": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 168": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 169": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 170": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 171": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 172": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 173": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 174": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 175": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 176": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 177": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 178": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 179": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 180": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 181": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 182": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 183": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 184": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 185": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 186": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 187": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 188": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 189": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 190": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 191": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 192": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 193": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 194": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 195": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 196": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 197": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 198": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 199": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 200": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 201": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 202": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 203": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 204": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 205": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 206": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 207": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 208": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 209": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 210": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 211": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 212": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 213": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 214": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 215": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 216": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 217": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 218": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 219": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 220": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 221": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 222": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 223": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 224": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 225": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 226": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 227": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 228": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 229": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 230": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 231": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 232": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 233": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 234": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 235": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 236": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 237": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 238": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 239": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 240": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 241": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 242": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 243": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 244": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 245": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 246": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 247": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 248": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 249": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 250": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 251": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 252": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 253": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 254": { + "status": "PASS" + }, + "Not throw: windows-1254 has a pointer 255": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 0": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 1": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 2": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 3": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 4": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 5": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 6": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 7": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 8": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 9": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 10": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 11": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 12": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 13": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 14": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 15": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 16": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 17": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 18": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 19": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 20": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 21": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 22": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 23": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 24": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 25": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 26": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 27": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 28": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 29": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 30": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 31": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 32": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 33": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 34": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 35": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 36": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 37": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 38": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 39": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 40": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 41": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 42": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 43": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 44": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 45": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 46": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 47": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 48": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 49": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 50": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 51": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 52": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 53": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 54": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 55": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 56": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 57": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 58": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 59": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 60": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 61": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 62": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 63": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 64": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 65": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 66": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 67": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 68": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 69": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 70": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 71": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 72": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 73": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 74": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 75": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 76": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 77": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 78": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 79": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 80": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 81": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 82": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 83": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 84": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 85": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 86": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 87": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 88": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 89": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 90": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 91": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 92": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 93": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 94": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 95": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 96": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 97": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 98": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 99": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 100": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 101": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 102": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 103": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 104": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 105": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 106": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 107": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 108": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 109": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 110": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 111": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 112": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 113": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 114": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 115": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 116": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 117": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 118": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 119": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 120": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 121": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 122": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 123": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 124": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 125": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 126": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 127": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 128": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 129": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 130": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 131": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 132": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 133": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 134": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 135": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 136": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 137": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 138": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 139": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 140": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 141": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 142": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 143": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 144": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 145": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 146": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 147": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 148": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 149": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 150": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 151": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 152": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 153": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 154": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 155": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 156": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 157": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 158": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 159": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 160": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 161": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 162": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 163": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 164": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 165": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 166": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 167": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 168": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 169": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 170": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 171": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 172": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 173": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 174": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 175": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 176": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 177": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 178": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 179": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 180": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 181": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 182": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 183": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 184": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 185": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 186": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 187": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 188": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 189": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 190": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 191": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 192": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 193": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 194": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 195": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 196": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 197": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 198": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 199": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 200": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 201": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 202": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 203": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 204": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 205": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 206": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 207": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 208": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 209": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 210": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 211": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 212": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 213": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 214": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 215": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 216": { + "status": "PASS" + }, + "Throw due to fatal flag: windows-1255 doesn't have a pointer 217": { + "status": "PASS" + }, + "Throw due to fatal flag: windows-1255 doesn't have a pointer 218": { + "status": "PASS" + }, + "Throw due to fatal flag: windows-1255 doesn't have a pointer 219": { + "status": "PASS" + }, + "Throw due to fatal flag: windows-1255 doesn't have a pointer 220": { + "status": "PASS" + }, + "Throw due to fatal flag: windows-1255 doesn't have a pointer 221": { + "status": "PASS" + }, + "Throw due to fatal flag: windows-1255 doesn't have a pointer 222": { + "status": "PASS" + }, + "Throw due to fatal flag: windows-1255 doesn't have a pointer 223": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 224": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 225": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 226": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 227": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 228": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 229": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 230": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 231": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 232": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 233": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 234": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 235": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 236": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 237": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 238": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 239": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 240": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 241": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 242": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 243": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 244": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 245": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 246": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 247": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 248": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 249": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 250": { + "status": "PASS" + }, + "Throw due to fatal flag: windows-1255 doesn't have a pointer 251": { + "status": "PASS" + }, + "Throw due to fatal flag: windows-1255 doesn't have a pointer 252": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 253": { + "status": "PASS" + }, + "Not throw: windows-1255 has a pointer 254": { + "status": "PASS" + }, + "Throw due to fatal flag: windows-1255 doesn't have a pointer 255": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 0": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 1": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 2": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 3": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 4": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 5": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 6": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 7": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 8": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 9": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 10": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 11": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 12": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 13": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 14": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 15": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 16": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 17": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 18": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 19": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 20": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 21": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 22": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 23": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 24": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 25": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 26": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 27": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 28": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 29": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 30": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 31": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 32": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 33": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 34": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 35": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 36": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 37": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 38": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 39": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 40": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 41": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 42": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 43": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 44": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 45": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 46": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 47": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 48": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 49": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 50": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 51": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 52": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 53": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 54": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 55": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 56": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 57": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 58": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 59": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 60": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 61": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 62": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 63": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 64": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 65": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 66": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 67": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 68": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 69": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 70": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 71": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 72": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 73": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 74": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 75": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 76": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 77": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 78": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 79": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 80": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 81": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 82": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 83": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 84": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 85": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 86": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 87": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 88": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 89": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 90": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 91": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 92": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 93": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 94": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 95": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 96": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 97": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 98": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 99": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 100": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 101": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 102": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 103": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 104": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 105": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 106": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 107": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 108": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 109": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 110": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 111": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 112": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 113": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 114": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 115": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 116": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 117": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 118": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 119": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 120": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 121": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 122": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 123": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 124": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 125": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 126": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 127": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 128": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 129": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 130": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 131": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 132": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 133": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 134": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 135": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 136": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 137": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 138": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 139": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 140": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 141": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 142": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 143": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 144": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 145": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 146": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 147": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 148": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 149": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 150": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 151": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 152": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 153": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 154": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 155": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 156": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 157": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 158": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 159": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 160": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 161": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 162": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 163": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 164": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 165": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 166": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 167": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 168": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 169": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 170": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 171": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 172": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 173": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 174": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 175": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 176": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 177": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 178": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 179": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 180": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 181": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 182": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 183": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 184": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 185": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 186": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 187": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 188": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 189": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 190": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 191": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 192": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 193": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 194": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 195": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 196": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 197": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 198": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 199": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 200": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 201": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 202": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 203": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 204": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 205": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 206": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 207": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 208": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 209": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 210": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 211": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 212": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 213": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 214": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 215": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 216": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 217": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 218": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 219": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 220": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 221": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 222": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 223": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 224": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 225": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 226": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 227": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 228": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 229": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 230": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 231": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 232": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 233": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 234": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 235": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 236": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 237": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 238": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 239": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 240": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 241": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 242": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 243": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 244": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 245": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 246": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 247": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 248": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 249": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 250": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 251": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 252": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 253": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 254": { + "status": "PASS" + }, + "Not throw: windows-1256 has a pointer 255": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 0": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 1": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 2": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 3": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 4": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 5": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 6": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 7": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 8": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 9": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 10": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 11": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 12": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 13": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 14": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 15": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 16": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 17": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 18": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 19": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 20": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 21": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 22": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 23": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 24": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 25": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 26": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 27": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 28": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 29": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 30": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 31": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 32": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 33": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 34": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 35": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 36": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 37": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 38": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 39": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 40": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 41": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 42": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 43": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 44": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 45": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 46": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 47": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 48": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 49": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 50": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 51": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 52": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 53": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 54": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 55": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 56": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 57": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 58": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 59": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 60": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 61": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 62": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 63": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 64": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 65": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 66": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 67": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 68": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 69": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 70": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 71": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 72": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 73": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 74": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 75": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 76": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 77": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 78": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 79": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 80": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 81": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 82": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 83": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 84": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 85": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 86": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 87": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 88": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 89": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 90": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 91": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 92": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 93": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 94": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 95": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 96": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 97": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 98": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 99": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 100": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 101": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 102": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 103": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 104": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 105": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 106": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 107": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 108": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 109": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 110": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 111": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 112": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 113": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 114": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 115": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 116": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 117": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 118": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 119": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 120": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 121": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 122": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 123": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 124": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 125": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 126": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 127": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 128": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 129": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 130": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 131": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 132": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 133": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 134": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 135": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 136": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 137": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 138": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 139": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 140": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 141": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 142": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 143": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 144": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 145": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 146": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 147": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 148": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 149": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 150": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 151": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 152": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 153": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 154": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 155": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 156": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 157": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 158": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 159": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 160": { + "status": "PASS" + }, + "Throw due to fatal flag: windows-1257 doesn't have a pointer 161": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 162": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 163": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 164": { + "status": "PASS" + }, + "Throw due to fatal flag: windows-1257 doesn't have a pointer 165": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 166": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 167": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 168": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 169": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 170": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 171": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 172": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 173": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 174": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 175": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 176": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 177": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 178": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 179": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 180": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 181": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 182": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 183": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 184": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 185": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 186": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 187": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 188": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 189": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 190": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 191": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 192": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 193": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 194": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 195": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 196": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 197": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 198": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 199": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 200": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 201": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 202": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 203": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 204": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 205": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 206": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 207": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 208": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 209": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 210": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 211": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 212": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 213": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 214": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 215": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 216": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 217": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 218": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 219": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 220": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 221": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 222": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 223": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 224": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 225": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 226": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 227": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 228": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 229": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 230": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 231": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 232": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 233": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 234": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 235": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 236": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 237": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 238": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 239": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 240": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 241": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 242": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 243": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 244": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 245": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 246": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 247": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 248": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 249": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 250": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 251": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 252": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 253": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 254": { + "status": "PASS" + }, + "Not throw: windows-1257 has a pointer 255": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 0": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 1": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 2": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 3": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 4": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 5": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 6": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 7": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 8": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 9": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 10": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 11": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 12": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 13": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 14": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 15": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 16": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 17": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 18": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 19": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 20": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 21": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 22": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 23": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 24": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 25": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 26": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 27": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 28": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 29": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 30": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 31": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 32": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 33": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 34": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 35": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 36": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 37": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 38": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 39": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 40": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 41": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 42": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 43": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 44": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 45": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 46": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 47": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 48": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 49": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 50": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 51": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 52": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 53": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 54": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 55": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 56": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 57": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 58": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 59": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 60": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 61": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 62": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 63": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 64": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 65": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 66": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 67": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 68": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 69": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 70": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 71": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 72": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 73": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 74": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 75": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 76": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 77": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 78": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 79": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 80": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 81": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 82": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 83": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 84": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 85": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 86": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 87": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 88": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 89": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 90": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 91": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 92": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 93": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 94": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 95": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 96": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 97": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 98": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 99": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 100": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 101": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 102": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 103": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 104": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 105": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 106": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 107": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 108": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 109": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 110": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 111": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 112": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 113": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 114": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 115": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 116": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 117": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 118": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 119": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 120": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 121": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 122": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 123": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 124": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 125": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 126": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 127": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 128": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 129": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 130": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 131": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 132": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 133": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 134": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 135": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 136": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 137": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 138": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 139": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 140": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 141": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 142": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 143": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 144": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 145": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 146": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 147": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 148": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 149": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 150": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 151": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 152": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 153": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 154": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 155": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 156": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 157": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 158": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 159": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 160": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 161": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 162": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 163": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 164": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 165": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 166": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 167": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 168": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 169": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 170": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 171": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 172": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 173": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 174": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 175": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 176": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 177": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 178": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 179": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 180": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 181": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 182": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 183": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 184": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 185": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 186": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 187": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 188": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 189": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 190": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 191": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 192": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 193": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 194": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 195": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 196": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 197": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 198": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 199": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 200": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 201": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 202": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 203": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 204": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 205": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 206": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 207": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 208": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 209": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 210": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 211": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 212": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 213": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 214": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 215": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 216": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 217": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 218": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 219": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 220": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 221": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 222": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 223": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 224": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 225": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 226": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 227": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 228": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 229": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 230": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 231": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 232": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 233": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 234": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 235": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 236": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 237": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 238": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 239": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 240": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 241": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 242": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 243": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 244": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 245": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 246": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 247": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 248": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 249": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 250": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 251": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 252": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 253": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 254": { + "status": "PASS" + }, + "Not throw: windows-1258 has a pointer 255": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 0": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 1": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 2": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 3": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 4": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 5": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 6": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 7": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 8": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 9": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 10": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 11": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 12": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 13": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 14": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 15": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 16": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 17": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 18": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 19": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 20": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 21": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 22": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 23": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 24": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 25": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 26": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 27": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 28": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 29": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 30": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 31": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 32": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 33": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 34": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 35": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 36": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 37": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 38": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 39": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 40": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 41": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 42": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 43": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 44": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 45": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 46": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 47": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 48": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 49": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 50": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 51": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 52": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 53": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 54": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 55": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 56": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 57": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 58": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 59": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 60": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 61": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 62": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 63": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 64": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 65": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 66": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 67": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 68": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 69": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 70": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 71": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 72": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 73": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 74": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 75": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 76": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 77": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 78": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 79": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 80": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 81": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 82": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 83": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 84": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 85": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 86": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 87": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 88": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 89": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 90": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 91": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 92": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 93": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 94": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 95": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 96": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 97": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 98": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 99": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 100": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 101": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 102": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 103": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 104": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 105": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 106": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 107": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 108": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 109": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 110": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 111": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 112": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 113": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 114": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 115": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 116": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 117": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 118": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 119": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 120": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 121": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 122": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 123": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 124": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 125": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 126": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 127": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 128": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 129": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 130": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 131": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 132": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 133": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 134": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 135": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 136": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 137": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 138": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 139": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 140": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 141": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 142": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 143": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 144": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 145": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 146": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 147": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 148": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 149": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 150": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 151": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 152": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 153": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 154": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 155": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 156": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 157": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 158": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 159": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 160": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 161": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 162": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 163": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 164": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 165": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 166": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 167": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 168": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 169": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 170": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 171": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 172": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 173": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 174": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 175": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 176": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 177": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 178": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 179": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 180": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 181": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 182": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 183": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 184": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 185": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 186": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 187": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 188": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 189": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 190": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 191": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 192": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 193": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 194": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 195": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 196": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 197": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 198": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 199": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 200": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 201": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 202": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 203": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 204": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 205": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 206": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 207": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 208": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 209": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 210": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 211": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 212": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 213": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 214": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 215": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 216": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 217": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 218": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 219": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 220": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 221": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 222": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 223": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 224": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 225": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 226": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 227": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 228": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 229": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 230": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 231": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 232": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 233": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 234": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 235": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 236": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 237": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 238": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 239": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 240": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 241": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 242": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 243": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 244": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 245": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 246": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 247": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 248": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 249": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 250": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 251": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 252": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 253": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 254": { + "status": "PASS" + }, + "Not throw: x-mac-cyrillic has a pointer 255": { + "status": "PASS" + } +} \ No newline at end of file diff --git a/tests/wpt-harness/expectations/encoding/textdecoder-labels.any.js.json b/tests/wpt-harness/expectations/encoding/textdecoder-labels.any.js.json new file mode 100644 index 00000000..2684de4f --- /dev/null +++ b/tests/wpt-harness/expectations/encoding/textdecoder-labels.any.js.json @@ -0,0 +1,668 @@ +{ + "unicode-1-1-utf-8 => UTF-8": { + "status": "PASS" + }, + "unicode11utf8 => UTF-8": { + "status": "PASS" + }, + "unicode20utf8 => UTF-8": { + "status": "PASS" + }, + "utf-8 => UTF-8": { + "status": "PASS" + }, + "utf8 => UTF-8": { + "status": "PASS" + }, + "x-unicode20utf8 => UTF-8": { + "status": "PASS" + }, + "866 => IBM866": { + "status": "PASS" + }, + "cp866 => IBM866": { + "status": "PASS" + }, + "csibm866 => IBM866": { + "status": "PASS" + }, + "ibm866 => IBM866": { + "status": "PASS" + }, + "csisolatin2 => ISO-8859-2": { + "status": "PASS" + }, + "iso-8859-2 => ISO-8859-2": { + "status": "PASS" + }, + "iso-ir-101 => ISO-8859-2": { + "status": "PASS" + }, + "iso8859-2 => ISO-8859-2": { + "status": "PASS" + }, + "iso88592 => ISO-8859-2": { + "status": "PASS" + }, + "iso_8859-2 => ISO-8859-2": { + "status": "PASS" + }, + "iso_8859-2:1987 => ISO-8859-2": { + "status": "PASS" + }, + "l2 => ISO-8859-2": { + "status": "PASS" + }, + "latin2 => ISO-8859-2": { + "status": "PASS" + }, + "csisolatin3 => ISO-8859-3": { + "status": "PASS" + }, + "iso-8859-3 => ISO-8859-3": { + "status": "PASS" + }, + "iso-ir-109 => ISO-8859-3": { + "status": "PASS" + }, + "iso8859-3 => ISO-8859-3": { + "status": "PASS" + }, + "iso88593 => ISO-8859-3": { + "status": "PASS" + }, + "iso_8859-3 => ISO-8859-3": { + "status": "PASS" + }, + "iso_8859-3:1988 => ISO-8859-3": { + "status": "PASS" + }, + "l3 => ISO-8859-3": { + "status": "PASS" + }, + "latin3 => ISO-8859-3": { + "status": "PASS" + }, + "csisolatin4 => ISO-8859-4": { + "status": "PASS" + }, + "iso-8859-4 => ISO-8859-4": { + "status": "PASS" + }, + "iso-ir-110 => ISO-8859-4": { + "status": "PASS" + }, + "iso8859-4 => ISO-8859-4": { + "status": "PASS" + }, + "iso88594 => ISO-8859-4": { + "status": "PASS" + }, + "iso_8859-4 => ISO-8859-4": { + "status": "PASS" + }, + "iso_8859-4:1988 => ISO-8859-4": { + "status": "PASS" + }, + "l4 => ISO-8859-4": { + "status": "PASS" + }, + "latin4 => ISO-8859-4": { + "status": "PASS" + }, + "csisolatincyrillic => ISO-8859-5": { + "status": "PASS" + }, + "cyrillic => ISO-8859-5": { + "status": "PASS" + }, + "iso-8859-5 => ISO-8859-5": { + "status": "PASS" + }, + "iso-ir-144 => ISO-8859-5": { + "status": "PASS" + }, + "iso8859-5 => ISO-8859-5": { + "status": "PASS" + }, + "iso88595 => ISO-8859-5": { + "status": "PASS" + }, + "iso_8859-5 => ISO-8859-5": { + "status": "PASS" + }, + "iso_8859-5:1988 => ISO-8859-5": { + "status": "PASS" + }, + "arabic => ISO-8859-6": { + "status": "PASS" + }, + "asmo-708 => ISO-8859-6": { + "status": "PASS" + }, + "csiso88596e => ISO-8859-6": { + "status": "PASS" + }, + "csiso88596i => ISO-8859-6": { + "status": "PASS" + }, + "csisolatinarabic => ISO-8859-6": { + "status": "PASS" + }, + "ecma-114 => ISO-8859-6": { + "status": "PASS" + }, + "iso-8859-6 => ISO-8859-6": { + "status": "PASS" + }, + "iso-8859-6-e => ISO-8859-6": { + "status": "PASS" + }, + "iso-8859-6-i => ISO-8859-6": { + "status": "PASS" + }, + "iso-ir-127 => ISO-8859-6": { + "status": "PASS" + }, + "iso8859-6 => ISO-8859-6": { + "status": "PASS" + }, + "iso88596 => ISO-8859-6": { + "status": "PASS" + }, + "iso_8859-6 => ISO-8859-6": { + "status": "PASS" + }, + "iso_8859-6:1987 => ISO-8859-6": { + "status": "PASS" + }, + "csisolatingreek => ISO-8859-7": { + "status": "PASS" + }, + "ecma-118 => ISO-8859-7": { + "status": "PASS" + }, + "elot_928 => ISO-8859-7": { + "status": "PASS" + }, + "greek => ISO-8859-7": { + "status": "PASS" + }, + "greek8 => ISO-8859-7": { + "status": "PASS" + }, + "iso-8859-7 => ISO-8859-7": { + "status": "PASS" + }, + "iso-ir-126 => ISO-8859-7": { + "status": "PASS" + }, + "iso8859-7 => ISO-8859-7": { + "status": "PASS" + }, + "iso88597 => ISO-8859-7": { + "status": "PASS" + }, + "iso_8859-7 => ISO-8859-7": { + "status": "PASS" + }, + "iso_8859-7:1987 => ISO-8859-7": { + "status": "PASS" + }, + "sun_eu_greek => ISO-8859-7": { + "status": "PASS" + }, + "csiso88598e => ISO-8859-8": { + "status": "PASS" + }, + "csisolatinhebrew => ISO-8859-8": { + "status": "PASS" + }, + "hebrew => ISO-8859-8": { + "status": "PASS" + }, + "iso-8859-8 => ISO-8859-8": { + "status": "PASS" + }, + "iso-8859-8-e => ISO-8859-8": { + "status": "PASS" + }, + "iso-ir-138 => ISO-8859-8": { + "status": "PASS" + }, + "iso8859-8 => ISO-8859-8": { + "status": "PASS" + }, + "iso88598 => ISO-8859-8": { + "status": "PASS" + }, + "iso_8859-8 => ISO-8859-8": { + "status": "PASS" + }, + "iso_8859-8:1988 => ISO-8859-8": { + "status": "PASS" + }, + "visual => ISO-8859-8": { + "status": "PASS" + }, + "csiso88598i => ISO-8859-8-I": { + "status": "PASS" + }, + "iso-8859-8-i => ISO-8859-8-I": { + "status": "PASS" + }, + "logical => ISO-8859-8-I": { + "status": "PASS" + }, + "csisolatin6 => ISO-8859-10": { + "status": "PASS" + }, + "iso-8859-10 => ISO-8859-10": { + "status": "PASS" + }, + "iso-ir-157 => ISO-8859-10": { + "status": "PASS" + }, + "iso8859-10 => ISO-8859-10": { + "status": "PASS" + }, + "iso885910 => ISO-8859-10": { + "status": "PASS" + }, + "l6 => ISO-8859-10": { + "status": "PASS" + }, + "latin6 => ISO-8859-10": { + "status": "PASS" + }, + "iso-8859-13 => ISO-8859-13": { + "status": "PASS" + }, + "iso8859-13 => ISO-8859-13": { + "status": "PASS" + }, + "iso885913 => ISO-8859-13": { + "status": "PASS" + }, + "iso-8859-14 => ISO-8859-14": { + "status": "PASS" + }, + "iso8859-14 => ISO-8859-14": { + "status": "PASS" + }, + "iso885914 => ISO-8859-14": { + "status": "PASS" + }, + "csisolatin9 => ISO-8859-15": { + "status": "PASS" + }, + "iso-8859-15 => ISO-8859-15": { + "status": "PASS" + }, + "iso8859-15 => ISO-8859-15": { + "status": "PASS" + }, + "iso885915 => ISO-8859-15": { + "status": "PASS" + }, + "iso_8859-15 => ISO-8859-15": { + "status": "PASS" + }, + "l9 => ISO-8859-15": { + "status": "PASS" + }, + "iso-8859-16 => ISO-8859-16": { + "status": "PASS" + }, + "cskoi8r => KOI8-R": { + "status": "PASS" + }, + "koi => KOI8-R": { + "status": "PASS" + }, + "koi8 => KOI8-R": { + "status": "PASS" + }, + "koi8-r => KOI8-R": { + "status": "PASS" + }, + "koi8_r => KOI8-R": { + "status": "PASS" + }, + "koi8-ru => KOI8-U": { + "status": "PASS" + }, + "koi8-u => KOI8-U": { + "status": "PASS" + }, + "csmacintosh => macintosh": { + "status": "PASS" + }, + "mac => macintosh": { + "status": "PASS" + }, + "macintosh => macintosh": { + "status": "PASS" + }, + "x-mac-roman => macintosh": { + "status": "PASS" + }, + "dos-874 => windows-874": { + "status": "PASS" + }, + "iso-8859-11 => windows-874": { + "status": "PASS" + }, + "iso8859-11 => windows-874": { + "status": "PASS" + }, + "iso885911 => windows-874": { + "status": "PASS" + }, + "tis-620 => windows-874": { + "status": "PASS" + }, + "windows-874 => windows-874": { + "status": "PASS" + }, + "cp1250 => windows-1250": { + "status": "PASS" + }, + "windows-1250 => windows-1250": { + "status": "PASS" + }, + "x-cp1250 => windows-1250": { + "status": "PASS" + }, + "cp1251 => windows-1251": { + "status": "PASS" + }, + "windows-1251 => windows-1251": { + "status": "PASS" + }, + "x-cp1251 => windows-1251": { + "status": "PASS" + }, + "ansi_x3.4-1968 => windows-1252": { + "status": "PASS" + }, + "ascii => windows-1252": { + "status": "PASS" + }, + "cp1252 => windows-1252": { + "status": "PASS" + }, + "cp819 => windows-1252": { + "status": "PASS" + }, + "csisolatin1 => windows-1252": { + "status": "PASS" + }, + "ibm819 => windows-1252": { + "status": "PASS" + }, + "iso-8859-1 => windows-1252": { + "status": "PASS" + }, + "iso-ir-100 => windows-1252": { + "status": "PASS" + }, + "iso8859-1 => windows-1252": { + "status": "PASS" + }, + "iso88591 => windows-1252": { + "status": "PASS" + }, + "iso_8859-1 => windows-1252": { + "status": "PASS" + }, + "iso_8859-1:1987 => windows-1252": { + "status": "PASS" + }, + "l1 => windows-1252": { + "status": "PASS" + }, + "latin1 => windows-1252": { + "status": "PASS" + }, + "us-ascii => windows-1252": { + "status": "PASS" + }, + "windows-1252 => windows-1252": { + "status": "PASS" + }, + "x-cp1252 => windows-1252": { + "status": "PASS" + }, + "cp1253 => windows-1253": { + "status": "PASS" + }, + "windows-1253 => windows-1253": { + "status": "PASS" + }, + "x-cp1253 => windows-1253": { + "status": "PASS" + }, + "cp1254 => windows-1254": { + "status": "PASS" + }, + "csisolatin5 => windows-1254": { + "status": "PASS" + }, + "iso-8859-9 => windows-1254": { + "status": "PASS" + }, + "iso-ir-148 => windows-1254": { + "status": "PASS" + }, + "iso8859-9 => windows-1254": { + "status": "PASS" + }, + "iso88599 => windows-1254": { + "status": "PASS" + }, + "iso_8859-9 => windows-1254": { + "status": "PASS" + }, + "iso_8859-9:1989 => windows-1254": { + "status": "PASS" + }, + "l5 => windows-1254": { + "status": "PASS" + }, + "latin5 => windows-1254": { + "status": "PASS" + }, + "windows-1254 => windows-1254": { + "status": "PASS" + }, + "x-cp1254 => windows-1254": { + "status": "PASS" + }, + "cp1255 => windows-1255": { + "status": "PASS" + }, + "windows-1255 => windows-1255": { + "status": "PASS" + }, + "x-cp1255 => windows-1255": { + "status": "PASS" + }, + "cp1256 => windows-1256": { + "status": "PASS" + }, + "windows-1256 => windows-1256": { + "status": "PASS" + }, + "x-cp1256 => windows-1256": { + "status": "PASS" + }, + "cp1257 => windows-1257": { + "status": "PASS" + }, + "windows-1257 => windows-1257": { + "status": "PASS" + }, + "x-cp1257 => windows-1257": { + "status": "PASS" + }, + "cp1258 => windows-1258": { + "status": "PASS" + }, + "windows-1258 => windows-1258": { + "status": "PASS" + }, + "x-cp1258 => windows-1258": { + "status": "PASS" + }, + "x-mac-cyrillic => x-mac-cyrillic": { + "status": "PASS" + }, + "x-mac-ukrainian => x-mac-cyrillic": { + "status": "PASS" + }, + "chinese => GBK": { + "status": "PASS" + }, + "csgb2312 => GBK": { + "status": "PASS" + }, + "csiso58gb231280 => GBK": { + "status": "PASS" + }, + "gb2312 => GBK": { + "status": "PASS" + }, + "gb_2312 => GBK": { + "status": "PASS" + }, + "gb_2312-80 => GBK": { + "status": "PASS" + }, + "gbk => GBK": { + "status": "PASS" + }, + "iso-ir-58 => GBK": { + "status": "PASS" + }, + "x-gbk => GBK": { + "status": "PASS" + }, + "gb18030 => gb18030": { + "status": "PASS" + }, + "big5 => Big5": { + "status": "PASS" + }, + "big5-hkscs => Big5": { + "status": "PASS" + }, + "cn-big5 => Big5": { + "status": "PASS" + }, + "csbig5 => Big5": { + "status": "PASS" + }, + "x-x-big5 => Big5": { + "status": "PASS" + }, + "cseucpkdfmtjapanese => EUC-JP": { + "status": "PASS" + }, + "euc-jp => EUC-JP": { + "status": "PASS" + }, + "x-euc-jp => EUC-JP": { + "status": "PASS" + }, + "csiso2022jp => ISO-2022-JP": { + "status": "PASS" + }, + "iso-2022-jp => ISO-2022-JP": { + "status": "PASS" + }, + "csshiftjis => Shift_JIS": { + "status": "PASS" + }, + "ms932 => Shift_JIS": { + "status": "PASS" + }, + "ms_kanji => Shift_JIS": { + "status": "PASS" + }, + "shift-jis => Shift_JIS": { + "status": "PASS" + }, + "shift_jis => Shift_JIS": { + "status": "PASS" + }, + "sjis => Shift_JIS": { + "status": "PASS" + }, + "windows-31j => Shift_JIS": { + "status": "PASS" + }, + "x-sjis => Shift_JIS": { + "status": "PASS" + }, + "cseuckr => EUC-KR": { + "status": "PASS" + }, + "csksc56011987 => EUC-KR": { + "status": "PASS" + }, + "euc-kr => EUC-KR": { + "status": "PASS" + }, + "iso-ir-149 => EUC-KR": { + "status": "PASS" + }, + "korean => EUC-KR": { + "status": "PASS" + }, + "ks_c_5601-1987 => EUC-KR": { + "status": "PASS" + }, + "ks_c_5601-1989 => EUC-KR": { + "status": "PASS" + }, + "ksc5601 => EUC-KR": { + "status": "PASS" + }, + "ksc_5601 => EUC-KR": { + "status": "PASS" + }, + "windows-949 => EUC-KR": { + "status": "PASS" + }, + "unicodefffe => UTF-16BE": { + "status": "PASS" + }, + "utf-16be => UTF-16BE": { + "status": "PASS" + }, + "csunicode => UTF-16LE": { + "status": "PASS" + }, + "iso-10646-ucs-2 => UTF-16LE": { + "status": "PASS" + }, + "ucs-2 => UTF-16LE": { + "status": "PASS" + }, + "unicode => UTF-16LE": { + "status": "PASS" + }, + "unicodefeff => UTF-16LE": { + "status": "PASS" + }, + "utf-16 => UTF-16LE": { + "status": "PASS" + }, + "utf-16le => UTF-16LE": { + "status": "PASS" + }, + "x-user-defined => x-user-defined": { + "status": "PASS" + } +} \ No newline at end of file diff --git a/tests/wpt-harness/expectations/fetch/api/abort/general.any.js.json b/tests/wpt-harness/expectations/fetch/api/abort/general.any.js.json new file mode 100644 index 00000000..b3b92c1c --- /dev/null +++ b/tests/wpt-harness/expectations/fetch/api/abort/general.any.js.json @@ -0,0 +1,161 @@ +{ + "Aborting rejects with AbortError": { + "status": "FAIL" + }, + "Aborting rejects with abort reason": { + "status": "FAIL" + }, + "Aborting rejects with AbortError - no-cors": { + "status": "FAIL" + }, + "TypeError from request constructor takes priority - RequestInit's window is not null": { + "status": "PASS" + }, + "TypeError from request constructor takes priority - Input URL is not valid": { + "status": "FAIL" + }, + "TypeError from request constructor takes priority - Input URL has credentials": { + "status": "PASS" + }, + "TypeError from request constructor takes priority - RequestInit's mode is navigate": { + "status": "PASS" + }, + "TypeError from request constructor takes priority - RequestInit's referrer is invalid": { + "status": "PASS" + }, + "TypeError from request constructor takes priority - RequestInit's method is invalid": { + "status": "PASS" + }, + "TypeError from request constructor takes priority - RequestInit's method is forbidden": { + "status": "PASS" + }, + "TypeError from request constructor takes priority - RequestInit's mode is no-cors and method is not simple": { + "status": "PASS" + }, + "TypeError from request constructor takes priority - RequestInit's cache mode is only-if-cached and mode is not same-origin": { + "status": "PASS" + }, + "TypeError from request constructor takes priority - Request with cache mode: only-if-cached and fetch mode cors": { + "status": "PASS" + }, + "TypeError from request constructor takes priority - Request with cache mode: only-if-cached and fetch mode no-cors": { + "status": "PASS" + }, + "TypeError from request constructor takes priority - Bad referrerPolicy init parameter value": { + "status": "PASS" + }, + "TypeError from request constructor takes priority - Bad mode init parameter value": { + "status": "PASS" + }, + "TypeError from request constructor takes priority - Bad credentials init parameter value": { + "status": "PASS" + }, + "TypeError from request constructor takes priority - Bad cache init parameter value": { + "status": "PASS" + }, + "TypeError from request constructor takes priority - Bad redirect init parameter value": { + "status": "PASS" + }, + "Request objects have a signal property": { + "status": "FAIL" + }, + "Signal on request object": { + "status": "FAIL" + }, + "Signal on request object should also have abort reason": { + "status": "FAIL" + }, + "Signal on request object created from request object": { + "status": "FAIL" + }, + "Signal on request object created from request object, with signal on second request": { + "status": "FAIL" + }, + "Signal on request object created from request object, with signal on second request overriding another": { + "status": "FAIL" + }, + "Signal retained after unrelated properties are overridden by fetch": { + "status": "FAIL" + }, + "Signal removed by setting to null": { + "status": "FAIL" + }, + "Already aborted signal rejects immediately": { + "status": "FAIL" + }, + "Request is still 'used' if signal is aborted before fetching": { + "status": "FAIL" + }, + "response.arrayBuffer() rejects if already aborted": { + "status": "FAIL" + }, + "response.blob() rejects if already aborted": { + "status": "FAIL" + }, + "response.bytes() rejects if already aborted": { + "status": "FAIL" + }, + "response.formData() rejects if already aborted": { + "status": "FAIL" + }, + "response.json() rejects if already aborted": { + "status": "FAIL" + }, + "response.text() rejects if already aborted": { + "status": "FAIL" + }, + "Call text() twice on aborted response": { + "status": "FAIL" + }, + "Already aborted signal does not make request": { + "status": "FAIL" + }, + "Already aborted signal can be used for many fetches": { + "status": "FAIL" + }, + "Signal can be used to abort other fetches, even if another fetch succeeded before aborting": { + "status": "FAIL" + }, + "Underlying connection is closed when aborting after receiving response": { + "status": "FAIL" + }, + "Underlying connection is closed when aborting after receiving response - no-cors": { + "status": "FAIL" + }, + "Fetch aborted & connection closed when aborted after calling response.arrayBuffer()": { + "status": "FAIL" + }, + "Fetch aborted & connection closed when aborted after calling response.blob()": { + "status": "FAIL" + }, + "Fetch aborted & connection closed when aborted after calling response.bytes()": { + "status": "FAIL" + }, + "Fetch aborted & connection closed when aborted after calling response.formData()": { + "status": "FAIL" + }, + "Fetch aborted & connection closed when aborted after calling response.json()": { + "status": "FAIL" + }, + "Fetch aborted & connection closed when aborted after calling response.text()": { + "status": "FAIL" + }, + "Stream errors once aborted. Underlying connection closed.": { + "status": "FAIL" + }, + "Stream errors once aborted, after reading. Underlying connection closed.": { + "status": "FAIL" + }, + "Stream will not error if body is empty. It's closed with an empty queue before it errors.": { + "status": "FAIL" + }, + "Readable stream synchronously cancels with AbortError if aborted before reading": { + "status": "FAIL" + }, + "Signal state is cloned": { + "status": "FAIL" + }, + "Clone aborts with original controller": { + "status": "FAIL" + } +} \ No newline at end of file diff --git a/tests/wpt-harness/expectations/fetch/api/abort/request.any.js.json b/tests/wpt-harness/expectations/fetch/api/abort/request.any.js.json new file mode 100644 index 00000000..400ec59a --- /dev/null +++ b/tests/wpt-harness/expectations/fetch/api/abort/request.any.js.json @@ -0,0 +1,56 @@ +{ + "Calling arrayBuffer() on an aborted request": { + "status": "FAIL" + }, + "Aborting a request after calling arrayBuffer()": { + "status": "FAIL" + }, + "Calling arrayBuffer() on an aborted consumed empty request": { + "status": "FAIL" + }, + "Calling arrayBuffer() on an aborted consumed nonempty request": { + "status": "FAIL" + }, + "Calling blob() on an aborted request": { + "status": "FAIL" + }, + "Aborting a request after calling blob()": { + "status": "FAIL" + }, + "Calling blob() on an aborted consumed empty request": { + "status": "FAIL" + }, + "Calling blob() on an aborted consumed nonempty request": { + "status": "FAIL" + }, + "Calling formData() on an aborted request": { + "status": "FAIL" + }, + "Aborting a request after calling formData()": { + "status": "FAIL" + }, + "Calling formData() on an aborted consumed nonempty request": { + "status": "FAIL" + }, + "Calling json() on an aborted request": { + "status": "FAIL" + }, + "Aborting a request after calling json()": { + "status": "FAIL" + }, + "Calling json() on an aborted consumed nonempty request": { + "status": "FAIL" + }, + "Calling text() on an aborted request": { + "status": "FAIL" + }, + "Aborting a request after calling text()": { + "status": "FAIL" + }, + "Calling text() on an aborted consumed empty request": { + "status": "FAIL" + }, + "Calling text() on an aborted consumed nonempty request": { + "status": "FAIL" + } +} \ No newline at end of file diff --git a/tests/wpt-harness/expectations/fetch/api/basic/header-value-null-byte.any.js.json b/tests/wpt-harness/expectations/fetch/api/basic/header-value-null-byte.any.js.json index 5512f3f0..c86b4116 100644 --- a/tests/wpt-harness/expectations/fetch/api/basic/header-value-null-byte.any.js.json +++ b/tests/wpt-harness/expectations/fetch/api/basic/header-value-null-byte.any.js.json @@ -1,5 +1,5 @@ { "Ensure fetch() rejects null bytes in headers": { - "status": "FAIL" + "status": "PASS" } } \ No newline at end of file diff --git a/tests/wpt-harness/expectations/fetch/api/basic/integrity.sub.any.js.json b/tests/wpt-harness/expectations/fetch/api/basic/integrity.sub.any.js.json index de3376ea..7b111ec0 100644 --- a/tests/wpt-harness/expectations/fetch/api/basic/integrity.sub.any.js.json +++ b/tests/wpt-harness/expectations/fetch/api/basic/integrity.sub.any.js.json @@ -51,6 +51,6 @@ "status": "FAIL" }, "SHA-* integrity for opaque response": { - "status": "FAIL" + "status": "PASS" } } \ No newline at end of file diff --git a/tests/wpt-harness/expectations/fetch/api/basic/keepalive.any.js.json b/tests/wpt-harness/expectations/fetch/api/basic/keepalive.any.js.json new file mode 100644 index 00000000..2e280b11 --- /dev/null +++ b/tests/wpt-harness/expectations/fetch/api/basic/keepalive.any.js.json @@ -0,0 +1,20 @@ +{ + "[keepalive] simple GET request on 'load' [no payload]; setting up": { + "status": "FAIL" + }, + "[keepalive] simple GET request on 'unload' [no payload]; setting up": { + "status": "FAIL" + }, + "[keepalive] simple GET request on 'pagehide' [no payload]; setting up": { + "status": "FAIL" + }, + "[keepalive] simple POST request on 'load' [no payload]; setting up": { + "status": "FAIL" + }, + "[keepalive] simple POST request on 'unload' [no payload]; setting up": { + "status": "FAIL" + }, + "[keepalive] simple POST request on 'pagehide' [no payload]; setting up": { + "status": "FAIL" + } +} \ No newline at end of file diff --git a/tests/wpt-harness/expectations/fetch/api/basic/mode-same-origin.any.js.json b/tests/wpt-harness/expectations/fetch/api/basic/mode-same-origin.any.js.json new file mode 100644 index 00000000..5dc94809 --- /dev/null +++ b/tests/wpt-harness/expectations/fetch/api/basic/mode-same-origin.any.js.json @@ -0,0 +1,26 @@ +{ + "Fetch ../resources/top.txt with same-origin mode": { + "status": "FAIL" + }, + "Fetch http://web-platform.test:8000/fetch/api/resources/top.txt with same-origin mode": { + "status": "FAIL" + }, + "Fetch https://web-platform.test:8443/fetch/api/resources/top.txt with same-origin mode": { + "status": "PASS" + }, + "Fetch http://www1.web-platform.test:8000/fetch/api/resources/top.txt with same-origin mode": { + "status": "FAIL" + }, + "Fetch /fetch/api/basic/../resources/redirect.py?location=../resources/top.txt with same-origin mode": { + "status": "FAIL" + }, + "Fetch /fetch/api/basic/../resources/redirect.py?location=http://web-platform.test:8000/fetch/api/resources/top.txt with same-origin mode": { + "status": "FAIL" + }, + "Fetch /fetch/api/basic/../resources/redirect.py?location=https://web-platform.test:8443/fetch/api/resources/top.txt with same-origin mode": { + "status": "FAIL" + }, + "Fetch /fetch/api/basic/../resources/redirect.py?location=http://www1.web-platform.test:8000/fetch/api/resources/top.txt with same-origin mode": { + "status": "FAIL" + } +} \ No newline at end of file diff --git a/tests/wpt-harness/expectations/fetch/api/basic/request-forbidden-headers.any.js.json b/tests/wpt-harness/expectations/fetch/api/basic/request-forbidden-headers.any.js.json index cc9f596c..5818dafc 100644 --- a/tests/wpt-harness/expectations/fetch/api/basic/request-forbidden-headers.any.js.json +++ b/tests/wpt-harness/expectations/fetch/api/basic/request-forbidden-headers.any.js.json @@ -11,9 +11,6 @@ "Access-Control-Request-Method is a forbidden request header": { "status": "FAIL" }, - "Access-Control-Request-Private-Network is a forbidden request header": { - "status": "FAIL" - }, "Connection is a forbidden request header": { "status": "FAIL" }, diff --git a/tests/wpt-harness/expectations/fetch/api/basic/request-head.any.js.json b/tests/wpt-harness/expectations/fetch/api/basic/request-head.any.js.json index 312a3f71..a4e4098a 100644 --- a/tests/wpt-harness/expectations/fetch/api/basic/request-head.any.js.json +++ b/tests/wpt-harness/expectations/fetch/api/basic/request-head.any.js.json @@ -1,5 +1,5 @@ { "Fetch with HEAD with body": { - "status": "FAIL" + "status": "PASS" } } \ No newline at end of file diff --git a/tests/wpt-harness/expectations/fetch/api/basic/request-headers-nonascii.any.js.json b/tests/wpt-harness/expectations/fetch/api/basic/request-headers-nonascii.any.js.json index d06c8d5d..a320d3ba 100644 --- a/tests/wpt-harness/expectations/fetch/api/basic/request-headers-nonascii.any.js.json +++ b/tests/wpt-harness/expectations/fetch/api/basic/request-headers-nonascii.any.js.json @@ -1,5 +1,5 @@ { "Non-ascii bytes in request headers": { - "status": "PASS" + "status": "FAIL" } } \ No newline at end of file diff --git a/tests/wpt-harness/expectations/fetch/api/basic/request-headers.any.js.json b/tests/wpt-harness/expectations/fetch/api/basic/request-headers.any.js.json index 99c2d9eb..c72e4350 100644 --- a/tests/wpt-harness/expectations/fetch/api/basic/request-headers.any.js.json +++ b/tests/wpt-harness/expectations/fetch/api/basic/request-headers.any.js.json @@ -35,6 +35,9 @@ "Fetch with POST with Int8Array body": { "status": "FAIL" }, + "Fetch with POST with Float16Array body": { + "status": "FAIL" + }, "Fetch with POST with Float32Array body": { "status": "FAIL" }, diff --git a/tests/wpt-harness/expectations/fetch/api/basic/request-upload.any.js.json b/tests/wpt-harness/expectations/fetch/api/basic/request-upload.any.js.json index d353b0ba..1c91e706 100644 --- a/tests/wpt-harness/expectations/fetch/api/basic/request-upload.any.js.json +++ b/tests/wpt-harness/expectations/fetch/api/basic/request-upload.any.js.json @@ -20,6 +20,9 @@ "Fetch with POST with Int8Array body": { "status": "PASS" }, + "Fetch with POST with Float16Array body": { + "status": "PASS" + }, "Fetch with POST with Float32Array body": { "status": "PASS" }, @@ -33,19 +36,19 @@ "status": "FAIL" }, "Fetch with POST with ReadableStream containing String": { - "status": "FAIL" + "status": "PASS" }, "Fetch with POST with ReadableStream containing null": { - "status": "FAIL" + "status": "PASS" }, "Fetch with POST with ReadableStream containing number": { - "status": "FAIL" + "status": "PASS" }, "Fetch with POST with ReadableStream containing ArrayBuffer": { - "status": "FAIL" + "status": "PASS" }, "Fetch with POST with ReadableStream containing Blob": { - "status": "FAIL" + "status": "PASS" }, "Fetch with POST with text body on 421 response should be retried once on new connection.": { "status": "FAIL" diff --git a/tests/wpt-harness/expectations/fetch/api/basic/request-upload.h2.any.js.json b/tests/wpt-harness/expectations/fetch/api/basic/request-upload.h2.any.js.json deleted file mode 100644 index ef5cad95..00000000 --- a/tests/wpt-harness/expectations/fetch/api/basic/request-upload.h2.any.js.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "Fetch with POST with empty ReadableStream": { - "status": "FAIL" - }, - "Fetch with POST with ReadableStream": { - "status": "FAIL" - }, - "Fetch with POST with ReadableStream on 421 response should return the response and not retry.": { - "status": "PASS" - }, - "Feature detect for POST with ReadableStream": { - "status": "FAIL" - }, - "Feature detect for POST with ReadableStream, using request object": { - "status": "FAIL" - }, - "Synchronous feature detect": { - "status": "FAIL" - }, - "Synchronous feature detect fails if feature unsupported": { - "status": "PASS" - }, - "Streaming upload with body containing a String": { - "status": "FAIL" - }, - "Streaming upload with body containing null": { - "status": "FAIL" - }, - "Streaming upload with body containing a number": { - "status": "FAIL" - }, - "Streaming upload should fail on a 401 response": { - "status": "FAIL" - } -} \ No newline at end of file diff --git a/tests/wpt-harness/expectations/fetch/api/basic/response-null-body.any.js.json b/tests/wpt-harness/expectations/fetch/api/basic/response-null-body.any.js.json new file mode 100644 index 00000000..d8d125a2 --- /dev/null +++ b/tests/wpt-harness/expectations/fetch/api/basic/response-null-body.any.js.json @@ -0,0 +1,35 @@ +{ + "Response.body is null for responses with status=204 (method=GET)": { + "status": "PASS" + }, + "Response.body is null for responses with status=204 (method=POST)": { + "status": "PASS" + }, + "Response.body is null for responses with status=204 (method=OPTIONS)": { + "status": "PASS" + }, + "Response.body is null for responses with status=205 (method=GET)": { + "status": "PASS" + }, + "Response.body is null for responses with status=205 (method=POST)": { + "status": "PASS" + }, + "Response.body is null for responses with status=205 (method=OPTIONS)": { + "status": "PASS" + }, + "Response.body is null for responses with status=304 (method=GET)": { + "status": "PASS" + }, + "Response.body is null for responses with status=304 (method=POST)": { + "status": "PASS" + }, + "Response.body is null for responses with status=304 (method=OPTIONS)": { + "status": "PASS" + }, + "Response.body is null for responses with method=HEAD": { + "status": "FAIL" + }, + "Null body status with subresource integrity should abort": { + "status": "PASS" + } +} \ No newline at end of file diff --git a/tests/wpt-harness/expectations/fetch/api/basic/status.h2.any.js.json b/tests/wpt-harness/expectations/fetch/api/basic/status.h2.any.js.json new file mode 100644 index 00000000..e0882bdd --- /dev/null +++ b/tests/wpt-harness/expectations/fetch/api/basic/status.h2.any.js.json @@ -0,0 +1,23 @@ +{ + "statusText over H2 for status 200 should be the empty string": { + "status": "FAIL" + }, + "statusText over H2 for status 210 should be the empty string": { + "status": "PASS" + }, + "statusText over H2 for status 400 should be the empty string": { + "status": "FAIL" + }, + "statusText over H2 for status 404 should be the empty string": { + "status": "FAIL" + }, + "statusText over H2 for status 410 should be the empty string": { + "status": "FAIL" + }, + "statusText over H2 for status 500 should be the empty string": { + "status": "FAIL" + }, + "statusText over H2 for status 502 should be the empty string": { + "status": "FAIL" + } +} \ No newline at end of file diff --git a/tests/wpt-harness/expectations/fetch/api/body/cloned-any.js.json b/tests/wpt-harness/expectations/fetch/api/body/cloned-any.js.json new file mode 100644 index 00000000..2a5fcc1a --- /dev/null +++ b/tests/wpt-harness/expectations/fetch/api/body/cloned-any.js.json @@ -0,0 +1,17 @@ +{ + "FormData is cloned": { + "status": "FAIL" + }, + "URLSearchParams is cloned": { + "status": "FAIL" + }, + "TypedArray is cloned": { + "status": "PASS" + }, + "ArrayBuffer is cloned": { + "status": "PASS" + }, + "Blob is cloned": { + "status": "FAIL" + } +} \ No newline at end of file diff --git a/tests/wpt-harness/expectations/fetch/api/body/formdata.any.js.json b/tests/wpt-harness/expectations/fetch/api/body/formdata.any.js.json new file mode 100644 index 00000000..eb94020b --- /dev/null +++ b/tests/wpt-harness/expectations/fetch/api/body/formdata.any.js.json @@ -0,0 +1,11 @@ +{ + "Consume empty response.formData() as FormData": { + "status": "FAIL" + }, + "Consume empty request.formData() as FormData": { + "status": "FAIL" + }, + "Consume multipart/form-data headers case-insensitively": { + "status": "FAIL" + } +} \ No newline at end of file diff --git a/tests/wpt-harness/expectations/fetch/api/headers/header-setcookie.any.js.json b/tests/wpt-harness/expectations/fetch/api/headers/header-setcookie.any.js.json new file mode 100644 index 00000000..4a04a604 --- /dev/null +++ b/tests/wpt-harness/expectations/fetch/api/headers/header-setcookie.any.js.json @@ -0,0 +1,74 @@ +{ + "Headers.prototype.get combines set-cookie headers in order": { + "status": "PASS" + }, + "Headers iterator does not combine set-cookie headers": { + "status": "FAIL" + }, + "Headers iterator does not special case set-cookie2 headers": { + "status": "PASS" + }, + "Headers iterator does not combine set-cookie & set-cookie2 headers": { + "status": "FAIL" + }, + "Headers iterator preserves set-cookie ordering": { + "status": "FAIL" + }, + "Headers iterator preserves per header ordering, but sorts keys alphabetically": { + "status": "FAIL" + }, + "Headers iterator preserves per header ordering, but sorts keys alphabetically (and ignores value ordering)": { + "status": "FAIL" + }, + "Headers iterator is correctly updated with set-cookie changes": { + "status": "FAIL" + }, + "Headers iterator is correctly updated with set-cookie changes #2": { + "status": "FAIL" + }, + "Headers.prototype.has works for set-cookie": { + "status": "PASS" + }, + "Headers.prototype.append works for set-cookie": { + "status": "FAIL" + }, + "Headers.prototype.set works for set-cookie": { + "status": "PASS" + }, + "Headers.prototype.delete works for set-cookie": { + "status": "PASS" + }, + "Headers.prototype.getSetCookie with no headers present": { + "status": "FAIL" + }, + "Headers.prototype.getSetCookie with one header": { + "status": "FAIL" + }, + "Headers.prototype.getSetCookie with one header created from an object": { + "status": "FAIL" + }, + "Headers.prototype.getSetCookie with multiple headers": { + "status": "FAIL" + }, + "Headers.prototype.getSetCookie with an empty header": { + "status": "FAIL" + }, + "Headers.prototype.getSetCookie with two equal headers": { + "status": "FAIL" + }, + "Headers.prototype.getSetCookie ignores set-cookie2 headers": { + "status": "FAIL" + }, + "Headers.prototype.getSetCookie preserves header ordering": { + "status": "FAIL" + }, + "Adding Set-Cookie headers normalizes their value": { + "status": "FAIL" + }, + "Adding invalid Set-Cookie headers throws": { + "status": "PASS" + }, + "Set-Cookie is a forbidden response header": { + "status": "FAIL" + } +} \ No newline at end of file diff --git a/tests/wpt-harness/expectations/fetch/api/headers/header-values-normalize.any.js.json b/tests/wpt-harness/expectations/fetch/api/headers/header-values-normalize.any.js.json index 3326acca..76d18cdd 100644 --- a/tests/wpt-harness/expectations/fetch/api/headers/header-values-normalize.any.js.json +++ b/tests/wpt-harness/expectations/fetch/api/headers/header-values-normalize.any.js.json @@ -1,6 +1,6 @@ { "fetch() with value %00": { - "status": "FAIL" + "status": "PASS" }, "fetch() with value %01": { "status": "FAIL" @@ -30,10 +30,10 @@ "status": "PASS" }, "fetch() with value %0A": { - "status": "FAIL" + "status": "PASS" }, "fetch() with value %0D": { - "status": "FAIL" + "status": "PASS" }, "fetch() with value %0E": { "status": "FAIL" diff --git a/tests/wpt-harness/expectations/fetch/api/headers/header-values.any.js.json b/tests/wpt-harness/expectations/fetch/api/headers/header-values.any.js.json index d597731c..627db7de 100644 --- a/tests/wpt-harness/expectations/fetch/api/headers/header-values.any.js.json +++ b/tests/wpt-harness/expectations/fetch/api/headers/header-values.any.js.json @@ -1,12 +1,12 @@ { "fetch() with value x%00x needs to throw": { - "status": "FAIL" + "status": "PASS" }, "fetch() with value x%0Ax needs to throw": { - "status": "FAIL" + "status": "PASS" }, "fetch() with value x%0Dx needs to throw": { - "status": "FAIL" + "status": "PASS" }, "fetch() with all valid values": { "status": "FAIL" diff --git a/tests/wpt-harness/expectations/fetch/api/headers/headers-basic.any.js.json b/tests/wpt-harness/expectations/fetch/api/headers/headers-basic.any.js.json index 25820e33..4fd7a460 100644 --- a/tests/wpt-harness/expectations/fetch/api/headers/headers-basic.any.js.json +++ b/tests/wpt-harness/expectations/fetch/api/headers/headers-basic.any.js.json @@ -12,7 +12,7 @@ "status": "PASS" }, "Create headers with 1 should throw": { - "status": "FAIL" + "status": "PASS" }, "Create headers with sequence": { "status": "PASS" diff --git a/tests/wpt-harness/expectations/fetch/api/headers/headers-errors.any.js.json b/tests/wpt-harness/expectations/fetch/api/headers/headers-errors.any.js.json index 0f54c16e..26cc9e15 100644 --- a/tests/wpt-harness/expectations/fetch/api/headers/headers-errors.any.js.json +++ b/tests/wpt-harness/expectations/fetch/api/headers/headers-errors.any.js.json @@ -1,54 +1,54 @@ { "Create headers giving an array having one string as init argument": { - "status": "FAIL" + "status": "PASS" }, "Create headers giving an array having three strings as init argument": { - "status": "FAIL" + "status": "PASS" }, "Create headers giving bad header name as init argument": { - "status": "FAIL" + "status": "PASS" }, "Create headers giving bad header value as init argument": { "status": "FAIL" }, "Check headers get with an invalid name invalidĀ": { - "status": "FAIL" + "status": "PASS" }, "Check headers get with an invalid name [object Object]": { - "status": "FAIL" + "status": "PASS" }, "Check headers delete with an invalid name invalidĀ": { - "status": "FAIL" + "status": "PASS" }, "Check headers delete with an invalid name [object Object]": { - "status": "FAIL" + "status": "PASS" }, "Check headers has with an invalid name invalidĀ": { - "status": "FAIL" + "status": "PASS" }, "Check headers has with an invalid name [object Object]": { - "status": "FAIL" + "status": "PASS" }, "Check headers set with an invalid name invalidĀ": { - "status": "FAIL" + "status": "PASS" }, "Check headers set with an invalid name [object Object]": { - "status": "FAIL" + "status": "PASS" }, "Check headers set with an invalid value invalidĀ": { "status": "FAIL" }, "Check headers append with an invalid name invalidĀ": { - "status": "FAIL" + "status": "PASS" }, "Check headers append with an invalid name [object Object]": { - "status": "FAIL" + "status": "PASS" }, "Check headers append with an invalid value invalidĀ": { "status": "FAIL" }, "Headers forEach throws if argument is not callable": { - "status": "FAIL" + "status": "PASS" }, "Headers forEach loop should stop if callback is throwing exception": { "status": "PASS" diff --git a/tests/wpt-harness/expectations/fetch/api/headers/headers-no-cors.any.js.json b/tests/wpt-harness/expectations/fetch/api/headers/headers-no-cors.any.js.json new file mode 100644 index 00000000..eb79cc13 --- /dev/null +++ b/tests/wpt-harness/expectations/fetch/api/headers/headers-no-cors.any.js.json @@ -0,0 +1,83 @@ +{ + "Loading data…": { + "status": "PASS" + }, + "\"no-cors\" Headers object cannot have accept set to sssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss, , sssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss": { + "status": "FAIL" + }, + "\"no-cors\" Headers object cannot have accept-language set to sssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss, , sssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss": { + "status": "FAIL" + }, + "\"no-cors\" Headers object cannot have content-language set to sssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss, , sssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss": { + "status": "FAIL" + }, + "\"no-cors\" Headers object cannot have accept set to , sssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss": { + "status": "FAIL" + }, + "\"no-cors\" Headers object cannot have accept-language set to , sssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss": { + "status": "FAIL" + }, + "\"no-cors\" Headers object cannot have content-language set to , sssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss": { + "status": "FAIL" + }, + "\"no-cors\" Headers object cannot have content-type set to text/plain;ssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss, text/plain": { + "status": "FAIL" + }, + "\"no-cors\" Headers object cannot have accept/\" as header": { + "status": "FAIL" + }, + "\"no-cors\" Headers object cannot have accept/012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678 as header": { + "status": "FAIL" + }, + "\"no-cors\" Headers object cannot have accept-language/\u0001 as header": { + "status": "FAIL" + }, + "\"no-cors\" Headers object cannot have accept-language/@ as header": { + "status": "FAIL" + }, + "\"no-cors\" Headers object cannot have authorization/basics as header": { + "status": "FAIL" + }, + "\"no-cors\" Headers object cannot have content-language/\u0001 as header": { + "status": "FAIL" + }, + "\"no-cors\" Headers object cannot have content-language/@ as header": { + "status": "FAIL" + }, + "\"no-cors\" Headers object cannot have content-type/text/html as header": { + "status": "FAIL" + }, + "\"no-cors\" Headers object cannot have content-type/text/plain; long=0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901 as header": { + "status": "FAIL" + }, + "\"no-cors\" Headers object cannot have range/bytes 0- as header": { + "status": "FAIL" + }, + "\"no-cors\" Headers object cannot have test/hi as header": { + "status": "FAIL" + }, + "\"no-cors\" Headers object cannot have dpr/2 as header": { + "status": "FAIL" + }, + "\"no-cors\" Headers object cannot have rtt/1.0 as header": { + "status": "FAIL" + }, + "\"no-cors\" Headers object cannot have downlink/-1.0 as header": { + "status": "FAIL" + }, + "\"no-cors\" Headers object cannot have ect/6g as header": { + "status": "FAIL" + }, + "\"no-cors\" Headers object cannot have save-data/on as header": { + "status": "FAIL" + }, + "\"no-cors\" Headers object cannot have viewport-width/100 as header": { + "status": "FAIL" + }, + "\"no-cors\" Headers object cannot have width/100 as header": { + "status": "FAIL" + }, + "\"no-cors\" Headers object cannot have unknown/doesitmatter as header": { + "status": "FAIL" + } +} \ No newline at end of file diff --git a/tests/wpt-harness/expectations/fetch/api/redirect/redirect-back-to-original-origin.any.js.json b/tests/wpt-harness/expectations/fetch/api/redirect/redirect-back-to-original-origin.any.js.json new file mode 100644 index 00000000..338553a6 --- /dev/null +++ b/tests/wpt-harness/expectations/fetch/api/redirect/redirect-back-to-original-origin.any.js.json @@ -0,0 +1,8 @@ +{ + "original => remote => original with mode: \"no-cors\"": { + "status": "FAIL" + }, + "original => remote => original with mode: \"cors\"": { + "status": "FAIL" + } +} \ No newline at end of file diff --git a/tests/wpt-harness/expectations/fetch/api/redirect/redirect-count.any.js.json b/tests/wpt-harness/expectations/fetch/api/redirect/redirect-count.any.js.json new file mode 100644 index 00000000..aae50a71 --- /dev/null +++ b/tests/wpt-harness/expectations/fetch/api/redirect/redirect-count.any.js.json @@ -0,0 +1,32 @@ +{ + "Redirect 301 20 times": { + "status": "FAIL" + }, + "Redirect 301 21 times": { + "status": "FAIL" + }, + "Redirect 302 20 times": { + "status": "FAIL" + }, + "Redirect 302 21 times": { + "status": "FAIL" + }, + "Redirect 303 20 times": { + "status": "FAIL" + }, + "Redirect 303 21 times": { + "status": "FAIL" + }, + "Redirect 307 20 times": { + "status": "FAIL" + }, + "Redirect 307 21 times": { + "status": "FAIL" + }, + "Redirect 308 20 times": { + "status": "FAIL" + }, + "Redirect 308 21 times": { + "status": "FAIL" + } +} \ No newline at end of file diff --git a/tests/wpt-harness/expectations/fetch/api/redirect/redirect-empty-location.any.js.json b/tests/wpt-harness/expectations/fetch/api/redirect/redirect-empty-location.any.js.json new file mode 100644 index 00000000..4a22bc55 --- /dev/null +++ b/tests/wpt-harness/expectations/fetch/api/redirect/redirect-empty-location.any.js.json @@ -0,0 +1,8 @@ +{ + "redirect response with empty Location, follow mode": { + "status": "FAIL" + }, + "redirect response with empty Location, manual mode": { + "status": "FAIL" + } +} \ No newline at end of file diff --git a/tests/wpt-harness/expectations/fetch/api/redirect/redirect-keepalive.any.js.json b/tests/wpt-harness/expectations/fetch/api/redirect/redirect-keepalive.any.js.json new file mode 100644 index 00000000..dd774280 --- /dev/null +++ b/tests/wpt-harness/expectations/fetch/api/redirect/redirect-keepalive.any.js.json @@ -0,0 +1,20 @@ +{ + "[keepalive][new window][unload] same-origin redirect; setting up": { + "status": "FAIL" + }, + "[keepalive][new window][unload] same-origin redirect + preflight; setting up": { + "status": "FAIL" + }, + "[keepalive][new window][unload] cross-origin redirect; setting up": { + "status": "FAIL" + }, + "[keepalive][new window][unload] cross-origin redirect + preflight; setting up": { + "status": "FAIL" + }, + "[keepalive][new window][unload] redirect to file URL; setting up": { + "status": "FAIL" + }, + "[keepalive][new window][unload] redirect to data URL; setting up": { + "status": "FAIL" + } +} \ No newline at end of file diff --git a/tests/wpt-harness/expectations/fetch/api/redirect/redirect-keepalive.https.any.js.json b/tests/wpt-harness/expectations/fetch/api/redirect/redirect-keepalive.https.any.js.json new file mode 100644 index 00000000..2a64da93 --- /dev/null +++ b/tests/wpt-harness/expectations/fetch/api/redirect/redirect-keepalive.https.any.js.json @@ -0,0 +1,5 @@ +{ + "[keepalive][iframe][load] mixed content redirect; setting up": { + "status": "FAIL" + } +} \ No newline at end of file diff --git a/tests/wpt-harness/expectations/fetch/api/redirect/redirect-location-escape.tentative.any.js.json b/tests/wpt-harness/expectations/fetch/api/redirect/redirect-location-escape.tentative.any.js.json new file mode 100644 index 00000000..07ef9a14 --- /dev/null +++ b/tests/wpt-harness/expectations/fetch/api/redirect/redirect-location-escape.tentative.any.js.json @@ -0,0 +1,17 @@ +{ + "Redirect to escaped UTF-8": { + "status": "FAIL" + }, + "Redirect to unescaped UTF-8": { + "status": "FAIL" + }, + "Redirect to escaped and unescaped UTF-8": { + "status": "FAIL" + }, + "Escaping produces double-percent": { + "status": "FAIL" + }, + "Redirect to invalid UTF-8": { + "status": "FAIL" + } +} \ No newline at end of file diff --git a/tests/wpt-harness/expectations/fetch/api/redirect/redirect-location.any.js.json b/tests/wpt-harness/expectations/fetch/api/redirect/redirect-location.any.js.json new file mode 100644 index 00000000..c844f748 --- /dev/null +++ b/tests/wpt-harness/expectations/fetch/api/redirect/redirect-location.any.js.json @@ -0,0 +1,167 @@ +{ + "Redirect 301 in \"follow\" mode without location": { + "status": "PASS" + }, + "Redirect 301 in \"manual\" mode without location": { + "status": "FAIL" + }, + "Redirect 301 in \"follow\" mode with valid location": { + "status": "FAIL" + }, + "Redirect 301 in \"manual\" mode with valid location": { + "status": "FAIL" + }, + "Redirect 301 in \"error\" mode with valid location": { + "status": "FAIL" + }, + "Redirect 301 in \"follow\" mode with invalid location": { + "status": "FAIL" + }, + "Redirect 301 in \"manual\" mode with invalid location": { + "status": "FAIL" + }, + "Redirect 301 in \"error\" mode with invalid location": { + "status": "FAIL" + }, + "Redirect 301 in \"follow\" mode with data location": { + "status": "FAIL" + }, + "Redirect 301 in \"manual\" mode with data location": { + "status": "FAIL" + }, + "Redirect 301 in \"error\" mode with data location": { + "status": "FAIL" + }, + "Redirect 302 in \"follow\" mode without location": { + "status": "PASS" + }, + "Redirect 302 in \"manual\" mode without location": { + "status": "FAIL" + }, + "Redirect 302 in \"follow\" mode with valid location": { + "status": "FAIL" + }, + "Redirect 302 in \"manual\" mode with valid location": { + "status": "FAIL" + }, + "Redirect 302 in \"error\" mode with valid location": { + "status": "FAIL" + }, + "Redirect 302 in \"follow\" mode with invalid location": { + "status": "FAIL" + }, + "Redirect 302 in \"manual\" mode with invalid location": { + "status": "FAIL" + }, + "Redirect 302 in \"error\" mode with invalid location": { + "status": "FAIL" + }, + "Redirect 302 in \"follow\" mode with data location": { + "status": "FAIL" + }, + "Redirect 302 in \"manual\" mode with data location": { + "status": "FAIL" + }, + "Redirect 302 in \"error\" mode with data location": { + "status": "FAIL" + }, + "Redirect 303 in \"follow\" mode without location": { + "status": "PASS" + }, + "Redirect 303 in \"manual\" mode without location": { + "status": "FAIL" + }, + "Redirect 303 in \"follow\" mode with valid location": { + "status": "FAIL" + }, + "Redirect 303 in \"manual\" mode with valid location": { + "status": "FAIL" + }, + "Redirect 303 in \"error\" mode with valid location": { + "status": "FAIL" + }, + "Redirect 303 in \"follow\" mode with invalid location": { + "status": "FAIL" + }, + "Redirect 303 in \"manual\" mode with invalid location": { + "status": "FAIL" + }, + "Redirect 303 in \"error\" mode with invalid location": { + "status": "FAIL" + }, + "Redirect 303 in \"follow\" mode with data location": { + "status": "FAIL" + }, + "Redirect 303 in \"manual\" mode with data location": { + "status": "FAIL" + }, + "Redirect 303 in \"error\" mode with data location": { + "status": "FAIL" + }, + "Redirect 307 in \"follow\" mode without location": { + "status": "PASS" + }, + "Redirect 307 in \"manual\" mode without location": { + "status": "FAIL" + }, + "Redirect 307 in \"follow\" mode with valid location": { + "status": "FAIL" + }, + "Redirect 307 in \"manual\" mode with valid location": { + "status": "FAIL" + }, + "Redirect 307 in \"error\" mode with valid location": { + "status": "FAIL" + }, + "Redirect 307 in \"follow\" mode with invalid location": { + "status": "FAIL" + }, + "Redirect 307 in \"manual\" mode with invalid location": { + "status": "FAIL" + }, + "Redirect 307 in \"error\" mode with invalid location": { + "status": "FAIL" + }, + "Redirect 307 in \"follow\" mode with data location": { + "status": "FAIL" + }, + "Redirect 307 in \"manual\" mode with data location": { + "status": "FAIL" + }, + "Redirect 307 in \"error\" mode with data location": { + "status": "FAIL" + }, + "Redirect 308 in \"follow\" mode without location": { + "status": "PASS" + }, + "Redirect 308 in \"manual\" mode without location": { + "status": "FAIL" + }, + "Redirect 308 in \"follow\" mode with valid location": { + "status": "FAIL" + }, + "Redirect 308 in \"manual\" mode with valid location": { + "status": "FAIL" + }, + "Redirect 308 in \"error\" mode with valid location": { + "status": "FAIL" + }, + "Redirect 308 in \"follow\" mode with invalid location": { + "status": "FAIL" + }, + "Redirect 308 in \"manual\" mode with invalid location": { + "status": "FAIL" + }, + "Redirect 308 in \"error\" mode with invalid location": { + "status": "FAIL" + }, + "Redirect 308 in \"follow\" mode with data location": { + "status": "FAIL" + }, + "Redirect 308 in \"manual\" mode with data location": { + "status": "FAIL" + }, + "Redirect 308 in \"error\" mode with data location": { + "status": "FAIL" + } +} \ No newline at end of file diff --git a/tests/wpt-harness/expectations/fetch/api/redirect/redirect-method.any.js.json b/tests/wpt-harness/expectations/fetch/api/redirect/redirect-method.any.js.json new file mode 100644 index 00000000..97ccead0 --- /dev/null +++ b/tests/wpt-harness/expectations/fetch/api/redirect/redirect-method.any.js.json @@ -0,0 +1,47 @@ +{ + "Response.redirected should be false on not-redirected responses": { + "status": "PASS" + }, + "Redirect 301 with GET": { + "status": "FAIL" + }, + "Redirect 301 with POST": { + "status": "FAIL" + }, + "Redirect 301 with HEAD": { + "status": "FAIL" + }, + "Redirect 302 with GET": { + "status": "FAIL" + }, + "Redirect 302 with POST": { + "status": "FAIL" + }, + "Redirect 302 with HEAD": { + "status": "FAIL" + }, + "Redirect 303 with GET": { + "status": "FAIL" + }, + "Redirect 303 with POST": { + "status": "FAIL" + }, + "Redirect 303 with HEAD": { + "status": "FAIL" + }, + "Redirect 303 with TESTING": { + "status": "FAIL" + }, + "Redirect 307 with GET": { + "status": "FAIL" + }, + "Redirect 307 with POST (string body)": { + "status": "FAIL" + }, + "Redirect 307 with POST (blob body)": { + "status": "FAIL" + }, + "Redirect 307 with HEAD": { + "status": "FAIL" + } +} \ No newline at end of file diff --git a/tests/wpt-harness/expectations/fetch/api/redirect/redirect-mode.any.js.json b/tests/wpt-harness/expectations/fetch/api/redirect/redirect-mode.any.js.json new file mode 100644 index 00000000..fa8def8e --- /dev/null +++ b/tests/wpt-harness/expectations/fetch/api/redirect/redirect-mode.any.js.json @@ -0,0 +1,185 @@ +{ + "same-origin redirect 301 in error redirect and cors mode": { + "status": "FAIL" + }, + "same-origin redirect 301 in error redirect and no-cors mode": { + "status": "FAIL" + }, + "same-origin redirect 301 in manual redirect and cors mode": { + "status": "FAIL" + }, + "same-origin redirect 301 in manual redirect and no-cors mode": { + "status": "FAIL" + }, + "same-origin redirect 301 in follow redirect and cors mode": { + "status": "FAIL" + }, + "same-origin redirect 301 in follow redirect and no-cors mode": { + "status": "FAIL" + }, + "same-origin redirect 302 in error redirect and cors mode": { + "status": "FAIL" + }, + "same-origin redirect 302 in error redirect and no-cors mode": { + "status": "FAIL" + }, + "same-origin redirect 302 in manual redirect and cors mode": { + "status": "FAIL" + }, + "same-origin redirect 302 in manual redirect and no-cors mode": { + "status": "FAIL" + }, + "same-origin redirect 302 in follow redirect and cors mode": { + "status": "FAIL" + }, + "same-origin redirect 302 in follow redirect and no-cors mode": { + "status": "FAIL" + }, + "same-origin redirect 303 in error redirect and cors mode": { + "status": "FAIL" + }, + "same-origin redirect 303 in error redirect and no-cors mode": { + "status": "FAIL" + }, + "same-origin redirect 303 in manual redirect and cors mode": { + "status": "FAIL" + }, + "same-origin redirect 303 in manual redirect and no-cors mode": { + "status": "FAIL" + }, + "same-origin redirect 303 in follow redirect and cors mode": { + "status": "FAIL" + }, + "same-origin redirect 303 in follow redirect and no-cors mode": { + "status": "FAIL" + }, + "same-origin redirect 307 in error redirect and cors mode": { + "status": "FAIL" + }, + "same-origin redirect 307 in error redirect and no-cors mode": { + "status": "FAIL" + }, + "same-origin redirect 307 in manual redirect and cors mode": { + "status": "FAIL" + }, + "same-origin redirect 307 in manual redirect and no-cors mode": { + "status": "FAIL" + }, + "same-origin redirect 307 in follow redirect and cors mode": { + "status": "FAIL" + }, + "same-origin redirect 307 in follow redirect and no-cors mode": { + "status": "FAIL" + }, + "same-origin redirect 308 in error redirect and cors mode": { + "status": "FAIL" + }, + "same-origin redirect 308 in error redirect and no-cors mode": { + "status": "FAIL" + }, + "same-origin redirect 308 in manual redirect and cors mode": { + "status": "FAIL" + }, + "same-origin redirect 308 in manual redirect and no-cors mode": { + "status": "FAIL" + }, + "same-origin redirect 308 in follow redirect and cors mode": { + "status": "FAIL" + }, + "same-origin redirect 308 in follow redirect and no-cors mode": { + "status": "FAIL" + }, + "cross-origin redirect 301 in error redirect and cors mode": { + "status": "FAIL" + }, + "cross-origin redirect 301 in error redirect and no-cors mode": { + "status": "FAIL" + }, + "cross-origin redirect 301 in manual redirect and cors mode": { + "status": "FAIL" + }, + "cross-origin redirect 301 in manual redirect and no-cors mode": { + "status": "FAIL" + }, + "cross-origin redirect 301 in follow redirect and cors mode": { + "status": "FAIL" + }, + "cross-origin redirect 301 in follow redirect and no-cors mode": { + "status": "FAIL" + }, + "cross-origin redirect 302 in error redirect and cors mode": { + "status": "FAIL" + }, + "cross-origin redirect 302 in error redirect and no-cors mode": { + "status": "FAIL" + }, + "cross-origin redirect 302 in manual redirect and cors mode": { + "status": "FAIL" + }, + "cross-origin redirect 302 in manual redirect and no-cors mode": { + "status": "FAIL" + }, + "cross-origin redirect 302 in follow redirect and cors mode": { + "status": "FAIL" + }, + "cross-origin redirect 302 in follow redirect and no-cors mode": { + "status": "FAIL" + }, + "cross-origin redirect 303 in error redirect and cors mode": { + "status": "FAIL" + }, + "cross-origin redirect 303 in error redirect and no-cors mode": { + "status": "FAIL" + }, + "cross-origin redirect 303 in manual redirect and cors mode": { + "status": "FAIL" + }, + "cross-origin redirect 303 in manual redirect and no-cors mode": { + "status": "FAIL" + }, + "cross-origin redirect 303 in follow redirect and cors mode": { + "status": "FAIL" + }, + "cross-origin redirect 303 in follow redirect and no-cors mode": { + "status": "FAIL" + }, + "cross-origin redirect 307 in error redirect and cors mode": { + "status": "FAIL" + }, + "cross-origin redirect 307 in error redirect and no-cors mode": { + "status": "FAIL" + }, + "cross-origin redirect 307 in manual redirect and cors mode": { + "status": "FAIL" + }, + "cross-origin redirect 307 in manual redirect and no-cors mode": { + "status": "FAIL" + }, + "cross-origin redirect 307 in follow redirect and cors mode": { + "status": "FAIL" + }, + "cross-origin redirect 307 in follow redirect and no-cors mode": { + "status": "FAIL" + }, + "cross-origin redirect 308 in error redirect and cors mode": { + "status": "FAIL" + }, + "cross-origin redirect 308 in error redirect and no-cors mode": { + "status": "FAIL" + }, + "cross-origin redirect 308 in manual redirect and cors mode": { + "status": "FAIL" + }, + "cross-origin redirect 308 in manual redirect and no-cors mode": { + "status": "FAIL" + }, + "cross-origin redirect 308 in follow redirect and cors mode": { + "status": "FAIL" + }, + "cross-origin redirect 308 in follow redirect and no-cors mode": { + "status": "FAIL" + }, + "manual redirect with a CORS error should be rejected": { + "status": "FAIL" + } +} \ No newline at end of file diff --git a/tests/wpt-harness/expectations/fetch/api/redirect/redirect-origin.any.js.json b/tests/wpt-harness/expectations/fetch/api/redirect/redirect-origin.any.js.json new file mode 100644 index 00000000..4b87af52 --- /dev/null +++ b/tests/wpt-harness/expectations/fetch/api/redirect/redirect-origin.any.js.json @@ -0,0 +1,122 @@ +{ + "[GET] Redirect 301 Same origin to same origin": { + "status": "FAIL" + }, + "[GET] Redirect 301 Same origin to other origin": { + "status": "FAIL" + }, + "[GET] Redirect 301 Other origin to other origin": { + "status": "FAIL" + }, + "[GET] Redirect 301 Other origin to same origin": { + "status": "FAIL" + }, + "[POST] Redirect 301 Same origin to same origin": { + "status": "FAIL" + }, + "[POST] Redirect 301 Same origin to other origin": { + "status": "FAIL" + }, + "[POST] Redirect 301 Other origin to other origin": { + "status": "FAIL" + }, + "[POST] Redirect 301 Other origin to same origin": { + "status": "FAIL" + }, + "[GET] Redirect 302 Same origin to same origin": { + "status": "FAIL" + }, + "[GET] Redirect 302 Same origin to other origin": { + "status": "FAIL" + }, + "[GET] Redirect 302 Other origin to other origin": { + "status": "FAIL" + }, + "[GET] Redirect 302 Other origin to same origin": { + "status": "FAIL" + }, + "[POST] Redirect 302 Same origin to same origin": { + "status": "FAIL" + }, + "[POST] Redirect 302 Same origin to other origin": { + "status": "FAIL" + }, + "[POST] Redirect 302 Other origin to other origin": { + "status": "FAIL" + }, + "[POST] Redirect 302 Other origin to same origin": { + "status": "FAIL" + }, + "[GET] Redirect 303 Same origin to same origin": { + "status": "FAIL" + }, + "[GET] Redirect 303 Same origin to other origin": { + "status": "FAIL" + }, + "[GET] Redirect 303 Other origin to other origin": { + "status": "FAIL" + }, + "[GET] Redirect 303 Other origin to same origin": { + "status": "FAIL" + }, + "[POST] Redirect 303 Same origin to same origin": { + "status": "FAIL" + }, + "[POST] Redirect 303 Same origin to other origin": { + "status": "FAIL" + }, + "[POST] Redirect 303 Other origin to other origin": { + "status": "FAIL" + }, + "[POST] Redirect 303 Other origin to same origin": { + "status": "FAIL" + }, + "[GET] Redirect 307 Same origin to same origin": { + "status": "FAIL" + }, + "[GET] Redirect 307 Same origin to other origin": { + "status": "FAIL" + }, + "[GET] Redirect 307 Other origin to other origin": { + "status": "FAIL" + }, + "[GET] Redirect 307 Other origin to same origin": { + "status": "FAIL" + }, + "[POST] Redirect 307 Same origin to same origin": { + "status": "FAIL" + }, + "[POST] Redirect 307 Same origin to other origin": { + "status": "FAIL" + }, + "[POST] Redirect 307 Other origin to other origin": { + "status": "FAIL" + }, + "[POST] Redirect 307 Other origin to same origin": { + "status": "FAIL" + }, + "[GET] Redirect 308 Same origin to same origin": { + "status": "FAIL" + }, + "[GET] Redirect 308 Same origin to other origin": { + "status": "FAIL" + }, + "[GET] Redirect 308 Other origin to other origin": { + "status": "FAIL" + }, + "[GET] Redirect 308 Other origin to same origin": { + "status": "FAIL" + }, + "[POST] Redirect 308 Same origin to same origin": { + "status": "FAIL" + }, + "[POST] Redirect 308 Same origin to other origin": { + "status": "FAIL" + }, + "[POST] Redirect 308 Other origin to other origin": { + "status": "FAIL" + }, + "[POST] Redirect 308 Other origin to same origin": { + "status": "FAIL" + } +} \ No newline at end of file diff --git a/tests/wpt-harness/expectations/fetch/api/redirect/redirect-referrer-override.any.js.json b/tests/wpt-harness/expectations/fetch/api/redirect/redirect-referrer-override.any.js.json new file mode 100644 index 00000000..b78241ae --- /dev/null +++ b/tests/wpt-harness/expectations/fetch/api/redirect/redirect-referrer-override.any.js.json @@ -0,0 +1,386 @@ +{ + "Same origin redirection, no-referrer init, no-referrer redirect header ": { + "status": "FAIL" + }, + "Cross origin redirection, no-referrer init, no-referrer redirect header ": { + "status": "FAIL" + }, + "Same origin redirection, no-referrer init, no-referrer-when-downgrade redirect header ": { + "status": "FAIL" + }, + "Cross origin redirection, no-referrer init, no-referrer-when-downgrade redirect header ": { + "status": "FAIL" + }, + "Same origin redirection, no-referrer init, origin redirect header ": { + "status": "FAIL" + }, + "Cross origin redirection, no-referrer init, origin redirect header ": { + "status": "FAIL" + }, + "Same origin redirection, no-referrer init, origin-when-cross-origin redirect header ": { + "status": "FAIL" + }, + "Cross origin redirection, no-referrer init, origin-when-cross-origin redirect header ": { + "status": "FAIL" + }, + "Same origin redirection, no-referrer init, same-origin redirect header ": { + "status": "FAIL" + }, + "Cross origin redirection, no-referrer init, same-origin redirect header ": { + "status": "FAIL" + }, + "Same origin redirection, no-referrer init, strict-origin redirect header ": { + "status": "FAIL" + }, + "Cross origin redirection, no-referrer init, strict-origin redirect header ": { + "status": "FAIL" + }, + "Same origin redirection, no-referrer init, strict-origin-when-cross-origin redirect header ": { + "status": "FAIL" + }, + "Cross origin redirection, no-referrer init, strict-origin-when-cross-origin redirect header ": { + "status": "FAIL" + }, + "Same origin redirection, no-referrer init, unsafe-url redirect header ": { + "status": "FAIL" + }, + "Cross origin redirection, no-referrer init, unsafe-url redirect header ": { + "status": "FAIL" + }, + "Same origin redirection, no-referrer-when-downgrade init, no-referrer redirect header ": { + "status": "FAIL" + }, + "Cross origin redirection, no-referrer-when-downgrade init, no-referrer redirect header ": { + "status": "FAIL" + }, + "Same origin redirection, no-referrer-when-downgrade init, no-referrer-when-downgrade redirect header ": { + "status": "FAIL" + }, + "Cross origin redirection, no-referrer-when-downgrade init, no-referrer-when-downgrade redirect header ": { + "status": "FAIL" + }, + "Same origin redirection, no-referrer-when-downgrade init, origin redirect header ": { + "status": "FAIL" + }, + "Cross origin redirection, no-referrer-when-downgrade init, origin redirect header ": { + "status": "FAIL" + }, + "Same origin redirection, no-referrer-when-downgrade init, origin-when-cross-origin redirect header ": { + "status": "FAIL" + }, + "Cross origin redirection, no-referrer-when-downgrade init, origin-when-cross-origin redirect header ": { + "status": "FAIL" + }, + "Same origin redirection, no-referrer-when-downgrade init, same-origin redirect header ": { + "status": "FAIL" + }, + "Cross origin redirection, no-referrer-when-downgrade init, same-origin redirect header ": { + "status": "FAIL" + }, + "Same origin redirection, no-referrer-when-downgrade init, strict-origin redirect header ": { + "status": "FAIL" + }, + "Cross origin redirection, no-referrer-when-downgrade init, strict-origin redirect header ": { + "status": "FAIL" + }, + "Same origin redirection, no-referrer-when-downgrade init, strict-origin-when-cross-origin redirect header ": { + "status": "FAIL" + }, + "Cross origin redirection, no-referrer-when-downgrade init, strict-origin-when-cross-origin redirect header ": { + "status": "FAIL" + }, + "Same origin redirection, no-referrer-when-downgrade init, unsafe-url redirect header ": { + "status": "FAIL" + }, + "Cross origin redirection, no-referrer-when-downgrade init, unsafe-url redirect header ": { + "status": "FAIL" + }, + "Same origin redirection, origin init, no-referrer redirect header ": { + "status": "FAIL" + }, + "Cross origin redirection, origin init, no-referrer redirect header ": { + "status": "FAIL" + }, + "Same origin redirection, origin init, no-referrer-when-downgrade redirect header ": { + "status": "FAIL" + }, + "Cross origin redirection, origin init, no-referrer-when-downgrade redirect header ": { + "status": "FAIL" + }, + "Same origin redirection, origin init, origin redirect header ": { + "status": "FAIL" + }, + "Cross origin redirection, origin init, origin redirect header ": { + "status": "FAIL" + }, + "Same origin redirection, origin init, origin-when-cross-origin redirect header ": { + "status": "FAIL" + }, + "Cross origin redirection, origin init, origin-when-cross-origin redirect header ": { + "status": "FAIL" + }, + "Same origin redirection, origin init, same-origin redirect header ": { + "status": "FAIL" + }, + "Cross origin redirection, origin init, same-origin redirect header ": { + "status": "FAIL" + }, + "Same origin redirection, origin init, strict-origin redirect header ": { + "status": "FAIL" + }, + "Cross origin redirection, origin init, strict-origin redirect header ": { + "status": "FAIL" + }, + "Same origin redirection, origin init, strict-origin-when-cross-origin redirect header ": { + "status": "FAIL" + }, + "Cross origin redirection, origin init, strict-origin-when-cross-origin redirect header ": { + "status": "FAIL" + }, + "Same origin redirection, origin init, unsafe-url redirect header ": { + "status": "FAIL" + }, + "Cross origin redirection, origin init, unsafe-url redirect header ": { + "status": "FAIL" + }, + "Same origin redirection, origin-when-cross-origin init, no-referrer redirect header ": { + "status": "FAIL" + }, + "Cross origin redirection, origin-when-cross-origin init, no-referrer redirect header ": { + "status": "FAIL" + }, + "Same origin redirection, origin-when-cross-origin init, no-referrer-when-downgrade redirect header ": { + "status": "FAIL" + }, + "Cross origin redirection, origin-when-cross-origin init, no-referrer-when-downgrade redirect header ": { + "status": "FAIL" + }, + "Same origin redirection, origin-when-cross-origin init, origin redirect header ": { + "status": "FAIL" + }, + "Cross origin redirection, origin-when-cross-origin init, origin redirect header ": { + "status": "FAIL" + }, + "Same origin redirection, origin-when-cross-origin init, origin-when-cross-origin redirect header ": { + "status": "FAIL" + }, + "Cross origin redirection, origin-when-cross-origin init, origin-when-cross-origin redirect header ": { + "status": "FAIL" + }, + "Same origin redirection, origin-when-cross-origin init, same-origin redirect header ": { + "status": "FAIL" + }, + "Cross origin redirection, origin-when-cross-origin init, same-origin redirect header ": { + "status": "FAIL" + }, + "Same origin redirection, origin-when-cross-origin init, strict-origin redirect header ": { + "status": "FAIL" + }, + "Cross origin redirection, origin-when-cross-origin init, strict-origin redirect header ": { + "status": "FAIL" + }, + "Same origin redirection, origin-when-cross-origin init, strict-origin-when-cross-origin redirect header ": { + "status": "FAIL" + }, + "Cross origin redirection, origin-when-cross-origin init, strict-origin-when-cross-origin redirect header ": { + "status": "FAIL" + }, + "Same origin redirection, origin-when-cross-origin init, unsafe-url redirect header ": { + "status": "FAIL" + }, + "Cross origin redirection, origin-when-cross-origin init, unsafe-url redirect header ": { + "status": "FAIL" + }, + "Same origin redirection, same-origin init, no-referrer redirect header ": { + "status": "FAIL" + }, + "Cross origin redirection, same-origin init, no-referrer redirect header ": { + "status": "FAIL" + }, + "Same origin redirection, same-origin init, no-referrer-when-downgrade redirect header ": { + "status": "FAIL" + }, + "Cross origin redirection, same-origin init, no-referrer-when-downgrade redirect header ": { + "status": "FAIL" + }, + "Same origin redirection, same-origin init, origin redirect header ": { + "status": "FAIL" + }, + "Cross origin redirection, same-origin init, origin redirect header ": { + "status": "FAIL" + }, + "Same origin redirection, same-origin init, origin-when-cross-origin redirect header ": { + "status": "FAIL" + }, + "Cross origin redirection, same-origin init, origin-when-cross-origin redirect header ": { + "status": "FAIL" + }, + "Same origin redirection, same-origin init, same-origin redirect header ": { + "status": "FAIL" + }, + "Cross origin redirection, same-origin init, same-origin redirect header ": { + "status": "FAIL" + }, + "Same origin redirection, same-origin init, strict-origin redirect header ": { + "status": "FAIL" + }, + "Cross origin redirection, same-origin init, strict-origin redirect header ": { + "status": "FAIL" + }, + "Same origin redirection, same-origin init, strict-origin-when-cross-origin redirect header ": { + "status": "FAIL" + }, + "Cross origin redirection, same-origin init, strict-origin-when-cross-origin redirect header ": { + "status": "FAIL" + }, + "Same origin redirection, same-origin init, unsafe-url redirect header ": { + "status": "FAIL" + }, + "Cross origin redirection, same-origin init, unsafe-url redirect header ": { + "status": "FAIL" + }, + "Same origin redirection, strict-origin init, no-referrer redirect header ": { + "status": "FAIL" + }, + "Cross origin redirection, strict-origin init, no-referrer redirect header ": { + "status": "FAIL" + }, + "Same origin redirection, strict-origin init, no-referrer-when-downgrade redirect header ": { + "status": "FAIL" + }, + "Cross origin redirection, strict-origin init, no-referrer-when-downgrade redirect header ": { + "status": "FAIL" + }, + "Same origin redirection, strict-origin init, origin redirect header ": { + "status": "FAIL" + }, + "Cross origin redirection, strict-origin init, origin redirect header ": { + "status": "FAIL" + }, + "Same origin redirection, strict-origin init, origin-when-cross-origin redirect header ": { + "status": "FAIL" + }, + "Cross origin redirection, strict-origin init, origin-when-cross-origin redirect header ": { + "status": "FAIL" + }, + "Same origin redirection, strict-origin init, same-origin redirect header ": { + "status": "FAIL" + }, + "Cross origin redirection, strict-origin init, same-origin redirect header ": { + "status": "FAIL" + }, + "Same origin redirection, strict-origin init, strict-origin redirect header ": { + "status": "FAIL" + }, + "Cross origin redirection, strict-origin init, strict-origin redirect header ": { + "status": "FAIL" + }, + "Same origin redirection, strict-origin init, strict-origin-when-cross-origin redirect header ": { + "status": "FAIL" + }, + "Cross origin redirection, strict-origin init, strict-origin-when-cross-origin redirect header ": { + "status": "FAIL" + }, + "Same origin redirection, strict-origin init, unsafe-url redirect header ": { + "status": "FAIL" + }, + "Cross origin redirection, strict-origin init, unsafe-url redirect header ": { + "status": "FAIL" + }, + "Same origin redirection, strict-origin-when-cross-origin init, no-referrer redirect header ": { + "status": "FAIL" + }, + "Cross origin redirection, strict-origin-when-cross-origin init, no-referrer redirect header ": { + "status": "FAIL" + }, + "Same origin redirection, strict-origin-when-cross-origin init, no-referrer-when-downgrade redirect header ": { + "status": "FAIL" + }, + "Cross origin redirection, strict-origin-when-cross-origin init, no-referrer-when-downgrade redirect header ": { + "status": "FAIL" + }, + "Same origin redirection, strict-origin-when-cross-origin init, origin redirect header ": { + "status": "FAIL" + }, + "Cross origin redirection, strict-origin-when-cross-origin init, origin redirect header ": { + "status": "FAIL" + }, + "Same origin redirection, strict-origin-when-cross-origin init, origin-when-cross-origin redirect header ": { + "status": "FAIL" + }, + "Cross origin redirection, strict-origin-when-cross-origin init, origin-when-cross-origin redirect header ": { + "status": "FAIL" + }, + "Same origin redirection, strict-origin-when-cross-origin init, same-origin redirect header ": { + "status": "FAIL" + }, + "Cross origin redirection, strict-origin-when-cross-origin init, same-origin redirect header ": { + "status": "FAIL" + }, + "Same origin redirection, strict-origin-when-cross-origin init, strict-origin redirect header ": { + "status": "FAIL" + }, + "Cross origin redirection, strict-origin-when-cross-origin init, strict-origin redirect header ": { + "status": "FAIL" + }, + "Same origin redirection, strict-origin-when-cross-origin init, strict-origin-when-cross-origin redirect header ": { + "status": "FAIL" + }, + "Cross origin redirection, strict-origin-when-cross-origin init, strict-origin-when-cross-origin redirect header ": { + "status": "FAIL" + }, + "Same origin redirection, strict-origin-when-cross-origin init, unsafe-url redirect header ": { + "status": "FAIL" + }, + "Cross origin redirection, strict-origin-when-cross-origin init, unsafe-url redirect header ": { + "status": "FAIL" + }, + "Same origin redirection, unsafe-url init, no-referrer redirect header ": { + "status": "FAIL" + }, + "Cross origin redirection, unsafe-url init, no-referrer redirect header ": { + "status": "FAIL" + }, + "Same origin redirection, unsafe-url init, no-referrer-when-downgrade redirect header ": { + "status": "FAIL" + }, + "Cross origin redirection, unsafe-url init, no-referrer-when-downgrade redirect header ": { + "status": "FAIL" + }, + "Same origin redirection, unsafe-url init, origin redirect header ": { + "status": "FAIL" + }, + "Cross origin redirection, unsafe-url init, origin redirect header ": { + "status": "FAIL" + }, + "Same origin redirection, unsafe-url init, origin-when-cross-origin redirect header ": { + "status": "FAIL" + }, + "Cross origin redirection, unsafe-url init, origin-when-cross-origin redirect header ": { + "status": "FAIL" + }, + "Same origin redirection, unsafe-url init, same-origin redirect header ": { + "status": "FAIL" + }, + "Cross origin redirection, unsafe-url init, same-origin redirect header ": { + "status": "FAIL" + }, + "Same origin redirection, unsafe-url init, strict-origin redirect header ": { + "status": "FAIL" + }, + "Cross origin redirection, unsafe-url init, strict-origin redirect header ": { + "status": "FAIL" + }, + "Same origin redirection, unsafe-url init, strict-origin-when-cross-origin redirect header ": { + "status": "FAIL" + }, + "Cross origin redirection, unsafe-url init, strict-origin-when-cross-origin redirect header ": { + "status": "FAIL" + }, + "Same origin redirection, unsafe-url init, unsafe-url redirect header ": { + "status": "FAIL" + }, + "Cross origin redirection, unsafe-url init, unsafe-url redirect header ": { + "status": "FAIL" + } +} \ No newline at end of file diff --git a/tests/wpt-harness/expectations/fetch/api/redirect/redirect-referrer.any.js.json b/tests/wpt-harness/expectations/fetch/api/redirect/redirect-referrer.any.js.json new file mode 100644 index 00000000..86a01459 --- /dev/null +++ b/tests/wpt-harness/expectations/fetch/api/redirect/redirect-referrer.any.js.json @@ -0,0 +1,98 @@ +{ + "Same origin redirection, empty init, unsafe-url redirect header ": { + "status": "FAIL" + }, + "Same origin redirection, empty init, no-referrer-when-downgrade redirect header ": { + "status": "FAIL" + }, + "Same origin redirection, empty init, same-origin redirect header ": { + "status": "FAIL" + }, + "Same origin redirection, empty init, origin redirect header ": { + "status": "FAIL" + }, + "Same origin redirection, empty init, origin-when-cross-origin redirect header ": { + "status": "FAIL" + }, + "Same origin redirection, empty init, no-referrer redirect header ": { + "status": "FAIL" + }, + "Same origin redirection, empty init, strict-origin redirect header ": { + "status": "FAIL" + }, + "Same origin redirection, empty init, strict-origin-when-cross-origin redirect header ": { + "status": "FAIL" + }, + "Same origin redirection, empty redirect header, unsafe-url init ": { + "status": "FAIL" + }, + "Same origin redirection, empty redirect header, no-referrer-when-downgrade init ": { + "status": "FAIL" + }, + "Same origin redirection, empty redirect header, same-origin init ": { + "status": "FAIL" + }, + "Same origin redirection, empty redirect header, origin init ": { + "status": "FAIL" + }, + "Same origin redirection, empty redirect header, origin-when-cross-origin init ": { + "status": "FAIL" + }, + "Same origin redirection, empty redirect header, no-referrer init ": { + "status": "FAIL" + }, + "Same origin redirection, empty redirect header, strict-origin init ": { + "status": "FAIL" + }, + "Same origin redirection, empty redirect header, strict-origin-when-cross-origin init ": { + "status": "FAIL" + }, + "Cross origin redirection, empty init, unsafe-url redirect header ": { + "status": "FAIL" + }, + "Cross origin redirection, empty init, no-referrer-when-downgrade redirect header ": { + "status": "FAIL" + }, + "Cross origin redirection, empty init, same-origin redirect header ": { + "status": "FAIL" + }, + "Cross origin redirection, empty init, origin redirect header ": { + "status": "FAIL" + }, + "Cross origin redirection, empty init, origin-when-cross-origin redirect header ": { + "status": "FAIL" + }, + "Cross origin redirection, empty init, no-referrer redirect header ": { + "status": "FAIL" + }, + "Cross origin redirection, empty init, strict-origin redirect header ": { + "status": "FAIL" + }, + "Cross origin redirection, empty init, strict-origin-when-cross-origin redirect header ": { + "status": "FAIL" + }, + "Cross origin redirection, empty redirect header, unsafe-url init ": { + "status": "FAIL" + }, + "Cross origin redirection, empty redirect header, no-referrer-when-downgrade init ": { + "status": "FAIL" + }, + "Cross origin redirection, empty redirect header, same-origin init ": { + "status": "FAIL" + }, + "Cross origin redirection, empty redirect header, origin init ": { + "status": "FAIL" + }, + "Cross origin redirection, empty redirect header, origin-when-cross-origin init ": { + "status": "FAIL" + }, + "Cross origin redirection, empty redirect header, no-referrer init ": { + "status": "FAIL" + }, + "Cross origin redirection, empty redirect header, strict-origin init ": { + "status": "FAIL" + }, + "Cross origin redirection, empty redirect header, strict-origin-when-cross-origin init ": { + "status": "FAIL" + } +} \ No newline at end of file diff --git a/tests/wpt-harness/expectations/fetch/api/redirect/redirect-schemes.any.js.json b/tests/wpt-harness/expectations/fetch/api/redirect/redirect-schemes.any.js.json new file mode 100644 index 00000000..22950009 --- /dev/null +++ b/tests/wpt-harness/expectations/fetch/api/redirect/redirect-schemes.any.js.json @@ -0,0 +1,20 @@ +{ + "redirect-schemes": { + "status": "FAIL" + }, + "redirect-schemes 1": { + "status": "FAIL" + }, + "redirect-schemes 2": { + "status": "FAIL" + }, + "redirect-schemes 3": { + "status": "FAIL" + }, + "redirect-schemes 4": { + "status": "FAIL" + }, + "redirect-schemes 5": { + "status": "FAIL" + } +} \ No newline at end of file diff --git a/tests/wpt-harness/expectations/fetch/api/redirect/redirect-to-dataurl.any.js.json b/tests/wpt-harness/expectations/fetch/api/redirect/redirect-to-dataurl.any.js.json new file mode 100644 index 00000000..a288574c --- /dev/null +++ b/tests/wpt-harness/expectations/fetch/api/redirect/redirect-to-dataurl.any.js.json @@ -0,0 +1,17 @@ +{ + "Testing data URL loading after same-origin redirection (cors mode)": { + "status": "FAIL" + }, + "Testing data URL loading after same-origin redirection (no-cors mode)": { + "status": "FAIL" + }, + "Testing data URL loading after same-origin redirection (same-origin mode)": { + "status": "FAIL" + }, + "Testing data URL loading after cross-origin redirection (cors mode)": { + "status": "FAIL" + }, + "Testing data URL loading after cross-origin redirection (no-cors mode)": { + "status": "FAIL" + } +} \ No newline at end of file diff --git a/tests/wpt-harness/expectations/fetch/api/redirect/redirect-upload.h2.any.js.json b/tests/wpt-harness/expectations/fetch/api/redirect/redirect-upload.h2.any.js.json new file mode 100644 index 00000000..3b8e100f --- /dev/null +++ b/tests/wpt-harness/expectations/fetch/api/redirect/redirect-upload.h2.any.js.json @@ -0,0 +1,17 @@ +{ + "Fetch upload streaming should be accepted on 303": { + "status": "FAIL" + }, + "Fetch upload streaming should fail on 301": { + "status": "FAIL" + }, + "Fetch upload streaming should fail on 302": { + "status": "FAIL" + }, + "Fetch upload streaming should fail on 307": { + "status": "FAIL" + }, + "Fetch upload streaming should fail on 308": { + "status": "FAIL" + } +} \ No newline at end of file diff --git a/tests/wpt-harness/expectations/fetch/api/request/request-constructor-init-body-override.any.js.json b/tests/wpt-harness/expectations/fetch/api/request/request-constructor-init-body-override.any.js.json new file mode 100644 index 00000000..ce0d8384 --- /dev/null +++ b/tests/wpt-harness/expectations/fetch/api/request/request-constructor-init-body-override.any.js.json @@ -0,0 +1,5 @@ +{ + "Check that the body of a new request can be overridden when created from an existing Request object": { + "status": "PASS" + } +} \ No newline at end of file diff --git a/tests/wpt-harness/expectations/fetch/api/request/request-consume.any.js.json b/tests/wpt-harness/expectations/fetch/api/request/request-consume.any.js.json index 285e6712..29eb926e 100644 --- a/tests/wpt-harness/expectations/fetch/api/request/request-consume.any.js.json +++ b/tests/wpt-harness/expectations/fetch/api/request/request-consume.any.js.json @@ -8,6 +8,9 @@ "Consume String request's body as arrayBuffer": { "status": "PASS" }, + "Consume String request's body as bytes": { + "status": "FAIL" + }, "Consume String request's body as JSON": { "status": "PASS" }, @@ -20,6 +23,9 @@ "Consume ArrayBuffer request's body as arrayBuffer": { "status": "PASS" }, + "Consume ArrayBuffer request's body as bytes": { + "status": "FAIL" + }, "Consume ArrayBuffer request's body as JSON": { "status": "PASS" }, @@ -32,6 +38,9 @@ "Consume Uint8Array request's body as arrayBuffer": { "status": "PASS" }, + "Consume Uint8Array request's body as bytes": { + "status": "FAIL" + }, "Consume Uint8Array request's body as JSON": { "status": "PASS" }, @@ -44,6 +53,9 @@ "Consume Int8Array request's body as arrayBuffer": { "status": "PASS" }, + "Consume Int8Array request's body as bytes": { + "status": "FAIL" + }, "Consume Int8Array request's body as JSON": { "status": "PASS" }, @@ -56,6 +68,9 @@ "Consume Float32Array request's body as arrayBuffer": { "status": "PASS" }, + "Consume Float32Array request's body as bytes": { + "status": "FAIL" + }, "Consume Float32Array request's body as JSON": { "status": "PASS" }, @@ -68,6 +83,9 @@ "Consume DataView request's body as arrayBuffer": { "status": "PASS" }, + "Consume DataView request's body as bytes": { + "status": "FAIL" + }, "Consume DataView request's body as JSON": { "status": "PASS" }, @@ -86,6 +104,9 @@ "Consume blob response's body as arrayBuffer": { "status": "FAIL" }, + "Consume blob response's body as bytes": { + "status": "FAIL" + }, "Consume blob response's body as blob (empty blob as input)": { "status": "FAIL" }, diff --git a/tests/wpt-harness/expectations/fetch/api/request/request-error.any.js.json b/tests/wpt-harness/expectations/fetch/api/request/request-error.any.js.json index 43f54690..f483406b 100644 --- a/tests/wpt-harness/expectations/fetch/api/request/request-error.any.js.json +++ b/tests/wpt-harness/expectations/fetch/api/request/request-error.any.js.json @@ -3,7 +3,7 @@ "status": "FAIL" }, "Input URL is not valid": { - "status": "FAIL" + "status": "PASS" }, "Input URL has credentials": { "status": "FAIL" diff --git a/tests/wpt-harness/expectations/fetch/api/request/request-headers.any.js.json b/tests/wpt-harness/expectations/fetch/api/request/request-headers.any.js.json index e3d8890e..bddd1281 100644 --- a/tests/wpt-harness/expectations/fetch/api/request/request-headers.any.js.json +++ b/tests/wpt-harness/expectations/fetch/api/request/request-headers.any.js.json @@ -41,9 +41,6 @@ "Adding invalid request header \"Access-Control-Request-Method: KO\"": { "status": "FAIL" }, - "Adding invalid request header \"Access-Control-Request-Private-Network: KO\"": { - "status": "FAIL" - }, "Adding invalid request header \"Connection: KO\"": { "status": "FAIL" }, diff --git a/tests/wpt-harness/expectations/fetch/api/request/request-init-priority.any.js.json b/tests/wpt-harness/expectations/fetch/api/request/request-init-priority.any.js.json new file mode 100644 index 00000000..2a3563a6 --- /dev/null +++ b/tests/wpt-harness/expectations/fetch/api/request/request-init-priority.any.js.json @@ -0,0 +1,26 @@ +{ + "new Request() with a 'high' priority does not throw an error": { + "status": "PASS" + }, + "new Request() with a 'low' priority does not throw an error": { + "status": "PASS" + }, + "new Request() with a 'auto' priority does not throw an error": { + "status": "PASS" + }, + "new Request() throws a TypeError if any of RequestInit's members' values are invalid": { + "status": "FAIL" + }, + "fetch() with a 'high' priority completes successfully": { + "status": "PASS" + }, + "fetch() with a 'low' priority completes successfully": { + "status": "PASS" + }, + "fetch() with a 'auto' priority completes successfully": { + "status": "PASS" + }, + "fetch() with an invalid priority returns a rejected promise with a TypeError": { + "status": "FAIL" + } +} \ No newline at end of file diff --git a/tests/wpt-harness/expectations/fetch/api/request/request-init-stream.any.js.json b/tests/wpt-harness/expectations/fetch/api/request/request-init-stream.any.js.json index 034bd6b1..2e19eb85 100644 --- a/tests/wpt-harness/expectations/fetch/api/request/request-init-stream.any.js.json +++ b/tests/wpt-harness/expectations/fetch/api/request/request-init-stream.any.js.json @@ -3,22 +3,22 @@ "status": "PASS" }, "Constructing a Request with a stream on which getReader() is called": { - "status": "FAIL" + "status": "PASS" }, "Constructing a Request with a stream on which read() is called": { - "status": "FAIL" + "status": "PASS" }, "Constructing a Request with a stream on which read() and releaseLock() are called": { - "status": "FAIL" + "status": "PASS" }, "Constructing a Request with a Request on which body.getReader() is called": { - "status": "FAIL" + "status": "PASS" }, "Constructing a Request with a Request on which body.getReader().read() is called": { - "status": "FAIL" + "status": "PASS" }, "Constructing a Request with a Request on which read() and releaseLock() are called": { - "status": "FAIL" + "status": "PASS" }, "It is OK to omit .duplex when the body is null.": { "status": "PASS" diff --git a/tests/wpt-harness/expectations/fetch/api/request/request-structure.any.js.json b/tests/wpt-harness/expectations/fetch/api/request/request-structure.any.js.json index 408376fd..58602918 100644 --- a/tests/wpt-harness/expectations/fetch/api/request/request-structure.any.js.json +++ b/tests/wpt-harness/expectations/fetch/api/request/request-structure.any.js.json @@ -1,6 +1,6 @@ { "Request has clone method": { - "status": "PASS" + "status": "FAIL" }, "Request has arrayBuffer method": { "status": "PASS" diff --git a/tests/wpt-harness/expectations/fetch/api/response/response-blob-realm.any.js.json b/tests/wpt-harness/expectations/fetch/api/response/response-blob-realm.any.js.json new file mode 100644 index 00000000..47621e2a --- /dev/null +++ b/tests/wpt-harness/expectations/fetch/api/response/response-blob-realm.any.js.json @@ -0,0 +1,5 @@ +{ + "realm of the Uint8Array from Response bytes()": { + "status": "FAIL" + } +} \ No newline at end of file diff --git a/tests/wpt-harness/expectations/fetch/api/response/response-error-from-stream.any.js.json b/tests/wpt-harness/expectations/fetch/api/response/response-error-from-stream.any.js.json index 68019fa4..14ffc379 100644 --- a/tests/wpt-harness/expectations/fetch/api/response/response-error-from-stream.any.js.json +++ b/tests/wpt-harness/expectations/fetch/api/response/response-error-from-stream.any.js.json @@ -11,6 +11,9 @@ "ReadableStream start() Error propagates to Response.blob() Promise": { "status": "FAIL" }, + "ReadableStream start() Error propagates to Response.bytes() Promise": { + "status": "FAIL" + }, "ReadableStream start() Error propagates to Response.formData() Promise": { "status": "FAIL" }, @@ -26,6 +29,9 @@ "ReadableStream pull() Error propagates to Response.blob() Promise": { "status": "FAIL" }, + "ReadableStream pull() Error propagates to Response.bytes() Promise": { + "status": "FAIL" + }, "ReadableStream pull() Error propagates to Response.formData() Promise": { "status": "FAIL" }, diff --git a/tests/wpt-harness/expectations/fetch/api/response/response-error.any.js.json b/tests/wpt-harness/expectations/fetch/api/response/response-error.any.js.json index e41e7c45..0dcb3c6e 100644 --- a/tests/wpt-harness/expectations/fetch/api/response/response-error.any.js.json +++ b/tests/wpt-harness/expectations/fetch/api/response/response-error.any.js.json @@ -1,18 +1,18 @@ { "Throws RangeError when responseInit's status is 0": { - "status": "FAIL" + "status": "PASS" }, "Throws RangeError when responseInit's status is 100": { - "status": "FAIL" + "status": "PASS" }, "Throws RangeError when responseInit's status is 199": { - "status": "FAIL" + "status": "PASS" }, "Throws RangeError when responseInit's status is 600": { - "status": "FAIL" + "status": "PASS" }, "Throws RangeError when responseInit's status is 1000": { - "status": "FAIL" + "status": "PASS" }, "Throws TypeError when responseInit's statusText is \n": { "status": "FAIL" @@ -21,12 +21,12 @@ "status": "FAIL" }, "Throws TypeError when building a response with body and a body status of 204": { - "status": "FAIL" + "status": "PASS" }, "Throws TypeError when building a response with body and a body status of 205": { - "status": "FAIL" + "status": "PASS" }, "Throws TypeError when building a response with body and a body status of 304": { - "status": "FAIL" + "status": "PASS" } } \ No newline at end of file diff --git a/tests/wpt-harness/expectations/fetch/api/response/response-from-stream.any.js.json b/tests/wpt-harness/expectations/fetch/api/response/response-from-stream.any.js.json index 4d94cc9f..710a47ee 100644 --- a/tests/wpt-harness/expectations/fetch/api/response/response-from-stream.any.js.json +++ b/tests/wpt-harness/expectations/fetch/api/response/response-from-stream.any.js.json @@ -1,11 +1,11 @@ { "Constructing a Response with a stream on which getReader() is called": { - "status": "FAIL" + "status": "PASS" }, "Constructing a Response with a stream on which read() is called": { - "status": "FAIL" + "status": "PASS" }, "Constructing a Response with a stream on which read() and releaseLock() are called": { - "status": "FAIL" + "status": "PASS" } } \ No newline at end of file diff --git a/tests/wpt-harness/expectations/fetch/api/response/response-headers-guard.any.js.json b/tests/wpt-harness/expectations/fetch/api/response/response-headers-guard.any.js.json new file mode 100644 index 00000000..a7dde64c --- /dev/null +++ b/tests/wpt-harness/expectations/fetch/api/response/response-headers-guard.any.js.json @@ -0,0 +1,5 @@ +{ + "Ensure response headers are immutable": { + "status": "FAIL" + } +} \ No newline at end of file diff --git a/tests/wpt-harness/expectations/fetch/api/response/response-static-error.any.js.json b/tests/wpt-harness/expectations/fetch/api/response/response-static-error.any.js.json index f27f066e..a138eb57 100644 --- a/tests/wpt-harness/expectations/fetch/api/response/response-static-error.any.js.json +++ b/tests/wpt-harness/expectations/fetch/api/response/response-static-error.any.js.json @@ -2,9 +2,6 @@ "Check response returned by static method error()": { "status": "FAIL" }, - "Ensure response headers are immutable": { - "status": "FAIL" - }, "the 'guard' of the Headers instance should be immutable": { "status": "FAIL" } diff --git a/tests/wpt-harness/expectations/fetch/api/response/response-static-json.any.js.json b/tests/wpt-harness/expectations/fetch/api/response/response-static-json.any.js.json index d0bb0c32..82df1617 100644 --- a/tests/wpt-harness/expectations/fetch/api/response/response-static-json.any.js.json +++ b/tests/wpt-harness/expectations/fetch/api/response/response-static-json.any.js.json @@ -1,21 +1,21 @@ { "Check response returned by static json() with init undefined": { - "status": "PASS" + "status": "FAIL" }, "Check response returned by static json() with init {\"status\":400}": { - "status": "PASS" + "status": "FAIL" }, "Check response returned by static json() with init {\"statusText\":\"foo\"}": { - "status": "PASS" + "status": "FAIL" }, "Check response returned by static json() with init {\"headers\":{}}": { - "status": "PASS" + "status": "FAIL" }, "Check response returned by static json() with init {\"headers\":{\"content-type\":\"foo/bar\"}}": { - "status": "PASS" + "status": "FAIL" }, "Check response returned by static json() with init {\"headers\":{\"x-foo\":\"bar\"}}": { - "status": "PASS" + "status": "FAIL" }, "Throws TypeError when calling static json() with a status of 204": { "status": "PASS" @@ -27,7 +27,7 @@ "status": "PASS" }, "Check static json() encodes JSON objects correctly": { - "status": "PASS" + "status": "FAIL" }, "Check static json() throws when data is not encodable": { "status": "PASS" @@ -36,15 +36,15 @@ "status": "PASS" }, "Check static json() propagates JSON serializer errors": { - "status": "PASS" + "status": "FAIL" }, "Check response returned by static json() with input 𝌆": { - "status": "PASS" + "status": "FAIL" }, "Check response returned by static json() with input U+df06U+d834": { - "status": "PASS" + "status": "FAIL" }, "Check response returned by static json() with input U+dead": { - "status": "PASS" + "status": "FAIL" } } \ No newline at end of file diff --git a/tests/wpt-harness/expectations/fetch/api/response/response-stream-bad-chunk.any.js.json b/tests/wpt-harness/expectations/fetch/api/response/response-stream-bad-chunk.any.js.json new file mode 100644 index 00000000..78654577 --- /dev/null +++ b/tests/wpt-harness/expectations/fetch/api/response/response-stream-bad-chunk.any.js.json @@ -0,0 +1,20 @@ +{ + "ReadableStream with non-Uint8Array chunk passed to Response.arrayBuffer() causes TypeError": { + "status": "PASS" + }, + "ReadableStream with non-Uint8Array chunk passed to Response.blob() causes TypeError": { + "status": "FAIL" + }, + "ReadableStream with non-Uint8Array chunk passed to Response.bytes() causes TypeError": { + "status": "FAIL" + }, + "ReadableStream with non-Uint8Array chunk passed to Response.formData() causes TypeError": { + "status": "FAIL" + }, + "ReadableStream with non-Uint8Array chunk passed to Response.json() causes TypeError": { + "status": "PASS" + }, + "ReadableStream with non-Uint8Array chunk passed to Response.text() causes TypeError": { + "status": "PASS" + } +} \ No newline at end of file diff --git a/tests/wpt-harness/expectations/fetch/api/response/response-stream-disturbed-2.any.js.json b/tests/wpt-harness/expectations/fetch/api/response/response-stream-disturbed-2.any.js.json index 24e0e1ec..d81b359d 100644 --- a/tests/wpt-harness/expectations/fetch/api/response/response-stream-disturbed-2.any.js.json +++ b/tests/wpt-harness/expectations/fetch/api/response/response-stream-disturbed-2.any.js.json @@ -3,13 +3,13 @@ "status": "FAIL" }, "Getting text after getting a locked Response body (body source: fetch)": { - "status": "FAIL" + "status": "PASS" }, "Getting json after getting a locked Response body (body source: fetch)": { - "status": "FAIL" + "status": "PASS" }, "Getting arrayBuffer after getting a locked Response body (body source: fetch)": { - "status": "FAIL" + "status": "PASS" }, "Getting blob after getting a locked Response body (body source: stream)": { "status": "FAIL" @@ -27,12 +27,12 @@ "status": "FAIL" }, "Getting text after getting a locked Response body (body source: string)": { - "status": "FAIL" + "status": "PASS" }, "Getting json after getting a locked Response body (body source: string)": { - "status": "FAIL" + "status": "PASS" }, "Getting arrayBuffer after getting a locked Response body (body source: string)": { - "status": "FAIL" + "status": "PASS" } } \ No newline at end of file diff --git a/tests/wpt-harness/expectations/fetch/api/response/response-stream-disturbed-3.any.js.json b/tests/wpt-harness/expectations/fetch/api/response/response-stream-disturbed-3.any.js.json index fd99fdf9..b306c09e 100644 --- a/tests/wpt-harness/expectations/fetch/api/response/response-stream-disturbed-3.any.js.json +++ b/tests/wpt-harness/expectations/fetch/api/response/response-stream-disturbed-3.any.js.json @@ -3,13 +3,13 @@ "status": "FAIL" }, "Getting text after reading the Response body (body source: fetch)": { - "status": "FAIL" + "status": "PASS" }, "Getting json after reading the Response body (body source: fetch)": { - "status": "FAIL" + "status": "PASS" }, "Getting arrayBuffer after reading the Response body (body source: fetch)": { - "status": "FAIL" + "status": "PASS" }, "Getting blob after reading the Response body (body source: stream)": { "status": "FAIL" @@ -27,12 +27,12 @@ "status": "FAIL" }, "Getting text after reading the Response body (body source: string)": { - "status": "FAIL" + "status": "PASS" }, "Getting json after reading the Response body (body source: string)": { - "status": "FAIL" + "status": "PASS" }, "Getting arrayBuffer after reading the Response body (body source: string)": { - "status": "FAIL" + "status": "PASS" } } \ No newline at end of file diff --git a/tests/wpt-harness/expectations/fetch/data-urls/base64.any.js.json b/tests/wpt-harness/expectations/fetch/data-urls/base64.any.js.json new file mode 100644 index 00000000..5c95e295 --- /dev/null +++ b/tests/wpt-harness/expectations/fetch/data-urls/base64.any.js.json @@ -0,0 +1,245 @@ +{ + "Setup.": { + "status": "PASS" + }, + "data: URL base64 handling: \"\"": { + "status": "FAIL" + }, + "data: URL base64 handling: \"abcd\"": { + "status": "FAIL" + }, + "data: URL base64 handling: \" abcd\"": { + "status": "FAIL" + }, + "data: URL base64 handling: \"abcd \"": { + "status": "FAIL" + }, + "data: URL base64 handling: \" abcd===\"": { + "status": "FAIL" + }, + "data: URL base64 handling: \"abcd=== \"": { + "status": "FAIL" + }, + "data: URL base64 handling: \"abcd ===\"": { + "status": "FAIL" + }, + "data: URL base64 handling: \"a\"": { + "status": "FAIL" + }, + "data: URL base64 handling: \"ab\"": { + "status": "FAIL" + }, + "data: URL base64 handling: \"abc\"": { + "status": "FAIL" + }, + "data: URL base64 handling: \"abcde\"": { + "status": "FAIL" + }, + "data: URL base64 handling: \"𐀀\"": { + "status": "FAIL" + }, + "data: URL base64 handling: \"=\"": { + "status": "FAIL" + }, + "data: URL base64 handling: \"==\"": { + "status": "FAIL" + }, + "data: URL base64 handling: \"===\"": { + "status": "FAIL" + }, + "data: URL base64 handling: \"====\"": { + "status": "FAIL" + }, + "data: URL base64 handling: \"=====\"": { + "status": "FAIL" + }, + "data: URL base64 handling: \"a=\"": { + "status": "FAIL" + }, + "data: URL base64 handling: \"a==\"": { + "status": "FAIL" + }, + "data: URL base64 handling: \"a===\"": { + "status": "FAIL" + }, + "data: URL base64 handling: \"a====\"": { + "status": "FAIL" + }, + "data: URL base64 handling: \"a=====\"": { + "status": "FAIL" + }, + "data: URL base64 handling: \"ab=\"": { + "status": "FAIL" + }, + "data: URL base64 handling: \"ab==\"": { + "status": "FAIL" + }, + "data: URL base64 handling: \"ab===\"": { + "status": "FAIL" + }, + "data: URL base64 handling: \"ab====\"": { + "status": "FAIL" + }, + "data: URL base64 handling: \"ab=====\"": { + "status": "FAIL" + }, + "data: URL base64 handling: \"abc=\"": { + "status": "FAIL" + }, + "data: URL base64 handling: \"abc==\"": { + "status": "FAIL" + }, + "data: URL base64 handling: \"abc===\"": { + "status": "FAIL" + }, + "data: URL base64 handling: \"abc====\"": { + "status": "FAIL" + }, + "data: URL base64 handling: \"abc=====\"": { + "status": "FAIL" + }, + "data: URL base64 handling: \"abcd=\"": { + "status": "FAIL" + }, + "data: URL base64 handling: \"abcd==\"": { + "status": "FAIL" + }, + "data: URL base64 handling: \"abcd===\"": { + "status": "FAIL" + }, + "data: URL base64 handling: \"abcd====\"": { + "status": "FAIL" + }, + "data: URL base64 handling: \"abcd=====\"": { + "status": "FAIL" + }, + "data: URL base64 handling: \"abcde=\"": { + "status": "FAIL" + }, + "data: URL base64 handling: \"abcde==\"": { + "status": "FAIL" + }, + "data: URL base64 handling: \"abcde===\"": { + "status": "FAIL" + }, + "data: URL base64 handling: \"abcde====\"": { + "status": "FAIL" + }, + "data: URL base64 handling: \"abcde=====\"": { + "status": "FAIL" + }, + "data: URL base64 handling: \"=a\"": { + "status": "FAIL" + }, + "data: URL base64 handling: \"=a=\"": { + "status": "FAIL" + }, + "data: URL base64 handling: \"a=b\"": { + "status": "FAIL" + }, + "data: URL base64 handling: \"a=b=\"": { + "status": "FAIL" + }, + "data: URL base64 handling: \"ab=c\"": { + "status": "FAIL" + }, + "data: URL base64 handling: \"ab=c=\"": { + "status": "FAIL" + }, + "data: URL base64 handling: \"abc=d\"": { + "status": "FAIL" + }, + "data: URL base64 handling: \"abc=d=\"": { + "status": "FAIL" + }, + "data: URL base64 handling: \"ab\\vcd\"": { + "status": "FAIL" + }, + "data: URL base64 handling: \"ab cd\"": { + "status": "FAIL" + }, + "data: URL base64 handling: \"ab、cd\"": { + "status": "FAIL" + }, + "data: URL base64 handling: \"ab\\tcd\"": { + "status": "FAIL" + }, + "data: URL base64 handling: \"ab\\ncd\"": { + "status": "FAIL" + }, + "data: URL base64 handling: \"ab\\fcd\"": { + "status": "FAIL" + }, + "data: URL base64 handling: \"ab\\rcd\"": { + "status": "FAIL" + }, + "data: URL base64 handling: \"ab cd\"": { + "status": "FAIL" + }, + "data: URL base64 handling: \"ab cd\"": { + "status": "FAIL" + }, + "data: URL base64 handling: \"ab\\t\\n\\f\\r cd\"": { + "status": "FAIL" + }, + "data: URL base64 handling: \" \\t\\n\\f\\r ab\\t\\n\\f\\r cd\\t\\n\\f\\r \"": { + "status": "FAIL" + }, + "data: URL base64 handling: \"ab\\t\\n\\f\\r =\\t\\n\\f\\r =\\t\\n\\f\\r \"": { + "status": "FAIL" + }, + "data: URL base64 handling: \"A\"": { + "status": "FAIL" + }, + "data: URL base64 handling: \"/A\"": { + "status": "FAIL" + }, + "data: URL base64 handling: \"//A\"": { + "status": "FAIL" + }, + "data: URL base64 handling: \"///A\"": { + "status": "FAIL" + }, + "data: URL base64 handling: \"////A\"": { + "status": "FAIL" + }, + "data: URL base64 handling: \"/\"": { + "status": "FAIL" + }, + "data: URL base64 handling: \"A/\"": { + "status": "FAIL" + }, + "data: URL base64 handling: \"AA/\"": { + "status": "FAIL" + }, + "data: URL base64 handling: \"AAAA/\"": { + "status": "FAIL" + }, + "data: URL base64 handling: \"AAA/\"": { + "status": "FAIL" + }, + "data: URL base64 handling: \"\\0nonsense\"": { + "status": "FAIL" + }, + "data: URL base64 handling: \"abcd\\0nonsense\"": { + "status": "FAIL" + }, + "data: URL base64 handling: \"YQ\"": { + "status": "FAIL" + }, + "data: URL base64 handling: \"YR\"": { + "status": "FAIL" + }, + "data: URL base64 handling: \"~~\"": { + "status": "FAIL" + }, + "data: URL base64 handling: \"..\"": { + "status": "FAIL" + }, + "data: URL base64 handling: \"--\"": { + "status": "FAIL" + }, + "data: URL base64 handling: \"__\"": { + "status": "FAIL" + } +} \ No newline at end of file diff --git a/tests/wpt-harness/expectations/fetch/data-urls/processing.any.js.json b/tests/wpt-harness/expectations/fetch/data-urls/processing.any.js.json new file mode 100644 index 00000000..da515a27 --- /dev/null +++ b/tests/wpt-harness/expectations/fetch/data-urls/processing.any.js.json @@ -0,0 +1,221 @@ +{ + "Setup.": { + "status": "PASS" + }, + "\"data://test/,X\"": { + "status": "FAIL" + }, + "\"data://test:test/,X\"": { + "status": "PASS" + }, + "\"data:,X\"": { + "status": "FAIL" + }, + "\"data:\"": { + "status": "FAIL" + }, + "\"data:text/html\"": { + "status": "FAIL" + }, + "\"data:text/html ;charset=x \"": { + "status": "FAIL" + }, + "\"data:,\"": { + "status": "FAIL" + }, + "\"data:,X#X\"": { + "status": "FAIL" + }, + "\"data:,%FF\"": { + "status": "FAIL" + }, + "\"data:text/plain,X\"": { + "status": "FAIL" + }, + "\"data:text/plain ,X\"": { + "status": "FAIL" + }, + "\"data:text/plain%20,X\"": { + "status": "FAIL" + }, + "\"data:text/plain\\f,X\"": { + "status": "FAIL" + }, + "\"data:text/plain%0C,X\"": { + "status": "FAIL" + }, + "\"data:text/plain;,X\"": { + "status": "FAIL" + }, + "\"data:;x=x;charset=x,X\"": { + "status": "FAIL" + }, + "\"data:;x=x,X\"": { + "status": "FAIL" + }, + "\"data:text/plain;charset=windows-1252,%C2%B1\"": { + "status": "FAIL" + }, + "\"data:text/plain;Charset=UTF-8,%C2%B1\"": { + "status": "FAIL" + }, + "\"data:text/plain;charset=windows-1252,áñçə💩\"": { + "status": "FAIL" + }, + "\"data:text/plain;charset=UTF-8,áñçə💩\"": { + "status": "FAIL" + }, + "\"data:image/gif,%C2%B1\"": { + "status": "FAIL" + }, + "\"data:IMAGE/gif,%C2%B1\"": { + "status": "FAIL" + }, + "\"data:IMAGE/gif;hi=x,%C2%B1\"": { + "status": "FAIL" + }, + "\"data:IMAGE/gif;CHARSET=x,%C2%B1\"": { + "status": "FAIL" + }, + "\"data: ,%FF\"": { + "status": "FAIL" + }, + "\"data:%20,%FF\"": { + "status": "FAIL" + }, + "\"data:\\f,%FF\"": { + "status": "FAIL" + }, + "\"data:%1F,%FF\"": { + "status": "FAIL" + }, + "\"data:\\0,%FF\"": { + "status": "FAIL" + }, + "\"data:%00,%FF\"": { + "status": "FAIL" + }, + "\"data:text/html ,X\"": { + "status": "FAIL" + }, + "\"data:text / html,X\"": { + "status": "FAIL" + }, + "\"data:†,X\"": { + "status": "FAIL" + }, + "\"data:†/†,X\"": { + "status": "FAIL" + }, + "\"data:X,X\"": { + "status": "FAIL" + }, + "\"data:image/png,X X\"": { + "status": "FAIL" + }, + "\"data:application/javascript,X X\"": { + "status": "FAIL" + }, + "\"data:application/xml,X X\"": { + "status": "FAIL" + }, + "\"data:text/javascript,X X\"": { + "status": "FAIL" + }, + "\"data:text/plain,X X\"": { + "status": "FAIL" + }, + "\"data:unknown/unknown,X X\"": { + "status": "FAIL" + }, + "\"data:text/plain;a=\\\",\\\",X\"": { + "status": "FAIL" + }, + "\"data:text/plain;a=%2C,X\"": { + "status": "FAIL" + }, + "\"data:;base64;base64,WA\"": { + "status": "FAIL" + }, + "\"data:x/x;base64;base64,WA\"": { + "status": "FAIL" + }, + "\"data:x/x;base64;charset=x,WA\"": { + "status": "FAIL" + }, + "\"data:x/x;base64;charset=x;base64,WA\"": { + "status": "FAIL" + }, + "\"data:x/x;base64;base64x,WA\"": { + "status": "FAIL" + }, + "\"data:;base64,W%20A\"": { + "status": "FAIL" + }, + "\"data:;base64,W%0CA\"": { + "status": "FAIL" + }, + "\"data:x;base64x,WA\"": { + "status": "FAIL" + }, + "\"data:x;base64;x,WA\"": { + "status": "FAIL" + }, + "\"data:x;base64=x,WA\"": { + "status": "FAIL" + }, + "\"data:; base64,WA\"": { + "status": "FAIL" + }, + "\"data:; base64,WA\"": { + "status": "FAIL" + }, + "\"data: ;charset=x ; base64,WA\"": { + "status": "FAIL" + }, + "\"data:;base64;,WA\"": { + "status": "FAIL" + }, + "\"data:;base64 ,WA\"": { + "status": "FAIL" + }, + "\"data:;base64 ,WA\"": { + "status": "FAIL" + }, + "\"data:;base 64,WA\"": { + "status": "FAIL" + }, + "\"data:;BASe64,WA\"": { + "status": "FAIL" + }, + "\"data:;%62ase64,WA\"": { + "status": "FAIL" + }, + "\"data:%3Bbase64,WA\"": { + "status": "FAIL" + }, + "\"data:;charset=x,X\"": { + "status": "FAIL" + }, + "\"data:; charset=x,X\"": { + "status": "FAIL" + }, + "\"data:;charset =x,X\"": { + "status": "FAIL" + }, + "\"data:;charset= x,X\"": { + "status": "FAIL" + }, + "\"data:;charset=,X\"": { + "status": "FAIL" + }, + "\"data:;charset,X\"": { + "status": "FAIL" + }, + "\"data:;charset=\\\"x\\\",X\"": { + "status": "FAIL" + }, + "\"data:;CHARSET=\\\"X\\\",X\"": { + "status": "FAIL" + } +} \ No newline at end of file diff --git a/tests/wpt-harness/expectations/html/webappapis/structured-clone/structured-clone.any.js.json b/tests/wpt-harness/expectations/html/webappapis/structured-clone/structured-clone.any.js.json index 832fe893..f85c26b6 100644 --- a/tests/wpt-harness/expectations/html/webappapis/structured-clone/structured-clone.any.js.json +++ b/tests/wpt-harness/expectations/html/webappapis/structured-clone/structured-clone.any.js.json @@ -342,7 +342,7 @@ "status": "PASS" }, "Serializing a non-serializable platform object fails": { - "status": "FAIL" + "status": "PASS" }, "An object whose interface is deleted from the global must still deserialize": { "status": "FAIL" @@ -351,16 +351,16 @@ "status": "FAIL" }, "Resizable ArrayBuffer": { - "status": "FAIL" + "status": "PASS" }, "Growable SharedArrayBuffer": { "status": "FAIL" }, "Length-tracking TypedArray": { - "status": "FAIL" + "status": "PASS" }, "Length-tracking DataView": { - "status": "FAIL" + "status": "PASS" }, "Serializing OOB TypedArray throws": { "status": "FAIL" @@ -390,13 +390,13 @@ "status": "FAIL" }, "Resizable ArrayBuffer is transferable": { - "status": "FAIL" + "status": "PASS" }, "Length-tracking TypedArray is transferable": { - "status": "FAIL" + "status": "PASS" }, "Length-tracking DataView is transferable": { - "status": "FAIL" + "status": "PASS" }, "Transferring OOB TypedArray throws": { "status": "FAIL" diff --git a/tests/wpt-harness/expectations/streams/idlharness.any.js.json b/tests/wpt-harness/expectations/streams/idlharness.any.js.json new file mode 100644 index 00000000..6e23c0f5 --- /dev/null +++ b/tests/wpt-harness/expectations/streams/idlharness.any.js.json @@ -0,0 +1,689 @@ +{ + "idl_test setup": { + "status": "PASS" + }, + "idl_test validation": { + "status": "PASS" + }, + "ReadableStreamDefaultReader includes ReadableStreamGenericReader: member names are unique": { + "status": "PASS" + }, + "ReadableStreamBYOBReader includes ReadableStreamGenericReader: member names are unique": { + "status": "PASS" + }, + "ReadableStream interface: existence and properties of interface object": { + "status": "PASS" + }, + "ReadableStream interface object length": { + "status": "PASS" + }, + "ReadableStream interface object name": { + "status": "PASS" + }, + "ReadableStream interface: existence and properties of interface prototype object": { + "status": "PASS" + }, + "ReadableStream interface: existence and properties of interface prototype object's \"constructor\" property": { + "status": "PASS" + }, + "ReadableStream interface: existence and properties of interface prototype object's @@unscopables property": { + "status": "PASS" + }, + "ReadableStream interface: operation from(any)": { + "status": "FAIL" + }, + "ReadableStream interface: attribute locked": { + "status": "PASS" + }, + "ReadableStream interface: operation cancel(optional any)": { + "status": "PASS" + }, + "ReadableStream interface: operation getReader(optional ReadableStreamGetReaderOptions)": { + "status": "PASS" + }, + "ReadableStream interface: operation pipeThrough(ReadableWritablePair, optional StreamPipeOptions)": { + "status": "PASS" + }, + "ReadableStream interface: operation pipeTo(WritableStream, optional StreamPipeOptions)": { + "status": "FAIL" + }, + "ReadableStream interface: operation tee()": { + "status": "PASS" + }, + "ReadableStream interface: async iterable": { + "status": "FAIL" + }, + "ReadableStream must be primary interface of new ReadableStream()": { + "status": "PASS" + }, + "Stringification of new ReadableStream()": { + "status": "PASS" + }, + "ReadableStream interface: new ReadableStream() must inherit property \"from(any)\" with the proper type": { + "status": "PASS" + }, + "ReadableStream interface: calling from(any) on new ReadableStream() with too few arguments must throw TypeError": { + "status": "FAIL" + }, + "ReadableStream interface: new ReadableStream() must inherit property \"locked\" with the proper type": { + "status": "PASS" + }, + "ReadableStream interface: new ReadableStream() must inherit property \"cancel(optional any)\" with the proper type": { + "status": "PASS" + }, + "ReadableStream interface: calling cancel(optional any) on new ReadableStream() with too few arguments must throw TypeError": { + "status": "PASS" + }, + "ReadableStream interface: new ReadableStream() must inherit property \"getReader(optional ReadableStreamGetReaderOptions)\" with the proper type": { + "status": "PASS" + }, + "ReadableStream interface: calling getReader(optional ReadableStreamGetReaderOptions) on new ReadableStream() with too few arguments must throw TypeError": { + "status": "PASS" + }, + "ReadableStream interface: new ReadableStream() must inherit property \"pipeThrough(ReadableWritablePair, optional StreamPipeOptions)\" with the proper type": { + "status": "PASS" + }, + "ReadableStream interface: calling pipeThrough(ReadableWritablePair, optional StreamPipeOptions) on new ReadableStream() with too few arguments must throw TypeError": { + "status": "PASS" + }, + "ReadableStream interface: new ReadableStream() must inherit property \"pipeTo(WritableStream, optional StreamPipeOptions)\" with the proper type": { + "status": "PASS" + }, + "ReadableStream interface: calling pipeTo(WritableStream, optional StreamPipeOptions) on new ReadableStream() with too few arguments must throw TypeError": { + "status": "FAIL" + }, + "ReadableStream interface: new ReadableStream() must inherit property \"tee()\" with the proper type": { + "status": "PASS" + }, + "ReadableStreamDefaultReader interface: existence and properties of interface object": { + "status": "PASS" + }, + "ReadableStreamDefaultReader interface object length": { + "status": "PASS" + }, + "ReadableStreamDefaultReader interface object name": { + "status": "PASS" + }, + "ReadableStreamDefaultReader interface: existence and properties of interface prototype object": { + "status": "PASS" + }, + "ReadableStreamDefaultReader interface: existence and properties of interface prototype object's \"constructor\" property": { + "status": "PASS" + }, + "ReadableStreamDefaultReader interface: existence and properties of interface prototype object's @@unscopables property": { + "status": "PASS" + }, + "ReadableStreamDefaultReader interface: operation read()": { + "status": "FAIL" + }, + "ReadableStreamDefaultReader interface: operation releaseLock()": { + "status": "FAIL" + }, + "ReadableStreamDefaultReader interface: attribute closed": { + "status": "FAIL" + }, + "ReadableStreamDefaultReader interface: operation cancel(optional any)": { + "status": "FAIL" + }, + "ReadableStreamDefaultReader must be primary interface of (new ReadableStream()).getReader()": { + "status": "PASS" + }, + "Stringification of (new ReadableStream()).getReader()": { + "status": "FAIL" + }, + "ReadableStreamDefaultReader interface: (new ReadableStream()).getReader() must inherit property \"read()\" with the proper type": { + "status": "PASS" + }, + "ReadableStreamDefaultReader interface: (new ReadableStream()).getReader() must inherit property \"releaseLock()\" with the proper type": { + "status": "PASS" + }, + "ReadableStreamDefaultReader interface: (new ReadableStream()).getReader() must inherit property \"closed\" with the proper type": { + "status": "PASS" + }, + "ReadableStreamDefaultReader interface: (new ReadableStream()).getReader() must inherit property \"cancel(optional any)\" with the proper type": { + "status": "PASS" + }, + "ReadableStreamDefaultReader interface: calling cancel(optional any) on (new ReadableStream()).getReader() with too few arguments must throw TypeError": { + "status": "PASS" + }, + "ReadableStreamBYOBReader interface: existence and properties of interface object": { + "status": "PASS" + }, + "ReadableStreamBYOBReader interface object length": { + "status": "PASS" + }, + "ReadableStreamBYOBReader interface object name": { + "status": "PASS" + }, + "ReadableStreamBYOBReader interface: existence and properties of interface prototype object": { + "status": "PASS" + }, + "ReadableStreamBYOBReader interface: existence and properties of interface prototype object's \"constructor\" property": { + "status": "PASS" + }, + "ReadableStreamBYOBReader interface: existence and properties of interface prototype object's @@unscopables property": { + "status": "PASS" + }, + "ReadableStreamBYOBReader interface: operation read(ArrayBufferView, optional ReadableStreamBYOBReaderReadOptions)": { + "status": "FAIL" + }, + "ReadableStreamBYOBReader interface: operation releaseLock()": { + "status": "FAIL" + }, + "ReadableStreamBYOBReader interface: attribute closed": { + "status": "FAIL" + }, + "ReadableStreamBYOBReader interface: operation cancel(optional any)": { + "status": "FAIL" + }, + "ReadableStreamBYOBReader must be primary interface of (new ReadableStream({ type: 'bytes' })).getReader({ mode: 'byob' })": { + "status": "PASS" + }, + "Stringification of (new ReadableStream({ type: 'bytes' })).getReader({ mode: 'byob' })": { + "status": "FAIL" + }, + "ReadableStreamBYOBReader interface: (new ReadableStream({ type: 'bytes' })).getReader({ mode: 'byob' }) must inherit property \"read(ArrayBufferView, optional ReadableStreamBYOBReaderReadOptions)\" with the proper type": { + "status": "PASS" + }, + "ReadableStreamBYOBReader interface: calling read(ArrayBufferView, optional ReadableStreamBYOBReaderReadOptions) on (new ReadableStream({ type: 'bytes' })).getReader({ mode: 'byob' }) with too few arguments must throw TypeError": { + "status": "PASS" + }, + "ReadableStreamBYOBReader interface: (new ReadableStream({ type: 'bytes' })).getReader({ mode: 'byob' }) must inherit property \"releaseLock()\" with the proper type": { + "status": "PASS" + }, + "ReadableStreamBYOBReader interface: (new ReadableStream({ type: 'bytes' })).getReader({ mode: 'byob' }) must inherit property \"closed\" with the proper type": { + "status": "PASS" + }, + "ReadableStreamBYOBReader interface: (new ReadableStream({ type: 'bytes' })).getReader({ mode: 'byob' }) must inherit property \"cancel(optional any)\" with the proper type": { + "status": "PASS" + }, + "ReadableStreamBYOBReader interface: calling cancel(optional any) on (new ReadableStream({ type: 'bytes' })).getReader({ mode: 'byob' }) with too few arguments must throw TypeError": { + "status": "PASS" + }, + "ReadableStreamDefaultController interface: existence and properties of interface object": { + "status": "PASS" + }, + "ReadableStreamDefaultController interface object length": { + "status": "PASS" + }, + "ReadableStreamDefaultController interface object name": { + "status": "PASS" + }, + "ReadableStreamDefaultController interface: existence and properties of interface prototype object": { + "status": "PASS" + }, + "ReadableStreamDefaultController interface: existence and properties of interface prototype object's \"constructor\" property": { + "status": "PASS" + }, + "ReadableStreamDefaultController interface: existence and properties of interface prototype object's @@unscopables property": { + "status": "PASS" + }, + "ReadableStreamDefaultController interface: attribute desiredSize": { + "status": "FAIL" + }, + "ReadableStreamDefaultController interface: operation close()": { + "status": "FAIL" + }, + "ReadableStreamDefaultController interface: operation enqueue(optional any)": { + "status": "FAIL" + }, + "ReadableStreamDefaultController interface: operation error(optional any)": { + "status": "FAIL" + }, + "ReadableStreamDefaultController must be primary interface of self.readableStreamDefaultController": { + "status": "PASS" + }, + "Stringification of self.readableStreamDefaultController": { + "status": "FAIL" + }, + "ReadableStreamDefaultController interface: self.readableStreamDefaultController must inherit property \"desiredSize\" with the proper type": { + "status": "PASS" + }, + "ReadableStreamDefaultController interface: self.readableStreamDefaultController must inherit property \"close()\" with the proper type": { + "status": "PASS" + }, + "ReadableStreamDefaultController interface: self.readableStreamDefaultController must inherit property \"enqueue(optional any)\" with the proper type": { + "status": "PASS" + }, + "ReadableStreamDefaultController interface: calling enqueue(optional any) on self.readableStreamDefaultController with too few arguments must throw TypeError": { + "status": "PASS" + }, + "ReadableStreamDefaultController interface: self.readableStreamDefaultController must inherit property \"error(optional any)\" with the proper type": { + "status": "PASS" + }, + "ReadableStreamDefaultController interface: calling error(optional any) on self.readableStreamDefaultController with too few arguments must throw TypeError": { + "status": "PASS" + }, + "ReadableByteStreamController interface: existence and properties of interface object": { + "status": "PASS" + }, + "ReadableByteStreamController interface object length": { + "status": "PASS" + }, + "ReadableByteStreamController interface object name": { + "status": "PASS" + }, + "ReadableByteStreamController interface: existence and properties of interface prototype object": { + "status": "PASS" + }, + "ReadableByteStreamController interface: existence and properties of interface prototype object's \"constructor\" property": { + "status": "PASS" + }, + "ReadableByteStreamController interface: existence and properties of interface prototype object's @@unscopables property": { + "status": "PASS" + }, + "ReadableByteStreamController interface: attribute byobRequest": { + "status": "FAIL" + }, + "ReadableByteStreamController interface: attribute desiredSize": { + "status": "FAIL" + }, + "ReadableByteStreamController interface: operation close()": { + "status": "FAIL" + }, + "ReadableByteStreamController interface: operation enqueue(ArrayBufferView)": { + "status": "FAIL" + }, + "ReadableByteStreamController interface: operation error(optional any)": { + "status": "FAIL" + }, + "ReadableByteStreamController must be primary interface of self.readableByteStreamController": { + "status": "PASS" + }, + "Stringification of self.readableByteStreamController": { + "status": "FAIL" + }, + "ReadableByteStreamController interface: self.readableByteStreamController must inherit property \"byobRequest\" with the proper type": { + "status": "PASS" + }, + "ReadableByteStreamController interface: self.readableByteStreamController must inherit property \"desiredSize\" with the proper type": { + "status": "PASS" + }, + "ReadableByteStreamController interface: self.readableByteStreamController must inherit property \"close()\" with the proper type": { + "status": "PASS" + }, + "ReadableByteStreamController interface: self.readableByteStreamController must inherit property \"enqueue(ArrayBufferView)\" with the proper type": { + "status": "PASS" + }, + "ReadableByteStreamController interface: calling enqueue(ArrayBufferView) on self.readableByteStreamController with too few arguments must throw TypeError": { + "status": "PASS" + }, + "ReadableByteStreamController interface: self.readableByteStreamController must inherit property \"error(optional any)\" with the proper type": { + "status": "PASS" + }, + "ReadableByteStreamController interface: calling error(optional any) on self.readableByteStreamController with too few arguments must throw TypeError": { + "status": "PASS" + }, + "ReadableStreamBYOBRequest interface: existence and properties of interface object": { + "status": "PASS" + }, + "ReadableStreamBYOBRequest interface object length": { + "status": "PASS" + }, + "ReadableStreamBYOBRequest interface object name": { + "status": "PASS" + }, + "ReadableStreamBYOBRequest interface: existence and properties of interface prototype object": { + "status": "PASS" + }, + "ReadableStreamBYOBRequest interface: existence and properties of interface prototype object's \"constructor\" property": { + "status": "PASS" + }, + "ReadableStreamBYOBRequest interface: existence and properties of interface prototype object's @@unscopables property": { + "status": "PASS" + }, + "ReadableStreamBYOBRequest interface: attribute view": { + "status": "FAIL" + }, + "ReadableStreamBYOBRequest interface: operation respond(unsigned long long)": { + "status": "FAIL" + }, + "ReadableStreamBYOBRequest interface: operation respondWithNewView(ArrayBufferView)": { + "status": "FAIL" + }, + "ReadableStreamBYOBRequest must be primary interface of self.readableStreamByobRequest": { + "status": "PASS" + }, + "Stringification of self.readableStreamByobRequest": { + "status": "FAIL" + }, + "ReadableStreamBYOBRequest interface: self.readableStreamByobRequest must inherit property \"view\" with the proper type": { + "status": "PASS" + }, + "ReadableStreamBYOBRequest interface: self.readableStreamByobRequest must inherit property \"respond(unsigned long long)\" with the proper type": { + "status": "PASS" + }, + "ReadableStreamBYOBRequest interface: calling respond(unsigned long long) on self.readableStreamByobRequest with too few arguments must throw TypeError": { + "status": "FAIL" + }, + "ReadableStreamBYOBRequest interface: self.readableStreamByobRequest must inherit property \"respondWithNewView(ArrayBufferView)\" with the proper type": { + "status": "PASS" + }, + "ReadableStreamBYOBRequest interface: calling respondWithNewView(ArrayBufferView) on self.readableStreamByobRequest with too few arguments must throw TypeError": { + "status": "PASS" + }, + "WritableStream interface: existence and properties of interface object": { + "status": "PASS" + }, + "WritableStream interface object length": { + "status": "PASS" + }, + "WritableStream interface object name": { + "status": "PASS" + }, + "WritableStream interface: existence and properties of interface prototype object": { + "status": "PASS" + }, + "WritableStream interface: existence and properties of interface prototype object's \"constructor\" property": { + "status": "PASS" + }, + "WritableStream interface: existence and properties of interface prototype object's @@unscopables property": { + "status": "PASS" + }, + "WritableStream interface: attribute locked": { + "status": "FAIL" + }, + "WritableStream interface: operation abort(optional any)": { + "status": "FAIL" + }, + "WritableStream interface: operation close()": { + "status": "FAIL" + }, + "WritableStream interface: operation getWriter()": { + "status": "FAIL" + }, + "WritableStream must be primary interface of new WritableStream()": { + "status": "PASS" + }, + "Stringification of new WritableStream()": { + "status": "FAIL" + }, + "WritableStream interface: new WritableStream() must inherit property \"locked\" with the proper type": { + "status": "PASS" + }, + "WritableStream interface: new WritableStream() must inherit property \"abort(optional any)\" with the proper type": { + "status": "PASS" + }, + "WritableStream interface: calling abort(optional any) on new WritableStream() with too few arguments must throw TypeError": { + "status": "PASS" + }, + "WritableStream interface: new WritableStream() must inherit property \"close()\" with the proper type": { + "status": "PASS" + }, + "WritableStream interface: new WritableStream() must inherit property \"getWriter()\" with the proper type": { + "status": "PASS" + }, + "WritableStreamDefaultWriter interface: existence and properties of interface object": { + "status": "FAIL" + }, + "WritableStreamDefaultWriter interface object length": { + "status": "FAIL" + }, + "WritableStreamDefaultWriter interface object name": { + "status": "FAIL" + }, + "WritableStreamDefaultWriter interface: existence and properties of interface prototype object": { + "status": "FAIL" + }, + "WritableStreamDefaultWriter interface: existence and properties of interface prototype object's \"constructor\" property": { + "status": "FAIL" + }, + "WritableStreamDefaultWriter interface: existence and properties of interface prototype object's @@unscopables property": { + "status": "FAIL" + }, + "WritableStreamDefaultWriter interface: attribute closed": { + "status": "FAIL" + }, + "WritableStreamDefaultWriter interface: attribute desiredSize": { + "status": "FAIL" + }, + "WritableStreamDefaultWriter interface: attribute ready": { + "status": "FAIL" + }, + "WritableStreamDefaultWriter interface: operation abort(optional any)": { + "status": "FAIL" + }, + "WritableStreamDefaultWriter interface: operation close()": { + "status": "FAIL" + }, + "WritableStreamDefaultWriter interface: operation releaseLock()": { + "status": "FAIL" + }, + "WritableStreamDefaultWriter interface: operation write(optional any)": { + "status": "FAIL" + }, + "WritableStreamDefaultWriter must be primary interface of (new WritableStream()).getWriter()": { + "status": "FAIL" + }, + "Stringification of (new WritableStream()).getWriter()": { + "status": "FAIL" + }, + "WritableStreamDefaultWriter interface: (new WritableStream()).getWriter() must inherit property \"closed\" with the proper type": { + "status": "PASS" + }, + "WritableStreamDefaultWriter interface: (new WritableStream()).getWriter() must inherit property \"desiredSize\" with the proper type": { + "status": "PASS" + }, + "WritableStreamDefaultWriter interface: (new WritableStream()).getWriter() must inherit property \"ready\" with the proper type": { + "status": "PASS" + }, + "WritableStreamDefaultWriter interface: (new WritableStream()).getWriter() must inherit property \"abort(optional any)\" with the proper type": { + "status": "PASS" + }, + "WritableStreamDefaultWriter interface: calling abort(optional any) on (new WritableStream()).getWriter() with too few arguments must throw TypeError": { + "status": "PASS" + }, + "WritableStreamDefaultWriter interface: (new WritableStream()).getWriter() must inherit property \"close()\" with the proper type": { + "status": "PASS" + }, + "WritableStreamDefaultWriter interface: (new WritableStream()).getWriter() must inherit property \"releaseLock()\" with the proper type": { + "status": "PASS" + }, + "WritableStreamDefaultWriter interface: (new WritableStream()).getWriter() must inherit property \"write(optional any)\" with the proper type": { + "status": "PASS" + }, + "WritableStreamDefaultWriter interface: calling write(optional any) on (new WritableStream()).getWriter() with too few arguments must throw TypeError": { + "status": "PASS" + }, + "WritableStreamDefaultController interface: existence and properties of interface object": { + "status": "FAIL" + }, + "WritableStreamDefaultController interface object length": { + "status": "FAIL" + }, + "WritableStreamDefaultController interface object name": { + "status": "FAIL" + }, + "WritableStreamDefaultController interface: existence and properties of interface prototype object": { + "status": "FAIL" + }, + "WritableStreamDefaultController interface: existence and properties of interface prototype object's \"constructor\" property": { + "status": "FAIL" + }, + "WritableStreamDefaultController interface: existence and properties of interface prototype object's @@unscopables property": { + "status": "FAIL" + }, + "WritableStreamDefaultController interface: attribute signal": { + "status": "FAIL" + }, + "WritableStreamDefaultController interface: operation error(optional any)": { + "status": "FAIL" + }, + "WritableStreamDefaultController must be primary interface of self.writableStreamDefaultController": { + "status": "FAIL" + }, + "Stringification of self.writableStreamDefaultController": { + "status": "FAIL" + }, + "WritableStreamDefaultController interface: self.writableStreamDefaultController must inherit property \"signal\" with the proper type": { + "status": "FAIL" + }, + "WritableStreamDefaultController interface: self.writableStreamDefaultController must inherit property \"error(optional any)\" with the proper type": { + "status": "PASS" + }, + "WritableStreamDefaultController interface: calling error(optional any) on self.writableStreamDefaultController with too few arguments must throw TypeError": { + "status": "PASS" + }, + "TransformStream interface: existence and properties of interface object": { + "status": "PASS" + }, + "TransformStream interface object length": { + "status": "PASS" + }, + "TransformStream interface object name": { + "status": "PASS" + }, + "TransformStream interface: existence and properties of interface prototype object": { + "status": "PASS" + }, + "TransformStream interface: existence and properties of interface prototype object's \"constructor\" property": { + "status": "PASS" + }, + "TransformStream interface: existence and properties of interface prototype object's @@unscopables property": { + "status": "PASS" + }, + "TransformStream interface: attribute readable": { + "status": "FAIL" + }, + "TransformStream interface: attribute writable": { + "status": "FAIL" + }, + "TransformStream must be primary interface of new TransformStream()": { + "status": "PASS" + }, + "Stringification of new TransformStream()": { + "status": "FAIL" + }, + "TransformStream interface: new TransformStream() must inherit property \"readable\" with the proper type": { + "status": "PASS" + }, + "TransformStream interface: new TransformStream() must inherit property \"writable\" with the proper type": { + "status": "PASS" + }, + "TransformStreamDefaultController interface: existence and properties of interface object": { + "status": "FAIL" + }, + "TransformStreamDefaultController interface object length": { + "status": "FAIL" + }, + "TransformStreamDefaultController interface object name": { + "status": "FAIL" + }, + "TransformStreamDefaultController interface: existence and properties of interface prototype object": { + "status": "FAIL" + }, + "TransformStreamDefaultController interface: existence and properties of interface prototype object's \"constructor\" property": { + "status": "FAIL" + }, + "TransformStreamDefaultController interface: existence and properties of interface prototype object's @@unscopables property": { + "status": "FAIL" + }, + "TransformStreamDefaultController interface: attribute desiredSize": { + "status": "FAIL" + }, + "TransformStreamDefaultController interface: operation enqueue(optional any)": { + "status": "FAIL" + }, + "TransformStreamDefaultController interface: operation error(optional any)": { + "status": "FAIL" + }, + "TransformStreamDefaultController interface: operation terminate()": { + "status": "FAIL" + }, + "TransformStreamDefaultController must be primary interface of self.transformStreamDefaultController": { + "status": "FAIL" + }, + "Stringification of self.transformStreamDefaultController": { + "status": "FAIL" + }, + "TransformStreamDefaultController interface: self.transformStreamDefaultController must inherit property \"desiredSize\" with the proper type": { + "status": "PASS" + }, + "TransformStreamDefaultController interface: self.transformStreamDefaultController must inherit property \"enqueue(optional any)\" with the proper type": { + "status": "PASS" + }, + "TransformStreamDefaultController interface: calling enqueue(optional any) on self.transformStreamDefaultController with too few arguments must throw TypeError": { + "status": "PASS" + }, + "TransformStreamDefaultController interface: self.transformStreamDefaultController must inherit property \"error(optional any)\" with the proper type": { + "status": "PASS" + }, + "TransformStreamDefaultController interface: calling error(optional any) on self.transformStreamDefaultController with too few arguments must throw TypeError": { + "status": "PASS" + }, + "TransformStreamDefaultController interface: self.transformStreamDefaultController must inherit property \"terminate()\" with the proper type": { + "status": "PASS" + }, + "ByteLengthQueuingStrategy interface: existence and properties of interface object": { + "status": "PASS" + }, + "ByteLengthQueuingStrategy interface object length": { + "status": "PASS" + }, + "ByteLengthQueuingStrategy interface object name": { + "status": "PASS" + }, + "ByteLengthQueuingStrategy interface: existence and properties of interface prototype object": { + "status": "PASS" + }, + "ByteLengthQueuingStrategy interface: existence and properties of interface prototype object's \"constructor\" property": { + "status": "PASS" + }, + "ByteLengthQueuingStrategy interface: existence and properties of interface prototype object's @@unscopables property": { + "status": "PASS" + }, + "ByteLengthQueuingStrategy interface: attribute highWaterMark": { + "status": "PASS" + }, + "ByteLengthQueuingStrategy interface: attribute size": { + "status": "FAIL" + }, + "ByteLengthQueuingStrategy must be primary interface of new ByteLengthQueuingStrategy({ highWaterMark: 5 })": { + "status": "PASS" + }, + "Stringification of new ByteLengthQueuingStrategy({ highWaterMark: 5 })": { + "status": "PASS" + }, + "ByteLengthQueuingStrategy interface: new ByteLengthQueuingStrategy({ highWaterMark: 5 }) must inherit property \"highWaterMark\" with the proper type": { + "status": "PASS" + }, + "ByteLengthQueuingStrategy interface: new ByteLengthQueuingStrategy({ highWaterMark: 5 }) must inherit property \"size\" with the proper type": { + "status": "PASS" + }, + "CountQueuingStrategy interface: existence and properties of interface object": { + "status": "PASS" + }, + "CountQueuingStrategy interface object length": { + "status": "PASS" + }, + "CountQueuingStrategy interface object name": { + "status": "PASS" + }, + "CountQueuingStrategy interface: existence and properties of interface prototype object": { + "status": "PASS" + }, + "CountQueuingStrategy interface: existence and properties of interface prototype object's \"constructor\" property": { + "status": "PASS" + }, + "CountQueuingStrategy interface: existence and properties of interface prototype object's @@unscopables property": { + "status": "PASS" + }, + "CountQueuingStrategy interface: attribute highWaterMark": { + "status": "PASS" + }, + "CountQueuingStrategy interface: attribute size": { + "status": "FAIL" + }, + "CountQueuingStrategy must be primary interface of new CountQueuingStrategy({ highWaterMark: 5 })": { + "status": "PASS" + }, + "Stringification of new CountQueuingStrategy({ highWaterMark: 5 })": { + "status": "PASS" + }, + "CountQueuingStrategy interface: new CountQueuingStrategy({ highWaterMark: 5 }) must inherit property \"highWaterMark\" with the proper type": { + "status": "PASS" + }, + "CountQueuingStrategy interface: new CountQueuingStrategy({ highWaterMark: 5 }) must inherit property \"size\" with the proper type": { + "status": "PASS" + } +} \ No newline at end of file diff --git a/tests/wpt-harness/expectations/streams/piping/general-addition.any.js.json b/tests/wpt-harness/expectations/streams/piping/general-addition.any.js.json new file mode 100644 index 00000000..9d9f793d --- /dev/null +++ b/tests/wpt-harness/expectations/streams/piping/general-addition.any.js.json @@ -0,0 +1,5 @@ +{ + "enqueue() must not synchronously call write algorithm": { + "status": "PASS" + } +} \ No newline at end of file diff --git a/tests/wpt-harness/expectations/streams/readable-byte-streams/enqueue-with-detached-buffer.any.js.json b/tests/wpt-harness/expectations/streams/readable-byte-streams/enqueue-with-detached-buffer.any.js.json new file mode 100644 index 00000000..577bfa37 --- /dev/null +++ b/tests/wpt-harness/expectations/streams/readable-byte-streams/enqueue-with-detached-buffer.any.js.json @@ -0,0 +1,5 @@ +{ + "enqueue after detaching byobRequest.view.buffer should throw": { + "status": "PASS" + } +} \ No newline at end of file diff --git a/tests/wpt-harness/expectations/streams/readable-byte-streams/non-transferable-buffers.any.js.json b/tests/wpt-harness/expectations/streams/readable-byte-streams/non-transferable-buffers.any.js.json new file mode 100644 index 00000000..8e9eced7 --- /dev/null +++ b/tests/wpt-harness/expectations/streams/readable-byte-streams/non-transferable-buffers.any.js.json @@ -0,0 +1,14 @@ +{ + "ReadableStream with byte source: read() with a non-transferable buffer": { + "status": "FAIL" + }, + "ReadableStream with byte source: fill() with a non-transferable buffer": { + "status": "FAIL" + }, + "ReadableStream with byte source: enqueue() with a non-transferable buffer": { + "status": "FAIL" + }, + "ReadableStream with byte source: respondWithNewView() with a non-transferable buffer": { + "status": "FAIL" + } +} \ No newline at end of file diff --git a/tests/wpt-harness/expectations/streams/readable-byte-streams/read-min.any.js.json b/tests/wpt-harness/expectations/streams/readable-byte-streams/read-min.any.js.json new file mode 100644 index 00000000..977bd160 --- /dev/null +++ b/tests/wpt-harness/expectations/streams/readable-byte-streams/read-min.any.js.json @@ -0,0 +1,74 @@ +{ + "ReadableStream with byte source: read({ min }) rejects if min is 0": { + "status": "FAIL" + }, + "ReadableStream with byte source: read({ min }) rejects if min is negative": { + "status": "FAIL" + }, + "ReadableStream with byte source: read({ min }) rejects if min is larger than view's length (Uint8Array)": { + "status": "FAIL" + }, + "ReadableStream with byte source: read({ min }) rejects if min is larger than view's length (Uint16Array)": { + "status": "FAIL" + }, + "ReadableStream with byte source: read({ min }) rejects if min is larger than view's length (DataView)": { + "status": "FAIL" + }, + "ReadableStream with byte source: read({ min }), then read()": { + "status": "FAIL" + }, + "ReadableStream with byte source: read({ min }) with a DataView": { + "status": "FAIL" + }, + "ReadableStream with byte source: enqueue(), then read({ min })": { + "status": "FAIL" + }, + "ReadableStream with byte source: read({ min: 3 }) on a 3-byte Uint8Array, then multiple enqueue() up to 3 bytes": { + "status": "FAIL" + }, + "ReadableStream with byte source: read({ min: 3 }) on a 5-byte Uint8Array, then multiple enqueue() up to 3 bytes": { + "status": "FAIL" + }, + "ReadableStream with byte source: read({ min: 3 }) on a 5-byte Uint8Array, then multiple enqueue() up to 4 bytes": { + "status": "FAIL" + }, + "ReadableStream with byte source: enqueue(), read({ min }) partially, then read()": { + "status": "PASS" + }, + "ReadableStream with byte source: read({ min }), then respondWithNewView() with a transferred ArrayBuffer": { + "status": "PASS" + }, + "ReadableStream with byte source: read({ min }) on a closed stream": { + "status": "PASS" + }, + "ReadableStream with byte source: read({ min }) when closed before view is filled": { + "status": "FAIL" + }, + "ReadableStream with byte source: read({ min }) when closed immediately after view is filled": { + "status": "FAIL" + }, + "ReadableStream with byte source: read({ min }) on an errored stream": { + "status": "PASS" + }, + "ReadableStream with byte source: read({ min }), then error()": { + "status": "PASS" + }, + "ReadableStream with byte source: getReader(), read({ min }), then cancel()": { + "status": "PASS" + }, + "ReadableStream with byte source: cancel() with partially filled pending read({ min }) request": { + "status": "FAIL" + }, + "ReadableStream with byte source: enqueue(), then read({ min }) with smaller views": { + "status": "PASS" + }, + "ReadableStream with byte source: 3 byte enqueue(), then close(), then read({ min }) with 2-element Uint16Array must fail": { + "status": "FAIL" + }, + "ReadableStream with byte source: read({ min }) with 2-element Uint16Array, then 3 byte enqueue(), then close() must fail": { + "status": "FAIL" + }, + "ReadableStream with byte source: tee() with read({ min }) from branch1 and read() from branch2": { + "status": "FAIL" + } +} \ No newline at end of file diff --git a/tests/wpt-harness/expectations/streams/readable-streams/async-iterator.any.js.json b/tests/wpt-harness/expectations/streams/readable-streams/async-iterator.any.js.json new file mode 100644 index 00000000..ad743284 --- /dev/null +++ b/tests/wpt-harness/expectations/streams/readable-streams/async-iterator.any.js.json @@ -0,0 +1,125 @@ +{ + "Async iterator instances should have the correct list of properties": { + "status": "FAIL" + }, + "Async-iterating a push source": { + "status": "FAIL" + }, + "Async-iterating a pull source": { + "status": "FAIL" + }, + "Async-iterating a push source with undefined values": { + "status": "FAIL" + }, + "Async-iterating a pull source with undefined values": { + "status": "FAIL" + }, + "Async-iterating a pull source manually": { + "status": "FAIL" + }, + "Async-iterating an errored stream throws": { + "status": "FAIL" + }, + "Async-iterating a closed stream never executes the loop body, but works fine": { + "status": "FAIL" + }, + "Async-iterating an empty but not closed/errored stream never executes the loop body and stalls the async function": { + "status": "FAIL" + }, + "Async-iterating a partially consumed stream": { + "status": "FAIL" + }, + "Cancellation behavior when throwing inside loop body; preventCancel = false": { + "status": "FAIL" + }, + "Cancellation behavior when throwing inside loop body; preventCancel = true": { + "status": "FAIL" + }, + "Cancellation behavior when breaking inside loop body; preventCancel = false": { + "status": "FAIL" + }, + "Cancellation behavior when breaking inside loop body; preventCancel = true": { + "status": "FAIL" + }, + "Cancellation behavior when returning inside loop body; preventCancel = false": { + "status": "FAIL" + }, + "Cancellation behavior when returning inside loop body; preventCancel = true": { + "status": "FAIL" + }, + "Cancellation behavior when manually calling return(); preventCancel = false": { + "status": "FAIL" + }, + "Cancellation behavior when manually calling return(); preventCancel = true": { + "status": "FAIL" + }, + "next() rejects if the stream errors": { + "status": "FAIL" + }, + "return() does not rejects if the stream has not errored yet": { + "status": "FAIL" + }, + "return() rejects if the stream has errored": { + "status": "FAIL" + }, + "next() that succeeds; next() that reports an error; next()": { + "status": "FAIL" + }, + "next() that succeeds; next() that reports an error(); next() [no awaiting]": { + "status": "FAIL" + }, + "next() that succeeds; next() that reports an error(); return()": { + "status": "FAIL" + }, + "next() that succeeds; next() that reports an error(); return() [no awaiting]": { + "status": "FAIL" + }, + "next() that succeeds; return()": { + "status": "FAIL" + }, + "next() that succeeds; return() [no awaiting]": { + "status": "FAIL" + }, + "return(); next()": { + "status": "FAIL" + }, + "return(); next() [no awaiting]": { + "status": "FAIL" + }, + "return(); next() with delayed cancel()": { + "status": "FAIL" + }, + "return(); next() with delayed cancel() [no awaiting]": { + "status": "FAIL" + }, + "return(); return()": { + "status": "FAIL" + }, + "return(); return() [no awaiting]": { + "status": "FAIL" + }, + "values() throws if there's already a lock": { + "status": "FAIL" + }, + "Acquiring a reader after exhaustively async-iterating a stream": { + "status": "FAIL" + }, + "Acquiring a reader after return()ing from a stream that errors": { + "status": "FAIL" + }, + "Acquiring a reader after partially async-iterating a stream": { + "status": "FAIL" + }, + "Acquiring a reader and reading the remaining chunks after partially async-iterating a stream with preventCancel = true": { + "status": "FAIL" + }, + "return() should unlock the stream synchronously when preventCancel = false": { + "status": "FAIL" + }, + "return() should unlock the stream synchronously when preventCancel = true": { + "status": "FAIL" + }, + "close() while next() is pending": { + "status": "FAIL" + } +} \ No newline at end of file diff --git a/tests/wpt-harness/expectations/streams/readable-streams/cancel.any.js.json b/tests/wpt-harness/expectations/streams/readable-streams/cancel.any.js.json index 0f99335b..35aed23d 100644 --- a/tests/wpt-harness/expectations/streams/readable-streams/cancel.any.js.json +++ b/tests/wpt-harness/expectations/streams/readable-streams/cancel.any.js.json @@ -28,5 +28,8 @@ }, "ReadableStream cancellation: cancelling before start finishes should prevent pull() from being called": { "status": "PASS" + }, + "ReadableStream cancellation: underlyingSource.cancel() should called, even with pending pull": { + "status": "PASS" } } \ No newline at end of file diff --git a/tests/wpt-harness/expectations/streams/readable-streams/from.any.js.json b/tests/wpt-harness/expectations/streams/readable-streams/from.any.js.json new file mode 100644 index 00000000..51276962 --- /dev/null +++ b/tests/wpt-harness/expectations/streams/readable-streams/from.any.js.json @@ -0,0 +1,119 @@ +{ + "ReadableStream.from accepts an array of values": { + "status": "FAIL" + }, + "ReadableStream.from accepts an array of promises": { + "status": "FAIL" + }, + "ReadableStream.from accepts an array iterator": { + "status": "FAIL" + }, + "ReadableStream.from accepts a string": { + "status": "FAIL" + }, + "ReadableStream.from accepts a Set": { + "status": "FAIL" + }, + "ReadableStream.from accepts a Set iterator": { + "status": "FAIL" + }, + "ReadableStream.from accepts a sync generator": { + "status": "FAIL" + }, + "ReadableStream.from accepts an async generator": { + "status": "FAIL" + }, + "ReadableStream.from accepts a sync iterable of values": { + "status": "FAIL" + }, + "ReadableStream.from accepts a sync iterable of promises": { + "status": "FAIL" + }, + "ReadableStream.from accepts an async iterable": { + "status": "FAIL" + }, + "ReadableStream.from accepts a ReadableStream": { + "status": "FAIL" + }, + "ReadableStream.from accepts a ReadableStream async iterator": { + "status": "FAIL" + }, + "ReadableStream.from throws on invalid iterables; specifically null": { + "status": "PASS" + }, + "ReadableStream.from throws on invalid iterables; specifically undefined": { + "status": "PASS" + }, + "ReadableStream.from throws on invalid iterables; specifically 0": { + "status": "PASS" + }, + "ReadableStream.from throws on invalid iterables; specifically NaN": { + "status": "PASS" + }, + "ReadableStream.from throws on invalid iterables; specifically true": { + "status": "PASS" + }, + "ReadableStream.from throws on invalid iterables; specifically {}": { + "status": "PASS" + }, + "ReadableStream.from throws on invalid iterables; specifically Object.create(null)": { + "status": "PASS" + }, + "ReadableStream.from throws on invalid iterables; specifically a function": { + "status": "PASS" + }, + "ReadableStream.from throws on invalid iterables; specifically a symbol": { + "status": "PASS" + }, + "ReadableStream.from throws on invalid iterables; specifically an object with a non-callable @@iterator method": { + "status": "PASS" + }, + "ReadableStream.from throws on invalid iterables; specifically an object with a non-callable @@asyncIterator method": { + "status": "PASS" + }, + "ReadableStream.from re-throws errors from calling the @@iterator method": { + "status": "FAIL" + }, + "ReadableStream.from re-throws errors from calling the @@asyncIterator method": { + "status": "FAIL" + }, + "ReadableStream.from ignores @@iterator if @@asyncIterator exists": { + "status": "FAIL" + }, + "ReadableStream.from ignores a null @@asyncIterator": { + "status": "FAIL" + }, + "ReadableStream.from accepts an empty iterable": { + "status": "FAIL" + }, + "ReadableStream.from: stream errors when next() rejects": { + "status": "FAIL" + }, + "ReadableStream.from: stream stalls when next() never settles": { + "status": "FAIL" + }, + "ReadableStream.from: calls next() after first read()": { + "status": "FAIL" + }, + "ReadableStream.from: cancelling the returned stream calls and awaits return()": { + "status": "FAIL" + }, + "ReadableStream.from: return() is not called when iterator completes normally": { + "status": "FAIL" + }, + "ReadableStream.from: cancel() rejects when return() fulfills with a non-object": { + "status": "FAIL" + }, + "ReadableStream.from: reader.read() inside next()": { + "status": "FAIL" + }, + "ReadableStream.from: reader.cancel() inside next()": { + "status": "FAIL" + }, + "ReadableStream.from: reader.cancel() inside return()": { + "status": "FAIL" + }, + "ReadableStream.from(array), push() to array while reading": { + "status": "FAIL" + } +} \ No newline at end of file diff --git a/tests/wpt-harness/expectations/streams/readable-streams/owning-type-message-port.any.js.json b/tests/wpt-harness/expectations/streams/readable-streams/owning-type-message-port.any.js.json new file mode 100644 index 00000000..ad087615 --- /dev/null +++ b/tests/wpt-harness/expectations/streams/readable-streams/owning-type-message-port.any.js.json @@ -0,0 +1,8 @@ +{ + "Transferred MessageChannel works as expected": { + "status": "FAIL" + }, + "Second branch of owning ReadableStream tee should end up into errors with transfer only values": { + "status": "FAIL" + } +} \ No newline at end of file diff --git a/tests/wpt-harness/expectations/streams/readable-streams/owning-type-video-frame.any.js.json b/tests/wpt-harness/expectations/streams/readable-streams/owning-type-video-frame.any.js.json new file mode 100644 index 00000000..7498ec65 --- /dev/null +++ b/tests/wpt-harness/expectations/streams/readable-streams/owning-type-video-frame.any.js.json @@ -0,0 +1,17 @@ +{ + "ReadableStream of type owning should close serialized chunks": { + "status": "FAIL" + }, + "ReadableStream of type owning should transfer JS chunks with transferred values": { + "status": "FAIL" + }, + "ReadableStream of type owning should error when trying to enqueue not serializable values": { + "status": "FAIL" + }, + "ReadableStream of type owning should clone serializable objects when teeing": { + "status": "FAIL" + }, + "ReadableStream of type owning should clone JS Objects with serializables when teeing": { + "status": "FAIL" + } +} \ No newline at end of file diff --git a/tests/wpt-harness/expectations/streams/readable-streams/owning-type.any.js.json b/tests/wpt-harness/expectations/streams/readable-streams/owning-type.any.js.json new file mode 100644 index 00000000..52ebcab1 --- /dev/null +++ b/tests/wpt-harness/expectations/streams/readable-streams/owning-type.any.js.json @@ -0,0 +1,17 @@ +{ + "ReadableStream can be constructed with owning type": { + "status": "FAIL" + }, + "ReadableStream of type owning should call start with a ReadableStreamDefaultController": { + "status": "FAIL" + }, + "ReadableStream should be able to call enqueue with an empty transfer list": { + "status": "FAIL" + }, + "ReadableStream should check transfer parameter": { + "status": "FAIL" + }, + "ReadableStream of type owning should transfer enqueued chunks": { + "status": "FAIL" + } +} \ No newline at end of file diff --git a/tests/wpt-harness/expectations/streams/transform-streams/cancel.any.js.json b/tests/wpt-harness/expectations/streams/transform-streams/cancel.any.js.json new file mode 100644 index 00000000..25da64f4 --- /dev/null +++ b/tests/wpt-harness/expectations/streams/transform-streams/cancel.any.js.json @@ -0,0 +1,23 @@ +{ + "cancelling the readable side should call transformer.cancel()": { + "status": "FAIL" + }, + "cancelling the readable side should reject if transformer.cancel() throws": { + "status": "FAIL" + }, + "aborting the writable side should call transformer.abort()": { + "status": "FAIL" + }, + "aborting the writable side should reject if transformer.cancel() throws": { + "status": "FAIL" + }, + "closing the writable side should reject if a parallel transformer.cancel() throws": { + "status": "FAIL" + }, + "readable.cancel() and a parallel writable.close() should reject if a transformer.cancel() calls controller.error()": { + "status": "FAIL" + }, + "writable.abort() and readable.cancel() should reject if a transformer.cancel() calls controller.error()": { + "status": "FAIL" + } +} \ No newline at end of file diff --git a/tests/wpt-harness/expectations/streams/transform-streams/errors.any.js.json b/tests/wpt-harness/expectations/streams/transform-streams/errors.any.js.json index 80a278c5..c414fcd4 100644 --- a/tests/wpt-harness/expectations/streams/transform-streams/errors.any.js.json +++ b/tests/wpt-harness/expectations/streams/transform-streams/errors.any.js.json @@ -32,7 +32,7 @@ "an exception from transform() should error the stream if terminate has been requested but not completed": { "status": "PASS" }, - "abort should set the close reason for the writable when it happens before cancel during start, but cancel should still succeed": { + "abort should set the close reason for the writable when it happens before cancel during start, and cancel should reject": { "status": "PASS" }, "abort should set the close reason for the writable when it happens before cancel during underlying sink write, but cancel should still succeed": { @@ -41,7 +41,10 @@ "controller.error() should do nothing the second time it is called": { "status": "PASS" }, - "controller.error() should do nothing after readable.cancel()": { + "controller.error() should close writable immediately after readable.cancel()": { + "status": "FAIL" + }, + "controller.error() should do nothing after readable.cancel() resolves": { "status": "PASS" }, "controller.error() should do nothing after writable.abort() has completed": { diff --git a/tests/wpt-harness/expectations/streams/transform-streams/flush.any.js.json b/tests/wpt-harness/expectations/streams/transform-streams/flush.any.js.json index 8b2df7bb..37207be9 100644 --- a/tests/wpt-harness/expectations/streams/transform-streams/flush.any.js.json +++ b/tests/wpt-harness/expectations/streams/transform-streams/flush.any.js.json @@ -13,5 +13,8 @@ }, "error() during flush should cause writer.close() to reject": { "status": "PASS" + }, + "closing the writable side should call transformer.flush() and a parallel readable.cancel() should not reject": { + "status": "PASS" } } \ No newline at end of file diff --git a/tests/wpt-harness/expectations/streams/transform-streams/general.any.js.json b/tests/wpt-harness/expectations/streams/transform-streams/general.any.js.json index d73087db..033d758e 100644 --- a/tests/wpt-harness/expectations/streams/transform-streams/general.any.js.json +++ b/tests/wpt-harness/expectations/streams/transform-streams/general.any.js.json @@ -59,7 +59,10 @@ "controller.terminate() should do nothing the second time it is called": { "status": "PASS" }, - "terminate() should do nothing after readable.cancel()": { + "terminate() should abort writable immediately after readable.cancel()": { + "status": "FAIL" + }, + "terminate() should do nothing after readable.cancel() resolves": { "status": "PASS" }, "start() should not be called twice": { diff --git a/tests/wpt-harness/expectations/streams/transform-streams/reentrant-strategies.any.js.json b/tests/wpt-harness/expectations/streams/transform-streams/reentrant-strategies.any.js.json index 0ed3e3c7..8904254b 100644 --- a/tests/wpt-harness/expectations/streams/transform-streams/reentrant-strategies.any.js.json +++ b/tests/wpt-harness/expectations/streams/transform-streams/reentrant-strategies.any.js.json @@ -30,6 +30,6 @@ "status": "PASS" }, "writer.abort() inside size() should work": { - "status": "PASS" + "status": "FAIL" } } \ No newline at end of file diff --git a/tests/wpt-harness/expectations/streams/transform-streams/terminate.any.js.json b/tests/wpt-harness/expectations/streams/transform-streams/terminate.any.js.json index 53133237..aa20c02c 100644 --- a/tests/wpt-harness/expectations/streams/transform-streams/terminate.any.js.json +++ b/tests/wpt-harness/expectations/streams/transform-streams/terminate.any.js.json @@ -1,18 +1,18 @@ { "controller.terminate() should error pipeTo()": { - "status": "FAIL" + "status": "PASS" }, "controller.terminate() should prevent remaining chunks from being processed": { - "status": "FAIL" + "status": "PASS" }, "controller.enqueue() should throw after controller.terminate()": { "status": "PASS" }, "controller.error() after controller.terminate() with queued chunk should error the readable": { - "status": "FAIL" + "status": "PASS" }, "controller.error() after controller.terminate() without queued chunk should do nothing": { - "status": "FAIL" + "status": "PASS" }, "controller.terminate() inside flush() should not prevent writer.close() from succeeding": { "status": "PASS" diff --git a/tests/wpt-harness/expectations/url/historical.any.js.json b/tests/wpt-harness/expectations/url/historical.any.js.json new file mode 100644 index 00000000..519b66e8 --- /dev/null +++ b/tests/wpt-harness/expectations/url/historical.any.js.json @@ -0,0 +1,23 @@ +{ + "searchParams on location object": { + "status": "FAIL" + }, + "Setting URL's href attribute and base URLs": { + "status": "FAIL" + }, + "URL.domainToASCII should be undefined": { + "status": "PASS" + }, + "URL.domainToUnicode should be undefined": { + "status": "PASS" + }, + "URL: no structured serialize/deserialize support": { + "status": "PASS" + }, + "URLSearchParams: no structured serialize/deserialize support": { + "status": "FAIL" + }, + "Constructor only takes strings": { + "status": "FAIL" + } +} \ No newline at end of file diff --git a/tests/wpt-harness/expectations/url/url-constructor.any.js.json b/tests/wpt-harness/expectations/url/url-constructor.any.js.json index d532457d..c92a87df 100644 --- a/tests/wpt-harness/expectations/url/url-constructor.any.js.json +++ b/tests/wpt-harness/expectations/url/url-constructor.any.js.json @@ -51,25 +51,25 @@ "status": "PASS" }, "Parsing: against ": { - "status": "FAIL" + "status": "PASS" }, "Parsing: against ": { - "status": "FAIL" + "status": "PASS" }, "Parsing: against ": { "status": "PASS" }, "Parsing: against ": { - "status": "FAIL" + "status": "PASS" }, "Parsing: against ": { - "status": "FAIL" + "status": "PASS" }, "Parsing: against ": { - "status": "FAIL" + "status": "PASS" }, "Parsing: against ": { - "status": "FAIL" + "status": "PASS" }, "Parsing: <> against ": { "status": "PASS" @@ -161,6 +161,12 @@ "Parsing: against ": { "status": "PASS" }, + "Parsing: without base": { + "status": "PASS" + }, + "Parsing: without base": { + "status": "PASS" + }, "Parsing: against ": { "status": "PASS" }, @@ -198,16 +204,16 @@ "status": "PASS" }, "Parsing: against ": { - "status": "FAIL" + "status": "PASS" }, "Parsing: against ": { - "status": "FAIL" + "status": "PASS" }, "Parsing: against ": { - "status": "FAIL" + "status": "PASS" }, "Parsing: against ": { - "status": "FAIL" + "status": "PASS" }, "Parsing: against ": { "status": "PASS" @@ -216,7 +222,7 @@ "status": "PASS" }, "Parsing: against ": { - "status": "FAIL" + "status": "PASS" }, "Parsing: against ": { "status": "PASS" @@ -240,16 +246,16 @@ "status": "PASS" }, "Parsing: without base": { - "status": "FAIL" + "status": "PASS" }, "Parsing: without base": { - "status": "FAIL" + "status": "PASS" }, "Parsing: without base": { - "status": "FAIL" + "status": "PASS" }, "Parsing: without base": { - "status": "FAIL" + "status": "PASS" }, "Parsing: against ": { "status": "PASS" @@ -386,6 +392,21 @@ "Parsing: against ": { "status": "PASS" }, + "Parsing: without base": { + "status": "PASS" + }, + "Parsing: without base": { + "status": "PASS" + }, + "Parsing: without base": { + "status": "FAIL" + }, + "Parsing: without base": { + "status": "PASS" + }, + "Parsing: without base": { + "status": "PASS" + }, "Parsing: without base": { "status": "PASS" }, @@ -516,7 +537,7 @@ "status": "PASS" }, "Parsing: without base": { - "status": "FAIL" + "status": "PASS" }, "Parsing: without base": { "status": "PASS" @@ -534,7 +555,7 @@ "status": "PASS" }, "Parsing: without base": { - "status": "FAIL" + "status": "PASS" }, "Parsing: without base": { "status": "PASS" @@ -678,34 +699,34 @@ "status": "PASS" }, "Parsing: without base": { - "status": "FAIL" + "status": "PASS" }, "Parsing: without base": { - "status": "FAIL" + "status": "PASS" }, "Parsing: without base": { - "status": "FAIL" + "status": "PASS" }, "Parsing: without base": { - "status": "FAIL" + "status": "PASS" }, "Parsing: without base": { - "status": "FAIL" + "status": "PASS" }, "Parsing: without base": { - "status": "FAIL" + "status": "PASS" }, "Parsing: without base": { - "status": "FAIL" + "status": "PASS" }, "Parsing: without base": { - "status": "FAIL" + "status": "PASS" }, "Parsing: without base": { - "status": "FAIL" + "status": "PASS" }, "Parsing: without base": { - "status": "FAIL" + "status": "PASS" }, "Parsing: without base": { "status": "PASS" @@ -720,13 +741,13 @@ "status": "PASS" }, "Parsing: without base": { - "status": "FAIL" + "status": "PASS" }, "Parsing: without base": { - "status": "FAIL" + "status": "PASS" }, "Parsing: without base": { - "status": "FAIL" + "status": "PASS" }, "Parsing: without base": { "status": "PASS" @@ -776,23 +797,29 @@ "Parsing: against ": { "status": "PASS" }, + "Parsing: without base": { + "status": "PASS" + }, + "Parsing: against ": { + "status": "PASS" + }, "Parsing: against ": { "status": "PASS" }, "Parsing: against ": { - "status": "FAIL" + "status": "PASS" }, "Parsing: against ": { - "status": "FAIL" + "status": "PASS" }, "Parsing: against ": { - "status": "FAIL" + "status": "PASS" }, "Parsing: against ": { - "status": "FAIL" + "status": "PASS" }, "Parsing: against ": { - "status": "FAIL" + "status": "PASS" }, "Parsing: against ": { "status": "PASS" @@ -804,52 +831,52 @@ "status": "PASS" }, "Parsing: against ": { - "status": "FAIL" + "status": "PASS" }, "Parsing: against ": { - "status": "FAIL" + "status": "PASS" }, "Parsing: without base": { - "status": "FAIL" + "status": "PASS" }, "Parsing: without base": { - "status": "FAIL" + "status": "PASS" }, "Parsing: without base": { "status": "PASS" }, "Parsing: without base": { - "status": "FAIL" + "status": "PASS" }, "Parsing: without base": { - "status": "FAIL" + "status": "PASS" }, "Parsing: without base": { - "status": "FAIL" + "status": "PASS" }, "Parsing: without base": { - "status": "FAIL" + "status": "PASS" }, "Parsing: without base": { - "status": "FAIL" + "status": "PASS" }, "Parsing: without base": { - "status": "FAIL" + "status": "PASS" }, "Parsing: against ": { "status": "PASS" }, "Parsing: against ": { - "status": "FAIL" + "status": "PASS" }, "Parsing: against ": { - "status": "FAIL" + "status": "PASS" }, "Parsing: against ": { - "status": "FAIL" + "status": "PASS" }, "Parsing: against ": { - "status": "FAIL" + "status": "PASS" }, "Parsing: against ": { "status": "PASS" @@ -861,13 +888,13 @@ "status": "PASS" }, "Parsing: against ": { - "status": "FAIL" + "status": "PASS" }, "Parsing: against ": { - "status": "FAIL" + "status": "PASS" }, "Parsing: against ": { - "status": "FAIL" + "status": "PASS" }, "Parsing: against ": { "status": "PASS" @@ -876,16 +903,16 @@ "status": "PASS" }, "Parsing: against ": { - "status": "FAIL" + "status": "PASS" }, "Parsing: against ": { - "status": "FAIL" + "status": "PASS" }, "Parsing: against ": { - "status": "FAIL" + "status": "PASS" }, "Parsing: without base": { - "status": "FAIL" + "status": "PASS" }, "Parsing: against ": { "status": "PASS" @@ -900,34 +927,34 @@ "status": "PASS" }, "Parsing: without base": { - "status": "FAIL" + "status": "PASS" }, "Parsing: against ": { - "status": "FAIL" + "status": "PASS" }, "Parsing: against ": { - "status": "FAIL" + "status": "PASS" }, "Parsing: against ": { - "status": "FAIL" + "status": "PASS" }, "Parsing: against ": { - "status": "FAIL" + "status": "PASS" }, "Parsing: against ": { - "status": "FAIL" + "status": "PASS" }, "Parsing: against ": { - "status": "FAIL" + "status": "PASS" }, "Parsing: against ": { - "status": "FAIL" + "status": "PASS" }, "Parsing: against ": { - "status": "FAIL" + "status": "PASS" }, "Parsing: against ": { - "status": "FAIL" + "status": "PASS" }, "Parsing: against ": { "status": "PASS" @@ -975,10 +1002,10 @@ "status": "PASS" }, "Parsing: against ": { - "status": "FAIL" + "status": "PASS" }, "Parsing: against ": { - "status": "FAIL" + "status": "PASS" }, "Parsing: against ": { "status": "PASS" @@ -990,10 +1017,10 @@ "status": "PASS" }, "Parsing: <../i> against ": { - "status": "FAIL" + "status": "PASS" }, "Parsing: <../i> against ": { - "status": "FAIL" + "status": "PASS" }, "Parsing: <../i> against ": { "status": "PASS" @@ -1005,10 +1032,10 @@ "status": "PASS" }, "Parsing: against ": { - "status": "FAIL" + "status": "PASS" }, "Parsing: against ": { - "status": "FAIL" + "status": "PASS" }, "Parsing: against ": { "status": "PASS" @@ -1020,10 +1047,10 @@ "status": "PASS" }, "Parsing: against ": { - "status": "FAIL" + "status": "PASS" }, "Parsing: against ": { - "status": "FAIL" + "status": "PASS" }, "Parsing: against ": { "status": "PASS" @@ -1068,16 +1095,16 @@ "status": "PASS" }, "Parsing: without base": { - "status": "FAIL" + "status": "PASS" }, "Parsing: without base": { - "status": "FAIL" + "status": "PASS" }, "Parsing: without base": { - "status": "FAIL" + "status": "PASS" }, "Parsing: without base": { - "status": "FAIL" + "status": "PASS" }, "Parsing: against ": { "status": "PASS" @@ -1097,35 +1124,32 @@ "Parsing: without base": { "status": "PASS" }, - "Parsing: without base": { - "status": "PASS" - }, "Parsing: without base": { - "status": "FAIL" + "status": "PASS" }, "Parsing: without base": { - "status": "FAIL" + "status": "PASS" }, "Parsing: without base": { - "status": "FAIL" + "status": "PASS" }, "Parsing: b> without base": { - "status": "FAIL" + "status": "PASS" }, "Parsing: without base": { - "status": "FAIL" + "status": "PASS" }, "Parsing: without base": { - "status": "FAIL" + "status": "PASS" }, "Parsing: without base": { - "status": "FAIL" + "status": "PASS" }, "Parsing: without base": { - "status": "FAIL" + "status": "PASS" }, "Parsing: without base": { - "status": "FAIL" + "status": "PASS" }, "Parsing: without base": { "status": "PASS" @@ -1137,118 +1161,118 @@ "status": "PASS" }, "Parsing: without base": { - "status": "FAIL" + "status": "PASS" }, "Parsing: without base": { - "status": "FAIL" + "status": "PASS" }, "Parsing: without base": { - "status": "FAIL" + "status": "PASS" }, "Parsing: without base": { - "status": "FAIL" + "status": "PASS" }, "Parsing: without base": { - "status": "FAIL" + "status": "PASS" }, "Parsing: without base": { - "status": "FAIL" + "status": "PASS" }, "Parsing: without base": { - "status": "FAIL" + "status": "PASS" }, "Parsing: without base": { - "status": "FAIL" + "status": "PASS" }, "Parsing: without base": { - "status": "FAIL" + "status": "PASS" }, "Parsing: without base": { - "status": "FAIL" + "status": "PASS" }, "Parsing: without base": { - "status": "FAIL" + "status": "PASS" }, "Parsing: without base": { - "status": "FAIL" + "status": "PASS" }, "Parsing: without base": { - "status": "FAIL" + "status": "PASS" }, "Parsing: without base": { - "status": "FAIL" + "status": "PASS" }, "Parsing: without base": { - "status": "FAIL" + "status": "PASS" }, "Parsing: without base": { - "status": "FAIL" + "status": "PASS" }, "Parsing: without base": { - "status": "FAIL" + "status": "PASS" }, "Parsing: without base": { - "status": "FAIL" + "status": "PASS" }, "Parsing: without base": { - "status": "FAIL" + "status": "PASS" }, "Parsing: without base": { - "status": "FAIL" + "status": "PASS" }, "Parsing: without base": { - "status": "FAIL" + "status": "PASS" }, "Parsing: without base": { - "status": "FAIL" + "status": "PASS" }, "Parsing: without base": { - "status": "FAIL" + "status": "PASS" }, "Parsing: without base": { - "status": "FAIL" + "status": "PASS" }, "Parsing: without base": { - "status": "FAIL" + "status": "PASS" }, "Parsing: without base": { - "status": "FAIL" + "status": "PASS" }, "Parsing: without base": { - "status": "FAIL" + "status": "PASS" }, "Parsing: without base": { - "status": "FAIL" + "status": "PASS" }, "Parsing: without base": { - "status": "FAIL" + "status": "PASS" }, "Parsing: without base": { - "status": "FAIL" + "status": "PASS" }, "Parsing: without base": { - "status": "FAIL" + "status": "PASS" }, "Parsing: without base": { - "status": "FAIL" + "status": "PASS" }, "Parsing: b> without base": { - "status": "FAIL" + "status": "PASS" }, "Parsing: without base": { - "status": "FAIL" + "status": "PASS" }, "Parsing: without base": { - "status": "FAIL" + "status": "PASS" }, "Parsing: without base": { - "status": "FAIL" + "status": "PASS" }, "Parsing: without base": { - "status": "FAIL" + "status": "PASS" }, "Parsing: without base": { - "status": "FAIL" + "status": "PASS" }, "Parsing: without base": { "status": "PASS" @@ -1260,142 +1284,142 @@ "status": "PASS" }, "Parsing: without base": { - "status": "FAIL" + "status": "PASS" }, "Parsing: without base": { - "status": "FAIL" + "status": "PASS" }, "Parsing: without base": { - "status": "FAIL" + "status": "PASS" }, "Parsing: without base": { - "status": "FAIL" + "status": "PASS" }, "Parsing: without base": { - "status": "FAIL" + "status": "PASS" }, "Parsing: without base": { - "status": "FAIL" + "status": "PASS" }, "Parsing: without base": { - "status": "FAIL" + "status": "PASS" }, "Parsing: without base": { - "status": "FAIL" + "status": "PASS" }, "Parsing: without base": { - "status": "FAIL" + "status": "PASS" }, "Parsing: without base": { - "status": "FAIL" + "status": "PASS" }, "Parsing: without base": { - "status": "FAIL" + "status": "PASS" }, "Parsing: without base": { - "status": "FAIL" + "status": "PASS" }, "Parsing: without base": { - "status": "FAIL" + "status": "PASS" }, "Parsing: without base": { - "status": "FAIL" + "status": "PASS" }, "Parsing: without base": { - "status": "FAIL" + "status": "PASS" }, "Parsing: without base": { - "status": "FAIL" + "status": "PASS" }, "Parsing: without base": { - "status": "FAIL" + "status": "PASS" }, "Parsing: without base": { - "status": "FAIL" + "status": "PASS" }, "Parsing: without base": { - "status": "FAIL" + "status": "PASS" }, "Parsing: without base": { - "status": "FAIL" + "status": "PASS" }, "Parsing: without base": { - "status": "FAIL" + "status": "PASS" }, "Parsing: without base": { - "status": "FAIL" + "status": "PASS" }, "Parsing: without base": { - "status": "FAIL" + "status": "PASS" }, "Parsing: without base": { - "status": "FAIL" + "status": "PASS" }, "Parsing: without base": { - "status": "FAIL" + "status": "PASS" }, "Parsing: without base": { - "status": "FAIL" + "status": "PASS" }, "Parsing: without base": { - "status": "FAIL" + "status": "PASS" }, "Parsing: without base": { - "status": "FAIL" + "status": "PASS" }, "Parsing: without base": { - "status": "FAIL" + "status": "PASS" }, "Parsing: without base": { - "status": "FAIL" + "status": "PASS" }, "Parsing: without base": { - "status": "FAIL" + "status": "PASS" }, "Parsing: without base": { - "status": "FAIL" + "status": "PASS" }, "Parsing: without base": { - "status": "FAIL" + "status": "PASS" }, "Parsing: without base": { - "status": "FAIL" + "status": "PASS" }, "Parsing: without base": { - "status": "FAIL" + "status": "PASS" }, "Parsing: without base": { - "status": "FAIL" + "status": "PASS" }, "Parsing: without base": { - "status": "FAIL" + "status": "PASS" }, "Parsing: without base": { - "status": "FAIL" + "status": "PASS" }, "Parsing: without base": { - "status": "FAIL" + "status": "PASS" }, "Parsing: without base": { - "status": "FAIL" + "status": "PASS" }, "Parsing: without base": { - "status": "FAIL" + "status": "PASS" }, "Parsing: without base": { - "status": "FAIL" + "status": "PASS" }, "Parsing: without base": { - "status": "FAIL" + "status": "PASS" }, "Parsing: without base": { - "status": "FAIL" + "status": "PASS" }, "Parsing: without base": { - "status": "FAIL" + "status": "PASS" }, "Parsing: without base": { - "status": "FAIL" + "status": "PASS" }, "Parsing: without base": { "status": "PASS" @@ -1404,16 +1428,16 @@ "status": "PASS" }, "Parsing: without base": { - "status": "FAIL" + "status": "PASS" }, "Parsing: without base": { - "status": "FAIL" + "status": "PASS" }, "Parsing: without base": { - "status": "FAIL" + "status": "PASS" }, "Parsing: without base": { - "status": "FAIL" + "status": "PASS" }, "Parsing: without base": { "status": "PASS" @@ -1443,7 +1467,7 @@ "status": "PASS" }, "Parsing: against ": { - "status": "FAIL" + "status": "PASS" }, "Parsing: against ": { "status": "PASS" @@ -1494,7 +1518,7 @@ "status": "PASS" }, "Parsing: against ": { - "status": "FAIL" + "status": "PASS" }, "Parsing: against ": { "status": "PASS" @@ -1503,25 +1527,25 @@ "status": "PASS" }, "Parsing: against ": { - "status": "FAIL" + "status": "PASS" }, "Parsing: against ": { "status": "PASS" }, "Parsing: against ": { - "status": "FAIL" + "status": "PASS" }, "Parsing: against ": { - "status": "FAIL" + "status": "PASS" }, "Parsing: without base": { "status": "PASS" }, "Parsing: without base": { - "status": "FAIL" + "status": "PASS" }, "Parsing: without base": { - "status": "FAIL" + "status": "PASS" }, "Parsing: without base": { "status": "PASS" @@ -1530,25 +1554,25 @@ "status": "PASS" }, "Parsing: without base": { - "status": "FAIL" + "status": "PASS" }, "Parsing: without base": { - "status": "FAIL" + "status": "PASS" }, "Parsing: without base": { - "status": "FAIL" + "status": "PASS" }, "Parsing: without base": { - "status": "FAIL" + "status": "PASS" }, "Parsing: without base": { - "status": "FAIL" + "status": "PASS" }, "Parsing: without base": { - "status": "FAIL" + "status": "PASS" }, "Parsing: without base": { - "status": "FAIL" + "status": "PASS" }, "Parsing: without base": { "status": "PASS" @@ -1752,7 +1776,7 @@ "status": "PASS" }, "Parsing: <\\\\\\.\\Y:> without base": { - "status": "FAIL" + "status": "PASS" }, "Parsing: without base": { "status": "PASS" @@ -1767,7 +1791,7 @@ "status": "PASS" }, "Parsing: <\\\\\\.\\y:> without base": { - "status": "FAIL" + "status": "PASS" }, "Parsing: without base": { "status": "FAIL" @@ -1806,43 +1830,43 @@ "status": "PASS" }, "Parsing: against ": { - "status": "FAIL" + "status": "PASS" }, "Parsing: without base": { - "status": "FAIL" + "status": "PASS" }, "Parsing: without base": { - "status": "FAIL" + "status": "PASS" }, "Parsing: without base": { - "status": "FAIL" + "status": "PASS" }, "Parsing: without base": { - "status": "FAIL" + "status": "PASS" }, "Parsing: without base": { - "status": "FAIL" + "status": "PASS" }, "Parsing: without base": { - "status": "FAIL" + "status": "PASS" }, "Parsing: without base": { - "status": "FAIL" + "status": "PASS" }, "Parsing: without base": { - "status": "FAIL" + "status": "PASS" }, "Parsing: without base": { - "status": "FAIL" + "status": "PASS" }, "Parsing: against ": { - "status": "FAIL" + "status": "PASS" }, "Parsing: against ": { - "status": "FAIL" + "status": "PASS" }, "Parsing: against ": { - "status": "FAIL" + "status": "PASS" }, "Parsing: without base": { "status": "PASS" @@ -1965,7 +1989,7 @@ "status": "PASS" }, "Parsing: without base": { - "status": "FAIL" + "status": "PASS" }, "Parsing: without base": { "status": "PASS" @@ -2010,7 +2034,7 @@ "status": "PASS" }, "Parsing: without base": { - "status": "FAIL" + "status": "PASS" }, "Parsing: without base": { "status": "PASS" @@ -2046,19 +2070,19 @@ "status": "PASS" }, "Parsing: without base": { - "status": "FAIL" + "status": "PASS" }, "Parsing: without base": { - "status": "FAIL" + "status": "PASS" }, "Parsing: without base": { - "status": "FAIL" + "status": "PASS" }, "Parsing: against ": { - "status": "FAIL" + "status": "PASS" }, "Parsing: against ": { - "status": "FAIL" + "status": "PASS" }, "Parsing: against ": { "status": "PASS" @@ -2100,13 +2124,13 @@ "status": "PASS" }, "Parsing: without base": { - "status": "FAIL" + "status": "PASS" }, "Parsing: without base": { - "status": "FAIL" + "status": "PASS" }, "Parsing: without base": { - "status": "FAIL" + "status": "PASS" }, "Parsing: <#link> against ": { "status": "PASS" @@ -2169,103 +2193,103 @@ "status": "PASS" }, "Parsing: <#> without base": { - "status": "FAIL" + "status": "PASS" }, "Parsing: without base": { - "status": "FAIL" + "status": "PASS" }, "Parsing: against ": { - "status": "FAIL" + "status": "PASS" }, "Parsing: against ": { - "status": "FAIL" + "status": "PASS" }, "Parsing: without base": { - "status": "FAIL" + "status": "PASS" }, "Parsing: without base": { - "status": "FAIL" + "status": "PASS" }, "Parsing: against ": { - "status": "FAIL" + "status": "PASS" }, "Parsing: against ": { - "status": "FAIL" + "status": "PASS" }, "Parsing: without base": { - "status": "FAIL" + "status": "PASS" }, "Parsing: without base": { - "status": "FAIL" + "status": "PASS" }, "Parsing: without base": { - "status": "FAIL" + "status": "PASS" }, "Parsing: without base": { - "status": "FAIL" + "status": "PASS" }, "Parsing: without base": { - "status": "FAIL" + "status": "PASS" }, "Parsing: without base": { - "status": "FAIL" + "status": "PASS" }, "Parsing: without base": { - "status": "FAIL" + "status": "PASS" }, "Parsing: without base": { - "status": "FAIL" + "status": "PASS" }, "Parsing: without base": { - "status": "FAIL" + "status": "PASS" }, "Parsing: without base": { - "status": "FAIL" + "status": "PASS" }, "Parsing: without base": { - "status": "FAIL" + "status": "PASS" }, "Parsing: without base": { - "status": "FAIL" + "status": "PASS" }, "Parsing: without base": { - "status": "FAIL" + "status": "PASS" }, "Parsing: without base": { - "status": "FAIL" + "status": "PASS" }, "Parsing: without base": { - "status": "FAIL" + "status": "PASS" }, "Parsing: without base": { - "status": "FAIL" + "status": "PASS" }, "Parsing: without base": { - "status": "FAIL" + "status": "PASS" }, "Parsing: without base": { - "status": "FAIL" + "status": "PASS" }, "Parsing: without base": { - "status": "FAIL" + "status": "PASS" }, "Parsing: without base": { "status": "PASS" }, "Parsing: without base": { - "status": "FAIL" + "status": "PASS" }, "Parsing: without base": { - "status": "FAIL" + "status": "PASS" }, "Parsing: without base": { - "status": "FAIL" + "status": "PASS" }, "Parsing: without base": { - "status": "FAIL" + "status": "PASS" }, "Parsing: without base": { - "status": "FAIL" + "status": "PASS" }, "Parsing: without base": { "status": "PASS" @@ -2277,7 +2301,7 @@ "status": "PASS" }, "Parsing: without base": { - "status": "FAIL" + "status": "PASS" }, "Parsing: without base": { "status": "PASS" @@ -2313,7 +2337,7 @@ "status": "PASS" }, "Parsing: <> without base": { - "status": "FAIL" + "status": "PASS" }, "Parsing: without base": { "status": "PASS" @@ -2322,13 +2346,13 @@ "status": "PASS" }, "Parsing: without base": { - "status": "FAIL" + "status": "PASS" }, "Parsing: without base": { - "status": "FAIL" + "status": "PASS" }, "Parsing: without base": { - "status": "FAIL" + "status": "PASS" }, "Parsing: without base": { "status": "PASS" @@ -2340,13 +2364,13 @@ "status": "PASS" }, "Parsing: without base": { - "status": "FAIL" + "status": "PASS" }, "Parsing: without base": { - "status": "FAIL" + "status": "PASS" }, "Parsing: without base": { - "status": "FAIL" + "status": "PASS" }, "Parsing: without base": { "status": "PASS" @@ -2358,13 +2382,13 @@ "status": "PASS" }, "Parsing: without base": { - "status": "FAIL" + "status": "PASS" }, "Parsing: without base": { - "status": "FAIL" + "status": "PASS" }, "Parsing: without base": { - "status": "FAIL" + "status": "PASS" }, "Parsing: without base": { "status": "PASS" @@ -2376,13 +2400,13 @@ "status": "PASS" }, "Parsing: without base": { - "status": "FAIL" + "status": "PASS" }, "Parsing: without base": { - "status": "FAIL" + "status": "PASS" }, "Parsing: without base": { - "status": "FAIL" + "status": "PASS" }, "Parsing: without base": { "status": "PASS" @@ -2394,13 +2418,13 @@ "status": "PASS" }, "Parsing: without base": { - "status": "FAIL" + "status": "PASS" }, "Parsing: without base": { - "status": "FAIL" + "status": "PASS" }, "Parsing: without base": { - "status": "FAIL" + "status": "PASS" }, "Parsing: without base": { "status": "PASS" @@ -2412,13 +2436,13 @@ "status": "PASS" }, "Parsing: without base": { - "status": "FAIL" + "status": "PASS" }, "Parsing: without base": { - "status": "FAIL" + "status": "PASS" }, "Parsing: without base": { - "status": "FAIL" + "status": "PASS" }, "Parsing: without base": { "status": "PASS" @@ -2430,13 +2454,13 @@ "status": "PASS" }, "Parsing: without base": { - "status": "FAIL" + "status": "PASS" }, "Parsing: without base": { - "status": "FAIL" + "status": "PASS" }, "Parsing: without base": { - "status": "FAIL" + "status": "PASS" }, "Parsing: without base": { "status": "PASS" @@ -2448,18 +2472,54 @@ "status": "PASS" }, "Parsing: without base": { - "status": "FAIL" + "status": "PASS" }, "Parsing: without base": { - "status": "FAIL" + "status": "PASS" }, "Parsing: without base": { - "status": "FAIL" + "status": "PASS" }, "Parsing: without base": { "status": "PASS" }, "Parsing: without base": { "status": "PASS" + }, + "Parsing: against ": { + "status": "FAIL" + }, + "Parsing: against ": { + "status": "FAIL" + }, + "Parsing: against ": { + "status": "FAIL" + }, + "Parsing: against ": { + "status": "FAIL" + }, + "Parsing: against ": { + "status": "FAIL" + }, + "Parsing: against ": { + "status": "FAIL" + }, + "Parsing: against ": { + "status": "FAIL" + }, + "Parsing: against ": { + "status": "PASS" + }, + "Parsing: against ": { + "status": "PASS" + }, + "Parsing: against ": { + "status": "FAIL" + }, + "Parsing: against ": { + "status": "PASS" + }, + "Parsing: without base": { + "status": "PASS" } } \ No newline at end of file diff --git a/tests/wpt-harness/expectations/url/url-origin.any.js.json b/tests/wpt-harness/expectations/url/url-origin.any.js.json index 24a1e6ed..ffd6fc65 100644 --- a/tests/wpt-harness/expectations/url/url-origin.any.js.json +++ b/tests/wpt-harness/expectations/url/url-origin.any.js.json @@ -140,6 +140,12 @@ "Origin parsing: against ": { "status": "PASS" }, + "Origin parsing: without base": { + "status": "PASS" + }, + "Origin parsing: without base": { + "status": "PASS" + }, "Origin parsing: against ": { "status": "PASS" }, @@ -785,9 +791,6 @@ "Origin parsing: without base": { "status": "PASS" }, - "Origin parsing: without base": { - "status": "PASS" - }, "Origin parsing: without base": { "status": "PASS" }, @@ -959,9 +962,6 @@ "Origin parsing: without base": { "status": "PASS" }, - "Origin parsing: without base": { - "status": "PASS" - }, "Origin parsing: without base": { "status": "FAIL" }, @@ -1093,5 +1093,8 @@ }, "Origin parsing: without base": { "status": "PASS" + }, + "Origin parsing: without base": { + "status": "PASS" } } \ No newline at end of file diff --git a/tests/wpt-harness/expectations/url/url-setters.any.js.json b/tests/wpt-harness/expectations/url/url-setters.any.js.json index efe8b4ad..e34055ea 100644 --- a/tests/wpt-harness/expectations/url/url-setters.any.js.json +++ b/tests/wpt-harness/expectations/url/url-setters.any.js.json @@ -269,6 +269,9 @@ "URL: Setting .host = 'example.com?stuff' Stuff after a ? delimiter is ignored": { "status": "PASS" }, + "URL: Setting .host = 'example.com?stuff:8080' Stuff after a ? delimiter is ignored, trailing 'port'": { + "status": "PASS" + }, "URL: Setting .host = 'example.com:8080?stuff' Stuff after a ? delimiter is ignored": { "status": "PASS" }, @@ -296,6 +299,15 @@ "URL: Setting .host = 'example.com:8080+2' Anything other than ASCII digit stops the port parser in a setter but is not an error": { "status": "PASS" }, + "URL: Setting .host = 'example.com:invalid' Anything other than ASCII digit stops the port parser in a setter but is not an error": { + "status": "FAIL" + }, + "URL: Setting .host = '[::1]:invalid' Anything other than ASCII digit stops the port parser in a setter but is not an error": { + "status": "FAIL" + }, + "URL: Setting .host = '[::1]' IPv6 without port": { + "status": "PASS" + }, "URL: Setting .host = 'example.com:65535' Port numbers are 16 bit integers": { "status": "PASS" }, @@ -564,7 +576,7 @@ "status": "PASS" }, "URL: Setting .pathname = '' Non-special URLs can have their paths erased": { - "status": "FAIL" + "status": "PASS" }, "URL: Setting .pathname = '' Non-special URLs with an empty host can have their paths erased": { "status": "FAIL" @@ -684,10 +696,10 @@ "status": "PASS" }, "URL: Setting .search = '' Do not drop trailing spaces from non-trailing opaque paths": { - "status": "FAIL" + "status": "PASS" }, "URL: Setting .search = ''": { - "status": "FAIL" + "status": "PASS" }, "URL: Setting .search = ' ' Trailing space should be encoded": { "status": "PASS" diff --git a/tests/wpt-harness/expectations/url/url-statics-canparse.any.js.json b/tests/wpt-harness/expectations/url/url-statics-canparse.any.js.json new file mode 100644 index 00000000..44d16a6c --- /dev/null +++ b/tests/wpt-harness/expectations/url/url-statics-canparse.any.js.json @@ -0,0 +1,23 @@ +{ + "URL.canParse(undefined, undefined)": { + "status": "FAIL" + }, + "URL.canParse(aaa:b, undefined)": { + "status": "FAIL" + }, + "URL.canParse(undefined, aaa:b)": { + "status": "FAIL" + }, + "URL.canParse(aaa:/b, undefined)": { + "status": "FAIL" + }, + "URL.canParse(undefined, aaa:/b)": { + "status": "FAIL" + }, + "URL.canParse(https://test:test, undefined)": { + "status": "FAIL" + }, + "URL.canParse(a, https://b/)": { + "status": "FAIL" + } +} \ No newline at end of file diff --git a/tests/wpt-harness/expectations/url/url-statics-parse.any.js.json b/tests/wpt-harness/expectations/url/url-statics-parse.any.js.json new file mode 100644 index 00000000..2f640808 --- /dev/null +++ b/tests/wpt-harness/expectations/url/url-statics-parse.any.js.json @@ -0,0 +1,26 @@ +{ + "URL.parse(undefined, undefined)": { + "status": "FAIL" + }, + "URL.parse(aaa:b, undefined)": { + "status": "FAIL" + }, + "URL.parse(undefined, aaa:b)": { + "status": "FAIL" + }, + "URL.parse(aaa:/b, undefined)": { + "status": "FAIL" + }, + "URL.parse(undefined, aaa:/b)": { + "status": "FAIL" + }, + "URL.parse(https://test:test, undefined)": { + "status": "FAIL" + }, + "URL.parse(a, https://b/)": { + "status": "FAIL" + }, + "URL.parse() should return a unique object": { + "status": "FAIL" + } +} \ No newline at end of file diff --git a/tests/wpt-harness/expectations/url/urlsearchparams-constructor.any.js.json b/tests/wpt-harness/expectations/url/urlsearchparams-constructor.any.js.json index 0e4a3af0..b5d4f457 100644 --- a/tests/wpt-harness/expectations/url/urlsearchparams-constructor.any.js.json +++ b/tests/wpt-harness/expectations/url/urlsearchparams-constructor.any.js.json @@ -57,7 +57,7 @@ "status": "PASS" }, "Constructor with sequence of sequences of strings": { - "status": "FAIL" + "status": "PASS" }, "Construct with object with +": { "status": "PASS" diff --git a/tests/wpt-harness/expectations/url/urlsearchparams-delete.any.js.json b/tests/wpt-harness/expectations/url/urlsearchparams-delete.any.js.json index 2a755c8a..1220ee34 100644 --- a/tests/wpt-harness/expectations/url/urlsearchparams-delete.any.js.json +++ b/tests/wpt-harness/expectations/url/urlsearchparams-delete.any.js.json @@ -15,9 +15,12 @@ "status": "PASS" }, "Changing the query of a URL with an opaque path can impact the path if the URL has no fragment": { - "status": "FAIL" + "status": "PASS" }, "Two-argument delete()": { "status": "FAIL" + }, + "Two-argument delete() respects undefined as second arg": { + "status": "FAIL" } } \ No newline at end of file diff --git a/tests/wpt-harness/expectations/url/urlsearchparams-has.any.js.json b/tests/wpt-harness/expectations/url/urlsearchparams-has.any.js.json index a0baf968..afa3b333 100644 --- a/tests/wpt-harness/expectations/url/urlsearchparams-has.any.js.json +++ b/tests/wpt-harness/expectations/url/urlsearchparams-has.any.js.json @@ -7,5 +7,8 @@ }, "Two-argument has()": { "status": "FAIL" + }, + "Two-argument has() respects undefined as second arg": { + "status": "FAIL" } } \ No newline at end of file diff --git a/tests/wpt-harness/expectations/url/urlsearchparams-size.any.js.json b/tests/wpt-harness/expectations/url/urlsearchparams-size.any.js.json new file mode 100644 index 00000000..831902de --- /dev/null +++ b/tests/wpt-harness/expectations/url/urlsearchparams-size.any.js.json @@ -0,0 +1,14 @@ +{ + "URLSearchParams's size and deletion": { + "status": "FAIL" + }, + "URLSearchParams's size and addition": { + "status": "FAIL" + }, + "URLSearchParams's size when obtained from a URL": { + "status": "FAIL" + }, + "URLSearchParams's size when obtained from a URL and using .search": { + "status": "FAIL" + } +} \ No newline at end of file diff --git a/tests/wpt-harness/run-wpt.mjs b/tests/wpt-harness/run-wpt.mjs index bad8b455..5ae3a3c2 100644 --- a/tests/wpt-harness/run-wpt.mjs +++ b/tests/wpt-harness/run-wpt.mjs @@ -154,7 +154,11 @@ function applyConfig(argv) { let childProcesses = {}; async function run() { - if (!applyConfig(process.argv)) { + if (!applyConfig([ + ...process.argv, + ...process.env.WPT_FLAGS ? process.env.WPT_FLAGS.split(' ') : [], + ...process.env.WPT_FILTER ? [process.env.WPT_FILTER] : [] + ])) { return process.exit(1); } @@ -215,14 +219,14 @@ async function run() { console.log(`\n${"Done. Stats:".padEnd(pathLength)} ${formatStats(stats)}`); - shutdown(); - if (config.tests.updateExpectations) { console.log(`Expectations updated: ${expectationsUpdated}`); + shutdown(); } else if (stats.unexpectedFail + stats.unexpectedPass != 0 || unexpectedFailure) { - process.exitCode = 1; + shutdown('Unexpected failures or passes. Verify that these new results match your expectations and run with --update-expectations to update the recorded expectations.'); + } else { + shutdown(); } - return process.exit(); } } @@ -270,6 +274,9 @@ async function startWptServer(root, logLevel) { // read the tea leaves a bit, by waiting for a message that is among the very last to be // printed during initialization, well after the main http server has started. for await(let [chunk] of on(server.stdout, "data")) { + if (/CRITICAL/.test(chunk)) { + shutdown(new Error('WPT Server Error: ' + chunk)); + } if (/wss on port \d+\] INFO - Listen on/.test(chunk)) { if (logLevel > LogLevel.Quiet) { console.info(`Started internal WPT server`); diff --git a/tests/wpt-harness/tests.json b/tests/wpt-harness/tests.json index 686903c3..5091d74b 100644 --- a/tests/wpt-harness/tests.json +++ b/tests/wpt-harness/tests.json @@ -1,7 +1,9 @@ [ "compression/compression-bad-chunks.tentative.any.js", + "compression/compression-constructor-error.tentative.any.js", "compression/compression-including-empty-chunk.tentative.any.js", + "compression/compression-large-flush-output.any.js", "compression/compression-multiple-chunks.tentative.any.js", "compression/compression-output-length.tentative.any.js", "SLOW compression/compression-stream.tentative.any.js", @@ -18,10 +20,16 @@ "compression/idlharness.https.any.js", "console/console-is-a-namespace.any.js", "console/console-label-conversion.any.js", + "SKIP console/console-log-large-array.any.js", + "console/console-log-symbol.any.js", "console/console-namespace-object-class-string.any.js", "console/console-tests-historical.any.js", "console/idlharness.any.js", "encoding/api-basics.any.js", + "encoding/api-basics.any.js", + "encoding/api-invalid-label.any.js", + "encoding/api-replacement-encodings.any.js", + "encoding/api-surrogates-utf8.any.js", "encoding/api-surrogates-utf8.any.js", "encoding/encodeInto.any.js", "SLOW encoding/idlharness.any.js", @@ -31,46 +39,81 @@ "encoding/textdecoder-byte-order-marks.any.js", "encoding/textdecoder-copy.any.js", "encoding/textdecoder-eof.any.js", + "encoding/textdecoder-fatal-single-byte.any.js", "encoding/textdecoder-fatal-streaming.any.js", "encoding/textdecoder-fatal.any.js", "encoding/textdecoder-ignorebom.any.js", + "encoding/textdecoder-labels.any.js", "encoding/textdecoder-streaming.any.js", "encoding/textdecoder-utf16-surrogates.any.js", "encoding/textencoder-constructor-non-utf.any.js", "encoding/textencoder-utf16-surrogates.any.js", "encoding/unsupported-encodings.any.js", + "SKIP fetch/api/abort/cache.https.any.js", + "fetch/api/abort/general.any.js", + "fetch/api/abort/request.any.js", "fetch/api/basic/accept-header.any.js", "fetch/api/basic/conditional-get.any.js", + "fetch/api/basic/error-after-response.any.js", "fetch/api/basic/header-value-combining.any.js", "fetch/api/basic/header-value-null-byte.any.js", "fetch/api/basic/historical.any.js", "fetch/api/basic/http-response-code.any.js", "fetch/api/basic/integrity.sub.any.js", + "fetch/api/basic/keepalive.any.js", + "SKIP fetch/api/basic/mode-no-cors.sub.any.js", + "fetch/api/basic/mode-same-origin.any.js", + "fetch/api/basic/referrer.any.js", "fetch/api/basic/referrer.any.js", "fetch/api/basic/request-forbidden-headers.any.js", "fetch/api/basic/request-head.any.js", "fetch/api/basic/request-headers-case.any.js", "fetch/api/basic/request-headers-nonascii.any.js", "fetch/api/basic/request-headers.any.js", + "SKIP fetch/api/basic/request-private-network-headers.tentative.any.js", "fetch/api/basic/request-referrer.any.js", "fetch/api/basic/request-upload.any.js", "fetch/api/basic/request-upload.h2.any.js", + "fetch/api/basic/response-null-body.any.js", "fetch/api/basic/response-url.sub.any.js", "fetch/api/basic/scheme-about.any.js", "fetch/api/basic/scheme-blob.sub.any.js", "fetch/api/basic/scheme-data.any.js", "fetch/api/basic/scheme-others.sub.any.js", + "fetch/api/basic/status.h2.any.js", "fetch/api/basic/stream-response.any.js", "fetch/api/basic/stream-safe-creation.any.js", + "fetch/api/basic/text-utf8.any.js", + "fetch/api/body/cloned-any.js", + "fetch/api/body/formdata.any.js", + "fetch/api/body/mime-type.any.js", + "fetch/api/headers/header-setcookie.any.js", "fetch/api/headers/header-values-normalize.any.js", "fetch/api/headers/header-values.any.js", "fetch/api/headers/headers-basic.any.js", "fetch/api/headers/headers-casing.any.js", "fetch/api/headers/headers-combine.any.js", "fetch/api/headers/headers-errors.any.js", + "fetch/api/headers/headers-no-cors.any.js", "fetch/api/headers/headers-normalize.any.js", "fetch/api/headers/headers-record.any.js", "fetch/api/headers/headers-structure.any.js", + "fetch/api/idlharness.any.js", + "fetch/api/redirect/redirect-back-to-original-origin.any.js", + "fetch/api/redirect/redirect-count.any.js", + "fetch/api/redirect/redirect-empty-location.any.js", + "fetch/api/redirect/redirect-keepalive.any.js", + "fetch/api/redirect/redirect-keepalive.https.any.js", + "fetch/api/redirect/redirect-location-escape.tentative.any.js", + "fetch/api/redirect/redirect-location.any.js", + "fetch/api/redirect/redirect-method.any.js", + "fetch/api/redirect/redirect-mode.any.js", + "fetch/api/redirect/redirect-origin.any.js", + "fetch/api/redirect/redirect-referrer-override.any.js", + "fetch/api/redirect/redirect-referrer.any.js", + "fetch/api/redirect/redirect-schemes.any.js", + "fetch/api/redirect/redirect-to-dataurl.any.js", + "fetch/api/redirect/redirect-upload.h2.any.js", "fetch/api/request/forbidden-method.any.js", "SKIP [tests restrictions we're not imposing] fetch/api/request/request-bad-port.any.js", "fetch/api/request/request-cache-default-conditional.any.js", @@ -80,6 +123,8 @@ "fetch/api/request/request-cache-no-store.any.js", "fetch/api/request/request-cache-only-if-cached.any.js", "fetch/api/request/request-cache-reload.any.js", + "fetch/api/request/request-cache.js", + "fetch/api/request/request-constructor-init-body-override.any.js", "fetch/api/request/request-consume-empty.any.js", "fetch/api/request/request-consume.any.js", "fetch/api/request/request-disturbed.any.js", @@ -87,10 +132,12 @@ "fetch/api/request/request-headers.any.js", "fetch/api/request/request-init-002.any.js", "fetch/api/request/request-init-contenttype.any.js", + "fetch/api/request/request-init-priority.any.js", "fetch/api/request/request-init-stream.any.js", "fetch/api/request/request-keepalive.any.js", "fetch/api/request/request-structure.any.js", "fetch/api/response/json.any.js", + "fetch/api/response/response-blob-realm.any.js", "fetch/api/response/response-cancel-stream.any.js", "fetch/api/response/response-clone.any.js", "fetch/api/response/response-consume-empty.any.js", @@ -98,12 +145,14 @@ "fetch/api/response/response-error-from-stream.any.js", "fetch/api/response/response-error.any.js", "fetch/api/response/response-from-stream.any.js", + "fetch/api/response/response-headers-guard.any.js", "fetch/api/response/response-init-001.any.js", "fetch/api/response/response-init-002.any.js", "fetch/api/response/response-init-contenttype.any.js", "fetch/api/response/response-static-error.any.js", "fetch/api/response/response-static-json.any.js", "fetch/api/response/response-static-redirect.any.js", + "fetch/api/response/response-stream-bad-chunk.any.js", "fetch/api/response/response-stream-disturbed-1.any.js", "fetch/api/response/response-stream-disturbed-2.any.js", "fetch/api/response/response-stream-disturbed-3.any.js", @@ -112,29 +161,37 @@ "fetch/api/response/response-stream-disturbed-6.any.js", "fetch/api/response/response-stream-disturbed-by-pipe.any.js", "fetch/api/response/response-stream-with-broken-then.any.js", - "fetch/api/basic/text-utf8.any.js", + "fetch/data-urls/base64.any.js", + "fetch/data-urls/processing.any.js", "hr-time/basic.any.js", "hr-time/idlharness.any.js", "hr-time/monotonic-clock.any.js", "html/webappapis/atob/base64.any.js", + "streams/idlharness.any.js", "streams/piping/abort.any.js", "streams/piping/close-propagation-backward.any.js", "streams/piping/close-propagation-forward.any.js", "streams/piping/error-propagation-backward.any.js", "streams/piping/error-propagation-forward.any.js", "streams/piping/flow-control.any.js", + "streams/piping/general-addition.any.js", "streams/piping/general.any.js", "streams/piping/multiple-propagation.any.js", "streams/piping/pipe-through.any.js", "streams/piping/then-interception.any.js", "streams/piping/throwing-options.any.js", "streams/piping/transform-streams.any.js", + "streams/queuing-strategies-size-function-per-global.window.js", "streams/queuing-strategies.any.js", "streams/readable-byte-streams/bad-buffers-and-views.any.js", "streams/readable-byte-streams/construct-byob-request.any.js", + "streams/readable-byte-streams/enqueue-with-detached-buffer.any.js", "streams/readable-byte-streams/general.any.js", + "streams/readable-byte-streams/non-transferable-buffers.any.js", + "streams/readable-byte-streams/read-min.any.js", "streams/readable-byte-streams/respond-after-enqueue.any.js", "streams/readable-byte-streams/tee.any.js", + "streams/readable-streams/async-iterator.any.js", "streams/readable-streams/bad-strategies.any.js", "streams/readable-streams/bad-underlying-sources.any.js", "streams/readable-streams/cancel.any.js", @@ -142,13 +199,18 @@ "streams/readable-streams/count-queuing-strategy-integration.any.js", "streams/readable-streams/default-reader.any.js", "streams/readable-streams/floating-point-total-queue-size.any.js", + "streams/readable-streams/from.any.js", "streams/readable-streams/garbage-collection.any.js", "streams/readable-streams/general.any.js", + "streams/readable-streams/owning-type-message-port.any.js", + "streams/readable-streams/owning-type-video-frame.any.js", + "streams/readable-streams/owning-type.any.js", "streams/readable-streams/patched-global.any.js", "streams/readable-streams/reentrant-strategies.any.js", "streams/readable-streams/tee.any.js", "streams/readable-streams/templated.any.js", "streams/transform-streams/backpressure.any.js", + "streams/transform-streams/cancel.any.js", "streams/transform-streams/errors.any.js", "streams/transform-streams/flush.any.js", "streams/transform-streams/general.any.js", @@ -172,11 +234,15 @@ "streams/writable-streams/reentrant-strategy.any.js", "streams/writable-streams/start.any.js", "streams/writable-streams/write.any.js", + "url/historical.any.js", + "url/idlharness.any.js", "SLOW url/url-constructor.any.js", "url/url-origin.any.js", "url/url-searchparams.any.js", "url/url-setters-stripping.any.js", "url/url-setters.any.js", + "url/url-statics-canparse.any.js", + "url/url-statics-parse.any.js", "url/url-tojson.any.js", "url/urlencoded-parser.any.js", "url/urlsearchparams-append.any.js", @@ -187,6 +253,7 @@ "url/urlsearchparams-getall.any.js", "url/urlsearchparams-has.any.js", "url/urlsearchparams-set.any.js", + "url/urlsearchparams-size.any.js", "url/urlsearchparams-sort.any.js", "url/urlsearchparams-stringifier.any.js", "WebCryptoAPI/digest/digest.https.any.js", diff --git a/tests/wpt-harness/wpt.cmake b/tests/wpt-harness/wpt.cmake index bfb541d2..077b451d 100644 --- a/tests/wpt-harness/wpt.cmake +++ b/tests/wpt-harness/wpt.cmake @@ -1,17 +1,27 @@ enable_testing() +include("wasmtime") + +if(DEFINED $ENV{WPT_ROOT}) + set(WPT_ROOT $ENV{WPT_ROOT}) +else() + CPMAddPackage( + NAME wpt-suite + GITHUB_REPOSITORY web-platform-tests/wpt + GIT_TAG bd65bb46410dd6ea3319e3688a5248a0a7d06960 + DOWNLOAD_ONLY TRUE + ) + set(WPT_ROOT ${CPM_PACKAGE_wpt-suite_SOURCE_DIR}) +endif() + add_builtin(wpt_support SRC "${CMAKE_CURRENT_LIST_DIR}/wpt_builtins.cpp" INCLUDE_DIRS "${CMAKE_CURRENT_SOURCE_DIR}/builtins/web/") -if(NOT DEFINED ENV{WPT_ROOT}) - message(FATAL_ERROR "WPT_ROOT environment variable is not set") -endif() - add_custom_command( OUTPUT wpt-runtime.wasm WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} - COMMAND ${CMAKE_COMMAND} -E env PATH=${WASM_TOOLS_DIR}:${WIZER_DIR}:$ENV{PATH} WPT_ROOT=$ENV{WPT_ROOT} ${CMAKE_CURRENT_SOURCE_DIR}/tests/wpt-harness/build-wpt-runtime.sh + COMMAND ${CMAKE_COMMAND} -E env PATH=${WASM_TOOLS_DIR}:${WIZER_DIR}:$ENV{PATH} WPT_ROOT=${WPT_ROOT} ${CMAKE_CURRENT_SOURCE_DIR}/tests/wpt-harness/build-wpt-runtime.sh DEPENDS starling.wasm componentize.sh tests/wpt-harness/build-wpt-runtime.sh tests/wpt-harness/pre-harness.js tests/wpt-harness/post-harness.js VERBATIM ) @@ -24,5 +34,5 @@ endif () add_test( NAME wpt WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} - COMMAND ${CMAKE_COMMAND} -E env PATH=${WASMTIME_DIR}:$ENV{PATH} WASMTIME_BACKTRACE_DETAILS=${BT_DETAILS} node ${CMAKE_CURRENT_SOURCE_DIR}/tests/wpt-harness/run-wpt.mjs --wpt-root=$ENV{WPT_ROOT} -v $ENV{WPT_FILTER} + COMMAND ${CMAKE_COMMAND} -E env PATH=${WASMTIME_DIR}:$ENV{PATH} WASMTIME_BACKTRACE_DETAILS=${BT_DETAILS} node ${CMAKE_CURRENT_SOURCE_DIR}/tests/wpt-harness/run-wpt.mjs --wpt-root=${WPT_ROOT} -vv ) diff --git a/tests/wpt-harness/wpt_builtins.cpp b/tests/wpt-harness/wpt_builtins.cpp index d62566b9..ce708243 100644 --- a/tests/wpt-harness/wpt_builtins.cpp +++ b/tests/wpt-harness/wpt_builtins.cpp @@ -10,9 +10,8 @@ static bool baseURL_set(JSContext *cx, unsigned argc, JS::Value *vp) { if (args.get(0).isNullOrUndefined()) { WorkerLocation::url.set(nullptr); } else if (!builtins::web::url::URL::is_instance(args.get(0))) { - JS_ReportErrorUTF8(cx, "Invalid value assigned to baseURL, must be an instance of " - "URL, null, or undefined"); - return false; + return api::throw_error(cx, api::Errors::TypeError, "baseURL setter", "value", + "be a URL object, null, or undefined"); } WorkerLocation::url.set(&args.get(0).toObject());