You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@teaclave.apache.org by hs...@apache.org on 2023/04/03 08:37:44 UTC

[incubator-teaclave-website] branch asf-staging updated (23d77bc9c -> 71a200ceb)

This is an automated email from the ASF dual-hosted git repository.

hsun pushed a change to branch asf-staging
in repository https://gitbox.apache.org/repos/asf/incubator-teaclave-website.git


 discard 23d77bc9c Update documentation
     new 71a200ceb Update documentation

This update added new revisions after undoing existing revisions.
That is to say, some revisions that were in the old version of the
branch are not in the new version.  This situation occurs
when a user --force pushes a change and generates a repository
containing something like this:

 * -- * -- B -- O -- O -- O   (23d77bc9c)
            \
             N -- N -- N   refs/heads/asf-staging (71a200ceb)

You should already have received notification emails for all of the O
revisions, and so the following emails describe only the N revisions
from the common base, B.

Any revisions marked "omit" are not gone; other references still
refer to them.  Any revisions marked "discard" are gone forever.

The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@teaclave.apache.org
For additional commands, e-mail: commits-help@teaclave.apache.org


[incubator-teaclave-website] 01/01: Update documentation

Posted by hs...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

hsun pushed a commit to branch asf-staging
in repository https://gitbox.apache.org/repos/asf/incubator-teaclave-website.git

commit 71a200ceb3b8e486f0e80c6b973af77fa02fccdf
Author: sunhe05 <su...@baidu.com>
AuthorDate: Mon Apr 3 08:36:11 2023 +0000

    Update documentation
---
 .asf.yaml                                          |    6 +
 404.html                                           |   22 +
 api-docs/client-sdk-python/index.html              |    1 +
 api-docs/client-sdk-python/python/teaclave.html    | 3140 +++++++
 api-docs/client-sdk-python/search.js               |   46 +
 api-docs/client-sdk-rust/.lock                     |    0
 api-docs/client-sdk-rust/COPYRIGHT.txt             |   46 +
 api-docs/client-sdk-rust/FiraSans-LICENSE.txt      |   94 +
 api-docs/client-sdk-rust/FiraSans-Medium.woff2     |  Bin 0 -> 132780 bytes
 api-docs/client-sdk-rust/FiraSans-Regular.woff2    |  Bin 0 -> 129188 bytes
 api-docs/client-sdk-rust/LICENSE-APACHE.txt        |  201 +
 api-docs/client-sdk-rust/LICENSE-MIT.txt           |   23 +
 .../client-sdk-rust/NanumBarunGothic-LICENSE.txt   |   99 +
 .../client-sdk-rust/NanumBarunGothic.ttf.woff2     |  Bin 0 -> 399468 bytes
 .../client-sdk-rust/SourceCodePro-It.ttf.woff2     |  Bin 0 -> 44896 bytes
 api-docs/client-sdk-rust/SourceCodePro-LICENSE.txt |   93 +
 .../SourceCodePro-Regular.ttf.woff2                |  Bin 0 -> 52228 bytes
 .../SourceCodePro-Semibold.ttf.woff2               |  Bin 0 -> 52348 bytes
 .../client-sdk-rust/SourceSerif4-Bold.ttf.woff2    |  Bin 0 -> 81320 bytes
 api-docs/client-sdk-rust/SourceSerif4-It.ttf.woff2 |  Bin 0 -> 59860 bytes
 api-docs/client-sdk-rust/SourceSerif4-LICENSE.md   |   93 +
 .../client-sdk-rust/SourceSerif4-Regular.ttf.woff2 |  Bin 0 -> 76180 bytes
 api-docs/client-sdk-rust/ayu.css                   |    1 +
 api-docs/client-sdk-rust/clipboard.svg             |    1 +
 api-docs/client-sdk-rust/crates.js                 |    1 +
 api-docs/client-sdk-rust/dark.css                  |    1 +
 api-docs/client-sdk-rust/down-arrow.svg            |    1 +
 api-docs/client-sdk-rust/favicon-16x16.png         |  Bin 0 -> 715 bytes
 api-docs/client-sdk-rust/favicon-32x32.png         |  Bin 0 -> 1125 bytes
 api-docs/client-sdk-rust/favicon.svg               |   24 +
 api-docs/client-sdk-rust/help.html                 |    1 +
 .../implementors/core/marker/trait.Freeze.js       |    3 +
 .../implementors/core/marker/trait.Send.js         |    3 +
 .../implementors/core/marker/trait.Sync.js         |    3 +
 .../implementors/core/marker/trait.Unpin.js        |    3 +
 .../core/panic/unwind_safe/trait.RefUnwindSafe.js  |    3 +
 .../core/panic/unwind_safe/trait.UnwindSafe.js     |    3 +
 api-docs/client-sdk-rust/index.html                |    1 +
 api-docs/client-sdk-rust/light.css                 |    1 +
 api-docs/client-sdk-rust/main.js                   |    8 +
 api-docs/client-sdk-rust/normalize.css             |    2 +
 api-docs/client-sdk-rust/noscript.css              |    1 +
 api-docs/client-sdk-rust/rust-logo.svg             |   61 +
 api-docs/client-sdk-rust/rustdoc.css               |    1 +
 api-docs/client-sdk-rust/search-index.js           |    5 +
 api-docs/client-sdk-rust/search.js                 |    1 +
 api-docs/client-sdk-rust/settings.css              |    1 +
 api-docs/client-sdk-rust/settings.html             |    1 +
 api-docs/client-sdk-rust/settings.js               |   11 +
 api-docs/client-sdk-rust/source-files.js           |    4 +
 api-docs/client-sdk-rust/source-script.js          |    1 +
 .../src/teaclave_client_sdk/bindings.rs.html       | 1016 +++
 .../src/teaclave_client_sdk/lib.rs.html            | 1768 ++++
 api-docs/client-sdk-rust/storage.js                |    1 +
 .../client-sdk-rust/teaclave_client_sdk/all.html   |    1 +
 .../fn.teaclave_approve_task_serialized.html       |   17 +
 .../fn.teaclave_assign_data_serialized.html        |   17 +
 .../fn.teaclave_authentication_set_credential.html |    6 +
 .../bindings/fn.teaclave_cancel_task.html          |    6 +
 .../fn.teaclave_cancel_task_serialized.html        |   17 +
 .../fn.teaclave_close_authentication_service.html  |    9 +
 .../fn.teaclave_close_frontend_service.html        |    9 +
 ...fn.teaclave_connect_authentication_service.html |   20 +
 .../fn.teaclave_connect_frontend_service.html      |   20 +
 .../fn.teaclave_create_task_serialized.html        |   17 +
 .../fn.teaclave_frontend_set_credential.html       |    6 +
 .../fn.teaclave_get_function_serialized.html       |   17 +
 ...aclave_get_function_usage_stats_serialized.html |   17 +
 .../bindings/fn.teaclave_get_task_result.html      |    8 +
 .../bindings/fn.teaclave_get_task_serialized.html  |   17 +
 .../bindings/fn.teaclave_invoke_task.html          |    6 +
 .../fn.teaclave_invoke_task_serialized.html        |   17 +
 .../fn.teaclave_register_function_serialized.html  |   17 +
 ...fn.teaclave_register_input_file_serialized.html |   17 +
 ...n.teaclave_register_output_file_serialized.html |   17 +
 .../bindings/fn.teaclave_user_login.html           |    8 +
 .../fn.teaclave_user_login_serialized.html         |   17 +
 .../bindings/fn.teaclave_user_register.html        |    6 +
 .../fn.teaclave_user_register_serialized.html      |   17 +
 .../teaclave_client_sdk/bindings/index.html        |   29 +
 .../teaclave_client_sdk/bindings/sidebar-items.js  |    1 +
 .../teaclave_client_sdk/enum.Executor.html         |   11 +
 .../teaclave_client_sdk/enum.FileCrypto.html       |   12 +
 .../teaclave_client_sdk/enum.TaskResult.html       |    9 +
 .../client-sdk-rust/teaclave_client_sdk/index.html |    1 +
 .../teaclave_client_sdk/sidebar-items.js           |    1 +
 .../struct.ApproveTaskRequest.html                 |    7 +
 .../struct.ApproveTaskResponse.html                |    5 +
 .../struct.AssignDataRequest.html                  |    9 +
 .../struct.AssignDataResponse.html                 |    5 +
 .../struct.AuthenticationClient.html               |    5 +
 .../struct.AuthenticationService.html              |    5 +
 .../struct.CancelTaskRequest.html                  |    7 +
 .../struct.CancelTaskResponse.html                 |    5 +
 .../struct.CreateTaskRequest.html                  |   11 +
 .../struct.CreateTaskResponse.html                 |    7 +
 .../teaclave_client_sdk/struct.EnclaveInfo.html    |    7 +
 .../teaclave_client_sdk/struct.FrontendClient.html |    5 +
 .../struct.FrontendService.html                    |    5 +
 .../teaclave_client_sdk/struct.Function.html       |   16 +
 .../struct.FunctionArgument.html                   |    9 +
 .../teaclave_client_sdk/struct.FunctionInput.html  |    9 +
 .../teaclave_client_sdk/struct.FunctionOutput.html |    9 +
 .../teaclave_client_sdk/struct.FunctionUsage.html  |    8 +
 .../struct.GetFunctionRequest.html                 |    7 +
 .../struct.GetFunctionResponse.html                |   16 +
 .../struct.GetFunctionUsageStatsRequest.html       |    7 +
 .../struct.GetFunctionUsageStatsResponse.html      |    8 +
 .../teaclave_client_sdk/struct.GetTaskRequest.html |    7 +
 .../struct.GetTaskResponse.html                    |   19 +
 .../struct.InvokeTaskRequest.html                  |    7 +
 .../struct.InvokeTaskResponse.html                 |    5 +
 .../struct.RegisterFunctionRequest.html            |   16 +
 .../struct.RegisterFunctionRequestBuilder.html     |    5 +
 .../struct.RegisterFunctionResponse.html           |    7 +
 .../struct.RegisterInputFileRequest.html           |   11 +
 .../struct.RegisterInputFileResponse.html          |    9 +
 .../struct.RegisterOutputFileRequest.html          |    8 +
 .../struct.RegisterOutputFileResponse.html         |    7 +
 .../struct.UserLoginRequest.html                   |    8 +
 .../struct.UserLoginResponse.html                  |    7 +
 .../struct.UserRegisterRequest.html                |   10 +
 .../struct.UserRegisterResponse.html               |    5 +
 api-docs/client-sdk-rust/toggle-minus.svg          |    1 +
 api-docs/client-sdk-rust/toggle-plus.svg           |    1 +
 api-docs/client-sdk-rust/wheel.svg                 |    1 +
 api-docs/index.html                                |  158 +
 api-docs/sgx-sdk/.lock                             |    0
 api-docs/sgx-sdk/COPYRIGHT.txt                     |   45 +
 api-docs/sgx-sdk/FiraSans-LICENSE.txt              |   94 +
 api-docs/sgx-sdk/FiraSans-Medium.woff              |  Bin 0 -> 186824 bytes
 api-docs/sgx-sdk/FiraSans-Regular.woff             |  Bin 0 -> 183268 bytes
 api-docs/sgx-sdk/LICENSE-APACHE.txt                |  201 +
 api-docs/sgx-sdk/LICENSE-MIT.txt                   |   23 +
 api-docs/sgx-sdk/SourceCodePro-LICENSE.txt         |   93 +
 api-docs/sgx-sdk/SourceCodePro-Regular.woff        |  Bin 0 -> 55472 bytes
 api-docs/sgx-sdk/SourceCodePro-Semibold.woff       |  Bin 0 -> 55360 bytes
 api-docs/sgx-sdk/SourceSerifPro-Bold.ttf.woff      |  Bin 0 -> 93248 bytes
 api-docs/sgx-sdk/SourceSerifPro-It.ttf.woff        |  Bin 0 -> 36200 bytes
 api-docs/sgx-sdk/SourceSerifPro-LICENSE.md         |   93 +
 api-docs/sgx-sdk/SourceSerifPro-Regular.ttf.woff   |  Bin 0 -> 88596 bytes
 api-docs/sgx-sdk/ayu.css                           |    1 +
 api-docs/sgx-sdk/brush.svg                         |    1 +
 api-docs/sgx-sdk/dark.css                          |    1 +
 api-docs/sgx-sdk/down-arrow.svg                    |    1 +
 api-docs/sgx-sdk/favicon-16x16.png                 |  Bin 0 -> 2214 bytes
 api-docs/sgx-sdk/favicon-32x32.png                 |  Bin 0 -> 2919 bytes
 api-docs/sgx-sdk/favicon.svg                       |   24 +
 api-docs/sgx-sdk/hashbrown_tstd/all.html           |    6 +
 .../hashbrown_tstd/enum.TryReserveError.html       |   35 +
 .../hash_map/enum.DefaultHashBuilder.html          |   14 +
 .../hashbrown_tstd/hash_map/enum.Entry.html        |  154 +
 .../hashbrown_tstd/hash_map/enum.RawEntryMut.html  |  131 +
 .../hashbrown_tstd/hash_map/enum.RustcEntry.html   |   91 +
 .../sgx-sdk/hashbrown_tstd/hash_map/index.html     |   34 +
 .../hashbrown_tstd/hash_map/sidebar-items.js       |    1 +
 .../hashbrown_tstd/hash_map/struct.Drain.html      |  134 +
 .../hash_map/struct.DrainFilter.html               |  131 +
 .../hashbrown_tstd/hash_map/struct.HashMap.html    |  643 ++
 .../hashbrown_tstd/hash_map/struct.IntoIter.html   |  134 +
 .../hashbrown_tstd/hash_map/struct.Iter.html       |  139 +
 .../hashbrown_tstd/hash_map/struct.IterMut.html    |  134 +
 .../hashbrown_tstd/hash_map/struct.Keys.html       |  139 +
 .../hash_map/struct.OccupiedEntry.html             |  200 +
 .../hash_map/struct.RawEntryBuilder.html           |   19 +
 .../hash_map/struct.RawEntryBuilderMut.html        |   19 +
 .../hash_map/struct.RawOccupiedEntryMut.html       |   35 +
 .../hash_map/struct.RawVacantEntryMut.html         |   21 +
 .../hash_map/struct.RustcOccupiedEntry.html        |  155 +
 .../hash_map/struct.RustcVacantEntry.html          |   61 +
 .../hash_map/struct.VacantEntry.html               |   48 +
 .../hashbrown_tstd/hash_map/struct.Values.html     |  139 +
 .../hashbrown_tstd/hash_map/struct.ValuesMut.html  |  133 +
 .../sgx-sdk/hashbrown_tstd/hash_set/index.html     |   15 +
 .../hashbrown_tstd/hash_set/sidebar-items.js       |    1 +
 .../hashbrown_tstd/hash_set/struct.Difference.html |  137 +
 .../hashbrown_tstd/hash_set/struct.Drain.html      |  133 +
 .../hash_set/struct.DrainFilter.html               |  131 +
 .../hashbrown_tstd/hash_set/struct.HashSet.html    |  613 ++
 .../hash_set/struct.Intersection.html              |  137 +
 .../hashbrown_tstd/hash_set/struct.IntoIter.html   |  133 +
 .../hashbrown_tstd/hash_set/struct.Iter.html       |  139 +
 .../hash_set/struct.SymmetricDifference.html       |  137 +
 .../hashbrown_tstd/hash_set/struct.Union.html      |  137 +
 api-docs/sgx-sdk/hashbrown_tstd/index.html         |   17 +
 .../map/enum.DefaultHashBuilder.html               |   10 +
 .../sgx-sdk/hashbrown_tstd/map/enum.Entry.html     |   10 +
 .../hashbrown_tstd/map/enum.RawEntryMut.html       |   10 +
 .../sgx-sdk/hashbrown_tstd/map/struct.Drain.html   |   10 +
 .../hashbrown_tstd/map/struct.DrainFilter.html     |   10 +
 .../sgx-sdk/hashbrown_tstd/map/struct.HashMap.html |   10 +
 .../hashbrown_tstd/map/struct.IntoIter.html        |   10 +
 .../sgx-sdk/hashbrown_tstd/map/struct.Iter.html    |   10 +
 .../sgx-sdk/hashbrown_tstd/map/struct.IterMut.html |   10 +
 .../sgx-sdk/hashbrown_tstd/map/struct.Keys.html    |   10 +
 .../hashbrown_tstd/map/struct.OccupiedEntry.html   |   10 +
 .../hashbrown_tstd/map/struct.RawEntryBuilder.html |   10 +
 .../map/struct.RawEntryBuilderMut.html             |   10 +
 .../map/struct.RawOccupiedEntryMut.html            |   10 +
 .../map/struct.RawVacantEntryMut.html              |   10 +
 .../hashbrown_tstd/map/struct.VacantEntry.html     |   10 +
 .../sgx-sdk/hashbrown_tstd/map/struct.Values.html  |   10 +
 .../hashbrown_tstd/map/struct.ValuesMut.html       |   10 +
 .../rustc_entry/enum.RustcEntry.html               |   10 +
 .../rustc_entry/struct.RustcOccupiedEntry.html     |   10 +
 .../rustc_entry/struct.RustcVacantEntry.html       |   10 +
 .../hashbrown_tstd/set/struct.Difference.html      |   10 +
 .../sgx-sdk/hashbrown_tstd/set/struct.Drain.html   |   10 +
 .../hashbrown_tstd/set/struct.DrainFilter.html     |   10 +
 .../sgx-sdk/hashbrown_tstd/set/struct.HashSet.html |   10 +
 .../hashbrown_tstd/set/struct.Intersection.html    |   10 +
 .../hashbrown_tstd/set/struct.IntoIter.html        |   10 +
 .../sgx-sdk/hashbrown_tstd/set/struct.Iter.html    |   10 +
 .../set/struct.SymmetricDifference.html            |   10 +
 .../sgx-sdk/hashbrown_tstd/set/struct.Union.html   |   10 +
 api-docs/sgx-sdk/hashbrown_tstd/sidebar-items.js   |    1 +
 .../sgx-sdk/hashbrown_tstd/struct.HashMap.html     |  643 ++
 .../sgx-sdk/hashbrown_tstd/struct.HashSet.html     |  613 ++
 .../implementors/alloc/borrow/trait.ToOwned.js     |    3 +
 .../core/alloc/global/trait.GlobalAlloc.js         |    3 +
 .../implementors/core/alloc/trait.AllocRef.js      |    3 +
 .../implementors/core/borrow/trait.Borrow.js       |    4 +
 .../implementors/core/borrow/trait.BorrowMut.js    |    3 +
 .../sgx-sdk/implementors/core/clone/trait.Clone.js |   10 +
 api-docs/sgx-sdk/implementors/core/cmp/trait.Eq.js |    7 +
 .../sgx-sdk/implementors/core/cmp/trait.Ord.js     |    4 +
 .../implementors/core/cmp/trait.PartialEq.js       |    8 +
 .../implementors/core/cmp/trait.PartialOrd.js      |    4 +
 .../implementors/core/convert/trait.AsMut.js       |    3 +
 .../implementors/core/convert/trait.AsRef.js       |    4 +
 .../implementors/core/convert/trait.From.js        |    3 +
 .../implementors/core/default/trait.Default.js     |    6 +
 .../sgx-sdk/implementors/core/fmt/trait.Debug.js   |   10 +
 .../sgx-sdk/implementors/core/fmt/trait.Display.js |    6 +
 .../sgx-sdk/implementors/core/hash/trait.Hash.js   |    3 +
 .../core/iter/traits/collect/trait.Extend.js       |    3 +
 .../core/iter/traits/collect/trait.FromIterator.js |    3 +
 .../core/iter/traits/collect/trait.IntoIterator.js |    3 +
 .../traits/exact_size/trait.ExactSizeIterator.js   |    3 +
 .../core/iter/traits/iterator/trait.Iterator.js    |    3 +
 .../core/iter/traits/marker/trait.FusedIterator.js |    3 +
 .../sgx-sdk/implementors/core/marker/trait.Copy.js |    8 +
 .../implementors/core/marker/trait.Freeze.js       |   12 +
 .../sgx-sdk/implementors/core/marker/trait.Send.js |   11 +
 .../implementors/core/marker/trait.StructuralEq.js |    7 +
 .../core/marker/trait.StructuralPartialEq.js       |    8 +
 .../sgx-sdk/implementors/core/marker/trait.Sync.js |   11 +
 .../implementors/core/marker/trait.Unpin.js        |   11 +
 .../implementors/core/ops/arith/trait.Sub.js       |    3 +
 .../implementors/core/ops/bit/trait.BitAnd.js      |    3 +
 .../implementors/core/ops/bit/trait.BitOr.js       |    3 +
 .../implementors/core/ops/bit/trait.BitXor.js      |    3 +
 .../implementors/core/ops/deref/trait.Deref.js     |    4 +
 .../implementors/core/ops/deref/trait.DerefMut.js  |    3 +
 .../implementors/core/ops/drop/trait.Drop.js       |    6 +
 .../implementors/core/ops/index/trait.Index.js     |    4 +
 .../implementors/sgx_trts/ascii/trait.AsciiExt.js  |    3 +
 .../sgx_trts/memeq/trait.ConsttimeMemEq.js         |    3 +
 .../implementors/sgx_tstd/alloc/trait.AllocRef.js  |    3 +
 .../sgx_tstd/alloc/trait.GlobalAlloc.js            |    3 +
 .../sgx-sdk/implementors/sgx_tstd/any/trait.Any.js |    3 +
 .../sgx_tstd/array/trait.FixedSizeArray.js         |    3 +
 .../implementors/sgx_tstd/ascii/trait.AsciiExt.js  |    3 +
 .../implementors/sgx_tstd/borrow/trait.Borrow.js   |    3 +
 .../sgx_tstd/borrow/trait.BorrowMut.js             |    3 +
 .../implementors/sgx_tstd/borrow/trait.ToOwned.js  |    3 +
 .../implementors/sgx_tstd/clone/trait.Clone.js     |    3 +
 .../sgx-sdk/implementors/sgx_tstd/cmp/trait.Eq.js  |    3 +
 .../sgx-sdk/implementors/sgx_tstd/cmp/trait.Ord.js |    3 +
 .../implementors/sgx_tstd/cmp/trait.PartialEq.js   |    3 +
 .../implementors/sgx_tstd/cmp/trait.PartialOrd.js  |    3 +
 .../implementors/sgx_tstd/convert/trait.AsMut.js   |    3 +
 .../implementors/sgx_tstd/convert/trait.AsRef.js   |    3 +
 .../sgx_tstd/convert/trait.FloatToInt.js           |    3 +
 .../implementors/sgx_tstd/convert/trait.From.js    |    3 +
 .../implementors/sgx_tstd/convert/trait.Into.js    |    3 +
 .../implementors/sgx_tstd/convert/trait.TryFrom.js |    3 +
 .../implementors/sgx_tstd/convert/trait.TryInto.js |    3 +
 .../implementors/sgx_tstd/default/trait.Default.js |    3 +
 .../implementors/sgx_tstd/error/trait.Error.js     |    3 +
 .../implementors/sgx_tstd/fmt/trait.Binary.js      |    3 +
 .../implementors/sgx_tstd/fmt/trait.Debug.js       |    3 +
 .../implementors/sgx_tstd/fmt/trait.Display.js     |    3 +
 .../implementors/sgx_tstd/fmt/trait.LowerExp.js    |    3 +
 .../implementors/sgx_tstd/fmt/trait.LowerHex.js    |    3 +
 .../implementors/sgx_tstd/fmt/trait.Octal.js       |    3 +
 .../implementors/sgx_tstd/fmt/trait.Pointer.js     |    3 +
 .../implementors/sgx_tstd/fmt/trait.UpperExp.js    |    3 +
 .../implementors/sgx_tstd/fmt/trait.UpperHex.js    |    3 +
 .../implementors/sgx_tstd/fmt/trait.Write.js       |    3 +
 .../implementors/sgx_tstd/future/trait.Future.js   |    3 +
 .../sgx_tstd/future/trait.IntoFuture.js            |    3 +
 .../sgx_tstd/hash/trait.BuildHasher.js             |    3 +
 .../implementors/sgx_tstd/hash/trait.Hash.js       |    3 +
 .../implementors/sgx_tstd/hash/trait.Hasher.js     |    3 +
 .../implementors/sgx_tstd/io/trait.BufRead.js      |    3 +
 .../sgx-sdk/implementors/sgx_tstd/io/trait.Read.js |    3 +
 .../sgx-sdk/implementors/sgx_tstd/io/trait.Seek.js |    3 +
 .../implementors/sgx_tstd/io/trait.Write.js        |    3 +
 .../sgx_tstd/iter/trait.DoubleEndedIterator.js     |    3 +
 .../sgx_tstd/iter/trait.ExactSizeIterator.js       |    3 +
 .../implementors/sgx_tstd/iter/trait.Extend.js     |    3 +
 .../sgx_tstd/iter/trait.FromIterator.js            |    3 +
 .../sgx_tstd/iter/trait.FusedIterator.js           |    3 +
 .../sgx_tstd/iter/trait.InPlaceIterable.js         |    3 +
 .../sgx_tstd/iter/trait.IntoIterator.js            |    3 +
 .../implementors/sgx_tstd/iter/trait.Iterator.js   |    3 +
 .../implementors/sgx_tstd/iter/trait.Product.js    |    3 +
 .../implementors/sgx_tstd/iter/trait.SourceIter.js |    3 +
 .../implementors/sgx_tstd/iter/trait.Step.js       |    3 +
 .../implementors/sgx_tstd/iter/trait.Sum.js        |    3 +
 .../implementors/sgx_tstd/iter/trait.TrustedLen.js |    3 +
 .../implementors/sgx_tstd/marker/trait.Copy.js     |    3 +
 .../implementors/sgx_tstd/marker/trait.Send.js     |    3 +
 .../sgx_tstd/marker/trait.StructuralEq.js          |    3 +
 .../sgx_tstd/marker/trait.StructuralPartialEq.js   |    3 +
 .../implementors/sgx_tstd/marker/trait.Sync.js     |    3 +
 .../implementors/sgx_tstd/marker/trait.Unpin.js    |    3 +
 .../sgx_tstd/net/trait.ToSocketAddrs.js            |    3 +
 .../sgx-sdk/implementors/sgx_tstd/ops/trait.Add.js |    3 +
 .../implementors/sgx_tstd/ops/trait.AddAssign.js   |    3 +
 .../implementors/sgx_tstd/ops/trait.BitAnd.js      |    3 +
 .../sgx_tstd/ops/trait.BitAndAssign.js             |    3 +
 .../implementors/sgx_tstd/ops/trait.BitOr.js       |    3 +
 .../implementors/sgx_tstd/ops/trait.BitOrAssign.js |    3 +
 .../implementors/sgx_tstd/ops/trait.BitXor.js      |    3 +
 .../sgx_tstd/ops/trait.BitXorAssign.js             |    3 +
 .../sgx_tstd/ops/trait.CoerceUnsized.js            |    3 +
 .../implementors/sgx_tstd/ops/trait.Deref.js       |    3 +
 .../implementors/sgx_tstd/ops/trait.DerefMut.js    |    3 +
 .../sgx_tstd/ops/trait.DispatchFromDyn.js          |    3 +
 .../sgx-sdk/implementors/sgx_tstd/ops/trait.Div.js |    3 +
 .../implementors/sgx_tstd/ops/trait.DivAssign.js   |    3 +
 .../implementors/sgx_tstd/ops/trait.Drop.js        |    3 +
 .../sgx-sdk/implementors/sgx_tstd/ops/trait.Fn.js  |    3 +
 .../implementors/sgx_tstd/ops/trait.FnMut.js       |    3 +
 .../implementors/sgx_tstd/ops/trait.FnOnce.js      |    3 +
 .../implementors/sgx_tstd/ops/trait.Generator.js   |    3 +
 .../implementors/sgx_tstd/ops/trait.Index.js       |    3 +
 .../implementors/sgx_tstd/ops/trait.IndexMut.js    |    3 +
 .../sgx-sdk/implementors/sgx_tstd/ops/trait.Mul.js |    3 +
 .../implementors/sgx_tstd/ops/trait.MulAssign.js   |    3 +
 .../sgx-sdk/implementors/sgx_tstd/ops/trait.Neg.js |    3 +
 .../sgx-sdk/implementors/sgx_tstd/ops/trait.Not.js |    3 +
 .../implementors/sgx_tstd/ops/trait.RangeBounds.js |    3 +
 .../sgx-sdk/implementors/sgx_tstd/ops/trait.Rem.js |    3 +
 .../implementors/sgx_tstd/ops/trait.RemAssign.js   |    3 +
 .../sgx-sdk/implementors/sgx_tstd/ops/trait.Shl.js |    3 +
 .../implementors/sgx_tstd/ops/trait.ShlAssign.js   |    3 +
 .../sgx-sdk/implementors/sgx_tstd/ops/trait.Shr.js |    3 +
 .../implementors/sgx_tstd/ops/trait.ShrAssign.js   |    3 +
 .../sgx-sdk/implementors/sgx_tstd/ops/trait.Sub.js |    3 +
 .../implementors/sgx_tstd/ops/trait.SubAssign.js   |    3 +
 .../sgx-sdk/implementors/sgx_tstd/ops/trait.Try.js |    3 +
 .../sgx_tstd/os/fs/trait.MetadataExt.js            |    3 +
 .../sgx_tstd/os/unix/ffi/trait.OsStrExt.js         |    3 +
 .../sgx_tstd/os/unix/ffi/trait.OsStringExt.js      |    3 +
 .../sgx_tstd/os/unix/fs/trait.DirBuilderExt.js     |    3 +
 .../sgx_tstd/os/unix/fs/trait.DirEntryExt.js       |    3 +
 .../sgx_tstd/os/unix/fs/trait.FileExt.js           |    3 +
 .../sgx_tstd/os/unix/fs/trait.FileTypeExt.js       |    3 +
 .../sgx_tstd/os/unix/fs/trait.MetadataExt.js       |    3 +
 .../sgx_tstd/os/unix/fs/trait.OpenOptionsExt.js    |    3 +
 .../sgx_tstd/os/unix/fs/trait.PermissionsExt.js    |    3 +
 .../sgx_tstd/os/unix/io/trait.AsRawFd.js           |    3 +
 .../sgx_tstd/os/unix/io/trait.FromRawFd.js         |    3 +
 .../sgx_tstd/os/unix/io/trait.IntoRawFd.js         |    3 +
 .../sgx_tstd/panic/trait.RefUnwindSafe.js          |    3 +
 .../sgx_tstd/panic/trait.UnwindSafe.js             |    3 +
 .../implementors/sgx_tstd/slice/trait.Concat.js    |    3 +
 .../implementors/sgx_tstd/slice/trait.Join.js      |    3 +
 .../sgx_tstd/slice/trait.SliceIndex.js             |    3 +
 .../str/pattern/trait.DoubleEndedSearcher.js       |    3 +
 .../sgx_tstd/str/pattern/trait.Pattern.js          |    3 +
 .../sgx_tstd/str/pattern/trait.ReverseSearcher.js  |    3 +
 .../sgx_tstd/str/pattern/trait.Searcher.js         |    3 +
 .../implementors/sgx_tstd/str/trait.FromStr.js     |    3 +
 .../implementors/sgx_tstd/string/trait.ToString.js |    3 +
 .../sgx_tstd/untrusted/path/trait.PathEx.js        |    3 +
 .../sgx_tstd/untrusted/time/trait.InstantEx.js     |    3 +
 .../sgx_tstd/untrusted/time/trait.SystemTimeEx.js  |    3 +
 .../sgx_types/marker/trait.BytewiseEquality.js     |    3 +
 .../sgx_types/marker/trait.ContiguousMemory.js     |    3 +
 api-docs/sgx-sdk/index.html                        |    1 +
 api-docs/sgx-sdk/light.css                         |    1 +
 api-docs/sgx-sdk/main.js                           |    8 +
 api-docs/sgx-sdk/normalize.css                     |    2 +
 api-docs/sgx-sdk/noscript.css                      |    1 +
 api-docs/sgx-sdk/rust-logo.png                     |  Bin 0 -> 5758 bytes
 api-docs/sgx-sdk/rustdoc.css                       |    1 +
 api-docs/sgx-sdk/search-index.js                   |   15 +
 api-docs/sgx-sdk/settings.css                      |    1 +
 api-docs/sgx-sdk/settings.html                     |    6 +
 api-docs/sgx-sdk/settings.js                       |    1 +
 .../sgx-sdk/sgx_alloc/alignalloc/fn.alloc.html     |    4 +
 .../alignalloc/fn.alloc_with_pad_align.html        |    4 +
 .../alignalloc/fn.alloc_with_pad_align_zeroed.html |    4 +
 .../sgx_alloc/alignalloc/fn.alloc_with_req.html    |    4 +
 .../alignalloc/fn.alloc_with_req_zeroed.html       |    4 +
 .../sgx_alloc/alignalloc/fn.alloc_zeroed.html      |    4 +
 .../sgx-sdk/sgx_alloc/alignalloc/fn.dealloc.html   |    4 +
 .../sgx_alloc/alignalloc/fn.pad_align_to.html      |    4 +
 api-docs/sgx-sdk/sgx_alloc/alignalloc/index.html   |    6 +
 .../sgx_alloc/alignalloc/platform/fn.alloc.html    |   10 +
 .../platform/fn.alloc_with_pad_align.html          |   10 +
 .../platform/fn.alloc_with_pad_align_zeroed.html   |   10 +
 .../alignalloc/platform/fn.alloc_with_req.html     |   10 +
 .../platform/fn.alloc_with_req_zeroed.html         |   10 +
 .../alignalloc/platform/fn.alloc_zeroed.html       |   10 +
 .../sgx_alloc/alignalloc/platform/fn.dealloc.html  |   10 +
 .../alignalloc/platform/fn.pad_align_to.html       |   10 +
 .../sgx-sdk/sgx_alloc/alignalloc/sidebar-items.js  |    1 +
 .../sgx_alloc/alignalloc/struct.AlighAllocErr.html |   25 +
 .../sgx_alloc/alignalloc/struct.AlignAlloc.html    |   13 +
 .../alignalloc/struct.AlignLayoutErr.html          |   25 +
 .../sgx_alloc/alignalloc/struct.AlignReq.html      |   28 +
 api-docs/sgx-sdk/sgx_alloc/alignbox/index.html     |    6 +
 .../sgx-sdk/sgx_alloc/alignbox/sidebar-items.js    |    1 +
 .../sgx_alloc/alignbox/struct.AlignBox.html        |   33 +
 api-docs/sgx-sdk/sgx_alloc/all.html                |    6 +
 api-docs/sgx-sdk/sgx_alloc/index.html              |   13 +
 .../sgx_alloc/rsrvmem/enum.ProtectAttr.html        |   30 +
 api-docs/sgx-sdk/sgx_alloc/rsrvmem/fn.alloc.html   |    4 +
 .../sgx_alloc/rsrvmem/fn.alloc_with_addr.html      |    4 +
 .../sgx-sdk/sgx_alloc/rsrvmem/fn.alloc_zeroed.html |    4 +
 api-docs/sgx-sdk/sgx_alloc/rsrvmem/fn.dealloc.html |    4 +
 api-docs/sgx-sdk/sgx_alloc/rsrvmem/fn.protect.html |    4 +
 .../sgx_alloc/rsrvmem/fn.sgx_alloc_rsrv_mem.html   |    4 +
 .../rsrvmem/fn.sgx_alloc_rsrv_mem_ex.html          |    4 +
 .../sgx_alloc/rsrvmem/fn.sgx_free_rsrv_mem.html    |    4 +
 .../rsrvmem/fn.sgx_tprotect_rsrv_mem.html          |    4 +
 api-docs/sgx-sdk/sgx_alloc/rsrvmem/index.html      |    7 +
 .../sgx_alloc/rsrvmem/platform/fn.alloc.html       |   10 +
 .../rsrvmem/platform/fn.alloc_with_addr.html       |   10 +
 .../rsrvmem/platform/fn.alloc_zeroed.html          |   10 +
 .../sgx_alloc/rsrvmem/platform/fn.dealloc.html     |   10 +
 .../sgx_alloc/rsrvmem/platform/fn.protect.html     |   10 +
 .../rsrvmem/platform/fn.sgx_alloc_rsrv_mem.html    |   10 +
 .../rsrvmem/platform/fn.sgx_alloc_rsrv_mem_ex.html |   10 +
 .../rsrvmem/platform/fn.sgx_free_rsrv_mem.html     |   10 +
 .../rsrvmem/platform/fn.sgx_tprotect_rsrv_mem.html |   10 +
 .../sgx-sdk/sgx_alloc/rsrvmem/sidebar-items.js     |    1 +
 .../sgx_alloc/rsrvmem/struct.RsrvMemAlloc.html     |   41 +
 .../sgx_alloc/rsrvmem/struct.RsrvMemAllocErr.html  |   25 +
 api-docs/sgx-sdk/sgx_alloc/sidebar-items.js        |    1 +
 api-docs/sgx-sdk/sgx_alloc/struct.System.html      |   27 +
 .../sgx-sdk/sgx_alloc/system/struct.System.html    |   10 +
 api-docs/sgx-sdk/sgx_backtrace_sys/all.html        |    6 +
 .../bindings/enum.backtrace_state.html             |   10 +
 .../bindings/fn.backtrace_create_state.html        |   10 +
 .../bindings/fn.backtrace_pcinfo.html              |   10 +
 .../bindings/fn.backtrace_syminfo.html             |   10 +
 .../bindings/type.backtrace_error_callback.html    |   10 +
 .../bindings/type.backtrace_full_callback.html     |   10 +
 .../bindings/type.backtrace_syminfo_callback.html  |   10 +
 .../sgx_backtrace_sys/enum.backtrace_state.html    |   13 +
 .../fn.backtrace_create_state.html                 |    4 +
 .../sgx_backtrace_sys/fn.backtrace_pcinfo.html     |    4 +
 .../sgx_backtrace_sys/fn.backtrace_syminfo.html    |    4 +
 api-docs/sgx-sdk/sgx_backtrace_sys/index.html      |    7 +
 .../sgx-sdk/sgx_backtrace_sys/sidebar-items.js     |    1 +
 .../type.backtrace_error_callback.html             |    4 +
 .../type.backtrace_full_callback.html              |    4 +
 .../type.backtrace_syminfo_callback.html           |    4 +
 api-docs/sgx-sdk/sgx_demangle/all.html             |    6 +
 api-docs/sgx-sdk/sgx_demangle/fn.demangle.html     |   15 +
 api-docs/sgx-sdk/sgx_demangle/fn.try_demangle.html |   17 +
 api-docs/sgx-sdk/sgx_demangle/index.html           |   30 +
 api-docs/sgx-sdk/sgx_demangle/sidebar-items.js     |    1 +
 api-docs/sgx-sdk/sgx_demangle/struct.Demangle.html |   17 +
 .../sgx_demangle/struct.TryDemangleError.html      |   17 +
 api-docs/sgx-sdk/sgx_libc/all.html                 |    6 +
 api-docs/sgx-sdk/sgx_libc/constant.AF_ALG.html     |    4 +
 .../sgx-sdk/sgx_libc/constant.AF_APPLETALK.html    |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.AF_ASH.html     |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.AF_ATMPVC.html  |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.AF_ATMSVC.html  |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.AF_AX25.html    |    4 +
 .../sgx-sdk/sgx_libc/constant.AF_BLUETOOTH.html    |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.AF_BRIDGE.html  |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.AF_CAIF.html    |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.AF_CAN.html     |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.AF_DECnet.html  |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.AF_ECONET.html  |    4 +
 .../sgx-sdk/sgx_libc/constant.AF_IEEE802154.html   |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.AF_INET.html    |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.AF_INET6.html   |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.AF_IPX.html     |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.AF_IRDA.html    |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.AF_ISDN.html    |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.AF_IUCV.html    |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.AF_KEY.html     |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.AF_LLC.html     |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.AF_LOCAL.html   |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.AF_NETBEUI.html |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.AF_NETLINK.html |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.AF_NETROM.html  |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.AF_PACKET.html  |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.AF_PHONET.html  |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.AF_PPPOX.html   |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.AF_RDS.html     |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.AF_ROSE.html    |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.AF_ROUTE.html   |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.AF_RXRPC.html   |    4 +
 .../sgx-sdk/sgx_libc/constant.AF_SECURITY.html     |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.AF_SNA.html     |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.AF_TIPC.html    |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.AF_UNIX.html    |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.AF_UNSPEC.html  |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.AF_WANPIPE.html |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.AF_X25.html     |    4 +
 .../sgx-sdk/sgx_libc/constant.AIO_ALLDONE.html     |    4 +
 .../sgx-sdk/sgx_libc/constant.AIO_CANCELED.html    |    4 +
 .../sgx-sdk/sgx_libc/constant.AIO_NOTCANCELED.html |    4 +
 .../sgx-sdk/sgx_libc/constant.AI_ADDRCONFIG.html   |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.AI_ALL.html     |    4 +
 .../sgx-sdk/sgx_libc/constant.AI_CANONNAME.html    |    4 +
 .../sgx-sdk/sgx_libc/constant.AI_NUMERICHOST.html  |    4 +
 .../sgx-sdk/sgx_libc/constant.AI_NUMERICSERV.html  |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.AI_PASSIVE.html |    4 +
 .../sgx-sdk/sgx_libc/constant.AI_V4MAPPED.html     |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.AT_FDCWD.html   |    4 +
 .../sgx-sdk/sgx_libc/constant.AT_REMOVEDIR.html    |    4 +
 .../sgx_libc/constant.AT_SYMLINK_FOLLOW.html       |    4 +
 .../sgx_libc/constant.AT_SYMLINK_NOFOLLOW.html     |    4 +
 .../sgx-sdk/sgx_libc/constant.CLOCK_BOOTTIME.html  |    4 +
 .../sgx_libc/constant.CLOCK_BOOTTIME_ALARM.html    |    4 +
 .../sgx-sdk/sgx_libc/constant.CLOCK_MONOTONIC.html |    4 +
 .../sgx_libc/constant.CLOCK_MONOTONIC_COARSE.html  |    4 +
 .../sgx_libc/constant.CLOCK_MONOTONIC_RAW.html     |    4 +
 .../constant.CLOCK_PROCESS_CPUTIME_ID.html         |    4 +
 .../sgx-sdk/sgx_libc/constant.CLOCK_REALTIME.html  |    4 +
 .../sgx_libc/constant.CLOCK_REALTIME_ALARM.html    |    4 +
 .../sgx_libc/constant.CLOCK_REALTIME_COARSE.html   |    4 +
 .../sgx_libc/constant.CLOCK_THREAD_CPUTIME_ID.html |    4 +
 .../sgx-sdk/sgx_libc/constant.CPU_SETSIZE.html     |    4 +
 .../constant.DCCP_SERVICE_LIST_MAX_LEN.html        |    5 +
 .../constant.DCCP_SOCKOPT_AVAILABLE_CCIDS.html     |    4 +
 .../sgx_libc/constant.DCCP_SOCKOPT_CCID.html       |    4 +
 .../constant.DCCP_SOCKOPT_CCID_RX_INFO.html        |    4 +
 .../constant.DCCP_SOCKOPT_CCID_TX_INFO.html        |    4 +
 .../sgx_libc/constant.DCCP_SOCKOPT_CHANGE_L.html   |    4 +
 .../sgx_libc/constant.DCCP_SOCKOPT_CHANGE_R.html   |    4 +
 .../constant.DCCP_SOCKOPT_GET_CUR_MPS.html         |    4 +
 .../constant.DCCP_SOCKOPT_PACKET_SIZE.html         |    4 +
 .../sgx_libc/constant.DCCP_SOCKOPT_QPOLICY_ID.html |    4 +
 .../constant.DCCP_SOCKOPT_QPOLICY_TXQLEN.html      |    4 +
 .../sgx_libc/constant.DCCP_SOCKOPT_RECV_CSCOV.html |    4 +
 .../sgx_libc/constant.DCCP_SOCKOPT_RX_CCID.html    |    4 +
 .../sgx_libc/constant.DCCP_SOCKOPT_SEND_CSCOV.html |    4 +
 .../constant.DCCP_SOCKOPT_SERVER_TIMEWAIT.html     |    4 +
 .../sgx_libc/constant.DCCP_SOCKOPT_SERVICE.html    |    4 +
 .../sgx_libc/constant.DCCP_SOCKOPT_TX_CCID.html    |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.DT_BLK.html     |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.DT_CHR.html     |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.DT_DIR.html     |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.DT_FIFO.html    |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.DT_LNK.html     |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.DT_REG.html     |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.DT_SOCK.html    |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.DT_UNKNOWN.html |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.E2BIG.html      |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.EACCES.html     |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.EADDRINUSE.html |    4 +
 .../sgx-sdk/sgx_libc/constant.EADDRNOTAVAIL.html   |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.EADV.html       |    4 +
 .../sgx-sdk/sgx_libc/constant.EAFNOSUPPORT.html    |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.EAGAIN.html     |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.EAI_AGAIN.html  |    4 +
 .../sgx-sdk/sgx_libc/constant.EAI_BADFLAGS.html    |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.EAI_FAIL.html   |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.EAI_FAMILY.html |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.EAI_MEMORY.html |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.EAI_NONAME.html |    4 +
 .../sgx-sdk/sgx_libc/constant.EAI_OVERFLOW.html    |    4 +
 .../sgx-sdk/sgx_libc/constant.EAI_SERVICE.html     |    4 +
 .../sgx-sdk/sgx_libc/constant.EAI_SOCKTYPE.html    |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.EAI_SYSTEM.html |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.EALREADY.html   |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.EBADE.html      |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.EBADF.html      |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.EBADFD.html     |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.EBADMSG.html    |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.EBADR.html      |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.EBADRQC.html    |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.EBADSLT.html    |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.EBFONT.html     |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.EBUSY.html      |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.ECANCELED.html  |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.ECHILD.html     |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.ECHRNG.html     |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.ECOMM.html      |    4 +
 .../sgx-sdk/sgx_libc/constant.ECONNABORTED.html    |    4 +
 .../sgx-sdk/sgx_libc/constant.ECONNREFUSED.html    |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.ECONNRESET.html |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.EDEADLK.html    |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.EDEADLOCK.html  |    4 +
 .../sgx-sdk/sgx_libc/constant.EDESTADDRREQ.html    |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.EDOM.html       |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.EDOTDOT.html    |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.EDQUOT.html     |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.EEXIST.html     |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.EFAULT.html     |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.EFBIG.html      |    4 +
 .../sgx-sdk/sgx_libc/constant.EFD_CLOEXEC.html     |    4 +
 .../sgx-sdk/sgx_libc/constant.EFD_NONBLOCK.html    |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.EHOSTDOWN.html  |    4 +
 .../sgx-sdk/sgx_libc/constant.EHOSTUNREACH.html    |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.EHWPOISON.html  |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.EIDRM.html      |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.EILSEQ.html     |    4 +
 .../sgx-sdk/sgx_libc/constant.EINPROGRESS.html     |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.EINTR.html      |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.EINVAL.html     |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.EIO.html        |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.EISCONN.html    |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.EISDIR.html     |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.EISNAM.html     |    4 +
 .../sgx-sdk/sgx_libc/constant.EKEYEXPIRED.html     |    4 +
 .../sgx-sdk/sgx_libc/constant.EKEYREJECTED.html    |    4 +
 .../sgx-sdk/sgx_libc/constant.EKEYREVOKED.html     |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.EL2HLT.html     |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.EL2NSYNC.html   |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.EL3HLT.html     |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.EL3RST.html     |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.ELIBACC.html    |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.ELIBBAD.html    |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.ELIBEXEC.html   |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.ELIBMAX.html    |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.ELIBSCN.html    |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.ELNRNG.html     |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.ELOOP.html      |    4 +
 .../sgx-sdk/sgx_libc/constant.EMEDIUMTYPE.html     |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.EMFILE.html     |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.EMLINK.html     |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.EMSGSIZE.html   |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.EMULTIHOP.html  |    4 +
 .../sgx-sdk/sgx_libc/constant.ENAMETOOLONG.html    |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.ENAVAIL.html    |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.ENETDOWN.html   |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.ENETRESET.html  |    4 +
 .../sgx-sdk/sgx_libc/constant.ENETUNREACH.html     |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.ENFILE.html     |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.ENOANO.html     |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.ENOBUFS.html    |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.ENOCSI.html     |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.ENODATA.html    |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.ENODEV.html     |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.ENOENT.html     |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.ENOEXEC.html    |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.ENOKEY.html     |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.ENOLCK.html     |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.ENOLINK.html    |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.ENOMEDIUM.html  |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.ENOMEM.html     |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.ENOMSG.html     |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.ENONET.html     |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.ENOPKG.html     |    4 +
 .../sgx-sdk/sgx_libc/constant.ENOPROTOOPT.html     |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.ENOSPC.html     |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.ENOSR.html      |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.ENOSTR.html     |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.ENOSYS.html     |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.ENOTBLK.html    |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.ENOTCONN.html   |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.ENOTDIR.html    |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.ENOTEMPTY.html  |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.ENOTNAM.html    |    4 +
 .../sgx-sdk/sgx_libc/constant.ENOTRECOVERABLE.html |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.ENOTSOCK.html   |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.ENOTSUP.html    |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.ENOTTY.html     |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.ENOTUNIQ.html   |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.ENXIO.html      |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.EOF.html        |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.EOPNOTSUPP.html |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.EOVERFLOW.html  |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.EOWNERDEAD.html |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.EPERM.html      |    4 +
 .../sgx-sdk/sgx_libc/constant.EPFNOSUPPORT.html    |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.EPIPE.html      |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.EPOLLERR.html   |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.EPOLLET.html    |    4 +
 .../sgx-sdk/sgx_libc/constant.EPOLLEXCLUSIVE.html  |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.EPOLLHUP.html   |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.EPOLLIN.html    |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.EPOLLMSG.html   |    4 +
 .../sgx-sdk/sgx_libc/constant.EPOLLONESHOT.html    |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.EPOLLOUT.html   |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.EPOLLPRI.html   |    4 +
 .../sgx-sdk/sgx_libc/constant.EPOLLRDBAND.html     |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.EPOLLRDHUP.html |    4 +
 .../sgx-sdk/sgx_libc/constant.EPOLLRDNORM.html     |    4 +
 .../sgx-sdk/sgx_libc/constant.EPOLLWAKEUP.html     |    4 +
 .../sgx-sdk/sgx_libc/constant.EPOLLWRBAND.html     |    4 +
 .../sgx-sdk/sgx_libc/constant.EPOLLWRNORM.html     |    4 +
 .../sgx-sdk/sgx_libc/constant.EPOLL_CLOEXEC.html   |    4 +
 .../sgx-sdk/sgx_libc/constant.EPOLL_CTL_ADD.html   |    4 +
 .../sgx-sdk/sgx_libc/constant.EPOLL_CTL_DEL.html   |    4 +
 .../sgx-sdk/sgx_libc/constant.EPOLL_CTL_MOD.html   |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.EPROTO.html     |    4 +
 .../sgx-sdk/sgx_libc/constant.EPROTONOSUPPORT.html |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.EPROTOTYPE.html |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.ERANGE.html     |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.EREMCHG.html    |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.EREMOTE.html    |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.EREMOTEIO.html  |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.ERESTART.html   |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.ERFKILL.html    |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.EROFS.html      |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.ESGX.html       |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.ESHUTDOWN.html  |    4 +
 .../sgx-sdk/sgx_libc/constant.ESOCKTNOSUPPORT.html |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.ESPIPE.html     |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.ESRCH.html      |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.ESRMNT.html     |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.ESTALE.html     |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.ESTRPIPE.html   |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.ETIME.html      |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.ETIMEDOUT.html  |    4 +
 .../sgx-sdk/sgx_libc/constant.ETOOMANYREFS.html    |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.ETXTBSY.html    |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.EUCLEAN.html    |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.EUNATCH.html    |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.EUSERS.html     |    4 +
 .../sgx-sdk/sgx_libc/constant.EWOULDBLOCK.html     |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.EXDEV.html      |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.EXFULL.html     |    4 +
 .../sgx-sdk/sgx_libc/constant.EXIT_FAILURE.html    |    4 +
 .../sgx-sdk/sgx_libc/constant.EXIT_SUCCESS.html    |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.FD_CLOEXEC.html |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.FD_SETSIZE.html |    4 +
 .../sgx-sdk/sgx_libc/constant.FILENAME_MAX.html    |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.FIOCLEX.html    |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.FIONBIO.html    |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.FOPEN_MAX.html  |    4 +
 .../sgx-sdk/sgx_libc/constant.F_ADD_SEALS.html     |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.F_CANCELLK.html |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.F_DUPFD.html    |    4 +
 .../sgx-sdk/sgx_libc/constant.F_DUPFD_CLOEXEC.html |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.F_GETFD.html    |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.F_GETFL.html    |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.F_GETLEASE.html |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.F_GETLK.html    |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.F_GETOWN.html   |    4 +
 .../sgx-sdk/sgx_libc/constant.F_GETPIPE_SZ.html    |    4 +
 .../sgx-sdk/sgx_libc/constant.F_GET_SEALS.html     |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.F_NOTIFY.html   |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.F_OK.html       |    4 +
 .../sgx-sdk/sgx_libc/constant.F_SEAL_GROW.html     |    4 +
 .../sgx-sdk/sgx_libc/constant.F_SEAL_SEAL.html     |    4 +
 .../sgx-sdk/sgx_libc/constant.F_SEAL_SHRINK.html   |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.F_SETFD.html    |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.F_SETFL.html    |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.F_SETLEASE.html |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.F_SETLK.html    |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.F_SETLKW.html   |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.F_SETOWN.html   |    4 +
 .../sgx-sdk/sgx_libc/constant.F_SETPIPE_SZ.html    |    4 +
 .../sgx-sdk/sgx_libc/constant.IFF_ALLMULTI.html    |    4 +
 .../sgx-sdk/sgx_libc/constant.IFF_AUTOMEDIA.html   |    4 +
 .../sgx-sdk/sgx_libc/constant.IFF_BROADCAST.html   |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.IFF_DEBUG.html  |    4 +
 .../sgx-sdk/sgx_libc/constant.IFF_DYNAMIC.html     |    4 +
 .../sgx-sdk/sgx_libc/constant.IFF_LOOPBACK.html    |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.IFF_MASTER.html |    4 +
 .../sgx-sdk/sgx_libc/constant.IFF_MULTICAST.html   |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.IFF_NOARP.html  |    4 +
 .../sgx-sdk/sgx_libc/constant.IFF_NOTRAILERS.html  |    4 +
 .../sgx-sdk/sgx_libc/constant.IFF_POINTOPOINT.html |    4 +
 .../sgx-sdk/sgx_libc/constant.IFF_PORTSEL.html     |    4 +
 .../sgx-sdk/sgx_libc/constant.IFF_PROMISC.html     |    4 +
 .../sgx-sdk/sgx_libc/constant.IFF_RUNNING.html     |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.IFF_SLAVE.html  |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.IFF_UP.html     |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.IPPROTO_AH.html |    5 +
 .../sgx-sdk/sgx_libc/constant.IPPROTO_BEETPH.html  |    4 +
 .../sgx-sdk/sgx_libc/constant.IPPROTO_COMP.html    |    5 +
 .../sgx-sdk/sgx_libc/constant.IPPROTO_DCCP.html    |    5 +
 .../sgx-sdk/sgx_libc/constant.IPPROTO_DSTOPTS.html |    5 +
 .../sgx-sdk/sgx_libc/constant.IPPROTO_EGP.html     |    5 +
 .../sgx-sdk/sgx_libc/constant.IPPROTO_ENCAP.html   |    5 +
 .../sgx-sdk/sgx_libc/constant.IPPROTO_ESP.html     |    5 +
 .../sgx_libc/constant.IPPROTO_FRAGMENT.html        |    5 +
 .../sgx-sdk/sgx_libc/constant.IPPROTO_GRE.html     |    5 +
 .../sgx-sdk/sgx_libc/constant.IPPROTO_HOPOPTS.html |    5 +
 .../sgx-sdk/sgx_libc/constant.IPPROTO_ICMP.html    |    4 +
 .../sgx-sdk/sgx_libc/constant.IPPROTO_ICMPV6.html  |    4 +
 .../sgx-sdk/sgx_libc/constant.IPPROTO_IDP.html     |    5 +
 .../sgx-sdk/sgx_libc/constant.IPPROTO_IGMP.html    |    5 +
 api-docs/sgx-sdk/sgx_libc/constant.IPPROTO_IP.html |    4 +
 .../sgx-sdk/sgx_libc/constant.IPPROTO_IPIP.html    |    5 +
 .../sgx-sdk/sgx_libc/constant.IPPROTO_IPV6.html    |    4 +
 .../sgx-sdk/sgx_libc/constant.IPPROTO_MAX.html     |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.IPPROTO_MH.html |    4 +
 .../sgx-sdk/sgx_libc/constant.IPPROTO_MPLS.html    |    4 +
 .../sgx-sdk/sgx_libc/constant.IPPROTO_MTP.html     |    4 +
 .../sgx-sdk/sgx_libc/constant.IPPROTO_NONE.html    |    5 +
 .../sgx-sdk/sgx_libc/constant.IPPROTO_PIM.html     |    5 +
 .../sgx-sdk/sgx_libc/constant.IPPROTO_PUP.html     |    5 +
 .../sgx-sdk/sgx_libc/constant.IPPROTO_RAW.html     |    5 +
 .../sgx-sdk/sgx_libc/constant.IPPROTO_ROUTING.html |    5 +
 .../sgx-sdk/sgx_libc/constant.IPPROTO_RSVP.html    |    5 +
 .../sgx-sdk/sgx_libc/constant.IPPROTO_SCTP.html    |    5 +
 .../sgx-sdk/sgx_libc/constant.IPPROTO_TCP.html     |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.IPPROTO_TP.html |    5 +
 .../sgx-sdk/sgx_libc/constant.IPPROTO_UDP.html     |    4 +
 .../sgx-sdk/sgx_libc/constant.IPPROTO_UDPLITE.html |    4 +
 .../sgx_libc/constant.IPV6_ADD_MEMBERSHIP.html     |    4 +
 .../sgx_libc/constant.IPV6_DROP_MEMBERSHIP.html    |    4 +
 .../sgx_libc/constant.IPV6_MULTICAST_HOPS.html     |    4 +
 .../sgx_libc/constant.IPV6_MULTICAST_IF.html       |    4 +
 .../sgx_libc/constant.IPV6_MULTICAST_LOOP.html     |    4 +
 .../sgx-sdk/sgx_libc/constant.IPV6_PKTINFO.html    |    4 +
 .../sgx_libc/constant.IPV6_RECVPKTINFO.html        |    4 +
 .../sgx_libc/constant.IPV6_UNICAST_HOPS.html       |    4 +
 .../sgx-sdk/sgx_libc/constant.IPV6_V6ONLY.html     |    4 +
 .../sgx_libc/constant.IP_ADD_MEMBERSHIP.html       |    4 +
 .../sgx_libc/constant.IP_DROP_MEMBERSHIP.html      |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.IP_HDRINCL.html |    4 +
 .../sgx-sdk/sgx_libc/constant.IP_MULTICAST_IF.html |    4 +
 .../sgx_libc/constant.IP_MULTICAST_LOOP.html       |    4 +
 .../sgx_libc/constant.IP_MULTICAST_TTL.html        |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.IP_PKTINFO.html |    4 +
 .../sgx-sdk/sgx_libc/constant.IP_TRANSPARENT.html  |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.IP_TTL.html     |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.LIO_NOP.html    |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.LIO_NOWAIT.html |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.LIO_READ.html   |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.LIO_WAIT.html   |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.LIO_WRITE.html  |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.LOCK_EX.html    |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.LOCK_NB.html    |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.LOCK_SH.html    |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.LOCK_UN.html    |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.L_tmpnam.html   |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.MAP_ANON.html   |    4 +
 .../sgx-sdk/sgx_libc/constant.MAP_ANONYMOUS.html   |    4 +
 .../sgx-sdk/sgx_libc/constant.MAP_DENYWRITE.html   |    4 +
 .../sgx-sdk/sgx_libc/constant.MAP_EXECUTABLE.html  |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.MAP_FAILED.html |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.MAP_FILE.html   |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.MAP_FIXED.html  |    4 +
 .../sgx-sdk/sgx_libc/constant.MAP_NONBLOCK.html    |    4 +
 .../sgx-sdk/sgx_libc/constant.MAP_POPULATE.html    |    4 +
 .../sgx-sdk/sgx_libc/constant.MAP_PRIVATE.html     |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.MAP_SHARED.html |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.MAP_STACK.html  |    4 +
 .../sgx_libc/constant.MSG_CMSG_CLOEXEC.html        |    4 +
 .../sgx-sdk/sgx_libc/constant.MSG_CONFIRM.html     |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.MSG_CTRUNC.html |    4 +
 .../sgx-sdk/sgx_libc/constant.MSG_DONTROUTE.html   |    4 +
 .../sgx-sdk/sgx_libc/constant.MSG_DONTWAIT.html    |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.MSG_EOR.html    |    4 +
 .../sgx-sdk/sgx_libc/constant.MSG_ERRQUEUE.html    |    4 +
 .../sgx-sdk/sgx_libc/constant.MSG_FASTOPEN.html    |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.MSG_FIN.html    |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.MSG_MORE.html   |    4 +
 .../sgx-sdk/sgx_libc/constant.MSG_NOSIGNAL.html    |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.MSG_OOB.html    |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.MSG_PEEK.html   |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.MSG_RST.html    |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.MSG_SYN.html    |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.MSG_TRUNC.html  |    4 +
 .../sgx-sdk/sgx_libc/constant.MSG_WAITALL.html     |    4 +
 .../sgx-sdk/sgx_libc/constant.MSG_WAITFORONE.html  |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.MS_ASYNC.html   |    4 +
 .../sgx-sdk/sgx_libc/constant.MS_INVALIDATE.html   |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.MS_SYNC.html    |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.NCCS.html       |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.NI_DGRAM.html   |    4 +
 .../sgx-sdk/sgx_libc/constant.NI_NAMEREQD.html     |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.NI_NOFQDN.html  |    4 +
 .../sgx-sdk/sgx_libc/constant.NI_NUMERICHOST.html  |    4 +
 .../sgx-sdk/sgx_libc/constant.NI_NUMERICSERV.html  |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.NSIG.html       |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.O_ACCMODE.html  |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.O_APPEND.html   |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.O_ASYNC.html    |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.O_CLOEXEC.html  |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.O_CREAT.html    |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.O_DIRECT.html   |    4 +
 .../sgx-sdk/sgx_libc/constant.O_DIRECTORY.html     |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.O_DSYNC.html    |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.O_EXCL.html     |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.O_FSYNC.html    |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.O_NDELAY.html   |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.O_NOATIME.html  |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.O_NOCTTY.html   |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.O_NOFOLLOW.html |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.O_NONBLOCK.html |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.O_PATH.html     |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.O_RDONLY.html   |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.O_RDWR.html     |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.O_RSYNC.html    |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.O_SYNC.html     |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.O_TRUNC.html    |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.O_WRONLY.html   |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.PATH_MAX.html   |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.PF_ALG.html     |    4 +
 .../sgx-sdk/sgx_libc/constant.PF_APPLETALK.html    |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.PF_ASH.html     |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.PF_ATMPVC.html  |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.PF_ATMSVC.html  |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.PF_AX25.html    |    4 +
 .../sgx-sdk/sgx_libc/constant.PF_BLUETOOTH.html    |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.PF_BRIDGE.html  |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.PF_CAIF.html    |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.PF_CAN.html     |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.PF_DECnet.html  |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.PF_ECONET.html  |    4 +
 .../sgx-sdk/sgx_libc/constant.PF_IEEE802154.html   |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.PF_INET.html    |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.PF_INET6.html   |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.PF_IPX.html     |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.PF_IRDA.html    |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.PF_ISDN.html    |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.PF_IUCV.html    |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.PF_KEY.html     |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.PF_LLC.html     |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.PF_LOCAL.html   |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.PF_NETBEUI.html |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.PF_NETLINK.html |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.PF_NETROM.html  |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.PF_PACKET.html  |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.PF_PHONET.html  |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.PF_PPPOX.html   |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.PF_RDS.html     |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.PF_ROSE.html    |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.PF_ROUTE.html   |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.PF_RXRPC.html   |    4 +
 .../sgx-sdk/sgx_libc/constant.PF_SECURITY.html     |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.PF_SNA.html     |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.PF_TIPC.html    |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.PF_UNIX.html    |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.PF_UNSPEC.html  |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.PF_WANPIPE.html |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.PF_X25.html     |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.POLLERR.html    |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.POLLHUP.html    |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.POLLIN.html     |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.POLLNVAL.html   |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.POLLOUT.html    |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.POLLPRI.html    |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.POLLRDBAND.html |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.POLLRDNORM.html |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.PROT_EXEC.html  |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.PROT_NONE.html  |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.PROT_READ.html  |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.PROT_WRITE.html |    4 +
 .../constant.PTHREAD_COND_INITIALIZER.html         |    4 +
 .../sgx_libc/constant.PTHREAD_DONE_INIT.html       |    4 +
 .../constant.PTHREAD_MUTEX_INITIALIZER.html        |    4 +
 .../sgx_libc/constant.PTHREAD_NEEDS_INIT.html      |    4 +
 .../sgx_libc/constant.PTHREAD_ONCE_INIT.html       |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.R_OK.html       |    4 +
 .../sgx-sdk/sgx_libc/constant.SA_NOCLDSTOP.html    |    4 +
 .../sgx-sdk/sgx_libc/constant.SA_NOCLDWAIT.html    |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.SA_NODEFER.html |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.SA_ONSTACK.html |    4 +
 .../sgx-sdk/sgx_libc/constant.SA_RESETHAND.html    |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.SA_RESTART.html |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.SA_SIGINFO.html |    4 +
 .../sgx-sdk/sgx_libc/constant.SCM_TIMESTAMP.html   |    4 +
 .../sgx_libc/constant.SCM_TIMESTAMPING.html        |    4 +
 .../sgx-sdk/sgx_libc/constant.SCM_TIMESTAMPNS.html |    4 +
 .../sgx-sdk/sgx_libc/constant.SCM_WIFI_STATUS.html |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.SEEK_CUR.html   |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.SEEK_END.html   |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.SEEK_SET.html   |    4 +
 .../sgx-sdk/sgx_libc/constant.SFD_CLOEXEC.html     |    4 +
 .../sgx-sdk/sgx_libc/constant.SFD_NONBLOCK.html    |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.SHUT_RD.html    |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.SHUT_RDWR.html  |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.SHUT_WR.html    |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.SIGABRT.html    |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.SIGALRM.html    |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.SIGBUS.html     |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.SIGCHLD.html    |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.SIGCONT.html    |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.SIGFPE.html     |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.SIGHUP.html     |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.SIGILL.html     |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.SIGINT.html     |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.SIGIO.html      |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.SIGKILL.html    |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.SIGPIPE.html    |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.SIGPOLL.html    |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.SIGPROF.html    |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.SIGPWR.html     |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.SIGQUIT.html    |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.SIGRTMAX.html   |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.SIGRTMIN.html   |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.SIGSEGV.html    |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.SIGSTKFLT.html  |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.SIGSTOP.html    |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.SIGSYS.html     |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.SIGTERM.html    |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.SIGTRAP.html    |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.SIGTSTP.html    |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.SIGTTIN.html    |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.SIGTTOU.html    |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.SIGURG.html     |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.SIGUSR1.html    |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.SIGUSR2.html    |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.SIGVTALRM.html  |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.SIGWINCH.html   |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.SIGXCPU.html    |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.SIGXFSZ.html    |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.SIG_BLOCK.html  |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.SIG_DFL.html    |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.SIG_ERR.html    |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.SIG_IGN.html    |    4 +
 .../sgx-sdk/sgx_libc/constant.SIG_SETMASK.html     |    4 +
 .../sgx-sdk/sgx_libc/constant.SIG_UNBLOCK.html     |    4 +
 .../sgx-sdk/sgx_libc/constant.SOCK_CLOEXEC.html    |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.SOCK_DCCP.html  |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.SOCK_DGRAM.html |    4 +
 .../sgx-sdk/sgx_libc/constant.SOCK_NONBLOCK.html   |    4 +
 .../sgx-sdk/sgx_libc/constant.SOCK_PACKET.html     |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.SOCK_RAW.html   |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.SOCK_RDM.html   |    4 +
 .../sgx-sdk/sgx_libc/constant.SOCK_SEQPACKET.html  |    4 +
 .../sgx-sdk/sgx_libc/constant.SOCK_STREAM.html     |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.SOL_AAL.html    |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.SOL_ATM.html    |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.SOL_DCCP.html   |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.SOL_DECNET.html |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.SOL_ICMPV6.html |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.SOL_IP.html     |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.SOL_IPV6.html   |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.SOL_IRDA.html   |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.SOL_LLC.html    |    4 +
 .../sgx-sdk/sgx_libc/constant.SOL_NETBEUI.html     |    4 +
 .../sgx-sdk/sgx_libc/constant.SOL_NETLINK.html     |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.SOL_PACKET.html |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.SOL_RAW.html    |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.SOL_SOCKET.html |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.SOL_TCP.html    |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.SOL_TIPC.html   |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.SOL_UDP.html    |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.SOL_X25.html    |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.SOMAXCONN.html  |    4 +
 .../sgx-sdk/sgx_libc/constant.SO_ACCEPTCONN.html   |    4 +
 .../sgx-sdk/sgx_libc/constant.SO_ATTACH_BPF.html   |    4 +
 .../sgx_libc/constant.SO_ATTACH_FILTER.html        |    4 +
 .../sgx-sdk/sgx_libc/constant.SO_BINDTODEVICE.html |    4 +
 .../sgx_libc/constant.SO_BPF_EXTENSIONS.html       |    4 +
 .../sgx-sdk/sgx_libc/constant.SO_BROADCAST.html    |    4 +
 .../sgx-sdk/sgx_libc/constant.SO_BSDCOMPAT.html    |    4 +
 .../sgx-sdk/sgx_libc/constant.SO_BUSY_POLL.html    |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.SO_DEBUG.html   |    4 +
 .../sgx-sdk/sgx_libc/constant.SO_DETACH_BPF.html   |    4 +
 .../sgx_libc/constant.SO_DETACH_FILTER.html        |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.SO_DOMAIN.html  |    4 +
 .../sgx-sdk/sgx_libc/constant.SO_DONTROUTE.html    |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.SO_ERROR.html   |    4 +
 .../sgx-sdk/sgx_libc/constant.SO_GET_FILTER.html   |    4 +
 .../sgx-sdk/sgx_libc/constant.SO_INCOMING_CPU.html |    4 +
 .../sgx-sdk/sgx_libc/constant.SO_KEEPALIVE.html    |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.SO_LINGER.html  |    4 +
 .../sgx-sdk/sgx_libc/constant.SO_LOCK_FILTER.html  |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.SO_MARK.html    |    4 +
 .../sgx_libc/constant.SO_MAX_PACING_RATE.html      |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.SO_NOFCS.html   |    4 +
 .../sgx-sdk/sgx_libc/constant.SO_NO_CHECK.html     |    4 +
 .../sgx-sdk/sgx_libc/constant.SO_OOBINLINE.html    |    4 +
 .../sgx-sdk/sgx_libc/constant.SO_PASSCRED.html     |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.SO_PASSSEC.html |    4 +
 .../sgx-sdk/sgx_libc/constant.SO_PEEK_OFF.html     |    4 +
 .../sgx-sdk/sgx_libc/constant.SO_PEERCRED.html     |    4 +
 .../sgx-sdk/sgx_libc/constant.SO_PEERNAME.html     |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.SO_PEERSEC.html |    4 +
 .../sgx-sdk/sgx_libc/constant.SO_PRIORITY.html     |    4 +
 .../sgx-sdk/sgx_libc/constant.SO_PROTOCOL.html     |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.SO_RCVBUF.html  |    4 +
 .../sgx-sdk/sgx_libc/constant.SO_RCVBUFFORCE.html  |    4 +
 .../sgx-sdk/sgx_libc/constant.SO_RCVLOWAT.html     |    4 +
 .../sgx-sdk/sgx_libc/constant.SO_RCVTIMEO.html     |    4 +
 .../sgx-sdk/sgx_libc/constant.SO_REUSEADDR.html    |    4 +
 .../sgx-sdk/sgx_libc/constant.SO_REUSEPORT.html    |    4 +
 .../sgx-sdk/sgx_libc/constant.SO_RXQ_OVFL.html     |    4 +
 .../constant.SO_SECURITY_AUTHENTICATION.html       |    4 +
 .../constant.SO_SECURITY_ENCRYPTION_NETWORK.html   |    4 +
 .../constant.SO_SECURITY_ENCRYPTION_TRANSPORT.html |    4 +
 .../sgx_libc/constant.SO_SELECT_ERR_QUEUE.html     |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.SO_SNDBUF.html  |    4 +
 .../sgx-sdk/sgx_libc/constant.SO_SNDBUFFORCE.html  |    4 +
 .../sgx-sdk/sgx_libc/constant.SO_SNDLOWAT.html     |    4 +
 .../sgx-sdk/sgx_libc/constant.SO_SNDTIMEO.html     |    4 +
 .../sgx-sdk/sgx_libc/constant.SO_TIMESTAMP.html    |    4 +
 .../sgx-sdk/sgx_libc/constant.SO_TIMESTAMPING.html |    4 +
 .../sgx-sdk/sgx_libc/constant.SO_TIMESTAMPNS.html  |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.SO_TYPE.html    |    4 +
 .../sgx-sdk/sgx_libc/constant.SO_WIFI_STATUS.html  |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.SS_DISABLE.html |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.SS_ONSTACK.html |    4 +
 .../sgx-sdk/sgx_libc/constant.STDERR_FILENO.html   |    4 +
 .../sgx-sdk/sgx_libc/constant.STDIN_FILENO.html    |    4 +
 .../sgx-sdk/sgx_libc/constant.STDOUT_FILENO.html   |    4 +
 .../constant.SYNC_FILE_RANGE_WAIT_AFTER.html       |    4 +
 .../constant.SYNC_FILE_RANGE_WAIT_BEFORE.html      |    4 +
 .../sgx_libc/constant.SYNC_FILE_RANGE_WRITE.html   |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.S_IFBLK.html    |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.S_IFCHR.html    |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.S_IFDIR.html    |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.S_IFIFO.html    |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.S_IFLNK.html    |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.S_IFMT.html     |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.S_IFREG.html    |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.S_IFSOCK.html   |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.S_IRGRP.html    |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.S_IROTH.html    |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.S_IRUSR.html    |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.S_IRWXG.html    |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.S_IRWXO.html    |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.S_IRWXU.html    |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.S_IWGRP.html    |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.S_IWOTH.html    |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.S_IWUSR.html    |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.S_IXGRP.html    |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.S_IXOTH.html    |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.S_IXUSR.html    |    4 +
 .../sgx-sdk/sgx_libc/constant.TCP_CONGESTION.html  |    4 +
 .../sgx_libc/constant.TCP_COOKIE_TRANSACTIONS.html |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.TCP_CORK.html   |    4 +
 .../sgx_libc/constant.TCP_DEFER_ACCEPT.html        |    4 +
 .../sgx-sdk/sgx_libc/constant.TCP_FASTOPEN.html    |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.TCP_INFO.html   |    4 +
 .../sgx-sdk/sgx_libc/constant.TCP_KEEPCNT.html     |    4 +
 .../sgx-sdk/sgx_libc/constant.TCP_KEEPIDLE.html    |    4 +
 .../sgx-sdk/sgx_libc/constant.TCP_KEEPINTVL.html   |    4 +
 .../sgx-sdk/sgx_libc/constant.TCP_LINGER2.html     |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.TCP_MAXSEG.html |    4 +
 .../sgx-sdk/sgx_libc/constant.TCP_NODELAY.html     |    4 +
 .../sgx-sdk/sgx_libc/constant.TCP_QUEUE_SEQ.html   |    4 +
 .../sgx-sdk/sgx_libc/constant.TCP_QUICKACK.html    |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.TCP_REPAIR.html |    4 +
 .../sgx_libc/constant.TCP_REPAIR_OPTIONS.html      |    4 +
 .../sgx_libc/constant.TCP_REPAIR_QUEUE.html        |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.TCP_SYNCNT.html |    4 +
 .../sgx-sdk/sgx_libc/constant.TCP_THIN_DUPACK.html |    4 +
 .../constant.TCP_THIN_LINEAR_TIMEOUTS.html         |    4 +
 .../sgx-sdk/sgx_libc/constant.TCP_TIMESTAMP.html   |    4 +
 .../sgx_libc/constant.TCP_USER_TIMEOUT.html        |    4 +
 .../sgx_libc/constant.TCP_WINDOW_CLAMP.html        |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.W_OK.html       |    4 +
 api-docs/sgx-sdk/sgx_libc/constant.X_OK.html       |    4 +
 api-docs/sgx-sdk/sgx_libc/constant._IOFBF.html     |    4 +
 api-docs/sgx-sdk/sgx_libc/constant._IOLBF.html     |    4 +
 api-docs/sgx-sdk/sgx_libc/constant._IONBF.html     |    4 +
 .../sgx-sdk/sgx_libc/constant._PC_2_SYMLINKS.html  |    4 +
 .../sgx_libc/constant._PC_ALLOC_SIZE_MIN.html      |    4 +
 .../sgx-sdk/sgx_libc/constant._PC_ASYNC_IO.html    |    4 +
 .../sgx_libc/constant._PC_CHOWN_RESTRICTED.html    |    4 +
 .../sgx_libc/constant._PC_FILESIZEBITS.html        |    4 +
 .../sgx-sdk/sgx_libc/constant._PC_LINK_MAX.html    |    4 +
 .../sgx-sdk/sgx_libc/constant._PC_MAX_CANON.html   |    4 +
 .../sgx-sdk/sgx_libc/constant._PC_MAX_INPUT.html   |    4 +
 .../sgx-sdk/sgx_libc/constant._PC_NAME_MAX.html    |    4 +
 .../sgx-sdk/sgx_libc/constant._PC_NO_TRUNC.html    |    4 +
 .../sgx-sdk/sgx_libc/constant._PC_PATH_MAX.html    |    4 +
 .../sgx-sdk/sgx_libc/constant._PC_PIPE_BUF.html    |    4 +
 .../sgx-sdk/sgx_libc/constant._PC_PRIO_IO.html     |    4 +
 .../sgx_libc/constant._PC_REC_INCR_XFER_SIZE.html  |    4 +
 .../sgx_libc/constant._PC_REC_MAX_XFER_SIZE.html   |    4 +
 .../sgx_libc/constant._PC_REC_MIN_XFER_SIZE.html   |    4 +
 .../sgx_libc/constant._PC_REC_XFER_ALIGN.html      |    4 +
 .../sgx-sdk/sgx_libc/constant._PC_SOCK_MAXBUF.html |    4 +
 .../sgx-sdk/sgx_libc/constant._PC_SYMLINK_MAX.html |    4 +
 .../sgx-sdk/sgx_libc/constant._PC_SYNC_IO.html     |    4 +
 .../sgx-sdk/sgx_libc/constant._PC_VDISABLE.html    |    4 +
 .../sgx-sdk/sgx_libc/constant._SC_2_CHAR_TERM.html |    4 +
 .../sgx-sdk/sgx_libc/constant._SC_2_C_BIND.html    |    4 +
 .../sgx-sdk/sgx_libc/constant._SC_2_C_DEV.html     |    4 +
 .../sgx-sdk/sgx_libc/constant._SC_2_FORT_DEV.html  |    4 +
 .../sgx-sdk/sgx_libc/constant._SC_2_FORT_RUN.html  |    4 +
 .../sgx-sdk/sgx_libc/constant._SC_2_LOCALEDEF.html |    4 +
 api-docs/sgx-sdk/sgx_libc/constant._SC_2_PBS.html  |    4 +
 .../sgx_libc/constant._SC_2_PBS_ACCOUNTING.html    |    4 +
 .../sgx_libc/constant._SC_2_PBS_CHECKPOINT.html    |    4 +
 .../sgx_libc/constant._SC_2_PBS_LOCATE.html        |    4 +
 .../sgx_libc/constant._SC_2_PBS_MESSAGE.html       |    4 +
 .../sgx-sdk/sgx_libc/constant._SC_2_PBS_TRACK.html |    4 +
 .../sgx-sdk/sgx_libc/constant._SC_2_SW_DEV.html    |    4 +
 api-docs/sgx-sdk/sgx_libc/constant._SC_2_UPE.html  |    4 +
 .../sgx-sdk/sgx_libc/constant._SC_2_VERSION.html   |    4 +
 .../sgx_libc/constant._SC_ADVISORY_INFO.html       |    4 +
 .../sgx_libc/constant._SC_AIO_LISTIO_MAX.html      |    4 +
 .../sgx-sdk/sgx_libc/constant._SC_AIO_MAX.html     |    4 +
 .../sgx_libc/constant._SC_AIO_PRIO_DELTA_MAX.html  |    4 +
 .../sgx-sdk/sgx_libc/constant._SC_ARG_MAX.html     |    4 +
 .../sgx_libc/constant._SC_ASYNCHRONOUS_IO.html     |    4 +
 .../sgx-sdk/sgx_libc/constant._SC_ATEXIT_MAX.html  |    4 +
 .../sgx_libc/constant._SC_AVPHYS_PAGES.html        |    4 +
 .../sgx-sdk/sgx_libc/constant._SC_BARRIERS.html    |    4 +
 .../sgx-sdk/sgx_libc/constant._SC_BC_BASE_MAX.html |    4 +
 .../sgx-sdk/sgx_libc/constant._SC_BC_DIM_MAX.html  |    4 +
 .../sgx_libc/constant._SC_BC_SCALE_MAX.html        |    4 +
 .../sgx_libc/constant._SC_BC_STRING_MAX.html       |    4 +
 .../sgx-sdk/sgx_libc/constant._SC_CHILD_MAX.html   |    4 +
 .../sgx-sdk/sgx_libc/constant._SC_CLK_TCK.html     |    4 +
 .../sgx_libc/constant._SC_CLOCK_SELECTION.html     |    4 +
 .../sgx_libc/constant._SC_COLL_WEIGHTS_MAX.html    |    4 +
 .../sgx-sdk/sgx_libc/constant._SC_CPUTIME.html     |    4 +
 .../sgx_libc/constant._SC_DELAYTIMER_MAX.html      |    4 +
 .../sgx_libc/constant._SC_EXPR_NEST_MAX.html       |    4 +
 api-docs/sgx-sdk/sgx_libc/constant._SC_FSYNC.html  |    4 +
 .../sgx_libc/constant._SC_GETGR_R_SIZE_MAX.html    |    4 +
 .../sgx_libc/constant._SC_GETPW_R_SIZE_MAX.html    |    4 +
 .../sgx_libc/constant._SC_HOST_NAME_MAX.html       |    4 +
 .../sgx-sdk/sgx_libc/constant._SC_IOV_MAX.html     |    4 +
 api-docs/sgx-sdk/sgx_libc/constant._SC_IPV6.html   |    4 +
 .../sgx-sdk/sgx_libc/constant._SC_JOB_CONTROL.html |    4 +
 .../sgx-sdk/sgx_libc/constant._SC_LINE_MAX.html    |    4 +
 .../sgx_libc/constant._SC_LOGIN_NAME_MAX.html      |    4 +
 .../sgx_libc/constant._SC_MAPPED_FILES.html        |    4 +
 .../sgx-sdk/sgx_libc/constant._SC_MEMLOCK.html     |    4 +
 .../sgx_libc/constant._SC_MEMLOCK_RANGE.html       |    4 +
 .../sgx_libc/constant._SC_MEMORY_PROTECTION.html   |    4 +
 .../sgx_libc/constant._SC_MESSAGE_PASSING.html     |    4 +
 .../sgx_libc/constant._SC_MONOTONIC_CLOCK.html     |    4 +
 .../sgx-sdk/sgx_libc/constant._SC_MQ_OPEN_MAX.html |    4 +
 .../sgx-sdk/sgx_libc/constant._SC_MQ_PRIO_MAX.html |    4 +
 .../sgx-sdk/sgx_libc/constant._SC_NGROUPS_MAX.html |    4 +
 .../sgx_libc/constant._SC_NPROCESSORS_CONF.html    |    4 +
 .../sgx_libc/constant._SC_NPROCESSORS_ONLN.html    |    4 +
 api-docs/sgx-sdk/sgx_libc/constant._SC_NZERO.html  |    4 +
 .../sgx-sdk/sgx_libc/constant._SC_OPEN_MAX.html    |    4 +
 .../sgx-sdk/sgx_libc/constant._SC_PAGESIZE.html    |    4 +
 .../sgx-sdk/sgx_libc/constant._SC_PAGE_SIZE.html   |    4 +
 .../sgx-sdk/sgx_libc/constant._SC_PASS_MAX.html    |    4 +
 .../sgx-sdk/sgx_libc/constant._SC_PHYS_PAGES.html  |    4 +
 .../sgx_libc/constant._SC_PRIORITIZED_IO.html      |    4 +
 .../sgx_libc/constant._SC_PRIORITY_SCHEDULING.html |    4 +
 .../sgx-sdk/sgx_libc/constant._SC_RAW_SOCKETS.html |    4 +
 .../sgx_libc/constant._SC_READER_WRITER_LOCKS.html |    4 +
 .../sgx_libc/constant._SC_REALTIME_SIGNALS.html    |    4 +
 api-docs/sgx-sdk/sgx_libc/constant._SC_REGEXP.html |    4 +
 .../sgx-sdk/sgx_libc/constant._SC_RE_DUP_MAX.html  |    4 +
 .../sgx-sdk/sgx_libc/constant._SC_RTSIG_MAX.html   |    4 +
 .../sgx-sdk/sgx_libc/constant._SC_SAVED_IDS.html   |    4 +
 .../sgx-sdk/sgx_libc/constant._SC_SEMAPHORES.html  |    4 +
 .../sgx_libc/constant._SC_SEM_NSEMS_MAX.html       |    4 +
 .../sgx_libc/constant._SC_SEM_VALUE_MAX.html       |    4 +
 .../constant._SC_SHARED_MEMORY_OBJECTS.html        |    4 +
 api-docs/sgx-sdk/sgx_libc/constant._SC_SHELL.html  |    4 +
 .../sgx_libc/constant._SC_SIGQUEUE_MAX.html        |    4 +
 api-docs/sgx-sdk/sgx_libc/constant._SC_SPAWN.html  |    4 +
 .../sgx-sdk/sgx_libc/constant._SC_SPIN_LOCKS.html  |    4 +
 .../sgx_libc/constant._SC_SPORADIC_SERVER.html     |    4 +
 .../sgx-sdk/sgx_libc/constant._SC_SS_REPL_MAX.html |    4 +
 .../sgx-sdk/sgx_libc/constant._SC_STREAMS.html     |    4 +
 .../sgx-sdk/sgx_libc/constant._SC_STREAM_MAX.html  |    4 +
 .../sgx-sdk/sgx_libc/constant._SC_SYMLOOP_MAX.html |    4 +
 .../sgx_libc/constant._SC_SYNCHRONIZED_IO.html     |    4 +
 .../sgx-sdk/sgx_libc/constant._SC_THREADS.html     |    4 +
 .../constant._SC_THREAD_ATTR_STACKADDR.html        |    4 +
 .../constant._SC_THREAD_ATTR_STACKSIZE.html        |    4 +
 .../sgx_libc/constant._SC_THREAD_CPUTIME.html      |    4 +
 .../constant._SC_THREAD_DESTRUCTOR_ITERATIONS.html |    4 +
 .../sgx_libc/constant._SC_THREAD_KEYS_MAX.html     |    4 +
 .../constant._SC_THREAD_PRIORITY_SCHEDULING.html   |    4 +
 .../sgx_libc/constant._SC_THREAD_PRIO_INHERIT.html |    4 +
 .../sgx_libc/constant._SC_THREAD_PRIO_PROTECT.html |    4 +
 .../constant._SC_THREAD_PROCESS_SHARED.html        |    4 +
 .../constant._SC_THREAD_ROBUST_PRIO_INHERIT.html   |    4 +
 .../constant._SC_THREAD_ROBUST_PRIO_PROTECT.html   |    4 +
 .../constant._SC_THREAD_SAFE_FUNCTIONS.html        |    4 +
 .../constant._SC_THREAD_SPORADIC_SERVER.html       |    4 +
 .../sgx_libc/constant._SC_THREAD_STACK_MIN.html    |    4 +
 .../sgx_libc/constant._SC_THREAD_THREADS_MAX.html  |    4 +
 .../sgx-sdk/sgx_libc/constant._SC_TIMEOUTS.html    |    4 +
 api-docs/sgx-sdk/sgx_libc/constant._SC_TIMERS.html |    4 +
 .../sgx-sdk/sgx_libc/constant._SC_TIMER_MAX.html   |    4 +
 api-docs/sgx-sdk/sgx_libc/constant._SC_TRACE.html  |    4 +
 .../sgx_libc/constant._SC_TRACE_EVENT_FILTER.html  |    4 +
 .../constant._SC_TRACE_EVENT_NAME_MAX.html         |    4 +
 .../sgx_libc/constant._SC_TRACE_INHERIT.html       |    4 +
 .../sgx-sdk/sgx_libc/constant._SC_TRACE_LOG.html   |    4 +
 .../sgx_libc/constant._SC_TRACE_NAME_MAX.html      |    4 +
 .../sgx_libc/constant._SC_TRACE_SYS_MAX.html       |    4 +
 .../constant._SC_TRACE_USER_EVENT_MAX.html         |    4 +
 .../sgx_libc/constant._SC_TTY_NAME_MAX.html        |    4 +
 .../constant._SC_TYPED_MEMORY_OBJECTS.html         |    4 +
 .../sgx-sdk/sgx_libc/constant._SC_TZNAME_MAX.html  |    4 +
 .../sgx-sdk/sgx_libc/constant._SC_UIO_MAXIOV.html  |    4 +
 .../sgx_libc/constant._SC_V6_ILP32_OFF32.html      |    4 +
 .../sgx_libc/constant._SC_V6_ILP32_OFFBIG.html     |    4 +
 .../sgx_libc/constant._SC_V6_LP64_OFF64.html       |    4 +
 .../sgx_libc/constant._SC_V6_LPBIG_OFFBIG.html     |    4 +
 .../sgx_libc/constant._SC_V7_ILP32_OFF32.html      |    4 +
 .../sgx_libc/constant._SC_V7_ILP32_OFFBIG.html     |    4 +
 .../sgx_libc/constant._SC_V7_LP64_OFF64.html       |    4 +
 .../sgx_libc/constant._SC_V7_LPBIG_OFFBIG.html     |    4 +
 .../sgx-sdk/sgx_libc/constant._SC_VERSION.html     |    4 +
 .../sgx_libc/constant._SC_XBS5_ILP32_OFF32.html    |    4 +
 .../sgx_libc/constant._SC_XBS5_ILP32_OFFBIG.html   |    4 +
 .../sgx_libc/constant._SC_XBS5_LP64_OFF64.html     |    4 +
 .../sgx_libc/constant._SC_XBS5_LPBIG_OFFBIG.html   |    4 +
 .../sgx-sdk/sgx_libc/constant._SC_XOPEN_CRYPT.html |    4 +
 .../sgx_libc/constant._SC_XOPEN_ENH_I18N.html      |    4 +
 .../sgx_libc/constant._SC_XOPEN_LEGACY.html        |    4 +
 .../sgx_libc/constant._SC_XOPEN_REALTIME.html      |    4 +
 .../constant._SC_XOPEN_REALTIME_THREADS.html       |    4 +
 .../sgx-sdk/sgx_libc/constant._SC_XOPEN_SHM.html   |    4 +
 .../sgx_libc/constant._SC_XOPEN_STREAMS.html       |    4 +
 .../sgx-sdk/sgx_libc/constant._SC_XOPEN_UNIX.html  |    4 +
 .../sgx_libc/constant._SC_XOPEN_VERSION.html       |    4 +
 .../sgx_libc/constant._SC_XOPEN_XCU_VERSION.html   |    4 +
 .../sgx-sdk/sgx_libc/constant._SC_XOPEN_XPG2.html  |    4 +
 .../sgx-sdk/sgx_libc/constant._SC_XOPEN_XPG3.html  |    4 +
 .../sgx-sdk/sgx_libc/constant._SC_XOPEN_XPG4.html  |    4 +
 api-docs/sgx-sdk/sgx_libc/enum.DIR.html            |   20 +
 api-docs/sgx-sdk/sgx_libc/enum.c_void.html         |   26 +
 api-docs/sgx-sdk/sgx_libc/fn.CPU_CLR.html          |    4 +
 api-docs/sgx-sdk/sgx_libc/fn.CPU_EQUAL.html        |    4 +
 api-docs/sgx-sdk/sgx_libc/fn.CPU_ISSET.html        |    4 +
 api-docs/sgx-sdk/sgx_libc/fn.CPU_SET.html          |    4 +
 api-docs/sgx-sdk/sgx_libc/fn.CPU_ZERO.html         |    4 +
 api-docs/sgx-sdk/sgx_libc/fn.FD_CLR.html           |    4 +
 api-docs/sgx-sdk/sgx_libc/fn.FD_ISSET.html         |    4 +
 api-docs/sgx-sdk/sgx_libc/fn.FD_SET.html           |    4 +
 api-docs/sgx-sdk/sgx_libc/fn.FD_ZERO.html          |    4 +
 api-docs/sgx-sdk/sgx_libc/fn.abort.html            |    4 +
 api-docs/sgx-sdk/sgx_libc/fn.atexit.html           |    4 +
 api-docs/sgx-sdk/sgx_libc/fn.calloc.html           |    4 +
 api-docs/sgx-sdk/sgx_libc/fn.errno.html            |    5 +
 api-docs/sgx-sdk/sgx_libc/fn.error_string.html     |    5 +
 api-docs/sgx-sdk/sgx_libc/fn.free.html             |    4 +
 api-docs/sgx-sdk/sgx_libc/fn.malloc.html           |    4 +
 .../sgx-sdk/sgx_libc/fn.malloc_usable_size.html    |    4 +
 api-docs/sgx-sdk/sgx_libc/fn.memalign.html         |    4 +
 api-docs/sgx-sdk/sgx_libc/fn.memchr.html           |    4 +
 api-docs/sgx-sdk/sgx_libc/fn.memrchr.html          |    4 +
 .../sgx_libc/fn.pthread_cond_broadcast.html        |    4 +
 .../sgx-sdk/sgx_libc/fn.pthread_cond_destroy.html  |    4 +
 .../sgx-sdk/sgx_libc/fn.pthread_cond_init.html     |    4 +
 .../sgx-sdk/sgx_libc/fn.pthread_cond_signal.html   |    4 +
 .../sgx-sdk/sgx_libc/fn.pthread_cond_wait.html     |    4 +
 api-docs/sgx-sdk/sgx_libc/fn.pthread_create.html   |    4 +
 api-docs/sgx-sdk/sgx_libc/fn.pthread_equal.html    |    4 +
 api-docs/sgx-sdk/sgx_libc/fn.pthread_exit.html     |    4 +
 .../sgx-sdk/sgx_libc/fn.pthread_getspecific.html   |    4 +
 api-docs/sgx-sdk/sgx_libc/fn.pthread_join.html     |    4 +
 .../sgx-sdk/sgx_libc/fn.pthread_key_create.html    |    4 +
 .../sgx-sdk/sgx_libc/fn.pthread_key_delete.html    |    4 +
 .../sgx-sdk/sgx_libc/fn.pthread_mutex_destroy.html |    4 +
 .../sgx-sdk/sgx_libc/fn.pthread_mutex_init.html    |    4 +
 .../sgx-sdk/sgx_libc/fn.pthread_mutex_lock.html    |    4 +
 .../sgx-sdk/sgx_libc/fn.pthread_mutex_trylock.html |    4 +
 .../sgx-sdk/sgx_libc/fn.pthread_mutex_unlock.html  |    4 +
 api-docs/sgx-sdk/sgx_libc/fn.pthread_once.html     |    4 +
 api-docs/sgx-sdk/sgx_libc/fn.pthread_self.html     |    4 +
 .../sgx-sdk/sgx_libc/fn.pthread_setspecific.html   |    4 +
 api-docs/sgx-sdk/sgx_libc/fn.realloc.html          |    4 +
 api-docs/sgx-sdk/sgx_libc/fn.set_errno.html        |    5 +
 api-docs/sgx-sdk/sgx_libc/fn.sigaddset.html        |    4 +
 api-docs/sgx-sdk/sgx_libc/fn.sigdelset.html        |    4 +
 api-docs/sgx-sdk/sgx_libc/fn.sigemptyset.html      |    4 +
 api-docs/sgx-sdk/sgx_libc/fn.sigfillset.html       |    4 +
 api-docs/sgx-sdk/sgx_libc/fn.sigismember.html      |    4 +
 api-docs/sgx-sdk/sgx_libc/fn.strlen.html           |    4 +
 api-docs/sgx-sdk/sgx_libc/index.html               |   36 +
 .../sgx_libc/linux/x86_64/constant.AF_ALG.html     |   10 +
 .../linux/x86_64/constant.AF_APPLETALK.html        |   10 +
 .../sgx_libc/linux/x86_64/constant.AF_ASH.html     |   10 +
 .../sgx_libc/linux/x86_64/constant.AF_ATMPVC.html  |   10 +
 .../sgx_libc/linux/x86_64/constant.AF_ATMSVC.html  |   10 +
 .../sgx_libc/linux/x86_64/constant.AF_AX25.html    |   10 +
 .../linux/x86_64/constant.AF_BLUETOOTH.html        |   10 +
 .../sgx_libc/linux/x86_64/constant.AF_BRIDGE.html  |   10 +
 .../sgx_libc/linux/x86_64/constant.AF_CAIF.html    |   10 +
 .../sgx_libc/linux/x86_64/constant.AF_CAN.html     |   10 +
 .../sgx_libc/linux/x86_64/constant.AF_DECnet.html  |   10 +
 .../sgx_libc/linux/x86_64/constant.AF_ECONET.html  |   10 +
 .../linux/x86_64/constant.AF_IEEE802154.html       |   10 +
 .../sgx_libc/linux/x86_64/constant.AF_INET.html    |   10 +
 .../sgx_libc/linux/x86_64/constant.AF_INET6.html   |   10 +
 .../sgx_libc/linux/x86_64/constant.AF_IPX.html     |   10 +
 .../sgx_libc/linux/x86_64/constant.AF_IRDA.html    |   10 +
 .../sgx_libc/linux/x86_64/constant.AF_ISDN.html    |   10 +
 .../sgx_libc/linux/x86_64/constant.AF_IUCV.html    |   10 +
 .../sgx_libc/linux/x86_64/constant.AF_KEY.html     |   10 +
 .../sgx_libc/linux/x86_64/constant.AF_LLC.html     |   10 +
 .../sgx_libc/linux/x86_64/constant.AF_LOCAL.html   |   10 +
 .../sgx_libc/linux/x86_64/constant.AF_NETBEUI.html |   10 +
 .../sgx_libc/linux/x86_64/constant.AF_NETLINK.html |   10 +
 .../sgx_libc/linux/x86_64/constant.AF_NETROM.html  |   10 +
 .../sgx_libc/linux/x86_64/constant.AF_PACKET.html  |   10 +
 .../sgx_libc/linux/x86_64/constant.AF_PHONET.html  |   10 +
 .../sgx_libc/linux/x86_64/constant.AF_PPPOX.html   |   10 +
 .../sgx_libc/linux/x86_64/constant.AF_RDS.html     |   10 +
 .../sgx_libc/linux/x86_64/constant.AF_ROSE.html    |   10 +
 .../sgx_libc/linux/x86_64/constant.AF_ROUTE.html   |   10 +
 .../sgx_libc/linux/x86_64/constant.AF_RXRPC.html   |   10 +
 .../linux/x86_64/constant.AF_SECURITY.html         |   10 +
 .../sgx_libc/linux/x86_64/constant.AF_SNA.html     |   10 +
 .../sgx_libc/linux/x86_64/constant.AF_TIPC.html    |   10 +
 .../sgx_libc/linux/x86_64/constant.AF_UNIX.html    |   10 +
 .../sgx_libc/linux/x86_64/constant.AF_UNSPEC.html  |   10 +
 .../sgx_libc/linux/x86_64/constant.AF_WANPIPE.html |   10 +
 .../sgx_libc/linux/x86_64/constant.AF_X25.html     |   10 +
 .../linux/x86_64/constant.AIO_ALLDONE.html         |   10 +
 .../linux/x86_64/constant.AIO_CANCELED.html        |   10 +
 .../linux/x86_64/constant.AIO_NOTCANCELED.html     |   10 +
 .../linux/x86_64/constant.AI_ADDRCONFIG.html       |   10 +
 .../sgx_libc/linux/x86_64/constant.AI_ALL.html     |   10 +
 .../linux/x86_64/constant.AI_CANONNAME.html        |   10 +
 .../linux/x86_64/constant.AI_NUMERICHOST.html      |   10 +
 .../linux/x86_64/constant.AI_NUMERICSERV.html      |   10 +
 .../sgx_libc/linux/x86_64/constant.AI_PASSIVE.html |   10 +
 .../linux/x86_64/constant.AI_V4MAPPED.html         |   10 +
 .../sgx_libc/linux/x86_64/constant.AT_FDCWD.html   |   10 +
 .../linux/x86_64/constant.AT_REMOVEDIR.html        |   10 +
 .../linux/x86_64/constant.AT_SYMLINK_FOLLOW.html   |   10 +
 .../linux/x86_64/constant.AT_SYMLINK_NOFOLLOW.html |   10 +
 .../linux/x86_64/constant.CLOCK_BOOTTIME.html      |   10 +
 .../x86_64/constant.CLOCK_BOOTTIME_ALARM.html      |   10 +
 .../linux/x86_64/constant.CLOCK_MONOTONIC.html     |   10 +
 .../x86_64/constant.CLOCK_MONOTONIC_COARSE.html    |   10 +
 .../linux/x86_64/constant.CLOCK_MONOTONIC_RAW.html |   10 +
 .../x86_64/constant.CLOCK_PROCESS_CPUTIME_ID.html  |   10 +
 .../linux/x86_64/constant.CLOCK_REALTIME.html      |   10 +
 .../x86_64/constant.CLOCK_REALTIME_ALARM.html      |   10 +
 .../x86_64/constant.CLOCK_REALTIME_COARSE.html     |   10 +
 .../x86_64/constant.CLOCK_THREAD_CPUTIME_ID.html   |   10 +
 .../linux/x86_64/constant.CPU_SETSIZE.html         |   10 +
 .../x86_64/constant.DCCP_SERVICE_LIST_MAX_LEN.html |   10 +
 .../constant.DCCP_SOCKOPT_AVAILABLE_CCIDS.html     |   10 +
 .../linux/x86_64/constant.DCCP_SOCKOPT_CCID.html   |   10 +
 .../x86_64/constant.DCCP_SOCKOPT_CCID_RX_INFO.html |   10 +
 .../x86_64/constant.DCCP_SOCKOPT_CCID_TX_INFO.html |   10 +
 .../x86_64/constant.DCCP_SOCKOPT_CHANGE_L.html     |   10 +
 .../x86_64/constant.DCCP_SOCKOPT_CHANGE_R.html     |   10 +
 .../x86_64/constant.DCCP_SOCKOPT_GET_CUR_MPS.html  |   10 +
 .../x86_64/constant.DCCP_SOCKOPT_PACKET_SIZE.html  |   10 +
 .../x86_64/constant.DCCP_SOCKOPT_QPOLICY_ID.html   |   10 +
 .../constant.DCCP_SOCKOPT_QPOLICY_TXQLEN.html      |   10 +
 .../x86_64/constant.DCCP_SOCKOPT_RECV_CSCOV.html   |   10 +
 .../x86_64/constant.DCCP_SOCKOPT_RX_CCID.html      |   10 +
 .../x86_64/constant.DCCP_SOCKOPT_SEND_CSCOV.html   |   10 +
 .../constant.DCCP_SOCKOPT_SERVER_TIMEWAIT.html     |   10 +
 .../x86_64/constant.DCCP_SOCKOPT_SERVICE.html      |   10 +
 .../x86_64/constant.DCCP_SOCKOPT_TX_CCID.html      |   10 +
 .../sgx_libc/linux/x86_64/constant.DT_BLK.html     |   10 +
 .../sgx_libc/linux/x86_64/constant.DT_CHR.html     |   10 +
 .../sgx_libc/linux/x86_64/constant.DT_DIR.html     |   10 +
 .../sgx_libc/linux/x86_64/constant.DT_FIFO.html    |   10 +
 .../sgx_libc/linux/x86_64/constant.DT_LNK.html     |   10 +
 .../sgx_libc/linux/x86_64/constant.DT_REG.html     |   10 +
 .../sgx_libc/linux/x86_64/constant.DT_SOCK.html    |   10 +
 .../sgx_libc/linux/x86_64/constant.DT_UNKNOWN.html |   10 +
 .../sgx_libc/linux/x86_64/constant.E2BIG.html      |   10 +
 .../sgx_libc/linux/x86_64/constant.EACCES.html     |   10 +
 .../sgx_libc/linux/x86_64/constant.EADDRINUSE.html |   10 +
 .../linux/x86_64/constant.EADDRNOTAVAIL.html       |   10 +
 .../sgx_libc/linux/x86_64/constant.EADV.html       |   10 +
 .../linux/x86_64/constant.EAFNOSUPPORT.html        |   10 +
 .../sgx_libc/linux/x86_64/constant.EAGAIN.html     |   10 +
 .../sgx_libc/linux/x86_64/constant.EAI_AGAIN.html  |   10 +
 .../linux/x86_64/constant.EAI_BADFLAGS.html        |   10 +
 .../sgx_libc/linux/x86_64/constant.EAI_FAIL.html   |   10 +
 .../sgx_libc/linux/x86_64/constant.EAI_FAMILY.html |   10 +
 .../sgx_libc/linux/x86_64/constant.EAI_MEMORY.html |   10 +
 .../sgx_libc/linux/x86_64/constant.EAI_NONAME.html |   10 +
 .../linux/x86_64/constant.EAI_OVERFLOW.html        |   10 +
 .../linux/x86_64/constant.EAI_SERVICE.html         |   10 +
 .../linux/x86_64/constant.EAI_SOCKTYPE.html        |   10 +
 .../sgx_libc/linux/x86_64/constant.EAI_SYSTEM.html |   10 +
 .../sgx_libc/linux/x86_64/constant.EALREADY.html   |   10 +
 .../sgx_libc/linux/x86_64/constant.EBADE.html      |   10 +
 .../sgx_libc/linux/x86_64/constant.EBADF.html      |   10 +
 .../sgx_libc/linux/x86_64/constant.EBADFD.html     |   10 +
 .../sgx_libc/linux/x86_64/constant.EBADMSG.html    |   10 +
 .../sgx_libc/linux/x86_64/constant.EBADR.html      |   10 +
 .../sgx_libc/linux/x86_64/constant.EBADRQC.html    |   10 +
 .../sgx_libc/linux/x86_64/constant.EBADSLT.html    |   10 +
 .../sgx_libc/linux/x86_64/constant.EBFONT.html     |   10 +
 .../sgx_libc/linux/x86_64/constant.EBUSY.html      |   10 +
 .../sgx_libc/linux/x86_64/constant.ECANCELED.html  |   10 +
 .../sgx_libc/linux/x86_64/constant.ECHILD.html     |   10 +
 .../sgx_libc/linux/x86_64/constant.ECHRNG.html     |   10 +
 .../sgx_libc/linux/x86_64/constant.ECOMM.html      |   10 +
 .../linux/x86_64/constant.ECONNABORTED.html        |   10 +
 .../linux/x86_64/constant.ECONNREFUSED.html        |   10 +
 .../sgx_libc/linux/x86_64/constant.ECONNRESET.html |   10 +
 .../sgx_libc/linux/x86_64/constant.EDEADLK.html    |   10 +
 .../sgx_libc/linux/x86_64/constant.EDEADLOCK.html  |   10 +
 .../linux/x86_64/constant.EDESTADDRREQ.html        |   10 +
 .../sgx_libc/linux/x86_64/constant.EDOM.html       |   10 +
 .../sgx_libc/linux/x86_64/constant.EDOTDOT.html    |   10 +
 .../sgx_libc/linux/x86_64/constant.EDQUOT.html     |   10 +
 .../sgx_libc/linux/x86_64/constant.EEXIST.html     |   10 +
 .../sgx_libc/linux/x86_64/constant.EFAULT.html     |   10 +
 .../sgx_libc/linux/x86_64/constant.EFBIG.html      |   10 +
 .../linux/x86_64/constant.EFD_CLOEXEC.html         |   10 +
 .../linux/x86_64/constant.EFD_NONBLOCK.html        |   10 +
 .../sgx_libc/linux/x86_64/constant.EHOSTDOWN.html  |   10 +
 .../linux/x86_64/constant.EHOSTUNREACH.html        |   10 +
 .../sgx_libc/linux/x86_64/constant.EHWPOISON.html  |   10 +
 .../sgx_libc/linux/x86_64/constant.EIDRM.html      |   10 +
 .../sgx_libc/linux/x86_64/constant.EILSEQ.html     |   10 +
 .../linux/x86_64/constant.EINPROGRESS.html         |   10 +
 .../sgx_libc/linux/x86_64/constant.EINTR.html      |   10 +
 .../sgx_libc/linux/x86_64/constant.EINVAL.html     |   10 +
 .../sgx_libc/linux/x86_64/constant.EIO.html        |   10 +
 .../sgx_libc/linux/x86_64/constant.EISCONN.html    |   10 +
 .../sgx_libc/linux/x86_64/constant.EISDIR.html     |   10 +
 .../sgx_libc/linux/x86_64/constant.EISNAM.html     |   10 +
 .../linux/x86_64/constant.EKEYEXPIRED.html         |   10 +
 .../linux/x86_64/constant.EKEYREJECTED.html        |   10 +
 .../linux/x86_64/constant.EKEYREVOKED.html         |   10 +
 .../sgx_libc/linux/x86_64/constant.EL2HLT.html     |   10 +
 .../sgx_libc/linux/x86_64/constant.EL2NSYNC.html   |   10 +
 .../sgx_libc/linux/x86_64/constant.EL3HLT.html     |   10 +
 .../sgx_libc/linux/x86_64/constant.EL3RST.html     |   10 +
 .../sgx_libc/linux/x86_64/constant.ELIBACC.html    |   10 +
 .../sgx_libc/linux/x86_64/constant.ELIBBAD.html    |   10 +
 .../sgx_libc/linux/x86_64/constant.ELIBEXEC.html   |   10 +
 .../sgx_libc/linux/x86_64/constant.ELIBMAX.html    |   10 +
 .../sgx_libc/linux/x86_64/constant.ELIBSCN.html    |   10 +
 .../sgx_libc/linux/x86_64/constant.ELNRNG.html     |   10 +
 .../sgx_libc/linux/x86_64/constant.ELOOP.html      |   10 +
 .../linux/x86_64/constant.EMEDIUMTYPE.html         |   10 +
 .../sgx_libc/linux/x86_64/constant.EMFILE.html     |   10 +
 .../sgx_libc/linux/x86_64/constant.EMLINK.html     |   10 +
 .../sgx_libc/linux/x86_64/constant.EMSGSIZE.html   |   10 +
 .../sgx_libc/linux/x86_64/constant.EMULTIHOP.html  |   10 +
 .../linux/x86_64/constant.ENAMETOOLONG.html        |   10 +
 .../sgx_libc/linux/x86_64/constant.ENAVAIL.html    |   10 +
 .../sgx_libc/linux/x86_64/constant.ENETDOWN.html   |   10 +
 .../sgx_libc/linux/x86_64/constant.ENETRESET.html  |   10 +
 .../linux/x86_64/constant.ENETUNREACH.html         |   10 +
 .../sgx_libc/linux/x86_64/constant.ENFILE.html     |   10 +
 .../sgx_libc/linux/x86_64/constant.ENOANO.html     |   10 +
 .../sgx_libc/linux/x86_64/constant.ENOBUFS.html    |   10 +
 .../sgx_libc/linux/x86_64/constant.ENOCSI.html     |   10 +
 .../sgx_libc/linux/x86_64/constant.ENODATA.html    |   10 +
 .../sgx_libc/linux/x86_64/constant.ENODEV.html     |   10 +
 .../sgx_libc/linux/x86_64/constant.ENOENT.html     |   10 +
 .../sgx_libc/linux/x86_64/constant.ENOEXEC.html    |   10 +
 .../sgx_libc/linux/x86_64/constant.ENOKEY.html     |   10 +
 .../sgx_libc/linux/x86_64/constant.ENOLCK.html     |   10 +
 .../sgx_libc/linux/x86_64/constant.ENOLINK.html    |   10 +
 .../sgx_libc/linux/x86_64/constant.ENOMEDIUM.html  |   10 +
 .../sgx_libc/linux/x86_64/constant.ENOMEM.html     |   10 +
 .../sgx_libc/linux/x86_64/constant.ENOMSG.html     |   10 +
 .../sgx_libc/linux/x86_64/constant.ENONET.html     |   10 +
 .../sgx_libc/linux/x86_64/constant.ENOPKG.html     |   10 +
 .../linux/x86_64/constant.ENOPROTOOPT.html         |   10 +
 .../sgx_libc/linux/x86_64/constant.ENOSPC.html     |   10 +
 .../sgx_libc/linux/x86_64/constant.ENOSR.html      |   10 +
 .../sgx_libc/linux/x86_64/constant.ENOSTR.html     |   10 +
 .../sgx_libc/linux/x86_64/constant.ENOSYS.html     |   10 +
 .../sgx_libc/linux/x86_64/constant.ENOTBLK.html    |   10 +
 .../sgx_libc/linux/x86_64/constant.ENOTCONN.html   |   10 +
 .../sgx_libc/linux/x86_64/constant.ENOTDIR.html    |   10 +
 .../sgx_libc/linux/x86_64/constant.ENOTEMPTY.html  |   10 +
 .../sgx_libc/linux/x86_64/constant.ENOTNAM.html    |   10 +
 .../linux/x86_64/constant.ENOTRECOVERABLE.html     |   10 +
 .../sgx_libc/linux/x86_64/constant.ENOTSOCK.html   |   10 +
 .../sgx_libc/linux/x86_64/constant.ENOTSUP.html    |   10 +
 .../sgx_libc/linux/x86_64/constant.ENOTTY.html     |   10 +
 .../sgx_libc/linux/x86_64/constant.ENOTUNIQ.html   |   10 +
 .../sgx_libc/linux/x86_64/constant.ENXIO.html      |   10 +
 .../sgx_libc/linux/x86_64/constant.EOF.html        |   10 +
 .../sgx_libc/linux/x86_64/constant.EOPNOTSUPP.html |   10 +
 .../sgx_libc/linux/x86_64/constant.EOVERFLOW.html  |   10 +
 .../sgx_libc/linux/x86_64/constant.EOWNERDEAD.html |   10 +
 .../sgx_libc/linux/x86_64/constant.EPERM.html      |   10 +
 .../linux/x86_64/constant.EPFNOSUPPORT.html        |   10 +
 .../sgx_libc/linux/x86_64/constant.EPIPE.html      |   10 +
 .../sgx_libc/linux/x86_64/constant.EPOLLERR.html   |   10 +
 .../sgx_libc/linux/x86_64/constant.EPOLLET.html    |   10 +
 .../linux/x86_64/constant.EPOLLEXCLUSIVE.html      |   10 +
 .../sgx_libc/linux/x86_64/constant.EPOLLHUP.html   |   10 +
 .../sgx_libc/linux/x86_64/constant.EPOLLIN.html    |   10 +
 .../sgx_libc/linux/x86_64/constant.EPOLLMSG.html   |   10 +
 .../linux/x86_64/constant.EPOLLONESHOT.html        |   10 +
 .../sgx_libc/linux/x86_64/constant.EPOLLOUT.html   |   10 +
 .../sgx_libc/linux/x86_64/constant.EPOLLPRI.html   |   10 +
 .../linux/x86_64/constant.EPOLLRDBAND.html         |   10 +
 .../sgx_libc/linux/x86_64/constant.EPOLLRDHUP.html |   10 +
 .../linux/x86_64/constant.EPOLLRDNORM.html         |   10 +
 .../linux/x86_64/constant.EPOLLWAKEUP.html         |   10 +
 .../linux/x86_64/constant.EPOLLWRBAND.html         |   10 +
 .../linux/x86_64/constant.EPOLLWRNORM.html         |   10 +
 .../linux/x86_64/constant.EPOLL_CLOEXEC.html       |   10 +
 .../linux/x86_64/constant.EPOLL_CTL_ADD.html       |   10 +
 .../linux/x86_64/constant.EPOLL_CTL_DEL.html       |   10 +
 .../linux/x86_64/constant.EPOLL_CTL_MOD.html       |   10 +
 .../sgx_libc/linux/x86_64/constant.EPROTO.html     |   10 +
 .../linux/x86_64/constant.EPROTONOSUPPORT.html     |   10 +
 .../sgx_libc/linux/x86_64/constant.EPROTOTYPE.html |   10 +
 .../sgx_libc/linux/x86_64/constant.ERANGE.html     |   10 +
 .../sgx_libc/linux/x86_64/constant.EREMCHG.html    |   10 +
 .../sgx_libc/linux/x86_64/constant.EREMOTE.html    |   10 +
 .../sgx_libc/linux/x86_64/constant.EREMOTEIO.html  |   10 +
 .../sgx_libc/linux/x86_64/constant.ERESTART.html   |   10 +
 .../sgx_libc/linux/x86_64/constant.ERFKILL.html    |   10 +
 .../sgx_libc/linux/x86_64/constant.EROFS.html      |   10 +
 .../sgx_libc/linux/x86_64/constant.ESGX.html       |   10 +
 .../sgx_libc/linux/x86_64/constant.ESHUTDOWN.html  |   10 +
 .../linux/x86_64/constant.ESOCKTNOSUPPORT.html     |   10 +
 .../sgx_libc/linux/x86_64/constant.ESPIPE.html     |   10 +
 .../sgx_libc/linux/x86_64/constant.ESRCH.html      |   10 +
 .../sgx_libc/linux/x86_64/constant.ESRMNT.html     |   10 +
 .../sgx_libc/linux/x86_64/constant.ESTALE.html     |   10 +
 .../sgx_libc/linux/x86_64/constant.ESTRPIPE.html   |   10 +
 .../sgx_libc/linux/x86_64/constant.ETIME.html      |   10 +
 .../sgx_libc/linux/x86_64/constant.ETIMEDOUT.html  |   10 +
 .../linux/x86_64/constant.ETOOMANYREFS.html        |   10 +
 .../sgx_libc/linux/x86_64/constant.ETXTBSY.html    |   10 +
 .../sgx_libc/linux/x86_64/constant.EUCLEAN.html    |   10 +
 .../sgx_libc/linux/x86_64/constant.EUNATCH.html    |   10 +
 .../sgx_libc/linux/x86_64/constant.EUSERS.html     |   10 +
 .../linux/x86_64/constant.EWOULDBLOCK.html         |   10 +
 .../sgx_libc/linux/x86_64/constant.EXDEV.html      |   10 +
 .../sgx_libc/linux/x86_64/constant.EXFULL.html     |   10 +
 .../linux/x86_64/constant.EXIT_FAILURE.html        |   10 +
 .../linux/x86_64/constant.EXIT_SUCCESS.html        |   10 +
 .../sgx_libc/linux/x86_64/constant.FD_CLOEXEC.html |   10 +
 .../sgx_libc/linux/x86_64/constant.FD_SETSIZE.html |   10 +
 .../linux/x86_64/constant.FILENAME_MAX.html        |   10 +
 .../sgx_libc/linux/x86_64/constant.FIOCLEX.html    |   10 +
 .../sgx_libc/linux/x86_64/constant.FIONBIO.html    |   10 +
 .../sgx_libc/linux/x86_64/constant.FOPEN_MAX.html  |   10 +
 .../linux/x86_64/constant.F_ADD_SEALS.html         |   10 +
 .../sgx_libc/linux/x86_64/constant.F_CANCELLK.html |   10 +
 .../sgx_libc/linux/x86_64/constant.F_DUPFD.html    |   10 +
 .../linux/x86_64/constant.F_DUPFD_CLOEXEC.html     |   10 +
 .../sgx_libc/linux/x86_64/constant.F_GETFD.html    |   10 +
 .../sgx_libc/linux/x86_64/constant.F_GETFL.html    |   10 +
 .../sgx_libc/linux/x86_64/constant.F_GETLEASE.html |   10 +
 .../sgx_libc/linux/x86_64/constant.F_GETLK.html    |   10 +
 .../sgx_libc/linux/x86_64/constant.F_GETOWN.html   |   10 +
 .../linux/x86_64/constant.F_GETPIPE_SZ.html        |   10 +
 .../linux/x86_64/constant.F_GET_SEALS.html         |   10 +
 .../sgx_libc/linux/x86_64/constant.F_NOTIFY.html   |   10 +
 .../sgx_libc/linux/x86_64/constant.F_OK.html       |   10 +
 .../linux/x86_64/constant.F_SEAL_GROW.html         |   10 +
 .../linux/x86_64/constant.F_SEAL_SEAL.html         |   10 +
 .../linux/x86_64/constant.F_SEAL_SHRINK.html       |   10 +
 .../sgx_libc/linux/x86_64/constant.F_SETFD.html    |   10 +
 .../sgx_libc/linux/x86_64/constant.F_SETFL.html    |   10 +
 .../sgx_libc/linux/x86_64/constant.F_SETLEASE.html |   10 +
 .../sgx_libc/linux/x86_64/constant.F_SETLK.html    |   10 +
 .../sgx_libc/linux/x86_64/constant.F_SETLKW.html   |   10 +
 .../sgx_libc/linux/x86_64/constant.F_SETOWN.html   |   10 +
 .../linux/x86_64/constant.F_SETPIPE_SZ.html        |   10 +
 .../linux/x86_64/constant.IFF_ALLMULTI.html        |   10 +
 .../linux/x86_64/constant.IFF_AUTOMEDIA.html       |   10 +
 .../linux/x86_64/constant.IFF_BROADCAST.html       |   10 +
 .../sgx_libc/linux/x86_64/constant.IFF_DEBUG.html  |   10 +
 .../linux/x86_64/constant.IFF_DYNAMIC.html         |   10 +
 .../linux/x86_64/constant.IFF_LOOPBACK.html        |   10 +
 .../sgx_libc/linux/x86_64/constant.IFF_MASTER.html |   10 +
 .../linux/x86_64/constant.IFF_MULTICAST.html       |   10 +
 .../sgx_libc/linux/x86_64/constant.IFF_NOARP.html  |   10 +
 .../linux/x86_64/constant.IFF_NOTRAILERS.html      |   10 +
 .../linux/x86_64/constant.IFF_POINTOPOINT.html     |   10 +
 .../linux/x86_64/constant.IFF_PORTSEL.html         |   10 +
 .../linux/x86_64/constant.IFF_PROMISC.html         |   10 +
 .../linux/x86_64/constant.IFF_RUNNING.html         |   10 +
 .../sgx_libc/linux/x86_64/constant.IFF_SLAVE.html  |   10 +
 .../sgx_libc/linux/x86_64/constant.IFF_UP.html     |   10 +
 .../sgx_libc/linux/x86_64/constant.IPPROTO_AH.html |   10 +
 .../linux/x86_64/constant.IPPROTO_BEETPH.html      |   10 +
 .../linux/x86_64/constant.IPPROTO_COMP.html        |   10 +
 .../linux/x86_64/constant.IPPROTO_DCCP.html        |   10 +
 .../linux/x86_64/constant.IPPROTO_DSTOPTS.html     |   10 +
 .../linux/x86_64/constant.IPPROTO_EGP.html         |   10 +
 .../linux/x86_64/constant.IPPROTO_ENCAP.html       |   10 +
 .../linux/x86_64/constant.IPPROTO_ESP.html         |   10 +
 .../linux/x86_64/constant.IPPROTO_FRAGMENT.html    |   10 +
 .../linux/x86_64/constant.IPPROTO_GRE.html         |   10 +
 .../linux/x86_64/constant.IPPROTO_HOPOPTS.html     |   10 +
 .../linux/x86_64/constant.IPPROTO_ICMP.html        |   10 +
 .../linux/x86_64/constant.IPPROTO_ICMPV6.html      |   10 +
 .../linux/x86_64/constant.IPPROTO_IDP.html         |   10 +
 .../linux/x86_64/constant.IPPROTO_IGMP.html        |   10 +
 .../sgx_libc/linux/x86_64/constant.IPPROTO_IP.html |   10 +
 .../linux/x86_64/constant.IPPROTO_IPIP.html        |   10 +
 .../linux/x86_64/constant.IPPROTO_IPV6.html        |   10 +
 .../linux/x86_64/constant.IPPROTO_MAX.html         |   10 +
 .../sgx_libc/linux/x86_64/constant.IPPROTO_MH.html |   10 +
 .../linux/x86_64/constant.IPPROTO_MPLS.html        |   10 +
 .../linux/x86_64/constant.IPPROTO_MTP.html         |   10 +
 .../linux/x86_64/constant.IPPROTO_NONE.html        |   10 +
 .../linux/x86_64/constant.IPPROTO_PIM.html         |   10 +
 .../linux/x86_64/constant.IPPROTO_PUP.html         |   10 +
 .../linux/x86_64/constant.IPPROTO_RAW.html         |   10 +
 .../linux/x86_64/constant.IPPROTO_ROUTING.html     |   10 +
 .../linux/x86_64/constant.IPPROTO_RSVP.html        |   10 +
 .../linux/x86_64/constant.IPPROTO_SCTP.html        |   10 +
 .../linux/x86_64/constant.IPPROTO_TCP.html         |   10 +
 .../sgx_libc/linux/x86_64/constant.IPPROTO_TP.html |   10 +
 .../linux/x86_64/constant.IPPROTO_UDP.html         |   10 +
 .../linux/x86_64/constant.IPPROTO_UDPLITE.html     |   10 +
 .../linux/x86_64/constant.IPV6_ADD_MEMBERSHIP.html |   10 +
 .../x86_64/constant.IPV6_DROP_MEMBERSHIP.html      |   10 +
 .../linux/x86_64/constant.IPV6_MULTICAST_HOPS.html |   10 +
 .../linux/x86_64/constant.IPV6_MULTICAST_IF.html   |   10 +
 .../linux/x86_64/constant.IPV6_MULTICAST_LOOP.html |   10 +
 .../linux/x86_64/constant.IPV6_PKTINFO.html        |   10 +
 .../linux/x86_64/constant.IPV6_RECVPKTINFO.html    |   10 +
 .../linux/x86_64/constant.IPV6_UNICAST_HOPS.html   |   10 +
 .../linux/x86_64/constant.IPV6_V6ONLY.html         |   10 +
 .../linux/x86_64/constant.IP_ADD_MEMBERSHIP.html   |   10 +
 .../linux/x86_64/constant.IP_DROP_MEMBERSHIP.html  |   10 +
 .../sgx_libc/linux/x86_64/constant.IP_HDRINCL.html |   10 +
 .../linux/x86_64/constant.IP_MULTICAST_IF.html     |   10 +
 .../linux/x86_64/constant.IP_MULTICAST_LOOP.html   |   10 +
 .../linux/x86_64/constant.IP_MULTICAST_TTL.html    |   10 +
 .../sgx_libc/linux/x86_64/constant.IP_PKTINFO.html |   10 +
 .../linux/x86_64/constant.IP_TRANSPARENT.html      |   10 +
 .../sgx_libc/linux/x86_64/constant.IP_TTL.html     |   10 +
 .../sgx_libc/linux/x86_64/constant.LIO_NOP.html    |   10 +
 .../sgx_libc/linux/x86_64/constant.LIO_NOWAIT.html |   10 +
 .../sgx_libc/linux/x86_64/constant.LIO_READ.html   |   10 +
 .../sgx_libc/linux/x86_64/constant.LIO_WAIT.html   |   10 +
 .../sgx_libc/linux/x86_64/constant.LIO_WRITE.html  |   10 +
 .../sgx_libc/linux/x86_64/constant.LOCK_EX.html    |   10 +
 .../sgx_libc/linux/x86_64/constant.LOCK_NB.html    |   10 +
 .../sgx_libc/linux/x86_64/constant.LOCK_SH.html    |   10 +
 .../sgx_libc/linux/x86_64/constant.LOCK_UN.html    |   10 +
 .../sgx_libc/linux/x86_64/constant.L_tmpnam.html   |   10 +
 .../sgx_libc/linux/x86_64/constant.MAP_ANON.html   |   10 +
 .../linux/x86_64/constant.MAP_ANONYMOUS.html       |   10 +
 .../linux/x86_64/constant.MAP_DENYWRITE.html       |   10 +
 .../linux/x86_64/constant.MAP_EXECUTABLE.html      |   10 +
 .../sgx_libc/linux/x86_64/constant.MAP_FAILED.html |   10 +
 .../sgx_libc/linux/x86_64/constant.MAP_FILE.html   |   10 +
 .../sgx_libc/linux/x86_64/constant.MAP_FIXED.html  |   10 +
 .../linux/x86_64/constant.MAP_NONBLOCK.html        |   10 +
 .../linux/x86_64/constant.MAP_POPULATE.html        |   10 +
 .../linux/x86_64/constant.MAP_PRIVATE.html         |   10 +
 .../sgx_libc/linux/x86_64/constant.MAP_SHARED.html |   10 +
 .../sgx_libc/linux/x86_64/constant.MAP_STACK.html  |   10 +
 .../linux/x86_64/constant.MSG_CMSG_CLOEXEC.html    |   10 +
 .../linux/x86_64/constant.MSG_CONFIRM.html         |   10 +
 .../sgx_libc/linux/x86_64/constant.MSG_CTRUNC.html |   10 +
 .../linux/x86_64/constant.MSG_DONTROUTE.html       |   10 +
 .../linux/x86_64/constant.MSG_DONTWAIT.html        |   10 +
 .../sgx_libc/linux/x86_64/constant.MSG_EOR.html    |   10 +
 .../linux/x86_64/constant.MSG_ERRQUEUE.html        |   10 +
 .../linux/x86_64/constant.MSG_FASTOPEN.html        |   10 +
 .../sgx_libc/linux/x86_64/constant.MSG_FIN.html    |   10 +
 .../sgx_libc/linux/x86_64/constant.MSG_MORE.html   |   10 +
 .../linux/x86_64/constant.MSG_NOSIGNAL.html        |   10 +
 .../sgx_libc/linux/x86_64/constant.MSG_OOB.html    |   10 +
 .../sgx_libc/linux/x86_64/constant.MSG_PEEK.html   |   10 +
 .../sgx_libc/linux/x86_64/constant.MSG_RST.html    |   10 +
 .../sgx_libc/linux/x86_64/constant.MSG_SYN.html    |   10 +
 .../sgx_libc/linux/x86_64/constant.MSG_TRUNC.html  |   10 +
 .../linux/x86_64/constant.MSG_WAITALL.html         |   10 +
 .../linux/x86_64/constant.MSG_WAITFORONE.html      |   10 +
 .../sgx_libc/linux/x86_64/constant.MS_ASYNC.html   |   10 +
 .../linux/x86_64/constant.MS_INVALIDATE.html       |   10 +
 .../sgx_libc/linux/x86_64/constant.MS_SYNC.html    |   10 +
 .../sgx_libc/linux/x86_64/constant.NCCS.html       |   10 +
 .../sgx_libc/linux/x86_64/constant.NI_DGRAM.html   |   10 +
 .../linux/x86_64/constant.NI_NAMEREQD.html         |   10 +
 .../sgx_libc/linux/x86_64/constant.NI_NOFQDN.html  |   10 +
 .../linux/x86_64/constant.NI_NUMERICHOST.html      |   10 +
 .../linux/x86_64/constant.NI_NUMERICSERV.html      |   10 +
 .../sgx_libc/linux/x86_64/constant.NSIG.html       |   10 +
 .../sgx_libc/linux/x86_64/constant.O_ACCMODE.html  |   10 +
 .../sgx_libc/linux/x86_64/constant.O_APPEND.html   |   10 +
 .../sgx_libc/linux/x86_64/constant.O_ASYNC.html    |   10 +
 .../sgx_libc/linux/x86_64/constant.O_CLOEXEC.html  |   10 +
 .../sgx_libc/linux/x86_64/constant.O_CREAT.html    |   10 +
 .../sgx_libc/linux/x86_64/constant.O_DIRECT.html   |   10 +
 .../linux/x86_64/constant.O_DIRECTORY.html         |   10 +
 .../sgx_libc/linux/x86_64/constant.O_DSYNC.html    |   10 +
 .../sgx_libc/linux/x86_64/constant.O_EXCL.html     |   10 +
 .../sgx_libc/linux/x86_64/constant.O_FSYNC.html    |   10 +
 .../sgx_libc/linux/x86_64/constant.O_NDELAY.html   |   10 +
 .../sgx_libc/linux/x86_64/constant.O_NOATIME.html  |   10 +
 .../sgx_libc/linux/x86_64/constant.O_NOCTTY.html   |   10 +
 .../sgx_libc/linux/x86_64/constant.O_NOFOLLOW.html |   10 +
 .../sgx_libc/linux/x86_64/constant.O_NONBLOCK.html |   10 +
 .../sgx_libc/linux/x86_64/constant.O_PATH.html     |   10 +
 .../sgx_libc/linux/x86_64/constant.O_RDONLY.html   |   10 +
 .../sgx_libc/linux/x86_64/constant.O_RDWR.html     |   10 +
 .../sgx_libc/linux/x86_64/constant.O_RSYNC.html    |   10 +
 .../sgx_libc/linux/x86_64/constant.O_SYNC.html     |   10 +
 .../sgx_libc/linux/x86_64/constant.O_TRUNC.html    |   10 +
 .../sgx_libc/linux/x86_64/constant.O_WRONLY.html   |   10 +
 .../sgx_libc/linux/x86_64/constant.PATH_MAX.html   |   10 +
 .../sgx_libc/linux/x86_64/constant.PF_ALG.html     |   10 +
 .../linux/x86_64/constant.PF_APPLETALK.html        |   10 +
 .../sgx_libc/linux/x86_64/constant.PF_ASH.html     |   10 +
 .../sgx_libc/linux/x86_64/constant.PF_ATMPVC.html  |   10 +
 .../sgx_libc/linux/x86_64/constant.PF_ATMSVC.html  |   10 +
 .../sgx_libc/linux/x86_64/constant.PF_AX25.html    |   10 +
 .../linux/x86_64/constant.PF_BLUETOOTH.html        |   10 +
 .../sgx_libc/linux/x86_64/constant.PF_BRIDGE.html  |   10 +
 .../sgx_libc/linux/x86_64/constant.PF_CAIF.html    |   10 +
 .../sgx_libc/linux/x86_64/constant.PF_CAN.html     |   10 +
 .../sgx_libc/linux/x86_64/constant.PF_DECnet.html  |   10 +
 .../sgx_libc/linux/x86_64/constant.PF_ECONET.html  |   10 +
 .../linux/x86_64/constant.PF_IEEE802154.html       |   10 +
 .../sgx_libc/linux/x86_64/constant.PF_INET.html    |   10 +
 .../sgx_libc/linux/x86_64/constant.PF_INET6.html   |   10 +
 .../sgx_libc/linux/x86_64/constant.PF_IPX.html     |   10 +
 .../sgx_libc/linux/x86_64/constant.PF_IRDA.html    |   10 +
 .../sgx_libc/linux/x86_64/constant.PF_ISDN.html    |   10 +
 .../sgx_libc/linux/x86_64/constant.PF_IUCV.html    |   10 +
 .../sgx_libc/linux/x86_64/constant.PF_KEY.html     |   10 +
 .../sgx_libc/linux/x86_64/constant.PF_LLC.html     |   10 +
 .../sgx_libc/linux/x86_64/constant.PF_LOCAL.html   |   10 +
 .../sgx_libc/linux/x86_64/constant.PF_NETBEUI.html |   10 +
 .../sgx_libc/linux/x86_64/constant.PF_NETLINK.html |   10 +
 .../sgx_libc/linux/x86_64/constant.PF_NETROM.html  |   10 +
 .../sgx_libc/linux/x86_64/constant.PF_PACKET.html  |   10 +
 .../sgx_libc/linux/x86_64/constant.PF_PHONET.html  |   10 +
 .../sgx_libc/linux/x86_64/constant.PF_PPPOX.html   |   10 +
 .../sgx_libc/linux/x86_64/constant.PF_RDS.html     |   10 +
 .../sgx_libc/linux/x86_64/constant.PF_ROSE.html    |   10 +
 .../sgx_libc/linux/x86_64/constant.PF_ROUTE.html   |   10 +
 .../sgx_libc/linux/x86_64/constant.PF_RXRPC.html   |   10 +
 .../linux/x86_64/constant.PF_SECURITY.html         |   10 +
 .../sgx_libc/linux/x86_64/constant.PF_SNA.html     |   10 +
 .../sgx_libc/linux/x86_64/constant.PF_TIPC.html    |   10 +
 .../sgx_libc/linux/x86_64/constant.PF_UNIX.html    |   10 +
 .../sgx_libc/linux/x86_64/constant.PF_UNSPEC.html  |   10 +
 .../sgx_libc/linux/x86_64/constant.PF_WANPIPE.html |   10 +
 .../sgx_libc/linux/x86_64/constant.PF_X25.html     |   10 +
 .../sgx_libc/linux/x86_64/constant.POLLERR.html    |   10 +
 .../sgx_libc/linux/x86_64/constant.POLLHUP.html    |   10 +
 .../sgx_libc/linux/x86_64/constant.POLLIN.html     |   10 +
 .../sgx_libc/linux/x86_64/constant.POLLNVAL.html   |   10 +
 .../sgx_libc/linux/x86_64/constant.POLLOUT.html    |   10 +
 .../sgx_libc/linux/x86_64/constant.POLLPRI.html    |   10 +
 .../sgx_libc/linux/x86_64/constant.POLLRDBAND.html |   10 +
 .../sgx_libc/linux/x86_64/constant.POLLRDNORM.html |   10 +
 .../sgx_libc/linux/x86_64/constant.PROT_EXEC.html  |   10 +
 .../sgx_libc/linux/x86_64/constant.PROT_NONE.html  |   10 +
 .../sgx_libc/linux/x86_64/constant.PROT_READ.html  |   10 +
 .../sgx_libc/linux/x86_64/constant.PROT_WRITE.html |   10 +
 .../x86_64/constant.PTHREAD_COND_INITIALIZER.html  |   10 +
 .../linux/x86_64/constant.PTHREAD_DONE_INIT.html   |   10 +
 .../x86_64/constant.PTHREAD_MUTEX_INITIALIZER.html |   10 +
 .../linux/x86_64/constant.PTHREAD_NEEDS_INIT.html  |   10 +
 .../linux/x86_64/constant.PTHREAD_ONCE_INIT.html   |   10 +
 .../sgx_libc/linux/x86_64/constant.R_OK.html       |   10 +
 .../linux/x86_64/constant.SA_NOCLDSTOP.html        |   10 +
 .../linux/x86_64/constant.SA_NOCLDWAIT.html        |   10 +
 .../sgx_libc/linux/x86_64/constant.SA_NODEFER.html |   10 +
 .../sgx_libc/linux/x86_64/constant.SA_ONSTACK.html |   10 +
 .../linux/x86_64/constant.SA_RESETHAND.html        |   10 +
 .../sgx_libc/linux/x86_64/constant.SA_RESTART.html |   10 +
 .../sgx_libc/linux/x86_64/constant.SA_SIGINFO.html |   10 +
 .../linux/x86_64/constant.SCM_TIMESTAMP.html       |   10 +
 .../linux/x86_64/constant.SCM_TIMESTAMPING.html    |   10 +
 .../linux/x86_64/constant.SCM_TIMESTAMPNS.html     |   10 +
 .../linux/x86_64/constant.SCM_WIFI_STATUS.html     |   10 +
 .../sgx_libc/linux/x86_64/constant.SEEK_CUR.html   |   10 +
 .../sgx_libc/linux/x86_64/constant.SEEK_END.html   |   10 +
 .../sgx_libc/linux/x86_64/constant.SEEK_SET.html   |   10 +
 .../linux/x86_64/constant.SFD_CLOEXEC.html         |   10 +
 .../linux/x86_64/constant.SFD_NONBLOCK.html        |   10 +
 .../sgx_libc/linux/x86_64/constant.SHUT_RD.html    |   10 +
 .../sgx_libc/linux/x86_64/constant.SHUT_RDWR.html  |   10 +
 .../sgx_libc/linux/x86_64/constant.SHUT_WR.html    |   10 +
 .../sgx_libc/linux/x86_64/constant.SIGABRT.html    |   10 +
 .../sgx_libc/linux/x86_64/constant.SIGALRM.html    |   10 +
 .../sgx_libc/linux/x86_64/constant.SIGBUS.html     |   10 +
 .../sgx_libc/linux/x86_64/constant.SIGCHLD.html    |   10 +
 .../sgx_libc/linux/x86_64/constant.SIGCONT.html    |   10 +
 .../sgx_libc/linux/x86_64/constant.SIGFPE.html     |   10 +
 .../sgx_libc/linux/x86_64/constant.SIGHUP.html     |   10 +
 .../sgx_libc/linux/x86_64/constant.SIGILL.html     |   10 +
 .../sgx_libc/linux/x86_64/constant.SIGINT.html     |   10 +
 .../sgx_libc/linux/x86_64/constant.SIGIO.html      |   10 +
 .../sgx_libc/linux/x86_64/constant.SIGKILL.html    |   10 +
 .../sgx_libc/linux/x86_64/constant.SIGPIPE.html    |   10 +
 .../sgx_libc/linux/x86_64/constant.SIGPOLL.html    |   10 +
 .../sgx_libc/linux/x86_64/constant.SIGPROF.html    |   10 +
 .../sgx_libc/linux/x86_64/constant.SIGPWR.html     |   10 +
 .../sgx_libc/linux/x86_64/constant.SIGQUIT.html    |   10 +
 .../sgx_libc/linux/x86_64/constant.SIGRTMAX.html   |   10 +
 .../sgx_libc/linux/x86_64/constant.SIGRTMIN.html   |   10 +
 .../sgx_libc/linux/x86_64/constant.SIGSEGV.html    |   10 +
 .../sgx_libc/linux/x86_64/constant.SIGSTKFLT.html  |   10 +
 .../sgx_libc/linux/x86_64/constant.SIGSTOP.html    |   10 +
 .../sgx_libc/linux/x86_64/constant.SIGSYS.html     |   10 +
 .../sgx_libc/linux/x86_64/constant.SIGTERM.html    |   10 +
 .../sgx_libc/linux/x86_64/constant.SIGTRAP.html    |   10 +
 .../sgx_libc/linux/x86_64/constant.SIGTSTP.html    |   10 +
 .../sgx_libc/linux/x86_64/constant.SIGTTIN.html    |   10 +
 .../sgx_libc/linux/x86_64/constant.SIGTTOU.html    |   10 +
 .../sgx_libc/linux/x86_64/constant.SIGURG.html     |   10 +
 .../sgx_libc/linux/x86_64/constant.SIGUSR1.html    |   10 +
 .../sgx_libc/linux/x86_64/constant.SIGUSR2.html    |   10 +
 .../sgx_libc/linux/x86_64/constant.SIGVTALRM.html  |   10 +
 .../sgx_libc/linux/x86_64/constant.SIGWINCH.html   |   10 +
 .../sgx_libc/linux/x86_64/constant.SIGXCPU.html    |   10 +
 .../sgx_libc/linux/x86_64/constant.SIGXFSZ.html    |   10 +
 .../sgx_libc/linux/x86_64/constant.SIG_BLOCK.html  |   10 +
 .../sgx_libc/linux/x86_64/constant.SIG_DFL.html    |   10 +
 .../sgx_libc/linux/x86_64/constant.SIG_ERR.html    |   10 +
 .../sgx_libc/linux/x86_64/constant.SIG_IGN.html    |   10 +
 .../linux/x86_64/constant.SIG_SETMASK.html         |   10 +
 .../linux/x86_64/constant.SIG_UNBLOCK.html         |   10 +
 .../linux/x86_64/constant.SOCK_CLOEXEC.html        |   10 +
 .../sgx_libc/linux/x86_64/constant.SOCK_DCCP.html  |   10 +
 .../sgx_libc/linux/x86_64/constant.SOCK_DGRAM.html |   10 +
 .../linux/x86_64/constant.SOCK_NONBLOCK.html       |   10 +
 .../linux/x86_64/constant.SOCK_PACKET.html         |   10 +
 .../sgx_libc/linux/x86_64/constant.SOCK_RAW.html   |   10 +
 .../sgx_libc/linux/x86_64/constant.SOCK_RDM.html   |   10 +
 .../linux/x86_64/constant.SOCK_SEQPACKET.html      |   10 +
 .../linux/x86_64/constant.SOCK_STREAM.html         |   10 +
 .../sgx_libc/linux/x86_64/constant.SOL_AAL.html    |   10 +
 .../sgx_libc/linux/x86_64/constant.SOL_ATM.html    |   10 +
 .../sgx_libc/linux/x86_64/constant.SOL_DCCP.html   |   10 +
 .../sgx_libc/linux/x86_64/constant.SOL_DECNET.html |   10 +
 .../sgx_libc/linux/x86_64/constant.SOL_ICMPV6.html |   10 +
 .../sgx_libc/linux/x86_64/constant.SOL_IP.html     |   10 +
 .../sgx_libc/linux/x86_64/constant.SOL_IPV6.html   |   10 +
 .../sgx_libc/linux/x86_64/constant.SOL_IRDA.html   |   10 +
 .../sgx_libc/linux/x86_64/constant.SOL_LLC.html    |   10 +
 .../linux/x86_64/constant.SOL_NETBEUI.html         |   10 +
 .../linux/x86_64/constant.SOL_NETLINK.html         |   10 +
 .../sgx_libc/linux/x86_64/constant.SOL_PACKET.html |   10 +
 .../sgx_libc/linux/x86_64/constant.SOL_RAW.html    |   10 +
 .../sgx_libc/linux/x86_64/constant.SOL_SOCKET.html |   10 +
 .../sgx_libc/linux/x86_64/constant.SOL_TCP.html    |   10 +
 .../sgx_libc/linux/x86_64/constant.SOL_TIPC.html   |   10 +
 .../sgx_libc/linux/x86_64/constant.SOL_UDP.html    |   10 +
 .../sgx_libc/linux/x86_64/constant.SOL_X25.html    |   10 +
 .../sgx_libc/linux/x86_64/constant.SOMAXCONN.html  |   10 +
 .../linux/x86_64/constant.SO_ACCEPTCONN.html       |   10 +
 .../linux/x86_64/constant.SO_ATTACH_BPF.html       |   10 +
 .../linux/x86_64/constant.SO_ATTACH_FILTER.html    |   10 +
 .../linux/x86_64/constant.SO_BINDTODEVICE.html     |   10 +
 .../linux/x86_64/constant.SO_BPF_EXTENSIONS.html   |   10 +
 .../linux/x86_64/constant.SO_BROADCAST.html        |   10 +
 .../linux/x86_64/constant.SO_BSDCOMPAT.html        |   10 +
 .../linux/x86_64/constant.SO_BUSY_POLL.html        |   10 +
 .../sgx_libc/linux/x86_64/constant.SO_DEBUG.html   |   10 +
 .../linux/x86_64/constant.SO_DETACH_BPF.html       |   10 +
 .../linux/x86_64/constant.SO_DETACH_FILTER.html    |   10 +
 .../sgx_libc/linux/x86_64/constant.SO_DOMAIN.html  |   10 +
 .../linux/x86_64/constant.SO_DONTROUTE.html        |   10 +
 .../sgx_libc/linux/x86_64/constant.SO_ERROR.html   |   10 +
 .../linux/x86_64/constant.SO_GET_FILTER.html       |   10 +
 .../linux/x86_64/constant.SO_INCOMING_CPU.html     |   10 +
 .../linux/x86_64/constant.SO_KEEPALIVE.html        |   10 +
 .../sgx_libc/linux/x86_64/constant.SO_LINGER.html  |   10 +
 .../linux/x86_64/constant.SO_LOCK_FILTER.html      |   10 +
 .../sgx_libc/linux/x86_64/constant.SO_MARK.html    |   10 +
 .../linux/x86_64/constant.SO_MAX_PACING_RATE.html  |   10 +
 .../sgx_libc/linux/x86_64/constant.SO_NOFCS.html   |   10 +
 .../linux/x86_64/constant.SO_NO_CHECK.html         |   10 +
 .../linux/x86_64/constant.SO_OOBINLINE.html        |   10 +
 .../linux/x86_64/constant.SO_PASSCRED.html         |   10 +
 .../sgx_libc/linux/x86_64/constant.SO_PASSSEC.html |   10 +
 .../linux/x86_64/constant.SO_PEEK_OFF.html         |   10 +
 .../linux/x86_64/constant.SO_PEERCRED.html         |   10 +
 .../linux/x86_64/constant.SO_PEERNAME.html         |   10 +
 .../sgx_libc/linux/x86_64/constant.SO_PEERSEC.html |   10 +
 .../linux/x86_64/constant.SO_PRIORITY.html         |   10 +
 .../linux/x86_64/constant.SO_PROTOCOL.html         |   10 +
 .../sgx_libc/linux/x86_64/constant.SO_RCVBUF.html  |   10 +
 .../linux/x86_64/constant.SO_RCVBUFFORCE.html      |   10 +
 .../linux/x86_64/constant.SO_RCVLOWAT.html         |   10 +
 .../linux/x86_64/constant.SO_RCVTIMEO.html         |   10 +
 .../linux/x86_64/constant.SO_REUSEADDR.html        |   10 +
 .../linux/x86_64/constant.SO_REUSEPORT.html        |   10 +
 .../linux/x86_64/constant.SO_RXQ_OVFL.html         |   10 +
 .../constant.SO_SECURITY_AUTHENTICATION.html       |   10 +
 .../constant.SO_SECURITY_ENCRYPTION_NETWORK.html   |   10 +
 .../constant.SO_SECURITY_ENCRYPTION_TRANSPORT.html |   10 +
 .../linux/x86_64/constant.SO_SELECT_ERR_QUEUE.html |   10 +
 .../sgx_libc/linux/x86_64/constant.SO_SNDBUF.html  |   10 +
 .../linux/x86_64/constant.SO_SNDBUFFORCE.html      |   10 +
 .../linux/x86_64/constant.SO_SNDLOWAT.html         |   10 +
 .../linux/x86_64/constant.SO_SNDTIMEO.html         |   10 +
 .../linux/x86_64/constant.SO_TIMESTAMP.html        |   10 +
 .../linux/x86_64/constant.SO_TIMESTAMPING.html     |   10 +
 .../linux/x86_64/constant.SO_TIMESTAMPNS.html      |   10 +
 .../sgx_libc/linux/x86_64/constant.SO_TYPE.html    |   10 +
 .../linux/x86_64/constant.SO_WIFI_STATUS.html      |   10 +
 .../sgx_libc/linux/x86_64/constant.SS_DISABLE.html |   10 +
 .../sgx_libc/linux/x86_64/constant.SS_ONSTACK.html |   10 +
 .../linux/x86_64/constant.STDERR_FILENO.html       |   10 +
 .../linux/x86_64/constant.STDIN_FILENO.html        |   10 +
 .../linux/x86_64/constant.STDOUT_FILENO.html       |   10 +
 .../constant.SYNC_FILE_RANGE_WAIT_AFTER.html       |   10 +
 .../constant.SYNC_FILE_RANGE_WAIT_BEFORE.html      |   10 +
 .../x86_64/constant.SYNC_FILE_RANGE_WRITE.html     |   10 +
 .../sgx_libc/linux/x86_64/constant.S_IFBLK.html    |   10 +
 .../sgx_libc/linux/x86_64/constant.S_IFCHR.html    |   10 +
 .../sgx_libc/linux/x86_64/constant.S_IFDIR.html    |   10 +
 .../sgx_libc/linux/x86_64/constant.S_IFIFO.html    |   10 +
 .../sgx_libc/linux/x86_64/constant.S_IFLNK.html    |   10 +
 .../sgx_libc/linux/x86_64/constant.S_IFMT.html     |   10 +
 .../sgx_libc/linux/x86_64/constant.S_IFREG.html    |   10 +
 .../sgx_libc/linux/x86_64/constant.S_IFSOCK.html   |   10 +
 .../sgx_libc/linux/x86_64/constant.S_IRGRP.html    |   10 +
 .../sgx_libc/linux/x86_64/constant.S_IROTH.html    |   10 +
 .../sgx_libc/linux/x86_64/constant.S_IRUSR.html    |   10 +
 .../sgx_libc/linux/x86_64/constant.S_IRWXG.html    |   10 +
 .../sgx_libc/linux/x86_64/constant.S_IRWXO.html    |   10 +
 .../sgx_libc/linux/x86_64/constant.S_IRWXU.html    |   10 +
 .../sgx_libc/linux/x86_64/constant.S_IWGRP.html    |   10 +
 .../sgx_libc/linux/x86_64/constant.S_IWOTH.html    |   10 +
 .../sgx_libc/linux/x86_64/constant.S_IWUSR.html    |   10 +
 .../sgx_libc/linux/x86_64/constant.S_IXGRP.html    |   10 +
 .../sgx_libc/linux/x86_64/constant.S_IXOTH.html    |   10 +
 .../sgx_libc/linux/x86_64/constant.S_IXUSR.html    |   10 +
 .../linux/x86_64/constant.TCP_CONGESTION.html      |   10 +
 .../x86_64/constant.TCP_COOKIE_TRANSACTIONS.html   |   10 +
 .../sgx_libc/linux/x86_64/constant.TCP_CORK.html   |   10 +
 .../linux/x86_64/constant.TCP_DEFER_ACCEPT.html    |   10 +
 .../linux/x86_64/constant.TCP_FASTOPEN.html        |   10 +
 .../sgx_libc/linux/x86_64/constant.TCP_INFO.html   |   10 +
 .../linux/x86_64/constant.TCP_KEEPCNT.html         |   10 +
 .../linux/x86_64/constant.TCP_KEEPIDLE.html        |   10 +
 .../linux/x86_64/constant.TCP_KEEPINTVL.html       |   10 +
 .../linux/x86_64/constant.TCP_LINGER2.html         |   10 +
 .../sgx_libc/linux/x86_64/constant.TCP_MAXSEG.html |   10 +
 .../linux/x86_64/constant.TCP_NODELAY.html         |   10 +
 .../linux/x86_64/constant.TCP_QUEUE_SEQ.html       |   10 +
 .../linux/x86_64/constant.TCP_QUICKACK.html        |   10 +
 .../sgx_libc/linux/x86_64/constant.TCP_REPAIR.html |   10 +
 .../linux/x86_64/constant.TCP_REPAIR_OPTIONS.html  |   10 +
 .../linux/x86_64/constant.TCP_REPAIR_QUEUE.html    |   10 +
 .../sgx_libc/linux/x86_64/constant.TCP_SYNCNT.html |   10 +
 .../linux/x86_64/constant.TCP_THIN_DUPACK.html     |   10 +
 .../x86_64/constant.TCP_THIN_LINEAR_TIMEOUTS.html  |   10 +
 .../linux/x86_64/constant.TCP_TIMESTAMP.html       |   10 +
 .../linux/x86_64/constant.TCP_USER_TIMEOUT.html    |   10 +
 .../linux/x86_64/constant.TCP_WINDOW_CLAMP.html    |   10 +
 .../sgx_libc/linux/x86_64/constant.W_OK.html       |   10 +
 .../sgx_libc/linux/x86_64/constant.X_OK.html       |   10 +
 .../sgx_libc/linux/x86_64/constant._IOFBF.html     |   10 +
 .../sgx_libc/linux/x86_64/constant._IOLBF.html     |   10 +
 .../sgx_libc/linux/x86_64/constant._IONBF.html     |   10 +
 .../linux/x86_64/constant._PC_2_SYMLINKS.html      |   10 +
 .../linux/x86_64/constant._PC_ALLOC_SIZE_MIN.html  |   10 +
 .../linux/x86_64/constant._PC_ASYNC_IO.html        |   10 +
 .../x86_64/constant._PC_CHOWN_RESTRICTED.html      |   10 +
 .../linux/x86_64/constant._PC_FILESIZEBITS.html    |   10 +
 .../linux/x86_64/constant._PC_LINK_MAX.html        |   10 +
 .../linux/x86_64/constant._PC_MAX_CANON.html       |   10 +
 .../linux/x86_64/constant._PC_MAX_INPUT.html       |   10 +
 .../linux/x86_64/constant._PC_NAME_MAX.html        |   10 +
 .../linux/x86_64/constant._PC_NO_TRUNC.html        |   10 +
 .../linux/x86_64/constant._PC_PATH_MAX.html        |   10 +
 .../linux/x86_64/constant._PC_PIPE_BUF.html        |   10 +
 .../linux/x86_64/constant._PC_PRIO_IO.html         |   10 +
 .../x86_64/constant._PC_REC_INCR_XFER_SIZE.html    |   10 +
 .../x86_64/constant._PC_REC_MAX_XFER_SIZE.html     |   10 +
 .../x86_64/constant._PC_REC_MIN_XFER_SIZE.html     |   10 +
 .../linux/x86_64/constant._PC_REC_XFER_ALIGN.html  |   10 +
 .../linux/x86_64/constant._PC_SOCK_MAXBUF.html     |   10 +
 .../linux/x86_64/constant._PC_SYMLINK_MAX.html     |   10 +
 .../linux/x86_64/constant._PC_SYNC_IO.html         |   10 +
 .../linux/x86_64/constant._PC_VDISABLE.html        |   10 +
 .../linux/x86_64/constant._SC_2_CHAR_TERM.html     |   10 +
 .../linux/x86_64/constant._SC_2_C_BIND.html        |   10 +
 .../linux/x86_64/constant._SC_2_C_DEV.html         |   10 +
 .../linux/x86_64/constant._SC_2_FORT_DEV.html      |   10 +
 .../linux/x86_64/constant._SC_2_FORT_RUN.html      |   10 +
 .../linux/x86_64/constant._SC_2_LOCALEDEF.html     |   10 +
 .../sgx_libc/linux/x86_64/constant._SC_2_PBS.html  |   10 +
 .../x86_64/constant._SC_2_PBS_ACCOUNTING.html      |   10 +
 .../x86_64/constant._SC_2_PBS_CHECKPOINT.html      |   10 +
 .../linux/x86_64/constant._SC_2_PBS_LOCATE.html    |   10 +
 .../linux/x86_64/constant._SC_2_PBS_MESSAGE.html   |   10 +
 .../linux/x86_64/constant._SC_2_PBS_TRACK.html     |   10 +
 .../linux/x86_64/constant._SC_2_SW_DEV.html        |   10 +
 .../sgx_libc/linux/x86_64/constant._SC_2_UPE.html  |   10 +
 .../linux/x86_64/constant._SC_2_VERSION.html       |   10 +
 .../linux/x86_64/constant._SC_ADVISORY_INFO.html   |   10 +
 .../linux/x86_64/constant._SC_AIO_LISTIO_MAX.html  |   10 +
 .../linux/x86_64/constant._SC_AIO_MAX.html         |   10 +
 .../x86_64/constant._SC_AIO_PRIO_DELTA_MAX.html    |   10 +
 .../linux/x86_64/constant._SC_ARG_MAX.html         |   10 +
 .../linux/x86_64/constant._SC_ASYNCHRONOUS_IO.html |   10 +
 .../linux/x86_64/constant._SC_ATEXIT_MAX.html      |   10 +
 .../linux/x86_64/constant._SC_AVPHYS_PAGES.html    |   10 +
 .../linux/x86_64/constant._SC_BARRIERS.html        |   10 +
 .../linux/x86_64/constant._SC_BC_BASE_MAX.html     |   10 +
 .../linux/x86_64/constant._SC_BC_DIM_MAX.html      |   10 +
 .../linux/x86_64/constant._SC_BC_SCALE_MAX.html    |   10 +
 .../linux/x86_64/constant._SC_BC_STRING_MAX.html   |   10 +
 .../linux/x86_64/constant._SC_CHILD_MAX.html       |   10 +
 .../linux/x86_64/constant._SC_CLK_TCK.html         |   10 +
 .../linux/x86_64/constant._SC_CLOCK_SELECTION.html |   10 +
 .../x86_64/constant._SC_COLL_WEIGHTS_MAX.html      |   10 +
 .../linux/x86_64/constant._SC_CPUTIME.html         |   10 +
 .../linux/x86_64/constant._SC_DELAYTIMER_MAX.html  |   10 +
 .../linux/x86_64/constant._SC_EXPR_NEST_MAX.html   |   10 +
 .../sgx_libc/linux/x86_64/constant._SC_FSYNC.html  |   10 +
 .../x86_64/constant._SC_GETGR_R_SIZE_MAX.html      |   10 +
 .../x86_64/constant._SC_GETPW_R_SIZE_MAX.html      |   10 +
 .../linux/x86_64/constant._SC_HOST_NAME_MAX.html   |   10 +
 .../linux/x86_64/constant._SC_IOV_MAX.html         |   10 +
 .../sgx_libc/linux/x86_64/constant._SC_IPV6.html   |   10 +
 .../linux/x86_64/constant._SC_JOB_CONTROL.html     |   10 +
 .../linux/x86_64/constant._SC_LINE_MAX.html        |   10 +
 .../linux/x86_64/constant._SC_LOGIN_NAME_MAX.html  |   10 +
 .../linux/x86_64/constant._SC_MAPPED_FILES.html    |   10 +
 .../linux/x86_64/constant._SC_MEMLOCK.html         |   10 +
 .../linux/x86_64/constant._SC_MEMLOCK_RANGE.html   |   10 +
 .../x86_64/constant._SC_MEMORY_PROTECTION.html     |   10 +
 .../linux/x86_64/constant._SC_MESSAGE_PASSING.html |   10 +
 .../linux/x86_64/constant._SC_MONOTONIC_CLOCK.html |   10 +
 .../linux/x86_64/constant._SC_MQ_OPEN_MAX.html     |   10 +
 .../linux/x86_64/constant._SC_MQ_PRIO_MAX.html     |   10 +
 .../linux/x86_64/constant._SC_NGROUPS_MAX.html     |   10 +
 .../x86_64/constant._SC_NPROCESSORS_CONF.html      |   10 +
 .../x86_64/constant._SC_NPROCESSORS_ONLN.html      |   10 +
 .../sgx_libc/linux/x86_64/constant._SC_NZERO.html  |   10 +
 .../linux/x86_64/constant._SC_OPEN_MAX.html        |   10 +
 .../linux/x86_64/constant._SC_PAGESIZE.html        |   10 +
 .../linux/x86_64/constant._SC_PAGE_SIZE.html       |   10 +
 .../linux/x86_64/constant._SC_PASS_MAX.html        |   10 +
 .../linux/x86_64/constant._SC_PHYS_PAGES.html      |   10 +
 .../linux/x86_64/constant._SC_PRIORITIZED_IO.html  |   10 +
 .../x86_64/constant._SC_PRIORITY_SCHEDULING.html   |   10 +
 .../linux/x86_64/constant._SC_RAW_SOCKETS.html     |   10 +
 .../x86_64/constant._SC_READER_WRITER_LOCKS.html   |   10 +
 .../x86_64/constant._SC_REALTIME_SIGNALS.html      |   10 +
 .../sgx_libc/linux/x86_64/constant._SC_REGEXP.html |   10 +
 .../linux/x86_64/constant._SC_RE_DUP_MAX.html      |   10 +
 .../linux/x86_64/constant._SC_RTSIG_MAX.html       |   10 +
 .../linux/x86_64/constant._SC_SAVED_IDS.html       |   10 +
 .../linux/x86_64/constant._SC_SEMAPHORES.html      |   10 +
 .../linux/x86_64/constant._SC_SEM_NSEMS_MAX.html   |   10 +
 .../linux/x86_64/constant._SC_SEM_VALUE_MAX.html   |   10 +
 .../x86_64/constant._SC_SHARED_MEMORY_OBJECTS.html |   10 +
 .../sgx_libc/linux/x86_64/constant._SC_SHELL.html  |   10 +
 .../linux/x86_64/constant._SC_SIGQUEUE_MAX.html    |   10 +
 .../sgx_libc/linux/x86_64/constant._SC_SPAWN.html  |   10 +
 .../linux/x86_64/constant._SC_SPIN_LOCKS.html      |   10 +
 .../linux/x86_64/constant._SC_SPORADIC_SERVER.html |   10 +
 .../linux/x86_64/constant._SC_SS_REPL_MAX.html     |   10 +
 .../linux/x86_64/constant._SC_STREAMS.html         |   10 +
 .../linux/x86_64/constant._SC_STREAM_MAX.html      |   10 +
 .../linux/x86_64/constant._SC_SYMLOOP_MAX.html     |   10 +
 .../linux/x86_64/constant._SC_SYNCHRONIZED_IO.html |   10 +
 .../linux/x86_64/constant._SC_THREADS.html         |   10 +
 .../x86_64/constant._SC_THREAD_ATTR_STACKADDR.html |   10 +
 .../x86_64/constant._SC_THREAD_ATTR_STACKSIZE.html |   10 +
 .../linux/x86_64/constant._SC_THREAD_CPUTIME.html  |   10 +
 .../constant._SC_THREAD_DESTRUCTOR_ITERATIONS.html |   10 +
 .../linux/x86_64/constant._SC_THREAD_KEYS_MAX.html |   10 +
 .../constant._SC_THREAD_PRIORITY_SCHEDULING.html   |   10 +
 .../x86_64/constant._SC_THREAD_PRIO_INHERIT.html   |   10 +
 .../x86_64/constant._SC_THREAD_PRIO_PROTECT.html   |   10 +
 .../x86_64/constant._SC_THREAD_PROCESS_SHARED.html |   10 +
 .../constant._SC_THREAD_ROBUST_PRIO_INHERIT.html   |   10 +
 .../constant._SC_THREAD_ROBUST_PRIO_PROTECT.html   |   10 +
 .../x86_64/constant._SC_THREAD_SAFE_FUNCTIONS.html |   10 +
 .../constant._SC_THREAD_SPORADIC_SERVER.html       |   10 +
 .../x86_64/constant._SC_THREAD_STACK_MIN.html      |   10 +
 .../x86_64/constant._SC_THREAD_THREADS_MAX.html    |   10 +
 .../linux/x86_64/constant._SC_TIMEOUTS.html        |   10 +
 .../sgx_libc/linux/x86_64/constant._SC_TIMERS.html |   10 +
 .../linux/x86_64/constant._SC_TIMER_MAX.html       |   10 +
 .../sgx_libc/linux/x86_64/constant._SC_TRACE.html  |   10 +
 .../x86_64/constant._SC_TRACE_EVENT_FILTER.html    |   10 +
 .../x86_64/constant._SC_TRACE_EVENT_NAME_MAX.html  |   10 +
 .../linux/x86_64/constant._SC_TRACE_INHERIT.html   |   10 +
 .../linux/x86_64/constant._SC_TRACE_LOG.html       |   10 +
 .../linux/x86_64/constant._SC_TRACE_NAME_MAX.html  |   10 +
 .../linux/x86_64/constant._SC_TRACE_SYS_MAX.html   |   10 +
 .../x86_64/constant._SC_TRACE_USER_EVENT_MAX.html  |   10 +
 .../linux/x86_64/constant._SC_TTY_NAME_MAX.html    |   10 +
 .../x86_64/constant._SC_TYPED_MEMORY_OBJECTS.html  |   10 +
 .../linux/x86_64/constant._SC_TZNAME_MAX.html      |   10 +
 .../linux/x86_64/constant._SC_UIO_MAXIOV.html      |   10 +
 .../linux/x86_64/constant._SC_V6_ILP32_OFF32.html  |   10 +
 .../linux/x86_64/constant._SC_V6_ILP32_OFFBIG.html |   10 +
 .../linux/x86_64/constant._SC_V6_LP64_OFF64.html   |   10 +
 .../linux/x86_64/constant._SC_V6_LPBIG_OFFBIG.html |   10 +
 .../linux/x86_64/constant._SC_V7_ILP32_OFF32.html  |   10 +
 .../linux/x86_64/constant._SC_V7_ILP32_OFFBIG.html |   10 +
 .../linux/x86_64/constant._SC_V7_LP64_OFF64.html   |   10 +
 .../linux/x86_64/constant._SC_V7_LPBIG_OFFBIG.html |   10 +
 .../linux/x86_64/constant._SC_VERSION.html         |   10 +
 .../x86_64/constant._SC_XBS5_ILP32_OFF32.html      |   10 +
 .../x86_64/constant._SC_XBS5_ILP32_OFFBIG.html     |   10 +
 .../linux/x86_64/constant._SC_XBS5_LP64_OFF64.html |   10 +
 .../x86_64/constant._SC_XBS5_LPBIG_OFFBIG.html     |   10 +
 .../linux/x86_64/constant._SC_XOPEN_CRYPT.html     |   10 +
 .../linux/x86_64/constant._SC_XOPEN_ENH_I18N.html  |   10 +
 .../linux/x86_64/constant._SC_XOPEN_LEGACY.html    |   10 +
 .../linux/x86_64/constant._SC_XOPEN_REALTIME.html  |   10 +
 .../constant._SC_XOPEN_REALTIME_THREADS.html       |   10 +
 .../linux/x86_64/constant._SC_XOPEN_SHM.html       |   10 +
 .../linux/x86_64/constant._SC_XOPEN_STREAMS.html   |   10 +
 .../linux/x86_64/constant._SC_XOPEN_UNIX.html      |   10 +
 .../linux/x86_64/constant._SC_XOPEN_VERSION.html   |   10 +
 .../x86_64/constant._SC_XOPEN_XCU_VERSION.html     |   10 +
 .../linux/x86_64/constant._SC_XOPEN_XPG2.html      |   10 +
 .../linux/x86_64/constant._SC_XOPEN_XPG3.html      |   10 +
 .../linux/x86_64/constant._SC_XOPEN_XPG4.html      |   10 +
 .../sgx-sdk/sgx_libc/linux/x86_64/enum.DIR.html    |   10 +
 .../sgx-sdk/sgx_libc/linux/x86_64/enum.c_void.html |   10 +
 .../sgx-sdk/sgx_libc/linux/x86_64/fn.CPU_CLR.html  |   10 +
 .../sgx_libc/linux/x86_64/fn.CPU_EQUAL.html        |   10 +
 .../sgx_libc/linux/x86_64/fn.CPU_ISSET.html        |   10 +
 .../sgx-sdk/sgx_libc/linux/x86_64/fn.CPU_SET.html  |   10 +
 .../sgx-sdk/sgx_libc/linux/x86_64/fn.CPU_ZERO.html |   10 +
 .../sgx-sdk/sgx_libc/linux/x86_64/fn.FD_CLR.html   |   10 +
 .../sgx-sdk/sgx_libc/linux/x86_64/fn.FD_ISSET.html |   10 +
 .../sgx-sdk/sgx_libc/linux/x86_64/fn.FD_SET.html   |   10 +
 .../sgx-sdk/sgx_libc/linux/x86_64/fn.FD_ZERO.html  |   10 +
 .../sgx-sdk/sgx_libc/linux/x86_64/fn.abort.html    |   10 +
 .../sgx-sdk/sgx_libc/linux/x86_64/fn.atexit.html   |   10 +
 .../sgx-sdk/sgx_libc/linux/x86_64/fn.calloc.html   |   10 +
 .../sgx-sdk/sgx_libc/linux/x86_64/fn.errno.html    |   10 +
 .../sgx_libc/linux/x86_64/fn.error_string.html     |   10 +
 .../sgx-sdk/sgx_libc/linux/x86_64/fn.free.html     |   10 +
 .../sgx-sdk/sgx_libc/linux/x86_64/fn.malloc.html   |   10 +
 .../linux/x86_64/fn.malloc_usable_size.html        |   10 +
 .../sgx-sdk/sgx_libc/linux/x86_64/fn.memalign.html |   10 +
 .../sgx-sdk/sgx_libc/linux/x86_64/fn.memchr.html   |   10 +
 .../sgx-sdk/sgx_libc/linux/x86_64/fn.memrchr.html  |   10 +
 .../linux/x86_64/fn.pthread_cond_broadcast.html    |   10 +
 .../linux/x86_64/fn.pthread_cond_destroy.html      |   10 +
 .../linux/x86_64/fn.pthread_cond_init.html         |   10 +
 .../linux/x86_64/fn.pthread_cond_signal.html       |   10 +
 .../linux/x86_64/fn.pthread_cond_wait.html         |   10 +
 .../sgx_libc/linux/x86_64/fn.pthread_create.html   |   10 +
 .../sgx_libc/linux/x86_64/fn.pthread_equal.html    |   10 +
 .../sgx_libc/linux/x86_64/fn.pthread_exit.html     |   10 +
 .../linux/x86_64/fn.pthread_getspecific.html       |   10 +
 .../sgx_libc/linux/x86_64/fn.pthread_join.html     |   10 +
 .../linux/x86_64/fn.pthread_key_create.html        |   10 +
 .../linux/x86_64/fn.pthread_key_delete.html        |   10 +
 .../linux/x86_64/fn.pthread_mutex_destroy.html     |   10 +
 .../linux/x86_64/fn.pthread_mutex_init.html        |   10 +
 .../linux/x86_64/fn.pthread_mutex_lock.html        |   10 +
 .../linux/x86_64/fn.pthread_mutex_trylock.html     |   10 +
 .../linux/x86_64/fn.pthread_mutex_unlock.html      |   10 +
 .../sgx_libc/linux/x86_64/fn.pthread_once.html     |   10 +
 .../sgx_libc/linux/x86_64/fn.pthread_self.html     |   10 +
 .../linux/x86_64/fn.pthread_setspecific.html       |   10 +
 .../sgx-sdk/sgx_libc/linux/x86_64/fn.realloc.html  |   10 +
 .../sgx_libc/linux/x86_64/fn.set_errno.html        |   10 +
 .../sgx_libc/linux/x86_64/fn.sigaddset.html        |   10 +
 .../sgx_libc/linux/x86_64/fn.sigdelset.html        |   10 +
 .../sgx_libc/linux/x86_64/fn.sigemptyset.html      |   10 +
 .../sgx_libc/linux/x86_64/fn.sigfillset.html       |   10 +
 .../sgx_libc/linux/x86_64/fn.sigismember.html      |   10 +
 .../sgx-sdk/sgx_libc/linux/x86_64/fn.strlen.html   |   10 +
 .../sgx_libc/linux/x86_64/ocall/fn.accept.html     |   10 +
 .../sgx_libc/linux/x86_64/ocall/fn.accept4.html    |   10 +
 .../sgx_libc/linux/x86_64/ocall/fn.bind.html       |   10 +
 .../sgx_libc/linux/x86_64/ocall/fn.chdir.html      |   10 +
 .../sgx_libc/linux/x86_64/ocall/fn.chmod.html      |   10 +
 .../linux/x86_64/ocall/fn.clock_gettime.html       |   10 +
 .../sgx_libc/linux/x86_64/ocall/fn.close.html      |   10 +
 .../sgx_libc/linux/x86_64/ocall/fn.closedir.html   |   10 +
 .../sgx_libc/linux/x86_64/ocall/fn.connect.html    |   10 +
 .../sgx_libc/linux/x86_64/ocall/fn.dirfd.html      |   10 +
 .../sgx_libc/linux/x86_64/ocall/fn.environ.html    |   10 +
 .../linux/x86_64/ocall/fn.epoll_create1.html       |   10 +
 .../sgx_libc/linux/x86_64/ocall/fn.epoll_ctl.html  |   10 +
 .../sgx_libc/linux/x86_64/ocall/fn.epoll_wait.html |   10 +
 .../sgx_libc/linux/x86_64/ocall/fn.fchmod.html     |   10 +
 .../sgx_libc/linux/x86_64/ocall/fn.fcntl_arg0.html |   10 +
 .../sgx_libc/linux/x86_64/ocall/fn.fcntl_arg1.html |   10 +
 .../sgx_libc/linux/x86_64/ocall/fn.fdatasync.html  |   10 +
 .../sgx_libc/linux/x86_64/ocall/fn.free.html       |   10 +
 .../linux/x86_64/ocall/fn.freeaddrinfo.html        |   10 +
 .../sgx_libc/linux/x86_64/ocall/fn.fstat.html      |   10 +
 .../sgx_libc/linux/x86_64/ocall/fn.fstat64.html    |   10 +
 .../sgx_libc/linux/x86_64/ocall/fn.fstatat64.html  |   10 +
 .../sgx_libc/linux/x86_64/ocall/fn.fsync.html      |   10 +
 .../sgx_libc/linux/x86_64/ocall/fn.ftruncate.html  |   10 +
 .../linux/x86_64/ocall/fn.ftruncate64.html         |   10 +
 .../linux/x86_64/ocall/fn.gai_strerror.html        |   10 +
 .../linux/x86_64/ocall/fn.getaddrinfo.html         |   10 +
 .../sgx_libc/linux/x86_64/ocall/fn.getcwd.html     |   10 +
 .../sgx_libc/linux/x86_64/ocall/fn.getenv.html     |   10 +
 .../linux/x86_64/ocall/fn.getpeername.html         |   10 +
 .../sgx_libc/linux/x86_64/ocall/fn.getpid.html     |   10 +
 .../sgx_libc/linux/x86_64/ocall/fn.getpwuid_r.html |   10 +
 .../linux/x86_64/ocall/fn.getsockname.html         |   10 +
 .../sgx_libc/linux/x86_64/ocall/fn.getsockopt.html |   10 +
 .../sgx_libc/linux/x86_64/ocall/fn.getuid.html     |   10 +
 .../sgx_libc/linux/x86_64/ocall/fn.ioctl_arg0.html |   10 +
 .../sgx_libc/linux/x86_64/ocall/fn.ioctl_arg1.html |   10 +
 .../sgx_libc/linux/x86_64/ocall/fn.link.html       |   10 +
 .../sgx_libc/linux/x86_64/ocall/fn.listen.html     |   10 +
 .../sgx_libc/linux/x86_64/ocall/fn.lseek.html      |   10 +
 .../sgx_libc/linux/x86_64/ocall/fn.lseek64.html    |   10 +
 .../sgx_libc/linux/x86_64/ocall/fn.lstat.html      |   10 +
 .../sgx_libc/linux/x86_64/ocall/fn.lstat64.html    |   10 +
 .../sgx_libc/linux/x86_64/ocall/fn.malloc.html     |   10 +
 .../sgx_libc/linux/x86_64/ocall/fn.mkdir.html      |   10 +
 .../sgx_libc/linux/x86_64/ocall/fn.mmap.html       |   10 +
 .../sgx_libc/linux/x86_64/ocall/fn.mprotect.html   |   10 +
 .../sgx_libc/linux/x86_64/ocall/fn.msync.html      |   10 +
 .../sgx_libc/linux/x86_64/ocall/fn.munmap.html     |   10 +
 .../sgx_libc/linux/x86_64/ocall/fn.nanosleep.html  |   10 +
 .../sgx_libc/linux/x86_64/ocall/fn.open.html       |   10 +
 .../sgx_libc/linux/x86_64/ocall/fn.open64.html     |   10 +
 .../sgx_libc/linux/x86_64/ocall/fn.opendir.html    |   10 +
 .../sgx_libc/linux/x86_64/ocall/fn.pipe.html       |   10 +
 .../sgx_libc/linux/x86_64/ocall/fn.pipe2.html      |   10 +
 .../sgx_libc/linux/x86_64/ocall/fn.poll.html       |   10 +
 .../sgx_libc/linux/x86_64/ocall/fn.prctl.html      |   10 +
 .../sgx_libc/linux/x86_64/ocall/fn.pread64.html    |   10 +
 .../sgx_libc/linux/x86_64/ocall/fn.preadv64.html   |   10 +
 .../linux/x86_64/ocall/fn.pthread_sigmask.html     |   10 +
 .../sgx_libc/linux/x86_64/ocall/fn.pwrite64.html   |   10 +
 .../sgx_libc/linux/x86_64/ocall/fn.pwritev64.html  |   10 +
 .../sgx_libc/linux/x86_64/ocall/fn.raise.html      |   10 +
 .../sgx_libc/linux/x86_64/ocall/fn.read.html       |   10 +
 .../linux/x86_64/ocall/fn.readdir64_r.html         |   10 +
 .../sgx_libc/linux/x86_64/ocall/fn.readlink.html   |   10 +
 .../sgx_libc/linux/x86_64/ocall/fn.readv.html      |   10 +
 .../sgx_libc/linux/x86_64/ocall/fn.realpath.html   |   10 +
 .../sgx_libc/linux/x86_64/ocall/fn.recv.html       |   10 +
 .../sgx_libc/linux/x86_64/ocall/fn.recvfrom.html   |   10 +
 .../sgx_libc/linux/x86_64/ocall/fn.recvmsg.html    |   10 +
 .../sgx_libc/linux/x86_64/ocall/fn.rename.html     |   10 +
 .../sgx_libc/linux/x86_64/ocall/fn.rmdir.html      |   10 +
 .../linux/x86_64/ocall/fn.sched_getaffinity.html   |   10 +
 .../linux/x86_64/ocall/fn.sched_setaffinity.html   |   10 +
 .../linux/x86_64/ocall/fn.sched_yield.html         |   10 +
 .../sgx_libc/linux/x86_64/ocall/fn.send.html       |   10 +
 .../sgx_libc/linux/x86_64/ocall/fn.sendmsg.html    |   10 +
 .../sgx_libc/linux/x86_64/ocall/fn.sendto.html     |   10 +
 .../sgx_libc/linux/x86_64/ocall/fn.setenv.html     |   10 +
 .../sgx_libc/linux/x86_64/ocall/fn.setsockopt.html |   10 +
 .../sgx_libc/linux/x86_64/ocall/fn.shutdown.html   |   10 +
 .../sgx_libc/linux/x86_64/ocall/fn.sigaction.html  |   10 +
 .../linux/x86_64/ocall/fn.sigprocmask.html         |   10 +
 .../sgx_libc/linux/x86_64/ocall/fn.socket.html     |   10 +
 .../sgx_libc/linux/x86_64/ocall/fn.socketpair.html |   10 +
 .../sgx_libc/linux/x86_64/ocall/fn.stat.html       |   10 +
 .../sgx_libc/linux/x86_64/ocall/fn.stat64.html     |   10 +
 .../sgx_libc/linux/x86_64/ocall/fn.symlink.html    |   10 +
 .../sgx_libc/linux/x86_64/ocall/fn.sysconf.html    |   10 +
 .../sgx_libc/linux/x86_64/ocall/fn.truncate.html   |   10 +
 .../sgx_libc/linux/x86_64/ocall/fn.truncate64.html |   10 +
 .../linux/x86_64/ocall/fn.u_accept4_ocall.html     |   10 +
 .../linux/x86_64/ocall/fn.u_accept_ocall.html      |   10 +
 .../linux/x86_64/ocall/fn.u_bind_ocall.html        |   10 +
 .../linux/x86_64/ocall/fn.u_chdir_ocall.html       |   10 +
 .../linux/x86_64/ocall/fn.u_chmod_ocall.html       |   10 +
 .../x86_64/ocall/fn.u_clock_gettime_ocall.html     |   10 +
 .../linux/x86_64/ocall/fn.u_close_ocall.html       |   10 +
 .../linux/x86_64/ocall/fn.u_closedir_ocall.html    |   10 +
 .../linux/x86_64/ocall/fn.u_connect_ocall.html     |   10 +
 .../linux/x86_64/ocall/fn.u_dirfd_ocall.html       |   10 +
 .../linux/x86_64/ocall/fn.u_environ_ocall.html     |   10 +
 .../x86_64/ocall/fn.u_epoll_create1_ocall.html     |   10 +
 .../linux/x86_64/ocall/fn.u_epoll_ctl_ocall.html   |   10 +
 .../linux/x86_64/ocall/fn.u_epoll_wait_ocall.html  |   10 +
 .../linux/x86_64/ocall/fn.u_fchmod_ocall.html      |   10 +
 .../linux/x86_64/ocall/fn.u_fcntl_arg0_ocall.html  |   10 +
 .../linux/x86_64/ocall/fn.u_fcntl_arg1_ocall.html  |   10 +
 .../linux/x86_64/ocall/fn.u_fdatasync_ocall.html   |   10 +
 .../linux/x86_64/ocall/fn.u_free_ocall.html        |   10 +
 .../x86_64/ocall/fn.u_freeaddrinfo_ocall.html      |   10 +
 .../linux/x86_64/ocall/fn.u_fstat64_ocall.html     |   10 +
 .../linux/x86_64/ocall/fn.u_fstat_ocall.html       |   10 +
 .../linux/x86_64/ocall/fn.u_fstatat64_ocall.html   |   10 +
 .../linux/x86_64/ocall/fn.u_fsync_ocall.html       |   10 +
 .../linux/x86_64/ocall/fn.u_ftruncate64_ocall.html |   10 +
 .../linux/x86_64/ocall/fn.u_ftruncate_ocall.html   |   10 +
 .../x86_64/ocall/fn.u_gai_strerror_ocall.html      |   10 +
 .../linux/x86_64/ocall/fn.u_getaddrinfo_ocall.html |   10 +
 .../linux/x86_64/ocall/fn.u_getcwd_ocall.html      |   10 +
 .../linux/x86_64/ocall/fn.u_getenv_ocall.html      |   10 +
 .../linux/x86_64/ocall/fn.u_getpeername_ocall.html |   10 +
 .../linux/x86_64/ocall/fn.u_getpid_ocall.html      |   10 +
 .../linux/x86_64/ocall/fn.u_getpwuid_r_ocall.html  |   10 +
 .../linux/x86_64/ocall/fn.u_getsockname_ocall.html |   10 +
 .../linux/x86_64/ocall/fn.u_getsockopt_ocall.html  |   10 +
 .../linux/x86_64/ocall/fn.u_getuid_ocall.html      |   10 +
 .../linux/x86_64/ocall/fn.u_ioctl_arg0_ocall.html  |   10 +
 .../linux/x86_64/ocall/fn.u_ioctl_arg1_ocall.html  |   10 +
 .../linux/x86_64/ocall/fn.u_link_ocall.html        |   10 +
 .../linux/x86_64/ocall/fn.u_listen_ocall.html      |   10 +
 .../linux/x86_64/ocall/fn.u_lseek64_ocall.html     |   10 +
 .../linux/x86_64/ocall/fn.u_lseek_ocall.html       |   10 +
 .../linux/x86_64/ocall/fn.u_lstat64_ocall.html     |   10 +
 .../linux/x86_64/ocall/fn.u_lstat_ocall.html       |   10 +
 .../linux/x86_64/ocall/fn.u_malloc_ocall.html      |   10 +
 .../linux/x86_64/ocall/fn.u_mkdir_ocall.html       |   10 +
 .../linux/x86_64/ocall/fn.u_mmap_ocall.html        |   10 +
 .../linux/x86_64/ocall/fn.u_mprotect_ocall.html    |   10 +
 .../linux/x86_64/ocall/fn.u_msync_ocall.html       |   10 +
 .../linux/x86_64/ocall/fn.u_munmap_ocall.html      |   10 +
 .../linux/x86_64/ocall/fn.u_nanosleep_ocall.html   |   10 +
 .../linux/x86_64/ocall/fn.u_open64_ocall.html      |   10 +
 .../linux/x86_64/ocall/fn.u_open_ocall.html        |   10 +
 .../linux/x86_64/ocall/fn.u_opendir_ocall.html     |   10 +
 .../linux/x86_64/ocall/fn.u_pipe2_ocall.html       |   10 +
 .../linux/x86_64/ocall/fn.u_pipe_ocall.html        |   10 +
 .../linux/x86_64/ocall/fn.u_poll_ocall.html        |   10 +
 .../linux/x86_64/ocall/fn.u_prctl_ocall.html       |   10 +
 .../linux/x86_64/ocall/fn.u_pread64_ocall.html     |   10 +
 .../linux/x86_64/ocall/fn.u_preadv64_ocall.html    |   10 +
 .../linux/x86_64/ocall/fn.u_pwrite64_ocall.html    |   10 +
 .../linux/x86_64/ocall/fn.u_pwritev64_ocall.html   |   10 +
 .../linux/x86_64/ocall/fn.u_raise_ocall.html       |   10 +
 .../linux/x86_64/ocall/fn.u_read_ocall.html        |   10 +
 .../linux/x86_64/ocall/fn.u_readdir64_r_ocall.html |   10 +
 .../linux/x86_64/ocall/fn.u_readlink_ocall.html    |   10 +
 .../linux/x86_64/ocall/fn.u_readv_ocall.html       |   10 +
 .../linux/x86_64/ocall/fn.u_realpath_ocall.html    |   10 +
 .../linux/x86_64/ocall/fn.u_recv_ocall.html        |   10 +
 .../linux/x86_64/ocall/fn.u_recvfrom_ocall.html    |   10 +
 .../linux/x86_64/ocall/fn.u_recvmsg_ocall.html     |   10 +
 .../linux/x86_64/ocall/fn.u_rename_ocall.html      |   10 +
 .../linux/x86_64/ocall/fn.u_rmdir_ocall.html       |   10 +
 .../x86_64/ocall/fn.u_sched_getaffinity_ocall.html |   10 +
 .../x86_64/ocall/fn.u_sched_setaffinity_ocall.html |   10 +
 .../linux/x86_64/ocall/fn.u_sched_yield_ocall.html |   10 +
 .../linux/x86_64/ocall/fn.u_send_ocall.html        |   10 +
 .../linux/x86_64/ocall/fn.u_sendmsg_ocall.html     |   10 +
 .../linux/x86_64/ocall/fn.u_sendto_ocall.html      |   10 +
 .../linux/x86_64/ocall/fn.u_setenv_ocall.html      |   10 +
 .../linux/x86_64/ocall/fn.u_setsockopt_ocall.html  |   10 +
 .../linux/x86_64/ocall/fn.u_shutdown_ocall.html    |   10 +
 .../linux/x86_64/ocall/fn.u_sigaction_ocall.html   |   10 +
 .../linux/x86_64/ocall/fn.u_sigprocmask_ocall.html |   10 +
 .../linux/x86_64/ocall/fn.u_socket_ocall.html      |   10 +
 .../linux/x86_64/ocall/fn.u_socketpair_ocall.html  |   10 +
 .../linux/x86_64/ocall/fn.u_stat64_ocall.html      |   10 +
 .../linux/x86_64/ocall/fn.u_stat_ocall.html        |   10 +
 .../linux/x86_64/ocall/fn.u_symlink_ocall.html     |   10 +
 .../linux/x86_64/ocall/fn.u_sysconf_ocall.html     |   10 +
 .../linux/x86_64/ocall/fn.u_truncate64_ocall.html  |   10 +
 .../linux/x86_64/ocall/fn.u_truncate_ocall.html    |   10 +
 .../linux/x86_64/ocall/fn.u_unlink_ocall.html      |   10 +
 .../linux/x86_64/ocall/fn.u_unsetenv_ocall.html    |   10 +
 .../linux/x86_64/ocall/fn.u_write_ocall.html       |   10 +
 .../linux/x86_64/ocall/fn.u_writev_ocall.html      |   10 +
 .../sgx_libc/linux/x86_64/ocall/fn.unlink.html     |   10 +
 .../sgx_libc/linux/x86_64/ocall/fn.unsetenv.html   |   10 +
 .../sgx_libc/linux/x86_64/ocall/fn.write.html      |   10 +
 .../sgx_libc/linux/x86_64/ocall/fn.writev.html     |   10 +
 .../sgx-sdk/sgx_libc/linux/x86_64/ocall/index.html |   10 +
 .../sgx_libc/linux/x86_64/struct.addrinfo.html     |   10 +
 .../sgx_libc/linux/x86_64/struct.cmsghdr.html      |   10 +
 .../sgx_libc/linux/x86_64/struct.cpu_set_t.html    |   10 +
 .../sgx_libc/linux/x86_64/struct.dirent.html       |   10 +
 .../sgx_libc/linux/x86_64/struct.dirent64.html     |   10 +
 .../sgx_libc/linux/x86_64/struct.epoll_event.html  |   10 +
 .../sgx_libc/linux/x86_64/struct.fd_set.html       |   10 +
 .../sgx_libc/linux/x86_64/struct.hostent.html      |   10 +
 .../sgx_libc/linux/x86_64/struct.in6_addr.html     |   10 +
 .../sgx_libc/linux/x86_64/struct.in_addr.html      |   10 +
 .../sgx_libc/linux/x86_64/struct.iovec.html        |   10 +
 .../sgx_libc/linux/x86_64/struct.ip_mreq.html      |   10 +
 .../sgx_libc/linux/x86_64/struct.ipv6_mreq.html    |   10 +
 .../sgx_libc/linux/x86_64/struct.linger.html       |   10 +
 .../sgx_libc/linux/x86_64/struct.msghdr.html       |   10 +
 .../sgx_libc/linux/x86_64/struct.passwd.html       |   10 +
 .../sgx_libc/linux/x86_64/struct.pollfd.html       |   10 +
 .../linux/x86_64/struct.pthread_once_t.html        |   10 +
 .../sgx_libc/linux/x86_64/struct.sigaction.html    |   10 +
 .../sgx_libc/linux/x86_64/struct.siginfo_t.html    |   10 +
 .../sgx_libc/linux/x86_64/struct.sigset_t.html     |   10 +
 .../sgx_libc/linux/x86_64/struct.sigval.html       |   10 +
 .../sgx_libc/linux/x86_64/struct.sockaddr.html     |   10 +
 .../sgx_libc/linux/x86_64/struct.sockaddr_in.html  |   10 +
 .../sgx_libc/linux/x86_64/struct.sockaddr_in6.html |   10 +
 .../sgx_libc/linux/x86_64/struct.sockaddr_ll.html  |   10 +
 .../sgx_libc/linux/x86_64/struct.sockaddr_nl.html  |   10 +
 .../linux/x86_64/struct.sockaddr_storage.html      |   10 +
 .../sgx_libc/linux/x86_64/struct.sockaddr_un.html  |   10 +
 .../sgx-sdk/sgx_libc/linux/x86_64/struct.stat.html |   10 +
 .../sgx_libc/linux/x86_64/struct.stat64.html       |   10 +
 .../sgx_libc/linux/x86_64/struct.timespec.html     |   10 +
 .../sgx_libc/linux/x86_64/struct.timeval.html      |   10 +
 .../sgx-sdk/sgx_libc/linux/x86_64/struct.tm.html   |   10 +
 .../sgx_libc/linux/x86_64/struct.ucred.html        |   10 +
 .../sgx_libc/linux/x86_64/struct.winsize.html      |   10 +
 .../sgx_libc/linux/x86_64/type.blkcnt64_t.html     |   10 +
 .../sgx_libc/linux/x86_64/type.blkcnt_t.html       |   10 +
 .../sgx_libc/linux/x86_64/type.blksize_t.html      |   10 +
 .../sgx-sdk/sgx_libc/linux/x86_64/type.c_char.html |   10 +
 .../sgx_libc/linux/x86_64/type.c_double.html       |   10 +
 .../sgx_libc/linux/x86_64/type.c_float.html        |   10 +
 .../sgx-sdk/sgx_libc/linux/x86_64/type.c_int.html  |   10 +
 .../sgx-sdk/sgx_libc/linux/x86_64/type.c_long.html |   10 +
 .../sgx_libc/linux/x86_64/type.c_longlong.html     |   10 +
 .../sgx_libc/linux/x86_64/type.c_schar.html        |   10 +
 .../sgx_libc/linux/x86_64/type.c_short.html        |   10 +
 .../sgx_libc/linux/x86_64/type.c_uchar.html        |   10 +
 .../sgx-sdk/sgx_libc/linux/x86_64/type.c_uint.html |   10 +
 .../sgx_libc/linux/x86_64/type.c_ulong.html        |   10 +
 .../sgx_libc/linux/x86_64/type.c_ulonglong.html    |   10 +
 .../sgx_libc/linux/x86_64/type.c_ushort.html       |   10 +
 .../sgx_libc/linux/x86_64/type.clockid_t.html      |   10 +
 .../sgx-sdk/sgx_libc/linux/x86_64/type.dev_t.html  |   10 +
 .../linux/x86_64/type.exit_function_t.html         |   10 +
 .../sgx-sdk/sgx_libc/linux/x86_64/type.gid_t.html  |   10 +
 .../sgx_libc/linux/x86_64/type.in_addr_t.html      |   10 +
 .../sgx_libc/linux/x86_64/type.in_port_t.html      |   10 +
 .../sgx_libc/linux/x86_64/type.ino64_t.html        |   10 +
 .../sgx-sdk/sgx_libc/linux/x86_64/type.ino_t.html  |   10 +
 .../sgx_libc/linux/x86_64/type.int16_t.html        |   10 +
 .../sgx_libc/linux/x86_64/type.int32_t.html        |   10 +
 .../sgx_libc/linux/x86_64/type.int64_t.html        |   10 +
 .../sgx-sdk/sgx_libc/linux/x86_64/type.int8_t.html |   10 +
 .../sgx_libc/linux/x86_64/type.intmax_t.html       |   10 +
 .../sgx_libc/linux/x86_64/type.intptr_t.html       |   10 +
 .../sgx-sdk/sgx_libc/linux/x86_64/type.mode_t.html |   10 +
 .../sgx-sdk/sgx_libc/linux/x86_64/type.nfds_t.html |   10 +
 .../sgx_libc/linux/x86_64/type.nlink_t.html        |   10 +
 .../sgx_libc/linux/x86_64/type.off64_t.html        |   10 +
 .../sgx-sdk/sgx_libc/linux/x86_64/type.off_t.html  |   10 +
 .../sgx-sdk/sgx_libc/linux/x86_64/type.pid_t.html  |   10 +
 .../sgx_libc/linux/x86_64/type.pthread_attr_t.html |   10 +
 .../sgx_libc/linux/x86_64/type.pthread_cond_t.html |   10 +
 .../linux/x86_64/type.pthread_condattr_t.html      |   10 +
 .../sgx_libc/linux/x86_64/type.pthread_key_t.html  |   10 +
 .../linux/x86_64/type.pthread_mutex_t.html         |   10 +
 .../linux/x86_64/type.pthread_mutexattr_t.html     |   10 +
 .../sgx_libc/linux/x86_64/type.pthread_t.html      |   10 +
 .../sgx_libc/linux/x86_64/type.ptrdiff_t.html      |   10 +
 .../sgx_libc/linux/x86_64/type.sa_family_t.html    |   10 +
 .../sgx_libc/linux/x86_64/type.sighandler_t.html   |   10 +
 .../sgx-sdk/sgx_libc/linux/x86_64/type.size_t.html |   10 +
 .../sgx_libc/linux/x86_64/type.socklen_t.html      |   10 +
 .../sgx_libc/linux/x86_64/type.ssize_t.html        |   10 +
 .../sgx_libc/linux/x86_64/type.suseconds_t.html    |   10 +
 .../sgx-sdk/sgx_libc/linux/x86_64/type.time_t.html |   10 +
 .../sgx-sdk/sgx_libc/linux/x86_64/type.uid_t.html  |   10 +
 .../sgx_libc/linux/x86_64/type.uint16_t.html       |   10 +
 .../sgx_libc/linux/x86_64/type.uint32_t.html       |   10 +
 .../sgx_libc/linux/x86_64/type.uint64_t.html       |   10 +
 .../sgx_libc/linux/x86_64/type.uint8_t.html        |   10 +
 .../sgx_libc/linux/x86_64/type.uintmax_t.html      |   10 +
 .../sgx_libc/linux/x86_64/type.uintptr_t.html      |   10 +
 api-docs/sgx-sdk/sgx_libc/ocall/fn.accept.html     |    4 +
 api-docs/sgx-sdk/sgx_libc/ocall/fn.accept4.html    |    4 +
 api-docs/sgx-sdk/sgx_libc/ocall/fn.bind.html       |    4 +
 api-docs/sgx-sdk/sgx_libc/ocall/fn.chdir.html      |    4 +
 api-docs/sgx-sdk/sgx_libc/ocall/fn.chmod.html      |    4 +
 .../sgx-sdk/sgx_libc/ocall/fn.clock_gettime.html   |    4 +
 api-docs/sgx-sdk/sgx_libc/ocall/fn.close.html      |    4 +
 api-docs/sgx-sdk/sgx_libc/ocall/fn.closedir.html   |    4 +
 api-docs/sgx-sdk/sgx_libc/ocall/fn.connect.html    |    4 +
 api-docs/sgx-sdk/sgx_libc/ocall/fn.dirfd.html      |    4 +
 api-docs/sgx-sdk/sgx_libc/ocall/fn.environ.html    |    4 +
 .../sgx-sdk/sgx_libc/ocall/fn.epoll_create1.html   |    4 +
 api-docs/sgx-sdk/sgx_libc/ocall/fn.epoll_ctl.html  |    4 +
 api-docs/sgx-sdk/sgx_libc/ocall/fn.epoll_wait.html |    4 +
 api-docs/sgx-sdk/sgx_libc/ocall/fn.fchmod.html     |    4 +
 api-docs/sgx-sdk/sgx_libc/ocall/fn.fcntl_arg0.html |    4 +
 api-docs/sgx-sdk/sgx_libc/ocall/fn.fcntl_arg1.html |    4 +
 api-docs/sgx-sdk/sgx_libc/ocall/fn.fdatasync.html  |    4 +
 api-docs/sgx-sdk/sgx_libc/ocall/fn.free.html       |    4 +
 .../sgx-sdk/sgx_libc/ocall/fn.freeaddrinfo.html    |    4 +
 api-docs/sgx-sdk/sgx_libc/ocall/fn.fstat.html      |    4 +
 api-docs/sgx-sdk/sgx_libc/ocall/fn.fstat64.html    |    4 +
 api-docs/sgx-sdk/sgx_libc/ocall/fn.fstatat64.html  |    4 +
 api-docs/sgx-sdk/sgx_libc/ocall/fn.fsync.html      |    4 +
 api-docs/sgx-sdk/sgx_libc/ocall/fn.ftruncate.html  |    4 +
 .../sgx-sdk/sgx_libc/ocall/fn.ftruncate64.html     |    4 +
 .../sgx-sdk/sgx_libc/ocall/fn.gai_strerror.html    |    4 +
 .../sgx-sdk/sgx_libc/ocall/fn.getaddrinfo.html     |    4 +
 api-docs/sgx-sdk/sgx_libc/ocall/fn.getcwd.html     |    4 +
 api-docs/sgx-sdk/sgx_libc/ocall/fn.getenv.html     |    4 +
 .../sgx-sdk/sgx_libc/ocall/fn.getpeername.html     |    4 +
 api-docs/sgx-sdk/sgx_libc/ocall/fn.getpid.html     |    4 +
 api-docs/sgx-sdk/sgx_libc/ocall/fn.getpwuid_r.html |    4 +
 .../sgx-sdk/sgx_libc/ocall/fn.getsockname.html     |    4 +
 api-docs/sgx-sdk/sgx_libc/ocall/fn.getsockopt.html |    4 +
 api-docs/sgx-sdk/sgx_libc/ocall/fn.getuid.html     |    4 +
 api-docs/sgx-sdk/sgx_libc/ocall/fn.ioctl_arg0.html |    4 +
 api-docs/sgx-sdk/sgx_libc/ocall/fn.ioctl_arg1.html |    4 +
 api-docs/sgx-sdk/sgx_libc/ocall/fn.link.html       |    4 +
 api-docs/sgx-sdk/sgx_libc/ocall/fn.listen.html     |    4 +
 api-docs/sgx-sdk/sgx_libc/ocall/fn.lseek.html      |    4 +
 api-docs/sgx-sdk/sgx_libc/ocall/fn.lseek64.html    |    4 +
 api-docs/sgx-sdk/sgx_libc/ocall/fn.lstat.html      |    4 +
 api-docs/sgx-sdk/sgx_libc/ocall/fn.lstat64.html    |    4 +
 api-docs/sgx-sdk/sgx_libc/ocall/fn.malloc.html     |    4 +
 api-docs/sgx-sdk/sgx_libc/ocall/fn.mkdir.html      |    4 +
 api-docs/sgx-sdk/sgx_libc/ocall/fn.mmap.html       |    4 +
 api-docs/sgx-sdk/sgx_libc/ocall/fn.mprotect.html   |    4 +
 api-docs/sgx-sdk/sgx_libc/ocall/fn.msync.html      |    4 +
 api-docs/sgx-sdk/sgx_libc/ocall/fn.munmap.html     |    4 +
 api-docs/sgx-sdk/sgx_libc/ocall/fn.nanosleep.html  |    4 +
 api-docs/sgx-sdk/sgx_libc/ocall/fn.open.html       |    4 +
 api-docs/sgx-sdk/sgx_libc/ocall/fn.open64.html     |    4 +
 api-docs/sgx-sdk/sgx_libc/ocall/fn.opendir.html    |    4 +
 api-docs/sgx-sdk/sgx_libc/ocall/fn.pipe.html       |    4 +
 api-docs/sgx-sdk/sgx_libc/ocall/fn.pipe2.html      |    4 +
 api-docs/sgx-sdk/sgx_libc/ocall/fn.poll.html       |    4 +
 api-docs/sgx-sdk/sgx_libc/ocall/fn.prctl.html      |    4 +
 api-docs/sgx-sdk/sgx_libc/ocall/fn.pread64.html    |    4 +
 api-docs/sgx-sdk/sgx_libc/ocall/fn.preadv64.html   |    4 +
 .../sgx-sdk/sgx_libc/ocall/fn.pthread_sigmask.html |    4 +
 api-docs/sgx-sdk/sgx_libc/ocall/fn.pwrite64.html   |    4 +
 api-docs/sgx-sdk/sgx_libc/ocall/fn.pwritev64.html  |    4 +
 api-docs/sgx-sdk/sgx_libc/ocall/fn.raise.html      |    4 +
 api-docs/sgx-sdk/sgx_libc/ocall/fn.read.html       |    4 +
 .../sgx-sdk/sgx_libc/ocall/fn.readdir64_r.html     |    4 +
 api-docs/sgx-sdk/sgx_libc/ocall/fn.readlink.html   |    4 +
 api-docs/sgx-sdk/sgx_libc/ocall/fn.readv.html      |    4 +
 api-docs/sgx-sdk/sgx_libc/ocall/fn.realpath.html   |    4 +
 api-docs/sgx-sdk/sgx_libc/ocall/fn.recv.html       |    4 +
 api-docs/sgx-sdk/sgx_libc/ocall/fn.recvfrom.html   |    4 +
 api-docs/sgx-sdk/sgx_libc/ocall/fn.recvmsg.html    |    4 +
 api-docs/sgx-sdk/sgx_libc/ocall/fn.rename.html     |    4 +
 api-docs/sgx-sdk/sgx_libc/ocall/fn.rmdir.html      |    4 +
 .../sgx_libc/ocall/fn.sched_getaffinity.html       |    4 +
 .../sgx_libc/ocall/fn.sched_setaffinity.html       |    4 +
 .../sgx-sdk/sgx_libc/ocall/fn.sched_yield.html     |    4 +
 api-docs/sgx-sdk/sgx_libc/ocall/fn.send.html       |    4 +
 api-docs/sgx-sdk/sgx_libc/ocall/fn.sendmsg.html    |    4 +
 api-docs/sgx-sdk/sgx_libc/ocall/fn.sendto.html     |    4 +
 api-docs/sgx-sdk/sgx_libc/ocall/fn.setenv.html     |    4 +
 api-docs/sgx-sdk/sgx_libc/ocall/fn.setsockopt.html |    4 +
 api-docs/sgx-sdk/sgx_libc/ocall/fn.shutdown.html   |    4 +
 api-docs/sgx-sdk/sgx_libc/ocall/fn.sigaction.html  |    4 +
 .../sgx-sdk/sgx_libc/ocall/fn.sigprocmask.html     |    4 +
 api-docs/sgx-sdk/sgx_libc/ocall/fn.socket.html     |    4 +
 api-docs/sgx-sdk/sgx_libc/ocall/fn.socketpair.html |    4 +
 api-docs/sgx-sdk/sgx_libc/ocall/fn.stat.html       |    4 +
 api-docs/sgx-sdk/sgx_libc/ocall/fn.stat64.html     |    4 +
 api-docs/sgx-sdk/sgx_libc/ocall/fn.symlink.html    |    4 +
 api-docs/sgx-sdk/sgx_libc/ocall/fn.sysconf.html    |    4 +
 api-docs/sgx-sdk/sgx_libc/ocall/fn.truncate.html   |    4 +
 api-docs/sgx-sdk/sgx_libc/ocall/fn.truncate64.html |    4 +
 .../sgx-sdk/sgx_libc/ocall/fn.u_accept4_ocall.html |    4 +
 .../sgx-sdk/sgx_libc/ocall/fn.u_accept_ocall.html  |    4 +
 .../sgx-sdk/sgx_libc/ocall/fn.u_bind_ocall.html    |    4 +
 .../sgx-sdk/sgx_libc/ocall/fn.u_chdir_ocall.html   |    4 +
 .../sgx-sdk/sgx_libc/ocall/fn.u_chmod_ocall.html   |    4 +
 .../sgx_libc/ocall/fn.u_clock_gettime_ocall.html   |    4 +
 .../sgx-sdk/sgx_libc/ocall/fn.u_close_ocall.html   |    4 +
 .../sgx_libc/ocall/fn.u_closedir_ocall.html        |    4 +
 .../sgx-sdk/sgx_libc/ocall/fn.u_connect_ocall.html |    4 +
 .../sgx-sdk/sgx_libc/ocall/fn.u_dirfd_ocall.html   |    4 +
 .../sgx-sdk/sgx_libc/ocall/fn.u_environ_ocall.html |    4 +
 .../sgx_libc/ocall/fn.u_epoll_create1_ocall.html   |    4 +
 .../sgx_libc/ocall/fn.u_epoll_ctl_ocall.html       |    4 +
 .../sgx_libc/ocall/fn.u_epoll_wait_ocall.html      |    4 +
 .../sgx-sdk/sgx_libc/ocall/fn.u_fchmod_ocall.html  |    4 +
 .../sgx_libc/ocall/fn.u_fcntl_arg0_ocall.html      |    4 +
 .../sgx_libc/ocall/fn.u_fcntl_arg1_ocall.html      |    4 +
 .../sgx_libc/ocall/fn.u_fdatasync_ocall.html       |    4 +
 .../sgx-sdk/sgx_libc/ocall/fn.u_free_ocall.html    |    4 +
 .../sgx_libc/ocall/fn.u_freeaddrinfo_ocall.html    |    4 +
 .../sgx-sdk/sgx_libc/ocall/fn.u_fstat64_ocall.html |    4 +
 .../sgx-sdk/sgx_libc/ocall/fn.u_fstat_ocall.html   |    4 +
 .../sgx_libc/ocall/fn.u_fstatat64_ocall.html       |    4 +
 .../sgx-sdk/sgx_libc/ocall/fn.u_fsync_ocall.html   |    4 +
 .../sgx_libc/ocall/fn.u_ftruncate64_ocall.html     |    4 +
 .../sgx_libc/ocall/fn.u_ftruncate_ocall.html       |    4 +
 .../sgx_libc/ocall/fn.u_gai_strerror_ocall.html    |    4 +
 .../sgx_libc/ocall/fn.u_getaddrinfo_ocall.html     |    4 +
 .../sgx-sdk/sgx_libc/ocall/fn.u_getcwd_ocall.html  |    4 +
 .../sgx-sdk/sgx_libc/ocall/fn.u_getenv_ocall.html  |    4 +
 .../sgx_libc/ocall/fn.u_getpeername_ocall.html     |    4 +
 .../sgx-sdk/sgx_libc/ocall/fn.u_getpid_ocall.html  |    4 +
 .../sgx_libc/ocall/fn.u_getpwuid_r_ocall.html      |    4 +
 .../sgx_libc/ocall/fn.u_getsockname_ocall.html     |    4 +
 .../sgx_libc/ocall/fn.u_getsockopt_ocall.html      |    4 +
 .../sgx-sdk/sgx_libc/ocall/fn.u_getuid_ocall.html  |    4 +
 .../sgx_libc/ocall/fn.u_ioctl_arg0_ocall.html      |    4 +
 .../sgx_libc/ocall/fn.u_ioctl_arg1_ocall.html      |    4 +
 .../sgx-sdk/sgx_libc/ocall/fn.u_link_ocall.html    |    4 +
 .../sgx-sdk/sgx_libc/ocall/fn.u_listen_ocall.html  |    4 +
 .../sgx-sdk/sgx_libc/ocall/fn.u_lseek64_ocall.html |    4 +
 .../sgx-sdk/sgx_libc/ocall/fn.u_lseek_ocall.html   |    4 +
 .../sgx-sdk/sgx_libc/ocall/fn.u_lstat64_ocall.html |    4 +
 .../sgx-sdk/sgx_libc/ocall/fn.u_lstat_ocall.html   |    4 +
 .../sgx-sdk/sgx_libc/ocall/fn.u_malloc_ocall.html  |    4 +
 .../sgx-sdk/sgx_libc/ocall/fn.u_mkdir_ocall.html   |    4 +
 .../sgx-sdk/sgx_libc/ocall/fn.u_mmap_ocall.html    |    4 +
 .../sgx_libc/ocall/fn.u_mprotect_ocall.html        |    4 +
 .../sgx-sdk/sgx_libc/ocall/fn.u_msync_ocall.html   |    4 +
 .../sgx-sdk/sgx_libc/ocall/fn.u_munmap_ocall.html  |    4 +
 .../sgx_libc/ocall/fn.u_nanosleep_ocall.html       |    4 +
 .../sgx-sdk/sgx_libc/ocall/fn.u_open64_ocall.html  |    4 +
 .../sgx-sdk/sgx_libc/ocall/fn.u_open_ocall.html    |    4 +
 .../sgx-sdk/sgx_libc/ocall/fn.u_opendir_ocall.html |    4 +
 .../sgx-sdk/sgx_libc/ocall/fn.u_pipe2_ocall.html   |    4 +
 .../sgx-sdk/sgx_libc/ocall/fn.u_pipe_ocall.html    |    4 +
 .../sgx-sdk/sgx_libc/ocall/fn.u_poll_ocall.html    |    4 +
 .../sgx-sdk/sgx_libc/ocall/fn.u_prctl_ocall.html   |    4 +
 .../sgx-sdk/sgx_libc/ocall/fn.u_pread64_ocall.html |    4 +
 .../sgx_libc/ocall/fn.u_preadv64_ocall.html        |    4 +
 .../sgx_libc/ocall/fn.u_pwrite64_ocall.html        |    4 +
 .../sgx_libc/ocall/fn.u_pwritev64_ocall.html       |    4 +
 .../sgx-sdk/sgx_libc/ocall/fn.u_raise_ocall.html   |    4 +
 .../sgx-sdk/sgx_libc/ocall/fn.u_read_ocall.html    |    4 +
 .../sgx_libc/ocall/fn.u_readdir64_r_ocall.html     |    4 +
 .../sgx_libc/ocall/fn.u_readlink_ocall.html        |    4 +
 .../sgx-sdk/sgx_libc/ocall/fn.u_readv_ocall.html   |    4 +
 .../sgx_libc/ocall/fn.u_realpath_ocall.html        |    4 +
 .../sgx-sdk/sgx_libc/ocall/fn.u_recv_ocall.html    |    4 +
 .../sgx_libc/ocall/fn.u_recvfrom_ocall.html        |    4 +
 .../sgx-sdk/sgx_libc/ocall/fn.u_recvmsg_ocall.html |    4 +
 .../sgx-sdk/sgx_libc/ocall/fn.u_rename_ocall.html  |    4 +
 .../sgx-sdk/sgx_libc/ocall/fn.u_rmdir_ocall.html   |    4 +
 .../ocall/fn.u_sched_getaffinity_ocall.html        |    4 +
 .../ocall/fn.u_sched_setaffinity_ocall.html        |    4 +
 .../sgx_libc/ocall/fn.u_sched_yield_ocall.html     |    4 +
 .../sgx-sdk/sgx_libc/ocall/fn.u_send_ocall.html    |    4 +
 .../sgx-sdk/sgx_libc/ocall/fn.u_sendmsg_ocall.html |    4 +
 .../sgx-sdk/sgx_libc/ocall/fn.u_sendto_ocall.html  |    4 +
 .../sgx-sdk/sgx_libc/ocall/fn.u_setenv_ocall.html  |    4 +
 .../sgx_libc/ocall/fn.u_setsockopt_ocall.html      |    4 +
 .../sgx_libc/ocall/fn.u_shutdown_ocall.html        |    4 +
 .../sgx_libc/ocall/fn.u_sigaction_ocall.html       |    4 +
 .../sgx_libc/ocall/fn.u_sigprocmask_ocall.html     |    4 +
 .../sgx-sdk/sgx_libc/ocall/fn.u_socket_ocall.html  |    4 +
 .../sgx_libc/ocall/fn.u_socketpair_ocall.html      |    4 +
 .../sgx-sdk/sgx_libc/ocall/fn.u_stat64_ocall.html  |    4 +
 .../sgx-sdk/sgx_libc/ocall/fn.u_stat_ocall.html    |    4 +
 .../sgx-sdk/sgx_libc/ocall/fn.u_symlink_ocall.html |    4 +
 .../sgx-sdk/sgx_libc/ocall/fn.u_sysconf_ocall.html |    4 +
 .../sgx_libc/ocall/fn.u_truncate64_ocall.html      |    4 +
 .../sgx_libc/ocall/fn.u_truncate_ocall.html        |    4 +
 .../sgx-sdk/sgx_libc/ocall/fn.u_unlink_ocall.html  |    4 +
 .../sgx_libc/ocall/fn.u_unsetenv_ocall.html        |    4 +
 .../sgx-sdk/sgx_libc/ocall/fn.u_write_ocall.html   |    4 +
 .../sgx-sdk/sgx_libc/ocall/fn.u_writev_ocall.html  |    4 +
 api-docs/sgx-sdk/sgx_libc/ocall/fn.unlink.html     |    4 +
 api-docs/sgx-sdk/sgx_libc/ocall/fn.unsetenv.html   |    4 +
 api-docs/sgx-sdk/sgx_libc/ocall/fn.write.html      |    4 +
 api-docs/sgx-sdk/sgx_libc/ocall/fn.writev.html     |    4 +
 api-docs/sgx-sdk/sgx_libc/ocall/index.html         |    5 +
 api-docs/sgx-sdk/sgx_libc/ocall/sidebar-items.js   |    1 +
 api-docs/sgx-sdk/sgx_libc/sidebar-items.js         |    1 +
 api-docs/sgx-sdk/sgx_libc/struct.addrinfo.html     |   29 +
 api-docs/sgx-sdk/sgx_libc/struct.cmsghdr.html      |   25 +
 api-docs/sgx-sdk/sgx_libc/struct.cpu_set_t.html    |   19 +
 api-docs/sgx-sdk/sgx_libc/struct.dirent.html       |   26 +
 api-docs/sgx-sdk/sgx_libc/struct.dirent64.html     |   26 +
 api-docs/sgx-sdk/sgx_libc/struct.epoll_event.html  |   24 +
 api-docs/sgx-sdk/sgx_libc/struct.fd_set.html       |   19 +
 api-docs/sgx-sdk/sgx_libc/struct.hostent.html      |   26 +
 api-docs/sgx-sdk/sgx_libc/struct.in6_addr.html     |   23 +
 api-docs/sgx-sdk/sgx_libc/struct.in_addr.html      |   22 +
 api-docs/sgx-sdk/sgx_libc/struct.iovec.html        |   23 +
 api-docs/sgx-sdk/sgx_libc/struct.ip_mreq.html      |   23 +
 api-docs/sgx-sdk/sgx_libc/struct.ipv6_mreq.html    |   23 +
 api-docs/sgx-sdk/sgx_libc/struct.linger.html       |   23 +
 api-docs/sgx-sdk/sgx_libc/struct.msghdr.html       |   29 +
 api-docs/sgx-sdk/sgx_libc/struct.passwd.html       |   28 +
 api-docs/sgx-sdk/sgx_libc/struct.pollfd.html       |   24 +
 .../sgx-sdk/sgx_libc/struct.pthread_once_t.html    |   23 +
 api-docs/sgx-sdk/sgx_libc/struct.sigaction.html    |   25 +
 api-docs/sgx-sdk/sgx_libc/struct.siginfo_t.html    |   26 +
 api-docs/sgx-sdk/sgx_libc/struct.sigset_t.html     |   19 +
 api-docs/sgx-sdk/sgx_libc/struct.sigval.html       |   22 +
 api-docs/sgx-sdk/sgx_libc/struct.sockaddr.html     |   23 +
 api-docs/sgx-sdk/sgx_libc/struct.sockaddr_in.html  |   25 +
 api-docs/sgx-sdk/sgx_libc/struct.sockaddr_in6.html |   26 +
 api-docs/sgx-sdk/sgx_libc/struct.sockaddr_ll.html  |   28 +
 api-docs/sgx-sdk/sgx_libc/struct.sockaddr_nl.html  |   25 +
 .../sgx-sdk/sgx_libc/struct.sockaddr_storage.html  |   23 +
 api-docs/sgx-sdk/sgx_libc/struct.sockaddr_un.html  |   23 +
 api-docs/sgx-sdk/sgx_libc/struct.stat.html         |   38 +
 api-docs/sgx-sdk/sgx_libc/struct.stat64.html       |   38 +
 api-docs/sgx-sdk/sgx_libc/struct.timespec.html     |   23 +
 api-docs/sgx-sdk/sgx_libc/struct.timeval.html      |   23 +
 api-docs/sgx-sdk/sgx_libc/struct.tm.html           |   32 +
 api-docs/sgx-sdk/sgx_libc/struct.ucred.html        |   24 +
 api-docs/sgx-sdk/sgx_libc/struct.winsize.html      |   25 +
 api-docs/sgx-sdk/sgx_libc/type.blkcnt64_t.html     |    4 +
 api-docs/sgx-sdk/sgx_libc/type.blkcnt_t.html       |    4 +
 api-docs/sgx-sdk/sgx_libc/type.blksize_t.html      |    4 +
 api-docs/sgx-sdk/sgx_libc/type.c_char.html         |    4 +
 api-docs/sgx-sdk/sgx_libc/type.c_double.html       |    4 +
 api-docs/sgx-sdk/sgx_libc/type.c_float.html        |    4 +
 api-docs/sgx-sdk/sgx_libc/type.c_int.html          |    4 +
 api-docs/sgx-sdk/sgx_libc/type.c_long.html         |    4 +
 api-docs/sgx-sdk/sgx_libc/type.c_longlong.html     |    4 +
 api-docs/sgx-sdk/sgx_libc/type.c_schar.html        |    4 +
 api-docs/sgx-sdk/sgx_libc/type.c_short.html        |    4 +
 api-docs/sgx-sdk/sgx_libc/type.c_uchar.html        |    4 +
 api-docs/sgx-sdk/sgx_libc/type.c_uint.html         |    4 +
 api-docs/sgx-sdk/sgx_libc/type.c_ulong.html        |    4 +
 api-docs/sgx-sdk/sgx_libc/type.c_ulonglong.html    |    4 +
 api-docs/sgx-sdk/sgx_libc/type.c_ushort.html       |    4 +
 api-docs/sgx-sdk/sgx_libc/type.clockid_t.html      |    4 +
 api-docs/sgx-sdk/sgx_libc/type.dev_t.html          |    4 +
 .../sgx-sdk/sgx_libc/type.exit_function_t.html     |    4 +
 api-docs/sgx-sdk/sgx_libc/type.gid_t.html          |    4 +
 api-docs/sgx-sdk/sgx_libc/type.in_addr_t.html      |    4 +
 api-docs/sgx-sdk/sgx_libc/type.in_port_t.html      |    4 +
 api-docs/sgx-sdk/sgx_libc/type.ino64_t.html        |    4 +
 api-docs/sgx-sdk/sgx_libc/type.ino_t.html          |    4 +
 api-docs/sgx-sdk/sgx_libc/type.int16_t.html        |    4 +
 api-docs/sgx-sdk/sgx_libc/type.int32_t.html        |    4 +
 api-docs/sgx-sdk/sgx_libc/type.int64_t.html        |    4 +
 api-docs/sgx-sdk/sgx_libc/type.int8_t.html         |    4 +
 api-docs/sgx-sdk/sgx_libc/type.intmax_t.html       |    4 +
 api-docs/sgx-sdk/sgx_libc/type.intptr_t.html       |    4 +
 api-docs/sgx-sdk/sgx_libc/type.mode_t.html         |    4 +
 api-docs/sgx-sdk/sgx_libc/type.nfds_t.html         |    4 +
 api-docs/sgx-sdk/sgx_libc/type.nlink_t.html        |    4 +
 api-docs/sgx-sdk/sgx_libc/type.off64_t.html        |    4 +
 api-docs/sgx-sdk/sgx_libc/type.off_t.html          |    4 +
 api-docs/sgx-sdk/sgx_libc/type.pid_t.html          |    4 +
 api-docs/sgx-sdk/sgx_libc/type.pthread_attr_t.html |    4 +
 api-docs/sgx-sdk/sgx_libc/type.pthread_cond_t.html |    4 +
 .../sgx-sdk/sgx_libc/type.pthread_condattr_t.html  |    4 +
 api-docs/sgx-sdk/sgx_libc/type.pthread_key_t.html  |    4 +
 .../sgx-sdk/sgx_libc/type.pthread_mutex_t.html     |    4 +
 .../sgx-sdk/sgx_libc/type.pthread_mutexattr_t.html |    4 +
 api-docs/sgx-sdk/sgx_libc/type.pthread_t.html      |    4 +
 api-docs/sgx-sdk/sgx_libc/type.ptrdiff_t.html      |    4 +
 api-docs/sgx-sdk/sgx_libc/type.sa_family_t.html    |    4 +
 api-docs/sgx-sdk/sgx_libc/type.sighandler_t.html   |    4 +
 api-docs/sgx-sdk/sgx_libc/type.size_t.html         |    4 +
 api-docs/sgx-sdk/sgx_libc/type.socklen_t.html      |    4 +
 api-docs/sgx-sdk/sgx_libc/type.ssize_t.html        |    4 +
 api-docs/sgx-sdk/sgx_libc/type.suseconds_t.html    |    4 +
 api-docs/sgx-sdk/sgx_libc/type.time_t.html         |    4 +
 api-docs/sgx-sdk/sgx_libc/type.uid_t.html          |    4 +
 api-docs/sgx-sdk/sgx_libc/type.uint16_t.html       |    4 +
 api-docs/sgx-sdk/sgx_libc/type.uint32_t.html       |    4 +
 api-docs/sgx-sdk/sgx_libc/type.uint64_t.html       |    4 +
 api-docs/sgx-sdk/sgx_libc/type.uint8_t.html        |    4 +
 api-docs/sgx-sdk/sgx_libc/type.uintmax_t.html      |    4 +
 api-docs/sgx-sdk/sgx_libc/type.uintptr_t.html      |    4 +
 api-docs/sgx-sdk/sgx_tprotected_fs/all.html        |    6 +
 .../sgx-sdk/sgx_tprotected_fs/enum.SeekFrom.html   |   39 +
 .../fn.export_align_auto_key.html                  |    4 +
 .../sgx_tprotected_fs/fn.export_auto_key.html      |   17 +
 .../sgx_tprotected_fs/fn.import_auto_key.html      |   20 +
 api-docs/sgx-sdk/sgx_tprotected_fs/fn.remove.html  |   15 +
 .../sgx_tprotected_fs/fs/enum.SeekFrom.html        |   10 +
 .../fs/fn.export_align_auto_key.html               |   10 +
 .../sgx_tprotected_fs/fs/fn.export_auto_key.html   |   10 +
 .../sgx_tprotected_fs/fs/fn.import_auto_key.html   |   10 +
 .../sgx-sdk/sgx_tprotected_fs/fs/fn.remove.html    |   10 +
 .../sgx_tprotected_fs/fs/struct.SgxFileStream.html |   10 +
 api-docs/sgx-sdk/sgx_tprotected_fs/index.html      |   16 +
 .../sgx-sdk/sgx_tprotected_fs/sidebar-items.js     |    1 +
 .../sgx_tprotected_fs/struct.SgxFileStream.html    |  156 +
 api-docs/sgx-sdk/sgx_trts/all.html                 |    6 +
 .../sgx-sdk/sgx_trts/ascii/fn.escape_default.html  |   63 +
 api-docs/sgx-sdk/sgx_trts/ascii/index.html         |   19 +
 api-docs/sgx-sdk/sgx_trts/ascii/sidebar-items.js   |    1 +
 .../sgx_trts/ascii/struct.EscapeDefault.html       |  150 +
 .../sgx-sdk/sgx_trts/ascii/trait.AsciiExt.html     |   60 +
 api-docs/sgx-sdk/sgx_trts/c_str/index.html         |   10 +
 api-docs/sgx-sdk/sgx_trts/c_str/sidebar-items.js   |    1 +
 api-docs/sgx-sdk/sgx_trts/c_str/struct.CStr.html   |  114 +
 .../sgx-sdk/sgx_trts/c_str/struct.CString.html     |  136 +
 .../c_str/struct.FromBytesWithNulError.html        |   31 +
 .../sgx_trts/c_str/struct.IntoStringError.html     |   35 +
 .../sgx-sdk/sgx_trts/c_str/struct.NulError.html    |   34 +
 .../sgx-sdk/sgx_trts/cpu_feature/enum.Feature.html |   84 +
 .../sgx-sdk/sgx_trts/cpu_feature/fn.check_for.html |    4 +
 api-docs/sgx-sdk/sgx_trts/cpu_feature/index.html   |    6 +
 .../sgx-sdk/sgx_trts/cpu_feature/sidebar-items.js  |    1 +
 api-docs/sgx-sdk/sgx_trts/cpuid/fn.rsgx_cpuid.html |   35 +
 .../sgx-sdk/sgx_trts/cpuid/fn.rsgx_cpuidex.html    |   37 +
 api-docs/sgx-sdk/sgx_trts/cpuid/index.html         |   11 +
 api-docs/sgx-sdk/sgx_trts/cpuid/sidebar-items.js   |    1 +
 .../enclave/constant.LAYOUT_ENTRY_NUM.html         |    4 +
 .../sgx_trts/enclave/enum.SgxThreadPolicy.html     |   28 +
 .../sgx_trts/enclave/fn.get_enclave_base.html      |    4 +
 .../sgx-sdk/sgx_trts/enclave/fn.get_heap_base.html |    4 +
 .../sgx-sdk/sgx_trts/enclave/fn.get_heap_size.html |    4 +
 .../sgx-sdk/sgx_trts/enclave/fn.get_rsrv_base.html |    4 +
 .../sgx-sdk/sgx_trts/enclave/fn.get_rsrv_size.html |    4 +
 .../sgx_trts/enclave/fn.get_thread_data.html       |    4 +
 .../sgx_trts/enclave/fn.rsgx_get_cpu_core_num.html |    4 +
 .../sgx_trts/enclave/fn.rsgx_get_cpu_feature.html  |    4 +
 .../sgx_trts/enclave/fn.rsgx_get_enclave_base.html |    7 +
 .../sgx_trts/enclave/fn.rsgx_get_enclave_size.html |    7 +
 .../sgx_trts/enclave/fn.rsgx_get_global_data.html  |    7 +
 .../sgx_trts/enclave/fn.rsgx_get_heap_base.html    |    7 +
 .../sgx_trts/enclave/fn.rsgx_get_heap_offset.html  |    7 +
 .../sgx_trts/enclave/fn.rsgx_get_heap_size.html    |    7 +
 .../enclave/fn.rsgx_get_peak_heap_used.html        |    4 +
 .../fn.rsgx_get_peak_rsrv_mem_committed.html       |    4 +
 .../sgx_trts/enclave/fn.rsgx_get_rsrv_base.html    |    7 +
 .../sgx_trts/enclave/fn.rsgx_get_rsrv_offset.html  |    7 +
 .../sgx_trts/enclave/fn.rsgx_get_rsrv_size.html    |    7 +
 .../sgx_trts/enclave/fn.rsgx_get_tcs_max_num.html  |    7 +
 .../sgx_trts/enclave/fn.rsgx_get_tcs_num.html      |    4 +
 .../sgx_trts/enclave/fn.rsgx_get_thread_data.html  |    7 +
 .../enclave/fn.rsgx_get_thread_policy.html         |    7 +
 .../enclave/fn.rsgx_is_supported_EDMM.html         |    4 +
 api-docs/sgx-sdk/sgx_trts/enclave/index.html       |   23 +
 api-docs/sgx-sdk/sgx_trts/enclave/sidebar-items.js |    1 +
 .../sgx_trts/enclave/struct.SgxGlobalData.html     |   50 +
 .../sgx_trts/enclave/struct.SgxThreadData.html     |   41 +
 .../sgx_trts/enclave/struct.global_data_t.html     |   29 +
 .../sgx_trts/enclave/struct.thread_data_t.html     |   30 +
 api-docs/sgx-sdk/sgx_trts/error/fn.errno.html      |    5 +
 .../sgx-sdk/sgx_trts/error/fn.error_string.html    |    5 +
 api-docs/sgx-sdk/sgx_trts/error/fn.set_errno.html  |    5 +
 api-docs/sgx-sdk/sgx_trts/error/index.html         |    8 +
 api-docs/sgx-sdk/sgx_trts/error/sidebar-items.js   |    1 +
 api-docs/sgx-sdk/sgx_trts/index.html               |   40 +
 .../sgx_trts/macro.global_ctors_object!.html       |   10 +
 .../sgx_trts/macro.global_ctors_object.html        |   13 +
 .../sgx_trts/macro.global_dtors_object!.html       |   10 +
 .../sgx_trts/macro.global_dtors_object.html        |    8 +
 .../sgx_trts/macro.is_cpu_feature_supported!.html  |   10 +
 .../sgx_trts/macro.is_cpu_feature_supported.html   |    8 +
 .../sgx_trts/macro.is_x86_feature_detected!.html   |   10 +
 .../sgx_trts/macro.is_x86_feature_detected.html    |   65 +
 api-docs/sgx-sdk/sgx_trts/memchr/fn.memchr.html    |   10 +
 api-docs/sgx-sdk/sgx_trts/memchr/fn.memrchr.html   |    4 +
 api-docs/sgx-sdk/sgx_trts/memchr/index.html        |    6 +
 api-docs/sgx-sdk/sgx_trts/memchr/sidebar-items.js  |    1 +
 api-docs/sgx-sdk/sgx_trts/memeq/index.html         |    9 +
 api-docs/sgx-sdk/sgx_trts/memeq/sidebar-items.js   |    1 +
 .../sgx_trts/memeq/trait.ConsttimeMemEq.html       |    8 +
 api-docs/sgx-sdk/sgx_trts/oom/fn.rsgx_oom.html     |    4 +
 .../sgx-sdk/sgx_trts/oom/fn.set_oom_handler.html   |    7 +
 .../sgx-sdk/sgx_trts/oom/fn.take_oom_handler.html  |    5 +
 api-docs/sgx-sdk/sgx_trts/oom/index.html           |    7 +
 api-docs/sgx-sdk/sgx_trts/oom/sidebar-items.js     |    1 +
 api-docs/sgx-sdk/sgx_trts/sidebar-items.js         |    1 +
 api-docs/sgx-sdk/sgx_trts/trts/fn.rsgx_abort.html  |    4 +
 api-docs/sgx-sdk/sgx_trts/trts/fn.rsgx_atexit.html |    4 +
 .../trts/fn.rsgx_data_is_outside_enclave.html      |    5 +
 .../trts/fn.rsgx_data_is_within_enclave.html       |    5 +
 .../sgx_trts/trts/fn.rsgx_is_enclave_crashed.html  |    4 +
 api-docs/sgx-sdk/sgx_trts/trts/fn.rsgx_lfence.html |    4 +
 api-docs/sgx-sdk/sgx_trts/trts/fn.rsgx_mfence.html |    4 +
 .../trts/fn.rsgx_raw_is_outside_enclave.html       |   22 +
 .../trts/fn.rsgx_raw_is_within_enclave.html        |   24 +
 .../sgx-sdk/sgx_trts/trts/fn.rsgx_read_rand.html   |   21 +
 api-docs/sgx-sdk/sgx_trts/trts/fn.rsgx_sfence.html |    4 +
 .../trts/fn.rsgx_slice_is_outside_enclave.html     |    5 +
 .../trts/fn.rsgx_slice_is_within_enclave.html      |    5 +
 api-docs/sgx-sdk/sgx_trts/trts/index.html          |   13 +
 api-docs/sgx-sdk/sgx_trts/trts/sidebar-items.js    |    1 +
 .../sgx_trts/trts/type.exit_function_t.html        |    4 +
 .../veh/fn.rsgx_register_exception_handler.html    |   31 +
 .../veh/fn.rsgx_unregister_exception_handler.html  |   19 +
 api-docs/sgx-sdk/sgx_trts/veh/index.html           |    8 +
 api-docs/sgx-sdk/sgx_trts/veh/sidebar-items.js     |    1 +
 .../sgx_trts/veh/type.exception_handle.html        |    4 +
 api-docs/sgx-sdk/sgx_tse/all.html                  |    6 +
 .../sgx-sdk/sgx_tse/fn.rsgx_create_report.html     |   35 +
 .../sgx-sdk/sgx_tse/fn.rsgx_get_align_key.html     |    4 +
 api-docs/sgx-sdk/sgx_tse/fn.rsgx_get_key.html      |   35 +
 api-docs/sgx-sdk/sgx_tse/fn.rsgx_self_report.html  |    4 +
 .../sgx-sdk/sgx_tse/fn.rsgx_verify_report.html     |   23 +
 api-docs/sgx-sdk/sgx_tse/index.html                |   12 +
 .../sgx-sdk/sgx_tse/se/fn.rsgx_create_report.html  |   10 +
 .../sgx-sdk/sgx_tse/se/fn.rsgx_get_align_key.html  |   10 +
 api-docs/sgx-sdk/sgx_tse/se/fn.rsgx_get_key.html   |   10 +
 .../sgx-sdk/sgx_tse/se/fn.rsgx_self_report.html    |   10 +
 .../sgx-sdk/sgx_tse/se/fn.rsgx_verify_report.html  |   10 +
 api-docs/sgx-sdk/sgx_tse/sidebar-items.js          |    1 +
 api-docs/sgx-sdk/sgx_tstd/all.html                 |    6 +
 api-docs/sgx-sdk/sgx_tstd/alloc/fn.alloc.html      |   25 +
 .../sgx-sdk/sgx_tstd/alloc/fn.alloc_zeroed.html    |   24 +
 api-docs/sgx-sdk/sgx_tstd/alloc/fn.dealloc.html    |   12 +
 .../sgx_tstd/alloc/fn.handle_alloc_error.html      |   11 +
 api-docs/sgx-sdk/sgx_tstd/alloc/fn.realloc.html    |   12 +
 .../sgx_tstd/alloc/fn.set_alloc_error_hook.html    |   12 +
 .../sgx_tstd/alloc/fn.take_alloc_error_hook.html   |    7 +
 api-docs/sgx-sdk/sgx_tstd/alloc/index.html         |   30 +
 api-docs/sgx-sdk/sgx_tstd/alloc/sidebar-items.js   |    1 +
 .../sgx-sdk/sgx_tstd/alloc/struct.AllocError.html  |   31 +
 api-docs/sgx-sdk/sgx_tstd/alloc/struct.Global.html |   35 +
 api-docs/sgx-sdk/sgx_tstd/alloc/struct.Layout.html |  169 +
 .../sgx-sdk/sgx_tstd/alloc/struct.LayoutErr.html   |   31 +
 api-docs/sgx-sdk/sgx_tstd/alloc/struct.System.html |   27 +
 .../sgx-sdk/sgx_tstd/alloc/trait.AllocRef.html     |  171 +
 .../sgx-sdk/sgx_tstd/alloc/trait.GlobalAlloc.html  |  155 +
 api-docs/sgx-sdk/sgx_tstd/any/fn.type_name.html    |   24 +
 .../sgx-sdk/sgx_tstd/any/fn.type_name_of_val.html  |   32 +
 api-docs/sgx-sdk/sgx_tstd/any/index.html           |   66 +
 api-docs/sgx-sdk/sgx_tstd/any/sidebar-items.js     |    1 +
 api-docs/sgx-sdk/sgx_tstd/any/struct.TypeId.html   |   57 +
 api-docs/sgx-sdk/sgx_tstd/any/trait.Any.html       |  172 +
 api-docs/sgx-sdk/sgx_tstd/array/fn.from_mut.html   |    5 +
 api-docs/sgx-sdk/sgx_tstd/array/fn.from_ref.html   |    5 +
 api-docs/sgx-sdk/sgx_tstd/array/index.html         |   16 +
 api-docs/sgx-sdk/sgx_tstd/array/sidebar-items.js   |    1 +
 .../sgx-sdk/sgx_tstd/array/struct.IntoIter.html    |  151 +
 .../sgx_tstd/array/struct.TryFromSliceError.html   |   26 +
 .../sgx_tstd/array/trait.FixedSizeArray.html       |   19 +
 .../sgx-sdk/sgx_tstd/ascii/fn.escape_default.html  |   63 +
 api-docs/sgx-sdk/sgx_tstd/ascii/index.html         |   10 +
 api-docs/sgx-sdk/sgx_tstd/ascii/sidebar-items.js   |    1 +
 .../sgx_tstd/ascii/struct.EscapeDefault.html       |  150 +
 .../sgx-sdk/sgx_tstd/ascii/trait.AsciiExt.html     |   60 +
 api-docs/sgx-sdk/sgx_tstd/borrow/enum.Cow.html     |  491 ++
 api-docs/sgx-sdk/sgx_tstd/borrow/index.html        |   11 +
 api-docs/sgx-sdk/sgx_tstd/borrow/sidebar-items.js  |    1 +
 api-docs/sgx-sdk/sgx_tstd/borrow/trait.Borrow.html |  138 +
 .../sgx-sdk/sgx_tstd/borrow/trait.BorrowMut.html   |   22 +
 .../sgx-sdk/sgx_tstd/borrow/trait.ToOwned.html     |   45 +
 api-docs/sgx-sdk/sgx_tstd/boxed/index.html         |  100 +
 api-docs/sgx-sdk/sgx_tstd/boxed/sidebar-items.js   |    1 +
 api-docs/sgx-sdk/sgx_tstd/boxed/struct.Box.html    |  626 ++
 api-docs/sgx-sdk/sgx_tstd/cell/index.html          |  182 +
 api-docs/sgx-sdk/sgx_tstd/cell/sidebar-items.js    |    1 +
 .../sgx-sdk/sgx_tstd/cell/struct.BorrowError.html  |   19 +
 .../sgx_tstd/cell/struct.BorrowMutError.html       |   19 +
 api-docs/sgx-sdk/sgx_tstd/cell/struct.Cell.html    |  177 +
 api-docs/sgx-sdk/sgx_tstd/cell/struct.Ref.html     |   74 +
 api-docs/sgx-sdk/sgx_tstd/cell/struct.RefCell.html |  253 +
 api-docs/sgx-sdk/sgx_tstd/cell/struct.RefMut.html  |   75 +
 .../sgx-sdk/sgx_tstd/cell/struct.UnsafeCell.html   |  183 +
 api-docs/sgx-sdk/sgx_tstd/char/constant.MAX.html   |    8 +
 .../char/constant.REPLACEMENT_CHARACTER.html       |    8 +
 .../sgx_tstd/char/constant.UNICODE_VERSION.html    |   12 +
 .../sgx-sdk/sgx_tstd/char/fn.decode_utf16.html     |   45 +
 api-docs/sgx-sdk/sgx_tstd/char/fn.from_digit.html  |   42 +
 api-docs/sgx-sdk/sgx_tstd/char/fn.from_u32.html    |   35 +
 .../sgx_tstd/char/fn.from_u32_unchecked.html       |   28 +
 api-docs/sgx-sdk/sgx_tstd/char/index.html          |   38 +
 api-docs/sgx-sdk/sgx_tstd/char/sidebar-items.js    |    1 +
 .../sgx_tstd/char/struct.CharTryFromError.html     |   28 +
 .../sgx-sdk/sgx_tstd/char/struct.DecodeUtf16.html  |  135 +
 .../sgx_tstd/char/struct.DecodeUtf16Error.html     |   29 +
 .../sgx-sdk/sgx_tstd/char/struct.EscapeDebug.html  |  141 +
 .../sgx_tstd/char/struct.EscapeDefault.html        |  141 +
 .../sgx_tstd/char/struct.EscapeUnicode.html        |  142 +
 .../sgx_tstd/char/struct.ParseCharError.html       |   28 +
 .../sgx-sdk/sgx_tstd/char/struct.ToLowercase.html  |  141 +
 .../sgx-sdk/sgx_tstd/char/struct.ToUppercase.html  |  141 +
 api-docs/sgx-sdk/sgx_tstd/clone/index.html         |   36 +
 api-docs/sgx-sdk/sgx_tstd/clone/macro.Clone!.html  |   10 +
 api-docs/sgx-sdk/sgx_tstd/clone/macro.Clone.html   |    9 +
 api-docs/sgx-sdk/sgx_tstd/clone/sidebar-items.js   |    1 +
 api-docs/sgx-sdk/sgx_tstd/clone/trait.Clone.html   |  136 +
 api-docs/sgx-sdk/sgx_tstd/cmp/enum.Ordering.html   |  130 +
 api-docs/sgx-sdk/sgx_tstd/cmp/fn.max.html          |   13 +
 api-docs/sgx-sdk/sgx_tstd/cmp/fn.max_by.html       |   14 +
 api-docs/sgx-sdk/sgx_tstd/cmp/fn.max_by_key.html   |   14 +
 api-docs/sgx-sdk/sgx_tstd/cmp/fn.min.html          |   13 +
 api-docs/sgx-sdk/sgx_tstd/cmp/fn.min_by.html       |   14 +
 api-docs/sgx-sdk/sgx_tstd/cmp/fn.min_by_key.html   |   14 +
 api-docs/sgx-sdk/sgx_tstd/cmp/index.html           |   43 +
 api-docs/sgx-sdk/sgx_tstd/cmp/macro.Eq!.html       |   10 +
 api-docs/sgx-sdk/sgx_tstd/cmp/macro.Eq.html        |    9 +
 api-docs/sgx-sdk/sgx_tstd/cmp/macro.Ord!.html      |   10 +
 api-docs/sgx-sdk/sgx_tstd/cmp/macro.Ord.html       |    9 +
 .../sgx-sdk/sgx_tstd/cmp/macro.PartialEq!.html     |   10 +
 api-docs/sgx-sdk/sgx_tstd/cmp/macro.PartialEq.html |    9 +
 .../sgx-sdk/sgx_tstd/cmp/macro.PartialOrd!.html    |   10 +
 .../sgx-sdk/sgx_tstd/cmp/macro.PartialOrd.html     |    9 +
 api-docs/sgx-sdk/sgx_tstd/cmp/sidebar-items.js     |    1 +
 api-docs/sgx-sdk/sgx_tstd/cmp/struct.Reverse.html  |   47 +
 api-docs/sgx-sdk/sgx_tstd/cmp/trait.Eq.html        |   36 +
 api-docs/sgx-sdk/sgx_tstd/cmp/trait.Ord.html       |  124 +
 api-docs/sgx-sdk/sgx_tstd/cmp/trait.PartialEq.html |  203 +
 .../sgx-sdk/sgx_tstd/cmp/trait.PartialOrd.html     |  254 +
 .../sgx_tstd/collections/binary_heap/index.html    |  145 +
 .../collections/binary_heap/sidebar-items.js       |    1 +
 .../collections/binary_heap/struct.BinaryHeap.html |  446 +
 .../collections/binary_heap/struct.Drain.html      |  142 +
 .../binary_heap/struct.DrainSorted.html            |  134 +
 .../collections/binary_heap/struct.IntoIter.html   |  150 +
 .../binary_heap/struct.IntoIterSorted.html         |  136 +
 .../collections/binary_heap/struct.Iter.html       |  148 +
 .../collections/binary_heap/struct.PeekMut.html    |   23 +
 .../sgx_tstd/collections/btree_map/enum.Entry.html |   92 +
 .../sgx_tstd/collections/btree_map/index.html      |   24 +
 .../collections/btree_map/sidebar-items.js         |    1 +
 .../collections/btree_map/struct.BTreeMap.html     |  635 ++
 .../collections/btree_map/struct.DrainFilter.html  |  130 +
 .../collections/btree_map/struct.IntoIter.html     |  143 +
 .../collections/btree_map/struct.IntoKeys.html     |  142 +
 .../collections/btree_map/struct.IntoValues.html   |  142 +
 .../collections/btree_map/struct.Iter.html         |  148 +
 .../collections/btree_map/struct.IterMut.html      |  142 +
 .../collections/btree_map/struct.Keys.html         |  148 +
 .../btree_map/struct.OccupiedEntry.html            |  115 +
 .../collections/btree_map/struct.Range.html        |  146 +
 .../collections/btree_map/struct.RangeMut.html     |  140 +
 .../collections/btree_map/struct.VacantEntry.html  |   48 +
 .../collections/btree_map/struct.Values.html       |  148 +
 .../collections/btree_map/struct.ValuesMut.html    |  142 +
 .../sgx_tstd/collections/btree_set/index.html      |   15 +
 .../collections/btree_set/sidebar-items.js         |    1 +
 .../collections/btree_set/struct.BTreeSet.html     |  529 ++
 .../collections/btree_set/struct.Difference.html   |  137 +
 .../collections/btree_set/struct.DrainFilter.html  |  130 +
 .../collections/btree_set/struct.Intersection.html |  137 +
 .../collections/btree_set/struct.IntoIter.html     |  142 +
 .../collections/btree_set/struct.Iter.html         |  148 +
 .../collections/btree_set/struct.Range.html        |  146 +
 .../btree_set/struct.SymmetricDifference.html      |  137 +
 .../collections/btree_set/struct.Union.html        |  137 +
 .../sgx-sdk/sgx_tstd/collections/enum.Bound.html   |   71 +
 .../sgx_tstd/collections/enum.TryReserveError.html |   45 +
 .../sgx_tstd/collections/hash/map/enum.Entry.html  |   10 +
 .../collections/hash/map/enum.RawEntryMut.html     |   10 +
 .../collections/hash/map/struct.DefaultHasher.html |   10 +
 .../collections/hash/map/struct.Drain.html         |   10 +
 .../collections/hash/map/struct.DrainFilter.html   |   10 +
 .../collections/hash/map/struct.HashMap.html       |   10 +
 .../collections/hash/map/struct.IntoIter.html      |   10 +
 .../collections/hash/map/struct.IntoKeys.html      |   10 +
 .../collections/hash/map/struct.IntoValues.html    |   10 +
 .../sgx_tstd/collections/hash/map/struct.Iter.html |   10 +
 .../collections/hash/map/struct.IterMut.html       |   10 +
 .../sgx_tstd/collections/hash/map/struct.Keys.html |   10 +
 .../collections/hash/map/struct.OccupiedEntry.html |   10 +
 .../collections/hash/map/struct.RandomState.html   |   10 +
 .../hash/map/struct.RawEntryBuilder.html           |   10 +
 .../hash/map/struct.RawEntryBuilderMut.html        |   10 +
 .../hash/map/struct.RawOccupiedEntryMut.html       |   10 +
 .../hash/map/struct.RawVacantEntryMut.html         |   10 +
 .../collections/hash/map/struct.VacantEntry.html   |   10 +
 .../collections/hash/map/struct.Values.html        |   10 +
 .../collections/hash/map/struct.ValuesMut.html     |   10 +
 .../collections/hash/set/struct.Difference.html    |   10 +
 .../collections/hash/set/struct.Drain.html         |   10 +
 .../collections/hash/set/struct.DrainFilter.html   |   10 +
 .../collections/hash/set/struct.HashSet.html       |   10 +
 .../collections/hash/set/struct.Intersection.html  |   10 +
 .../collections/hash/set/struct.IntoIter.html      |   10 +
 .../sgx_tstd/collections/hash/set/struct.Iter.html |   10 +
 .../hash/set/struct.SymmetricDifference.html       |   10 +
 .../collections/hash/set/struct.Union.html         |   10 +
 .../sgx_tstd/collections/hash_map/enum.Entry.html  |  105 +
 .../collections/hash_map/enum.RawEntryMut.html     |   73 +
 .../sgx_tstd/collections/hash_map/index.html       |   32 +
 .../sgx_tstd/collections/hash_map/sidebar-items.js |    1 +
 .../collections/hash_map/struct.DefaultHasher.html |   43 +
 .../collections/hash_map/struct.Drain.html         |  133 +
 .../collections/hash_map/struct.DrainFilter.html   |  130 +
 .../collections/hash_map/struct.HashMap.html       |  670 ++
 .../collections/hash_map/struct.IntoIter.html      |  133 +
 .../collections/hash_map/struct.IntoKeys.html      |  133 +
 .../collections/hash_map/struct.IntoValues.html    |  133 +
 .../sgx_tstd/collections/hash_map/struct.Iter.html |  139 +
 .../collections/hash_map/struct.IterMut.html       |  133 +
 .../sgx_tstd/collections/hash_map/struct.Keys.html |  139 +
 .../collections/hash_map/struct.OccupiedEntry.html |  157 +
 .../collections/hash_map/struct.RandomState.html   |   41 +
 .../hash_map/struct.RawEntryBuilder.html           |   19 +
 .../hash_map/struct.RawEntryBuilderMut.html        |   19 +
 .../hash_map/struct.RawOccupiedEntryMut.html       |   32 +
 .../hash_map/struct.RawVacantEntryMut.html         |   20 +
 .../collections/hash_map/struct.VacantEntry.html   |   48 +
 .../collections/hash_map/struct.Values.html        |  139 +
 .../collections/hash_map/struct.ValuesMut.html     |  133 +
 .../sgx_tstd/collections/hash_set/index.html       |   15 +
 .../sgx_tstd/collections/hash_set/sidebar-items.js |    1 +
 .../collections/hash_set/struct.Difference.html    |  137 +
 .../collections/hash_set/struct.Drain.html         |  133 +
 .../collections/hash_set/struct.DrainFilter.html   |  130 +
 .../collections/hash_set/struct.HashSet.html       |  638 ++
 .../collections/hash_set/struct.Intersection.html  |  137 +
 .../collections/hash_set/struct.IntoIter.html      |  133 +
 .../sgx_tstd/collections/hash_set/struct.Iter.html |  139 +
 .../hash_set/struct.SymmetricDifference.html       |  137 +
 .../collections/hash_set/struct.Union.html         |  137 +
 api-docs/sgx-sdk/sgx_tstd/collections/index.html   |  371 +
 .../sgx_tstd/collections/linked_list/index.html    |   18 +
 .../collections/linked_list/sidebar-items.js       |    1 +
 .../collections/linked_list/struct.Cursor.html     |   49 +
 .../collections/linked_list/struct.CursorMut.html  |   81 +
 .../linked_list/struct.DrainFilter.html            |  131 +
 .../collections/linked_list/struct.IntoIter.html   |  148 +
 .../collections/linked_list/struct.Iter.html       |  148 +
 .../collections/linked_list/struct.IterMut.html    |  151 +
 .../collections/linked_list/struct.LinkedList.html |  360 +
 .../sgx-sdk/sgx_tstd/collections/sidebar-items.js  |    1 +
 .../sgx_tstd/collections/struct.BTreeMap.html      |  635 ++
 .../sgx_tstd/collections/struct.BTreeSet.html      |  529 ++
 .../sgx_tstd/collections/struct.BinaryHeap.html    |  446 +
 .../sgx_tstd/collections/struct.HashMap.html       |  670 ++
 .../sgx_tstd/collections/struct.HashSet.html       |  638 ++
 .../sgx_tstd/collections/struct.LinkedList.html    |  360 +
 .../sgx_tstd/collections/struct.VecDeque.html      |  914 ++
 .../sgx_tstd/collections/vec_deque/index.html      |   15 +
 .../collections/vec_deque/sidebar-items.js         |    1 +
 .../collections/vec_deque/struct.Drain.html        |  143 +
 .../collections/vec_deque/struct.IntoIter.html     |  148 +
 .../collections/vec_deque/struct.Iter.html         |  148 +
 .../collections/vec_deque/struct.IterMut.html      |  142 +
 .../collections/vec_deque/struct.VecDeque.html     |  914 ++
 .../sgx-sdk/sgx_tstd/convert/enum.Infallible.html  |   77 +
 api-docs/sgx-sdk/sgx_tstd/convert/fn.identity.html |   48 +
 api-docs/sgx-sdk/sgx_tstd/convert/index.html       |   51 +
 api-docs/sgx-sdk/sgx_tstd/convert/sidebar-items.js |    1 +
 api-docs/sgx-sdk/sgx_tstd/convert/trait.AsMut.html |   34 +
 api-docs/sgx-sdk/sgx_tstd/convert/trait.AsRef.html |   44 +
 .../sgx-sdk/sgx_tstd/convert/trait.FloatToInt.html |    6 +
 api-docs/sgx-sdk/sgx_tstd/convert/trait.From.html  |  498 ++
 api-docs/sgx-sdk/sgx_tstd/convert/trait.Into.html  |   60 +
 .../sgx-sdk/sgx_tstd/convert/trait.TryFrom.html    |  493 ++
 .../sgx-sdk/sgx_tstd/convert/trait.TryInto.html    |   20 +
 api-docs/sgx-sdk/sgx_tstd/cpuid/fn.rsgx_cpuid.html |   10 +
 .../sgx-sdk/sgx_tstd/cpuid/fn.rsgx_cpuidex.html    |   10 +
 .../sgx-sdk/sgx_tstd/debug/fn.__assert_fail.html   |    4 +
 api-docs/sgx-sdk/sgx_tstd/debug/index.html         |    5 +
 api-docs/sgx-sdk/sgx_tstd/debug/sidebar-items.js   |    1 +
 api-docs/sgx-sdk/sgx_tstd/default/fn.default.html  |   40 +
 api-docs/sgx-sdk/sgx_tstd/default/index.html       |   11 +
 .../sgx-sdk/sgx_tstd/default/macro.Default!.html   |   10 +
 .../sgx-sdk/sgx_tstd/default/macro.Default.html    |    9 +
 api-docs/sgx-sdk/sgx_tstd/default/sidebar-items.js |    1 +
 .../sgx-sdk/sgx_tstd/default/trait.Default.html    |  166 +
 .../sgx_tstd/enclave/enum.SgxThreadPolicy.html     |   28 +
 .../sgx_tstd/enclave/fn.get_enclave_base.html      |    5 +
 .../sgx_tstd/enclave/fn.get_enclave_id.html        |    5 +
 .../sgx_tstd/enclave/fn.get_enclave_path.html      |    5 +
 .../sgx_tstd/enclave/fn.get_enclave_size.html      |    5 +
 .../sgx-sdk/sgx_tstd/enclave/fn.get_heap_base.html |    5 +
 .../sgx-sdk/sgx_tstd/enclave/fn.get_heap_size.html |    5 +
 .../sgx-sdk/sgx_tstd/enclave/fn.get_rsrv_base.html |    5 +
 .../sgx-sdk/sgx_tstd/enclave/fn.get_rsrv_size.html |    5 +
 .../sgx_tstd/enclave/fn.get_tcs_max_num.html       |    5 +
 .../sgx_tstd/enclave/fn.get_thread_policy.html     |    5 +
 .../sgx_tstd/enclave/fn.set_enclave_id.html        |    5 +
 .../sgx_tstd/enclave/fn.set_enclave_path.html      |    5 +
 api-docs/sgx-sdk/sgx_tstd/enclave/index.html       |   18 +
 api-docs/sgx-sdk/sgx_tstd/enclave/sidebar-items.js |    1 +
 .../sgx-sdk/sgx_tstd/env/consts/constant.ARCH.html |   20 +
 .../env/consts/constant.DLL_EXTENSION.html         |   12 +
 .../sgx_tstd/env/consts/constant.DLL_PREFIX.html   |   11 +
 .../sgx_tstd/env/consts/constant.DLL_SUFFIX.html   |   12 +
 .../env/consts/constant.EXE_EXTENSION.html         |   11 +
 .../sgx_tstd/env/consts/constant.EXE_SUFFIX.html   |   13 +
 .../sgx_tstd/env/consts/constant.FAMILY.html       |   10 +
 .../sgx-sdk/sgx_tstd/env/consts/constant.OS.html   |   19 +
 api-docs/sgx-sdk/sgx_tstd/env/consts/index.html    |   21 +
 .../sgx-sdk/sgx_tstd/env/consts/sidebar-items.js   |    1 +
 api-docs/sgx-sdk/sgx_tstd/env/enum.VarError.html   |   39 +
 api-docs/sgx-sdk/sgx_tstd/env/fn.current_dir.html  |   12 +
 api-docs/sgx-sdk/sgx_tstd/env/fn.current_exe.html  |   36 +
 api-docs/sgx-sdk/sgx_tstd/env/fn.home_dir.html     |   22 +
 api-docs/sgx-sdk/sgx_tstd/env/fn.join_paths.html   |   10 +
 api-docs/sgx-sdk/sgx_tstd/env/fn.remove_var.html   |   19 +
 .../sgx-sdk/sgx_tstd/env/fn.set_current_dir.html   |    6 +
 api-docs/sgx-sdk/sgx_tstd/env/fn.set_var.html      |   20 +
 api-docs/sgx-sdk/sgx_tstd/env/fn.split_paths.html  |    8 +
 api-docs/sgx-sdk/sgx_tstd/env/fn.temp_dir.html     |   16 +
 api-docs/sgx-sdk/sgx_tstd/env/fn.var.html          |   14 +
 api-docs/sgx-sdk/sgx_tstd/env/fn.var_os.html       |   10 +
 api-docs/sgx-sdk/sgx_tstd/env/fn.vars.html         |   13 +
 api-docs/sgx-sdk/sgx_tstd/env/fn.vars_os.html      |    9 +
 api-docs/sgx-sdk/sgx_tstd/env/index.html           |   37 +
 api-docs/sgx-sdk/sgx_tstd/env/sidebar-items.js     |    1 +
 .../sgx_tstd/env/struct.JoinPathsError.html        |   20 +
 .../sgx-sdk/sgx_tstd/env/struct.SplitPaths.html    |  133 +
 api-docs/sgx-sdk/sgx_tstd/env/struct.Vars.html     |  131 +
 api-docs/sgx-sdk/sgx_tstd/env/struct.VarsOs.html   |  131 +
 api-docs/sgx-sdk/sgx_tstd/error/index.html         |   12 +
 api-docs/sgx-sdk/sgx_tstd/error/sidebar-items.js   |    1 +
 api-docs/sgx-sdk/sgx_tstd/error/struct.Chain.html  |  137 +
 .../sgx-sdk/sgx_tstd/error/struct.ErrorIter.html   |  135 +
 api-docs/sgx-sdk/sgx_tstd/error/trait.Error.html   |   50 +
 api-docs/sgx-sdk/sgx_tstd/f32/constant.DIGITS.html |   13 +
 .../sgx-sdk/sgx_tstd/f32/constant.EPSILON.html     |   14 +
 .../sgx-sdk/sgx_tstd/f32/constant.INFINITY.html    |   13 +
 .../sgx_tstd/f32/constant.MANTISSA_DIGITS.html     |   13 +
 api-docs/sgx-sdk/sgx_tstd/f32/constant.MAX.html    |   13 +
 .../sgx-sdk/sgx_tstd/f32/constant.MAX_10_EXP.html  |   13 +
 .../sgx-sdk/sgx_tstd/f32/constant.MAX_EXP.html     |   13 +
 api-docs/sgx-sdk/sgx_tstd/f32/constant.MIN.html    |   13 +
 .../sgx-sdk/sgx_tstd/f32/constant.MIN_10_EXP.html  |   13 +
 .../sgx-sdk/sgx_tstd/f32/constant.MIN_EXP.html     |   13 +
 .../sgx_tstd/f32/constant.MIN_POSITIVE.html        |   13 +
 api-docs/sgx-sdk/sgx_tstd/f32/constant.NAN.html    |   13 +
 .../sgx_tstd/f32/constant.NEG_INFINITY.html        |   13 +
 api-docs/sgx-sdk/sgx_tstd/f32/constant.RADIX.html  |   13 +
 .../sgx-sdk/sgx_tstd/f32/consts/constant.E.html    |    5 +
 .../sgx_tstd/f32/consts/constant.FRAC_1_PI.html    |    5 +
 .../f32/consts/constant.FRAC_1_SQRT_2.html         |    5 +
 .../sgx_tstd/f32/consts/constant.FRAC_2_PI.html    |    5 +
 .../f32/consts/constant.FRAC_2_SQRT_PI.html        |    5 +
 .../sgx_tstd/f32/consts/constant.FRAC_PI_2.html    |    5 +
 .../sgx_tstd/f32/consts/constant.FRAC_PI_3.html    |    5 +
 .../sgx_tstd/f32/consts/constant.FRAC_PI_4.html    |    5 +
 .../sgx_tstd/f32/consts/constant.FRAC_PI_6.html    |    5 +
 .../sgx_tstd/f32/consts/constant.FRAC_PI_8.html    |    5 +
 .../sgx_tstd/f32/consts/constant.LN_10.html        |    5 +
 .../sgx-sdk/sgx_tstd/f32/consts/constant.LN_2.html |    5 +
 .../sgx_tstd/f32/consts/constant.LOG10_2.html      |    5 +
 .../sgx_tstd/f32/consts/constant.LOG10_E.html      |    5 +
 .../sgx_tstd/f32/consts/constant.LOG2_10.html      |    5 +
 .../sgx_tstd/f32/consts/constant.LOG2_E.html       |    5 +
 .../sgx-sdk/sgx_tstd/f32/consts/constant.PI.html   |    5 +
 .../sgx_tstd/f32/consts/constant.SQRT_2.html       |    5 +
 .../sgx-sdk/sgx_tstd/f32/consts/constant.TAU.html  |    6 +
 api-docs/sgx-sdk/sgx_tstd/f32/consts/index.html    |   25 +
 .../sgx-sdk/sgx_tstd/f32/consts/sidebar-items.js   |    1 +
 api-docs/sgx-sdk/sgx_tstd/f32/index.html           |   41 +
 api-docs/sgx-sdk/sgx_tstd/f32/sidebar-items.js     |    1 +
 api-docs/sgx-sdk/sgx_tstd/f64/constant.DIGITS.html |   13 +
 .../sgx-sdk/sgx_tstd/f64/constant.EPSILON.html     |   14 +
 .../sgx-sdk/sgx_tstd/f64/constant.INFINITY.html    |   13 +
 .../sgx_tstd/f64/constant.MANTISSA_DIGITS.html     |   13 +
 api-docs/sgx-sdk/sgx_tstd/f64/constant.MAX.html    |   13 +
 .../sgx-sdk/sgx_tstd/f64/constant.MAX_10_EXP.html  |   13 +
 .../sgx-sdk/sgx_tstd/f64/constant.MAX_EXP.html     |   13 +
 api-docs/sgx-sdk/sgx_tstd/f64/constant.MIN.html    |   13 +
 .../sgx-sdk/sgx_tstd/f64/constant.MIN_10_EXP.html  |   13 +
 .../sgx-sdk/sgx_tstd/f64/constant.MIN_EXP.html     |   13 +
 .../sgx_tstd/f64/constant.MIN_POSITIVE.html        |   13 +
 api-docs/sgx-sdk/sgx_tstd/f64/constant.NAN.html    |   13 +
 .../sgx_tstd/f64/constant.NEG_INFINITY.html        |   13 +
 api-docs/sgx-sdk/sgx_tstd/f64/constant.RADIX.html  |   13 +
 .../sgx-sdk/sgx_tstd/f64/consts/constant.E.html    |    5 +
 .../sgx_tstd/f64/consts/constant.FRAC_1_PI.html    |    5 +
 .../f64/consts/constant.FRAC_1_SQRT_2.html         |    5 +
 .../sgx_tstd/f64/consts/constant.FRAC_2_PI.html    |    5 +
 .../f64/consts/constant.FRAC_2_SQRT_PI.html        |    5 +
 .../sgx_tstd/f64/consts/constant.FRAC_PI_2.html    |    5 +
 .../sgx_tstd/f64/consts/constant.FRAC_PI_3.html    |    5 +
 .../sgx_tstd/f64/consts/constant.FRAC_PI_4.html    |    5 +
 .../sgx_tstd/f64/consts/constant.FRAC_PI_6.html    |    5 +
 .../sgx_tstd/f64/consts/constant.FRAC_PI_8.html    |    5 +
 .../sgx_tstd/f64/consts/constant.LN_10.html        |    5 +
 .../sgx-sdk/sgx_tstd/f64/consts/constant.LN_2.html |    5 +
 .../sgx_tstd/f64/consts/constant.LOG10_2.html      |    5 +
 .../sgx_tstd/f64/consts/constant.LOG10_E.html      |    5 +
 .../sgx_tstd/f64/consts/constant.LOG2_10.html      |    5 +
 .../sgx_tstd/f64/consts/constant.LOG2_E.html       |    5 +
 .../sgx-sdk/sgx_tstd/f64/consts/constant.PI.html   |    5 +
 .../sgx_tstd/f64/consts/constant.SQRT_2.html       |    5 +
 .../sgx-sdk/sgx_tstd/f64/consts/constant.TAU.html  |    6 +
 api-docs/sgx-sdk/sgx_tstd/f64/consts/index.html    |   25 +
 .../sgx-sdk/sgx_tstd/f64/consts/sidebar-items.js   |    1 +
 api-docs/sgx-sdk/sgx_tstd/f64/index.html           |   41 +
 api-docs/sgx-sdk/sgx_tstd/f64/sidebar-items.js     |    1 +
 .../sgx-sdk/sgx_tstd/ffi/c_str/struct.CStr.html    |   10 +
 .../sgx-sdk/sgx_tstd/ffi/c_str/struct.CString.html |   10 +
 .../ffi/c_str/struct.FromBytesWithNulError.html    |   10 +
 .../sgx_tstd/ffi/c_str/struct.IntoStringError.html |   10 +
 .../sgx_tstd/ffi/c_str/struct.NulError.html        |   10 +
 api-docs/sgx-sdk/sgx_tstd/ffi/enum.c_void.html     |   26 +
 api-docs/sgx-sdk/sgx_tstd/ffi/index.html           |  141 +
 .../sgx-sdk/sgx_tstd/ffi/os_str/struct.OsStr.html  |   10 +
 .../sgx_tstd/ffi/os_str/struct.OsString.html       |   10 +
 api-docs/sgx-sdk/sgx_tstd/ffi/sidebar-items.js     |    1 +
 api-docs/sgx-sdk/sgx_tstd/ffi/struct.CStr.html     |  114 +
 api-docs/sgx-sdk/sgx_tstd/ffi/struct.CString.html  |  136 +
 .../sgx_tstd/ffi/struct.FromBytesWithNulError.html |   33 +
 .../sgx_tstd/ffi/struct.IntoStringError.html       |   37 +
 api-docs/sgx-sdk/sgx_tstd/ffi/struct.NulError.html |   37 +
 api-docs/sgx-sdk/sgx_tstd/ffi/struct.OsStr.html    |  333 +
 api-docs/sgx-sdk/sgx_tstd/ffi/struct.OsString.html |  294 +
 api-docs/sgx-sdk/sgx_tstd/ffi/struct.VaList.html   |   25 +
 .../sgx-sdk/sgx_tstd/ffi/struct.VaListImpl.html    |   30 +
 api-docs/sgx-sdk/sgx_tstd/fmt/enum.Alignment.html  |   24 +
 api-docs/sgx-sdk/sgx_tstd/fmt/fn.format.html       |   21 +
 api-docs/sgx-sdk/sgx_tstd/fmt/fn.write.html        |   27 +
 api-docs/sgx-sdk/sgx_tstd/fmt/index.html           |  451 +
 api-docs/sgx-sdk/sgx_tstd/fmt/macro.Debug!.html    |   10 +
 api-docs/sgx-sdk/sgx_tstd/fmt/macro.Debug.html     |    9 +
 api-docs/sgx-sdk/sgx_tstd/fmt/sidebar-items.js     |    1 +
 .../sgx-sdk/sgx_tstd/fmt/struct.Arguments.html     |   63 +
 .../sgx-sdk/sgx_tstd/fmt/struct.DebugList.html     |   94 +
 api-docs/sgx-sdk/sgx_tstd/fmt/struct.DebugMap.html |  147 +
 api-docs/sgx-sdk/sgx_tstd/fmt/struct.DebugSet.html |   94 +
 .../sgx-sdk/sgx_tstd/fmt/struct.DebugStruct.html   |  113 +
 .../sgx-sdk/sgx_tstd/fmt/struct.DebugTuple.html    |   79 +
 api-docs/sgx-sdk/sgx_tstd/fmt/struct.Error.html    |   56 +
 .../sgx-sdk/sgx_tstd/fmt/struct.Formatter.html     |  429 +
 api-docs/sgx-sdk/sgx_tstd/fmt/trait.Binary.html    |   46 +
 api-docs/sgx-sdk/sgx_tstd/fmt/trait.Debug.html     |  102 +
 api-docs/sgx-sdk/sgx_tstd/fmt/trait.Display.html   |   48 +
 api-docs/sgx-sdk/sgx_tstd/fmt/trait.LowerExp.html  |   42 +
 api-docs/sgx-sdk/sgx_tstd/fmt/trait.LowerHex.html  |   44 +
 api-docs/sgx-sdk/sgx_tstd/fmt/trait.Octal.html     |   43 +
 api-docs/sgx-sdk/sgx_tstd/fmt/trait.Pointer.html   |   41 +
 api-docs/sgx-sdk/sgx_tstd/fmt/trait.UpperExp.html  |   42 +
 api-docs/sgx-sdk/sgx_tstd/fmt/trait.UpperHex.html  |   44 +
 api-docs/sgx-sdk/sgx_tstd/fmt/trait.Write.html     |   64 +
 api-docs/sgx-sdk/sgx_tstd/fmt/type.Result.html     |   25 +
 api-docs/sgx-sdk/sgx_tstd/fn.rsgx_cpuid.html       |   35 +
 api-docs/sgx-sdk/sgx_tstd/fn.rsgx_cpuidex.html     |   37 +
 api-docs/sgx-sdk/sgx_tstd/fs/fn.canonicalize.html  |   10 +
 api-docs/sgx-sdk/sgx_tstd/fs/fn.copy.html          |   10 +
 api-docs/sgx-sdk/sgx_tstd/fs/fn.create_dir.html    |   10 +
 .../sgx-sdk/sgx_tstd/fs/fn.create_dir_all.html     |   10 +
 api-docs/sgx-sdk/sgx_tstd/fs/fn.hard_link.html     |   10 +
 api-docs/sgx-sdk/sgx_tstd/fs/fn.metadata.html      |   10 +
 api-docs/sgx-sdk/sgx_tstd/fs/fn.read.html          |   10 +
 api-docs/sgx-sdk/sgx_tstd/fs/fn.read_dir.html      |   10 +
 api-docs/sgx-sdk/sgx_tstd/fs/fn.read_link.html     |   10 +
 .../sgx-sdk/sgx_tstd/fs/fn.read_to_string.html     |   10 +
 api-docs/sgx-sdk/sgx_tstd/fs/fn.remove_dir.html    |   10 +
 .../sgx-sdk/sgx_tstd/fs/fn.remove_dir_all.html     |   10 +
 api-docs/sgx-sdk/sgx_tstd/fs/fn.remove_file.html   |   10 +
 api-docs/sgx-sdk/sgx_tstd/fs/fn.rename.html        |   10 +
 .../sgx-sdk/sgx_tstd/fs/fn.set_permissions.html    |   10 +
 api-docs/sgx-sdk/sgx_tstd/fs/fn.soft_link.html     |   10 +
 .../sgx-sdk/sgx_tstd/fs/fn.symlink_metadata.html   |   10 +
 api-docs/sgx-sdk/sgx_tstd/fs/fn.write.html         |   10 +
 .../sgx-sdk/sgx_tstd/fs/struct.DirBuilder.html     |   10 +
 api-docs/sgx-sdk/sgx_tstd/fs/struct.DirEntry.html  |   10 +
 api-docs/sgx-sdk/sgx_tstd/fs/struct.File.html      |   10 +
 api-docs/sgx-sdk/sgx_tstd/fs/struct.FileType.html  |   10 +
 api-docs/sgx-sdk/sgx_tstd/fs/struct.Metadata.html  |   10 +
 .../sgx-sdk/sgx_tstd/fs/struct.OpenOptions.html    |   10 +
 .../sgx-sdk/sgx_tstd/fs/struct.Permissions.html    |   10 +
 api-docs/sgx-sdk/sgx_tstd/fs/struct.ReadDir.html   |   10 +
 api-docs/sgx-sdk/sgx_tstd/future/fn.pending.html   |   13 +
 api-docs/sgx-sdk/sgx_tstd/future/fn.poll_fn.html   |   18 +
 api-docs/sgx-sdk/sgx_tstd/future/fn.ready.html     |   14 +
 api-docs/sgx-sdk/sgx_tstd/future/index.html        |   18 +
 api-docs/sgx-sdk/sgx_tstd/future/sidebar-items.js  |    1 +
 .../sgx-sdk/sgx_tstd/future/struct.Pending.html    |   30 +
 .../sgx-sdk/sgx_tstd/future/struct.PollFn.html     |   23 +
 api-docs/sgx-sdk/sgx_tstd/future/struct.Ready.html |   29 +
 api-docs/sgx-sdk/sgx_tstd/future/trait.Future.html |   68 +
 .../sgx-sdk/sgx_tstd/future/trait.IntoFuture.html  |   12 +
 api-docs/sgx-sdk/sgx_tstd/hash/index.html          |   85 +
 api-docs/sgx-sdk/sgx_tstd/hash/macro.Hash!.html    |   10 +
 api-docs/sgx-sdk/sgx_tstd/hash/macro.Hash.html     |    9 +
 api-docs/sgx-sdk/sgx_tstd/hash/sidebar-items.js    |    1 +
 .../sgx_tstd/hash/struct.BuildHasherDefault.html   |   61 +
 .../sgx-sdk/sgx_tstd/hash/struct.SipHasher.html    |   49 +
 .../sgx-sdk/sgx_tstd/hash/trait.BuildHasher.html   |   38 +
 api-docs/sgx-sdk/sgx_tstd/hash/trait.Hash.html     |   69 +
 api-docs/sgx-sdk/sgx_tstd/hash/trait.Hasher.html   |   78 +
 api-docs/sgx-sdk/sgx_tstd/hint/fn.black_box.html   |   13 +
 api-docs/sgx-sdk/sgx_tstd/hint/fn.spin_loop.html   |   10 +
 .../sgx_tstd/hint/fn.unreachable_unchecked.html    |   34 +
 api-docs/sgx-sdk/sgx_tstd/hint/index.html          |   12 +
 api-docs/sgx-sdk/sgx_tstd/hint/sidebar-items.js    |    1 +
 api-docs/sgx-sdk/sgx_tstd/i128/constant.MAX.html   |   13 +
 api-docs/sgx-sdk/sgx_tstd/i128/constant.MIN.html   |   13 +
 api-docs/sgx-sdk/sgx_tstd/i128/index.html          |   13 +
 api-docs/sgx-sdk/sgx_tstd/i128/sidebar-items.js    |    1 +
 api-docs/sgx-sdk/sgx_tstd/i16/constant.MAX.html    |   13 +
 api-docs/sgx-sdk/sgx_tstd/i16/constant.MIN.html    |   13 +
 api-docs/sgx-sdk/sgx_tstd/i16/index.html           |   13 +
 api-docs/sgx-sdk/sgx_tstd/i16/sidebar-items.js     |    1 +
 api-docs/sgx-sdk/sgx_tstd/i32/constant.MAX.html    |   13 +
 api-docs/sgx-sdk/sgx_tstd/i32/constant.MIN.html    |   13 +
 api-docs/sgx-sdk/sgx_tstd/i32/index.html           |   13 +
 api-docs/sgx-sdk/sgx_tstd/i32/sidebar-items.js     |    1 +
 api-docs/sgx-sdk/sgx_tstd/i64/constant.MAX.html    |   13 +
 api-docs/sgx-sdk/sgx_tstd/i64/constant.MIN.html    |   13 +
 api-docs/sgx-sdk/sgx_tstd/i64/index.html           |   13 +
 api-docs/sgx-sdk/sgx_tstd/i64/sidebar-items.js     |    1 +
 api-docs/sgx-sdk/sgx_tstd/i8/constant.MAX.html     |   13 +
 api-docs/sgx-sdk/sgx_tstd/i8/constant.MIN.html     |   13 +
 api-docs/sgx-sdk/sgx_tstd/i8/index.html            |   13 +
 api-docs/sgx-sdk/sgx_tstd/i8/sidebar-items.js      |    1 +
 api-docs/sgx-sdk/sgx_tstd/index.html               |  144 +
 api-docs/sgx-sdk/sgx_tstd/intrinsics/fn.abort.html |    8 +
 .../sgx_tstd/intrinsics/fn.add_with_overflow.html  |    9 +
 .../sgx_tstd/intrinsics/fn.arith_offset.html       |   15 +
 .../sgx_tstd/intrinsics/fn.assert_inhabited.html   |    8 +
 .../intrinsics/fn.assert_uninit_valid.html         |    8 +
 .../sgx_tstd/intrinsics/fn.assert_zero_valid.html  |    8 +
 .../sgx-sdk/sgx_tstd/intrinsics/fn.assume.html     |   13 +
 .../sgx-sdk/sgx_tstd/intrinsics/fn.atomic_and.html |    9 +
 .../sgx_tstd/intrinsics/fn.atomic_and_acq.html     |    9 +
 .../sgx_tstd/intrinsics/fn.atomic_and_acqrel.html  |    9 +
 .../sgx_tstd/intrinsics/fn.atomic_and_rel.html     |    9 +
 .../sgx_tstd/intrinsics/fn.atomic_and_relaxed.html |    9 +
 .../sgx_tstd/intrinsics/fn.atomic_cxchg.html       |   10 +
 .../sgx_tstd/intrinsics/fn.atomic_cxchg_acq.html   |   10 +
 .../fn.atomic_cxchg_acq_failrelaxed.html           |   10 +
 .../intrinsics/fn.atomic_cxchg_acqrel.html         |   10 +
 .../fn.atomic_cxchg_acqrel_failrelaxed.html        |   10 +
 .../intrinsics/fn.atomic_cxchg_failacq.html        |   10 +
 .../intrinsics/fn.atomic_cxchg_failrelaxed.html    |   10 +
 .../sgx_tstd/intrinsics/fn.atomic_cxchg_rel.html   |   10 +
 .../intrinsics/fn.atomic_cxchg_relaxed.html        |   10 +
 .../sgx_tstd/intrinsics/fn.atomic_cxchgweak.html   |   10 +
 .../intrinsics/fn.atomic_cxchgweak_acq.html        |   10 +
 .../fn.atomic_cxchgweak_acq_failrelaxed.html       |   10 +
 .../intrinsics/fn.atomic_cxchgweak_acqrel.html     |   10 +
 .../fn.atomic_cxchgweak_acqrel_failrelaxed.html    |   10 +
 .../intrinsics/fn.atomic_cxchgweak_failacq.html    |   10 +
 .../fn.atomic_cxchgweak_failrelaxed.html           |   10 +
 .../intrinsics/fn.atomic_cxchgweak_rel.html        |   10 +
 .../intrinsics/fn.atomic_cxchgweak_relaxed.html    |   10 +
 .../sgx_tstd/intrinsics/fn.atomic_fence.html       |    9 +
 .../sgx_tstd/intrinsics/fn.atomic_fence_acq.html   |    9 +
 .../intrinsics/fn.atomic_fence_acqrel.html         |    9 +
 .../sgx_tstd/intrinsics/fn.atomic_fence_rel.html   |    9 +
 .../sgx_tstd/intrinsics/fn.atomic_load.html        |    9 +
 .../sgx_tstd/intrinsics/fn.atomic_load_acq.html    |    9 +
 .../intrinsics/fn.atomic_load_relaxed.html         |    9 +
 .../intrinsics/fn.atomic_load_unordered.html       |    5 +
 .../sgx-sdk/sgx_tstd/intrinsics/fn.atomic_max.html |    9 +
 .../sgx_tstd/intrinsics/fn.atomic_max_acq.html     |    9 +
 .../sgx_tstd/intrinsics/fn.atomic_max_acqrel.html  |    9 +
 .../sgx_tstd/intrinsics/fn.atomic_max_rel.html     |    9 +
 .../sgx_tstd/intrinsics/fn.atomic_max_relaxed.html |    9 +
 .../sgx-sdk/sgx_tstd/intrinsics/fn.atomic_min.html |    9 +
 .../sgx_tstd/intrinsics/fn.atomic_min_acq.html     |    9 +
 .../sgx_tstd/intrinsics/fn.atomic_min_acqrel.html  |    9 +
 .../sgx_tstd/intrinsics/fn.atomic_min_rel.html     |    9 +
 .../sgx_tstd/intrinsics/fn.atomic_min_relaxed.html |    9 +
 .../sgx_tstd/intrinsics/fn.atomic_nand.html        |    9 +
 .../sgx_tstd/intrinsics/fn.atomic_nand_acq.html    |    9 +
 .../sgx_tstd/intrinsics/fn.atomic_nand_acqrel.html |    9 +
 .../sgx_tstd/intrinsics/fn.atomic_nand_rel.html    |    9 +
 .../intrinsics/fn.atomic_nand_relaxed.html         |    9 +
 .../sgx-sdk/sgx_tstd/intrinsics/fn.atomic_or.html  |    9 +
 .../sgx_tstd/intrinsics/fn.atomic_or_acq.html      |    9 +
 .../sgx_tstd/intrinsics/fn.atomic_or_acqrel.html   |    9 +
 .../sgx_tstd/intrinsics/fn.atomic_or_rel.html      |    9 +
 .../sgx_tstd/intrinsics/fn.atomic_or_relaxed.html  |    9 +
 .../intrinsics/fn.atomic_singlethreadfence.html    |   13 +
 .../fn.atomic_singlethreadfence_acq.html           |   13 +
 .../fn.atomic_singlethreadfence_acqrel.html        |   13 +
 .../fn.atomic_singlethreadfence_rel.html           |   13 +
 .../sgx_tstd/intrinsics/fn.atomic_store.html       |    9 +
 .../sgx_tstd/intrinsics/fn.atomic_store_rel.html   |    9 +
 .../intrinsics/fn.atomic_store_relaxed.html        |    9 +
 .../intrinsics/fn.atomic_store_unordered.html      |    5 +
 .../sgx_tstd/intrinsics/fn.atomic_umax.html        |    9 +
 .../sgx_tstd/intrinsics/fn.atomic_umax_acq.html    |    9 +
 .../sgx_tstd/intrinsics/fn.atomic_umax_acqrel.html |    9 +
 .../sgx_tstd/intrinsics/fn.atomic_umax_rel.html    |    9 +
 .../intrinsics/fn.atomic_umax_relaxed.html         |    9 +
 .../sgx_tstd/intrinsics/fn.atomic_umin.html        |    9 +
 .../sgx_tstd/intrinsics/fn.atomic_umin_acq.html    |    9 +
 .../sgx_tstd/intrinsics/fn.atomic_umin_acqrel.html |    9 +
 .../sgx_tstd/intrinsics/fn.atomic_umin_rel.html    |    9 +
 .../intrinsics/fn.atomic_umin_relaxed.html         |    9 +
 .../sgx_tstd/intrinsics/fn.atomic_xadd.html        |    9 +
 .../sgx_tstd/intrinsics/fn.atomic_xadd_acq.html    |    9 +
 .../sgx_tstd/intrinsics/fn.atomic_xadd_acqrel.html |    9 +
 .../sgx_tstd/intrinsics/fn.atomic_xadd_rel.html    |    9 +
 .../intrinsics/fn.atomic_xadd_relaxed.html         |    9 +
 .../sgx_tstd/intrinsics/fn.atomic_xchg.html        |    9 +
 .../sgx_tstd/intrinsics/fn.atomic_xchg_acq.html    |    9 +
 .../sgx_tstd/intrinsics/fn.atomic_xchg_acqrel.html |    9 +
 .../sgx_tstd/intrinsics/fn.atomic_xchg_rel.html    |    9 +
 .../intrinsics/fn.atomic_xchg_relaxed.html         |    9 +
 .../sgx-sdk/sgx_tstd/intrinsics/fn.atomic_xor.html |    9 +
 .../sgx_tstd/intrinsics/fn.atomic_xor_acq.html     |    9 +
 .../sgx_tstd/intrinsics/fn.atomic_xor_acqrel.html  |    9 +
 .../sgx_tstd/intrinsics/fn.atomic_xor_rel.html     |    9 +
 .../sgx_tstd/intrinsics/fn.atomic_xor_relaxed.html |    9 +
 .../sgx_tstd/intrinsics/fn.atomic_xsub.html        |    9 +
 .../sgx_tstd/intrinsics/fn.atomic_xsub_acq.html    |    9 +
 .../sgx_tstd/intrinsics/fn.atomic_xsub_acqrel.html |    9 +
 .../sgx_tstd/intrinsics/fn.atomic_xsub_rel.html    |    9 +
 .../intrinsics/fn.atomic_xsub_relaxed.html         |    9 +
 .../sgx-sdk/sgx_tstd/intrinsics/fn.bitreverse.html |    9 +
 .../sgx-sdk/sgx_tstd/intrinsics/fn.breakpoint.html |    7 +
 api-docs/sgx-sdk/sgx_tstd/intrinsics/fn.bswap.html |    9 +
 .../sgx_tstd/intrinsics/fn.caller_location.html    |    7 +
 .../sgx-sdk/sgx_tstd/intrinsics/fn.ceilf32.html    |    8 +
 .../sgx-sdk/sgx_tstd/intrinsics/fn.ceilf64.html    |    8 +
 api-docs/sgx-sdk/sgx_tstd/intrinsics/fn.copy.html  |   53 +
 .../intrinsics/fn.copy_nonoverlapping.html         |   73 +
 .../sgx_tstd/intrinsics/fn.copysignf32.html        |    8 +
 .../sgx_tstd/intrinsics/fn.copysignf64.html        |    8 +
 .../sgx-sdk/sgx_tstd/intrinsics/fn.cosf32.html     |    8 +
 .../sgx-sdk/sgx_tstd/intrinsics/fn.cosf64.html     |    8 +
 api-docs/sgx-sdk/sgx_tstd/intrinsics/fn.ctlz.html  |   28 +
 .../sgx_tstd/intrinsics/fn.ctlz_nonzero.html       |   17 +
 api-docs/sgx-sdk/sgx_tstd/intrinsics/fn.ctpop.html |    9 +
 api-docs/sgx-sdk/sgx_tstd/intrinsics/fn.cttz.html  |   28 +
 .../sgx_tstd/intrinsics/fn.cttz_nonzero.html       |   17 +
 .../sgx_tstd/intrinsics/fn.discriminant_value.html |    8 +
 .../sgx_tstd/intrinsics/fn.drop_in_place.html      |   77 +
 .../sgx-sdk/sgx_tstd/intrinsics/fn.exact_div.html  |    8 +
 .../sgx-sdk/sgx_tstd/intrinsics/fn.exp2f32.html    |    8 +
 .../sgx-sdk/sgx_tstd/intrinsics/fn.exp2f64.html    |    8 +
 .../sgx-sdk/sgx_tstd/intrinsics/fn.expf32.html     |    8 +
 .../sgx-sdk/sgx_tstd/intrinsics/fn.expf64.html     |    8 +
 .../sgx-sdk/sgx_tstd/intrinsics/fn.fabsf32.html    |    8 +
 .../sgx-sdk/sgx_tstd/intrinsics/fn.fabsf64.html    |    8 +
 .../sgx-sdk/sgx_tstd/intrinsics/fn.fadd_fast.html  |    8 +
 .../sgx-sdk/sgx_tstd/intrinsics/fn.fdiv_fast.html  |    8 +
 .../intrinsics/fn.float_to_int_unchecked.html      |    8 +
 .../sgx-sdk/sgx_tstd/intrinsics/fn.floorf32.html   |    8 +
 .../sgx-sdk/sgx_tstd/intrinsics/fn.floorf64.html   |    8 +
 .../sgx-sdk/sgx_tstd/intrinsics/fn.fmaf32.html     |    8 +
 .../sgx-sdk/sgx_tstd/intrinsics/fn.fmaf64.html     |    8 +
 .../sgx-sdk/sgx_tstd/intrinsics/fn.fmul_fast.html  |    8 +
 .../sgx-sdk/sgx_tstd/intrinsics/fn.forget.html     |    8 +
 .../sgx-sdk/sgx_tstd/intrinsics/fn.frem_fast.html  |    8 +
 .../sgx-sdk/sgx_tstd/intrinsics/fn.fsub_fast.html  |    8 +
 .../sgx-sdk/sgx_tstd/intrinsics/fn.likely.html     |    9 +
 .../sgx-sdk/sgx_tstd/intrinsics/fn.log10f32.html   |    8 +
 .../sgx-sdk/sgx_tstd/intrinsics/fn.log10f64.html   |    8 +
 .../sgx-sdk/sgx_tstd/intrinsics/fn.log2f32.html    |    8 +
 .../sgx-sdk/sgx_tstd/intrinsics/fn.log2f64.html    |    8 +
 .../sgx-sdk/sgx_tstd/intrinsics/fn.logf32.html     |    8 +
 .../sgx-sdk/sgx_tstd/intrinsics/fn.logf64.html     |    8 +
 .../sgx-sdk/sgx_tstd/intrinsics/fn.maxnumf32.html  |    8 +
 .../sgx-sdk/sgx_tstd/intrinsics/fn.maxnumf64.html  |    8 +
 .../sgx_tstd/intrinsics/fn.min_align_of.html       |    7 +
 .../sgx_tstd/intrinsics/fn.min_align_of_val.html   |    7 +
 .../sgx-sdk/sgx_tstd/intrinsics/fn.minnumf32.html  |    8 +
 .../sgx-sdk/sgx_tstd/intrinsics/fn.minnumf64.html  |    8 +
 .../sgx_tstd/intrinsics/fn.move_val_init.html      |    8 +
 .../sgx_tstd/intrinsics/fn.mul_with_overflow.html  |    9 +
 .../sgx_tstd/intrinsics/fn.nearbyintf32.html       |    7 +
 .../sgx_tstd/intrinsics/fn.nearbyintf64.html       |    7 +
 .../sgx-sdk/sgx_tstd/intrinsics/fn.needs_drop.html |   11 +
 .../sgx_tstd/intrinsics/fn.nontemporal_store.html  |    7 +
 .../sgx-sdk/sgx_tstd/intrinsics/fn.offset.html     |   15 +
 .../sgx-sdk/sgx_tstd/intrinsics/fn.powf32.html     |    8 +
 .../sgx-sdk/sgx_tstd/intrinsics/fn.powf64.html     |    8 +
 .../sgx-sdk/sgx_tstd/intrinsics/fn.powif32.html    |    8 +
 .../sgx-sdk/sgx_tstd/intrinsics/fn.powif64.html    |    8 +
 .../sgx_tstd/intrinsics/fn.pref_align_of.html      |    7 +
 .../sgx_tstd/intrinsics/fn.prefetch_read_data.html |   12 +
 .../intrinsics/fn.prefetch_read_instruction.html   |   12 +
 .../intrinsics/fn.prefetch_write_data.html         |   12 +
 .../intrinsics/fn.prefetch_write_instruction.html  |   12 +
 .../sgx_tstd/intrinsics/fn.ptr_guaranteed_eq.html  |    6 +
 .../sgx_tstd/intrinsics/fn.ptr_guaranteed_ne.html  |    6 +
 .../sgx_tstd/intrinsics/fn.ptr_offset_from.html    |    6 +
 .../sgx-sdk/sgx_tstd/intrinsics/fn.rintf32.html    |    7 +
 .../sgx-sdk/sgx_tstd/intrinsics/fn.rintf64.html    |    7 +
 .../sgx_tstd/intrinsics/fn.rotate_left.html        |    9 +
 .../sgx_tstd/intrinsics/fn.rotate_right.html       |    9 +
 .../sgx-sdk/sgx_tstd/intrinsics/fn.roundf32.html   |    8 +
 .../sgx-sdk/sgx_tstd/intrinsics/fn.roundf64.html   |    8 +
 .../sgx-sdk/sgx_tstd/intrinsics/fn.rustc_peek.html |   12 +
 .../sgx_tstd/intrinsics/fn.saturating_add.html     |    9 +
 .../sgx_tstd/intrinsics/fn.saturating_sub.html     |    9 +
 .../sgx-sdk/sgx_tstd/intrinsics/fn.sinf32.html     |    8 +
 .../sgx-sdk/sgx_tstd/intrinsics/fn.sinf64.html     |    8 +
 .../sgx-sdk/sgx_tstd/intrinsics/fn.size_of.html    |    9 +
 .../sgx_tstd/intrinsics/fn.size_of_val.html        |    7 +
 .../sgx-sdk/sgx_tstd/intrinsics/fn.sqrtf32.html    |    8 +
 .../sgx-sdk/sgx_tstd/intrinsics/fn.sqrtf64.html    |    8 +
 .../sgx_tstd/intrinsics/fn.sub_with_overflow.html  |    9 +
 .../sgx-sdk/sgx_tstd/intrinsics/fn.transmute.html  |  200 +
 .../sgx-sdk/sgx_tstd/intrinsics/fn.truncf32.html   |    8 +
 .../sgx-sdk/sgx_tstd/intrinsics/fn.truncf64.html   |    8 +
 api-docs/sgx-sdk/sgx_tstd/intrinsics/fn.try.html   |   11 +
 .../sgx-sdk/sgx_tstd/intrinsics/fn.type_id.html    |    9 +
 .../sgx-sdk/sgx_tstd/intrinsics/fn.type_name.html  |    7 +
 .../intrinsics/fn.unaligned_volatile_load.html     |    8 +
 .../intrinsics/fn.unaligned_volatile_store.html    |    8 +
 .../sgx_tstd/intrinsics/fn.unchecked_add.html      |    8 +
 .../sgx_tstd/intrinsics/fn.unchecked_div.html      |   10 +
 .../sgx_tstd/intrinsics/fn.unchecked_mul.html      |    8 +
 .../sgx_tstd/intrinsics/fn.unchecked_rem.html      |   10 +
 .../sgx_tstd/intrinsics/fn.unchecked_shl.html      |   10 +
 .../sgx_tstd/intrinsics/fn.unchecked_shr.html      |   10 +
 .../sgx_tstd/intrinsics/fn.unchecked_sub.html      |    8 +
 .../sgx-sdk/sgx_tstd/intrinsics/fn.unlikely.html   |    9 +
 .../sgx_tstd/intrinsics/fn.unreachable.html        |   11 +
 .../sgx_tstd/intrinsics/fn.variant_count.html      |    8 +
 .../intrinsics/fn.volatile_copy_memory.html        |   11 +
 .../fn.volatile_copy_nonoverlapping_memory.html    |   11 +
 .../sgx_tstd/intrinsics/fn.volatile_load.html      |    7 +
 .../intrinsics/fn.volatile_set_memory.html         |   11 +
 .../sgx_tstd/intrinsics/fn.volatile_store.html     |    7 +
 .../sgx_tstd/intrinsics/fn.wrapping_add.html       |    9 +
 .../sgx_tstd/intrinsics/fn.wrapping_mul.html       |    9 +
 .../sgx_tstd/intrinsics/fn.wrapping_sub.html       |    9 +
 .../sgx_tstd/intrinsics/fn.write_bytes.html        |   64 +
 api-docs/sgx-sdk/sgx_tstd/intrinsics/index.html    |  302 +
 .../sgx-sdk/sgx_tstd/intrinsics/sidebar-items.js   |    1 +
 .../sgx_tstd/io/buffered/struct.BufReader.html     |   10 +
 .../sgx_tstd/io/buffered/struct.BufWriter.html     |   10 +
 .../io/buffered/struct.IntoInnerError.html         |   10 +
 .../sgx_tstd/io/buffered/struct.LineWriter.html    |   10 +
 .../sgx-sdk/sgx_tstd/io/cursor/struct.Cursor.html  |   10 +
 api-docs/sgx-sdk/sgx_tstd/io/enum.ErrorKind.html   |  101 +
 api-docs/sgx-sdk/sgx_tstd/io/enum.SeekFrom.html    |   40 +
 .../sgx-sdk/sgx_tstd/io/error/enum.ErrorKind.html  |   10 +
 .../sgx-sdk/sgx_tstd/io/error/struct.Error.html    |   10 +
 .../sgx-sdk/sgx_tstd/io/error/type.Result.html     |   10 +
 api-docs/sgx-sdk/sgx_tstd/io/fn._eprint.html       |    4 +
 api-docs/sgx-sdk/sgx_tstd/io/fn._print.html        |    4 +
 api-docs/sgx-sdk/sgx_tstd/io/fn.copy.html          |   16 +
 api-docs/sgx-sdk/sgx_tstd/io/fn.empty.html         |    6 +
 api-docs/sgx-sdk/sgx_tstd/io/fn.errno.html         |    4 +
 api-docs/sgx-sdk/sgx_tstd/io/fn.error_string.html  |    4 +
 api-docs/sgx-sdk/sgx_tstd/io/fn.repeat.html        |    7 +
 api-docs/sgx-sdk/sgx_tstd/io/fn.set_errno.html     |    4 +
 api-docs/sgx-sdk/sgx_tstd/io/fn.sink.html          |    7 +
 api-docs/sgx-sdk/sgx_tstd/io/fn.stderr.html        |   10 +
 api-docs/sgx-sdk/sgx_tstd/io/fn.stdin.html         |   12 +
 api-docs/sgx-sdk/sgx_tstd/io/fn.stdout.html        |   12 +
 api-docs/sgx-sdk/sgx_tstd/io/index.html            |   57 +
 api-docs/sgx-sdk/sgx_tstd/io/lazy/struct.Lazy.html |   10 +
 api-docs/sgx-sdk/sgx_tstd/io/prelude/index.html    |   11 +
 .../sgx-sdk/sgx_tstd/io/prelude/sidebar-items.js   |    1 +
 api-docs/sgx-sdk/sgx_tstd/io/sidebar-items.js      |    1 +
 api-docs/sgx-sdk/sgx_tstd/io/stdio/fn._eprint.html |   10 +
 api-docs/sgx-sdk/sgx_tstd/io/stdio/fn._print.html  |   10 +
 api-docs/sgx-sdk/sgx_tstd/io/stdio/fn.stderr.html  |   10 +
 api-docs/sgx-sdk/sgx_tstd/io/stdio/fn.stdin.html   |   10 +
 api-docs/sgx-sdk/sgx_tstd/io/stdio/fn.stdout.html  |   10 +
 .../sgx-sdk/sgx_tstd/io/stdio/struct.Stderr.html   |   10 +
 .../sgx_tstd/io/stdio/struct.StderrLock.html       |   10 +
 .../sgx-sdk/sgx_tstd/io/stdio/struct.Stdin.html    |   10 +
 .../sgx_tstd/io/stdio/struct.StdinLock.html        |   10 +
 .../sgx-sdk/sgx_tstd/io/stdio/struct.Stdout.html   |   10 +
 .../sgx_tstd/io/stdio/struct.StdoutLock.html       |   10 +
 api-docs/sgx-sdk/sgx_tstd/io/struct.BufReader.html |   85 +
 api-docs/sgx-sdk/sgx_tstd/io/struct.BufWriter.html |   59 +
 api-docs/sgx-sdk/sgx_tstd/io/struct.Bytes.html     |  131 +
 api-docs/sgx-sdk/sgx_tstd/io/struct.Chain.html     |   45 +
 api-docs/sgx-sdk/sgx_tstd/io/struct.Cursor.html    |  105 +
 api-docs/sgx-sdk/sgx_tstd/io/struct.Empty.html     |   39 +
 api-docs/sgx-sdk/sgx_tstd/io/struct.Error.html     |   59 +
 .../sgx-sdk/sgx_tstd/io/struct.Initializer.html    |   24 +
 .../sgx-sdk/sgx_tstd/io/struct.IntoInnerError.html |   27 +
 api-docs/sgx-sdk/sgx_tstd/io/struct.IoSlice.html   |   36 +
 .../sgx-sdk/sgx_tstd/io/struct.IoSliceMut.html     |   31 +
 api-docs/sgx-sdk/sgx_tstd/io/struct.Lazy.html      |   15 +
 .../sgx-sdk/sgx_tstd/io/struct.LineWriter.html     |   45 +
 api-docs/sgx-sdk/sgx_tstd/io/struct.Lines.html     |  131 +
 api-docs/sgx-sdk/sgx_tstd/io/struct.Repeat.html    |   29 +
 api-docs/sgx-sdk/sgx_tstd/io/struct.Sink.html      |   26 +
 api-docs/sgx-sdk/sgx_tstd/io/struct.Split.html     |  132 +
 api-docs/sgx-sdk/sgx_tstd/io/struct.Stderr.html    |   34 +
 .../sgx-sdk/sgx_tstd/io/struct.StderrLock.html     |   27 +
 api-docs/sgx-sdk/sgx_tstd/io/struct.Stdin.html     |   47 +
 api-docs/sgx-sdk/sgx_tstd/io/struct.StdinLock.html |   44 +
 api-docs/sgx-sdk/sgx_tstd/io/struct.Stdout.html    |   37 +
 .../sgx-sdk/sgx_tstd/io/struct.StdoutLock.html     |   31 +
 api-docs/sgx-sdk/sgx_tstd/io/struct.Take.html      |   54 +
 api-docs/sgx-sdk/sgx_tstd/io/trait.BufRead.html    |   77 +
 api-docs/sgx-sdk/sgx_tstd/io/trait.Read.html       |  143 +
 api-docs/sgx-sdk/sgx_tstd/io/trait.Seek.html       |   53 +
 api-docs/sgx-sdk/sgx_tstd/io/trait.Write.html      |  112 +
 api-docs/sgx-sdk/sgx_tstd/io/type.Result.html      |   15 +
 api-docs/sgx-sdk/sgx_tstd/io/util/fn.copy.html     |   10 +
 api-docs/sgx-sdk/sgx_tstd/io/util/fn.empty.html    |   10 +
 api-docs/sgx-sdk/sgx_tstd/io/util/fn.repeat.html   |   10 +
 api-docs/sgx-sdk/sgx_tstd/io/util/fn.sink.html     |   10 +
 .../sgx-sdk/sgx_tstd/io/util/struct.Empty.html     |   10 +
 .../sgx-sdk/sgx_tstd/io/util/struct.Repeat.html    |   10 +
 api-docs/sgx-sdk/sgx_tstd/io/util/struct.Sink.html |   10 +
 api-docs/sgx-sdk/sgx_tstd/isize/constant.MAX.html  |   13 +
 api-docs/sgx-sdk/sgx_tstd/isize/constant.MIN.html  |   13 +
 api-docs/sgx-sdk/sgx_tstd/isize/index.html         |   13 +
 api-docs/sgx-sdk/sgx_tstd/isize/sidebar-items.js   |    1 +
 api-docs/sgx-sdk/sgx_tstd/iter/fn.empty.html       |   15 +
 api-docs/sgx-sdk/sgx_tstd/iter/fn.from_fn.html     |   31 +
 api-docs/sgx-sdk/sgx_tstd/iter/fn.once.html        |   47 +
 api-docs/sgx-sdk/sgx_tstd/iter/fn.once_with.html   |   49 +
 api-docs/sgx-sdk/sgx_tstd/iter/fn.repeat.html      |   43 +
 api-docs/sgx-sdk/sgx_tstd/iter/fn.repeat_with.html |   51 +
 api-docs/sgx-sdk/sgx_tstd/iter/fn.successors.html  |   13 +
 api-docs/sgx-sdk/sgx_tstd/iter/index.html          |  303 +
 api-docs/sgx-sdk/sgx_tstd/iter/sidebar-items.js    |    1 +
 api-docs/sgx-sdk/sgx_tstd/iter/struct.Chain.html   |  154 +
 api-docs/sgx-sdk/sgx_tstd/iter/struct.Cloned.html  |  148 +
 api-docs/sgx-sdk/sgx_tstd/iter/struct.Copied.html  |  148 +
 api-docs/sgx-sdk/sgx_tstd/iter/struct.Cycle.html   |  137 +
 api-docs/sgx-sdk/sgx_tstd/iter/struct.Empty.html   |  148 +
 .../sgx-sdk/sgx_tstd/iter/struct.Enumerate.html    |  155 +
 api-docs/sgx-sdk/sgx_tstd/iter/struct.Filter.html  |  148 +
 .../sgx-sdk/sgx_tstd/iter/struct.FilterMap.html    |  148 +
 api-docs/sgx-sdk/sgx_tstd/iter/struct.FlatMap.html |  147 +
 api-docs/sgx-sdk/sgx_tstd/iter/struct.Flatten.html |  147 +
 api-docs/sgx-sdk/sgx_tstd/iter/struct.FromFn.html  |  137 +
 api-docs/sgx-sdk/sgx_tstd/iter/struct.Fuse.html    |  151 +
 api-docs/sgx-sdk/sgx_tstd/iter/struct.Inspect.html |  151 +
 api-docs/sgx-sdk/sgx_tstd/iter/struct.Map.html     |  183 +
 .../sgx-sdk/sgx_tstd/iter/struct.MapWhile.html     |  140 +
 api-docs/sgx-sdk/sgx_tstd/iter/struct.Once.html    |  147 +
 .../sgx-sdk/sgx_tstd/iter/struct.OnceWith.html     |  149 +
 .../sgx-sdk/sgx_tstd/iter/struct.Peekable.html     |  218 +
 api-docs/sgx-sdk/sgx_tstd/iter/struct.Repeat.html  |  145 +
 .../sgx-sdk/sgx_tstd/iter/struct.RepeatWith.html   |  138 +
 api-docs/sgx-sdk/sgx_tstd/iter/struct.Rev.html     |  148 +
 api-docs/sgx-sdk/sgx_tstd/iter/struct.Scan.html    |  139 +
 api-docs/sgx-sdk/sgx_tstd/iter/struct.Skip.html    |  150 +
 .../sgx-sdk/sgx_tstd/iter/struct.SkipWhile.html    |  139 +
 api-docs/sgx-sdk/sgx_tstd/iter/struct.StepBy.html  |  148 +
 .../sgx-sdk/sgx_tstd/iter/struct.Successors.html   |  137 +
 api-docs/sgx-sdk/sgx_tstd/iter/struct.Take.html    |  150 +
 .../sgx-sdk/sgx_tstd/iter/struct.TakeWhile.html    |  139 +
 api-docs/sgx-sdk/sgx_tstd/iter/struct.Zip.html     |  150 +
 .../sgx_tstd/iter/trait.DoubleEndedIterator.html   |  233 +
 .../sgx_tstd/iter/trait.ExactSizeIterator.html     |   75 +
 api-docs/sgx-sdk/sgx_tstd/iter/trait.Extend.html   |   95 +
 .../sgx-sdk/sgx_tstd/iter/trait.FromIterator.html  |  232 +
 .../sgx-sdk/sgx_tstd/iter/trait.FusedIterator.html |   12 +
 .../sgx_tstd/iter/trait.InPlaceIterable.html       |   10 +
 .../sgx-sdk/sgx_tstd/iter/trait.IntoIterator.html  |  220 +
 api-docs/sgx-sdk/sgx_tstd/iter/trait.Iterator.html | 1878 ++++
 api-docs/sgx-sdk/sgx_tstd/iter/trait.Product.html  |   20 +
 .../sgx-sdk/sgx_tstd/iter/trait.SourceIter.html    |   52 +
 api-docs/sgx-sdk/sgx_tstd/iter/trait.Step.html     |  252 +
 api-docs/sgx-sdk/sgx_tstd/iter/trait.Sum.html      |   38 +
 .../sgx-sdk/sgx_tstd/iter/trait.TrustedLen.html    |   16 +
 .../sgx_tstd/macro.__thread_local_inner!.html      |   10 +
 .../sgx_tstd/macro.__thread_local_inner.html       |    9 +
 api-docs/sgx-sdk/sgx_tstd/macro.asm!.html          |   10 +
 api-docs/sgx-sdk/sgx_tstd/macro.asm.html           |   11 +
 api-docs/sgx-sdk/sgx_tstd/macro.assert!.html       |   10 +
 api-docs/sgx-sdk/sgx_tstd/macro.assert.html        |   41 +
 api-docs/sgx-sdk/sgx_tstd/macro.assert_eq!.html    |   10 +
 api-docs/sgx-sdk/sgx_tstd/macro.assert_eq.html     |   22 +
 api-docs/sgx-sdk/sgx_tstd/macro.assert_ne!.html    |   10 +
 api-docs/sgx-sdk/sgx_tstd/macro.assert_ne.html     |   22 +
 api-docs/sgx-sdk/sgx_tstd/macro.cfg!.html          |   10 +
 api-docs/sgx-sdk/sgx_tstd/macro.cfg.html           |   24 +
 api-docs/sgx-sdk/sgx_tstd/macro.cfg_if!.html       |   10 +
 api-docs/sgx-sdk/sgx_tstd/macro.cfg_if.html        |   22 +
 api-docs/sgx-sdk/sgx_tstd/macro.column!.html       |   10 +
 api-docs/sgx-sdk/sgx_tstd/macro.column.html        |   21 +
 .../sgx-sdk/sgx_tstd/macro.compile_error!.html     |   10 +
 api-docs/sgx-sdk/sgx_tstd/macro.compile_error.html |   35 +
 api-docs/sgx-sdk/sgx_tstd/macro.concat!.html       |   10 +
 api-docs/sgx-sdk/sgx_tstd/macro.concat.html        |   19 +
 .../sgx-sdk/sgx_tstd/macro.concat_idents!.html     |   10 +
 api-docs/sgx-sdk/sgx_tstd/macro.concat_idents.html |   28 +
 api-docs/sgx-sdk/sgx_tstd/macro.dbg!.html          |   10 +
 api-docs/sgx-sdk/sgx_tstd/macro.dbg.html           |   11 +
 api-docs/sgx-sdk/sgx_tstd/macro.debug_assert!.html |   10 +
 api-docs/sgx-sdk/sgx_tstd/macro.debug_assert.html  |   41 +
 .../sgx-sdk/sgx_tstd/macro.debug_assert_eq!.html   |   10 +
 .../sgx-sdk/sgx_tstd/macro.debug_assert_eq.html    |   22 +
 .../sgx-sdk/sgx_tstd/macro.debug_assert_ne!.html   |   10 +
 .../sgx-sdk/sgx_tstd/macro.debug_assert_ne.html    |   22 +
 api-docs/sgx-sdk/sgx_tstd/macro.env!.html          |   10 +
 api-docs/sgx-sdk/sgx_tstd/macro.env.html           |   28 +
 api-docs/sgx-sdk/sgx_tstd/macro.eprint!.html       |   10 +
 api-docs/sgx-sdk/sgx_tstd/macro.eprint.html        |   16 +
 api-docs/sgx-sdk/sgx_tstd/macro.eprintln!.html     |   10 +
 api-docs/sgx-sdk/sgx_tstd/macro.eprintln.html      |   17 +
 api-docs/sgx-sdk/sgx_tstd/macro.file!.html         |   10 +
 api-docs/sgx-sdk/sgx_tstd/macro.file.html          |   19 +
 api-docs/sgx-sdk/sgx_tstd/macro.format!.html       |   10 +
 api-docs/sgx-sdk/sgx_tstd/macro.format.html        |   28 +
 api-docs/sgx-sdk/sgx_tstd/macro.format_args!.html  |   10 +
 api-docs/sgx-sdk/sgx_tstd/macro.format_args.html   |   38 +
 .../sgx-sdk/sgx_tstd/macro.format_args_nl!.html    |   10 +
 .../sgx-sdk/sgx_tstd/macro.format_args_nl.html     |   11 +
 api-docs/sgx-sdk/sgx_tstd/macro.global_asm!.html   |   10 +
 api-docs/sgx-sdk/sgx_tstd/macro.global_asm.html    |   10 +
 .../sgx_tstd/macro.global_ctors_object!.html       |   10 +
 .../sgx_tstd/macro.global_ctors_object.html        |   13 +
 .../sgx_tstd/macro.global_dtors_object!.html       |   10 +
 .../sgx_tstd/macro.global_dtors_object.html        |    8 +
 api-docs/sgx-sdk/sgx_tstd/macro.include!.html      |   10 +
 api-docs/sgx-sdk/sgx_tstd/macro.include.html       |   41 +
 .../sgx-sdk/sgx_tstd/macro.include_bytes!.html     |   10 +
 api-docs/sgx-sdk/sgx_tstd/macro.include_bytes.html |   31 +
 api-docs/sgx-sdk/sgx_tstd/macro.include_str!.html  |   10 +
 api-docs/sgx-sdk/sgx_tstd/macro.include_str.html   |   31 +
 .../sgx_tstd/macro.is_cpu_feature_supported!.html  |   10 +
 .../sgx_tstd/macro.is_cpu_feature_supported.html   |    8 +
 .../sgx_tstd/macro.is_x86_feature_detected!.html   |   10 +
 .../sgx_tstd/macro.is_x86_feature_detected.html    |   65 +
 api-docs/sgx-sdk/sgx_tstd/macro.line!.html         |   10 +
 api-docs/sgx-sdk/sgx_tstd/macro.line.html          |   21 +
 api-docs/sgx-sdk/sgx_tstd/macro.log_syntax!.html   |   10 +
 api-docs/sgx-sdk/sgx_tstd/macro.log_syntax.html    |   10 +
 api-docs/sgx-sdk/sgx_tstd/macro.matches!.html      |   10 +
 api-docs/sgx-sdk/sgx_tstd/macro.matches.html       |   18 +
 api-docs/sgx-sdk/sgx_tstd/macro.module_path!.html  |   10 +
 api-docs/sgx-sdk/sgx_tstd/macro.module_path.html   |   21 +
 api-docs/sgx-sdk/sgx_tstd/macro.option_env!.html   |   10 +
 api-docs/sgx-sdk/sgx_tstd/macro.option_env.html    |   21 +
 api-docs/sgx-sdk/sgx_tstd/macro.panic!.html        |   10 +
 api-docs/sgx-sdk/sgx_tstd/macro.panic.html         |   32 +
 api-docs/sgx-sdk/sgx_tstd/macro.print!.html        |   10 +
 api-docs/sgx-sdk/sgx_tstd/macro.print.html         |   18 +
 api-docs/sgx-sdk/sgx_tstd/macro.println!.html      |   10 +
 api-docs/sgx-sdk/sgx_tstd/macro.println.html       |   18 +
 api-docs/sgx-sdk/sgx_tstd/macro.stringify!.html    |   10 +
 api-docs/sgx-sdk/sgx_tstd/macro.stringify.html     |   18 +
 api-docs/sgx-sdk/sgx_tstd/macro.thread_local!.html |   10 +
 api-docs/sgx-sdk/sgx_tstd/macro.thread_local.html  |   23 +
 api-docs/sgx-sdk/sgx_tstd/macro.todo!.html         |   10 +
 api-docs/sgx-sdk/sgx_tstd/macro.todo.html          |   50 +
 api-docs/sgx-sdk/sgx_tstd/macro.trace_macros!.html |   10 +
 api-docs/sgx-sdk/sgx_tstd/macro.trace_macros.html  |   11 +
 api-docs/sgx-sdk/sgx_tstd/macro.try!.html          |   10 +
 api-docs/sgx-sdk/sgx_tstd/macro.try.html           |   61 +
 .../sgx-sdk/sgx_tstd/macro.unimplemented!.html     |   10 +
 api-docs/sgx-sdk/sgx_tstd/macro.unimplemented.html |   64 +
 api-docs/sgx-sdk/sgx_tstd/macro.unreachable!.html  |   10 +
 api-docs/sgx-sdk/sgx_tstd/macro.unreachable.html   |   47 +
 api-docs/sgx-sdk/sgx_tstd/macro.vec!.html          |   10 +
 api-docs/sgx-sdk/sgx_tstd/macro.vec.html           |   37 +
 api-docs/sgx-sdk/sgx_tstd/macro.write!.html        |   10 +
 api-docs/sgx-sdk/sgx_tstd/macro.write.html         |   61 +
 api-docs/sgx-sdk/sgx_tstd/macro.writeln!.html      |   10 +
 api-docs/sgx-sdk/sgx_tstd/macro.writeln.html       |   45 +
 api-docs/sgx-sdk/sgx_tstd/marker/index.html        |   23 +
 api-docs/sgx-sdk/sgx_tstd/marker/macro.Copy!.html  |   10 +
 api-docs/sgx-sdk/sgx_tstd/marker/macro.Copy.html   |    9 +
 api-docs/sgx-sdk/sgx_tstd/marker/sidebar-items.js  |    1 +
 .../sgx_tstd/marker/struct.PhantomData.html        |  130 +
 .../sgx_tstd/marker/struct.PhantomPinned.html      |   38 +
 api-docs/sgx-sdk/sgx_tstd/marker/trait.Copy.html   |  128 +
 .../sgx_tstd/marker/trait.DiscriminantKind.html    |   14 +
 api-docs/sgx-sdk/sgx_tstd/marker/trait.Send.html   |   15 +
 api-docs/sgx-sdk/sgx_tstd/marker/trait.Sized.html  |   32 +
 .../sgx_tstd/marker/trait.StructuralEq.html        |   37 +
 .../sgx_tstd/marker/trait.StructuralPartialEq.html |   17 +
 api-docs/sgx-sdk/sgx_tstd/marker/trait.Sync.html   |   47 +
 api-docs/sgx-sdk/sgx_tstd/marker/trait.Unpin.html  |   33 +
 api-docs/sgx-sdk/sgx_tstd/marker/trait.Unsize.html |   26 +
 api-docs/sgx-sdk/sgx_tstd/mem/fn.align_of.html     |   12 +
 api-docs/sgx-sdk/sgx_tstd/mem/fn.align_of_val.html |   11 +
 .../sgx-sdk/sgx_tstd/mem/fn.align_of_val_raw.html  |   33 +
 api-docs/sgx-sdk/sgx_tstd/mem/fn.discriminant.html |   22 +
 api-docs/sgx-sdk/sgx_tstd/mem/fn.drop.html         |   49 +
 api-docs/sgx-sdk/sgx_tstd/mem/fn.forget.html       |   92 +
 .../sgx-sdk/sgx_tstd/mem/fn.forget_unsized.html    |    7 +
 api-docs/sgx-sdk/sgx_tstd/mem/fn.min_align_of.html |   13 +
 .../sgx-sdk/sgx_tstd/mem/fn.min_align_of_val.html  |   12 +
 api-docs/sgx-sdk/sgx_tstd/mem/fn.needs_drop.html   |   45 +
 api-docs/sgx-sdk/sgx_tstd/mem/fn.replace.html      |   54 +
 api-docs/sgx-sdk/sgx_tstd/mem/fn.size_of.html      |  119 +
 api-docs/sgx-sdk/sgx_tstd/mem/fn.size_of_val.html  |   17 +
 .../sgx-sdk/sgx_tstd/mem/fn.size_of_val_raw.html   |   39 +
 api-docs/sgx-sdk/sgx_tstd/mem/fn.swap.html         |   20 +
 api-docs/sgx-sdk/sgx_tstd/mem/fn.take.html         |   52 +
 api-docs/sgx-sdk/sgx_tstd/mem/fn.transmute.html    |  200 +
 .../sgx-sdk/sgx_tstd/mem/fn.transmute_copy.html    |   37 +
 .../sgx-sdk/sgx_tstd/mem/fn.uninitialized.html     |   20 +
 .../sgx-sdk/sgx_tstd/mem/fn.variant_count.html     |   21 +
 api-docs/sgx-sdk/sgx_tstd/mem/fn.zeroed.html       |   30 +
 api-docs/sgx-sdk/sgx_tstd/mem/index.html           |   37 +
 api-docs/sgx-sdk/sgx_tstd/mem/sidebar-items.js     |    1 +
 .../sgx-sdk/sgx_tstd/mem/struct.Discriminant.html  |   27 +
 .../sgx-sdk/sgx_tstd/mem/struct.ManuallyDrop.html  |  112 +
 .../sgx-sdk/sgx_tstd/mem/union.MaybeUninit.html    |  556 ++
 .../sgx-sdk/sgx_tstd/net/addr/enum.SocketAddr.html |   10 +
 .../sgx_tstd/net/addr/struct.SocketAddrV4.html     |   10 +
 .../sgx_tstd/net/addr/struct.SocketAddrV6.html     |   10 +
 .../sgx_tstd/net/addr/trait.ToSocketAddrs.html     |   10 +
 api-docs/sgx-sdk/sgx_tstd/net/enum.IpAddr.html     |  114 +
 .../sgx_tstd/net/enum.Ipv6MulticastScope.html      |   35 +
 api-docs/sgx-sdk/sgx_tstd/net/enum.Shutdown.html   |   35 +
 api-docs/sgx-sdk/sgx_tstd/net/enum.SocketAddr.html |   60 +
 api-docs/sgx-sdk/sgx_tstd/net/index.html           |   20 +
 api-docs/sgx-sdk/sgx_tstd/net/ip/enum.IpAddr.html  |   10 +
 .../sgx_tstd/net/ip/enum.Ipv6MulticastScope.html   |   10 +
 .../sgx-sdk/sgx_tstd/net/ip/struct.Ipv4Addr.html   |   10 +
 .../sgx-sdk/sgx_tstd/net/ip/struct.Ipv6Addr.html   |   10 +
 .../sgx_tstd/net/parser/struct.AddrParseError.html |   10 +
 api-docs/sgx-sdk/sgx_tstd/net/sidebar-items.js     |    1 +
 .../sgx_tstd/net/struct.AddrParseError.html        |   45 +
 api-docs/sgx-sdk/sgx_tstd/net/struct.Ipv4Addr.html |  149 +
 api-docs/sgx-sdk/sgx_tstd/net/struct.Ipv6Addr.html |  166 +
 .../sgx-sdk/sgx_tstd/net/struct.SocketAddrV4.html  |   42 +
 .../sgx-sdk/sgx_tstd/net/struct.SocketAddrV6.html  |   60 +
 .../sgx-sdk/sgx_tstd/net/trait.ToSocketAddrs.html  |   48 +
 api-docs/sgx-sdk/sgx_tstd/num/enum.FpCategory.html |   54 +
 api-docs/sgx-sdk/sgx_tstd/num/index.html           |   26 +
 api-docs/sgx-sdk/sgx_tstd/num/sidebar-items.js     |    1 +
 .../sgx-sdk/sgx_tstd/num/struct.NonZeroI128.html   |  126 +
 .../sgx-sdk/sgx_tstd/num/struct.NonZeroI16.html    |  128 +
 .../sgx-sdk/sgx_tstd/num/struct.NonZeroI32.html    |  128 +
 .../sgx-sdk/sgx_tstd/num/struct.NonZeroI64.html    |  127 +
 .../sgx-sdk/sgx_tstd/num/struct.NonZeroI8.html     |  129 +
 .../sgx-sdk/sgx_tstd/num/struct.NonZeroIsize.html  |  131 +
 .../sgx-sdk/sgx_tstd/num/struct.NonZeroU128.html   |  130 +
 .../sgx-sdk/sgx_tstd/num/struct.NonZeroU16.html    |  126 +
 .../sgx-sdk/sgx_tstd/num/struct.NonZeroU32.html    |  128 +
 .../sgx-sdk/sgx_tstd/num/struct.NonZeroU64.html    |  129 +
 .../sgx-sdk/sgx_tstd/num/struct.NonZeroU8.html     |  124 +
 .../sgx-sdk/sgx_tstd/num/struct.NonZeroUsize.html  |  132 +
 .../sgx_tstd/num/struct.ParseFloatError.html       |   37 +
 .../sgx-sdk/sgx_tstd/num/struct.ParseIntError.html |   41 +
 .../sgx_tstd/num/struct.TryFromIntError.html       |   31 +
 api-docs/sgx-sdk/sgx_tstd/num/struct.Wrapping.html | 4431 ++++++++++
 api-docs/sgx-sdk/sgx_tstd/ops/enum.Bound.html      |   71 +
 .../sgx-sdk/sgx_tstd/ops/enum.ControlFlow.html     |   84 +
 .../sgx-sdk/sgx_tstd/ops/enum.GeneratorState.html  |   54 +
 api-docs/sgx-sdk/sgx_tstd/ops/index.html           |  181 +
 api-docs/sgx-sdk/sgx_tstd/ops/sidebar-items.js     |    1 +
 api-docs/sgx-sdk/sgx_tstd/ops/struct.Range.html    |  288 +
 .../sgx-sdk/sgx_tstd/ops/struct.RangeFrom.html     |  232 +
 .../sgx-sdk/sgx_tstd/ops/struct.RangeFull.html     |  104 +
 .../sgx_tstd/ops/struct.RangeInclusive.html        |  307 +
 api-docs/sgx-sdk/sgx_tstd/ops/struct.RangeTo.html  |  121 +
 .../sgx_tstd/ops/struct.RangeToInclusive.html      |  121 +
 api-docs/sgx-sdk/sgx_tstd/ops/trait.Add.html       |  100 +
 api-docs/sgx-sdk/sgx_tstd/ops/trait.AddAssign.html |   40 +
 api-docs/sgx-sdk/sgx_tstd/ops/trait.BitAnd.html    |  109 +
 .../sgx-sdk/sgx_tstd/ops/trait.BitAndAssign.html   |   82 +
 api-docs/sgx-sdk/sgx_tstd/ops/trait.BitOr.html     |  106 +
 .../sgx-sdk/sgx_tstd/ops/trait.BitOrAssign.html    |   45 +
 api-docs/sgx-sdk/sgx_tstd/ops/trait.BitXor.html    |  109 +
 .../sgx-sdk/sgx_tstd/ops/trait.BitXorAssign.html   |   45 +
 .../sgx-sdk/sgx_tstd/ops/trait.CoerceUnsized.html  |   26 +
 api-docs/sgx-sdk/sgx_tstd/ops/trait.Deref.html     |   53 +
 api-docs/sgx-sdk/sgx_tstd/ops/trait.DerefMut.html  |   60 +
 .../sgx_tstd/ops/trait.DispatchFromDyn.html        |   12 +
 api-docs/sgx-sdk/sgx_tstd/ops/trait.Div.html       |  118 +
 api-docs/sgx-sdk/sgx_tstd/ops/trait.DivAssign.html |   29 +
 api-docs/sgx-sdk/sgx_tstd/ops/trait.Drop.html      |  210 +
 api-docs/sgx-sdk/sgx_tstd/ops/trait.Fn.html        |   42 +
 api-docs/sgx-sdk/sgx_tstd/ops/trait.FnMut.html     |   51 +
 api-docs/sgx-sdk/sgx_tstd/ops/trait.FnOnce.html    |   48 +
 api-docs/sgx-sdk/sgx_tstd/ops/trait.Generator.html |   70 +
 api-docs/sgx-sdk/sgx_tstd/ops/trait.Index.html     |   62 +
 api-docs/sgx-sdk/sgx_tstd/ops/trait.IndexMut.html  |   72 +
 api-docs/sgx-sdk/sgx_tstd/ops/trait.Mul.html       |   90 +
 api-docs/sgx-sdk/sgx_tstd/ops/trait.MulAssign.html |   29 +
 api-docs/sgx-sdk/sgx_tstd/ops/trait.Neg.html       |   46 +
 api-docs/sgx-sdk/sgx_tstd/ops/trait.Not.html       |   42 +
 .../sgx-sdk/sgx_tstd/ops/trait.RangeBounds.html    |   79 +
 api-docs/sgx-sdk/sgx_tstd/ops/trait.Rem.html       |   89 +
 api-docs/sgx-sdk/sgx_tstd/ops/trait.RemAssign.html |   33 +
 api-docs/sgx-sdk/sgx_tstd/ops/trait.Shl.html       |   64 +
 api-docs/sgx-sdk/sgx_tstd/ops/trait.ShlAssign.html |   35 +
 api-docs/sgx-sdk/sgx_tstd/ops/trait.Shr.html       |   64 +
 api-docs/sgx-sdk/sgx_tstd/ops/trait.ShrAssign.html |   35 +
 api-docs/sgx-sdk/sgx_tstd/ops/trait.Sub.html       |  111 +
 api-docs/sgx-sdk/sgx_tstd/ops/trait.SubAssign.html |   38 +
 api-docs/sgx-sdk/sgx_tstd/ops/trait.Try.html       |   29 +
 api-docs/sgx-sdk/sgx_tstd/option/enum.Option.html  |  707 ++
 api-docs/sgx-sdk/sgx_tstd/option/index.html        |  139 +
 api-docs/sgx-sdk/sgx_tstd/option/sidebar-items.js  |    1 +
 .../sgx-sdk/sgx_tstd/option/struct.IntoIter.html   |  148 +
 api-docs/sgx-sdk/sgx_tstd/option/struct.Iter.html  |  148 +
 .../sgx-sdk/sgx_tstd/option/struct.IterMut.html    |  142 +
 .../sgx-sdk/sgx_tstd/option/struct.NoneError.html  |   40 +
 api-docs/sgx-sdk/sgx_tstd/os/fs/index.html         |    6 +
 api-docs/sgx-sdk/sgx_tstd/os/fs/sidebar-items.js   |    1 +
 .../sgx-sdk/sgx_tstd/os/fs/trait.MetadataExt.html  |   46 +
 api-docs/sgx-sdk/sgx_tstd/os/index.html            |    5 +
 .../sgx-sdk/sgx_tstd/os/raw/arch/struct.stat.html  |   10 +
 .../sgx_tstd/os/raw/arch/type.blkcnt_t.html        |   10 +
 .../sgx_tstd/os/raw/arch/type.blksize_t.html       |   10 +
 .../sgx-sdk/sgx_tstd/os/raw/arch/type.ino_t.html   |   10 +
 .../sgx-sdk/sgx_tstd/os/raw/arch/type.nlink_t.html |   10 +
 .../sgx-sdk/sgx_tstd/os/raw/arch/type.off_t.html   |   10 +
 .../sgx-sdk/sgx_tstd/os/raw/arch/type.time_t.html  |   10 +
 api-docs/sgx-sdk/sgx_tstd/os/raw/index.html        |    7 +
 api-docs/sgx-sdk/sgx_tstd/os/raw/sidebar-items.js  |    1 +
 api-docs/sgx-sdk/sgx_tstd/os/raw/struct.stat.html  |   39 +
 .../sgx-sdk/sgx_tstd/os/raw/type.blkcnt_t.html     |    4 +
 .../sgx-sdk/sgx_tstd/os/raw/type.blksize_t.html    |    4 +
 api-docs/sgx-sdk/sgx_tstd/os/raw/type.c_char.html  |    4 +
 .../sgx-sdk/sgx_tstd/os/raw/type.c_double.html     |    4 +
 api-docs/sgx-sdk/sgx_tstd/os/raw/type.c_float.html |    4 +
 api-docs/sgx-sdk/sgx_tstd/os/raw/type.c_int.html   |    4 +
 api-docs/sgx-sdk/sgx_tstd/os/raw/type.c_long.html  |    4 +
 .../sgx-sdk/sgx_tstd/os/raw/type.c_longlong.html   |    4 +
 api-docs/sgx-sdk/sgx_tstd/os/raw/type.c_schar.html |    4 +
 api-docs/sgx-sdk/sgx_tstd/os/raw/type.c_short.html |    4 +
 api-docs/sgx-sdk/sgx_tstd/os/raw/type.c_uchar.html |    4 +
 api-docs/sgx-sdk/sgx_tstd/os/raw/type.c_uint.html  |    4 +
 api-docs/sgx-sdk/sgx_tstd/os/raw/type.c_ulong.html |    4 +
 .../sgx-sdk/sgx_tstd/os/raw/type.c_ulonglong.html  |    4 +
 .../sgx-sdk/sgx_tstd/os/raw/type.c_ushort.html     |    4 +
 api-docs/sgx-sdk/sgx_tstd/os/raw/type.dev_t.html   |    4 +
 api-docs/sgx-sdk/sgx_tstd/os/raw/type.ino_t.html   |    4 +
 api-docs/sgx-sdk/sgx_tstd/os/raw/type.mode_t.html  |    4 +
 api-docs/sgx-sdk/sgx_tstd/os/raw/type.nlink_t.html |    4 +
 api-docs/sgx-sdk/sgx_tstd/os/raw/type.off_t.html   |    4 +
 .../sgx-sdk/sgx_tstd/os/raw/type.pthread_t.html    |    4 +
 api-docs/sgx-sdk/sgx_tstd/os/raw/type.time_t.html  |    4 +
 api-docs/sgx-sdk/sgx_tstd/os/sidebar-items.js      |    1 +
 api-docs/sgx-sdk/sgx_tstd/os/unix/ffi/index.html   |    8 +
 .../sgx-sdk/sgx_tstd/os/unix/ffi/sidebar-items.js  |    1 +
 .../sgx_tstd/os/unix/ffi/trait.OsStrExt.html       |   12 +
 .../sgx_tstd/os/unix/ffi/trait.OsStringExt.html    |   12 +
 .../sgx-sdk/sgx_tstd/os/unix/fs/fn.symlink.html    |   13 +
 api-docs/sgx-sdk/sgx_tstd/os/unix/fs/index.html    |   13 +
 .../sgx-sdk/sgx_tstd/os/unix/fs/sidebar-items.js   |    1 +
 .../sgx_tstd/os/unix/fs/trait.DirBuilderExt.html   |    6 +
 .../sgx_tstd/os/unix/fs/trait.DirEntryExt.html     |    9 +
 .../sgx-sdk/sgx_tstd/os/unix/fs/trait.FileExt.html |   57 +
 .../sgx_tstd/os/unix/fs/trait.FileTypeExt.html     |   16 +
 .../sgx_tstd/os/unix/fs/trait.MetadataExt.html     |   39 +
 .../sgx_tstd/os/unix/fs/trait.OpenOptionsExt.html  |   19 +
 .../sgx_tstd/os/unix/fs/trait.PermissionsExt.html  |   14 +
 api-docs/sgx-sdk/sgx_tstd/os/unix/index.html       |    9 +
 api-docs/sgx-sdk/sgx_tstd/os/unix/io/index.html    |   14 +
 .../sgx-sdk/sgx_tstd/os/unix/io/sidebar-items.js   |    1 +
 .../sgx-sdk/sgx_tstd/os/unix/io/trait.AsRawFd.html |   15 +
 .../sgx_tstd/os/unix/io/trait.FromRawFd.html       |   18 +
 .../sgx_tstd/os/unix/io/trait.IntoRawFd.html       |   12 +
 .../sgx-sdk/sgx_tstd/os/unix/io/type.RawFd.html    |    5 +
 .../sgx-sdk/sgx_tstd/os/unix/prelude/index.html    |   23 +
 .../sgx_tstd/os/unix/prelude/sidebar-items.js      |    1 +
 .../sgx_tstd/os/unix/prelude/trait.AsRawFd.html    |   15 +
 .../os/unix/prelude/trait.DirEntryExt.html         |    9 +
 .../sgx_tstd/os/unix/prelude/trait.FileExt.html    |   57 +
 .../os/unix/prelude/trait.FileTypeExt.html         |   16 +
 .../sgx_tstd/os/unix/prelude/trait.FromRawFd.html  |   18 +
 .../sgx_tstd/os/unix/prelude/trait.IntoRawFd.html  |   12 +
 .../os/unix/prelude/trait.MetadataExt.html         |   39 +
 .../os/unix/prelude/trait.OpenOptionsExt.html      |   19 +
 .../sgx_tstd/os/unix/prelude/trait.OsStrExt.html   |   12 +
 .../os/unix/prelude/trait.OsStringExt.html         |   12 +
 .../os/unix/prelude/trait.PermissionsExt.html      |   14 +
 .../sgx_tstd/os/unix/prelude/type.RawFd.html       |    5 +
 api-docs/sgx-sdk/sgx_tstd/os/unix/raw/index.html   |    7 +
 .../sgx-sdk/sgx_tstd/os/unix/raw/sidebar-items.js  |    1 +
 .../sgx_tstd/os/unix/raw/type.blkcnt_t.html        |    4 +
 .../sgx_tstd/os/unix/raw/type.blksize_t.html       |    4 +
 .../sgx-sdk/sgx_tstd/os/unix/raw/type.gid_t.html   |    4 +
 .../sgx-sdk/sgx_tstd/os/unix/raw/type.ino_t.html   |    4 +
 .../sgx-sdk/sgx_tstd/os/unix/raw/type.nlink_t.html |    4 +
 .../sgx-sdk/sgx_tstd/os/unix/raw/type.off_t.html   |    4 +
 .../sgx-sdk/sgx_tstd/os/unix/raw/type.pid_t.html   |    4 +
 .../sgx-sdk/sgx_tstd/os/unix/raw/type.time_t.html  |    4 +
 .../sgx-sdk/sgx_tstd/os/unix/raw/type.uid_t.html   |    4 +
 api-docs/sgx-sdk/sgx_tstd/os/unix/sidebar-items.js |    1 +
 .../sgx-sdk/sgx_tstd/panic/fn.catch_unwind.html    |   28 +
 .../sgx-sdk/sgx_tstd/panic/fn.resume_unwind.html   |   12 +
 .../sgx_tstd/panic/fn.set_panic_handler.html       |    5 +
 .../sgx_tstd/panic/fn.take_panic_handler.html      |    4 +
 api-docs/sgx-sdk/sgx_tstd/panic/index.html         |   17 +
 api-docs/sgx-sdk/sgx_tstd/panic/sidebar-items.js   |    1 +
 .../sgx_tstd/panic/struct.AssertUnwindSafe.html    |   33 +
 .../sgx-sdk/sgx_tstd/panic/struct.Location.html    |  149 +
 .../sgx-sdk/sgx_tstd/panic/struct.PanicInfo.html   |   70 +
 .../sgx_tstd/panic/trait.RefUnwindSafe.html        |   10 +
 .../sgx-sdk/sgx_tstd/panic/trait.UnwindSafe.html   |   60 +
 .../sgx-sdk/sgx_tstd/panicking/fn.begin_panic.html |   10 +
 .../sgx_tstd/panicking/fn.begin_panic_fmt.html     |   10 +
 .../sgx_tstd/panicking/fn.set_panic_handler.html   |   10 +
 .../sgx_tstd/panicking/fn.take_panic_handler.html  |   10 +
 .../sgx_tstd/panicking/fn.update_panic_count.html  |   10 +
 .../sgx_tstd/path/constant.MAIN_SEPARATOR.html     |    6 +
 api-docs/sgx-sdk/sgx_tstd/path/enum.Component.html |   63 +
 api-docs/sgx-sdk/sgx_tstd/path/enum.Prefix.html    |   69 +
 .../sgx-sdk/sgx_tstd/path/fn.is_separator.html     |    6 +
 api-docs/sgx-sdk/sgx_tstd/path/index.html          |   34 +
 api-docs/sgx-sdk/sgx_tstd/path/sidebar-items.js    |    1 +
 .../sgx-sdk/sgx_tstd/path/struct.Ancestors.html    |  137 +
 .../sgx-sdk/sgx_tstd/path/struct.Components.html   |  163 +
 api-docs/sgx-sdk/sgx_tstd/path/struct.Display.html |   20 +
 api-docs/sgx-sdk/sgx_tstd/path/struct.Iter.html    |  149 +
 api-docs/sgx-sdk/sgx_tstd/path/struct.Path.html    |  416 +
 api-docs/sgx-sdk/sgx_tstd/path/struct.PathBuf.html |  353 +
 .../sgx_tstd/path/struct.PrefixComponent.html      |   48 +
 .../sgx_tstd/path/struct.StripPrefixError.html     |   31 +
 api-docs/sgx-sdk/sgx_tstd/pin/index.html           |  307 +
 api-docs/sgx-sdk/sgx_tstd/pin/sidebar-items.js     |    1 +
 api-docs/sgx-sdk/sgx_tstd/pin/struct.Pin.html      |  220 +
 api-docs/sgx-sdk/sgx_tstd/prelude/index.html       |   16 +
 api-docs/sgx-sdk/sgx_tstd/prelude/sidebar-items.js |    1 +
 api-docs/sgx-sdk/sgx_tstd/prelude/v1/index.html    |    7 +
 .../sgx-sdk/sgx_tstd/prelude/v1/sidebar-items.js   |    1 +
 api-docs/sgx-sdk/sgx_tstd/primitive/index.html     |   28 +
 .../sgx-sdk/sgx_tstd/primitive/sidebar-items.js    |    1 +
 api-docs/sgx-sdk/sgx_tstd/ptr/fn.copy.html         |   53 +
 .../sgx_tstd/ptr/fn.copy_nonoverlapping.html       |   73 +
 .../sgx-sdk/sgx_tstd/ptr/fn.drop_in_place.html     |   77 +
 api-docs/sgx-sdk/sgx_tstd/ptr/fn.eq.html           |   66 +
 api-docs/sgx-sdk/sgx_tstd/ptr/fn.hash.html         |   26 +
 api-docs/sgx-sdk/sgx_tstd/ptr/fn.null.html         |   11 +
 api-docs/sgx-sdk/sgx_tstd/ptr/fn.null_mut.html     |   11 +
 api-docs/sgx-sdk/sgx_tstd/ptr/fn.read.html         |  100 +
 .../sgx-sdk/sgx_tstd/ptr/fn.read_unaligned.html    |   72 +
 .../sgx-sdk/sgx_tstd/ptr/fn.read_volatile.html     |   52 +
 api-docs/sgx-sdk/sgx_tstd/ptr/fn.replace.html      |   37 +
 .../sgx_tstd/ptr/fn.slice_from_raw_parts.html      |   17 +
 .../sgx_tstd/ptr/fn.slice_from_raw_parts_mut.html  |   22 +
 api-docs/sgx-sdk/sgx_tstd/ptr/fn.swap.html         |   64 +
 .../sgx_tstd/ptr/fn.swap_nonoverlapping.html       |   37 +
 api-docs/sgx-sdk/sgx_tstd/ptr/fn.write.html        |   74 +
 api-docs/sgx-sdk/sgx_tstd/ptr/fn.write_bytes.html  |   64 +
 .../sgx-sdk/sgx_tstd/ptr/fn.write_unaligned.html   |   69 +
 .../sgx-sdk/sgx_tstd/ptr/fn.write_volatile.html    |   51 +
 api-docs/sgx-sdk/sgx_tstd/ptr/index.html           |   86 +
 .../sgx-sdk/sgx_tstd/ptr/macro.raw_const!.html     |   10 +
 api-docs/sgx-sdk/sgx_tstd/ptr/macro.raw_const.html |   30 +
 api-docs/sgx-sdk/sgx_tstd/ptr/macro.raw_mut!.html  |   10 +
 api-docs/sgx-sdk/sgx_tstd/ptr/macro.raw_mut.html   |   31 +
 api-docs/sgx-sdk/sgx_tstd/ptr/sidebar-items.js     |    1 +
 api-docs/sgx-sdk/sgx_tstd/ptr/struct.NonNull.html  |  309 +
 api-docs/sgx-sdk/sgx_tstd/raw/index.html           |   11 +
 api-docs/sgx-sdk/sgx_tstd/raw/sidebar-items.js     |    1 +
 .../sgx-sdk/sgx_tstd/raw/struct.TraitObject.html   |   82 +
 api-docs/sgx-sdk/sgx_tstd/rc/index.html            |  207 +
 api-docs/sgx-sdk/sgx_tstd/rc/sidebar-items.js      |    1 +
 api-docs/sgx-sdk/sgx_tstd/rc/struct.Rc.html        |  511 ++
 api-docs/sgx-sdk/sgx_tstd/rc/struct.Weak.html      |  202 +
 api-docs/sgx-sdk/sgx_tstd/result/enum.Result.html  |  598 ++
 api-docs/sgx-sdk/sgx_tstd/result/index.html        |  186 +
 api-docs/sgx-sdk/sgx_tstd/result/sidebar-items.js  |    1 +
 .../sgx-sdk/sgx_tstd/result/struct.IntoIter.html   |  149 +
 api-docs/sgx-sdk/sgx_tstd/result/struct.Iter.html  |  148 +
 .../sgx-sdk/sgx_tstd/result/struct.IterMut.html    |  141 +
 api-docs/sgx-sdk/sgx_tstd/rt/fn.at_exit.html       |   12 +
 api-docs/sgx-sdk/sgx_tstd/rt/fn.begin_panic.html   |    7 +
 .../sgx-sdk/sgx_tstd/rt/fn.begin_panic_fmt.html    |    9 +
 api-docs/sgx-sdk/sgx_tstd/rt/fn.global_exit.html   |    4 +
 .../sgx_tstd/rt/fn.t_global_exit_ecall.html        |    4 +
 .../sgx_tstd/rt/fn.t_global_init_ecall.html        |    4 +
 .../sgx-sdk/sgx_tstd/rt/fn.update_panic_count.html |    4 +
 api-docs/sgx-sdk/sgx_tstd/rt/index.html            |   12 +
 api-docs/sgx-sdk/sgx_tstd/rt/sidebar-items.js      |    1 +
 .../sgx-sdk/sgx_tstd/rt/static.GLOBAL_DTORS.html   |    5 +
 api-docs/sgx-sdk/sgx_tstd/sgxfs/fn.copy.html       |    9 +
 .../sgx_tstd/sgxfs/fn.export_align_auto_key.html   |    4 +
 .../sgx-sdk/sgx_tstd/sgxfs/fn.export_auto_key.html |    4 +
 .../sgx-sdk/sgx_tstd/sgxfs/fn.import_auto_key.html |    4 +
 api-docs/sgx-sdk/sgx_tstd/sgxfs/fn.read.html       |   12 +
 .../sgx-sdk/sgx_tstd/sgxfs/fn.read_to_string.html  |   13 +
 api-docs/sgx-sdk/sgx_tstd/sgxfs/fn.remove.html     |    4 +
 api-docs/sgx-sdk/sgx_tstd/sgxfs/fn.write.html      |    9 +
 api-docs/sgx-sdk/sgx_tstd/sgxfs/index.html         |   14 +
 api-docs/sgx-sdk/sgx_tstd/sgxfs/sidebar-items.js   |    1 +
 .../sgx-sdk/sgx_tstd/sgxfs/struct.OpenOptions.html |   53 +
 .../sgx-sdk/sgx_tstd/sgxfs/struct.SgxFile.html     |   74 +
 api-docs/sgx-sdk/sgx_tstd/sidebar-items.js         |    1 +
 api-docs/sgx-sdk/sgx_tstd/slice/fn.from_mut.html   |    5 +
 .../sgx-sdk/sgx_tstd/slice/fn.from_raw_parts.html  |   75 +
 .../sgx_tstd/slice/fn.from_raw_parts_mut.html      |   35 +
 api-docs/sgx-sdk/sgx_tstd/slice/fn.from_ref.html   |    5 +
 api-docs/sgx-sdk/sgx_tstd/slice/index.html         |  115 +
 api-docs/sgx-sdk/sgx_tstd/slice/sidebar-items.js   |    1 +
 .../sgx-sdk/sgx_tstd/slice/struct.ArrayChunks.html |  160 +
 .../sgx_tstd/slice/struct.ArrayChunksMut.html      |  154 +
 .../sgx_tstd/slice/struct.ArrayWindows.html        |  154 +
 api-docs/sgx-sdk/sgx_tstd/slice/struct.Chunks.html |  154 +
 .../sgx-sdk/sgx_tstd/slice/struct.ChunksExact.html |  158 +
 .../sgx_tstd/slice/struct.ChunksExactMut.html      |  152 +
 .../sgx-sdk/sgx_tstd/slice/struct.ChunksMut.html   |  148 +
 api-docs/sgx-sdk/sgx_tstd/slice/struct.Iter.html   |  179 +
 .../sgx-sdk/sgx_tstd/slice/struct.IterMut.html     |  204 +
 .../sgx-sdk/sgx_tstd/slice/struct.RChunks.html     |  154 +
 .../sgx_tstd/slice/struct.RChunksExact.html        |  158 +
 .../sgx_tstd/slice/struct.RChunksExactMut.html     |  152 +
 .../sgx-sdk/sgx_tstd/slice/struct.RChunksMut.html  |  148 +
 api-docs/sgx-sdk/sgx_tstd/slice/struct.RSplit.html |  150 +
 .../sgx-sdk/sgx_tstd/slice/struct.RSplitMut.html   |  144 +
 .../sgx-sdk/sgx_tstd/slice/struct.RSplitN.html     |  136 +
 .../sgx-sdk/sgx_tstd/slice/struct.RSplitNMut.html  |  136 +
 api-docs/sgx-sdk/sgx_tstd/slice/struct.Split.html  |  150 +
 .../sgx-sdk/sgx_tstd/slice/struct.SplitMut.html    |  144 +
 api-docs/sgx-sdk/sgx_tstd/slice/struct.SplitN.html |  135 +
 .../sgx-sdk/sgx_tstd/slice/struct.SplitNMut.html   |  135 +
 .../sgx-sdk/sgx_tstd/slice/struct.Windows.html     |  151 +
 api-docs/sgx-sdk/sgx_tstd/slice/trait.Concat.html  |   34 +
 api-docs/sgx-sdk/sgx_tstd/slice/trait.Join.html    |   10 +
 .../sgx-sdk/sgx_tstd/slice/trait.SliceIndex.html   |  102 +
 .../sgx_tstd/str/fn.from_boxed_utf8_unchecked.html |   14 +
 api-docs/sgx-sdk/sgx_tstd/str/fn.from_utf8.html    |   59 +
 .../sgx-sdk/sgx_tstd/str/fn.from_utf8_mut.html     |   29 +
 .../sgx_tstd/str/fn.from_utf8_unchecked.html       |   25 +
 .../sgx_tstd/str/fn.from_utf8_unchecked_mut.html   |   17 +
 api-docs/sgx-sdk/sgx_tstd/str/index.html           |   60 +
 .../sgx_tstd/str/pattern/enum.SearchStep.html      |   42 +
 api-docs/sgx-sdk/sgx_tstd/str/pattern/index.html   |   41 +
 .../sgx-sdk/sgx_tstd/str/pattern/sidebar-items.js  |    1 +
 .../str/pattern/struct.CharPredicateSearcher.html  |   39 +
 .../sgx_tstd/str/pattern/struct.CharSearcher.html  |   39 +
 .../str/pattern/struct.CharSliceSearcher.html      |   39 +
 .../sgx_tstd/str/pattern/struct.StrSearcher.html   |   39 +
 .../str/pattern/trait.DoubleEndedSearcher.html     |   23 +
 .../sgx_tstd/str/pattern/trait.Pattern.html        |  139 +
 .../str/pattern/trait.ReverseSearcher.html         |   56 +
 .../sgx_tstd/str/pattern/trait.Searcher.html       |   68 +
 api-docs/sgx-sdk/sgx_tstd/str/sidebar-items.js     |    1 +
 api-docs/sgx-sdk/sgx_tstd/str/struct.Bytes.html    |  148 +
 .../sgx-sdk/sgx_tstd/str/struct.CharIndices.html   |  149 +
 api-docs/sgx-sdk/sgx_tstd/str/struct.Chars.html    |  159 +
 .../sgx-sdk/sgx_tstd/str/struct.EncodeUtf16.html   |  137 +
 .../sgx-sdk/sgx_tstd/str/struct.EscapeDebug.html   |  137 +
 .../sgx-sdk/sgx_tstd/str/struct.EscapeDefault.html |  137 +
 .../sgx-sdk/sgx_tstd/str/struct.EscapeUnicode.html |  137 +
 api-docs/sgx-sdk/sgx_tstd/str/struct.Lines.html    |  146 +
 api-docs/sgx-sdk/sgx_tstd/str/struct.LinesAny.html |  145 +
 .../sgx-sdk/sgx_tstd/str/struct.MatchIndices.html  |  144 +
 api-docs/sgx-sdk/sgx_tstd/str/struct.Matches.html  |  144 +
 .../sgx_tstd/str/struct.ParseBoolError.html        |   28 +
 .../sgx-sdk/sgx_tstd/str/struct.RMatchIndices.html |  144 +
 api-docs/sgx-sdk/sgx_tstd/str/struct.RMatches.html |  144 +
 api-docs/sgx-sdk/sgx_tstd/str/struct.RSplit.html   |  154 +
 api-docs/sgx-sdk/sgx_tstd/str/struct.RSplitN.html  |  145 +
 .../sgx_tstd/str/struct.RSplitTerminator.html      |  154 +
 api-docs/sgx-sdk/sgx_tstd/str/struct.Split.html    |  154 +
 .../sgx_tstd/str/struct.SplitAsciiWhitespace.html  |  147 +
 api-docs/sgx-sdk/sgx_tstd/str/struct.SplitN.html   |  145 +
 .../sgx_tstd/str/struct.SplitTerminator.html       |  154 +
 .../sgx_tstd/str/struct.SplitWhitespace.html       |  147 +
 .../sgx-sdk/sgx_tstd/str/struct.Utf8Error.html     |   94 +
 api-docs/sgx-sdk/sgx_tstd/str/trait.FromStr.html   |  145 +
 api-docs/sgx-sdk/sgx_tstd/string/index.html        |   46 +
 api-docs/sgx-sdk/sgx_tstd/string/sidebar-items.js  |    1 +
 api-docs/sgx-sdk/sgx_tstd/string/struct.Drain.html |  150 +
 .../sgx_tstd/string/struct.FromUtf16Error.html     |   29 +
 .../sgx_tstd/string/struct.FromUtf8Error.html      |   88 +
 .../sgx-sdk/sgx_tstd/string/struct.String.html     | 1024 +++
 .../sgx-sdk/sgx_tstd/string/trait.ToString.html    |   25 +
 .../sgx-sdk/sgx_tstd/string/type.ParseError.html   |    8 +
 .../sync/atomic/constant.ATOMIC_BOOL_INIT.html     |    6 +
 .../sync/atomic/constant.ATOMIC_I16_INIT.html      |    6 +
 .../sync/atomic/constant.ATOMIC_I32_INIT.html      |    6 +
 .../sync/atomic/constant.ATOMIC_I64_INIT.html      |    6 +
 .../sync/atomic/constant.ATOMIC_I8_INIT.html       |    6 +
 .../sync/atomic/constant.ATOMIC_ISIZE_INIT.html    |    6 +
 .../sync/atomic/constant.ATOMIC_U16_INIT.html      |    6 +
 .../sync/atomic/constant.ATOMIC_U32_INIT.html      |    6 +
 .../sync/atomic/constant.ATOMIC_U64_INIT.html      |    6 +
 .../sync/atomic/constant.ATOMIC_U8_INIT.html       |    6 +
 .../sync/atomic/constant.ATOMIC_USIZE_INIT.html    |    6 +
 .../sgx_tstd/sync/atomic/enum.Ordering.html        |   71 +
 .../sgx_tstd/sync/atomic/fn.compiler_fence.html    |   61 +
 .../sgx-sdk/sgx_tstd/sync/atomic/fn.fence.html     |   62 +
 .../sgx_tstd/sync/atomic/fn.spin_loop_hint.html    |   15 +
 api-docs/sgx-sdk/sgx_tstd/sync/atomic/index.html   |  115 +
 .../sgx-sdk/sgx_tstd/sync/atomic/sidebar-items.js  |    1 +
 .../sgx_tstd/sync/atomic/struct.AtomicBool.html    |  303 +
 .../sgx_tstd/sync/atomic/struct.AtomicI16.html     |  381 +
 .../sgx_tstd/sync/atomic/struct.AtomicI32.html     |  381 +
 .../sgx_tstd/sync/atomic/struct.AtomicI64.html     |  381 +
 .../sgx_tstd/sync/atomic/struct.AtomicI8.html      |  380 +
 .../sgx_tstd/sync/atomic/struct.AtomicIsize.html   |  381 +
 .../sgx_tstd/sync/atomic/struct.AtomicPtr.html     |  173 +
 .../sgx_tstd/sync/atomic/struct.AtomicU16.html     |  381 +
 .../sgx_tstd/sync/atomic/struct.AtomicU32.html     |  381 +
 .../sgx_tstd/sync/atomic/struct.AtomicU64.html     |  381 +
 .../sgx_tstd/sync/atomic/struct.AtomicU8.html      |  380 +
 .../sgx_tstd/sync/atomic/struct.AtomicUsize.html   |  381 +
 .../sgx_tstd/sync/barrier/struct.Barrier.html      |   10 +
 .../sync/barrier/struct.BarrierWaitResult.html     |   10 +
 .../sgx_tstd/sync/condvar/struct.SgxCondvar.html   |   10 +
 .../sync/condvar/struct.SgxThreadCondvar.html      |   10 +
 .../sync/condvar/struct.WaitTimeoutResult.html     |   10 +
 .../sgx-sdk/sgx_tstd/sync/constant.ONCE_INIT.html  |    5 +
 .../sgx-sdk/sgx_tstd/sync/enum.TryLockError.html   |   31 +
 api-docs/sgx-sdk/sgx_tstd/sync/index.html          |   58 +
 .../sgx_tstd/sync/mutex/struct.SgxMutex.html       |   10 +
 .../sgx_tstd/sync/mutex/struct.SgxMutexGuard.html  |   10 +
 .../sgx_tstd/sync/mutex/struct.SgxThreadMutex.html |   10 +
 .../sgx_tstd/sync/once/constant.ONCE_INIT.html     |   10 +
 .../sgx-sdk/sgx_tstd/sync/once/struct.Once.html    |   10 +
 .../sgx_tstd/sync/once/struct.OnceState.html       |   10 +
 .../sync/remutex/struct.SgxReentrantMutex.html     |   10 +
 .../remutex/struct.SgxReentrantMutexGuard.html     |   10 +
 .../remutex/struct.SgxReentrantThreadMutex.html    |   10 +
 .../sgx_tstd/sync/rwlock/struct.SgxRwLock.html     |   10 +
 .../sync/rwlock/struct.SgxRwLockReadGuard.html     |   10 +
 .../sync/rwlock/struct.SgxRwLockWriteGuard.html    |   10 +
 .../sync/rwlock/struct.SgxThreadRwLock.html        |   10 +
 api-docs/sgx-sdk/sgx_tstd/sync/sidebar-items.js    |    1 +
 .../sgx_tstd/sync/spinlock/struct.SgxSpinlock.html |   10 +
 .../sync/spinlock/struct.SgxSpinlockGuard.html     |   10 +
 .../sync/spinlock/struct.SgxThreadSpinlock.html    |   10 +
 api-docs/sgx-sdk/sgx_tstd/sync/struct.Arc.html     |  669 ++
 api-docs/sgx-sdk/sgx_tstd/sync/struct.Barrier.html |   26 +
 .../sgx_tstd/sync/struct.BarrierWaitResult.html    |   19 +
 api-docs/sgx-sdk/sgx_tstd/sync/struct.Once.html    |   62 +
 .../sgx-sdk/sgx_tstd/sync/struct.OnceState.html    |   18 +
 .../sgx-sdk/sgx_tstd/sync/struct.PoisonError.html  |   32 +
 .../sgx-sdk/sgx_tstd/sync/struct.SgxCondvar.html   |  149 +
 .../sgx-sdk/sgx_tstd/sync/struct.SgxMutex.html     |   80 +
 .../sgx_tstd/sync/struct.SgxMutexGuard.html        |   26 +
 .../sgx_tstd/sync/struct.SgxReentrantMutex.html    |   37 +
 .../sync/struct.SgxReentrantMutexGuard.html        |   28 +
 .../sync/struct.SgxReentrantThreadMutex.html       |  103 +
 .../sgx-sdk/sgx_tstd/sync/struct.SgxRwLock.html    |  111 +
 .../sgx_tstd/sync/struct.SgxRwLockReadGuard.html   |   23 +
 .../sgx_tstd/sync/struct.SgxRwLockWriteGuard.html  |   24 +
 .../sgx-sdk/sgx_tstd/sync/struct.SgxSpinlock.html  |   14 +
 .../sgx_tstd/sync/struct.SgxSpinlockGuard.html     |   14 +
 .../sgx_tstd/sync/struct.SgxThreadCondvar.html     |   13 +
 .../sgx_tstd/sync/struct.SgxThreadMutex.html       |  103 +
 .../sgx_tstd/sync/struct.SgxThreadRwLock.html      |   31 +
 .../sgx_tstd/sync/struct.SgxThreadSpinlock.html    |   13 +
 .../sgx_tstd/sync/struct.WaitTimeoutResult.html    |   27 +
 api-docs/sgx-sdk/sgx_tstd/sync/struct.Weak.html    |  209 +
 .../sgx-sdk/sgx_tstd/sync/type.LockResult.html     |   10 +
 .../sgx-sdk/sgx_tstd/sync/type.TryLockResult.html  |    8 +
 api-docs/sgx-sdk/sgx_tstd/sys/ext/ffi/index.html   |   10 +
 .../sgx-sdk/sgx_tstd/sys/ext/fs/fn.symlink.html    |   10 +
 api-docs/sgx-sdk/sgx_tstd/sys/ext/fs/index.html    |   10 +
 .../sgx_tstd/sys/ext/fs/trait.DirBuilderExt.html   |   10 +
 .../sgx_tstd/sys/ext/fs/trait.DirEntryExt.html     |   10 +
 .../sgx-sdk/sgx_tstd/sys/ext/fs/trait.FileExt.html |   10 +
 .../sgx_tstd/sys/ext/fs/trait.FileTypeExt.html     |   10 +
 .../sgx_tstd/sys/ext/fs/trait.MetadataExt.html     |   10 +
 .../sgx_tstd/sys/ext/fs/trait.OpenOptionsExt.html  |   10 +
 .../sgx_tstd/sys/ext/fs/trait.PermissionsExt.html  |   10 +
 api-docs/sgx-sdk/sgx_tstd/sys/ext/index.html       |   10 +
 api-docs/sgx-sdk/sgx_tstd/sys/ext/io/index.html    |   10 +
 .../sgx-sdk/sgx_tstd/sys/ext/io/trait.AsRawFd.html |   10 +
 .../sgx_tstd/sys/ext/io/trait.FromRawFd.html       |   10 +
 .../sgx_tstd/sys/ext/io/trait.IntoRawFd.html       |   10 +
 .../sgx-sdk/sgx_tstd/sys/ext/io/type.RawFd.html    |   10 +
 .../sgx-sdk/sgx_tstd/sys/ext/prelude/index.html    |   10 +
 api-docs/sgx-sdk/sgx_tstd/sys/ext/raw/index.html   |   10 +
 .../sgx-sdk/sgx_tstd/sys/ext/raw/type.gid_t.html   |   10 +
 .../sgx-sdk/sgx_tstd/sys/ext/raw/type.pid_t.html   |   10 +
 .../sgx-sdk/sgx_tstd/sys/ext/raw/type.uid_t.html   |   10 +
 .../sgx-sdk/sgx_tstd/sys/fd/libc/enum.c_void.html  |   10 +
 .../sgx-sdk/sgx_tstd/sys/fs/libc/enum.c_void.html  |   10 +
 api-docs/sgx-sdk/sgx_tstd/sys/os/fn.errno.html     |   10 +
 .../sgx-sdk/sgx_tstd/sys/os/fn.error_string.html   |   10 +
 api-docs/sgx-sdk/sgx_tstd/sys/os/fn.set_errno.html |   10 +
 .../sgx-sdk/sgx_tstd/sys/os/libc/enum.c_void.html  |   10 +
 .../sgx_tstd/sys/time/inner/libc/enum.c_void.html  |   10 +
 .../sgx-sdk/sgx_tstd/sys_common/fn.at_exit.html    |   10 +
 .../sys_common/os_str_bytes/trait.OsStrExt.html    |   10 +
 .../sys_common/os_str_bytes/trait.OsStringExt.html |   10 +
 .../sys_common/poison/enum.TryLockError.html       |   10 +
 .../sys_common/poison/struct.PoisonError.html      |   10 +
 .../sys_common/poison/type.LockResult.html         |   10 +
 .../sys_common/poison/type.TryLockResult.html      |   10 +
 api-docs/sgx-sdk/sgx_tstd/task/enum.Poll.html      |   81 +
 api-docs/sgx-sdk/sgx_tstd/task/index.html          |   18 +
 api-docs/sgx-sdk/sgx_tstd/task/macro.ready!.html   |   10 +
 api-docs/sgx-sdk/sgx_tstd/task/macro.ready.html    |   34 +
 api-docs/sgx-sdk/sgx_tstd/task/sidebar-items.js    |    1 +
 api-docs/sgx-sdk/sgx_tstd/task/struct.Context.html |   19 +
 .../sgx-sdk/sgx_tstd/task/struct.RawWaker.html     |   31 +
 .../sgx_tstd/task/struct.RawWakerVTable.html       |   56 +
 api-docs/sgx-sdk/sgx_tstd/task/struct.Waker.html   |   41 +
 api-docs/sgx-sdk/sgx_tstd/thread/fn.current.html   |    5 +
 .../sgx-sdk/sgx_tstd/thread/fn.current_td.html     |    4 +
 api-docs/sgx-sdk/sgx_tstd/thread/fn.panicking.html |   12 +
 api-docs/sgx-sdk/sgx_tstd/thread/fn.park.html      |   50 +
 .../sgx-sdk/sgx_tstd/thread/fn.park_timeout.html   |   35 +
 .../sgx_tstd/thread/fn.park_timeout_ms.html        |   13 +
 .../sgx_tstd/thread/fn.rsgx_thread_equal.html      |   13 +
 .../sgx_tstd/thread/fn.rsgx_thread_self.html       |   12 +
 api-docs/sgx-sdk/sgx_tstd/thread/index.html        |   20 +
 .../sgx_tstd/thread/local/statik/struct.Key.html   |   10 +
 .../sgx_tstd/thread/local/struct.AccessError.html  |   10 +
 .../sgx_tstd/thread/local/struct.LocalKey.html     |   10 +
 api-docs/sgx-sdk/sgx_tstd/thread/sidebar-items.js  |    1 +
 .../sgx_tstd/thread/struct.AccessError.html        |   19 +
 .../sgx-sdk/sgx_tstd/thread/struct.LocalKey.html   |   27 +
 .../sgx-sdk/sgx_tstd/thread/struct.SgxThread.html  |   29 +
 .../sgx-sdk/sgx_tstd/thread/struct.ThreadId.html   |   47 +
 .../thread/struct.__StaticLocalKeyInner.html       |   14 +
 api-docs/sgx-sdk/sgx_tstd/thread/type.Result.html  |   19 +
 .../sgx-sdk/sgx_tstd/time/constant.UNIX_EPOCH.html |   11 +
 api-docs/sgx-sdk/sgx_tstd/time/index.html          |   18 +
 api-docs/sgx-sdk/sgx_tstd/time/sidebar-items.js    |    1 +
 .../sgx-sdk/sgx_tstd/time/struct.Duration.html     |  449 +
 api-docs/sgx-sdk/sgx_tstd/time/struct.Instant.html |   82 +
 .../sgx-sdk/sgx_tstd/time/struct.SystemTime.html   |   94 +
 .../sgx_tstd/time/struct.SystemTimeError.html      |   32 +
 api-docs/sgx-sdk/sgx_tstd/u128/constant.MAX.html   |   13 +
 api-docs/sgx-sdk/sgx_tstd/u128/constant.MIN.html   |   13 +
 api-docs/sgx-sdk/sgx_tstd/u128/index.html          |   13 +
 api-docs/sgx-sdk/sgx_tstd/u128/sidebar-items.js    |    1 +
 api-docs/sgx-sdk/sgx_tstd/u16/constant.MAX.html    |   13 +
 api-docs/sgx-sdk/sgx_tstd/u16/constant.MIN.html    |   13 +
 api-docs/sgx-sdk/sgx_tstd/u16/index.html           |   13 +
 api-docs/sgx-sdk/sgx_tstd/u16/sidebar-items.js     |    1 +
 api-docs/sgx-sdk/sgx_tstd/u32/constant.MAX.html    |   13 +
 api-docs/sgx-sdk/sgx_tstd/u32/constant.MIN.html    |   13 +
 api-docs/sgx-sdk/sgx_tstd/u32/index.html           |   13 +
 api-docs/sgx-sdk/sgx_tstd/u32/sidebar-items.js     |    1 +
 api-docs/sgx-sdk/sgx_tstd/u64/constant.MAX.html    |   13 +
 api-docs/sgx-sdk/sgx_tstd/u64/constant.MIN.html    |   13 +
 api-docs/sgx-sdk/sgx_tstd/u64/index.html           |   13 +
 api-docs/sgx-sdk/sgx_tstd/u64/sidebar-items.js     |    1 +
 api-docs/sgx-sdk/sgx_tstd/u8/constant.MAX.html     |   13 +
 api-docs/sgx-sdk/sgx_tstd/u8/constant.MIN.html     |   13 +
 api-docs/sgx-sdk/sgx_tstd/u8/index.html            |   13 +
 api-docs/sgx-sdk/sgx_tstd/u8/sidebar-items.js      |    1 +
 .../sgx_tstd/untrusted/fs/fn.canonicalize.html     |   22 +
 .../sgx-sdk/sgx_tstd/untrusted/fs/fn.copy.html     |   31 +
 .../sgx_tstd/untrusted/fs/fn.create_dir.html       |   22 +
 .../sgx_tstd/untrusted/fs/fn.create_dir_all.html   |   24 +
 .../sgx_tstd/untrusted/fs/fn.hard_link.html        |   17 +
 .../sgx-sdk/sgx_tstd/untrusted/fs/fn.metadata.html |   19 +
 .../sgx-sdk/sgx_tstd/untrusted/fs/fn.read.html     |   14 +
 .../sgx-sdk/sgx_tstd/untrusted/fs/fn.read_dir.html |   22 +
 .../sgx_tstd/untrusted/fs/fn.read_link.html        |   17 +
 .../sgx_tstd/untrusted/fs/fn.read_to_string.html   |   15 +
 .../sgx_tstd/untrusted/fs/fn.remove_dir.html       |   16 +
 .../sgx_tstd/untrusted/fs/fn.remove_dir_all.html   |   15 +
 .../sgx_tstd/untrusted/fs/fn.remove_file.html      |   19 +
 .../sgx-sdk/sgx_tstd/untrusted/fs/fn.rename.html   |   23 +
 .../sgx_tstd/untrusted/fs/fn.set_permissions.html  |   16 +
 .../sgx_tstd/untrusted/fs/fn.soft_link.html        |   10 +
 .../sgx_tstd/untrusted/fs/fn.symlink_metadata.html |   16 +
 .../sgx-sdk/sgx_tstd/untrusted/fs/fn.write.html    |    9 +
 api-docs/sgx-sdk/sgx_tstd/untrusted/fs/index.html  |   40 +
 .../sgx-sdk/sgx_tstd/untrusted/fs/sidebar-items.js |    1 +
 .../sgx_tstd/untrusted/fs/struct.DirBuilder.html   |   47 +
 .../sgx_tstd/untrusted/fs/struct.DirEntry.html     |   39 +
 .../sgx-sdk/sgx_tstd/untrusted/fs/struct.File.html |  134 +
 .../sgx_tstd/untrusted/fs/struct.FileType.html     |   48 +
 .../sgx_tstd/untrusted/fs/struct.Metadata.html     |   92 +
 .../sgx_tstd/untrusted/fs/struct.OpenOptions.html  |  106 +
 .../sgx_tstd/untrusted/fs/struct.Permissions.html  |   41 +
 .../sgx_tstd/untrusted/fs/struct.ReadDir.html      |  138 +
 api-docs/sgx-sdk/sgx_tstd/untrusted/index.html     |    6 +
 .../sgx-sdk/sgx_tstd/untrusted/path/index.html     |    5 +
 .../sgx_tstd/untrusted/path/sidebar-items.js       |    1 +
 .../sgx_tstd/untrusted/path/trait.PathEx.html      |   39 +
 .../sgx-sdk/sgx_tstd/untrusted/sidebar-items.js    |    1 +
 .../sgx-sdk/sgx_tstd/untrusted/time/index.html     |    5 +
 .../sgx_tstd/untrusted/time/sidebar-items.js       |    1 +
 .../sgx_tstd/untrusted/time/trait.InstantEx.html   |   13 +
 .../untrusted/time/trait.SystemTimeEx.html         |   16 +
 api-docs/sgx-sdk/sgx_tstd/usize/constant.MAX.html  |   13 +
 api-docs/sgx-sdk/sgx_tstd/usize/constant.MIN.html  |   13 +
 api-docs/sgx-sdk/sgx_tstd/usize/index.html         |   13 +
 api-docs/sgx-sdk/sgx_tstd/usize/sidebar-items.js   |    1 +
 api-docs/sgx-sdk/sgx_tstd/vec/index.html           |   47 +
 api-docs/sgx-sdk/sgx_tstd/vec/sidebar-items.js     |    1 +
 api-docs/sgx-sdk/sgx_tstd/vec/struct.Drain.html    |  156 +
 .../sgx-sdk/sgx_tstd/vec/struct.DrainFilter.html   |  139 +
 api-docs/sgx-sdk/sgx_tstd/vec/struct.IntoIter.html |  174 +
 api-docs/sgx-sdk/sgx_tstd/vec/struct.Splice.html   |  148 +
 api-docs/sgx-sdk/sgx_tstd/vec/struct.Vec.html      | 1069 +++
 api-docs/sgx-sdk/sgx_types/all.html                |    6 +
 .../sgx_types/constant.DMP1_SIZE_IN_BYTES.html     |    4 +
 .../sgx_types/constant.DMP1_SIZE_IN_UINT.html      |    4 +
 .../sgx_types/constant.DMQ1_SIZE_IN_BYTES.html     |    4 +
 .../sgx_types/constant.DMQ1_SIZE_IN_UINT.html      |    4 +
 .../sgx_types/constant.D_SIZE_IN_BYTES.html        |    4 +
 .../sgx-sdk/sgx_types/constant.D_SIZE_IN_UINT.html |    4 +
 .../sgx_types/constant.ENCLAVE_CRASHED.html        |    4 +
 .../sgx_types/constant.ENCLAVE_INIT_DONE.html      |    4 +
 .../constant.ENCLAVE_INIT_IN_PROGRESS.html         |    4 +
 .../constant.ENCLAVE_INIT_NOT_STARTED.html         |    4 +
 .../constant.EXCEPTION_CONTINUE_EXECUTION.html     |    4 +
 .../constant.EXCEPTION_CONTINUE_SEARCH.html        |    4 +
 .../sgx_types/constant.E_SIZE_IN_BYTES.html        |    4 +
 .../sgx-sdk/sgx_types/constant.E_SIZE_IN_UINT.html |    4 +
 .../sgx-sdk/sgx_types/constant.FILENAME_MAX.html   |    4 +
 .../constant.FLAGS_NON_SECURITY_BITS.html          |    7 +
 .../constant.FLAGS_SECURITY_BITS_RESERVED.html     |    7 +
 api-docs/sgx-sdk/sgx_types/constant.FOPEN_MAX.html |    4 +
 .../sgx_types/constant.IQMP_SIZE_IN_BYTES.html     |    4 +
 .../sgx_types/constant.IQMP_SIZE_IN_UINT.html      |    4 +
 .../sgx_types/constant.MAX_EX_FEATURES_COUNT.html  |    4 +
 .../sgx_types/constant.MISC_NON_SECURITY_BITS.html |    4 +
 .../sgx_types/constant.N_SIZE_IN_BYTES.html        |    4 +
 .../sgx-sdk/sgx_types/constant.N_SIZE_IN_UINT.html |    4 +
 .../sgx_types/constant.PCE_ALG_RSA_OAEP_3072.html  |    4 +
 api-docs/sgx-sdk/sgx_types/constant.PCE_ID.html    |    4 +
 .../constant.PCE_NIST_P256_ECDSA_SHA256.html       |    4 +
 .../constant.PLATFORM_INSTANCE_ID_SIZE.html        |    4 +
 .../constant.PS_CAP_MONOTONIC_COUNTER.html         |    4 +
 .../sgx_types/constant.PS_CAP_TRUSTED_TIME.html    |    4 +
 .../sgx_types/constant.P_SIZE_IN_BYTES.html        |    4 +
 .../sgx-sdk/sgx_types/constant.P_SIZE_IN_UINT.html |    4 +
 .../sgx_types/constant.Q_SIZE_IN_BYTES.html        |    4 +
 .../sgx-sdk/sgx_types/constant.Q_SIZE_IN_UINT.html |    4 +
 ...tant.REF_QUOTE_MAX_AUTHENTICATON_DATA_SIZE.html |    4 +
 .../sgx_types/constant.ROOT_KEY_ID_SIZE.html       |    4 +
 .../sgx-sdk/sgx_types/constant.SE_WORDSIZE.html    |    4 +
 .../sgx_types/constant.SGX_AESCTR_KEY_SIZE.html    |    4 +
 .../sgx_types/constant.SGX_AESGCM_IV_SIZE.html     |    4 +
 .../sgx_types/constant.SGX_AESGCM_KEY_SIZE.html    |    4 +
 .../sgx_types/constant.SGX_AESGCM_MAC_SIZE.html    |    4 +
 .../sgx_types/constant.SGX_CMAC_KEY_SIZE.html      |    4 +
 .../sgx_types/constant.SGX_CMAC_MAC_SIZE.html      |    4 +
 .../sgx_types/constant.SGX_CONFIGID_SIZE.html      |    4 +
 .../sgx_types/constant.SGX_CPUSVN_SIZE.html        |    4 +
 .../constant.SGX_CREATE_ENCLAVE_EX_KSS.html        |    4 +
 ...constant.SGX_CREATE_ENCLAVE_EX_KSS_BIT_IDX.html |    4 +
 .../constant.SGX_CREATE_ENCLAVE_EX_PCL.html        |    4 +
 ...constant.SGX_CREATE_ENCLAVE_EX_PCL_BIT_IDX.html |    4 +
 .../constant.SGX_CREATE_ENCLAVE_EX_SWITCHLESS.html |    4 +
 ...t.SGX_CREATE_ENCLAVE_EX_SWITCHLESS_BIT_IDX.html |    4 +
 .../sgx_types/constant.SGX_DH_MAC_SIZE.html        |    4 +
 .../constant.SGX_DH_SESSION_DATA_SIZE.html         |    4 +
 .../sgx_types/constant.SGX_ECP256_KEY_SIZE.html    |    4 +
 .../sgx-sdk/sgx_types/constant.SGX_FEBITSIZE.html  |    4 +
 .../sgx_types/constant.SGX_FLAGS_DEBUG.html        |    4 +
 .../constant.SGX_FLAGS_EINITTOKEN_KEY.html         |    4 +
 .../sgx_types/constant.SGX_FLAGS_INITTED.html      |    4 +
 .../sgx-sdk/sgx_types/constant.SGX_FLAGS_KSS.html  |    4 +
 .../sgx_types/constant.SGX_FLAGS_MODE64BIT.html    |    4 +
 .../constant.SGX_FLAGS_PROVISION_KEY.html          |    4 +
 .../sgx_types/constant.SGX_FLAGS_RESERVED.html     |    9 +
 .../sgx-sdk/sgx_types/constant.SGX_HASH_SIZE.html  |    4 +
 .../sgx_types/constant.SGX_HMAC256_KEY_SIZE.html   |    4 +
 .../sgx_types/constant.SGX_HMAC256_MAC_SIZE.html   |    4 +
 .../constant.SGX_ISVEXT_PROD_ID_SIZE.html          |    4 +
 .../sgx_types/constant.SGX_ISV_FAMILY_ID_SIZE.html |    4 +
 .../sgx-sdk/sgx_types/constant.SGX_KEYID_SIZE.html |    4 +
 .../sgx_types/constant.SGX_KEYPOLICY_CONFIGID.html |    4 +
 .../constant.SGX_KEYPOLICY_ISVEXTPRODID.html       |    4 +
 .../constant.SGX_KEYPOLICY_ISVFAMILYID.html        |    4 +
 .../constant.SGX_KEYPOLICY_MRENCLAVE.html          |    4 +
 .../sgx_types/constant.SGX_KEYPOLICY_MRSIGNER.html |    4 +
 .../constant.SGX_KEYPOLICY_NOISVPRODID.html        |    4 +
 .../sgx_types/constant.SGX_KEYSELECT_LICENSE.html  |    4 +
 .../constant.SGX_KEYSELECT_PROVISION.html          |    4 +
 .../constant.SGX_KEYSELECT_PROVISION_SEAL.html     |    4 +
 .../sgx_types/constant.SGX_KEYSELECT_REPORT.html   |    4 +
 .../sgx_types/constant.SGX_KEYSELECT_SEAL.html     |    4 +
 .../constant.SGX_KEY_REQUEST_RESERVED2_BYTES.html  |    4 +
 .../sgx-sdk/sgx_types/constant.SGX_MAC_SIZE.html   |    4 +
 .../constant.SGX_NISTP_ECP256_KEY_SIZE.html        |    4 +
 .../sgx-sdk/sgx_types/constant.SGX_PCL_GUID.html   |    4 +
 .../sgx_types/constant.SGX_PCL_GUID_SIZE.html      |    4 +
 .../sgx_types/constant.SGX_PLATFORM_INFO_SIZE.html |    4 +
 .../sgx-sdk/sgx_types/constant.SGX_PROT_EXEC.html  |    4 +
 .../sgx-sdk/sgx_types/constant.SGX_PROT_NONE.html  |    4 +
 .../sgx-sdk/sgx_types/constant.SGX_PROT_READ.html  |    4 +
 .../sgx-sdk/sgx_types/constant.SGX_PROT_WRITE.html |    4 +
 .../constant.SGX_REPORT_BODY_RESERVED1_BYTES.html  |    4 +
 .../constant.SGX_REPORT_BODY_RESERVED2_BYTES.html  |    4 +
 .../constant.SGX_REPORT_BODY_RESERVED3_BYTES.html  |    4 +
 .../constant.SGX_REPORT_BODY_RESERVED4_BYTES.html  |    4 +
 .../sgx_types/constant.SGX_REPORT_DATA_SIZE.html   |    4 +
 .../sgx_types/constant.SGX_RSA3072_KEY_SIZE.html   |    4 +
 .../constant.SGX_RSA3072_PRI_EXP_SIZE.html         |    4 +
 .../constant.SGX_RSA3072_PUB_EXP_SIZE.html         |    4 +
 .../sgx_types/constant.SGX_SEAL_IV_SIZE.html       |    4 +
 .../sgx_types/constant.SGX_SEAL_TAG_SIZE.html      |    4 +
 .../sgx_types/constant.SGX_SHA1_HASH_SIZE.html     |    4 +
 .../sgx_types/constant.SGX_SHA256_HASH_SIZE.html   |    4 +
 .../constant.SGX_SPINLOCK_INITIALIZER.html         |    4 +
 .../constant.SGX_TARGET_INFO_RESERVED1_BYTES.html  |    4 +
 .../constant.SGX_TARGET_INFO_RESERVED2_BYTES.html  |    4 +
 .../constant.SGX_TARGET_INFO_RESERVED3_BYTES.html  |    4 +
 .../constant.SGX_THREAD_COND_INITIALIZER.html      |    4 +
 .../constant.SGX_THREAD_LOCK_INITIALIZER.html      |    4 +
 .../constant.SGX_THREAD_MUTEX_INITIALIZER.html     |    4 +
 .../constant.SGX_THREAD_MUTEX_NONRECURSIVE.html    |    4 +
 .../constant.SGX_THREAD_MUTEX_RECURSIVE.html       |    4 +
 ....SGX_THREAD_NONRECURSIVE_MUTEX_INITIALIZER.html |    4 +
 ...ant.SGX_THREAD_RECURSIVE_MUTEX_INITIALIZER.html |    4 +
 .../sgx_types/constant.SGX_THREAD_T_NULL.html      |    4 +
 .../sgx-sdk/sgx_types/constant.SGX_XFRM_AVX.html   |    4 +
 .../sgx_types/constant.SGX_XFRM_AVX512.html        |    4 +
 .../sgx_types/constant.SGX_XFRM_LEGACY.html        |    4 +
 .../sgx-sdk/sgx_types/constant.SGX_XFRM_MPX.html   |    4 +
 .../sgx_types/constant.SGX_XFRM_RESERVED.html      |    4 +
 .../constant.SL_DEFAULT_FALLBACK_RETRIES.html      |    4 +
 .../constant.SL_DEFAULT_SLEEP_RETRIES.html         |    4 +
 .../constant.SL_DEFUALT_MAX_TASKS_QWORDS.html      |    4 +
 .../constant.SL_MAX_TASKS_MAX_QWORDS.html          |    4 +
 .../constant.TSEAL_DEFAULT_FLAGSMASK.html          |    4 +
 .../sgx_types/constant.TSEAL_DEFAULT_MISCMASK.html |    4 +
 .../sgx_types/constant._SGX_EX_FEATURES_MASK_.html |    4 +
 .../constant._SGX_LAST_EX_FEATURE_IDX_.html        |    4 +
 ...constant._SGX_USWITCHLESS_WORKER_EVENT_NUM.html |    4 +
 .../cpu_feature/constant.CPU_FEATURE_ADX.html      |    4 +
 .../cpu_feature/constant.CPU_FEATURE_AES.html      |    4 +
 .../cpu_feature/constant.CPU_FEATURE_AVX.html      |    4 +
 .../cpu_feature/constant.CPU_FEATURE_AVX2.html     |    4 +
 .../cpu_feature/constant.CPU_FEATURE_AVX512BW.html |    4 +
 .../cpu_feature/constant.CPU_FEATURE_AVX512CD.html |    4 +
 .../cpu_feature/constant.CPU_FEATURE_AVX512DQ.html |    4 +
 .../cpu_feature/constant.CPU_FEATURE_AVX512ER.html |    4 +
 .../cpu_feature/constant.CPU_FEATURE_AVX512F.html  |    4 +
 .../constant.CPU_FEATURE_AVX512IFMA52.html         |    4 +
 .../cpu_feature/constant.CPU_FEATURE_AVX512PF.html |    4 +
 .../constant.CPU_FEATURE_AVX512VBMI.html           |    4 +
 .../cpu_feature/constant.CPU_FEATURE_AVX512VL.html |    4 +
 .../constant.CPU_FEATURE_AVX512_4FMAPS.html        |    4 +
 .../constant.CPU_FEATURE_AVX512_4VNNIW.html        |    4 +
 .../constant.CPU_FEATURE_AVX512_BITALG.html        |    4 +
 .../constant.CPU_FEATURE_AVX512_VBMI2.html         |    4 +
 .../constant.CPU_FEATURE_AVX512_VNNI.html          |    4 +
 .../constant.CPU_FEATURE_AVX512_VPOPCNTDQ.html     |    4 +
 .../cpu_feature/constant.CPU_FEATURE_BMI.html      |    4 +
 .../cpu_feature/constant.CPU_FEATURE_CLWB.html     |    4 +
 .../cpu_feature/constant.CPU_FEATURE_CMOV.html     |    4 +
 .../cpu_feature/constant.CPU_FEATURE_F16C.html     |    4 +
 .../cpu_feature/constant.CPU_FEATURE_FMA.html      |    4 +
 .../cpu_feature/constant.CPU_FEATURE_FPU.html      |    4 +
 .../cpu_feature/constant.CPU_FEATURE_FXSAVE.html   |    4 +
 .../constant.CPU_FEATURE_F_INORDER.html            |    4 +
 .../constant.CPU_FEATURE_GENERIC_IA32.html         |    4 +
 .../cpu_feature/constant.CPU_FEATURE_GFNI.html     |    4 +
 .../cpu_feature/constant.CPU_FEATURE_HLE.html      |    4 +
 .../cpu_feature/constant.CPU_FEATURE_IBT.html      |    4 +
 .../cpu_feature/constant.CPU_FEATURE_KNCNI.html    |    4 +
 .../cpu_feature/constant.CPU_FEATURE_LZCNT.html    |    4 +
 .../cpu_feature/constant.CPU_FEATURE_MMX.html      |    4 +
 .../cpu_feature/constant.CPU_FEATURE_MOVBE.html    |    4 +
 .../cpu_feature/constant.CPU_FEATURE_MPX.html      |    4 +
 .../constant.CPU_FEATURE_PCLMULQDQ.html            |    4 +
 .../cpu_feature/constant.CPU_FEATURE_PCONFIG.html  |    4 +
 .../cpu_feature/constant.CPU_FEATURE_POPCNT.html   |    4 +
 .../cpu_feature/constant.CPU_FEATURE_PTWRITE.html  |    4 +
 .../cpu_feature/constant.CPU_FEATURE_RDPID.html    |    4 +
 .../cpu_feature/constant.CPU_FEATURE_RDRND.html    |    4 +
 .../cpu_feature/constant.CPU_FEATURE_RDSEED.html   |    4 +
 .../cpu_feature/constant.CPU_FEATURE_RTM.html      |    4 +
 .../cpu_feature/constant.CPU_FEATURE_SGX.html      |    4 +
 .../cpu_feature/constant.CPU_FEATURE_SHA.html      |    4 +
 .../cpu_feature/constant.CPU_FEATURE_SHSTK.html    |    4 +
 .../cpu_feature/constant.CPU_FEATURE_SSE.html      |    4 +
 .../cpu_feature/constant.CPU_FEATURE_SSE2.html     |    4 +
 .../cpu_feature/constant.CPU_FEATURE_SSE3.html     |    4 +
 .../cpu_feature/constant.CPU_FEATURE_SSE4_1.html   |    4 +
 .../cpu_feature/constant.CPU_FEATURE_SSE4_2.html   |    4 +
 .../cpu_feature/constant.CPU_FEATURE_SSSE3.html    |    4 +
 .../cpu_feature/constant.CPU_FEATURE_VAES.html     |    4 +
 .../constant.CPU_FEATURE_VPCLMULQDQ.html           |    4 +
 .../cpu_feature/constant.CPU_FEATURE_WBNOINVD.html |    4 +
 .../cpu_feature/constant.INCOMPAT_FEATURE_BIT.html |    4 +
 .../constant.RESERVED_CPU_FEATURE_BIT.html         |    4 +
 api-docs/sgx-sdk/sgx_types/cpu_feature/index.html  |    5 +
 .../sgx-sdk/sgx_types/cpu_feature/sidebar-items.js |    1 +
 api-docs/sgx-sdk/sgx_types/enum.c_void.html        |   26 +
 .../sgx_types/enum.pck_cert_flag_enum_t.html       |   25 +
 .../sgx_types/enum.sgx_device_status_t.html        |   30 +
 .../sgx_types/enum.sgx_dh_session_role_t.html      |   24 +
 .../sgx_types/enum.sgx_exception_type_t.html       |   24 +
 .../sgx_types/enum.sgx_exception_vector_t.html     |   33 +
 .../sgx_types/enum.sgx_generic_ecresult_t.html     |   40 +
 .../sgx-sdk/sgx_types/enum.sgx_pce_error_t.html    |   44 +
 .../sgx-sdk/sgx_types/enum.sgx_qcnl_error_t.html   |   53 +
 .../enum.sgx_ql_attestation_algorithm_id_t.html    |   27 +
 .../sgx_types/enum.sgx_ql_cert_key_type_t.html     |   29 +
 .../sgx_types/enum.sgx_ql_config_version_t.html    |   23 +
 .../sgx-sdk/sgx_types/enum.sgx_ql_path_type_t.html |   25 +
 .../sgx-sdk/sgx_types/enum.sgx_ql_qv_result_t.html |   45 +
 .../sgx_types/enum.sgx_ql_request_policy_t.html    |   24 +
 .../sgx-sdk/sgx_types/enum.sgx_quote3_error_t.html |  111 +
 .../sgx_types/enum.sgx_quote_sign_type_t.html      |   24 +
 .../sgx-sdk/sgx_types/enum.sgx_qv_path_type_t.html |   24 +
 .../sgx-sdk/sgx_types/enum.sgx_ra_key_type_t.html  |   24 +
 .../sgx-sdk/sgx_types/enum.sgx_rsa_key_type_t.html |   24 +
 .../sgx-sdk/sgx_types/enum.sgx_rsa_result_t.html   |   24 +
 api-docs/sgx-sdk/sgx_types/enum.sgx_status_t.html  |  113 +
 .../enum.sgx_uswitchless_worker_event_t.html       |   27 +
 .../enum.sgx_uswitchless_worker_type_t.html        |   24 +
 .../sgx_types/error/enum.sgx_pce_error_t.html      |   10 +
 .../sgx_types/error/enum.sgx_qcnl_error_t.html     |   10 +
 .../sgx_types/error/enum.sgx_ql_qv_result_t.html   |   10 +
 .../sgx_types/error/enum.sgx_quote3_error_t.html   |   10 +
 .../sgx-sdk/sgx_types/error/enum.sgx_status_t.html |   10 +
 .../sgx-sdk/sgx_types/error/type.SgxError.html     |   10 +
 .../sgx-sdk/sgx_types/error/type.SgxPceError.html  |   10 +
 .../sgx-sdk/sgx_types/error/type.SgxPceResult.html |   10 +
 .../sgx-sdk/sgx_types/error/type.SgxQcnlError.html |   10 +
 .../sgx_types/error/type.SgxQcnlResult.html        |   10 +
 .../sgx_types/error/type.SgxQuote3Error.html       |   10 +
 .../sgx_types/error/type.SgxQuote3Result.html      |   10 +
 .../sgx-sdk/sgx_types/error/type.SgxResult.html    |   10 +
 .../sgx-sdk/sgx_types/error/type.SysError.html     |   10 +
 .../sgx-sdk/sgx_types/error/type.SysResult.html    |   10 +
 .../sgx-sdk/sgx_types/error/type.sys_error_t.html  |   10 +
 .../sgx-sdk/sgx_types/fn.sgx_aes_ctr_decrypt.html  |    4 +
 .../sgx-sdk/sgx_types/fn.sgx_aes_ctr_encrypt.html  |    4 +
 .../sgx_types/fn.sgx_aes_gcm128_enc_get_mac.html   |    4 +
 .../sgx_types/fn.sgx_aes_gcm128_enc_init.html      |    4 +
 .../sgx_types/fn.sgx_aes_gcm128_enc_update.html    |    4 +
 .../sgx-sdk/sgx_types/fn.sgx_aes_gcm_close.html    |    4 +
 .../sgx-sdk/sgx_types/fn.sgx_aligned_free.html     |    4 +
 .../sgx-sdk/sgx_types/fn.sgx_aligned_malloc.html   |    4 +
 .../sgx-sdk/sgx_types/fn.sgx_alloc_rsrv_mem.html   |    4 +
 .../sgx_types/fn.sgx_alloc_rsrv_mem_ex.html        |    4 +
 .../sgx-sdk/sgx_types/fn.sgx_calc_quote_size.html  |    4 +
 .../sgx_types/fn.sgx_calc_sealed_data_size.html    |    4 +
 .../sgx_types/fn.sgx_calculate_ecdsa_priv_key.html |    4 +
 .../sgx_types/fn.sgx_cap_enable_device.html        |    4 +
 .../sgx-sdk/sgx_types/fn.sgx_cap_get_status.html   |    4 +
 .../sgx_types/fn.sgx_check_update_status.html      |    4 +
 api-docs/sgx-sdk/sgx_types/fn.sgx_clearerr.html    |    4 +
 .../sgx-sdk/sgx_types/fn.sgx_cmac128_close.html    |    4 +
 .../sgx-sdk/sgx_types/fn.sgx_cmac128_final.html    |    4 +
 .../sgx-sdk/sgx_types/fn.sgx_cmac128_init.html     |    4 +
 .../sgx-sdk/sgx_types/fn.sgx_cmac128_update.html   |    4 +
 api-docs/sgx-sdk/sgx_types/fn.sgx_cpuid.html       |    4 +
 api-docs/sgx-sdk/sgx_types/fn.sgx_cpuidex.html     |    4 +
 .../sgx-sdk/sgx_types/fn.sgx_create_enclave.html   |    4 +
 .../sgx_types/fn.sgx_create_enclave_ex.html        |    4 +
 .../fn.sgx_create_enclave_from_buffer_ex.html      |    4 +
 .../sgx_types/fn.sgx_create_encrypted_enclave.html |    4 +
 .../sgx-sdk/sgx_types/fn.sgx_create_report.html    |    4 +
 .../sgx_types/fn.sgx_create_rsa_key_pair.html      |    4 +
 .../sgx_types/fn.sgx_create_rsa_priv1_key.html     |    4 +
 .../sgx_types/fn.sgx_create_rsa_priv2_key.html     |    4 +
 .../sgx_types/fn.sgx_create_rsa_pub1_key.html      |    4 +
 .../sgx-sdk/sgx_types/fn.sgx_destroy_enclave.html  |    4 +
 .../sgx-sdk/sgx_types/fn.sgx_dh_init_session.html  |    4 +
 .../sgx_types/fn.sgx_dh_initiator_proc_msg1.html   |    4 +
 .../sgx_types/fn.sgx_dh_initiator_proc_msg3.html   |    4 +
 .../sgx_types/fn.sgx_dh_responder_gen_msg1.html    |    4 +
 .../sgx_types/fn.sgx_dh_responder_proc_msg2.html   |    4 +
 .../fn.sgx_ecc256_calculate_pub_from_priv.html     |    4 +
 .../sgx_types/fn.sgx_ecc256_check_point.html       |    4 +
 .../sgx_types/fn.sgx_ecc256_close_context.html     |    4 +
 .../fn.sgx_ecc256_compute_shared_dhkey.html        |    4 +
 .../sgx_types/fn.sgx_ecc256_create_key_pair.html   |    4 +
 .../sgx_types/fn.sgx_ecc256_open_context.html      |    4 +
 api-docs/sgx-sdk/sgx_types/fn.sgx_ecdsa_sign.html  |    4 +
 .../sgx-sdk/sgx_types/fn.sgx_ecdsa_verify.html     |    4 +
 .../sgx_types/fn.sgx_ecdsa_verify_hash.html        |    4 +
 .../sgx-sdk/sgx_types/fn.sgx_fclear_cache.html     |    4 +
 api-docs/sgx-sdk/sgx_types/fn.sgx_fclose.html      |    4 +
 api-docs/sgx-sdk/sgx_types/fn.sgx_feof.html        |    4 +
 api-docs/sgx-sdk/sgx_types/fn.sgx_ferror.html      |    4 +
 .../sgx-sdk/sgx_types/fn.sgx_fexport_auto_key.html |    4 +
 api-docs/sgx-sdk/sgx_types/fn.sgx_fflush.html      |    4 +
 .../sgx-sdk/sgx_types/fn.sgx_fimport_auto_key.html |    4 +
 api-docs/sgx-sdk/sgx_types/fn.sgx_fopen.html       |    4 +
 .../sgx-sdk/sgx_types/fn.sgx_fopen_auto_key.html   |    4 +
 api-docs/sgx-sdk/sgx_types/fn.sgx_fread.html       |    4 +
 .../sgx-sdk/sgx_types/fn.sgx_free_rsa_key.html     |    4 +
 .../sgx-sdk/sgx_types/fn.sgx_free_rsrv_mem.html    |    4 +
 api-docs/sgx-sdk/sgx_types/fn.sgx_fseek.html       |    4 +
 api-docs/sgx-sdk/sgx_types/fn.sgx_ftell.html       |    4 +
 api-docs/sgx-sdk/sgx_types/fn.sgx_fwrite.html      |    4 +
 .../sgx_types/fn.sgx_get_add_mac_txt_len.html      |    4 +
 .../sgx-sdk/sgx_types/fn.sgx_get_aligned_ptr.html  |    4 +
 .../sgx_types/fn.sgx_get_encrypt_txt_len.html      |    4 +
 .../fn.sgx_get_extended_epid_group_id.html         |    4 +
 api-docs/sgx-sdk/sgx_types/fn.sgx_get_key.html     |    4 +
 .../sgx-sdk/sgx_types/fn.sgx_get_metadata.html     |    4 +
 .../sgx-sdk/sgx_types/fn.sgx_get_pce_info.html     |    4 +
 .../fn.sgx_get_pce_info_without_ppid.html          |    4 +
 api-docs/sgx-sdk/sgx_types/fn.sgx_get_ps_cap.html  |    4 +
 api-docs/sgx-sdk/sgx_types/fn.sgx_get_quote.html   |    4 +
 .../sgx-sdk/sgx_types/fn.sgx_get_quote_ex.html     |    4 +
 .../sgx-sdk/sgx_types/fn.sgx_get_quote_size.html   |    4 +
 .../sgx_types/fn.sgx_get_quote_size_ex.html        |    4 +
 .../sgx_types/fn.sgx_get_rsrv_mem_info.html        |    4 +
 .../fn.sgx_get_supported_att_key_id_num.html       |    4 +
 .../fn.sgx_get_supported_att_key_ids.html          |    4 +
 .../sgx-sdk/sgx_types/fn.sgx_get_target_info.html  |    4 +
 .../sgx-sdk/sgx_types/fn.sgx_get_whitelist.html    |    4 +
 .../sgx_types/fn.sgx_get_whitelist_size.html       |    4 +
 .../sgx-sdk/sgx_types/fn.sgx_hmac256_close.html    |    4 +
 .../sgx-sdk/sgx_types/fn.sgx_hmac256_final.html    |    4 +
 .../sgx-sdk/sgx_types/fn.sgx_hmac256_init.html     |    4 +
 .../sgx-sdk/sgx_types/fn.sgx_hmac256_update.html   |    4 +
 .../sgx-sdk/sgx_types/fn.sgx_hmac_sha256_msg.html  |    4 +
 api-docs/sgx-sdk/sgx_types/fn.sgx_init_quote.html  |    4 +
 .../sgx-sdk/sgx_types/fn.sgx_init_quote_ex.html    |    4 +
 api-docs/sgx-sdk/sgx_types/fn.sgx_is_capable.html  |    4 +
 .../sgx_types/fn.sgx_is_enclave_crashed.html       |    4 +
 .../sgx_types/fn.sgx_is_outside_enclave.html       |    4 +
 .../sgx_types/fn.sgx_is_within_enclave.html        |    4 +
 api-docs/sgx-sdk/sgx_types/fn.sgx_mac_aadata.html  |    4 +
 .../sgx-sdk/sgx_types/fn.sgx_mac_aadata_ex.html    |    4 +
 api-docs/sgx-sdk/sgx_types/fn.sgx_ocalloc.html     |    4 +
 api-docs/sgx-sdk/sgx_types/fn.sgx_ocfree.html      |    4 +
 .../sgx-sdk/sgx_types/fn.sgx_pce_get_target.html   |    4 +
 .../sgx-sdk/sgx_types/fn.sgx_pce_sign_report.html  |    4 +
 .../sgx_types/fn.sgx_qcnl_free_pck_cert_chain.html |    4 +
 .../sgx_types/fn.sgx_qcnl_free_pck_crl_chain.html  |    4 +
 .../sgx_types/fn.sgx_qcnl_free_qe_identity.html    |    4 +
 .../sgx_types/fn.sgx_qcnl_free_qve_identity.html   |    4 +
 .../sgx_types/fn.sgx_qcnl_free_root_ca_crl.html    |    4 +
 .../sgx_types/fn.sgx_qcnl_free_tcbinfo.html        |    4 +
 .../sgx_types/fn.sgx_qcnl_get_api_version.html     |    4 +
 .../sgx_types/fn.sgx_qcnl_get_pck_cert_chain.html  |    4 +
 .../sgx_types/fn.sgx_qcnl_get_pck_crl_chain.html   |    4 +
 .../sgx_types/fn.sgx_qcnl_get_qe_identity.html     |    4 +
 .../sgx_types/fn.sgx_qcnl_get_qve_identity.html    |    4 +
 .../sgx_types/fn.sgx_qcnl_get_root_ca_crl.html     |    4 +
 .../sgx-sdk/sgx_types/fn.sgx_qcnl_get_tcbinfo.html |    4 +
 .../sgx_types/fn.sgx_qcnl_register_platform.html   |    4 +
 .../sgx_types/fn.sgx_qe_cleanup_by_policy.html     |    4 +
 .../sgx-sdk/sgx_types/fn.sgx_qe_get_quote.html     |    4 +
 .../sgx_types/fn.sgx_qe_get_quote_size.html        |    4 +
 .../sgx_types/fn.sgx_qe_get_target_info.html       |    4 +
 .../fn.sgx_qe_set_enclave_load_policy.html         |    4 +
 .../sgx_types/fn.sgx_ql_free_quote_config.html     |    4 +
 ....sgx_ql_free_quote_verification_collateral.html |    4 +
 .../sgx_types/fn.sgx_ql_free_qve_identity.html     |    4 +
 .../sgx_types/fn.sgx_ql_free_root_ca_crl.html      |    4 +
 .../sgx_types/fn.sgx_ql_get_quote_config.html      |    4 +
 ...n.sgx_ql_get_quote_verification_collateral.html |    4 +
 .../sgx_types/fn.sgx_ql_get_qve_identity.html      |    4 +
 .../sgx_types/fn.sgx_ql_get_root_ca_crl.html       |    4 +
 api-docs/sgx-sdk/sgx_types/fn.sgx_ql_set_path.html |    4 +
 .../sgx_types/fn.sgx_qv_free_qve_identity.html     |    4 +
 ...fn.sgx_qv_get_quote_supplemental_data_size.html |    4 +
 .../sgx_types/fn.sgx_qv_get_qve_identity.html      |    4 +
 .../fn.sgx_qv_set_enclave_load_policy.html         |    4 +
 api-docs/sgx-sdk/sgx_types/fn.sgx_qv_set_path.html |    4 +
 .../sgx-sdk/sgx_types/fn.sgx_qv_verify_quote.html  |    4 +
 api-docs/sgx-sdk/sgx_types/fn.sgx_ra_close.html    |    4 +
 api-docs/sgx-sdk/sgx_types/fn.sgx_ra_get_ga.html   |    4 +
 api-docs/sgx-sdk/sgx_types/fn.sgx_ra_get_keys.html |    4 +
 api-docs/sgx-sdk/sgx_types/fn.sgx_ra_get_msg1.html |    4 +
 .../sgx-sdk/sgx_types/fn.sgx_ra_get_msg1_ex.html   |    4 +
 api-docs/sgx-sdk/sgx_types/fn.sgx_ra_init.html     |    4 +
 api-docs/sgx-sdk/sgx_types/fn.sgx_ra_init_ex.html  |    4 +
 .../sgx-sdk/sgx_types/fn.sgx_ra_proc_msg2.html     |    4 +
 .../sgx-sdk/sgx_types/fn.sgx_ra_proc_msg2_ex.html  |    4 +
 api-docs/sgx-sdk/sgx_types/fn.sgx_read_rand.html   |    4 +
 .../fn.sgx_register_exception_handler.html         |    4 +
 .../sgx_types/fn.sgx_register_wl_cert_chain.html   |    4 +
 api-docs/sgx-sdk/sgx_types/fn.sgx_remove.html      |    4 +
 .../fn.sgx_report_attestation_status.html          |    4 +
 .../sgx_types/fn.sgx_rijndael128GCM_decrypt.html   |    4 +
 .../sgx_types/fn.sgx_rijndael128GCM_encrypt.html   |    4 +
 .../sgx_types/fn.sgx_rijndael128_cmac_msg.html     |    4 +
 .../sgx-sdk/sgx_types/fn.sgx_rsa3072_sign.html     |    4 +
 .../sgx-sdk/sgx_types/fn.sgx_rsa3072_verify.html   |    4 +
 .../sgx_types/fn.sgx_rsa_priv_decrypt_sha256.html  |    4 +
 .../sgx_types/fn.sgx_rsa_pub_encrypt_sha256.html   |    4 +
 api-docs/sgx-sdk/sgx_types/fn.sgx_seal_data.html   |    4 +
 .../sgx-sdk/sgx_types/fn.sgx_seal_data_ex.html     |    4 +
 .../sgx_types/fn.sgx_select_att_key_id.html        |    4 +
 api-docs/sgx-sdk/sgx_types/fn.sgx_self_report.html |    4 +
 api-docs/sgx-sdk/sgx_types/fn.sgx_self_target.html |    4 +
 .../fn.sgx_set_pce_enclave_load_policy.html        |    4 +
 api-docs/sgx-sdk/sgx_types/fn.sgx_sha1_close.html  |    4 +
 .../sgx-sdk/sgx_types/fn.sgx_sha1_get_hash.html    |    4 +
 api-docs/sgx-sdk/sgx_types/fn.sgx_sha1_init.html   |    4 +
 api-docs/sgx-sdk/sgx_types/fn.sgx_sha1_msg.html    |    4 +
 api-docs/sgx-sdk/sgx_types/fn.sgx_sha1_update.html |    4 +
 .../sgx-sdk/sgx_types/fn.sgx_sha256_close.html     |    4 +
 .../sgx-sdk/sgx_types/fn.sgx_sha256_get_hash.html  |    4 +
 api-docs/sgx-sdk/sgx_types/fn.sgx_sha256_init.html |    4 +
 api-docs/sgx-sdk/sgx_types/fn.sgx_sha256_msg.html  |    4 +
 .../sgx-sdk/sgx_types/fn.sgx_sha256_update.html    |    4 +
 api-docs/sgx-sdk/sgx_types/fn.sgx_spin_lock.html   |    4 +
 api-docs/sgx-sdk/sgx_types/fn.sgx_spin_unlock.html |    4 +
 .../sgx_types/fn.sgx_thread_cond_broadcast.html    |    4 +
 .../sgx_types/fn.sgx_thread_cond_destroy.html      |    4 +
 .../sgx-sdk/sgx_types/fn.sgx_thread_cond_init.html |    4 +
 .../sgx_types/fn.sgx_thread_cond_signal.html       |    4 +
 .../sgx-sdk/sgx_types/fn.sgx_thread_cond_wait.html |    4 +
 .../sgx-sdk/sgx_types/fn.sgx_thread_equal.html     |    4 +
 .../sgx_types/fn.sgx_thread_mutex_destroy.html     |    4 +
 .../sgx_types/fn.sgx_thread_mutex_init.html        |    4 +
 .../sgx_types/fn.sgx_thread_mutex_lock.html        |    4 +
 .../sgx_types/fn.sgx_thread_mutex_trylock.html     |    4 +
 .../sgx_types/fn.sgx_thread_mutex_unlock.html      |    4 +
 .../sgx_types/fn.sgx_thread_rwlock_destroy.html    |    4 +
 .../sgx_types/fn.sgx_thread_rwlock_init.html       |    4 +
 .../sgx_types/fn.sgx_thread_rwlock_rdlock.html     |    4 +
 .../sgx_types/fn.sgx_thread_rwlock_rdunlock.html   |    4 +
 .../sgx_types/fn.sgx_thread_rwlock_tryrdlock.html  |    4 +
 .../sgx_types/fn.sgx_thread_rwlock_trywrlock.html  |    4 +
 .../sgx_types/fn.sgx_thread_rwlock_unlock.html     |    4 +
 .../sgx_types/fn.sgx_thread_rwlock_wrlock.html     |    4 +
 .../sgx_types/fn.sgx_thread_rwlock_wrunlock.html   |    4 +
 api-docs/sgx-sdk/sgx_types/fn.sgx_thread_self.html |    4 +
 .../sgx_types/fn.sgx_tprotect_rsrv_mem.html        |    4 +
 .../fn.sgx_tvl_verify_qve_report_and_identity.html |    4 +
 .../sgx-sdk/sgx_types/fn.sgx_unmac_aadata.html     |    4 +
 .../fn.sgx_unregister_exception_handler.html       |    4 +
 api-docs/sgx-sdk/sgx_types/fn.sgx_unseal_data.html |    4 +
 .../sgx-sdk/sgx_types/fn.sgx_verify_report.html    |    4 +
 .../sgx_types/function/fn.sgx_aes_ctr_decrypt.html |   10 +
 .../sgx_types/function/fn.sgx_aes_ctr_encrypt.html |   10 +
 .../function/fn.sgx_aes_gcm128_enc_get_mac.html    |   10 +
 .../function/fn.sgx_aes_gcm128_enc_init.html       |   10 +
 .../function/fn.sgx_aes_gcm128_enc_update.html     |   10 +
 .../sgx_types/function/fn.sgx_aes_gcm_close.html   |   10 +
 .../sgx_types/function/fn.sgx_aligned_free.html    |   10 +
 .../sgx_types/function/fn.sgx_aligned_malloc.html  |   10 +
 .../sgx_types/function/fn.sgx_alloc_rsrv_mem.html  |   10 +
 .../function/fn.sgx_alloc_rsrv_mem_ex.html         |   10 +
 .../sgx_types/function/fn.sgx_calc_quote_size.html |   10 +
 .../function/fn.sgx_calc_sealed_data_size.html     |   10 +
 .../function/fn.sgx_calculate_ecdsa_priv_key.html  |   10 +
 .../function/fn.sgx_cap_enable_device.html         |   10 +
 .../sgx_types/function/fn.sgx_cap_get_status.html  |   10 +
 .../function/fn.sgx_check_update_status.html       |   10 +
 .../sgx_types/function/fn.sgx_clearerr.html        |   10 +
 .../sgx_types/function/fn.sgx_cmac128_close.html   |   10 +
 .../sgx_types/function/fn.sgx_cmac128_final.html   |   10 +
 .../sgx_types/function/fn.sgx_cmac128_init.html    |   10 +
 .../sgx_types/function/fn.sgx_cmac128_update.html  |   10 +
 .../sgx-sdk/sgx_types/function/fn.sgx_cpuid.html   |   10 +
 .../sgx-sdk/sgx_types/function/fn.sgx_cpuidex.html |   10 +
 .../sgx_types/function/fn.sgx_create_enclave.html  |   10 +
 .../function/fn.sgx_create_enclave_ex.html         |   10 +
 .../fn.sgx_create_enclave_from_buffer_ex.html      |   10 +
 .../function/fn.sgx_create_encrypted_enclave.html  |   10 +
 .../sgx_types/function/fn.sgx_create_report.html   |   10 +
 .../function/fn.sgx_create_rsa_key_pair.html       |   10 +
 .../function/fn.sgx_create_rsa_priv1_key.html      |   10 +
 .../function/fn.sgx_create_rsa_priv2_key.html      |   10 +
 .../function/fn.sgx_create_rsa_pub1_key.html       |   10 +
 .../sgx_types/function/fn.sgx_destroy_enclave.html |   10 +
 .../sgx_types/function/fn.sgx_dh_init_session.html |   10 +
 .../function/fn.sgx_dh_initiator_proc_msg1.html    |   10 +
 .../function/fn.sgx_dh_initiator_proc_msg3.html    |   10 +
 .../function/fn.sgx_dh_responder_gen_msg1.html     |   10 +
 .../function/fn.sgx_dh_responder_proc_msg2.html    |   10 +
 .../fn.sgx_ecc256_calculate_pub_from_priv.html     |   10 +
 .../function/fn.sgx_ecc256_check_point.html        |   10 +
 .../function/fn.sgx_ecc256_close_context.html      |   10 +
 .../fn.sgx_ecc256_compute_shared_dhkey.html        |   10 +
 .../function/fn.sgx_ecc256_create_key_pair.html    |   10 +
 .../function/fn.sgx_ecc256_open_context.html       |   10 +
 .../sgx_types/function/fn.sgx_ecdsa_sign.html      |   10 +
 .../sgx_types/function/fn.sgx_ecdsa_verify.html    |   10 +
 .../function/fn.sgx_ecdsa_verify_hash.html         |   10 +
 .../sgx_types/function/fn.sgx_fclear_cache.html    |   10 +
 .../sgx-sdk/sgx_types/function/fn.sgx_fclose.html  |   10 +
 .../sgx-sdk/sgx_types/function/fn.sgx_feof.html    |   10 +
 .../sgx-sdk/sgx_types/function/fn.sgx_ferror.html  |   10 +
 .../function/fn.sgx_fexport_auto_key.html          |   10 +
 .../sgx-sdk/sgx_types/function/fn.sgx_fflush.html  |   10 +
 .../function/fn.sgx_fimport_auto_key.html          |   10 +
 .../sgx-sdk/sgx_types/function/fn.sgx_fopen.html   |   10 +
 .../sgx_types/function/fn.sgx_fopen_auto_key.html  |   10 +
 .../sgx-sdk/sgx_types/function/fn.sgx_fread.html   |   10 +
 .../sgx_types/function/fn.sgx_free_rsa_key.html    |   10 +
 .../sgx_types/function/fn.sgx_free_rsrv_mem.html   |   10 +
 .../sgx-sdk/sgx_types/function/fn.sgx_fseek.html   |   10 +
 .../sgx-sdk/sgx_types/function/fn.sgx_ftell.html   |   10 +
 .../sgx-sdk/sgx_types/function/fn.sgx_fwrite.html  |   10 +
 .../function/fn.sgx_get_add_mac_txt_len.html       |   10 +
 .../sgx_types/function/fn.sgx_get_aligned_ptr.html |   10 +
 .../function/fn.sgx_get_encrypt_txt_len.html       |   10 +
 .../fn.sgx_get_extended_epid_group_id.html         |   10 +
 .../sgx-sdk/sgx_types/function/fn.sgx_get_key.html |   10 +
 .../sgx_types/function/fn.sgx_get_metadata.html    |   10 +
 .../sgx_types/function/fn.sgx_get_pce_info.html    |   10 +
 .../function/fn.sgx_get_pce_info_without_ppid.html |   10 +
 .../sgx_types/function/fn.sgx_get_ps_cap.html      |   10 +
 .../sgx_types/function/fn.sgx_get_quote.html       |   10 +
 .../sgx_types/function/fn.sgx_get_quote_ex.html    |   10 +
 .../sgx_types/function/fn.sgx_get_quote_size.html  |   10 +
 .../function/fn.sgx_get_quote_size_ex.html         |   10 +
 .../function/fn.sgx_get_rsrv_mem_info.html         |   10 +
 .../fn.sgx_get_supported_att_key_id_num.html       |   10 +
 .../function/fn.sgx_get_supported_att_key_ids.html |   10 +
 .../sgx_types/function/fn.sgx_get_target_info.html |   10 +
 .../sgx_types/function/fn.sgx_get_whitelist.html   |   10 +
 .../function/fn.sgx_get_whitelist_size.html        |   10 +
 .../sgx_types/function/fn.sgx_hmac256_close.html   |   10 +
 .../sgx_types/function/fn.sgx_hmac256_final.html   |   10 +
 .../sgx_types/function/fn.sgx_hmac256_init.html    |   10 +
 .../sgx_types/function/fn.sgx_hmac256_update.html  |   10 +
 .../sgx_types/function/fn.sgx_hmac_sha256_msg.html |   10 +
 .../sgx_types/function/fn.sgx_init_quote.html      |   10 +
 .../sgx_types/function/fn.sgx_init_quote_ex.html   |   10 +
 .../sgx_types/function/fn.sgx_is_capable.html      |   10 +
 .../function/fn.sgx_is_enclave_crashed.html        |   10 +
 .../function/fn.sgx_is_outside_enclave.html        |   10 +
 .../function/fn.sgx_is_within_enclave.html         |   10 +
 .../sgx_types/function/fn.sgx_mac_aadata.html      |   10 +
 .../sgx_types/function/fn.sgx_mac_aadata_ex.html   |   10 +
 .../sgx-sdk/sgx_types/function/fn.sgx_ocalloc.html |   10 +
 .../sgx-sdk/sgx_types/function/fn.sgx_ocfree.html  |   10 +
 .../sgx_types/function/fn.sgx_pce_get_target.html  |   10 +
 .../sgx_types/function/fn.sgx_pce_sign_report.html |   10 +
 .../function/fn.sgx_qcnl_free_pck_cert_chain.html  |   10 +
 .../function/fn.sgx_qcnl_free_pck_crl_chain.html   |   10 +
 .../function/fn.sgx_qcnl_free_qe_identity.html     |   10 +
 .../function/fn.sgx_qcnl_free_qve_identity.html    |   10 +
 .../function/fn.sgx_qcnl_free_root_ca_crl.html     |   10 +
 .../function/fn.sgx_qcnl_free_tcbinfo.html         |   10 +
 .../function/fn.sgx_qcnl_get_api_version.html      |   10 +
 .../function/fn.sgx_qcnl_get_pck_cert_chain.html   |   10 +
 .../function/fn.sgx_qcnl_get_pck_crl_chain.html    |   10 +
 .../function/fn.sgx_qcnl_get_qe_identity.html      |   10 +
 .../function/fn.sgx_qcnl_get_qve_identity.html     |   10 +
 .../function/fn.sgx_qcnl_get_root_ca_crl.html      |   10 +
 .../function/fn.sgx_qcnl_get_tcbinfo.html          |   10 +
 .../function/fn.sgx_qcnl_register_platform.html    |   10 +
 .../function/fn.sgx_qe_cleanup_by_policy.html      |   10 +
 .../sgx_types/function/fn.sgx_qe_get_quote.html    |   10 +
 .../function/fn.sgx_qe_get_quote_size.html         |   10 +
 .../function/fn.sgx_qe_get_target_info.html        |   10 +
 .../fn.sgx_qe_set_enclave_load_policy.html         |   10 +
 .../function/fn.sgx_ql_free_quote_config.html      |   10 +
 ....sgx_ql_free_quote_verification_collateral.html |   10 +
 .../function/fn.sgx_ql_free_qve_identity.html      |   10 +
 .../function/fn.sgx_ql_free_root_ca_crl.html       |   10 +
 .../function/fn.sgx_ql_get_quote_config.html       |   10 +
 ...n.sgx_ql_get_quote_verification_collateral.html |   10 +
 .../function/fn.sgx_ql_get_qve_identity.html       |   10 +
 .../function/fn.sgx_ql_get_root_ca_crl.html        |   10 +
 .../sgx_types/function/fn.sgx_ql_set_path.html     |   10 +
 .../function/fn.sgx_qv_free_qve_identity.html      |   10 +
 ...fn.sgx_qv_get_quote_supplemental_data_size.html |   10 +
 .../function/fn.sgx_qv_get_qve_identity.html       |   10 +
 .../fn.sgx_qv_set_enclave_load_policy.html         |   10 +
 .../sgx_types/function/fn.sgx_qv_set_path.html     |   10 +
 .../sgx_types/function/fn.sgx_qv_verify_quote.html |   10 +
 .../sgx_types/function/fn.sgx_ra_close.html        |   10 +
 .../sgx_types/function/fn.sgx_ra_get_ga.html       |   10 +
 .../sgx_types/function/fn.sgx_ra_get_keys.html     |   10 +
 .../sgx_types/function/fn.sgx_ra_get_msg1.html     |   10 +
 .../sgx_types/function/fn.sgx_ra_get_msg1_ex.html  |   10 +
 .../sgx-sdk/sgx_types/function/fn.sgx_ra_init.html |   10 +
 .../sgx_types/function/fn.sgx_ra_init_ex.html      |   10 +
 .../sgx_types/function/fn.sgx_ra_proc_msg2.html    |   10 +
 .../sgx_types/function/fn.sgx_ra_proc_msg2_ex.html |   10 +
 .../sgx_types/function/fn.sgx_read_rand.html       |   10 +
 .../fn.sgx_register_exception_handler.html         |   10 +
 .../function/fn.sgx_register_wl_cert_chain.html    |   10 +
 .../sgx-sdk/sgx_types/function/fn.sgx_remove.html  |   10 +
 .../function/fn.sgx_report_attestation_status.html |   10 +
 .../function/fn.sgx_rijndael128GCM_decrypt.html    |   10 +
 .../function/fn.sgx_rijndael128GCM_encrypt.html    |   10 +
 .../function/fn.sgx_rijndael128_cmac_msg.html      |   10 +
 .../sgx_types/function/fn.sgx_rsa3072_sign.html    |   10 +
 .../sgx_types/function/fn.sgx_rsa3072_verify.html  |   10 +
 .../function/fn.sgx_rsa_priv_decrypt_sha256.html   |   10 +
 .../function/fn.sgx_rsa_pub_encrypt_sha256.html    |   10 +
 .../sgx_types/function/fn.sgx_seal_data.html       |   10 +
 .../sgx_types/function/fn.sgx_seal_data_ex.html    |   10 +
 .../function/fn.sgx_select_att_key_id.html         |   10 +
 .../sgx_types/function/fn.sgx_self_report.html     |   10 +
 .../sgx_types/function/fn.sgx_self_target.html     |   10 +
 .../fn.sgx_set_pce_enclave_load_policy.html        |   10 +
 .../sgx_types/function/fn.sgx_sha1_close.html      |   10 +
 .../sgx_types/function/fn.sgx_sha1_get_hash.html   |   10 +
 .../sgx_types/function/fn.sgx_sha1_init.html       |   10 +
 .../sgx_types/function/fn.sgx_sha1_msg.html        |   10 +
 .../sgx_types/function/fn.sgx_sha1_update.html     |   10 +
 .../sgx_types/function/fn.sgx_sha256_close.html    |   10 +
 .../sgx_types/function/fn.sgx_sha256_get_hash.html |   10 +
 .../sgx_types/function/fn.sgx_sha256_init.html     |   10 +
 .../sgx_types/function/fn.sgx_sha256_msg.html      |   10 +
 .../sgx_types/function/fn.sgx_sha256_update.html   |   10 +
 .../sgx_types/function/fn.sgx_spin_lock.html       |   10 +
 .../sgx_types/function/fn.sgx_spin_unlock.html     |   10 +
 .../function/fn.sgx_thread_cond_broadcast.html     |   10 +
 .../function/fn.sgx_thread_cond_destroy.html       |   10 +
 .../function/fn.sgx_thread_cond_init.html          |   10 +
 .../function/fn.sgx_thread_cond_signal.html        |   10 +
 .../function/fn.sgx_thread_cond_wait.html          |   10 +
 .../sgx_types/function/fn.sgx_thread_equal.html    |   10 +
 .../function/fn.sgx_thread_mutex_destroy.html      |   10 +
 .../function/fn.sgx_thread_mutex_init.html         |   10 +
 .../function/fn.sgx_thread_mutex_lock.html         |   10 +
 .../function/fn.sgx_thread_mutex_trylock.html      |   10 +
 .../function/fn.sgx_thread_mutex_unlock.html       |   10 +
 .../function/fn.sgx_thread_rwlock_destroy.html     |   10 +
 .../function/fn.sgx_thread_rwlock_init.html        |   10 +
 .../function/fn.sgx_thread_rwlock_rdlock.html      |   10 +
 .../function/fn.sgx_thread_rwlock_rdunlock.html    |   10 +
 .../function/fn.sgx_thread_rwlock_tryrdlock.html   |   10 +
 .../function/fn.sgx_thread_rwlock_trywrlock.html   |   10 +
 .../function/fn.sgx_thread_rwlock_unlock.html      |   10 +
 .../function/fn.sgx_thread_rwlock_wrlock.html      |   10 +
 .../function/fn.sgx_thread_rwlock_wrunlock.html    |   10 +
 .../sgx_types/function/fn.sgx_thread_self.html     |   10 +
 .../function/fn.sgx_tprotect_rsrv_mem.html         |   10 +
 .../fn.sgx_tvl_verify_qve_report_and_identity.html |   10 +
 .../sgx_types/function/fn.sgx_unmac_aadata.html    |   10 +
 .../fn.sgx_unregister_exception_handler.html       |   10 +
 .../sgx_types/function/fn.sgx_unseal_data.html     |   10 +
 .../sgx_types/function/fn.sgx_verify_report.html   |   10 +
 api-docs/sgx-sdk/sgx_types/index.html              |   12 +
 api-docs/sgx-sdk/sgx_types/macro.__item!.html      |   10 +
 api-docs/sgx-sdk/sgx_types/macro.__item.html       |    8 +
 api-docs/sgx-sdk/sgx_types/macro.cfg_if!.html      |   10 +
 api-docs/sgx-sdk/sgx_types/macro.cfg_if.html       |   22 +
 api-docs/sgx-sdk/sgx_types/macro.group_id!.html    |   10 +
 api-docs/sgx-sdk/sgx_types/macro.group_id.html     |    8 +
 api-docs/sgx-sdk/sgx_types/macro.impl_enum!.html   |   10 +
 api-docs/sgx-sdk/sgx_types/macro.impl_enum.html    |   15 +
 api-docs/sgx-sdk/sgx_types/macro.impl_struct!.html |   10 +
 api-docs/sgx-sdk/sgx_types/macro.impl_struct.html  |    8 +
 api-docs/sgx-sdk/sgx_types/macro.is_group_id!.html |   10 +
 api-docs/sgx-sdk/sgx_types/macro.is_group_id.html  |    8 +
 .../macro.major_version_of_metadata!.html          |   10 +
 .../sgx_types/macro.major_version_of_metadata.html |    8 +
 .../sgx_types/macro.meta_data_make_version!.html   |   10 +
 .../sgx_types/macro.meta_data_make_version.html    |    8 +
 .../macro.minor_version_of_metadata!.html          |   10 +
 .../sgx_types/macro.minor_version_of_metadata.html |    8 +
 api-docs/sgx-sdk/sgx_types/macro.s!.html           |   10 +
 api-docs/sgx-sdk/sgx_types/macro.s.html            |    8 +
 api-docs/sgx-sdk/sgx_types/marker/index.html       |    8 +
 api-docs/sgx-sdk/sgx_types/marker/sidebar-items.js |    1 +
 .../sgx_types/marker/trait.BytewiseEquality.html   |    6 +
 .../sgx_types/marker/trait.ContiguousMemory.html   |   10 +
 .../metadata/constant.ADD_EXTEND_PAGE.html         |    4 +
 .../sgx_types/metadata/constant.ADD_PAGE_ONLY.html |    4 +
 .../metadata/constant.DEFAULT_MISC_MASK.html       |    4 +
 .../metadata/constant.DEFAULT_MISC_SELECT.html     |    4 +
 .../sgx_types/metadata/constant.GROUP_FLAG.html    |    4 +
 .../sgx_types/metadata/constant.HEAP_SIZE_MAX.html |    4 +
 .../sgx_types/metadata/constant.HEAP_SIZE_MIN.html |    4 +
 .../metadata/constant.ISVEXTPRODID_MAX.html        |    4 +
 .../metadata/constant.ISVFAMILYID_MAX.html         |    4 +
 .../metadata/constant.LAYOUT_ID_GUARD.html         |    4 +
 .../metadata/constant.LAYOUT_ID_HEAP_DYN_INIT.html |    4 +
 .../metadata/constant.LAYOUT_ID_HEAP_DYN_MAX.html  |    4 +
 .../metadata/constant.LAYOUT_ID_HEAP_DYN_MIN.html  |    4 +
 .../metadata/constant.LAYOUT_ID_HEAP_INIT.html     |    4 +
 .../metadata/constant.LAYOUT_ID_HEAP_MAX.html      |    4 +
 .../metadata/constant.LAYOUT_ID_HEAP_MIN.html      |    4 +
 .../metadata/constant.LAYOUT_ID_RSRV_INIT.html     |    4 +
 .../metadata/constant.LAYOUT_ID_RSRV_MAX.html      |    4 +
 .../metadata/constant.LAYOUT_ID_RSRV_MIN.html      |    4 +
 .../sgx_types/metadata/constant.LAYOUT_ID_SSA.html |    4 +
 .../metadata/constant.LAYOUT_ID_SSA_DYN.html       |    4 +
 .../metadata/constant.LAYOUT_ID_STACK_DYN_MAX.html |    4 +
 .../metadata/constant.LAYOUT_ID_STACK_DYN_MIN.html |    4 +
 .../metadata/constant.LAYOUT_ID_STACK_MAX.html     |    4 +
 .../metadata/constant.LAYOUT_ID_STACK_MIN.html     |    4 +
 .../sgx_types/metadata/constant.LAYOUT_ID_TCS.html |    4 +
 .../metadata/constant.LAYOUT_ID_TCS_DYN.html       |    4 +
 .../sgx_types/metadata/constant.LAYOUT_ID_TD.html  |    4 +
 .../metadata/constant.LAYOUT_ID_TD_DYN.html        |    4 +
 .../metadata/constant.LAYOUT_ID_THREAD_GROUP.html  |    4 +
 .../constant.LAYOUT_ID_THREAD_GROUP_DYN.html       |    4 +
 .../sgx_types/metadata/constant.MAJOR_VERSION.html |    4 +
 .../metadata/constant.MAX_SAVE_BUF_SIZE.html       |    4 +
 .../metadata/constant.METADATA_MAGIC.html          |    4 +
 .../sgx_types/metadata/constant.METADATA_SIZE.html |    4 +
 .../sgx_types/metadata/constant.MINOR_VERSION.html |    4 +
 .../metadata/constant.PAGE_ATTR_DYN_THREAD.html    |    4 +
 .../metadata/constant.PAGE_ATTR_EADD.html          |    4 +
 .../metadata/constant.PAGE_ATTR_EEXTEND.html       |    4 +
 .../metadata/constant.PAGE_ATTR_EREMOVE.html       |    4 +
 .../metadata/constant.PAGE_ATTR_MASK.html          |   10 +
 .../metadata/constant.PAGE_ATTR_POST_ADD.html      |    4 +
 .../metadata/constant.PAGE_ATTR_POST_REMOVE.html   |    4 +
 .../metadata/constant.PAGE_DIR_GROW_DOWN.html      |    4 +
 .../sgx_types/metadata/constant.RSRV_SIZE_MAX.html |    4 +
 .../sgx_types/metadata/constant.RSRV_SIZE_MIN.html |    4 +
 .../metadata/constant.SE_EXPONENT_SIZE.html        |    4 +
 .../metadata/constant.SE_GUARD_PAGE_SHIFT.html     |    4 +
 .../metadata/constant.SE_GUARD_PAGE_SIZE.html      |    4 +
 .../sgx_types/metadata/constant.SE_KEY_SIZE.html   |    4 +
 .../sgx_types/metadata/constant.SE_PAGE_SIZE.html  |    4 +
 .../metadata/constant.SGX_1_5_MAJOR_VERSION.html   |    4 +
 .../metadata/constant.SGX_1_5_MINOR_VERSION.html   |    4 +
 .../metadata/constant.SGX_1_9_MAJOR_VERSION.html   |    4 +
 .../metadata/constant.SGX_1_9_MINOR_VERSION.html   |    4 +
 .../metadata/constant.SGX_2_0_MAJOR_VERSION.html   |    4 +
 .../metadata/constant.SGX_2_0_MINOR_VERSION.html   |    4 +
 .../metadata/constant.SGX_2_1_MAJOR_VERSION.html   |    4 +
 .../metadata/constant.SGX_2_1_MINOR_VERSION.html   |    4 +
 .../metadata/constant.SI_FLAGS_EXTERNAL.html       |    4 +
 .../sgx_types/metadata/constant.SI_FLAGS_R.html    |    4 +
 .../sgx_types/metadata/constant.SI_FLAGS_RW.html   |    4 +
 .../sgx_types/metadata/constant.SI_FLAGS_RWX.html  |    4 +
 .../sgx_types/metadata/constant.SI_FLAGS_RX.html   |    4 +
 .../sgx_types/metadata/constant.SI_FLAGS_SECS.html |    4 +
 .../sgx_types/metadata/constant.SI_FLAGS_TCS.html  |    4 +
 .../metadata/constant.SI_FLAG_MODIFIED.html        |    4 +
 .../sgx_types/metadata/constant.SI_FLAG_NONE.html  |    4 +
 .../metadata/constant.SI_FLAG_PENDING.html         |    4 +
 .../sgx_types/metadata/constant.SI_FLAG_PR.html    |    4 +
 .../metadata/constant.SI_FLAG_PT_LOW_BIT.html      |    4 +
 .../metadata/constant.SI_FLAG_PT_MASK.html         |    4 +
 .../sgx_types/metadata/constant.SI_FLAG_R.html     |    4 +
 .../sgx_types/metadata/constant.SI_FLAG_REG.html   |    4 +
 .../sgx_types/metadata/constant.SI_FLAG_SECS.html  |    4 +
 .../sgx_types/metadata/constant.SI_FLAG_TCS.html   |    4 +
 .../sgx_types/metadata/constant.SI_FLAG_TRIM.html  |    4 +
 .../sgx_types/metadata/constant.SI_FLAG_W.html     |    4 +
 .../sgx_types/metadata/constant.SI_FLAG_X.html     |    4 +
 .../metadata/constant.SI_MASK_MEM_ATTRIBUTE.html   |    4 +
 .../sgx_types/metadata/constant.SI_MASK_TCS.html   |    4 +
 .../metadata/constant.SSA_FRAME_SIZE_MAX.html      |    4 +
 .../metadata/constant.SSA_FRAME_SIZE_MIN.html      |    4 +
 .../sgx_types/metadata/constant.SSA_NUM_MIN.html   |    4 +
 .../metadata/constant.STACK_SIZE_MAX.html          |    4 +
 .../metadata/constant.STACK_SIZE_MIN.html          |    4 +
 .../metadata/constant.STATIC_STACK_SIZE.html       |    4 +
 .../sgx_types/metadata/constant.TCS_NUM_MIN.html   |    4 +
 .../metadata/constant.TCS_POLICY_BIND.html         |    4 +
 .../metadata/constant.TCS_POLICY_UNBIND.html       |    4 +
 .../metadata/constant.TCS_TEMPLATE_SIZE.html       |    4 +
 .../sgx_types/metadata/enum.dir_index_t.html       |   25 +
 api-docs/sgx-sdk/sgx_types/metadata/index.html     |    8 +
 .../sgx-sdk/sgx_types/metadata/sidebar-items.js    |    1 +
 .../sgx_types/metadata/struct.css_body_t.html      |   26 +
 .../sgx_types/metadata/struct.css_buffer_t.html    |   18 +
 .../sgx_types/metadata/struct.css_header_t.html    |   22 +
 .../sgx_types/metadata/struct.css_key_t.html       |   18 +
 .../metadata/struct.data_directory_t.html          |   21 +
 .../sgx_types/metadata/struct.enclave_css_t.html   |   19 +
 .../sgx_types/metadata/struct.layout_entry_t.html  |   26 +
 .../sgx_types/metadata/struct.layout_group_t.html  |   24 +
 .../sgx_types/metadata/struct.metadata_t.html      |   28 +
 .../sgx_types/metadata/struct.patch_entry_t.html   |   19 +
 .../sgx-sdk/sgx_types/metadata/struct.tcs_t.html   |   27 +
 .../sgx-sdk/sgx_types/metadata/union.layout_t.html |   17 +
 api-docs/sgx-sdk/sgx_types/sidebar-items.js        |    1 +
 api-docs/sgx-sdk/sgx_types/struct.align_req_t.html |   20 +
 .../sgx-sdk/sgx_types/struct.rsa_params_t.html     |   26 +
 .../sgx_types/struct.sgx_aes_gcm_data_t.html       |   22 +
 .../struct.sgx_align_ec256_dh_shared_t.html        |   20 +
 .../struct.sgx_align_ec256_private_t.html          |   20 +
 .../sgx_types/struct.sgx_align_key_128bit_t.html   |   20 +
 .../sgx_types/struct.sgx_align_key_256bit_t.html   |   20 +
 .../sgx_types/struct.sgx_align_mac_128bit_t.html   |   20 +
 .../sgx_types/struct.sgx_align_mac_256bit_t.html   |   20 +
 .../sgx_types/struct.sgx_att_key_id_ext_t.html     |   23 +
 .../sgx-sdk/sgx_types/struct.sgx_att_key_id_t.html |   20 +
 .../sgx-sdk/sgx_types/struct.sgx_attributes_t.html |   20 +
 .../sgx-sdk/sgx_types/struct.sgx_basename_t.html   |   20 +
 .../sgx_types/struct.sgx_cpu_context_t.html        |   36 +
 .../sgx-sdk/sgx_types/struct.sgx_cpu_svn_t.html    |   19 +
 .../sgx-sdk/sgx_types/struct.sgx_dh_msg1_t.html    |   21 +
 .../sgx-sdk/sgx_types/struct.sgx_dh_msg2_t.html    |   22 +
 .../sgx_types/struct.sgx_dh_msg3_body_t.html       |   22 +
 .../sgx-sdk/sgx_types/struct.sgx_dh_msg3_t.html    |   21 +
 .../struct.sgx_dh_session_enclave_identity_t.html  |   29 +
 .../sgx-sdk/sgx_types/struct.sgx_dh_session_t.html |   20 +
 .../sgx_types/struct.sgx_ec256_dh_shared_t.html    |   19 +
 .../sgx_types/struct.sgx_ec256_private_t.html      |   19 +
 .../sgx_types/struct.sgx_ec256_public_t.html       |   20 +
 .../sgx_types/struct.sgx_ec256_signature_t.html    |   20 +
 .../sgx-sdk/sgx_types/struct.sgx_ecc_param_t.html  |   24 +
 .../sgx_types/struct.sgx_exception_info_t.html     |   21 +
 .../sgx-sdk/sgx_types/struct.sgx_key_id_t.html     |   19 +
 .../sgx_types/struct.sgx_key_request_t.html        |   28 +
 .../sgx-sdk/sgx_types/struct.sgx_kss_config_t.html |   21 +
 .../sgx_types/struct.sgx_measurement_t.html        |   19 +
 .../sgx_types/struct.sgx_misc_attribute_t.html     |   20 +
 .../sgx-sdk/sgx_types/struct.sgx_pce_info_t.html   |   21 +
 .../sgx_types/struct.sgx_platform_info_t.html      |   20 +
 .../sgx-sdk/sgx_types/struct.sgx_ps_cap_t.html     |   20 +
 .../sgx_types/struct.sgx_ps_sec_prop_desc_t.html   |   19 +
 .../sgx_types/struct.sgx_qe_report_info_t.html     |   22 +
 .../sgx_types/struct.sgx_ql_att_key_id_t.html      |   28 +
 .../sgx_types/struct.sgx_ql_auth_data_t.html       |   21 +
 .../struct.sgx_ql_certification_data_t.html        |   22 +
 .../sgx-sdk/sgx_types/struct.sgx_ql_config_t.html  |   21 +
 .../sgx_types/struct.sgx_ql_ecdsa_sig_data_t.html  |   24 +
 .../sgx_types/struct.sgx_ql_pck_cert_id_t.html     |   24 +
 ....sgx_ql_ppid_rsa3072_encrypted_cert_info_t.html |   22 +
 .../sgx-sdk/sgx_types/struct.sgx_ql_qe3_id_t.html  |   20 +
 .../sgx_types/struct.sgx_ql_qe_report_info_t.html  |   22 +
 .../sgx_types/struct.sgx_ql_qv_supplemental_t.html |   36 +
 .../sgx_types/struct.sgx_ql_qve_collateral_t.html  |   30 +
 .../sgx-sdk/sgx_types/struct.sgx_quote3_t.html     |   23 +
 .../sgx_types/struct.sgx_quote_header_t.html       |   26 +
 .../sgx_types/struct.sgx_quote_nonce_t.html        |   20 +
 api-docs/sgx-sdk/sgx_types/struct.sgx_quote_t.html |   29 +
 .../sgx-sdk/sgx_types/struct.sgx_ra_msg1_t.html    |   20 +
 .../sgx-sdk/sgx_types/struct.sgx_ra_msg2_t.html    |   26 +
 .../sgx-sdk/sgx_types/struct.sgx_ra_msg3_t.html    |   22 +
 .../sgx_types/struct.sgx_report_body_t.html        |   34 +
 .../sgx_types/struct.sgx_report_data_t.html        |   19 +
 .../sgx-sdk/sgx_types/struct.sgx_report_t.html     |   21 +
 .../sgx_types/struct.sgx_rsa3072_key_t.html        |   21 +
 .../sgx_types/struct.sgx_rsa3072_public_key_t.html |   20 +
 .../sgx_types/struct.sgx_rsa3072_signature_t.html  |   19 +
 .../sgx_types/struct.sgx_sealed_data_t.html        |   22 +
 api-docs/sgx-sdk/sgx_types/struct.sgx_spid_t.html  |   20 +
 .../sgx_types/struct.sgx_target_info_t.html        |   26 +
 .../sgx_types/struct.sgx_thread_cond_attr_t.html   |   19 +
 .../sgx_types/struct.sgx_thread_cond_t.html        |   17 +
 .../sgx_types/struct.sgx_thread_mutex_attr_t.html  |   19 +
 .../sgx_types/struct.sgx_thread_mutex_t.html       |   20 +
 .../sgx_types/struct.sgx_thread_queue_t.html       |   17 +
 .../sgx_types/struct.sgx_thread_rwlock_t.html      |   21 +
 .../sgx_types/struct.sgx_thread_rwlockattr_t.html  |   19 +
 .../sgx_types/struct.sgx_update_info_bit_t.html    |   22 +
 .../sgx_types/struct.sgx_uswitchless_config_t.html |   22 +
 .../struct.sgx_uswitchless_worker_stats_t.html     |   20 +
 api-docs/sgx-sdk/sgx_types/type.SGX_FILE.html      |    4 +
 api-docs/sgx-sdk/sgx_types/type.SgxError.html      |    4 +
 api-docs/sgx-sdk/sgx_types/type.SgxPceError.html   |    4 +
 api-docs/sgx-sdk/sgx_types/type.SgxPceResult.html  |    4 +
 api-docs/sgx-sdk/sgx_types/type.SgxQcnlError.html  |    4 +
 api-docs/sgx-sdk/sgx_types/type.SgxQcnlResult.html |    4 +
 .../sgx-sdk/sgx_types/type.SgxQuote3Error.html     |    4 +
 .../sgx-sdk/sgx_types/type.SgxQuote3Result.html    |    4 +
 api-docs/sgx-sdk/sgx_types/type.SgxResult.html     |    4 +
 api-docs/sgx-sdk/sgx_types/type.SysError.html      |    4 +
 api-docs/sgx-sdk/sgx_types/type.SysResult.html     |    4 +
 api-docs/sgx-sdk/sgx_types/type.c_char.html        |    4 +
 api-docs/sgx-sdk/sgx_types/type.c_double.html      |    4 +
 api-docs/sgx-sdk/sgx_types/type.c_float.html       |    4 +
 api-docs/sgx-sdk/sgx_types/type.c_int.html         |    4 +
 api-docs/sgx-sdk/sgx_types/type.c_long.html        |    4 +
 api-docs/sgx-sdk/sgx_types/type.c_longlong.html    |    4 +
 api-docs/sgx-sdk/sgx_types/type.c_schar.html       |    4 +
 api-docs/sgx-sdk/sgx_types/type.c_short.html       |    4 +
 api-docs/sgx-sdk/sgx_types/type.c_uchar.html       |    4 +
 api-docs/sgx-sdk/sgx_types/type.c_uint.html        |    4 +
 api-docs/sgx-sdk/sgx_types/type.c_ulong.html       |    4 +
 api-docs/sgx-sdk/sgx_types/type.c_ulonglong.html   |    4 +
 api-docs/sgx-sdk/sgx_types/type.c_ushort.html      |    4 +
 api-docs/sgx-sdk/sgx_types/type.int16_t.html       |    4 +
 api-docs/sgx-sdk/sgx_types/type.int32_t.html       |    4 +
 api-docs/sgx-sdk/sgx_types/type.int64_t.html       |    4 +
 api-docs/sgx-sdk/sgx_types/type.int8_t.html        |    4 +
 api-docs/sgx-sdk/sgx_types/type.intmax_t.html      |    4 +
 api-docs/sgx-sdk/sgx_types/type.intptr_t.html      |    4 +
 api-docs/sgx-sdk/sgx_types/type.ptrdiff_t.html     |    4 +
 .../sgx_types/type.sgx_aes_ctr_128bit_key_t.html   |    4 +
 .../sgx_types/type.sgx_aes_gcm_128bit_key_t.html   |    4 +
 .../sgx_types/type.sgx_aes_gcm_128bit_tag_t.html   |    4 +
 .../sgx_types/type.sgx_aes_state_handle_t.html     |    4 +
 .../sgx_types/type.sgx_cmac_128bit_key_t.html      |    4 +
 .../sgx_types/type.sgx_cmac_128bit_tag_t.html      |    4 +
 .../sgx_types/type.sgx_cmac_state_handle_t.html    |    4 +
 .../sgx-sdk/sgx_types/type.sgx_config_id_t.html    |    4 +
 .../sgx-sdk/sgx_types/type.sgx_config_svn_t.html   |    4 +
 api-docs/sgx-sdk/sgx_types/type.sgx_cpuinfo_t.html |    4 +
 .../sgx_types/type.sgx_ec_key_128bit_t.html        |    4 +
 .../sgx_types/type.sgx_ecall_get_ga_trusted_t.html |    4 +
 .../type.sgx_ecall_get_msg3_trusted_t.html         |    4 +
 .../type.sgx_ecall_proc_msg2_trusted_t.html        |    4 +
 .../sgx_types/type.sgx_ecc_state_handle_t.html     |    4 +
 .../sgx-sdk/sgx_types/type.sgx_enclave_id_t.html   |    4 +
 .../sgx_types/type.sgx_epid_group_id_t.html        |    4 +
 .../sgx_types/type.sgx_exception_handler_t.html    |    4 +
 .../sgx_types/type.sgx_hmac_256bit_key_t.html      |    4 +
 .../sgx_types/type.sgx_hmac_256bit_tag_t.html      |    4 +
 .../sgx_types/type.sgx_hmac_state_handle_t.html    |    4 +
 api-docs/sgx-sdk/sgx_types/type.sgx_isv_svn_t.html |    4 +
 .../sgx_types/type.sgx_isvext_prod_id_t.html       |    4 +
 .../sgx-sdk/sgx_types/type.sgx_isvfamily_id_t.html |    4 +
 .../sgx-sdk/sgx_types/type.sgx_key_128bit_t.html   |    4 +
 .../sgx-sdk/sgx_types/type.sgx_key_256bit_t.html   |    4 +
 .../sgx-sdk/sgx_types/type.sgx_launch_token_t.html |    4 +
 .../sgx-sdk/sgx_types/type.sgx_mac_128bit_t.html   |    4 +
 .../sgx-sdk/sgx_types/type.sgx_mac_256bit_t.html   |    4 +
 api-docs/sgx-sdk/sgx_types/type.sgx_mac_t.html     |    4 +
 .../sgx-sdk/sgx_types/type.sgx_misc_select_t.html  |    4 +
 api-docs/sgx-sdk/sgx_types/type.sgx_prod_id_t.html |    4 +
 .../sgx-sdk/sgx_types/type.sgx_ra_context_t.html   |    4 +
 .../type.sgx_ra_derive_secret_keys_t.html          |    4 +
 .../sgx-sdk/sgx_types/type.sgx_ra_key_128_t.html   |    4 +
 api-docs/sgx-sdk/sgx_types/type.sgx_rsa_key_t.html |    4 +
 .../sgx-sdk/sgx_types/type.sgx_sha1_hash_t.html    |    4 +
 .../sgx-sdk/sgx_types/type.sgx_sha256_hash_t.html  |    4 +
 .../sgx_types/type.sgx_sha_state_handle_t.html     |    4 +
 .../sgx-sdk/sgx_types/type.sgx_spinlock_t.html     |    4 +
 api-docs/sgx-sdk/sgx_types/type.sgx_thread_t.html  |    4 +
 .../type.sgx_uswitchless_worker_callback_t.html    |    4 +
 api-docs/sgx-sdk/sgx_types/type.size_t.html        |    4 +
 api-docs/sgx-sdk/sgx_types/type.ssize_t.html       |    4 +
 api-docs/sgx-sdk/sgx_types/type.sys_error_t.html   |    4 +
 api-docs/sgx-sdk/sgx_types/type.time_t.html        |    4 +
 api-docs/sgx-sdk/sgx_types/type.uint16_t.html      |    4 +
 api-docs/sgx-sdk/sgx_types/type.uint32_t.html      |    4 +
 api-docs/sgx-sdk/sgx_types/type.uint64_t.html      |    4 +
 api-docs/sgx-sdk/sgx_types/type.uint8_t.html       |    4 +
 api-docs/sgx-sdk/sgx_types/type.uintmax_t.html     |    4 +
 api-docs/sgx-sdk/sgx_types/type.uintptr_t.html     |    4 +
 .../types/constant.DMP1_SIZE_IN_BYTES.html         |   10 +
 .../types/constant.DMP1_SIZE_IN_UINT.html          |   10 +
 .../types/constant.DMQ1_SIZE_IN_BYTES.html         |   10 +
 .../types/constant.DMQ1_SIZE_IN_UINT.html          |   10 +
 .../sgx_types/types/constant.D_SIZE_IN_BYTES.html  |   10 +
 .../sgx_types/types/constant.D_SIZE_IN_UINT.html   |   10 +
 .../sgx_types/types/constant.ENCLAVE_CRASHED.html  |   10 +
 .../types/constant.ENCLAVE_INIT_DONE.html          |   10 +
 .../types/constant.ENCLAVE_INIT_IN_PROGRESS.html   |   10 +
 .../types/constant.ENCLAVE_INIT_NOT_STARTED.html   |   10 +
 .../constant.EXCEPTION_CONTINUE_EXECUTION.html     |   10 +
 .../types/constant.EXCEPTION_CONTINUE_SEARCH.html  |   10 +
 .../sgx_types/types/constant.E_SIZE_IN_BYTES.html  |   10 +
 .../sgx_types/types/constant.E_SIZE_IN_UINT.html   |   10 +
 .../sgx_types/types/constant.FILENAME_MAX.html     |   10 +
 .../types/constant.FLAGS_NON_SECURITY_BITS.html    |   10 +
 .../constant.FLAGS_SECURITY_BITS_RESERVED.html     |   10 +
 .../sgx_types/types/constant.FOPEN_MAX.html        |   10 +
 .../types/constant.IQMP_SIZE_IN_BYTES.html         |   10 +
 .../types/constant.IQMP_SIZE_IN_UINT.html          |   10 +
 .../types/constant.MAX_EX_FEATURES_COUNT.html      |   10 +
 .../types/constant.MISC_NON_SECURITY_BITS.html     |   10 +
 .../sgx_types/types/constant.N_SIZE_IN_BYTES.html  |   10 +
 .../sgx_types/types/constant.N_SIZE_IN_UINT.html   |   10 +
 .../types/constant.PCE_ALG_RSA_OAEP_3072.html      |   10 +
 .../sgx-sdk/sgx_types/types/constant.PCE_ID.html   |   10 +
 .../types/constant.PCE_NIST_P256_ECDSA_SHA256.html |   10 +
 .../types/constant.PLATFORM_INSTANCE_ID_SIZE.html  |   10 +
 .../types/constant.PS_CAP_MONOTONIC_COUNTER.html   |   10 +
 .../types/constant.PS_CAP_TRUSTED_TIME.html        |   10 +
 .../sgx_types/types/constant.P_SIZE_IN_BYTES.html  |   10 +
 .../sgx_types/types/constant.P_SIZE_IN_UINT.html   |   10 +
 .../sgx_types/types/constant.Q_SIZE_IN_BYTES.html  |   10 +
 .../sgx_types/types/constant.Q_SIZE_IN_UINT.html   |   10 +
 ...tant.REF_QUOTE_MAX_AUTHENTICATON_DATA_SIZE.html |   10 +
 .../sgx_types/types/constant.ROOT_KEY_ID_SIZE.html |   10 +
 .../sgx_types/types/constant.SE_WORDSIZE.html      |   10 +
 .../types/constant.SGX_AESCTR_KEY_SIZE.html        |   10 +
 .../types/constant.SGX_AESGCM_IV_SIZE.html         |   10 +
 .../types/constant.SGX_AESGCM_KEY_SIZE.html        |   10 +
 .../types/constant.SGX_AESGCM_MAC_SIZE.html        |   10 +
 .../types/constant.SGX_CMAC_KEY_SIZE.html          |   10 +
 .../types/constant.SGX_CMAC_MAC_SIZE.html          |   10 +
 .../types/constant.SGX_CONFIGID_SIZE.html          |   10 +
 .../sgx_types/types/constant.SGX_CPUSVN_SIZE.html  |   10 +
 .../types/constant.SGX_CREATE_ENCLAVE_EX_KSS.html  |   10 +
 ...constant.SGX_CREATE_ENCLAVE_EX_KSS_BIT_IDX.html |   10 +
 .../types/constant.SGX_CREATE_ENCLAVE_EX_PCL.html  |   10 +
 ...constant.SGX_CREATE_ENCLAVE_EX_PCL_BIT_IDX.html |   10 +
 .../constant.SGX_CREATE_ENCLAVE_EX_SWITCHLESS.html |   10 +
 ...t.SGX_CREATE_ENCLAVE_EX_SWITCHLESS_BIT_IDX.html |   10 +
 .../sgx_types/types/constant.SGX_DH_MAC_SIZE.html  |   10 +
 .../types/constant.SGX_DH_SESSION_DATA_SIZE.html   |   10 +
 .../types/constant.SGX_ECP256_KEY_SIZE.html        |   10 +
 .../sgx_types/types/constant.SGX_FEBITSIZE.html    |   10 +
 .../sgx_types/types/constant.SGX_FLAGS_DEBUG.html  |   10 +
 .../types/constant.SGX_FLAGS_EINITTOKEN_KEY.html   |   10 +
 .../types/constant.SGX_FLAGS_INITTED.html          |   10 +
 .../sgx_types/types/constant.SGX_FLAGS_KSS.html    |   10 +
 .../types/constant.SGX_FLAGS_MODE64BIT.html        |   10 +
 .../types/constant.SGX_FLAGS_PROVISION_KEY.html    |   10 +
 .../types/constant.SGX_FLAGS_RESERVED.html         |   10 +
 .../sgx_types/types/constant.SGX_HASH_SIZE.html    |   10 +
 .../types/constant.SGX_HMAC256_KEY_SIZE.html       |   10 +
 .../types/constant.SGX_HMAC256_MAC_SIZE.html       |   10 +
 .../types/constant.SGX_ISVEXT_PROD_ID_SIZE.html    |   10 +
 .../types/constant.SGX_ISV_FAMILY_ID_SIZE.html     |   10 +
 .../sgx_types/types/constant.SGX_KEYID_SIZE.html   |   10 +
 .../types/constant.SGX_KEYPOLICY_CONFIGID.html     |   10 +
 .../types/constant.SGX_KEYPOLICY_ISVEXTPRODID.html |   10 +
 .../types/constant.SGX_KEYPOLICY_ISVFAMILYID.html  |   10 +
 .../types/constant.SGX_KEYPOLICY_MRENCLAVE.html    |   10 +
 .../types/constant.SGX_KEYPOLICY_MRSIGNER.html     |   10 +
 .../types/constant.SGX_KEYPOLICY_NOISVPRODID.html  |   10 +
 .../types/constant.SGX_KEYSELECT_LICENSE.html      |   10 +
 .../types/constant.SGX_KEYSELECT_PROVISION.html    |   10 +
 .../constant.SGX_KEYSELECT_PROVISION_SEAL.html     |   10 +
 .../types/constant.SGX_KEYSELECT_REPORT.html       |   10 +
 .../types/constant.SGX_KEYSELECT_SEAL.html         |   10 +
 .../constant.SGX_KEY_REQUEST_RESERVED2_BYTES.html  |   10 +
 .../sgx_types/types/constant.SGX_MAC_SIZE.html     |   10 +
 .../types/constant.SGX_NISTP_ECP256_KEY_SIZE.html  |   10 +
 .../sgx_types/types/constant.SGX_PCL_GUID.html     |   10 +
 .../types/constant.SGX_PCL_GUID_SIZE.html          |   10 +
 .../types/constant.SGX_PLATFORM_INFO_SIZE.html     |   10 +
 .../sgx_types/types/constant.SGX_PROT_EXEC.html    |   10 +
 .../sgx_types/types/constant.SGX_PROT_NONE.html    |   10 +
 .../sgx_types/types/constant.SGX_PROT_READ.html    |   10 +
 .../sgx_types/types/constant.SGX_PROT_WRITE.html   |   10 +
 .../constant.SGX_REPORT_BODY_RESERVED1_BYTES.html  |   10 +
 .../constant.SGX_REPORT_BODY_RESERVED2_BYTES.html  |   10 +
 .../constant.SGX_REPORT_BODY_RESERVED3_BYTES.html  |   10 +
 .../constant.SGX_REPORT_BODY_RESERVED4_BYTES.html  |   10 +
 .../types/constant.SGX_REPORT_DATA_SIZE.html       |   10 +
 .../types/constant.SGX_RSA3072_KEY_SIZE.html       |   10 +
 .../types/constant.SGX_RSA3072_PRI_EXP_SIZE.html   |   10 +
 .../types/constant.SGX_RSA3072_PUB_EXP_SIZE.html   |   10 +
 .../sgx_types/types/constant.SGX_SEAL_IV_SIZE.html |   10 +
 .../types/constant.SGX_SEAL_TAG_SIZE.html          |   10 +
 .../types/constant.SGX_SHA1_HASH_SIZE.html         |   10 +
 .../types/constant.SGX_SHA256_HASH_SIZE.html       |   10 +
 .../types/constant.SGX_SPINLOCK_INITIALIZER.html   |   10 +
 .../constant.SGX_TARGET_INFO_RESERVED1_BYTES.html  |   10 +
 .../constant.SGX_TARGET_INFO_RESERVED2_BYTES.html  |   10 +
 .../constant.SGX_TARGET_INFO_RESERVED3_BYTES.html  |   10 +
 .../constant.SGX_THREAD_COND_INITIALIZER.html      |   10 +
 .../constant.SGX_THREAD_LOCK_INITIALIZER.html      |   10 +
 .../constant.SGX_THREAD_MUTEX_INITIALIZER.html     |   10 +
 .../constant.SGX_THREAD_MUTEX_NONRECURSIVE.html    |   10 +
 .../types/constant.SGX_THREAD_MUTEX_RECURSIVE.html |   10 +
 ....SGX_THREAD_NONRECURSIVE_MUTEX_INITIALIZER.html |   10 +
 ...ant.SGX_THREAD_RECURSIVE_MUTEX_INITIALIZER.html |   10 +
 .../types/constant.SGX_THREAD_T_NULL.html          |   10 +
 .../sgx_types/types/constant.SGX_XFRM_AVX.html     |   10 +
 .../sgx_types/types/constant.SGX_XFRM_AVX512.html  |   10 +
 .../sgx_types/types/constant.SGX_XFRM_LEGACY.html  |   10 +
 .../sgx_types/types/constant.SGX_XFRM_MPX.html     |   10 +
 .../types/constant.SGX_XFRM_RESERVED.html          |   10 +
 .../constant.SL_DEFAULT_FALLBACK_RETRIES.html      |   10 +
 .../types/constant.SL_DEFAULT_SLEEP_RETRIES.html   |   10 +
 .../constant.SL_DEFUALT_MAX_TASKS_QWORDS.html      |   10 +
 .../types/constant.SL_MAX_TASKS_MAX_QWORDS.html    |   10 +
 .../types/constant.TSEAL_DEFAULT_FLAGSMASK.html    |   10 +
 .../types/constant.TSEAL_DEFAULT_MISCMASK.html     |   10 +
 .../types/constant._SGX_EX_FEATURES_MASK_.html     |   10 +
 .../types/constant._SGX_LAST_EX_FEATURE_IDX_.html  |   10 +
 ...constant._SGX_USWITCHLESS_WORKER_EVENT_NUM.html |   10 +
 .../sgx_types/types/enum.pck_cert_flag_enum_t.html |   10 +
 .../sgx_types/types/enum.sgx_device_status_t.html  |   10 +
 .../types/enum.sgx_dh_session_role_t.html          |   10 +
 .../sgx_types/types/enum.sgx_exception_type_t.html |   10 +
 .../types/enum.sgx_exception_vector_t.html         |   10 +
 .../types/enum.sgx_generic_ecresult_t.html         |   10 +
 .../enum.sgx_ql_attestation_algorithm_id_t.html    |   10 +
 .../types/enum.sgx_ql_cert_key_type_t.html         |   10 +
 .../types/enum.sgx_ql_config_version_t.html        |   10 +
 .../sgx_types/types/enum.sgx_ql_path_type_t.html   |   10 +
 .../types/enum.sgx_ql_request_policy_t.html        |   10 +
 .../types/enum.sgx_quote_sign_type_t.html          |   10 +
 .../sgx_types/types/enum.sgx_qv_path_type_t.html   |   10 +
 .../sgx_types/types/enum.sgx_ra_key_type_t.html    |   10 +
 .../sgx_types/types/enum.sgx_rsa_key_type_t.html   |   10 +
 .../sgx_types/types/enum.sgx_rsa_result_t.html     |   10 +
 .../types/enum.sgx_uswitchless_worker_event_t.html |   10 +
 .../types/enum.sgx_uswitchless_worker_type_t.html  |   10 +
 .../sgx_types/types/struct.align_req_t.html        |   10 +
 .../sgx_types/types/struct.rsa_params_t.html       |   10 +
 .../sgx_types/types/struct.sgx_aes_gcm_data_t.html |   10 +
 .../types/struct.sgx_align_ec256_dh_shared_t.html  |   10 +
 .../types/struct.sgx_align_ec256_private_t.html    |   10 +
 .../types/struct.sgx_align_key_128bit_t.html       |   10 +
 .../types/struct.sgx_align_key_256bit_t.html       |   10 +
 .../types/struct.sgx_align_mac_128bit_t.html       |   10 +
 .../types/struct.sgx_align_mac_256bit_t.html       |   10 +
 .../types/struct.sgx_att_key_id_ext_t.html         |   10 +
 .../sgx_types/types/struct.sgx_att_key_id_t.html   |   10 +
 .../sgx_types/types/struct.sgx_attributes_t.html   |   10 +
 .../sgx_types/types/struct.sgx_basename_t.html     |   10 +
 .../sgx_types/types/struct.sgx_cpu_context_t.html  |   10 +
 .../sgx_types/types/struct.sgx_cpu_svn_t.html      |   10 +
 .../sgx_types/types/struct.sgx_dh_msg1_t.html      |   10 +
 .../sgx_types/types/struct.sgx_dh_msg2_t.html      |   10 +
 .../sgx_types/types/struct.sgx_dh_msg3_body_t.html |   10 +
 .../sgx_types/types/struct.sgx_dh_msg3_t.html      |   10 +
 .../struct.sgx_dh_session_enclave_identity_t.html  |   10 +
 .../sgx_types/types/struct.sgx_dh_session_t.html   |   10 +
 .../types/struct.sgx_ec256_dh_shared_t.html        |   10 +
 .../types/struct.sgx_ec256_private_t.html          |   10 +
 .../sgx_types/types/struct.sgx_ec256_public_t.html |   10 +
 .../types/struct.sgx_ec256_signature_t.html        |   10 +
 .../sgx_types/types/struct.sgx_ecc_param_t.html    |   10 +
 .../types/struct.sgx_exception_info_t.html         |   10 +
 .../sgx_types/types/struct.sgx_key_id_t.html       |   10 +
 .../sgx_types/types/struct.sgx_key_request_t.html  |   10 +
 .../sgx_types/types/struct.sgx_kss_config_t.html   |   10 +
 .../sgx_types/types/struct.sgx_measurement_t.html  |   10 +
 .../types/struct.sgx_misc_attribute_t.html         |   10 +
 .../sgx_types/types/struct.sgx_pce_info_t.html     |   10 +
 .../types/struct.sgx_platform_info_t.html          |   10 +
 .../sgx_types/types/struct.sgx_ps_cap_t.html       |   10 +
 .../types/struct.sgx_ps_sec_prop_desc_t.html       |   10 +
 .../types/struct.sgx_qe_report_info_t.html         |   10 +
 .../types/struct.sgx_ql_att_key_id_t.html          |   10 +
 .../sgx_types/types/struct.sgx_ql_auth_data_t.html |   10 +
 .../types/struct.sgx_ql_certification_data_t.html  |   10 +
 .../sgx_types/types/struct.sgx_ql_config_t.html    |   10 +
 .../types/struct.sgx_ql_ecdsa_sig_data_t.html      |   10 +
 .../types/struct.sgx_ql_pck_cert_id_t.html         |   10 +
 ....sgx_ql_ppid_rsa3072_encrypted_cert_info_t.html |   10 +
 .../sgx_types/types/struct.sgx_ql_qe3_id_t.html    |   10 +
 .../types/struct.sgx_ql_qe_report_info_t.html      |   10 +
 .../types/struct.sgx_ql_qv_supplemental_t.html     |   10 +
 .../types/struct.sgx_ql_qve_collateral_t.html      |   10 +
 .../sgx_types/types/struct.sgx_quote3_t.html       |   10 +
 .../sgx_types/types/struct.sgx_quote_header_t.html |   10 +
 .../sgx_types/types/struct.sgx_quote_nonce_t.html  |   10 +
 .../sgx_types/types/struct.sgx_quote_t.html        |   10 +
 .../sgx_types/types/struct.sgx_ra_msg1_t.html      |   10 +
 .../sgx_types/types/struct.sgx_ra_msg2_t.html      |   10 +
 .../sgx_types/types/struct.sgx_ra_msg3_t.html      |   10 +
 .../sgx_types/types/struct.sgx_report_body_t.html  |   10 +
 .../sgx_types/types/struct.sgx_report_data_t.html  |   10 +
 .../sgx_types/types/struct.sgx_report_t.html       |   10 +
 .../sgx_types/types/struct.sgx_rsa3072_key_t.html  |   10 +
 .../types/struct.sgx_rsa3072_public_key_t.html     |   10 +
 .../types/struct.sgx_rsa3072_signature_t.html      |   10 +
 .../sgx_types/types/struct.sgx_sealed_data_t.html  |   10 +
 .../sgx-sdk/sgx_types/types/struct.sgx_spid_t.html |   10 +
 .../sgx_types/types/struct.sgx_target_info_t.html  |   10 +
 .../types/struct.sgx_thread_cond_attr_t.html       |   10 +
 .../sgx_types/types/struct.sgx_thread_cond_t.html  |   10 +
 .../types/struct.sgx_thread_mutex_attr_t.html      |   10 +
 .../sgx_types/types/struct.sgx_thread_mutex_t.html |   10 +
 .../sgx_types/types/struct.sgx_thread_queue_t.html |   10 +
 .../types/struct.sgx_thread_rwlock_t.html          |   10 +
 .../types/struct.sgx_thread_rwlockattr_t.html      |   10 +
 .../types/struct.sgx_update_info_bit_t.html        |   10 +
 .../types/struct.sgx_uswitchless_config_t.html     |   10 +
 .../struct.sgx_uswitchless_worker_stats_t.html     |   10 +
 .../sgx-sdk/sgx_types/types/type.SGX_FILE.html     |   10 +
 .../types/type.sgx_aes_ctr_128bit_key_t.html       |   10 +
 .../types/type.sgx_aes_gcm_128bit_key_t.html       |   10 +
 .../types/type.sgx_aes_gcm_128bit_tag_t.html       |   10 +
 .../types/type.sgx_aes_state_handle_t.html         |   10 +
 .../types/type.sgx_cmac_128bit_key_t.html          |   10 +
 .../types/type.sgx_cmac_128bit_tag_t.html          |   10 +
 .../types/type.sgx_cmac_state_handle_t.html        |   10 +
 .../sgx_types/types/type.sgx_config_id_t.html      |   10 +
 .../sgx_types/types/type.sgx_config_svn_t.html     |   10 +
 .../sgx_types/types/type.sgx_cpuinfo_t.html        |   10 +
 .../sgx_types/types/type.sgx_ec_key_128bit_t.html  |   10 +
 .../types/type.sgx_ecall_get_ga_trusted_t.html     |   10 +
 .../types/type.sgx_ecall_get_msg3_trusted_t.html   |   10 +
 .../types/type.sgx_ecall_proc_msg2_trusted_t.html  |   10 +
 .../types/type.sgx_ecc_state_handle_t.html         |   10 +
 .../sgx_types/types/type.sgx_enclave_id_t.html     |   10 +
 .../sgx_types/types/type.sgx_epid_group_id_t.html  |   10 +
 .../types/type.sgx_exception_handler_t.html        |   10 +
 .../types/type.sgx_hmac_256bit_key_t.html          |   10 +
 .../types/type.sgx_hmac_256bit_tag_t.html          |   10 +
 .../types/type.sgx_hmac_state_handle_t.html        |   10 +
 .../sgx_types/types/type.sgx_isv_svn_t.html        |   10 +
 .../sgx_types/types/type.sgx_isvext_prod_id_t.html |   10 +
 .../sgx_types/types/type.sgx_isvfamily_id_t.html   |   10 +
 .../sgx_types/types/type.sgx_key_128bit_t.html     |   10 +
 .../sgx_types/types/type.sgx_key_256bit_t.html     |   10 +
 .../sgx_types/types/type.sgx_launch_token_t.html   |   10 +
 .../sgx_types/types/type.sgx_mac_128bit_t.html     |   10 +
 .../sgx_types/types/type.sgx_mac_256bit_t.html     |   10 +
 .../sgx-sdk/sgx_types/types/type.sgx_mac_t.html    |   10 +
 .../sgx_types/types/type.sgx_misc_select_t.html    |   10 +
 .../sgx_types/types/type.sgx_prod_id_t.html        |   10 +
 .../sgx_types/types/type.sgx_ra_context_t.html     |   10 +
 .../types/type.sgx_ra_derive_secret_keys_t.html    |   10 +
 .../sgx_types/types/type.sgx_ra_key_128_t.html     |   10 +
 .../sgx_types/types/type.sgx_rsa_key_t.html        |   10 +
 .../sgx_types/types/type.sgx_sha1_hash_t.html      |   10 +
 .../sgx_types/types/type.sgx_sha256_hash_t.html    |   10 +
 .../types/type.sgx_sha_state_handle_t.html         |   10 +
 .../sgx_types/types/type.sgx_spinlock_t.html       |   10 +
 .../sgx-sdk/sgx_types/types/type.sgx_thread_t.html |   10 +
 .../type.sgx_uswitchless_worker_callback_t.html    |   10 +
 api-docs/sgx-sdk/sgx_unwind/all.html               |    6 +
 .../constant.unwinder_private_data_size.html       |    4 +
 .../sgx-sdk/sgx_unwind/enum._Unwind_Action.html    |   26 +
 .../sgx-sdk/sgx_unwind/enum._Unwind_Context.html   |   13 +
 .../sgx_unwind/enum._Unwind_Reason_Code.html       |   32 +
 .../sgx-sdk/sgx_unwind/fn._Unwind_Backtrace.html   |    4 +
 .../sgx_unwind/fn._Unwind_DeleteException.html     |    4 +
 .../fn._Unwind_FindEnclosingFunction.html          |    4 +
 .../sgx_unwind/fn._Unwind_GetDataRelBase.html      |    4 +
 api-docs/sgx-sdk/sgx_unwind/fn._Unwind_GetGR.html  |    4 +
 api-docs/sgx-sdk/sgx_unwind/fn._Unwind_GetIP.html  |    4 +
 .../sgx-sdk/sgx_unwind/fn._Unwind_GetIPInfo.html   |    4 +
 .../fn._Unwind_GetLanguageSpecificData.html        |    4 +
 .../sgx_unwind/fn._Unwind_GetRegionStart.html      |    4 +
 .../sgx_unwind/fn._Unwind_GetTextRelBase.html      |    4 +
 .../sgx_unwind/fn._Unwind_RaiseException.html      |    4 +
 api-docs/sgx-sdk/sgx_unwind/fn._Unwind_Resume.html |    4 +
 api-docs/sgx-sdk/sgx_unwind/fn._Unwind_SetGR.html  |    4 +
 api-docs/sgx-sdk/sgx_unwind/fn._Unwind_SetIP.html  |    4 +
 api-docs/sgx-sdk/sgx_unwind/index.html             |   10 +
 .../constant.unwinder_private_data_size.html       |   10 +
 .../sgx_unwind/libunwind/enum._Unwind_Action.html  |   10 +
 .../sgx_unwind/libunwind/enum._Unwind_Context.html |   10 +
 .../libunwind/enum._Unwind_Reason_Code.html        |   10 +
 .../sgx_unwind/libunwind/fn._Unwind_Backtrace.html |   10 +
 .../libunwind/fn._Unwind_DeleteException.html      |   10 +
 .../fn._Unwind_FindEnclosingFunction.html          |   10 +
 .../libunwind/fn._Unwind_GetDataRelBase.html       |   10 +
 .../sgx_unwind/libunwind/fn._Unwind_GetGR.html     |   10 +
 .../sgx_unwind/libunwind/fn._Unwind_GetIP.html     |   10 +
 .../sgx_unwind/libunwind/fn._Unwind_GetIPInfo.html |   10 +
 .../fn._Unwind_GetLanguageSpecificData.html        |   10 +
 .../libunwind/fn._Unwind_GetRegionStart.html       |   10 +
 .../libunwind/fn._Unwind_GetTextRelBase.html       |   10 +
 .../libunwind/fn._Unwind_RaiseException.html       |   10 +
 .../sgx_unwind/libunwind/fn._Unwind_Resume.html    |   10 +
 .../sgx_unwind/libunwind/fn._Unwind_SetGR.html     |   10 +
 .../sgx_unwind/libunwind/fn._Unwind_SetIP.html     |   10 +
 .../libunwind/struct._Unwind_Exception.html        |   10 +
 .../libunwind/type._Unwind_Exception_Class.html    |   10 +
 .../type._Unwind_Exception_Cleanup_Fn.html         |   10 +
 .../sgx_unwind/libunwind/type._Unwind_Ptr.html     |   10 +
 .../libunwind/type._Unwind_Trace_Fn.html           |   10 +
 .../sgx_unwind/libunwind/type._Unwind_Word.html    |   10 +
 api-docs/sgx-sdk/sgx_unwind/sidebar-items.js       |    1 +
 .../sgx_unwind/struct._Unwind_Exception.html       |   18 +
 .../sgx_unwind/type._Unwind_Exception_Class.html   |    4 +
 .../type._Unwind_Exception_Cleanup_Fn.html         |    4 +
 api-docs/sgx-sdk/sgx_unwind/type._Unwind_Ptr.html  |    4 +
 .../sgx-sdk/sgx_unwind/type._Unwind_Trace_Fn.html  |    4 +
 api-docs/sgx-sdk/sgx_unwind/type._Unwind_Word.html |    4 +
 api-docs/sgx-sdk/source-files.js                   |   14 +
 api-docs/sgx-sdk/source-script.js                  |    1 +
 .../external_trait_impls/mod.rs.html               |   14 +
 api-docs/sgx-sdk/src/hashbrown_tstd/lib.rs.html    |  230 +
 api-docs/sgx-sdk/src/hashbrown_tstd/macros.rs.html |  144 +
 api-docs/sgx-sdk/src/hashbrown_tstd/map.rs.html    | 9060 ++++++++++++++++++++
 .../sgx-sdk/src/hashbrown_tstd/raw/bitmask.rs.html |  250 +
 .../sgx-sdk/src/hashbrown_tstd/raw/mod.rs.html     | 3762 ++++++++
 .../sgx-sdk/src/hashbrown_tstd/raw/sse2.rs.html    |  294 +
 .../sgx-sdk/src/hashbrown_tstd/rustc_entry.rs.html | 1242 +++
 .../sgx-sdk/src/hashbrown_tstd/scopeguard.rs.html  |  104 +
 api-docs/sgx-sdk/src/hashbrown_tstd/set.rs.html    | 4244 +++++++++
 api-docs/sgx-sdk/src/sgx_alloc/alignalloc.rs.html  |  802 ++
 api-docs/sgx-sdk/src/sgx_alloc/alignbox.rs.html    |  570 ++
 api-docs/sgx-sdk/src/sgx_alloc/lib.rs.html         |   92 +
 api-docs/sgx-sdk/src/sgx_alloc/rsrvmem.rs.html     |  424 +
 api-docs/sgx-sdk/src/sgx_alloc/system.rs.html      |  556 ++
 api-docs/sgx-sdk/src/sgx_backtrace_sys/lib.rs.html |  143 +
 api-docs/sgx-sdk/src/sgx_demangle/legacy.rs.html   |  404 +
 api-docs/sgx-sdk/src/sgx_demangle/lib.rs.html      |  388 +
 api-docs/sgx-sdk/src/sgx_demangle/v0.rs.html       | 1988 +++++
 api-docs/sgx-sdk/src/sgx_libc/lib.rs.html          |  102 +
 api-docs/sgx-sdk/src/sgx_libc/linux/mod.rs.html    |   56 +
 .../sgx-sdk/src/sgx_libc/linux/x86_64/mod.rs.html  | 3176 +++++++
 .../src/sgx_libc/linux/x86_64/ocall.rs.html        | 6068 +++++++++++++
 api-docs/sgx-sdk/src/sgx_libc/macros.rs.html       |  332 +
 api-docs/sgx-sdk/src/sgx_tprotected_fs/fs.rs.html  | 1298 +++
 api-docs/sgx-sdk/src/sgx_tprotected_fs/lib.rs.html |   68 +
 api-docs/sgx-sdk/src/sgx_trts/ascii.rs.html        |  369 +
 api-docs/sgx-sdk/src/sgx_trts/c_str.rs.html        | 1650 ++++
 api-docs/sgx-sdk/src/sgx_trts/cpu_feature.rs.html  |  652 ++
 api-docs/sgx-sdk/src/sgx_trts/cpuid.rs.html        |  284 +
 api-docs/sgx-sdk/src/sgx_trts/enclave.rs.html      | 1245 +++
 api-docs/sgx-sdk/src/sgx_trts/lib.rs.html          |  226 +
 api-docs/sgx-sdk/src/sgx_trts/macros.rs.html       |  162 +
 api-docs/sgx-sdk/src/sgx_trts/memchr.rs.html       |  130 +
 api-docs/sgx-sdk/src/sgx_trts/memeq.rs.html        |  198 +
 api-docs/sgx-sdk/src/sgx_trts/oom.rs.html          |  122 +
 api-docs/sgx-sdk/src/sgx_trts/trts.rs.html         |  428 +
 api-docs/sgx-sdk/src/sgx_trts/veh.rs.html          |  232 +
 api-docs/sgx-sdk/src/sgx_tse/lib.rs.html           |   66 +
 api-docs/sgx-sdk/src/sgx_tse/se.rs.html            |  460 +
 api-docs/sgx-sdk/src/sgx_tstd/alloc.rs.html        |  235 +
 api-docs/sgx-sdk/src/sgx_tstd/ascii.rs.html        |   41 +
 .../src/sgx_tstd/collections/hash/map.rs.html      | 5694 ++++++++++++
 .../src/sgx_tstd/collections/hash/mod.rs.html      |   14 +
 .../src/sgx_tstd/collections/hash/set.rs.html      | 3332 +++++++
 .../sgx-sdk/src/sgx_tstd/collections/mod.rs.html   |  900 ++
 api-docs/sgx-sdk/src/sgx_tstd/cpuid.rs.html        |   42 +
 api-docs/sgx-sdk/src/sgx_tstd/debug.rs.html        |   62 +
 api-docs/sgx-sdk/src/sgx_tstd/enclave.rs.html      |  273 +
 api-docs/sgx-sdk/src/sgx_tstd/env.rs.html          | 1133 +++
 api-docs/sgx-sdk/src/sgx_tstd/error.rs.html        | 1028 +++
 api-docs/sgx-sdk/src/sgx_tstd/f32.rs.html          |  814 ++
 api-docs/sgx-sdk/src/sgx_tstd/f64.rs.html          |  868 ++
 api-docs/sgx-sdk/src/sgx_tstd/ffi/c_str.rs.html    |  112 +
 api-docs/sgx-sdk/src/sgx_tstd/ffi/mod.rs.html      |  368 +
 api-docs/sgx-sdk/src/sgx_tstd/ffi/os_str.rs.html   | 1553 ++++
 api-docs/sgx-sdk/src/sgx_tstd/fs.rs.html           | 2802 ++++++
 api-docs/sgx-sdk/src/sgx_tstd/future.rs.html       |  252 +
 api-docs/sgx-sdk/src/sgx_tstd/io/buffered.rs.html  | 1378 +++
 api-docs/sgx-sdk/src/sgx_tstd/io/cursor.rs.html    |  602 ++
 api-docs/sgx-sdk/src/sgx_tstd/io/error.rs.html     |  811 ++
 api-docs/sgx-sdk/src/sgx_tstd/io/impls.rs.html     |  727 ++
 api-docs/sgx-sdk/src/sgx_tstd/io/lazy.rs.html      |  261 +
 api-docs/sgx-sdk/src/sgx_tstd/io/mod.rs.html       | 2754 ++++++
 api-docs/sgx-sdk/src/sgx_tstd/io/prelude.rs.html   |   61 +
 api-docs/sgx-sdk/src/sgx_tstd/io/stdio.rs.html     | 1163 +++
 api-docs/sgx-sdk/src/sgx_tstd/io/util.rs.html      |  414 +
 api-docs/sgx-sdk/src/sgx_tstd/lib.rs.html          |  606 ++
 api-docs/sgx-sdk/src/sgx_tstd/macros.rs.html       |  410 +
 api-docs/sgx-sdk/src/sgx_tstd/memchr.rs.html       |   89 +
 api-docs/sgx-sdk/src/sgx_tstd/net/addr.rs.html     | 1195 +++
 api-docs/sgx-sdk/src/sgx_tstd/net/ip.rs.html       | 2321 +++++
 api-docs/sgx-sdk/src/sgx_tstd/net/mod.rs.html      |  183 +
 api-docs/sgx-sdk/src/sgx_tstd/net/parser.rs.html   |  763 ++
 api-docs/sgx-sdk/src/sgx_tstd/num.rs.html          |   62 +
 api-docs/sgx-sdk/src/sgx_tstd/os/fs.rs.html        |  297 +
 api-docs/sgx-sdk/src/sgx_tstd/os/mod.rs.html       |   45 +
 api-docs/sgx-sdk/src/sgx_tstd/os/raw.rs.html       |  163 +
 api-docs/sgx-sdk/src/sgx_tstd/panic.rs.html        |  646 ++
 api-docs/sgx-sdk/src/sgx_tstd/panicking.rs.html    |  924 ++
 api-docs/sgx-sdk/src/sgx_tstd/path.rs.html         | 3900 +++++++++
 api-docs/sgx-sdk/src/sgx_tstd/prelude/mod.rs.html  |   70 +
 api-docs/sgx-sdk/src/sgx_tstd/prelude/v1.rs.html   |  156 +
 api-docs/sgx-sdk/src/sgx_tstd/rt.rs.html           |  108 +
 api-docs/sgx-sdk/src/sgx_tstd/sgxfs.rs.html        |  640 ++
 api-docs/sgx-sdk/src/sgx_tstd/sync/barrier.rs.html |  237 +
 api-docs/sgx-sdk/src/sgx_tstd/sync/condvar.rs.html |  978 +++
 api-docs/sgx-sdk/src/sgx_tstd/sync/mod.rs.html     |  104 +
 api-docs/sgx-sdk/src/sgx_tstd/sync/mutex.rs.html   | 1008 +++
 api-docs/sgx-sdk/src/sgx_tstd/sync/once.rs.html    |  779 ++
 api-docs/sgx-sdk/src/sgx_tstd/sync/remutex.rs.html |  718 ++
 api-docs/sgx-sdk/src/sgx_tstd/sync/rwlock.rs.html  |  951 ++
 .../sgx-sdk/src/sgx_tstd/sync/spinlock.rs.html     |  286 +
 api-docs/sgx-sdk/src/sgx_tstd/sys/cmath.rs.html    |  102 +
 api-docs/sgx-sdk/src/sgx_tstd/sys/condvar.rs.html  |  458 +
 api-docs/sgx-sdk/src/sgx_tstd/sys/env.rs.html      |   57 +
 api-docs/sgx-sdk/src/sgx_tstd/sys/ext/ffi.rs.html  |   46 +
 api-docs/sgx-sdk/src/sgx_tstd/sys/ext/fs.rs.html   |  861 ++
 api-docs/sgx-sdk/src/sgx_tstd/sys/ext/io.rs.html   |  276 +
 api-docs/sgx-sdk/src/sgx_tstd/sys/ext/mod.rs.html  |   81 +
 api-docs/sgx-sdk/src/sgx_tstd/sys/ext/raw.rs.html  |   58 +
 api-docs/sgx-sdk/src/sgx_tstd/sys/fd.rs.html       |  508 ++
 api-docs/sgx-sdk/src/sgx_tstd/sys/fs.rs.html       | 1385 +++
 api-docs/sgx-sdk/src/sgx_tstd/sys/io.rs.html       |  190 +
 api-docs/sgx-sdk/src/sgx_tstd/sys/memchr.rs.html   |   41 +
 api-docs/sgx-sdk/src/sgx_tstd/sys/mod.rs.html      |  234 +
 api-docs/sgx-sdk/src/sgx_tstd/sys/mutex.rs.html    |  720 ++
 api-docs/sgx-sdk/src/sgx_tstd/sys/os.rs.html       |  607 ++
 api-docs/sgx-sdk/src/sgx_tstd/sys/path.rs.html     |   78 +
 api-docs/sgx-sdk/src/sgx_tstd/sys/rand.rs.html     |  104 +
 api-docs/sgx-sdk/src/sgx_tstd/sys/rwlock.rs.html   |  624 ++
 api-docs/sgx-sdk/src/sgx_tstd/sys/sgxfs.rs.html    |  652 ++
 api-docs/sgx-sdk/src/sgx_tstd/sys/stdio.rs.html    |  185 +
 api-docs/sgx-sdk/src/sgx_tstd/sys/time.rs.html     |  469 +
 .../src/sgx_tstd/sys_common/at_exit_imp.rs.html    |  181 +
 .../src/sgx_tstd/sys_common/bytestring.rs.html     |   85 +
 .../sgx-sdk/src/sgx_tstd/sys_common/fs.rs.html     |   85 +
 .../sgx-sdk/src/sgx_tstd/sys_common/io.rs.html     |  129 +
 .../sgx-sdk/src/sgx_tstd/sys_common/memchr.rs.html |  304 +
 .../sgx-sdk/src/sgx_tstd/sys_common/mod.rs.html    |  291 +
 .../src/sgx_tstd/sys_common/os_str_bytes.rs.html   |  624 ++
 .../sgx-sdk/src/sgx_tstd/sys_common/poison.rs.html |  414 +
 .../src/sgx_tstd/sys_common/thread_info.rs.html    |  107 +
 .../sgx-sdk/src/sgx_tstd/sys_common/util.rs.html   |   96 +
 .../sgx-sdk/src/sgx_tstd/sys_common/wtf8.rs.html   | 1758 ++++
 api-docs/sgx-sdk/src/sgx_tstd/thread/local.rs.html | 1009 +++
 api-docs/sgx-sdk/src/sgx_tstd/thread/mod.rs.html   | 1887 ++++
 api-docs/sgx-sdk/src/sgx_tstd/time.rs.html         |  855 ++
 api-docs/sgx-sdk/src/sgx_tstd/untrusted/fs.rs.html |   43 +
 .../sgx-sdk/src/sgx_tstd/untrusted/mod.rs.html     |   46 +
 .../sgx-sdk/src/sgx_tstd/untrusted/path.rs.html    |  240 +
 .../sgx-sdk/src/sgx_tstd/untrusted/time.rs.html    |  148 +
 api-docs/sgx-sdk/src/sgx_types/cpu_feature.rs.html |  530 ++
 api-docs/sgx-sdk/src/sgx_types/error.rs.html       | 1554 ++++
 api-docs/sgx-sdk/src/sgx_types/function.rs.html    | 1654 ++++
 api-docs/sgx-sdk/src/sgx_types/lib.rs.html         |  164 +
 api-docs/sgx-sdk/src/sgx_types/macros.rs.html      |  486 ++
 api-docs/sgx-sdk/src/sgx_types/marker.rs.html      |  202 +
 api-docs/sgx-sdk/src/sgx_types/metadata.rs.html    |  518 ++
 api-docs/sgx-sdk/src/sgx_types/types.rs.html       | 3136 +++++++
 api-docs/sgx-sdk/src/sgx_unwind/lib.rs.html        |   72 +
 api-docs/sgx-sdk/src/sgx_unwind/libunwind.rs.html  |  202 +
 api-docs/sgx-sdk/src/sgx_unwind/macros.rs.html     |  156 +
 .../sgx-sdk/src/teaclave_sgx_sdk_docs/lib.rs.html  |   12 +
 api-docs/sgx-sdk/storage.js                        |    1 +
 api-docs/sgx-sdk/teaclave_sgx_sdk_docs/all.html    |    6 +
 api-docs/sgx-sdk/teaclave_sgx_sdk_docs/index.html  |    5 +
 .../sgx-sdk/teaclave_sgx_sdk_docs/sidebar-items.js |    1 +
 api-docs/sgx-sdk/theme.js                          |    1 +
 api-docs/sgx-sdk/wheel.svg                         |    1 +
 api-docs/trustzone-sdk/optee-teec/.lock            |    0
 api-docs/trustzone-sdk/optee-teec/COPYRIGHT.txt    |   50 +
 .../trustzone-sdk/optee-teec/FiraSans-LICENSE.txt  |   94 +
 .../trustzone-sdk/optee-teec/FiraSans-Medium.woff  |  Bin 0 -> 186824 bytes
 .../trustzone-sdk/optee-teec/FiraSans-Medium.woff2 |  Bin 0 -> 132780 bytes
 .../trustzone-sdk/optee-teec/FiraSans-Regular.woff |  Bin 0 -> 183268 bytes
 .../optee-teec/FiraSans-Regular.woff2              |  Bin 0 -> 129188 bytes
 .../trustzone-sdk/optee-teec/LICENSE-APACHE.txt    |  201 +
 api-docs/trustzone-sdk/optee-teec/LICENSE-MIT.txt  |   23 +
 .../optee-teec/SourceCodePro-It.ttf.woff           |  Bin 0 -> 58444 bytes
 .../optee-teec/SourceCodePro-It.ttf.woff2          |  Bin 0 -> 44896 bytes
 .../optee-teec/SourceCodePro-LICENSE.txt           |   93 +
 .../optee-teec/SourceCodePro-Regular.ttf.woff      |  Bin 0 -> 68152 bytes
 .../optee-teec/SourceCodePro-Regular.ttf.woff2     |  Bin 0 -> 52228 bytes
 .../optee-teec/SourceCodePro-Semibold.ttf.woff     |  Bin 0 -> 68080 bytes
 .../optee-teec/SourceCodePro-Semibold.ttf.woff2    |  Bin 0 -> 52348 bytes
 .../optee-teec/SourceSerif4-Bold.ttf.woff          |  Bin 0 -> 110552 bytes
 .../optee-teec/SourceSerif4-Bold.ttf.woff2         |  Bin 0 -> 81320 bytes
 .../optee-teec/SourceSerif4-It.ttf.woff            |  Bin 0 -> 78108 bytes
 .../optee-teec/SourceSerif4-It.ttf.woff2           |  Bin 0 -> 59860 bytes
 .../optee-teec/SourceSerif4-LICENSE.md             |   93 +
 .../optee-teec/SourceSerif4-Regular.ttf.woff       |  Bin 0 -> 103604 bytes
 .../optee-teec/SourceSerif4-Regular.ttf.woff2      |  Bin 0 -> 76180 bytes
 api-docs/trustzone-sdk/optee-teec/ayu.css          |    1 +
 api-docs/trustzone-sdk/optee-teec/brush.svg        |    1 +
 api-docs/trustzone-sdk/optee-teec/clipboard.svg    |    1 +
 api-docs/trustzone-sdk/optee-teec/crates.js        |    1 +
 api-docs/trustzone-sdk/optee-teec/dark.css         |    1 +
 api-docs/trustzone-sdk/optee-teec/down-arrow.svg   |    1 +
 .../trustzone-sdk/optee-teec/favicon-16x16.png     |  Bin 0 -> 2214 bytes
 .../trustzone-sdk/optee-teec/favicon-32x32.png     |  Bin 0 -> 2919 bytes
 api-docs/trustzone-sdk/optee-teec/favicon.svg      |   24 +
 .../implementors/core/clone/trait.Clone.js         |    3 +
 .../optee-teec/implementors/core/cmp/trait.Eq.js   |    3 +
 .../optee-teec/implementors/core/cmp/trait.Ord.js  |    3 +
 .../implementors/core/cmp/trait.PartialEq.js       |    3 +
 .../implementors/core/cmp/trait.PartialOrd.js      |    3 +
 .../implementors/core/convert/trait.From.js        |    3 +
 .../implementors/core/fmt/trait.Debug.js           |    3 +
 .../implementors/core/fmt/trait.Display.js         |    3 +
 .../implementors/core/hash/trait.Hash.js           |    3 +
 .../implementors/core/marker/trait.Copy.js         |    3 +
 .../implementors/core/marker/trait.Freeze.js       |    3 +
 .../implementors/core/marker/trait.Send.js         |    3 +
 .../implementors/core/marker/trait.StructuralEq.js |    3 +
 .../core/marker/trait.StructuralPartialEq.js       |    3 +
 .../implementors/core/marker/trait.Sync.js         |    3 +
 .../implementors/core/marker/trait.Unpin.js        |    3 +
 .../implementors/core/ops/drop/trait.Drop.js       |    3 +
 .../core/panic/unwind_safe/trait.RefUnwindSafe.js  |    3 +
 .../core/panic/unwind_safe/trait.UnwindSafe.js     |    3 +
 .../implementors/optee_teec/trait.Param.js         |    3 +
 .../implementors/std/error/trait.Error.js          |    3 +
 api-docs/trustzone-sdk/optee-teec/index.html       |    1 +
 api-docs/trustzone-sdk/optee-teec/light.css        |    1 +
 api-docs/trustzone-sdk/optee-teec/main.js          |    8 +
 api-docs/trustzone-sdk/optee-teec/normalize.css    |    2 +
 api-docs/trustzone-sdk/optee-teec/noscript.css     |    1 +
 .../noto-sans-kr-v13-korean-regular-LICENSE.txt    |   93 +
 .../noto-sans-kr-v13-korean-regular.woff           |  Bin 0 -> 287068 bytes
 .../trustzone-sdk/optee-teec/optee_teec/all.html   |    5 +
 .../optee-teec/optee_teec/attr.plugin_init.html    |    7 +
 .../optee-teec/optee_teec/attr.plugin_invoke.html  |    7 +
 .../optee_teec/context/struct.Context.html         |   11 +
 .../optee_teec/enum.ConnectionMethods.html         |   32 +
 .../optee-teec/optee_teec/enum.ErrorKind.html      |   80 +
 .../optee-teec/optee_teec/enum.ParamType.html      |   59 +
 .../optee_teec/error/enum.ErrorKind.html           |   11 +
 .../optee-teec/optee_teec/error/struct.Error.html  |   11 +
 .../optee-teec/optee_teec/error/type.Result.html   |   11 +
 .../optee_teec/extension/struct.PluginMethod.html  |   11 +
 .../extension/struct.PluginParameters.html         |   11 +
 .../trustzone-sdk/optee-teec/optee_teec/index.html |   40 +
 .../optee_teec/operation/struct.Operation.html     |   11 +
 .../optee_teec/parameter/enum.ParamType.html       |   11 +
 .../optee_teec/parameter/struct.ParamNone.html     |   11 +
 .../optee_teec/parameter/struct.ParamTmpRef.html   |   11 +
 .../optee_teec/parameter/struct.ParamTypes.html    |   11 +
 .../optee_teec/parameter/struct.ParamValue.html    |   11 +
 .../optee_teec/parameter/trait.Param.html          |   11 +
 .../optee_teec/session/enum.ConnectionMethods.html |   11 +
 .../optee_teec/session/struct.Session.html         |   11 +
 .../optee-teec/optee_teec/sidebar-items.js         |    1 +
 .../optee-teec/optee_teec/struct.Context.html      |   40 +
 .../optee-teec/optee_teec/struct.Error.html        |   34 +
 .../optee-teec/optee_teec/struct.Operation.html    |   18 +
 .../optee-teec/optee_teec/struct.ParamNone.html    |   13 +
 .../optee-teec/optee_teec/struct.ParamTmpRef.html  |   21 +
 .../optee-teec/optee_teec/struct.ParamTypes.html   |   15 +
 .../optee-teec/optee_teec/struct.ParamValue.html   |   20 +
 .../optee-teec/optee_teec/struct.PluginMethod.html |   17 +
 .../optee_teec/struct.PluginParameters.html        |   23 +
 .../optee-teec/optee_teec/struct.Session.html      |   17 +
 .../optee-teec/optee_teec/struct.Uuid.html         |   29 +
 .../optee-teec/optee_teec/trait.Param.html         |    7 +
 .../optee-teec/optee_teec/type.Result.html         |    9 +
 .../optee-teec/optee_teec/uuid/struct.Uuid.html    |   11 +
 api-docs/trustzone-sdk/optee-teec/rust-logo.png    |  Bin 0 -> 5758 bytes
 api-docs/trustzone-sdk/optee-teec/rustdoc.css      |    1 +
 api-docs/trustzone-sdk/optee-teec/search-index.js  |    4 +
 api-docs/trustzone-sdk/optee-teec/search.js        |    1 +
 api-docs/trustzone-sdk/optee-teec/settings.css     |    1 +
 api-docs/trustzone-sdk/optee-teec/settings.html    |    4 +
 api-docs/trustzone-sdk/optee-teec/settings.js      |    1 +
 api-docs/trustzone-sdk/optee-teec/source-files.js  |    3 +
 api-docs/trustzone-sdk/optee-teec/source-script.js |    1 +
 .../optee-teec/src/optee_teec/context.rs.html      |  242 +
 .../optee-teec/src/optee_teec/error.rs.html        |  414 +
 .../optee-teec/src/optee_teec/extension.rs.html    |  142 +
 .../optee-teec/src/optee_teec/lib.rs.html          |   70 +
 .../optee-teec/src/optee_teec/operation.rs.html    |  140 +
 .../optee-teec/src/optee_teec/parameter.rs.html    |  506 ++
 .../optee-teec/src/optee_teec/session.rs.html      |  230 +
 .../optee-teec/src/optee_teec/uuid.rs.html         |  236 +
 api-docs/trustzone-sdk/optee-teec/storage.js       |    1 +
 api-docs/trustzone-sdk/optee-teec/toggle-minus.svg |    1 +
 api-docs/trustzone-sdk/optee-teec/toggle-plus.svg  |    1 +
 api-docs/trustzone-sdk/optee-teec/wheel.svg        |    1 +
 api-docs/trustzone-sdk/optee-utee/.lock            |    0
 api-docs/trustzone-sdk/optee-utee/COPYRIGHT.txt    |   50 +
 .../trustzone-sdk/optee-utee/FiraSans-LICENSE.txt  |   94 +
 .../trustzone-sdk/optee-utee/FiraSans-Medium.woff  |  Bin 0 -> 186824 bytes
 .../trustzone-sdk/optee-utee/FiraSans-Medium.woff2 |  Bin 0 -> 132780 bytes
 .../trustzone-sdk/optee-utee/FiraSans-Regular.woff |  Bin 0 -> 183268 bytes
 .../optee-utee/FiraSans-Regular.woff2              |  Bin 0 -> 129188 bytes
 .../trustzone-sdk/optee-utee/LICENSE-APACHE.txt    |  201 +
 api-docs/trustzone-sdk/optee-utee/LICENSE-MIT.txt  |   23 +
 .../optee-utee/SourceCodePro-It.ttf.woff           |  Bin 0 -> 58444 bytes
 .../optee-utee/SourceCodePro-It.ttf.woff2          |  Bin 0 -> 44896 bytes
 .../optee-utee/SourceCodePro-LICENSE.txt           |   93 +
 .../optee-utee/SourceCodePro-Regular.ttf.woff      |  Bin 0 -> 68152 bytes
 .../optee-utee/SourceCodePro-Regular.ttf.woff2     |  Bin 0 -> 52228 bytes
 .../optee-utee/SourceCodePro-Semibold.ttf.woff     |  Bin 0 -> 68080 bytes
 .../optee-utee/SourceCodePro-Semibold.ttf.woff2    |  Bin 0 -> 52348 bytes
 .../optee-utee/SourceSerif4-Bold.ttf.woff          |  Bin 0 -> 110552 bytes
 .../optee-utee/SourceSerif4-Bold.ttf.woff2         |  Bin 0 -> 81320 bytes
 .../optee-utee/SourceSerif4-It.ttf.woff            |  Bin 0 -> 78108 bytes
 .../optee-utee/SourceSerif4-It.ttf.woff2           |  Bin 0 -> 59860 bytes
 .../optee-utee/SourceSerif4-LICENSE.md             |   93 +
 .../optee-utee/SourceSerif4-Regular.ttf.woff       |  Bin 0 -> 103604 bytes
 .../optee-utee/SourceSerif4-Regular.ttf.woff2      |  Bin 0 -> 76180 bytes
 api-docs/trustzone-sdk/optee-utee/ayu.css          |    1 +
 api-docs/trustzone-sdk/optee-utee/brush.svg        |    1 +
 api-docs/trustzone-sdk/optee-utee/clipboard.svg    |    1 +
 api-docs/trustzone-sdk/optee-utee/crates.js        |    1 +
 api-docs/trustzone-sdk/optee-utee/dark.css         |    1 +
 api-docs/trustzone-sdk/optee-utee/down-arrow.svg   |    1 +
 .../trustzone-sdk/optee-utee/favicon-16x16.png     |  Bin 0 -> 2214 bytes
 .../trustzone-sdk/optee-utee/favicon-32x32.png     |  Bin 0 -> 2919 bytes
 api-docs/trustzone-sdk/optee-utee/favicon.svg      |   24 +
 .../implementors/core/clone/trait.Clone.js         |    3 +
 .../optee-utee/implementors/core/cmp/trait.Eq.js   |    3 +
 .../optee-utee/implementors/core/cmp/trait.Ord.js  |    3 +
 .../implementors/core/cmp/trait.PartialEq.js       |    3 +
 .../implementors/core/cmp/trait.PartialOrd.js      |    3 +
 .../implementors/core/convert/trait.From.js        |    3 +
 .../implementors/core/convert/trait.Into.js        |    3 +
 .../implementors/core/fmt/trait.Binary.js          |    3 +
 .../implementors/core/fmt/trait.Debug.js           |    3 +
 .../implementors/core/fmt/trait.Display.js         |    3 +
 .../implementors/core/fmt/trait.LowerHex.js        |    3 +
 .../implementors/core/fmt/trait.Octal.js           |    3 +
 .../implementors/core/fmt/trait.UpperHex.js        |    3 +
 .../implementors/core/hash/trait.Hash.js           |    3 +
 .../core/iter/traits/collect/trait.Extend.js       |    3 +
 .../core/iter/traits/collect/trait.FromIterator.js |    3 +
 .../implementors/core/marker/trait.Copy.js         |    3 +
 .../implementors/core/marker/trait.Freeze.js       |    3 +
 .../implementors/core/marker/trait.Send.js         |    3 +
 .../implementors/core/marker/trait.StructuralEq.js |    3 +
 .../core/marker/trait.StructuralPartialEq.js       |    3 +
 .../implementors/core/marker/trait.Sync.js         |    3 +
 .../implementors/core/marker/trait.Unpin.js        |    3 +
 .../implementors/core/ops/arith/trait.Sub.js       |    3 +
 .../implementors/core/ops/arith/trait.SubAssign.js |    3 +
 .../implementors/core/ops/bit/trait.BitAnd.js      |    3 +
 .../core/ops/bit/trait.BitAndAssign.js             |    3 +
 .../implementors/core/ops/bit/trait.BitOr.js       |    3 +
 .../implementors/core/ops/bit/trait.BitOrAssign.js |    3 +
 .../implementors/core/ops/bit/trait.BitXor.js      |    3 +
 .../core/ops/bit/trait.BitXorAssign.js             |    3 +
 .../implementors/core/ops/bit/trait.Not.js         |    3 +
 .../implementors/core/ops/drop/trait.Drop.js       |    3 +
 .../core/panic/unwind_safe/trait.RefUnwindSafe.js  |    3 +
 .../core/panic/unwind_safe/trait.UnwindSafe.js     |    3 +
 .../optee_utee/crypto_op/trait.OpHandle.js         |    3 +
 .../optee_utee/object/trait.ObjHandle.js           |    3 +
 .../implementors/std/error/trait.Error.js          |    3 +
 .../optee-utee/implementors/std/io/trait.Read.js   |    3 +
 .../optee-utee/implementors/std/io/trait.Write.js  |    3 +
 api-docs/trustzone-sdk/optee-utee/index.html       |    1 +
 api-docs/trustzone-sdk/optee-utee/light.css        |    1 +
 api-docs/trustzone-sdk/optee-utee/main.js          |    8 +
 api-docs/trustzone-sdk/optee-utee/normalize.css    |    2 +
 api-docs/trustzone-sdk/optee-utee/noscript.css     |    1 +
 .../noto-sans-kr-v13-korean-regular-LICENSE.txt    |   93 +
 .../noto-sans-kr-v13-korean-regular.woff           |  Bin 0 -> 287068 bytes
 .../trustzone-sdk/optee-utee/optee_utee/all.html   |    5 +
 .../optee-utee/optee_utee/arithmetical/index.html  |    5 +
 .../optee_utee/arithmetical/sidebar-items.js       |    1 +
 .../optee_utee/arithmetical/struct.BigInt.html     |   14 +
 .../optee_utee/arithmetical/struct.BigIntFMM.html  |   12 +
 .../arithmetical/struct.BigIntFMMContext.html      |   12 +
 .../arithmetical/type.BigIntFMMContextUnit.html    |    3 +
 .../arithmetical/type.BigIntFMMUnit.html           |    3 +
 .../optee_utee/arithmetical/type.BigIntUnit.html   |    3 +
 .../optee_utee/attr.ta_close_session.html          |   11 +
 .../optee-utee/optee_utee/attr.ta_create.html      |    7 +
 .../optee-utee/optee_utee/attr.ta_destroy.html     |    7 +
 .../optee_utee/attr.ta_invoke_command.html         |   11 +
 .../optee_utee/attr.ta_open_session.html           |   13 +
 .../optee_utee/crypto_op/enum.AlgorithmId.html     |  147 +
 .../optee_utee/crypto_op/enum.ElementId.html       |   28 +
 .../crypto_op/enum.OperationConstant.html          |   28 +
 .../optee_utee/crypto_op/enum.OperationMode.html   |   31 +
 .../optee_utee/crypto_op/enum.OperationStates.html |   20 +
 .../crypto_op/fn.is_algorithm_supported.html       |    4 +
 .../optee-utee/optee_utee/crypto_op/index.html     |   31 +
 .../optee_utee/crypto_op/sidebar-items.js          |    1 +
 .../optee-utee/optee_utee/crypto_op/struct.AE.html |  153 +
 .../optee_utee/crypto_op/struct.Asymmetric.html    |  129 +
 .../optee_utee/crypto_op/struct.Cipher.html        |  158 +
 .../optee_utee/crypto_op/struct.DeriveKey.html     |   76 +
 .../optee_utee/crypto_op/struct.Digest.html        |  183 +
 .../optee_utee/crypto_op/struct.Mac.html           |  112 +
 .../crypto_op/struct.OperationHandle.html          |   16 +
 .../optee_utee/crypto_op/struct.OperationInfo.html |   38 +
 .../crypto_op/struct.OperationInfoMultiple.html    |   35 +
 .../optee_utee/crypto_op/struct.Random.html        |   26 +
 .../optee_utee/crypto_op/trait.OpHandle.html       |    7 +
 .../optee-utee/optee_utee/enum.ErrorKind.html      |  102 +
 .../optee-utee/optee_utee/enum.ParamType.html      |   27 +
 .../optee_utee/error/enum.ErrorKind.html           |   11 +
 .../optee-utee/optee_utee/error/struct.Error.html  |   11 +
 .../optee-utee/optee_utee/error/type.Result.html   |   11 +
 .../optee-utee/optee_utee/extension/index.html     |    4 +
 .../optee_utee/extension/sidebar-items.js          |    1 +
 .../extension/struct.LoadablePlugin.html           |   12 +
 .../trustzone-sdk/optee-utee/optee_utee/index.html |   27 +
 .../optee-utee/optee_utee/macro.trace_print!.html  |   11 +
 .../optee-utee/optee_utee/macro.trace_print.html   |   18 +
 .../optee_utee/macro.trace_println!.html           |   11 +
 .../optee-utee/optee_utee/macro.trace_println.html |   14 +
 .../optee-utee/optee_utee/net/index.html           |    4 +
 .../optee-utee/optee_utee/net/sidebar-items.js     |    1 +
 .../optee_utee/net/struct.TcpStream.html           |   40 +
 .../optee_utee/net/struct.UdpSocket.html           |   40 +
 .../optee_utee/object/enum.AttributeId.html        |   64 +
 .../object/enum.MiscellaneousConstants.html        |   19 +
 .../object/enum.ObjectStorageConstants.html        |   16 +
 .../object/enum.TransientObjectType.html           |   74 +
 .../optee-utee/optee_utee/object/enum.Whence.html  |   21 +
 .../optee-utee/optee_utee/object/index.html        |   29 +
 .../optee-utee/optee_utee/object/sidebar-items.js  |    1 +
 .../optee_utee/object/struct.Attribute.html        |   19 +
 .../optee_utee/object/struct.AttributeMemref.html  |   30 +
 .../optee_utee/object/struct.AttributeValue.html   |   24 +
 .../optee_utee/object/struct.DataFlag.html         |   93 +
 .../optee_utee/object/struct.HandleFlag.html       |   86 +
 .../optee_utee/object/struct.ObjectEnumHandle.html |   27 +
 .../optee_utee/object/struct.ObjectHandle.html     |   13 +
 .../optee_utee/object/struct.ObjectInfo.html       |   40 +
 .../optee_utee/object/struct.PersistentObject.html |  326 +
 .../optee_utee/object/struct.TransientObject.html  |  261 +
 .../optee_utee/object/struct.UsageFlag.html        |   80 +
 .../optee_utee/object/trait.ObjHandle.html         |    7 +
 .../optee_utee/parameter/enum.ParamType.html       |   11 +
 .../optee_utee/parameter/struct.ParamTypes.html    |   11 +
 .../optee_utee/parameter/struct.Parameter.html     |   11 +
 .../optee_utee/parameter/struct.Parameters.html    |   11 +
 .../optee-utee/optee_utee/sidebar-items.js         |    1 +
 .../optee-utee/optee_utee/struct.Error.html        |   31 +
 .../optee-utee/optee_utee/struct.ParamTypes.html   |   13 +
 .../optee-utee/optee_utee/struct.Parameter.html    |   15 +
 .../optee-utee/optee_utee/struct.Parameters.html   |   12 +
 .../optee-utee/optee_utee/time/index.html          |    5 +
 .../optee-utee/optee_utee/time/sidebar-items.js    |    1 +
 .../optee-utee/optee_utee/time/struct.Time.html    |   85 +
 .../optee-utee/optee_utee/trace/index.html         |    4 +
 .../optee-utee/optee_utee/trace/sidebar-items.js   |    1 +
 .../optee-utee/optee_utee/trace/struct.Trace.html  |   23 +
 .../optee-utee/optee_utee/type.Result.html         |    9 +
 .../optee-utee/optee_utee/uuid/index.html          |    6 +
 .../optee-utee/optee_utee/uuid/sidebar-items.js    |    1 +
 .../optee-utee/optee_utee/uuid/struct.Uuid.html    |   35 +
 api-docs/trustzone-sdk/optee-utee/rust-logo.png    |  Bin 0 -> 5758 bytes
 api-docs/trustzone-sdk/optee-utee/rustdoc.css      |    1 +
 api-docs/trustzone-sdk/optee-utee/search-index.js  |    4 +
 api-docs/trustzone-sdk/optee-utee/search.js        |    1 +
 api-docs/trustzone-sdk/optee-utee/settings.css     |    1 +
 api-docs/trustzone-sdk/optee-utee/settings.html    |    4 +
 api-docs/trustzone-sdk/optee-utee/settings.js      |    1 +
 api-docs/trustzone-sdk/optee-utee/source-files.js  |    3 +
 api-docs/trustzone-sdk/optee-utee/source-script.js |    1 +
 .../optee-utee/src/optee_utee/arithmetical.rs.html |  674 ++
 .../optee-utee/src/optee_utee/crypto_op.rs.html    | 3534 ++++++++
 .../optee-utee/src/optee_utee/error.rs.html        |  494 ++
 .../optee-utee/src/optee_utee/extension.rs.html    |  110 +
 .../optee-utee/src/optee_utee/lib.rs.html          |   86 +
 .../optee-utee/src/optee_utee/macros.rs.html       |  126 +
 .../optee-utee/src/optee_utee/net.rs.html          |  726 ++
 .../optee-utee/src/optee_utee/object.rs.html       | 2880 +++++++
 .../optee-utee/src/optee_utee/parameter.rs.html    |  366 +
 .../optee-utee/src/optee_utee/time.rs.html         |  320 +
 .../optee-utee/src/optee_utee/trace.rs.html        |  128 +
 .../optee-utee/src/optee_utee/uuid.rs.html         |  234 +
 api-docs/trustzone-sdk/optee-utee/storage.js       |    1 +
 api-docs/trustzone-sdk/optee-utee/toggle-minus.svg |    1 +
 api-docs/trustzone-sdk/optee-utee/toggle-plus.svg  |    1 +
 api-docs/trustzone-sdk/optee-utee/wheel.svg        |    1 +
 assets/css/0.styles.24ab92e4.css                   |    1 +
 ...13-overview-of-teaclave-sgx-sdk-cn.24012888.png |  Bin 0 -> 182456 bytes
 assets/img/2021-08-13-sgx-enable.4a8676dc.png      |  Bin 0 -> 88894 bytes
 ...10-15-qemu-world-execution-windows.48165c83.png |  Bin 0 -> 384569 bytes
 assets/img/anonify.501b72db.png                    |  Bin 0 -> 53145 bytes
 assets/img/cve-2021-0186-patch.828dec8f.png        |  Bin 0 -> 321756 bytes
 .../logo-projects-powered-by-teaclave.3fce54f9.png |  Bin 0 -> 634538 bytes
 assets/img/optee-with-rust-doc.85a6fc68.png        |  Bin 0 -> 263756 bytes
 .../p4cleanroom-powered-by-teaclave.c47e9fa1.png   |  Bin 0 -> 583874 bytes
 .../project-powered-by-teaclave-logo.0f661da0.png  |  Bin 0 -> 425775 bytes
 ...cloud-attestation-services-summary.38e5d26d.png |  Bin 0 -> 275716 bytes
 ...loud-attestation-services-teaclave.8a228054.png |  Bin 0 -> 525556 bytes
 .../public-cloud-attestation-services.894d309e.png |  Bin 0 -> 937212 bytes
 ...ee-trustzone-sdk-donation-timeline.6e7a0830.png |  Bin 0 -> 301709 bytes
 assets/img/search.83621669.svg                     |    1 +
 assets/img/secret-network.9bd4f0b7.png             |  Bin 0 -> 838071 bytes
 assets/img/secure-computing-intel-sgx.51d8330e.png |  Bin 0 -> 404870 bytes
 assets/img/teaclave-architecture.999fd110.png      |  Bin 0 -> 312293 bytes
 assets/img/teaclave-client-sdks.27efa590.png       |  Bin 0 -> 550923 bytes
 assets/img/teaclave-ecosystem-cn.4074b3b4.png      |  Bin 0 -> 443259 bytes
 assets/img/teaclave-ecosystem.6baf1f05.png         |  Bin 0 -> 350118 bytes
 .../teaclave-function-executors-wasm.ba81b2d7.png  |  Bin 0 -> 668627 bytes
 assets/img/teaclave-meetup-1-zoom.8cb3063f.png     |  Bin 0 -> 4872095 bytes
 assets/img/teaclave-meetup-11-zoom.856788be.png    |  Bin 0 -> 2735606 bytes
 assets/img/teaclave-meetup-12-zoom.3ef61955.png    |  Bin 0 -> 2228048 bytes
 assets/img/teaclave-meetup-2-zoom.c6281c98.png     |  Bin 0 -> 3689858 bytes
 assets/img/teaclave-meetup-3-zoom.46d629fd.jpg     |  Bin 0 -> 2320792 bytes
 assets/img/teaclave-meetup-4-zoom.eb96241f.png     |  Bin 0 -> 3158214 bytes
 .../img/teaclave-meetup-5-webassembly.4d874dce.png |  Bin 0 -> 164338 bytes
 assets/img/teaclave-meetup-5-zoom.2e2fadc1.png     |  Bin 0 -> 1973622 bytes
 assets/img/teaclave-meetup-6-zoom.118304e3.png     |  Bin 0 -> 2565326 bytes
 assets/img/teaclave-meetup-7-zoom.c2d1d9b8.png     |  Bin 0 -> 3384170 bytes
 assets/img/teaclave-meetup-8-zoom.9d6f6732.png     |  Bin 0 -> 3942273 bytes
 assets/img/teaclave-meetup-9-zoom.51c5ac20.png     |  Bin 0 -> 1887464 bytes
 .../img/teaclave-meetup-phala-network.4e57a1ba.png |  Bin 0 -> 181636 bytes
 .../img/teaclave-trustzone-sdk-apis.c71c04ed.png   |  Bin 0 -> 544866 bytes
 .../img/teaclave-trustzone-sdk-design.fab30880.png |  Bin 0 -> 212237 bytes
 .../teaclave-trustzone-sdk-examples.3d6062c0.png   |  Bin 0 -> 234852 bytes
 ...ve-trustzone-sdk-links-in-homepage.e6350f8e.png |  Bin 0 -> 171936 bytes
 .../img/teaclave-trustzone-sdk-macros.54db69cf.png |  Bin 0 -> 456661 bytes
 .../img/teaclave-trustzone-sdk-paper.387eb78f.png  |  Bin 0 -> 436334 bytes
 .../teaclave-trustzone-sdk-timeline.b003b342.png   |  Bin 0 -> 190596 bytes
 assets/img/teaclave-tvm-webassembly.60f6da35.png   |  Bin 0 -> 190011 bytes
 assets/js/1.18f59a25.js                            |    1 +
 assets/js/10.c8458b6a.js                           |    1 +
 assets/js/100.28dcadc8.js                          |    1 +
 assets/js/101.cdb499b1.js                          |    1 +
 assets/js/102.35301ad1.js                          |    1 +
 assets/js/103.e7c79824.js                          |    1 +
 assets/js/104.8a85a08e.js                          |    1 +
 assets/js/105.5c32bdd0.js                          |    1 +
 assets/js/106.10a91b20.js                          |    1 +
 assets/js/107.317ba847.js                          |    1 +
 assets/js/108.8cdefd6e.js                          |    1 +
 assets/js/109.f6783de8.js                          |    1 +
 assets/js/11.a17887cc.js                           |    1 +
 assets/js/110.beffdfee.js                          |    1 +
 assets/js/111.aedfc410.js                          |    1 +
 assets/js/112.41819979.js                          |    1 +
 assets/js/113.fa87bf8b.js                          |    1 +
 assets/js/114.e338beeb.js                          |    1 +
 assets/js/115.f085f41b.js                          |    1 +
 assets/js/116.b3c5458c.js                          |    1 +
 assets/js/117.bdb6bb17.js                          |    1 +
 assets/js/118.ff1c0ee0.js                          |    1 +
 assets/js/119.acca5944.js                          |    1 +
 assets/js/12.1d03a56a.js                           |    1 +
 assets/js/120.33ed14de.js                          |    1 +
 assets/js/121.14d2ce46.js                          |    1 +
 assets/js/122.53111a66.js                          |    1 +
 assets/js/123.7ee8a2e8.js                          |    1 +
 assets/js/124.ab2f5d5e.js                          |    1 +
 assets/js/125.ee51938c.js                          |    1 +
 assets/js/126.ee227eb5.js                          |    1 +
 assets/js/13.b8fc20cd.js                           |    1 +
 assets/js/14.14f56827.js                           |    1 +
 assets/js/15.0768f29e.js                           |    1 +
 assets/js/16.196140b7.js                           |    1 +
 assets/js/17.1555cdf6.js                           |    1 +
 assets/js/18.71821dc4.js                           |    1 +
 assets/js/19.ce91eec9.js                           |    1 +
 assets/js/2.f85cce33.js                            |    1 +
 assets/js/20.b923b0f1.js                           |    1 +
 assets/js/21.3946b3cf.js                           |    1 +
 assets/js/22.07212b77.js                           |    1 +
 assets/js/23.df895fbb.js                           |    1 +
 assets/js/24.a111f8c3.js                           |    1 +
 assets/js/25.f9c28a1e.js                           |    1 +
 assets/js/26.1dc556f1.js                           |    1 +
 assets/js/27.0eec15a6.js                           |    1 +
 assets/js/28.8d413c82.js                           |    1 +
 assets/js/29.f52c23b0.js                           |    1 +
 assets/js/30.46b43dcd.js                           |    1 +
 assets/js/31.0983304d.js                           |    1 +
 assets/js/32.3d291077.js                           |    1 +
 assets/js/33.03fa525f.js                           |    1 +
 assets/js/34.4b677f53.js                           |    1 +
 assets/js/35.74c2bfa1.js                           |    1 +
 assets/js/36.a3f36334.js                           |    1 +
 assets/js/37.17f8415f.js                           |    1 +
 assets/js/38.25a187b5.js                           |    1 +
 assets/js/39.a708e045.js                           |    1 +
 assets/js/40.6961c007.js                           |    1 +
 assets/js/41.33532c91.js                           |    1 +
 assets/js/42.533fe560.js                           |    1 +
 assets/js/43.4c46bd4c.js                           |    1 +
 assets/js/44.b2e877d9.js                           |    1 +
 assets/js/45.3e479bd4.js                           |    1 +
 assets/js/46.834ffaf7.js                           |    1 +
 assets/js/47.b537e2dd.js                           |    1 +
 assets/js/48.df270b6b.js                           |    1 +
 assets/js/49.c0e48444.js                           |    1 +
 assets/js/5.5299d2cb.js                            |    1 +
 assets/js/50.8c9cb276.js                           |    1 +
 assets/js/51.64aade12.js                           |    1 +
 assets/js/52.21f20e4d.js                           |    1 +
 assets/js/53.09dd9aeb.js                           |    1 +
 assets/js/54.cc8282be.js                           |    1 +
 assets/js/55.5a90b2f7.js                           |    1 +
 assets/js/56.9ef20daa.js                           |    1 +
 assets/js/57.c6441d7d.js                           |    1 +
 assets/js/58.5a08114d.js                           |    1 +
 assets/js/59.ebb4eedc.js                           |    1 +
 assets/js/6.cb964028.js                            |    1 +
 assets/js/60.19841fb7.js                           |    1 +
 assets/js/61.527761c9.js                           |    1 +
 assets/js/62.71ba9476.js                           |    1 +
 assets/js/63.7ec691bb.js                           |    1 +
 assets/js/64.3c753dd5.js                           |    1 +
 assets/js/65.014fedd9.js                           |    1 +
 assets/js/66.a0b783a5.js                           |    1 +
 assets/js/67.f8971729.js                           |    1 +
 assets/js/68.5d9b07e5.js                           |    1 +
 assets/js/69.f08e2110.js                           |    1 +
 assets/js/7.2587cd73.js                            |    1 +
 assets/js/70.9d1b26f4.js                           |    1 +
 assets/js/71.d38b6396.js                           |    1 +
 assets/js/72.fb8401bd.js                           |    1 +
 assets/js/73.c1c6b7fb.js                           |    1 +
 assets/js/74.73f9ef78.js                           |    1 +
 assets/js/75.70c55c6b.js                           |    1 +
 assets/js/76.a854c863.js                           |    1 +
 assets/js/77.cd08cdcb.js                           |    1 +
 assets/js/78.16eb499d.js                           |    1 +
 assets/js/79.bb9b7028.js                           |    1 +
 assets/js/8.bc5df4ad.js                            |    1 +
 assets/js/80.90e414c2.js                           |    1 +
 assets/js/81.2797516c.js                           |    1 +
 assets/js/82.f3ab9a0d.js                           |    1 +
 assets/js/83.8c800491.js                           |    1 +
 assets/js/84.d95c7312.js                           |    1 +
 assets/js/85.3753c5b0.js                           |    1 +
 assets/js/86.e0e622b7.js                           |    1 +
 assets/js/87.6a7b1131.js                           |    1 +
 assets/js/88.53ee9876.js                           |    1 +
 assets/js/89.4867d8ec.js                           |    1 +
 assets/js/9.251b26ba.js                            |    1 +
 assets/js/90.e86db88f.js                           |    1 +
 assets/js/91.f19a9a9e.js                           |    1 +
 assets/js/92.15788492.js                           |    1 +
 assets/js/93.46248ea2.js                           |    1 +
 assets/js/94.b3be9815.js                           |    1 +
 assets/js/95.95d0cd85.js                           |    1 +
 assets/js/96.fdbc52b7.js                           |    1 +
 assets/js/97.f1247d85.js                           |    1 +
 assets/js/98.188ca4a9.js                           |    1 +
 assets/js/99.f638b78d.js                           |    1 +
 assets/js/app.5f2d9d6e.js                          |   21 +
 assets/js/vuejs-paginate.8e583f31.js               |    1 +
 .../index.html                                     |  555 ++
 .../index.html                                     |  378 +
 .../index.html                                     |  170 +
 .../index.html                                     |  178 +
 .../index.html                                     |  185 +
 .../index.html                                     |  172 +
 .../index.html                                     |  244 +
 .../index.html                                     |  200 +
 blog/2020-12-04-teaclave-ecosystem-cn/index.html   |  161 +
 blog/2020-12-09-teaclave-ecosystem/index.html      |  232 +
 .../index.html                                     |  168 +
 .../index.html                                     |  184 +
 blog/2021-01-28-teaclave-meetup-1/index.html       |  171 +
 blog/2021-02-25-teaclave-meetup-2/index.html       |  174 +
 .../index.html                                     |  195 +
 .../index.html                                     |  195 +
 .../index.html                                     |  203 +
 .../index.html                                     |  198 +
 blog/2021-03-25-teaclave-meetup-3/index.html       |  194 +
 .../index.html                                     |  173 +
 blog/2021-04-29-teaclave-meetup-4/index.html       |  170 +
 .../index.html                                     |  185 +
 .../index.html                                     |  197 +
 blog/2021-06-24-teaclave-meetup-5/index.html       |  165 +
 blog/2021-07-29-teaclave-meetup-6/index.html       |  163 +
 .../index.html                                     |  166 +
 .../index.html                                     |  357 +
 blog/2021-08-26-teaclave-meetup-7/index.html       |  166 +
 .../index.html                                     |  215 +
 .../index.html                                     |  161 +
 blog/2021-10-14-teaclave-meetup-8/index.html       |  179 +
 .../index.html                                     |  415 +
 .../index.html                                     |  195 +
 blog/2021-11-30-teaclave-meetup-9/index.html       |  171 +
 .../index.html                                     |  161 +
 blog/2022-02-24-teaclave-meetup-10/index.html      |  170 +
 blog/2022-03-31-teaclave-meetup-11/index.html      |  161 +
 .../index.html                                     |  206 +
 .../index.html                                     |  183 +
 blog/2022-04-28-teaclave-meetup-12/index.html      |  161 +
 .../index.html                                     |  181 +
 blog/2022-06-29-teaclave-meetup-13/index.html      |  164 +
 .../index.html                                     |  189 +
 blog/2022-12-14-teaclave-meetup-14/index.html      |  165 +
 blog/2022-12-21-teaclave-meetup-15/index.html      |  163 +
 blog/index.html                                    |  155 +
 community/index.html                               |  175 +
 contributing/index.html                            |  168 +
 contributors/index.html                            |  169 +
 docs/access-control/index.html                     |  219 +
 docs/adding-executors/index.html                   |  187 +
 docs/azure-confidential-computing/index.html       |  224 +
 docs/build-system/index.html                       |  193 +
 docs/builtin-functions/index.html                  |  252 +
 docs/codebase/attestation/index.html               |  195 +
 docs/codebase/binder/index.html                    |  170 +
 docs/codebase/cli/index.html                       |  209 +
 docs/codebase/common/index.html                    |  168 +
 docs/codebase/config/index.html                    |  193 +
 docs/codebase/crypto/index.html                    |  169 +
 docs/codebase/dcap/index.html                      |  179 +
 docs/codebase/docker/index.html                    |  208 +
 docs/codebase/examples/index.html                  |  183 +
 docs/codebase/executor/index.html                  |  183 +
 docs/codebase/file-agent/index.html                |  174 +
 docs/codebase/function/index.html                  |  180 +
 docs/codebase/keys/index.html                      |  172 +
 docs/codebase/logger/index.html                    |  166 +
 docs/codebase/rpc/index.html                       |  184 +
 docs/codebase/runtime/index.html                   |  173 +
 docs/codebase/sdk/index.html                       |  169 +
 docs/codebase/services/index.html                  |  201 +
 docs/codebase/tests/index.html                     |  187 +
 docs/codebase/third-party/index.html               |  176 +
 docs/codebase/tools/index.html                     |  166 +
 docs/codebase/types/index.html                     |  168 +
 docs/codebase/worker/index.html                    |  182 +
 docs/development-tips/index.html                   |  204 +
 docs/executing-wasm/index.html                     |  200 +
 docs/functions-in-python/index.html                |  196 +
 docs/index.html                                    |  158 +
 docs/inference-with-tvm/index.html                 |  205 +
 docs/mutual-attestation/index.html                 |  196 +
 docs/my-first-function/index.html                  |  289 +
 docs/papers-talks/index.html                       |  186 +
 docs/release-guide/index.html                      |  277 +
 docs/rust-guildeline/index.html                    |  191 +
 docs/service-internals/index.html                  |  279 +
 docs/threat-model/index.html                       |  198 +
 download/index.html                                |  179 +
 feed.atom                                          |  210 +
 feed.json                                          |  158 +
 index.html                                         |  183 +
 powered-by/index.html                              |  188 +
 rss.xml                                            |  214 +
 .../debugging-a-local-rust-sgx-enclave/index.html  |  310 +
 sgx-sdk-docs/developing-with-vscode/index.html     |  216 +
 sgx-sdk-docs/environment-setup/index.html          |  192 +
 .../everything-about-cve-2020-5499/index.html      |  212 +
 sgx-sdk-docs/index.html                            |  158 +
 .../is_x86_feature_detected-in-sgx-sdk/index.html  |  223 +
 .../mitigation-of-intel-sa-00219/index.html        |  379 +
 .../performance-optimization-tips/index.html       |  174 +
 .../public-cloud-for-rust-sgx-dev/index.html       |  166 +
 sgx-sdk-docs/setup-gdb-ubuntu18/index.html         |  177 +
 sgx-sdk-docs/sgx_in_mesalock_linux/index.html      |  194 +
 sgx-sdk-docs/sgxtime/index.html                    |  233 +
 sgx-sdk-docs/the-world-of-forked-crates/index.html |  162 +
 sgx-sdk-docs/use-vscode-rls/index.html             |  186 +
 sitemap.xml                                        |    1 +
 teaclave/SECURITY/index.html                       |  160 +
 teaclave/common/rusty_leveldb_sgx/index.html       |  167 +
 teaclave/index.html                                |  181 +
 teaclave/sdk/swift/index.html                      |  165 +
 teaclave/tools/sgx_tool/index.html                 |  195 +
 .../building-rust-ca-as-android-elf.md/index.html  |  182 +
 .../debugging-optee-ta.md/index.html               |  192 +
 .../index.html                                     |  218 +
 trustzone-sdk-docs/index.html                      |  158 +
 .../overview-of-optee-rust-examples/index.html     |  165 +
 6481 files changed, 287845 insertions(+)

diff --git a/.asf.yaml b/.asf.yaml
new file mode 100644
index 000000000..d046a82c9
--- /dev/null
+++ b/.asf.yaml
@@ -0,0 +1,6 @@
+staging:
+  profile: ~
+  whoami:  asf-staging
+
+publish:
+  whoami:  asf-site
diff --git a/404.html b/404.html
new file mode 100644
index 000000000..fdc76f67b
--- /dev/null
+++ b/404.html
@@ -0,0 +1,22 @@
+<!DOCTYPE html>
+<html lang="en-US">
+  <head>
+    <meta charset="utf-8">
+    <meta name="viewport" content="width=device-width,initial-scale=1">
+    <title>Apache Teaclave (incubating)</title>
+    <meta name="generator" content="VuePress 1.9.7">
+    <link rel="alternate" type="application/rss+xml" href="https://teaclave.apache.org/rss.xml" title="Apache Teaclave (incubating) RSS Feed">
+    <link rel="alternate" type="application/atom+xml" href="https://teaclave.apache.org/feed.atom" title="Apache Teaclave (incubating) Atom Feed">
+    <link rel="alternate" type="application/json" href="https://teaclave.apache.org/feed.json" title="Apache Teaclave (incubating) JSON Feed">
+    <meta name="description" content="Apache Teaclave (incubating) is an open source universal secure computing platform, making computation on privacy-sensitive data safe and simple.">
+    
+    <link rel="preload" href="/assets/css/0.styles.24ab92e4.css" as="style"><link rel="preload" href="/assets/js/app.5f2d9d6e.js" as="script"><link rel="preload" href="/assets/js/34.4b677f53.js" as="script"><link rel="prefetch" href="/assets/js/1.18f59a25.js"><link rel="prefetch" href="/assets/js/10.c8458b6a.js"><link rel="prefetch" href="/assets/js/100.28dcadc8.js"><link rel="prefetch" href="/assets/js/101.cdb499b1.js"><link rel="prefetch" href="/assets/js/102.35301ad1.js"><link rel="pr [...]
+    <link rel="stylesheet" href="/assets/css/0.styles.24ab92e4.css">
+  </head>
+  <body>
+    <div id="app" data-server-rendered="true"><div class="theme-container"><div class="theme-default-content"><h1>404</h1> <blockquote>How did we get here?</blockquote> <a href="/" class="router-link-active">
+      Take me home.
+    </a></div></div><div class="global-ui"><!----></div></div>
+    <script src="/assets/js/app.5f2d9d6e.js" defer></script><script src="/assets/js/34.4b677f53.js" defer></script>
+  </body>
+</html>
diff --git a/api-docs/client-sdk-python/index.html b/api-docs/client-sdk-python/index.html
new file mode 100644
index 000000000..fb36272cb
--- /dev/null
+++ b/api-docs/client-sdk-python/index.html
@@ -0,0 +1 @@
+<meta http-equiv=refresh content=0;url=python/teaclave.html>
diff --git a/api-docs/client-sdk-python/python/teaclave.html b/api-docs/client-sdk-python/python/teaclave.html
new file mode 100644
index 000000000..5a22443a2
--- /dev/null
+++ b/api-docs/client-sdk-python/python/teaclave.html
@@ -0,0 +1,3140 @@
+<!doctype html>
+<html lang="en">
+<head>
+    <meta charset="utf-8">
+    <meta name="viewport" content="width=device-width, initial-scale=1">
+    <meta name="generator" content="pdoc 12.3.1"/>
+    <title>python.teaclave API documentation</title>
+
+    <style>/*! * Bootstrap Reboot v5.0.0 (https://getbootstrap.com/) * Copyright 2011-2021 The Bootstrap Authors * Copyright 2011-2021 Twitter, Inc. * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) * Forked from Normalize.css, licensed MIT (https://github.com/necolas/normalize.css/blob/master/LICENSE.md) */*,::after,::before{box-sizing:border-box}@media (prefers-reduced-motion:no-preference){:root{scroll-behavior:smooth}}body{margin:0;font-family:system-ui,-appl [...]
+    <style>/*! syntax-highlighting.css */pre{line-height:125%;}span.linenos{color:inherit; background-color:transparent; padding-left:5px; padding-right:20px;}.pdoc-code .hll{background-color:#ffffcc}.pdoc-code{background:#f8f8f8;}.pdoc-code .c{color:#3D7B7B; font-style:italic}.pdoc-code .err{border:1px solid #FF0000}.pdoc-code .k{color:#008000; font-weight:bold}.pdoc-code .o{color:#666666}.pdoc-code .ch{color:#3D7B7B; font-style:italic}.pdoc-code .cm{color:#3D7B7B; font-style:italic}.pd [...]
+    <style>/*! theme.css */:root{--pdoc-background:#fff;}.pdoc{--text:#212529;--muted:#6c757d;--link:#3660a5;--link-hover:#1659c5;--code:#f8f8f8;--active:#fff598;--accent:#eee;--accent2:#c1c1c1;--nav-hover:rgba(255, 255, 255, 0.5);--name:#0066BB;--def:#008800;--annotation:#007020;}</style>
+    <style>/*! layout.css */html, body{width:100%;height:100%;}html, main{scroll-behavior:smooth;}body{background-color:var(--pdoc-background);}@media (max-width:769px){#navtoggle{cursor:pointer;position:absolute;width:50px;height:40px;top:1rem;right:1rem;border-color:var(--text);color:var(--text);display:flex;opacity:0.8;}#navtoggle:hover{opacity:1;}#togglestate + div{display:none;}#togglestate:checked + div{display:inherit;}main, header{padding:2rem 3vw;}header + main{margin-top:-3rem; [...]
+    <style>/*! content.css */.pdoc{color:var(--text);box-sizing:border-box;line-height:1.5;background:none;}.pdoc .pdoc-button{display:inline-block;border:solid black 1px;border-radius:2px;font-size:.75rem;padding:calc(0.5em - 1px) 1em;transition:100ms all;}.pdoc .pdoc-alert{padding:1rem 1rem 1rem calc(1.5rem + 24px);border:1px solid transparent;border-radius:.25rem;background-repeat:no-repeat;background-position:1rem center;margin-bottom:1rem;}.pdoc .pdoc-alert > *:last-child{margin-bot [...]
+    <style>/*! custom.css */</style></head>
+<body>
+    <nav class="pdoc">
+        <label id="navtoggle" for="togglestate" class="pdoc-button"><svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'><path stroke-linecap='round' stroke="currentColor" stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/></svg></label>
+        <input id="togglestate" type="checkbox" aria-hidden="true" tabindex="-1">
+        <div>
+
+
+
+
+        <h2>API Documentation</h2>
+            <ul class="memberlist">
+            <li>
+                    <a class="class" href="#FrontendService">FrontendService</a>
+                            <ul class="memberlist">
+                        <li>
+                                <a class="function" href="#FrontendService.__init__">FrontendService</a>
+                        </li>
+                        <li>
+                                <a class="function" href="#FrontendService.register_function">register_function</a>
+                        </li>
+                        <li>
+                                <a class="function" href="#FrontendService.update_function">update_function</a>
+                        </li>
+                        <li>
+                                <a class="function" href="#FrontendService.list_functions">list_functions</a>
+                        </li>
+                        <li>
+                                <a class="function" href="#FrontendService.get_function">get_function</a>
+                        </li>
+                        <li>
+                                <a class="function" href="#FrontendService.get_function_usage_stats">get_function_usage_stats</a>
+                        </li>
+                        <li>
+                                <a class="function" href="#FrontendService.delete_function">delete_function</a>
+                        </li>
+                        <li>
+                                <a class="function" href="#FrontendService.disable_function">disable_function</a>
+                        </li>
+                        <li>
+                                <a class="function" href="#FrontendService.register_input_file">register_input_file</a>
+                        </li>
+                        <li>
+                                <a class="function" href="#FrontendService.register_output_file">register_output_file</a>
+                        </li>
+                        <li>
+                                <a class="function" href="#FrontendService.create_task">create_task</a>
+                        </li>
+                        <li>
+                                <a class="function" href="#FrontendService.assign_data_to_task">assign_data_to_task</a>
+                        </li>
+                        <li>
+                                <a class="function" href="#FrontendService.approve_task">approve_task</a>
+                        </li>
+                        <li>
+                                <a class="function" href="#FrontendService.invoke_task">invoke_task</a>
+                        </li>
+                        <li>
+                                <a class="function" href="#FrontendService.cancel_task">cancel_task</a>
+                        </li>
+                        <li>
+                                <a class="function" href="#FrontendService.get_task">get_task</a>
+                        </li>
+                        <li>
+                                <a class="function" href="#FrontendService.get_task_result">get_task_result</a>
+                        </li>
+                        <li>
+                                <a class="function" href="#FrontendService.get_output_cmac_by_tag">get_output_cmac_by_tag</a>
+                        </li>
+                </ul>
+
+            </li>
+            <li>
+                    <a class="class" href="#AuthenticationService">AuthenticationService</a>
+                            <ul class="memberlist">
+                        <li>
+                                <a class="function" href="#AuthenticationService.__init__">AuthenticationService</a>
+                        </li>
+                        <li>
+                                <a class="function" href="#AuthenticationService.user_register">user_register</a>
+                        </li>
+                        <li>
+                                <a class="function" href="#AuthenticationService.user_update">user_update</a>
+                        </li>
+                        <li>
+                                <a class="function" href="#AuthenticationService.user_login">user_login</a>
+                        </li>
+                        <li>
+                                <a class="function" href="#AuthenticationService.user_change_password">user_change_password</a>
+                        </li>
+                        <li>
+                                <a class="function" href="#AuthenticationService.reset_user_password">reset_user_password</a>
+                        </li>
+                        <li>
+                                <a class="function" href="#AuthenticationService.delete_user">delete_user</a>
+                        </li>
+                        <li>
+                                <a class="function" href="#AuthenticationService.list_users">list_users</a>
+                        </li>
+                </ul>
+
+            </li>
+            <li>
+                    <a class="class" href="#FunctionArgument">FunctionArgument</a>
+                            <ul class="memberlist">
+                        <li>
+                                <a class="function" href="#FunctionArgument.__init__">FunctionArgument</a>
+                        </li>
+                </ul>
+
+            </li>
+            <li>
+                    <a class="class" href="#FunctionInput">FunctionInput</a>
+                            <ul class="memberlist">
+                        <li>
+                                <a class="function" href="#FunctionInput.__init__">FunctionInput</a>
+                        </li>
+                </ul>
+
+            </li>
+            <li>
+                    <a class="class" href="#FunctionOutput">FunctionOutput</a>
+                            <ul class="memberlist">
+                        <li>
+                                <a class="function" href="#FunctionOutput.__init__">FunctionOutput</a>
+                        </li>
+                </ul>
+
+            </li>
+            <li>
+                    <a class="class" href="#OwnerList">OwnerList</a>
+                            <ul class="memberlist">
+                        <li>
+                                <a class="function" href="#OwnerList.__init__">OwnerList</a>
+                        </li>
+                </ul>
+
+            </li>
+            <li>
+                    <a class="class" href="#DataMap">DataMap</a>
+                            <ul class="memberlist">
+                        <li>
+                                <a class="function" href="#DataMap.__init__">DataMap</a>
+                        </li>
+                </ul>
+
+            </li>
+    </ul>
+
+
+
+        <a class="attribution" title="pdoc: Python API documentation generator" href="https://pdoc.dev" target="_blank">
+            built with <span class="visually-hidden">pdoc</span><img
+                alt="pdoc logo"
+                src="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20role%3D%22img%22%20aria-label%3D%22pdoc%20logo%22%20width%3D%22300%22%20height%3D%22150%22%20viewBox%3D%22-1%200%2060%2030%22%3E%3Ctitle%3Epdoc%3C/title%3E%3Cpath%20d%3D%22M29.621%2021.293c-.011-.273-.214-.475-.511-.481a.5.5%200%200%200-.489.503l-.044%201.393c-.097.551-.695%201.215-1.566%201.704-.577.428-1.306.486-2.193.182-1.426-.617-2.467-1.654-3.304-2.487l-.173-.172a3.43%203.43%200%200%200-.3 [...]
+        </a>
+</div>
+    </nav>
+    <main class="pdoc">
+            <section class="module-info">
+                    <h1 class="modulename">
+python<wbr>.teaclave    </h1>
+
+                        <div class="docstring"><p>Python package <code>teaclave</code> is the client SDK for Python developers, providing
+some essential data structures, service, and client classes to establish
+trusted TLS channel and communicate with Teaclave services (e.g., the
+authentication service and frontend service) through RPC protocols.</p>
+</div>
+
+                        <input id="mod-teaclave-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
+
+                        <label class="view-source-button" for="mod-teaclave-view-source"><span>View Source</span></label>
+
+                        <div class="pdoc-code codehilite"><pre><span></span><span id="L-1"><a href="#L-1"><span class="linenos">   1</span></a><span class="ch">#!/usr/bin/env python3</span>
+</span><span id="L-2"><a href="#L-2"><span class="linenos">   2</span></a>
+</span><span id="L-3"><a href="#L-3"><span class="linenos">   3</span></a><span class="c1"># Licensed to the Apache Software Foundation (ASF) under one</span>
+</span><span id="L-4"><a href="#L-4"><span class="linenos">   4</span></a><span class="c1"># or more contributor license agreements.  See the NOTICE file</span>
+</span><span id="L-5"><a href="#L-5"><span class="linenos">   5</span></a><span class="c1"># distributed with this work for additional information</span>
+</span><span id="L-6"><a href="#L-6"><span class="linenos">   6</span></a><span class="c1"># regarding copyright ownership.  The ASF licenses this file</span>
+</span><span id="L-7"><a href="#L-7"><span class="linenos">   7</span></a><span class="c1"># to you under the Apache License, Version 2.0 (the</span>
+</span><span id="L-8"><a href="#L-8"><span class="linenos">   8</span></a><span class="c1"># &quot;License&quot;); you may not use this file except in compliance</span>
+</span><span id="L-9"><a href="#L-9"><span class="linenos">   9</span></a><span class="c1"># with the License.  You may obtain a copy of the License at</span>
+</span><span id="L-10"><a href="#L-10"><span class="linenos">  10</span></a><span class="c1">#</span>
+</span><span id="L-11"><a href="#L-11"><span class="linenos">  11</span></a><span class="c1">#   http://www.apache.org/licenses/LICENSE-2.0</span>
+</span><span id="L-12"><a href="#L-12"><span class="linenos">  12</span></a><span class="c1">#</span>
+</span><span id="L-13"><a href="#L-13"><span class="linenos">  13</span></a><span class="c1"># Unless required by applicable law or agreed to in writing,</span>
+</span><span id="L-14"><a href="#L-14"><span class="linenos">  14</span></a><span class="c1"># software distributed under the License is distributed on an</span>
+</span><span id="L-15"><a href="#L-15"><span class="linenos">  15</span></a><span class="c1"># &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY</span>
+</span><span id="L-16"><a href="#L-16"><span class="linenos">  16</span></a><span class="c1"># KIND, either express or implied.  See the License for the</span>
+</span><span id="L-17"><a href="#L-17"><span class="linenos">  17</span></a><span class="c1"># specific language governing permissions and limitations</span>
+</span><span id="L-18"><a href="#L-18"><span class="linenos">  18</span></a><span class="c1"># under the License.</span>
+</span><span id="L-19"><a href="#L-19"><span class="linenos">  19</span></a><span class="sd">&quot;&quot;&quot;</span>
+</span><span id="L-20"><a href="#L-20"><span class="linenos">  20</span></a><span class="sd">Python package `teaclave` is the client SDK for Python developers, providing</span>
+</span><span id="L-21"><a href="#L-21"><span class="linenos">  21</span></a><span class="sd">some essential data structures, service, and client classes to establish</span>
+</span><span id="L-22"><a href="#L-22"><span class="linenos">  22</span></a><span class="sd">trusted TLS channel and communicate with Teaclave services (e.g., the</span>
+</span><span id="L-23"><a href="#L-23"><span class="linenos">  23</span></a><span class="sd">authentication service and frontend service) through RPC protocols.</span>
+</span><span id="L-24"><a href="#L-24"><span class="linenos">  24</span></a><span class="sd">&quot;&quot;&quot;</span>
+</span><span id="L-25"><a href="#L-25"><span class="linenos">  25</span></a>
+</span><span id="L-26"><a href="#L-26"><span class="linenos">  26</span></a><span class="kn">import</span> <span class="nn">struct</span>
+</span><span id="L-27"><a href="#L-27"><span class="linenos">  27</span></a><span class="kn">import</span> <span class="nn">json</span>
+</span><span id="L-28"><a href="#L-28"><span class="linenos">  28</span></a><span class="kn">import</span> <span class="nn">base64</span>
+</span><span id="L-29"><a href="#L-29"><span class="linenos">  29</span></a><span class="kn">import</span> <span class="nn">toml</span>
+</span><span id="L-30"><a href="#L-30"><span class="linenos">  30</span></a><span class="kn">import</span> <span class="nn">os</span>
+</span><span id="L-31"><a href="#L-31"><span class="linenos">  31</span></a><span class="kn">import</span> <span class="nn">time</span>
+</span><span id="L-32"><a href="#L-32"><span class="linenos">  32</span></a><span class="kn">import</span> <span class="nn">ssl</span>
+</span><span id="L-33"><a href="#L-33"><span class="linenos">  33</span></a><span class="kn">import</span> <span class="nn">socket</span>
+</span><span id="L-34"><a href="#L-34"><span class="linenos">  34</span></a>
+</span><span id="L-35"><a href="#L-35"><span class="linenos">  35</span></a><span class="kn">from</span> <span class="nn">typing</span> <span class="kn">import</span> <span class="n">Tuple</span><span class="p">,</span> <span class="n">Dict</span><span class="p">,</span> <span class="n">List</span><span class="p">,</span> <span class="n">Any</span>
+</span><span id="L-36"><a href="#L-36"><span class="linenos">  36</span></a><span class="kn">from</span> <span class="nn">enum</span> <span class="kn">import</span> <span class="n">IntEnum</span>
+</span><span id="L-37"><a href="#L-37"><span class="linenos">  37</span></a>
+</span><span id="L-38"><a href="#L-38"><span class="linenos">  38</span></a><span class="kn">import</span> <span class="nn">cryptography</span>
+</span><span id="L-39"><a href="#L-39"><span class="linenos">  39</span></a><span class="kn">from</span> <span class="nn">cryptography</span> <span class="kn">import</span> <span class="n">x509</span>
+</span><span id="L-40"><a href="#L-40"><span class="linenos">  40</span></a><span class="kn">from</span> <span class="nn">cryptography.hazmat.backends</span> <span class="kn">import</span> <span class="n">default_backend</span>
+</span><span id="L-41"><a href="#L-41"><span class="linenos">  41</span></a>
+</span><span id="L-42"><a href="#L-42"><span class="linenos">  42</span></a><span class="kn">from</span> <span class="nn">OpenSSL.crypto</span> <span class="kn">import</span> <span class="n">load_certificate</span><span class="p">,</span> <span class="n">FILETYPE_PEM</span><span class="p">,</span> <span class="n">FILETYPE_ASN1</span>
+</span><span id="L-43"><a href="#L-43"><span class="linenos">  43</span></a><span class="kn">from</span> <span class="nn">OpenSSL.crypto</span> <span class="kn">import</span> <span class="n">X509Store</span><span class="p">,</span> <span class="n">X509StoreContext</span>
+</span><span id="L-44"><a href="#L-44"><span class="linenos">  44</span></a><span class="kn">from</span> <span class="nn">OpenSSL</span> <span class="kn">import</span> <span class="n">crypto</span>
+</span><span id="L-45"><a href="#L-45"><span class="linenos">  45</span></a>
+</span><span id="L-46"><a href="#L-46"><span class="linenos">  46</span></a><span class="n">__all__</span> <span class="o">=</span> <span class="p">[</span>
+</span><span id="L-47"><a href="#L-47"><span class="linenos">  47</span></a>    <span class="s1">&#39;FrontendService&#39;</span><span class="p">,</span> <span class="s1">&#39;AuthenticationService&#39;</span><span class="p">,</span> <span class="s1">&#39;FunctionArgument&#39;</span><span class="p">,</span>
+</span><span id="L-48"><a href="#L-48"><span class="linenos">  48</span></a>    <span class="s1">&#39;FunctionInput&#39;</span><span class="p">,</span> <span class="s1">&#39;FunctionOutput&#39;</span><span class="p">,</span> <span class="s1">&#39;OwnerList&#39;</span><span class="p">,</span> <span class="s1">&#39;DataMap&#39;</span>
+</span><span id="L-49"><a href="#L-49"><span class="linenos">  49</span></a><span class="p">]</span>
+</span><span id="L-50"><a href="#L-50"><span class="linenos">  50</span></a>
+</span><span id="L-51"><a href="#L-51"><span class="linenos">  51</span></a><span class="n">Metadata</span> <span class="o">=</span> <span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">str</span><span class="p">]</span>
+</span><span id="L-52"><a href="#L-52"><span class="linenos">  52</span></a>
+</span><span id="L-53"><a href="#L-53"><span class="linenos">  53</span></a>
+</span><span id="L-54"><a href="#L-54"><span class="linenos">  54</span></a><span class="k">class</span> <span class="nc">TaskStatus</span><span class="p">(</span><span class="n">IntEnum</span><span class="p">):</span>
+</span><span id="L-55"><a href="#L-55"><span class="linenos">  55</span></a>    <span class="n">Created</span> <span class="o">=</span> <span class="mi">0</span>
+</span><span id="L-56"><a href="#L-56"><span class="linenos">  56</span></a>    <span class="n">DataAssigned</span> <span class="o">=</span> <span class="mi">1</span>
+</span><span id="L-57"><a href="#L-57"><span class="linenos">  57</span></a>    <span class="n">Approved</span> <span class="o">=</span> <span class="mi">2</span>
+</span><span id="L-58"><a href="#L-58"><span class="linenos">  58</span></a>    <span class="n">Staged</span> <span class="o">=</span> <span class="mi">3</span>
+</span><span id="L-59"><a href="#L-59"><span class="linenos">  59</span></a>    <span class="n">Running</span> <span class="o">=</span> <span class="mi">4</span>
+</span><span id="L-60"><a href="#L-60"><span class="linenos">  60</span></a>    <span class="n">Finished</span> <span class="o">=</span> <span class="mi">10</span>
+</span><span id="L-61"><a href="#L-61"><span class="linenos">  61</span></a>    <span class="n">Canceled</span> <span class="o">=</span> <span class="mi">20</span>
+</span><span id="L-62"><a href="#L-62"><span class="linenos">  62</span></a>    <span class="n">Failed</span> <span class="o">=</span> <span class="mi">99</span>
+</span><span id="L-63"><a href="#L-63"><span class="linenos">  63</span></a>
+</span><span id="L-64"><a href="#L-64"><span class="linenos">  64</span></a>
+</span><span id="L-65"><a href="#L-65"><span class="linenos">  65</span></a><span class="k">class</span> <span class="nc">Request</span><span class="p">:</span>
+</span><span id="L-66"><a href="#L-66"><span class="linenos">  66</span></a>    <span class="k">pass</span>
+</span><span id="L-67"><a href="#L-67"><span class="linenos">  67</span></a>
+</span><span id="L-68"><a href="#L-68"><span class="linenos">  68</span></a>
+</span><span id="L-69"><a href="#L-69"><span class="linenos">  69</span></a><span class="k">class</span> <span class="nc">TeaclaveException</span><span class="p">(</span><span class="ne">Exception</span><span class="p">):</span>
+</span><span id="L-70"><a href="#L-70"><span class="linenos">  70</span></a>    <span class="k">pass</span>
+</span><span id="L-71"><a href="#L-71"><span class="linenos">  71</span></a>
+</span><span id="L-72"><a href="#L-72"><span class="linenos">  72</span></a>
+</span><span id="L-73"><a href="#L-73"><span class="linenos">  73</span></a><span class="k">class</span> <span class="nc">TeaclaveService</span><span class="p">:</span>
+</span><span id="L-74"><a href="#L-74"><span class="linenos">  74</span></a>    <span class="n">channel</span> <span class="o">=</span> <span class="kc">None</span>
+</span><span id="L-75"><a href="#L-75"><span class="linenos">  75</span></a>    <span class="n">metadata</span> <span class="o">=</span> <span class="kc">None</span>
+</span><span id="L-76"><a href="#L-76"><span class="linenos">  76</span></a>
+</span><span id="L-77"><a href="#L-77"><span class="linenos">  77</span></a>    <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span>
+</span><span id="L-78"><a href="#L-78"><span class="linenos">  78</span></a>                 <span class="n">name</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span>
+</span><span id="L-79"><a href="#L-79"><span class="linenos">  79</span></a>                 <span class="n">address</span><span class="p">:</span> <span class="n">Tuple</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">int</span><span class="p">],</span>
+</span><span id="L-80"><a href="#L-80"><span class="linenos">  80</span></a>                 <span class="n">as_root_ca_cert_path</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span>
+</span><span id="L-81"><a href="#L-81"><span class="linenos">  81</span></a>                 <span class="n">enclave_info_path</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span>
+</span><span id="L-82"><a href="#L-82"><span class="linenos">  82</span></a>                 <span class="n">dump_report</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span>
+</span><span id="L-83"><a href="#L-83"><span class="linenos">  83</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">_context</span> <span class="o">=</span> <span class="n">ssl</span><span class="o">.</span><span class="n">_create_unverified_context</span><span class="p">()</span>
+</span><span id="L-84"><a href="#L-84"><span class="linenos">  84</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">_name</span> <span class="o">=</span> <span class="n">name</span>
+</span><span id="L-85"><a href="#L-85"><span class="linenos">  85</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">_address</span> <span class="o">=</span> <span class="n">address</span>
+</span><span id="L-86"><a href="#L-86"><span class="linenos">  86</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">_as_root_ca_cert_path</span> <span class="o">=</span> <span class="n">as_root_ca_cert_path</span>
+</span><span id="L-87"><a href="#L-87"><span class="linenos">  87</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">_enclave_info_path</span> <span class="o">=</span> <span class="n">enclave_info_path</span>
+</span><span id="L-88"><a href="#L-88"><span class="linenos">  88</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">_closed</span> <span class="o">=</span> <span class="kc">False</span>
+</span><span id="L-89"><a href="#L-89"><span class="linenos">  89</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">_dump_report</span> <span class="o">=</span> <span class="n">dump_report</span>
+</span><span id="L-90"><a href="#L-90"><span class="linenos">  90</span></a>
+</span><span id="L-91"><a href="#L-91"><span class="linenos">  91</span></a>    <span class="k">def</span> <span class="fm">__enter__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+</span><span id="L-92"><a href="#L-92"><span class="linenos">  92</span></a>        <span class="k">return</span> <span class="bp">self</span>
+</span><span id="L-93"><a href="#L-93"><span class="linenos">  93</span></a>
+</span><span id="L-94"><a href="#L-94"><span class="linenos">  94</span></a>    <span class="k">def</span> <span class="fm">__exit__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">exc</span><span class="p">):</span>
+</span><span id="L-95"><a href="#L-95"><span class="linenos">  95</span></a>        <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_closed</span><span class="p">:</span>
+</span><span id="L-96"><a href="#L-96"><span class="linenos">  96</span></a>            <span class="bp">self</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
+</span><span id="L-97"><a href="#L-97"><span class="linenos">  97</span></a>
+</span><span id="L-98"><a href="#L-98"><span class="linenos">  98</span></a>    <span class="k">def</span> <span class="nf">close</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+</span><span id="L-99"><a href="#L-99"><span class="linenos">  99</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">_closed</span> <span class="o">=</span> <span class="kc">True</span>
+</span><span id="L-100"><a href="#L-100"><span class="linenos"> 100</span></a>        <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">channel</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">channel</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
+</span><span id="L-101"><a href="#L-101"><span class="linenos"> 101</span></a>
+</span><span id="L-102"><a href="#L-102"><span class="linenos"> 102</span></a>    <span class="k">def</span> <span class="nf">check_channel</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+</span><span id="L-103"><a href="#L-103"><span class="linenos"> 103</span></a>        <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">channel</span><span class="p">:</span> <span class="k">raise</span> <span class="n">TeaclaveException</span><span class="p">(</span><span class="s2">&quot;Channel is None&quot;</span><span class="p">)</span>
+</span><span id="L-104"><a href="#L-104"><span class="linenos"> 104</span></a>
+</span><span id="L-105"><a href="#L-105"><span class="linenos"> 105</span></a>    <span class="k">def</span> <span class="nf">check_metadata</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+</span><span id="L-106"><a href="#L-106"><span class="linenos"> 106</span></a>        <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">metadata</span><span class="p">:</span> <span class="k">raise</span> <span class="n">TeaclaveException</span><span class="p">(</span><span class="s2">&quot;Metadata is None&quot;</span><span class="p">)</span>
+</span><span id="L-107"><a href="#L-107"><span class="linenos"> 107</span></a>
+</span><span id="L-108"><a href="#L-108"><span class="linenos"> 108</span></a>    <span class="k">def</span> <span class="nf">connect</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+</span><span id="L-109"><a href="#L-109"><span class="linenos"> 109</span></a><span class="w">        </span><span class="sd">&quot;&quot;&quot;Establish trusted connection and verify remote attestation report.</span>
+</span><span id="L-110"><a href="#L-110"><span class="linenos"> 110</span></a><span class="sd">        &quot;&quot;&quot;</span>
+</span><span id="L-111"><a href="#L-111"><span class="linenos"> 111</span></a>        <span class="n">sock</span> <span class="o">=</span> <span class="n">socket</span><span class="o">.</span><span class="n">create_connection</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_address</span><span class="p">)</span>
+</span><span id="L-112"><a href="#L-112"><span class="linenos"> 112</span></a>        <span class="n">channel</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_context</span><span class="o">.</span><span class="n">wrap_socket</span><span class="p">(</span><span class="n">sock</span><span class="p">,</span>
+</span><span id="L-113"><a href="#L-113"><span class="linenos"> 113</span></a>                                            <span class="n">server_hostname</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_address</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span>
+</span><span id="L-114"><a href="#L-114"><span class="linenos"> 114</span></a>        <span class="n">cert</span> <span class="o">=</span> <span class="n">channel</span><span class="o">.</span><span class="n">getpeercert</span><span class="p">(</span><span class="n">binary_form</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+</span><span id="L-115"><a href="#L-115"><span class="linenos"> 115</span></a>        <span class="k">if</span> <span class="ow">not</span> <span class="n">cert</span><span class="p">:</span> <span class="k">raise</span> <span class="n">TeaclaveException</span><span class="p">(</span><span class="s2">&quot;Peer cert is None&quot;</span><span class="p">)</span>
+</span><span id="L-116"><a href="#L-116"><span class="linenos"> 116</span></a>        <span class="k">try</span><span class="p">:</span>
+</span><span id="L-117"><a href="#L-117"><span class="linenos"> 117</span></a>            <span class="bp">self</span><span class="o">.</span><span class="n">_verify_report</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_as_root_ca_cert_path</span><span class="p">,</span>
+</span><span id="L-118"><a href="#L-118"><span class="linenos"> 118</span></a>                                <span class="bp">self</span><span class="o">.</span><span class="n">_enclave_info_path</span><span class="p">,</span> <span class="n">cert</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_name</span><span class="p">)</span>
+</span><span id="L-119"><a href="#L-119"><span class="linenos"> 119</span></a>        <span class="k">except</span> <span class="ne">Exception</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span>
+</span><span id="L-120"><a href="#L-120"><span class="linenos"> 120</span></a>            <span class="k">raise</span> <span class="n">TeaclaveException</span><span class="p">(</span>
+</span><span id="L-121"><a href="#L-121"><span class="linenos"> 121</span></a>                <span class="sa">f</span><span class="s2">&quot;Failed to verify attestation report: </span><span class="si">{</span><span class="n">e</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span>
+</span><span id="L-122"><a href="#L-122"><span class="linenos"> 122</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">channel</span> <span class="o">=</span> <span class="n">channel</span>
+</span><span id="L-123"><a href="#L-123"><span class="linenos"> 123</span></a>
+</span><span id="L-124"><a href="#L-124"><span class="linenos"> 124</span></a>        <span class="k">return</span> <span class="bp">self</span>
+</span><span id="L-125"><a href="#L-125"><span class="linenos"> 125</span></a>
+</span><span id="L-126"><a href="#L-126"><span class="linenos"> 126</span></a>    <span class="k">def</span> <span class="nf">_verify_report</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">as_root_ca_cert_path</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">enclave_info_path</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span>
+</span><span id="L-127"><a href="#L-127"><span class="linenos"> 127</span></a>                       <span class="n">cert</span><span class="p">:</span> <span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Any</span><span class="p">],</span> <span class="n">endpoint_name</span><span class="p">:</span> <span class="nb">str</span><span class="p">):</span>
+</span><span id="L-128"><a href="#L-128"><span class="linenos"> 128</span></a>
+</span><span id="L-129"><a href="#L-129"><span class="linenos"> 129</span></a>        <span class="k">def</span> <span class="nf">load_certificates</span><span class="p">(</span><span class="n">pem_bytes</span><span class="p">):</span>
+</span><span id="L-130"><a href="#L-130"><span class="linenos"> 130</span></a>            <span class="n">start_line</span> <span class="o">=</span> <span class="sa">b</span><span class="s1">&#39;-----BEGIN CERTIFICATE-----&#39;</span>
+</span><span id="L-131"><a href="#L-131"><span class="linenos"> 131</span></a>            <span class="n">result</span> <span class="o">=</span> <span class="p">[]</span>
+</span><span id="L-132"><a href="#L-132"><span class="linenos"> 132</span></a>            <span class="n">cert_slots</span> <span class="o">=</span> <span class="n">pem_bytes</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="n">start_line</span><span class="p">)</span>
+</span><span id="L-133"><a href="#L-133"><span class="linenos"> 133</span></a>            <span class="k">for</span> <span class="n">single_pem_cert</span> <span class="ow">in</span> <span class="n">cert_slots</span><span class="p">[</span><span class="mi">1</span><span class="p">:]:</span>
+</span><span id="L-134"><a href="#L-134"><span class="linenos"> 134</span></a>                <span class="n">cert</span> <span class="o">=</span> <span class="n">load_certificate</span><span class="p">(</span><span class="n">FILETYPE_ASN1</span><span class="p">,</span>
+</span><span id="L-135"><a href="#L-135"><span class="linenos"> 135</span></a>                                        <span class="n">start_line</span> <span class="o">+</span> <span class="n">single_pem_cert</span><span class="p">)</span>
+</span><span id="L-136"><a href="#L-136"><span class="linenos"> 136</span></a>                <span class="n">result</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">cert</span><span class="p">)</span>
+</span><span id="L-137"><a href="#L-137"><span class="linenos"> 137</span></a>            <span class="k">return</span> <span class="n">result</span>
+</span><span id="L-138"><a href="#L-138"><span class="linenos"> 138</span></a>
+</span><span id="L-139"><a href="#L-139"><span class="linenos"> 139</span></a>        <span class="k">if</span> <span class="n">os</span><span class="o">.</span><span class="n">environ</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s1">&#39;SGX_MODE&#39;</span><span class="p">)</span> <span class="o">==</span> <span class="s1">&#39;SW&#39;</span><span class="p">:</span>
+</span><span id="L-140"><a href="#L-140"><span class="linenos"> 140</span></a>            <span class="k">return</span>
+</span><span id="L-141"><a href="#L-141"><span class="linenos"> 141</span></a>
+</span><span id="L-142"><a href="#L-142"><span class="linenos"> 142</span></a>        <span class="n">cert</span> <span class="o">=</span> <span class="n">x509</span><span class="o">.</span><span class="n">load_der_x509_certificate</span><span class="p">(</span><span class="n">cert</span><span class="p">,</span> <span class="n">default_backend</span><span class="p">())</span>
+</span><span id="L-143"><a href="#L-143"><span class="linenos"> 143</span></a>
+</span><span id="L-144"><a href="#L-144"><span class="linenos"> 144</span></a>        <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_dump_report</span><span class="p">:</span>
+</span><span id="L-145"><a href="#L-145"><span class="linenos"> 145</span></a>            <span class="k">try</span><span class="p">:</span>
+</span><span id="L-146"><a href="#L-146"><span class="linenos"> 146</span></a>                <span class="k">with</span> <span class="nb">open</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_name</span> <span class="o">+</span> <span class="s2">&quot;_attestation_report.pem&quot;</span><span class="p">,</span> <span class="s2">&quot;wb&quot;</span><span class="p">)</span> <span class="k">as</span> <span class="n">f</span><span class="p" [...]
+</span><span id="L-147"><a href="#L-147"><span class="linenos"> 147</span></a>                    <span class="n">f</span><span class="o">.</span><span class="n">write</span><span class="p">(</span>
+</span><span id="L-148"><a href="#L-148"><span class="linenos"> 148</span></a>                        <span class="n">cert</span><span class="o">.</span><span class="n">public_bytes</span><span class="p">(</span><span class="n">cryptography</span><span class="o">.</span><span class="n">hazmat</span><span class="o">.</span><span class="n">primitives</span><span class="o">.</span>
+</span><span id="L-149"><a href="#L-149"><span class="linenos"> 149</span></a>                                          <span class="n">serialization</span><span class="o">.</span><span class="n">Encoding</span><span class="o">.</span><span class="n">PEM</span><span class="p">))</span>
+</span><span id="L-150"><a href="#L-150"><span class="linenos"> 150</span></a>            <span class="k">except</span><span class="p">:</span>
+</span><span id="L-151"><a href="#L-151"><span class="linenos"> 151</span></a>                <span class="k">raise</span> <span class="n">TeaclaveException</span><span class="p">(</span><span class="s2">&quot;Failed to dump attestation report&quot;</span><span class="p">)</span>
+</span><span id="L-152"><a href="#L-152"><span class="linenos"> 152</span></a>
+</span><span id="L-153"><a href="#L-153"><span class="linenos"> 153</span></a>        <span class="k">try</span><span class="p">:</span>
+</span><span id="L-154"><a href="#L-154"><span class="linenos"> 154</span></a>            <span class="n">ext</span> <span class="o">=</span> <span class="n">json</span><span class="o">.</span><span class="n">loads</span><span class="p">(</span><span class="n">cert</span><span class="o">.</span><span class="n">extensions</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">value</span><span class="o">.</span><span class="n [...]
+</span><span id="L-155"><a href="#L-155"><span class="linenos"> 155</span></a>        <span class="k">except</span><span class="p">:</span>
+</span><span id="L-156"><a href="#L-156"><span class="linenos"> 156</span></a>            <span class="k">raise</span> <span class="n">TeaclaveException</span><span class="p">(</span><span class="s2">&quot;Failed to load extensions&quot;</span><span class="p">)</span>
+</span><span id="L-157"><a href="#L-157"><span class="linenos"> 157</span></a>
+</span><span id="L-158"><a href="#L-158"><span class="linenos"> 158</span></a>        <span class="n">report</span> <span class="o">=</span> <span class="nb">bytes</span><span class="p">(</span><span class="n">ext</span><span class="p">[</span><span class="s2">&quot;report&quot;</span><span class="p">])</span>
+</span><span id="L-159"><a href="#L-159"><span class="linenos"> 159</span></a>        <span class="n">signature</span> <span class="o">=</span> <span class="nb">bytes</span><span class="p">(</span><span class="n">ext</span><span class="p">[</span><span class="s2">&quot;signature&quot;</span><span class="p">])</span>
+</span><span id="L-160"><a href="#L-160"><span class="linenos"> 160</span></a>        <span class="k">try</span><span class="p">:</span>
+</span><span id="L-161"><a href="#L-161"><span class="linenos"> 161</span></a>            <span class="n">certs</span> <span class="o">=</span> <span class="p">[</span>
+</span><span id="L-162"><a href="#L-162"><span class="linenos"> 162</span></a>                <span class="n">load_certificate</span><span class="p">(</span><span class="n">FILETYPE_ASN1</span><span class="p">,</span> <span class="nb">bytes</span><span class="p">(</span><span class="n">c</span><span class="p">))</span> <span class="k">for</span> <span class="n">c</span> <span class="ow">in</span> <span class="n">ext</span><span class="p">[</span><span class="s2">&quot;certs&quot;</span>< [...]
+</span><span id="L-163"><a href="#L-163"><span class="linenos"> 163</span></a>            <span class="p">]</span>
+</span><span id="L-164"><a href="#L-164"><span class="linenos"> 164</span></a>        <span class="k">except</span><span class="p">:</span>
+</span><span id="L-165"><a href="#L-165"><span class="linenos"> 165</span></a>            <span class="k">raise</span> <span class="n">TeaclaveException</span><span class="p">(</span>
+</span><span id="L-166"><a href="#L-166"><span class="linenos"> 166</span></a>                <span class="s2">&quot;Failed to load singing certificate of the report&quot;</span><span class="p">)</span>
+</span><span id="L-167"><a href="#L-167"><span class="linenos"> 167</span></a>
+</span><span id="L-168"><a href="#L-168"><span class="linenos"> 168</span></a>        <span class="c1"># verify signing cert with AS root cert</span>
+</span><span id="L-169"><a href="#L-169"><span class="linenos"> 169</span></a>        <span class="k">try</span><span class="p">:</span>
+</span><span id="L-170"><a href="#L-170"><span class="linenos"> 170</span></a>            <span class="k">with</span> <span class="nb">open</span><span class="p">(</span><span class="n">as_root_ca_cert_path</span><span class="p">)</span> <span class="k">as</span> <span class="n">f</span><span class="p">:</span>
+</span><span id="L-171"><a href="#L-171"><span class="linenos"> 171</span></a>                <span class="n">as_root_ca_cert</span> <span class="o">=</span> <span class="n">f</span><span class="o">.</span><span class="n">read</span><span class="p">()</span>
+</span><span id="L-172"><a href="#L-172"><span class="linenos"> 172</span></a>        <span class="k">except</span><span class="p">:</span>
+</span><span id="L-173"><a href="#L-173"><span class="linenos"> 173</span></a>            <span class="k">raise</span> <span class="n">TeaclaveException</span><span class="p">(</span>
+</span><span id="L-174"><a href="#L-174"><span class="linenos"> 174</span></a>                <span class="s2">&quot;Failed to open attestation service root certificate&quot;</span><span class="p">)</span>
+</span><span id="L-175"><a href="#L-175"><span class="linenos"> 175</span></a>
+</span><span id="L-176"><a href="#L-176"><span class="linenos"> 176</span></a>        <span class="k">try</span><span class="p">:</span>
+</span><span id="L-177"><a href="#L-177"><span class="linenos"> 177</span></a>            <span class="n">as_root_ca_cert</span> <span class="o">=</span> <span class="n">load_certificate</span><span class="p">(</span><span class="n">FILETYPE_PEM</span><span class="p">,</span> <span class="n">as_root_ca_cert</span><span class="p">)</span>
+</span><span id="L-178"><a href="#L-178"><span class="linenos"> 178</span></a>        <span class="k">except</span><span class="p">:</span>
+</span><span id="L-179"><a href="#L-179"><span class="linenos"> 179</span></a>            <span class="k">raise</span> <span class="n">TeaclaveException</span><span class="p">(</span>
+</span><span id="L-180"><a href="#L-180"><span class="linenos"> 180</span></a>                <span class="s2">&quot;Failed to load attestation service root certificate&quot;</span><span class="p">)</span>
+</span><span id="L-181"><a href="#L-181"><span class="linenos"> 181</span></a>
+</span><span id="L-182"><a href="#L-182"><span class="linenos"> 182</span></a>        <span class="n">store</span> <span class="o">=</span> <span class="n">X509Store</span><span class="p">()</span>
+</span><span id="L-183"><a href="#L-183"><span class="linenos"> 183</span></a>        <span class="n">store</span><span class="o">.</span><span class="n">add_cert</span><span class="p">(</span><span class="n">as_root_ca_cert</span><span class="p">)</span>
+</span><span id="L-184"><a href="#L-184"><span class="linenos"> 184</span></a>        <span class="n">client_cert</span> <span class="o">=</span> <span class="n">certs</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
+</span><span id="L-185"><a href="#L-185"><span class="linenos"> 185</span></a>        <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">certs</span><span class="p">)</span> <span class="o">&gt;</span> <span class="mi">1</span><span class="p">:</span>
+</span><span id="L-186"><a href="#L-186"><span class="linenos"> 186</span></a>            <span class="k">for</span> <span class="n">c</span> <span class="ow">in</span> <span class="n">certs</span><span class="p">[</span><span class="mi">1</span><span class="p">:]:</span>
+</span><span id="L-187"><a href="#L-187"><span class="linenos"> 187</span></a>                <span class="n">store</span><span class="o">.</span><span class="n">add_cert</span><span class="p">(</span><span class="n">c</span><span class="p">)</span>
+</span><span id="L-188"><a href="#L-188"><span class="linenos"> 188</span></a>        <span class="n">store_ctx</span> <span class="o">=</span> <span class="n">X509StoreContext</span><span class="p">(</span><span class="n">store</span><span class="p">,</span> <span class="n">client_cert</span><span class="p">)</span>
+</span><span id="L-189"><a href="#L-189"><span class="linenos"> 189</span></a>
+</span><span id="L-190"><a href="#L-190"><span class="linenos"> 190</span></a>        <span class="k">try</span><span class="p">:</span>
+</span><span id="L-191"><a href="#L-191"><span class="linenos"> 191</span></a>            <span class="n">store_ctx</span><span class="o">.</span><span class="n">verify_certificate</span><span class="p">()</span>
+</span><span id="L-192"><a href="#L-192"><span class="linenos"> 192</span></a>
+</span><span id="L-193"><a href="#L-193"><span class="linenos"> 193</span></a>            <span class="c1"># verify report&#39;s signature</span>
+</span><span id="L-194"><a href="#L-194"><span class="linenos"> 194</span></a>            <span class="n">crypto</span><span class="o">.</span><span class="n">verify</span><span class="p">(</span><span class="n">certs</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">signature</span><span class="p">,</span> <span class="nb">bytes</span><span class="p">(</span><span class="n">ext</span><span class="p">[</span><span class="s2">&quot;report&quo [...]
+</span><span id="L-195"><a href="#L-195"><span class="linenos"> 195</span></a>        <span class="k">except</span><span class="p">:</span>
+</span><span id="L-196"><a href="#L-196"><span class="linenos"> 196</span></a>            <span class="k">raise</span> <span class="n">TeaclaveException</span><span class="p">(</span><span class="s2">&quot;Failed to verify report signature&quot;</span><span class="p">)</span>
+</span><span id="L-197"><a href="#L-197"><span class="linenos"> 197</span></a>
+</span><span id="L-198"><a href="#L-198"><span class="linenos"> 198</span></a>        <span class="n">report</span> <span class="o">=</span> <span class="n">json</span><span class="o">.</span><span class="n">loads</span><span class="p">(</span><span class="n">report</span><span class="p">)</span>
+</span><span id="L-199"><a href="#L-199"><span class="linenos"> 199</span></a>        <span class="n">quote</span> <span class="o">=</span> <span class="n">report</span><span class="p">[</span><span class="s1">&#39;isvEnclaveQuoteBody&#39;</span><span class="p">]</span>
+</span><span id="L-200"><a href="#L-200"><span class="linenos"> 200</span></a>        <span class="n">quote</span> <span class="o">=</span> <span class="n">base64</span><span class="o">.</span><span class="n">b64decode</span><span class="p">(</span><span class="n">quote</span><span class="p">)</span>
+</span><span id="L-201"><a href="#L-201"><span class="linenos"> 201</span></a>
+</span><span id="L-202"><a href="#L-202"><span class="linenos"> 202</span></a>        <span class="c1"># get report_data from the quote</span>
+</span><span id="L-203"><a href="#L-203"><span class="linenos"> 203</span></a>        <span class="n">report_data</span> <span class="o">=</span> <span class="n">quote</span><span class="p">[</span><span class="mi">368</span><span class="p">:</span><span class="mi">368</span> <span class="o">+</span> <span class="mi">64</span><span class="p">]</span>
+</span><span id="L-204"><a href="#L-204"><span class="linenos"> 204</span></a>        <span class="c1"># get EC pub key from the certificate</span>
+</span><span id="L-205"><a href="#L-205"><span class="linenos"> 205</span></a>        <span class="n">pub_key</span> <span class="o">=</span> <span class="n">cert</span><span class="o">.</span><span class="n">public_key</span><span class="p">()</span><span class="o">.</span><span class="n">public_bytes</span><span class="p">(</span>
+</span><span id="L-206"><a href="#L-206"><span class="linenos"> 206</span></a>            <span class="n">cryptography</span><span class="o">.</span><span class="n">hazmat</span><span class="o">.</span><span class="n">primitives</span><span class="o">.</span><span class="n">serialization</span><span class="o">.</span><span class="n">Encoding</span><span class="o">.</span><span class="n">X962</span><span class="p">,</span>
+</span><span id="L-207"><a href="#L-207"><span class="linenos"> 207</span></a>            <span class="n">cryptography</span><span class="o">.</span><span class="n">hazmat</span><span class="o">.</span><span class="n">primitives</span><span class="o">.</span><span class="n">serialization</span><span class="o">.</span><span class="n">PublicFormat</span><span class="o">.</span>
+</span><span id="L-208"><a href="#L-208"><span class="linenos"> 208</span></a>            <span class="n">UncompressedPoint</span><span class="p">)</span>
+</span><span id="L-209"><a href="#L-209"><span class="linenos"> 209</span></a>
+</span><span id="L-210"><a href="#L-210"><span class="linenos"> 210</span></a>        <span class="c1"># verify whether the certificate is bound to the quote</span>
+</span><span id="L-211"><a href="#L-211"><span class="linenos"> 211</span></a>        <span class="k">assert</span> <span class="p">(</span><span class="n">pub_key</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">==</span> <span class="mi">4</span><span class="p">)</span>
+</span><span id="L-212"><a href="#L-212"><span class="linenos"> 212</span></a>        <span class="k">if</span> <span class="n">pub_key</span><span class="p">[</span><span class="mi">1</span><span class="p">:]</span> <span class="o">!=</span> <span class="n">report_data</span><span class="p">:</span>
+</span><span id="L-213"><a href="#L-213"><span class="linenos"> 213</span></a>            <span class="k">raise</span> <span class="n">TeaclaveException</span><span class="p">(</span>
+</span><span id="L-214"><a href="#L-214"><span class="linenos"> 214</span></a>                <span class="s2">&quot;Failed to verify the certificate agaist the report data in the quote&quot;</span>
+</span><span id="L-215"><a href="#L-215"><span class="linenos"> 215</span></a>            <span class="p">)</span>
+</span><span id="L-216"><a href="#L-216"><span class="linenos"> 216</span></a>
+</span><span id="L-217"><a href="#L-217"><span class="linenos"> 217</span></a>        <span class="c1"># get mr_enclave and mr_signer from the quote</span>
+</span><span id="L-218"><a href="#L-218"><span class="linenos"> 218</span></a>        <span class="n">mr_enclave</span> <span class="o">=</span> <span class="n">quote</span><span class="p">[</span><span class="mi">112</span><span class="p">:</span><span class="mi">112</span> <span class="o">+</span> <span class="mi">32</span><span class="p">]</span><span class="o">.</span><span class="n">hex</span><span class="p">()</span>
+</span><span id="L-219"><a href="#L-219"><span class="linenos"> 219</span></a>        <span class="n">mr_signer</span> <span class="o">=</span> <span class="n">quote</span><span class="p">[</span><span class="mi">176</span><span class="p">:</span><span class="mi">176</span> <span class="o">+</span> <span class="mi">32</span><span class="p">]</span><span class="o">.</span><span class="n">hex</span><span class="p">()</span>
+</span><span id="L-220"><a href="#L-220"><span class="linenos"> 220</span></a>
+</span><span id="L-221"><a href="#L-221"><span class="linenos"> 221</span></a>        <span class="c1"># get enclave_info</span>
+</span><span id="L-222"><a href="#L-222"><span class="linenos"> 222</span></a>        <span class="k">try</span><span class="p">:</span>
+</span><span id="L-223"><a href="#L-223"><span class="linenos"> 223</span></a>            <span class="n">enclave_info</span> <span class="o">=</span> <span class="n">toml</span><span class="o">.</span><span class="n">load</span><span class="p">(</span><span class="n">enclave_info_path</span><span class="p">)</span>
+</span><span id="L-224"><a href="#L-224"><span class="linenos"> 224</span></a>        <span class="k">except</span><span class="p">:</span>
+</span><span id="L-225"><a href="#L-225"><span class="linenos"> 225</span></a>            <span class="k">raise</span> <span class="n">TeaclaveException</span><span class="p">(</span><span class="s2">&quot;Failed to load enclave info&quot;</span><span class="p">)</span>
+</span><span id="L-226"><a href="#L-226"><span class="linenos"> 226</span></a>
+</span><span id="L-227"><a href="#L-227"><span class="linenos"> 227</span></a>        <span class="c1"># verify mr_enclave and mr_signer</span>
+</span><span id="L-228"><a href="#L-228"><span class="linenos"> 228</span></a>        <span class="n">enclave_name</span> <span class="o">=</span> <span class="s2">&quot;teaclave_&quot;</span> <span class="o">+</span> <span class="n">endpoint_name</span> <span class="o">+</span> <span class="s2">&quot;_service&quot;</span>
+</span><span id="L-229"><a href="#L-229"><span class="linenos"> 229</span></a>        <span class="k">if</span> <span class="n">mr_enclave</span> <span class="o">!=</span> <span class="n">enclave_info</span><span class="p">[</span><span class="n">enclave_name</span><span class="p">][</span><span class="s2">&quot;mr_enclave&quot;</span><span class="p">]:</span>
+</span><span id="L-230"><a href="#L-230"><span class="linenos"> 230</span></a>            <span class="k">raise</span> <span class="ne">Exception</span><span class="p">(</span><span class="s2">&quot;Failed to verify mr_enclave&quot;</span><span class="p">)</span>
+</span><span id="L-231"><a href="#L-231"><span class="linenos"> 231</span></a>
+</span><span id="L-232"><a href="#L-232"><span class="linenos"> 232</span></a>        <span class="k">if</span> <span class="n">mr_signer</span> <span class="o">!=</span> <span class="n">enclave_info</span><span class="p">[</span><span class="n">enclave_name</span><span class="p">][</span><span class="s2">&quot;mr_signer&quot;</span><span class="p">]:</span>
+</span><span id="L-233"><a href="#L-233"><span class="linenos"> 233</span></a>            <span class="k">raise</span> <span class="ne">Exception</span><span class="p">(</span><span class="s2">&quot;Failed to verify mr_signer&quot;</span><span class="p">)</span>
+</span><span id="L-234"><a href="#L-234"><span class="linenos"> 234</span></a>
+</span><span id="L-235"><a href="#L-235"><span class="linenos"> 235</span></a>
+</span><span id="L-236"><a href="#L-236"><span class="linenos"> 236</span></a><span class="k">class</span> <span class="nc">FunctionInput</span><span class="p">:</span>
+</span><span id="L-237"><a href="#L-237"><span class="linenos"> 237</span></a><span class="w">    </span><span class="sd">&quot;&quot;&quot;Function input for registering.</span>
+</span><span id="L-238"><a href="#L-238"><span class="linenos"> 238</span></a>
+</span><span id="L-239"><a href="#L-239"><span class="linenos"> 239</span></a><span class="sd">    Args:</span>
+</span><span id="L-240"><a href="#L-240"><span class="linenos"> 240</span></a>
+</span><span id="L-241"><a href="#L-241"><span class="linenos"> 241</span></a><span class="sd">        name: Name of input data.</span>
+</span><span id="L-242"><a href="#L-242"><span class="linenos"> 242</span></a><span class="sd">        description: Description of the input data.</span>
+</span><span id="L-243"><a href="#L-243"><span class="linenos"> 243</span></a><span class="sd">        optional: [Default: False] Data owners do not need to register the data.</span>
+</span><span id="L-244"><a href="#L-244"><span class="linenos"> 244</span></a><span class="sd">    &quot;&quot;&quot;</span>
+</span><span id="L-245"><a href="#L-245"><span class="linenos"> 245</span></a>
+</span><span id="L-246"><a href="#L-246"><span class="linenos"> 246</span></a>    <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">description</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">optional</span><span class="o">=</span><spa [...]
+</span><span id="L-247"><a href="#L-247"><span class="linenos"> 247</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">name</span> <span class="o">=</span> <span class="n">name</span>
+</span><span id="L-248"><a href="#L-248"><span class="linenos"> 248</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">description</span> <span class="o">=</span> <span class="n">description</span>
+</span><span id="L-249"><a href="#L-249"><span class="linenos"> 249</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">optional</span> <span class="o">=</span> <span class="n">optional</span>
+</span><span id="L-250"><a href="#L-250"><span class="linenos"> 250</span></a>
+</span><span id="L-251"><a href="#L-251"><span class="linenos"> 251</span></a>
+</span><span id="L-252"><a href="#L-252"><span class="linenos"> 252</span></a><span class="k">class</span> <span class="nc">FunctionOutput</span><span class="p">:</span>
+</span><span id="L-253"><a href="#L-253"><span class="linenos"> 253</span></a><span class="w">    </span><span class="sd">&quot;&quot;&quot;Function output for registering.</span>
+</span><span id="L-254"><a href="#L-254"><span class="linenos"> 254</span></a>
+</span><span id="L-255"><a href="#L-255"><span class="linenos"> 255</span></a><span class="sd">    Args:</span>
+</span><span id="L-256"><a href="#L-256"><span class="linenos"> 256</span></a>
+</span><span id="L-257"><a href="#L-257"><span class="linenos"> 257</span></a><span class="sd">        name: Name of output data.</span>
+</span><span id="L-258"><a href="#L-258"><span class="linenos"> 258</span></a><span class="sd">        description: Description of the output data.</span>
+</span><span id="L-259"><a href="#L-259"><span class="linenos"> 259</span></a><span class="sd">        optional: [Default: False] Data owners do not need to register the data.</span>
+</span><span id="L-260"><a href="#L-260"><span class="linenos"> 260</span></a><span class="sd">    &quot;&quot;&quot;</span>
+</span><span id="L-261"><a href="#L-261"><span class="linenos"> 261</span></a>
+</span><span id="L-262"><a href="#L-262"><span class="linenos"> 262</span></a>    <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">description</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">optional</span><span class="o">=</span><spa [...]
+</span><span id="L-263"><a href="#L-263"><span class="linenos"> 263</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">name</span> <span class="o">=</span> <span class="n">name</span>
+</span><span id="L-264"><a href="#L-264"><span class="linenos"> 264</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">description</span> <span class="o">=</span> <span class="n">description</span>
+</span><span id="L-265"><a href="#L-265"><span class="linenos"> 265</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">optional</span> <span class="o">=</span> <span class="n">optional</span>
+</span><span id="L-266"><a href="#L-266"><span class="linenos"> 266</span></a>
+</span><span id="L-267"><a href="#L-267"><span class="linenos"> 267</span></a>
+</span><span id="L-268"><a href="#L-268"><span class="linenos"> 268</span></a><span class="k">class</span> <span class="nc">FunctionArgument</span><span class="p">:</span>
+</span><span id="L-269"><a href="#L-269"><span class="linenos"> 269</span></a><span class="w">    </span><span class="sd">&quot;&quot;&quot;Function argument for registring.</span>
+</span><span id="L-270"><a href="#L-270"><span class="linenos"> 270</span></a>
+</span><span id="L-271"><a href="#L-271"><span class="linenos"> 271</span></a><span class="sd">    Args:</span>
+</span><span id="L-272"><a href="#L-272"><span class="linenos"> 272</span></a><span class="sd">        key: Name of the argument.</span>
+</span><span id="L-273"><a href="#L-273"><span class="linenos"> 273</span></a><span class="sd">        default_value: A default value of the argument. The default value is &quot;&quot;.</span>
+</span><span id="L-274"><a href="#L-274"><span class="linenos"> 274</span></a><span class="sd">        allow_overwrite: If allow_overwrite flag is set to be true. The service</span>
+</span><span id="L-275"><a href="#L-275"><span class="linenos"> 275</span></a><span class="sd">                         will allow the task creator to overwrite the arguement</span>
+</span><span id="L-276"><a href="#L-276"><span class="linenos"> 276</span></a><span class="sd">                         value when creating tasks.</span>
+</span><span id="L-277"><a href="#L-277"><span class="linenos"> 277</span></a><span class="sd">    &quot;&quot;&quot;</span>
+</span><span id="L-278"><a href="#L-278"><span class="linenos"> 278</span></a>
+</span><span id="L-279"><a href="#L-279"><span class="linenos"> 279</span></a>    <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span>
+</span><span id="L-280"><a href="#L-280"><span class="linenos"> 280</span></a>                 <span class="n">key</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span>
+</span><span id="L-281"><a href="#L-281"><span class="linenos"> 281</span></a>                 <span class="n">default_value</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="s2">&quot;&quot;</span><span class="p">,</span>
+</span><span id="L-282"><a href="#L-282"><span class="linenos"> 282</span></a>                 <span class="n">allow_overwrite</span><span class="o">=</span><span class="kc">True</span><span class="p">):</span>
+</span><span id="L-283"><a href="#L-283"><span class="linenos"> 283</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">key</span> <span class="o">=</span> <span class="n">key</span>
+</span><span id="L-284"><a href="#L-284"><span class="linenos"> 284</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">default_value</span> <span class="o">=</span> <span class="n">default_value</span>
+</span><span id="L-285"><a href="#L-285"><span class="linenos"> 285</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">allow_overwrite</span> <span class="o">=</span> <span class="n">allow_overwrite</span>
+</span><span id="L-286"><a href="#L-286"><span class="linenos"> 286</span></a>
+</span><span id="L-287"><a href="#L-287"><span class="linenos"> 287</span></a>
+</span><span id="L-288"><a href="#L-288"><span class="linenos"> 288</span></a><span class="k">class</span> <span class="nc">OwnerList</span><span class="p">:</span>
+</span><span id="L-289"><a href="#L-289"><span class="linenos"> 289</span></a><span class="w">    </span><span class="sd">&quot;&quot;&quot;Defines data ownership.</span>
+</span><span id="L-290"><a href="#L-290"><span class="linenos"> 290</span></a>
+</span><span id="L-291"><a href="#L-291"><span class="linenos"> 291</span></a><span class="sd">    Args:</span>
+</span><span id="L-292"><a href="#L-292"><span class="linenos"> 292</span></a>
+</span><span id="L-293"><a href="#L-293"><span class="linenos"> 293</span></a><span class="sd">        data_name: Name of output data.</span>
+</span><span id="L-294"><a href="#L-294"><span class="linenos"> 294</span></a><span class="sd">        uids: A list of user id which own this data.</span>
+</span><span id="L-295"><a href="#L-295"><span class="linenos"> 295</span></a><span class="sd">    &quot;&quot;&quot;</span>
+</span><span id="L-296"><a href="#L-296"><span class="linenos"> 296</span></a>
+</span><span id="L-297"><a href="#L-297"><span class="linenos"> 297</span></a>    <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">data_name</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">uids</span><span class="p">:</span> <span class="n">List</span><span class="p">[</span><span class="nb">str</span><span class="p">]):</span>
+</span><span id="L-298"><a href="#L-298"><span class="linenos"> 298</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">data_name</span> <span class="o">=</span> <span class="n">data_name</span>
+</span><span id="L-299"><a href="#L-299"><span class="linenos"> 299</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">uids</span> <span class="o">=</span> <span class="n">uids</span>
+</span><span id="L-300"><a href="#L-300"><span class="linenos"> 300</span></a>
+</span><span id="L-301"><a href="#L-301"><span class="linenos"> 301</span></a>
+</span><span id="L-302"><a href="#L-302"><span class="linenos"> 302</span></a><span class="k">class</span> <span class="nc">DataMap</span><span class="p">:</span>
+</span><span id="L-303"><a href="#L-303"><span class="linenos"> 303</span></a><span class="w">    </span><span class="sd">&quot;&quot;&quot;Assign data id to input or output data.</span>
+</span><span id="L-304"><a href="#L-304"><span class="linenos"> 304</span></a>
+</span><span id="L-305"><a href="#L-305"><span class="linenos"> 305</span></a><span class="sd">    Args:</span>
+</span><span id="L-306"><a href="#L-306"><span class="linenos"> 306</span></a>
+</span><span id="L-307"><a href="#L-307"><span class="linenos"> 307</span></a><span class="sd">        data_name: Name of output data.</span>
+</span><span id="L-308"><a href="#L-308"><span class="linenos"> 308</span></a><span class="sd">        data_id: Id for the data name.</span>
+</span><span id="L-309"><a href="#L-309"><span class="linenos"> 309</span></a><span class="sd">    &quot;&quot;&quot;</span>
+</span><span id="L-310"><a href="#L-310"><span class="linenos"> 310</span></a>
+</span><span id="L-311"><a href="#L-311"><span class="linenos"> 311</span></a>    <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">data_name</span><span class="p">,</span> <span class="n">data_id</span><span class="p">):</span>
+</span><span id="L-312"><a href="#L-312"><span class="linenos"> 312</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">data_name</span> <span class="o">=</span> <span class="n">data_name</span>
+</span><span id="L-313"><a href="#L-313"><span class="linenos"> 313</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">data_id</span> <span class="o">=</span> <span class="n">data_id</span>
+</span><span id="L-314"><a href="#L-314"><span class="linenos"> 314</span></a>
+</span><span id="L-315"><a href="#L-315"><span class="linenos"> 315</span></a>
+</span><span id="L-316"><a href="#L-316"><span class="linenos"> 316</span></a><span class="k">class</span> <span class="nc">CryptoInfo</span><span class="p">:</span>
+</span><span id="L-317"><a href="#L-317"><span class="linenos"> 317</span></a><span class="w">    </span><span class="sd">&quot;&quot;&quot;Cryptographic information for the input/output data.</span>
+</span><span id="L-318"><a href="#L-318"><span class="linenos"> 318</span></a>
+</span><span id="L-319"><a href="#L-319"><span class="linenos"> 319</span></a><span class="sd">    Args:</span>
+</span><span id="L-320"><a href="#L-320"><span class="linenos"> 320</span></a>
+</span><span id="L-321"><a href="#L-321"><span class="linenos"> 321</span></a><span class="sd">        schema: Encryption algorithms for the input/output data.</span>
+</span><span id="L-322"><a href="#L-322"><span class="linenos"> 322</span></a><span class="sd">        key: Key for encryption and decryption, bytes in list.</span>
+</span><span id="L-323"><a href="#L-323"><span class="linenos"> 323</span></a><span class="sd">        iv: IV, bytes in list.</span>
+</span><span id="L-324"><a href="#L-324"><span class="linenos"> 324</span></a><span class="sd">    &quot;&quot;&quot;</span>
+</span><span id="L-325"><a href="#L-325"><span class="linenos"> 325</span></a>
+</span><span id="L-326"><a href="#L-326"><span class="linenos"> 326</span></a>    <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">schema</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">key</span><span class="p">:</span> <span class="n">List</span><span class="p">[</span><span class="nb">int</span><span class="p">],</span> <span class=" [...]
+</span><span id="L-327"><a href="#L-327"><span class="linenos"> 327</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">schema</span> <span class="o">=</span> <span class="n">schema</span>
+</span><span id="L-328"><a href="#L-328"><span class="linenos"> 328</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">key</span> <span class="o">=</span> <span class="n">key</span>
+</span><span id="L-329"><a href="#L-329"><span class="linenos"> 329</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">iv</span> <span class="o">=</span> <span class="n">iv</span>
+</span><span id="L-330"><a href="#L-330"><span class="linenos"> 330</span></a>
+</span><span id="L-331"><a href="#L-331"><span class="linenos"> 331</span></a>
+</span><span id="L-332"><a href="#L-332"><span class="linenos"> 332</span></a><span class="k">class</span> <span class="nc">UserRegisterRequest</span><span class="p">(</span><span class="n">Request</span><span class="p">):</span>
+</span><span id="L-333"><a href="#L-333"><span class="linenos"> 333</span></a>
+</span><span id="L-334"><a href="#L-334"><span class="linenos"> 334</span></a>    <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">metadata</span><span class="p">:</span> <span class="n">Metadata</span><span class="p">,</span> <span class="n">user_id</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">user_password</span><span class="p">:</ [...]
+</span><span id="L-335"><a href="#L-335"><span class="linenos"> 335</span></a>                 <span class="n">role</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">attribute</span><span class="p">:</span> <span class="nb">str</span><span class="p">):</span>
+</span><span id="L-336"><a href="#L-336"><span class="linenos"> 336</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">request</span> <span class="o">=</span> <span class="s2">&quot;user_register&quot;</span>
+</span><span id="L-337"><a href="#L-337"><span class="linenos"> 337</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">metadata</span> <span class="o">=</span> <span class="n">metadata</span>
+</span><span id="L-338"><a href="#L-338"><span class="linenos"> 338</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">id</span> <span class="o">=</span> <span class="n">user_id</span>
+</span><span id="L-339"><a href="#L-339"><span class="linenos"> 339</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">password</span> <span class="o">=</span> <span class="n">user_password</span>
+</span><span id="L-340"><a href="#L-340"><span class="linenos"> 340</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">role</span> <span class="o">=</span> <span class="n">role</span>
+</span><span id="L-341"><a href="#L-341"><span class="linenos"> 341</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">attribute</span> <span class="o">=</span> <span class="n">attribute</span>
+</span><span id="L-342"><a href="#L-342"><span class="linenos"> 342</span></a>
+</span><span id="L-343"><a href="#L-343"><span class="linenos"> 343</span></a>
+</span><span id="L-344"><a href="#L-344"><span class="linenos"> 344</span></a><span class="k">class</span> <span class="nc">UserUpdateRequest</span><span class="p">(</span><span class="n">Request</span><span class="p">):</span>
+</span><span id="L-345"><a href="#L-345"><span class="linenos"> 345</span></a>
+</span><span id="L-346"><a href="#L-346"><span class="linenos"> 346</span></a>    <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">metadata</span><span class="p">:</span> <span class="n">Metadata</span><span class="p">,</span> <span class="n">user_id</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">user_password</span><span class="p">:</ [...]
+</span><span id="L-347"><a href="#L-347"><span class="linenos"> 347</span></a>                 <span class="n">role</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">attribute</span><span class="p">:</span> <span class="nb">str</span><span class="p">):</span>
+</span><span id="L-348"><a href="#L-348"><span class="linenos"> 348</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">request</span> <span class="o">=</span> <span class="s2">&quot;user_update&quot;</span>
+</span><span id="L-349"><a href="#L-349"><span class="linenos"> 349</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">metadata</span> <span class="o">=</span> <span class="n">metadata</span>
+</span><span id="L-350"><a href="#L-350"><span class="linenos"> 350</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">id</span> <span class="o">=</span> <span class="n">user_id</span>
+</span><span id="L-351"><a href="#L-351"><span class="linenos"> 351</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">password</span> <span class="o">=</span> <span class="n">user_password</span>
+</span><span id="L-352"><a href="#L-352"><span class="linenos"> 352</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">role</span> <span class="o">=</span> <span class="n">role</span>
+</span><span id="L-353"><a href="#L-353"><span class="linenos"> 353</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">attribute</span> <span class="o">=</span> <span class="n">attribute</span>
+</span><span id="L-354"><a href="#L-354"><span class="linenos"> 354</span></a>
+</span><span id="L-355"><a href="#L-355"><span class="linenos"> 355</span></a>
+</span><span id="L-356"><a href="#L-356"><span class="linenos"> 356</span></a><span class="k">class</span> <span class="nc">UserLoginRequest</span><span class="p">(</span><span class="n">Request</span><span class="p">):</span>
+</span><span id="L-357"><a href="#L-357"><span class="linenos"> 357</span></a>
+</span><span id="L-358"><a href="#L-358"><span class="linenos"> 358</span></a>    <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">user_id</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">user_password</span><span class="p">:</span> <span class="nb">str</span><span class="p">):</span>
+</span><span id="L-359"><a href="#L-359"><span class="linenos"> 359</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">request</span> <span class="o">=</span> <span class="s2">&quot;user_login&quot;</span>
+</span><span id="L-360"><a href="#L-360"><span class="linenos"> 360</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">id</span> <span class="o">=</span> <span class="n">user_id</span>
+</span><span id="L-361"><a href="#L-361"><span class="linenos"> 361</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">password</span> <span class="o">=</span> <span class="n">user_password</span>
+</span><span id="L-362"><a href="#L-362"><span class="linenos"> 362</span></a>
+</span><span id="L-363"><a href="#L-363"><span class="linenos"> 363</span></a>
+</span><span id="L-364"><a href="#L-364"><span class="linenos"> 364</span></a><span class="k">class</span> <span class="nc">UserChangePasswordRequest</span><span class="p">(</span><span class="n">Request</span><span class="p">):</span>
+</span><span id="L-365"><a href="#L-365"><span class="linenos"> 365</span></a>
+</span><span id="L-366"><a href="#L-366"><span class="linenos"> 366</span></a>    <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">metadata</span><span class="p">:</span> <span class="n">Metadata</span><span class="p">,</span> <span class="n">password</span><span class="p">:</span> <span class="nb">str</span><span class="p">):</span>
+</span><span id="L-367"><a href="#L-367"><span class="linenos"> 367</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">request</span> <span class="o">=</span> <span class="s2">&quot;user_change_password&quot;</span>
+</span><span id="L-368"><a href="#L-368"><span class="linenos"> 368</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">metadata</span> <span class="o">=</span> <span class="n">metadata</span>
+</span><span id="L-369"><a href="#L-369"><span class="linenos"> 369</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">password</span> <span class="o">=</span> <span class="n">password</span>
+</span><span id="L-370"><a href="#L-370"><span class="linenos"> 370</span></a>
+</span><span id="L-371"><a href="#L-371"><span class="linenos"> 371</span></a>
+</span><span id="L-372"><a href="#L-372"><span class="linenos"> 372</span></a><span class="k">class</span> <span class="nc">ResetUserPasswordRequest</span><span class="p">(</span><span class="n">Request</span><span class="p">):</span>
+</span><span id="L-373"><a href="#L-373"><span class="linenos"> 373</span></a>
+</span><span id="L-374"><a href="#L-374"><span class="linenos"> 374</span></a>    <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">metadata</span><span class="p">:</span> <span class="n">Metadata</span><span class="p">,</span> <span class="n">user_id</span><span class="p">:</span> <span class="nb">str</span><span class="p">):</span>
+</span><span id="L-375"><a href="#L-375"><span class="linenos"> 375</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">request</span> <span class="o">=</span> <span class="s2">&quot;reset_user_password&quot;</span>
+</span><span id="L-376"><a href="#L-376"><span class="linenos"> 376</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">metadata</span> <span class="o">=</span> <span class="n">metadata</span>
+</span><span id="L-377"><a href="#L-377"><span class="linenos"> 377</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">id</span> <span class="o">=</span> <span class="n">user_id</span>
+</span><span id="L-378"><a href="#L-378"><span class="linenos"> 378</span></a>
+</span><span id="L-379"><a href="#L-379"><span class="linenos"> 379</span></a>
+</span><span id="L-380"><a href="#L-380"><span class="linenos"> 380</span></a><span class="k">class</span> <span class="nc">DeleteUserRequest</span><span class="p">(</span><span class="n">Request</span><span class="p">):</span>
+</span><span id="L-381"><a href="#L-381"><span class="linenos"> 381</span></a>
+</span><span id="L-382"><a href="#L-382"><span class="linenos"> 382</span></a>    <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">metadata</span><span class="p">:</span> <span class="n">Metadata</span><span class="p">,</span> <span class="n">user_id</span><span class="p">:</span> <span class="nb">str</span><span class="p">):</span>
+</span><span id="L-383"><a href="#L-383"><span class="linenos"> 383</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">request</span> <span class="o">=</span> <span class="s2">&quot;delete_user&quot;</span>
+</span><span id="L-384"><a href="#L-384"><span class="linenos"> 384</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">metadata</span> <span class="o">=</span> <span class="n">metadata</span>
+</span><span id="L-385"><a href="#L-385"><span class="linenos"> 385</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">id</span> <span class="o">=</span> <span class="n">user_id</span>
+</span><span id="L-386"><a href="#L-386"><span class="linenos"> 386</span></a>
+</span><span id="L-387"><a href="#L-387"><span class="linenos"> 387</span></a>
+</span><span id="L-388"><a href="#L-388"><span class="linenos"> 388</span></a><span class="k">class</span> <span class="nc">ListUsersRequest</span><span class="p">(</span><span class="n">Request</span><span class="p">):</span>
+</span><span id="L-389"><a href="#L-389"><span class="linenos"> 389</span></a>
+</span><span id="L-390"><a href="#L-390"><span class="linenos"> 390</span></a>    <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">metadata</span><span class="p">:</span> <span class="n">Metadata</span><span class="p">,</span> <span class="n">user_id</span><span class="p">:</span> <span class="nb">str</span><span class="p">):</span>
+</span><span id="L-391"><a href="#L-391"><span class="linenos"> 391</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">request</span> <span class="o">=</span> <span class="s2">&quot;list_users&quot;</span>
+</span><span id="L-392"><a href="#L-392"><span class="linenos"> 392</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">metadata</span> <span class="o">=</span> <span class="n">metadata</span>
+</span><span id="L-393"><a href="#L-393"><span class="linenos"> 393</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">id</span> <span class="o">=</span> <span class="n">user_id</span>
+</span><span id="L-394"><a href="#L-394"><span class="linenos"> 394</span></a>
+</span><span id="L-395"><a href="#L-395"><span class="linenos"> 395</span></a>
+</span><span id="L-396"><a href="#L-396"><span class="linenos"> 396</span></a><span class="k">class</span> <span class="nc">AuthenticationService</span><span class="p">(</span><span class="n">TeaclaveService</span><span class="p">):</span>
+</span><span id="L-397"><a href="#L-397"><span class="linenos"> 397</span></a><span class="w">    </span><span class="sd">&quot;&quot;&quot;</span>
+</span><span id="L-398"><a href="#L-398"><span class="linenos"> 398</span></a><span class="sd">    Establish trusted channel with the authentication service and provide</span>
+</span><span id="L-399"><a href="#L-399"><span class="linenos"> 399</span></a><span class="sd">    clients to send request through RPC.</span>
+</span><span id="L-400"><a href="#L-400"><span class="linenos"> 400</span></a>
+</span><span id="L-401"><a href="#L-401"><span class="linenos"> 401</span></a><span class="sd">    Args:</span>
+</span><span id="L-402"><a href="#L-402"><span class="linenos"> 402</span></a>
+</span><span id="L-403"><a href="#L-403"><span class="linenos"> 403</span></a><span class="sd">        address: The address of the remote services in tuple.</span>
+</span><span id="L-404"><a href="#L-404"><span class="linenos"> 404</span></a><span class="sd">        as_root_ca_cert_path: Root CA certification of the attestation services</span>
+</span><span id="L-405"><a href="#L-405"><span class="linenos"> 405</span></a><span class="sd">            to verify the attestation report.</span>
+</span><span id="L-406"><a href="#L-406"><span class="linenos"> 406</span></a><span class="sd">        enclave_info_path: Path of enclave info to verify the remote service in</span>
+</span><span id="L-407"><a href="#L-407"><span class="linenos"> 407</span></a><span class="sd">            the attestation report.</span>
+</span><span id="L-408"><a href="#L-408"><span class="linenos"> 408</span></a><span class="sd">    &quot;&quot;&quot;</span>
+</span><span id="L-409"><a href="#L-409"><span class="linenos"> 409</span></a>
+</span><span id="L-410"><a href="#L-410"><span class="linenos"> 410</span></a>    <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span>
+</span><span id="L-411"><a href="#L-411"><span class="linenos"> 411</span></a>                 <span class="n">address</span><span class="p">:</span> <span class="n">Tuple</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">int</span><span class="p">],</span>
+</span><span id="L-412"><a href="#L-412"><span class="linenos"> 412</span></a>                 <span class="n">as_root_ca_cert_path</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span>
+</span><span id="L-413"><a href="#L-413"><span class="linenos"> 413</span></a>                 <span class="n">enclave_info_path</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span>
+</span><span id="L-414"><a href="#L-414"><span class="linenos"> 414</span></a>                 <span class="n">dump_report</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span>
+</span><span id="L-415"><a href="#L-415"><span class="linenos"> 415</span></a>        <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span><span class="s2">&quot;authentication&quot;</span><span class="p">,</span> <span class="n">address</span><span class="p">,</span> <span class="n">as_root_ca_cert_path</span><span class="p">,</span>
+</span><span id="L-416"><a href="#L-416"><span class="linenos"> 416</span></a>                         <span class="n">enclave_info_path</span><span class="p">,</span> <span class="n">dump_report</span><span class="p">)</span>
+</span><span id="L-417"><a href="#L-417"><span class="linenos"> 417</span></a>
+</span><span id="L-418"><a href="#L-418"><span class="linenos"> 418</span></a>    <span class="k">def</span> <span class="nf">user_register</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">user_id</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">user_password</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">role</span><span class="p">:</spa [...]
+</span><span id="L-419"><a href="#L-419"><span class="linenos"> 419</span></a>                      <span class="n">attribute</span><span class="p">:</span> <span class="nb">str</span><span class="p">):</span>
+</span><span id="L-420"><a href="#L-420"><span class="linenos"> 420</span></a><span class="w">        </span><span class="sd">&quot;&quot;&quot;Register a new user.</span>
+</span><span id="L-421"><a href="#L-421"><span class="linenos"> 421</span></a>
+</span><span id="L-422"><a href="#L-422"><span class="linenos"> 422</span></a><span class="sd">        Args:</span>
+</span><span id="L-423"><a href="#L-423"><span class="linenos"> 423</span></a>
+</span><span id="L-424"><a href="#L-424"><span class="linenos"> 424</span></a><span class="sd">            user_id: User ID.</span>
+</span><span id="L-425"><a href="#L-425"><span class="linenos"> 425</span></a><span class="sd">            user_password: Password.</span>
+</span><span id="L-426"><a href="#L-426"><span class="linenos"> 426</span></a><span class="sd">            role: Role of user.</span>
+</span><span id="L-427"><a href="#L-427"><span class="linenos"> 427</span></a><span class="sd">            attribute: Attribute related to the role.</span>
+</span><span id="L-428"><a href="#L-428"><span class="linenos"> 428</span></a><span class="sd">        &quot;&quot;&quot;</span>
+</span><span id="L-429"><a href="#L-429"><span class="linenos"> 429</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">check_channel</span><span class="p">()</span>
+</span><span id="L-430"><a href="#L-430"><span class="linenos"> 430</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">check_metadata</span><span class="p">()</span>
+</span><span id="L-431"><a href="#L-431"><span class="linenos"> 431</span></a>        <span class="n">request</span> <span class="o">=</span> <span class="n">UserRegisterRequest</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">metadata</span><span class="p">,</span> <span class="n">user_id</span><span class="p">,</span> <span class="n">user_password</span><span class="p">,</span>
+</span><span id="L-432"><a href="#L-432"><span class="linenos"> 432</span></a>                                      <span class="n">role</span><span class="p">,</span> <span class="n">attribute</span><span class="p">)</span>
+</span><span id="L-433"><a href="#L-433"><span class="linenos"> 433</span></a>        <span class="n">_write_message</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">channel</span><span class="p">,</span> <span class="n">request</span><span class="p">)</span>
+</span><span id="L-434"><a href="#L-434"><span class="linenos"> 434</span></a>        <span class="n">response</span> <span class="o">=</span> <span class="n">_read_message</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">channel</span><span class="p">)</span>
+</span><span id="L-435"><a href="#L-435"><span class="linenos"> 435</span></a>        <span class="k">if</span> <span class="n">response</span><span class="p">[</span><span class="s2">&quot;result&quot;</span><span class="p">]</span> <span class="o">==</span> <span class="s2">&quot;ok&quot;</span><span class="p">:</span>
+</span><span id="L-436"><a href="#L-436"><span class="linenos"> 436</span></a>            <span class="k">pass</span>
+</span><span id="L-437"><a href="#L-437"><span class="linenos"> 437</span></a>        <span class="k">else</span><span class="p">:</span>
+</span><span id="L-438"><a href="#L-438"><span class="linenos"> 438</span></a>            <span class="n">reason</span> <span class="o">=</span> <span class="s2">&quot;unknown&quot;</span>
+</span><span id="L-439"><a href="#L-439"><span class="linenos"> 439</span></a>            <span class="k">if</span> <span class="s2">&quot;request_error&quot;</span> <span class="ow">in</span> <span class="n">response</span><span class="p">:</span>
+</span><span id="L-440"><a href="#L-440"><span class="linenos"> 440</span></a>                <span class="n">reason</span> <span class="o">=</span> <span class="n">response</span><span class="p">[</span><span class="s2">&quot;request_error&quot;</span><span class="p">]</span>
+</span><span id="L-441"><a href="#L-441"><span class="linenos"> 441</span></a>            <span class="k">raise</span> <span class="n">TeaclaveException</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Failed to register user (</span><span class="si">{</span><span class="n">reason</span><span class="si">}</span><span class="s2">)&quot;</span><span class="p">)</span>
+</span><span id="L-442"><a href="#L-442"><span class="linenos"> 442</span></a>
+</span><span id="L-443"><a href="#L-443"><span class="linenos"> 443</span></a>    <span class="k">def</span> <span class="nf">user_update</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">user_id</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">user_password</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">role</span><span class="p">:</span> [...]
+</span><span id="L-444"><a href="#L-444"><span class="linenos"> 444</span></a>                    <span class="n">attribute</span><span class="p">:</span> <span class="nb">str</span><span class="p">):</span>
+</span><span id="L-445"><a href="#L-445"><span class="linenos"> 445</span></a><span class="w">        </span><span class="sd">&quot;&quot;&quot;Update an existing user.</span>
+</span><span id="L-446"><a href="#L-446"><span class="linenos"> 446</span></a>
+</span><span id="L-447"><a href="#L-447"><span class="linenos"> 447</span></a><span class="sd">        Args:</span>
+</span><span id="L-448"><a href="#L-448"><span class="linenos"> 448</span></a>
+</span><span id="L-449"><a href="#L-449"><span class="linenos"> 449</span></a><span class="sd">            user_id: User ID.</span>
+</span><span id="L-450"><a href="#L-450"><span class="linenos"> 450</span></a><span class="sd">            user_password: Password.</span>
+</span><span id="L-451"><a href="#L-451"><span class="linenos"> 451</span></a><span class="sd">            role: Role of user.</span>
+</span><span id="L-452"><a href="#L-452"><span class="linenos"> 452</span></a><span class="sd">            attribute: Attribute related to the role.</span>
+</span><span id="L-453"><a href="#L-453"><span class="linenos"> 453</span></a><span class="sd">        &quot;&quot;&quot;</span>
+</span><span id="L-454"><a href="#L-454"><span class="linenos"> 454</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">check_channel</span><span class="p">()</span>
+</span><span id="L-455"><a href="#L-455"><span class="linenos"> 455</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">check_metadata</span><span class="p">()</span>
+</span><span id="L-456"><a href="#L-456"><span class="linenos"> 456</span></a>        <span class="n">request</span> <span class="o">=</span> <span class="n">UserUpdateRequest</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">metadata</span><span class="p">,</span> <span class="n">user_id</span><span class="p">,</span> <span class="n">user_password</span><span class="p">,</span>
+</span><span id="L-457"><a href="#L-457"><span class="linenos"> 457</span></a>                                    <span class="n">role</span><span class="p">,</span> <span class="n">attribute</span><span class="p">)</span>
+</span><span id="L-458"><a href="#L-458"><span class="linenos"> 458</span></a>        <span class="n">_write_message</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">channel</span><span class="p">,</span> <span class="n">request</span><span class="p">)</span>
+</span><span id="L-459"><a href="#L-459"><span class="linenos"> 459</span></a>        <span class="n">response</span> <span class="o">=</span> <span class="n">_read_message</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">channel</span><span class="p">)</span>
+</span><span id="L-460"><a href="#L-460"><span class="linenos"> 460</span></a>        <span class="k">if</span> <span class="n">response</span><span class="p">[</span><span class="s2">&quot;result&quot;</span><span class="p">]</span> <span class="o">==</span> <span class="s2">&quot;ok&quot;</span><span class="p">:</span>
+</span><span id="L-461"><a href="#L-461"><span class="linenos"> 461</span></a>            <span class="k">pass</span>
+</span><span id="L-462"><a href="#L-462"><span class="linenos"> 462</span></a>        <span class="k">else</span><span class="p">:</span>
+</span><span id="L-463"><a href="#L-463"><span class="linenos"> 463</span></a>            <span class="n">reason</span> <span class="o">=</span> <span class="s2">&quot;unknown&quot;</span>
+</span><span id="L-464"><a href="#L-464"><span class="linenos"> 464</span></a>            <span class="k">if</span> <span class="s2">&quot;request_error&quot;</span> <span class="ow">in</span> <span class="n">response</span><span class="p">:</span>
+</span><span id="L-465"><a href="#L-465"><span class="linenos"> 465</span></a>                <span class="n">reason</span> <span class="o">=</span> <span class="n">response</span><span class="p">[</span><span class="s2">&quot;request_error&quot;</span><span class="p">]</span>
+</span><span id="L-466"><a href="#L-466"><span class="linenos"> 466</span></a>            <span class="k">raise</span> <span class="n">TeaclaveException</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Failed to update user (</span><span class="si">{</span><span class="n">reason</span><span class="si">}</span><span class="s2">)&quot;</span><span class="p">)</span>
+</span><span id="L-467"><a href="#L-467"><span class="linenos"> 467</span></a>
+</span><span id="L-468"><a href="#L-468"><span class="linenos"> 468</span></a>    <span class="k">def</span> <span class="nf">user_login</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">user_id</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">user_password</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</s [...]
+</span><span id="L-469"><a href="#L-469"><span class="linenos"> 469</span></a><span class="w">        </span><span class="sd">&quot;&quot;&quot;Login and get a session token.</span>
+</span><span id="L-470"><a href="#L-470"><span class="linenos"> 470</span></a>
+</span><span id="L-471"><a href="#L-471"><span class="linenos"> 471</span></a><span class="sd">        Args:</span>
+</span><span id="L-472"><a href="#L-472"><span class="linenos"> 472</span></a>
+</span><span id="L-473"><a href="#L-473"><span class="linenos"> 473</span></a><span class="sd">            user_id: User ID.</span>
+</span><span id="L-474"><a href="#L-474"><span class="linenos"> 474</span></a><span class="sd">            user_password: Password.</span>
+</span><span id="L-475"><a href="#L-475"><span class="linenos"> 475</span></a>
+</span><span id="L-476"><a href="#L-476"><span class="linenos"> 476</span></a><span class="sd">        Returns:</span>
+</span><span id="L-477"><a href="#L-477"><span class="linenos"> 477</span></a>
+</span><span id="L-478"><a href="#L-478"><span class="linenos"> 478</span></a><span class="sd">            str: User login token.</span>
+</span><span id="L-479"><a href="#L-479"><span class="linenos"> 479</span></a><span class="sd">        &quot;&quot;&quot;</span>
+</span><span id="L-480"><a href="#L-480"><span class="linenos"> 480</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">check_channel</span><span class="p">()</span>
+</span><span id="L-481"><a href="#L-481"><span class="linenos"> 481</span></a>        <span class="n">request</span> <span class="o">=</span> <span class="n">UserLoginRequest</span><span class="p">(</span><span class="n">user_id</span><span class="p">,</span> <span class="n">user_password</span><span class="p">)</span>
+</span><span id="L-482"><a href="#L-482"><span class="linenos"> 482</span></a>        <span class="n">_write_message</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">channel</span><span class="p">,</span> <span class="n">request</span><span class="p">)</span>
+</span><span id="L-483"><a href="#L-483"><span class="linenos"> 483</span></a>        <span class="n">response</span> <span class="o">=</span> <span class="n">_read_message</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">channel</span><span class="p">)</span>
+</span><span id="L-484"><a href="#L-484"><span class="linenos"> 484</span></a>        <span class="k">if</span> <span class="n">response</span><span class="p">[</span><span class="s2">&quot;result&quot;</span><span class="p">]</span> <span class="o">==</span> <span class="s2">&quot;ok&quot;</span><span class="p">:</span>
+</span><span id="L-485"><a href="#L-485"><span class="linenos"> 485</span></a>            <span class="k">return</span> <span class="n">response</span><span class="p">[</span><span class="s2">&quot;content&quot;</span><span class="p">][</span><span class="s2">&quot;token&quot;</span><span class="p">]</span>
+</span><span id="L-486"><a href="#L-486"><span class="linenos"> 486</span></a>        <span class="k">else</span><span class="p">:</span>
+</span><span id="L-487"><a href="#L-487"><span class="linenos"> 487</span></a>            <span class="n">reason</span> <span class="o">=</span> <span class="s2">&quot;unknown&quot;</span>
+</span><span id="L-488"><a href="#L-488"><span class="linenos"> 488</span></a>            <span class="k">if</span> <span class="s2">&quot;request_error&quot;</span> <span class="ow">in</span> <span class="n">response</span><span class="p">:</span>
+</span><span id="L-489"><a href="#L-489"><span class="linenos"> 489</span></a>                <span class="n">reason</span> <span class="o">=</span> <span class="n">response</span><span class="p">[</span><span class="s2">&quot;request_error&quot;</span><span class="p">]</span>
+</span><span id="L-490"><a href="#L-490"><span class="linenos"> 490</span></a>            <span class="k">raise</span> <span class="n">TeaclaveException</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Failed to login user (</span><span class="si">{</span><span class="n">reason</span><span class="si">}</span><span class="s2">)&quot;</span><span class="p">)</span>
+</span><span id="L-491"><a href="#L-491"><span class="linenos"> 491</span></a>
+</span><span id="L-492"><a href="#L-492"><span class="linenos"> 492</span></a>    <span class="k">def</span> <span class="nf">user_change_password</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">user_password</span><span class="p">:</span> <span class="nb">str</span><span class="p">):</span>
+</span><span id="L-493"><a href="#L-493"><span class="linenos"> 493</span></a><span class="w">        </span><span class="sd">&quot;&quot;&quot;Change password.</span>
+</span><span id="L-494"><a href="#L-494"><span class="linenos"> 494</span></a>
+</span><span id="L-495"><a href="#L-495"><span class="linenos"> 495</span></a><span class="sd">        Args:</span>
+</span><span id="L-496"><a href="#L-496"><span class="linenos"> 496</span></a>
+</span><span id="L-497"><a href="#L-497"><span class="linenos"> 497</span></a><span class="sd">            user_password: New password.</span>
+</span><span id="L-498"><a href="#L-498"><span class="linenos"> 498</span></a><span class="sd">        &quot;&quot;&quot;</span>
+</span><span id="L-499"><a href="#L-499"><span class="linenos"> 499</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">check_channel</span><span class="p">()</span>
+</span><span id="L-500"><a href="#L-500"><span class="linenos"> 500</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">check_metadata</span><span class="p">()</span>
+</span><span id="L-501"><a href="#L-501"><span class="linenos"> 501</span></a>        <span class="n">request</span> <span class="o">=</span> <span class="n">UserChangePasswordRequest</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">metadata</span><span class="p">,</span> <span class="n">user_password</span><span class="p">)</span>
+</span><span id="L-502"><a href="#L-502"><span class="linenos"> 502</span></a>        <span class="n">_write_message</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">channel</span><span class="p">,</span> <span class="n">request</span><span class="p">)</span>
+</span><span id="L-503"><a href="#L-503"><span class="linenos"> 503</span></a>        <span class="n">response</span> <span class="o">=</span> <span class="n">_read_message</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">channel</span><span class="p">)</span>
+</span><span id="L-504"><a href="#L-504"><span class="linenos"> 504</span></a>        <span class="k">if</span> <span class="n">response</span><span class="p">[</span><span class="s2">&quot;result&quot;</span><span class="p">]</span> <span class="o">==</span> <span class="s2">&quot;ok&quot;</span><span class="p">:</span>
+</span><span id="L-505"><a href="#L-505"><span class="linenos"> 505</span></a>            <span class="k">pass</span>
+</span><span id="L-506"><a href="#L-506"><span class="linenos"> 506</span></a>        <span class="k">else</span><span class="p">:</span>
+</span><span id="L-507"><a href="#L-507"><span class="linenos"> 507</span></a>            <span class="n">reason</span> <span class="o">=</span> <span class="s2">&quot;unknown&quot;</span>
+</span><span id="L-508"><a href="#L-508"><span class="linenos"> 508</span></a>            <span class="k">if</span> <span class="s2">&quot;request_error&quot;</span> <span class="ow">in</span> <span class="n">response</span><span class="p">:</span>
+</span><span id="L-509"><a href="#L-509"><span class="linenos"> 509</span></a>                <span class="n">reason</span> <span class="o">=</span> <span class="n">response</span><span class="p">[</span><span class="s2">&quot;request_error&quot;</span><span class="p">]</span>
+</span><span id="L-510"><a href="#L-510"><span class="linenos"> 510</span></a>            <span class="k">raise</span> <span class="n">TeaclaveException</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Failed to change password (</span><span class="si">{</span><span class="n">reason</span><span class="si">}</span><span class="s2">)&quot;</span><span class="p">)</span>
+</span><span id="L-511"><a href="#L-511"><span class="linenos"> 511</span></a>
+</span><span id="L-512"><a href="#L-512"><span class="linenos"> 512</span></a>    <span class="k">def</span> <span class="nf">reset_user_password</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">user_id</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
+</span><span id="L-513"><a href="#L-513"><span class="linenos"> 513</span></a><span class="w">        </span><span class="sd">&quot;&quot;&quot;Reset password of a managed user.</span>
+</span><span id="L-514"><a href="#L-514"><span class="linenos"> 514</span></a>
+</span><span id="L-515"><a href="#L-515"><span class="linenos"> 515</span></a><span class="sd">        Args:</span>
+</span><span id="L-516"><a href="#L-516"><span class="linenos"> 516</span></a>
+</span><span id="L-517"><a href="#L-517"><span class="linenos"> 517</span></a><span class="sd">            user_id: User ID.</span>
+</span><span id="L-518"><a href="#L-518"><span class="linenos"> 518</span></a>
+</span><span id="L-519"><a href="#L-519"><span class="linenos"> 519</span></a><span class="sd">        Returns:</span>
+</span><span id="L-520"><a href="#L-520"><span class="linenos"> 520</span></a>
+</span><span id="L-521"><a href="#L-521"><span class="linenos"> 521</span></a><span class="sd">            str: New password.</span>
+</span><span id="L-522"><a href="#L-522"><span class="linenos"> 522</span></a><span class="sd">        &quot;&quot;&quot;</span>
+</span><span id="L-523"><a href="#L-523"><span class="linenos"> 523</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">check_channel</span><span class="p">()</span>
+</span><span id="L-524"><a href="#L-524"><span class="linenos"> 524</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">check_metadata</span><span class="p">()</span>
+</span><span id="L-525"><a href="#L-525"><span class="linenos"> 525</span></a>        <span class="n">request</span> <span class="o">=</span> <span class="n">ResetUserPasswordRequest</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">metadata</span><span class="p">,</span> <span class="n">user_id</span><span class="p">)</span>
+</span><span id="L-526"><a href="#L-526"><span class="linenos"> 526</span></a>        <span class="n">_write_message</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">channel</span><span class="p">,</span> <span class="n">request</span><span class="p">)</span>
+</span><span id="L-527"><a href="#L-527"><span class="linenos"> 527</span></a>        <span class="n">response</span> <span class="o">=</span> <span class="n">_read_message</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">channel</span><span class="p">)</span>
+</span><span id="L-528"><a href="#L-528"><span class="linenos"> 528</span></a>        <span class="k">if</span> <span class="n">response</span><span class="p">[</span><span class="s2">&quot;result&quot;</span><span class="p">]</span> <span class="o">==</span> <span class="s2">&quot;ok&quot;</span><span class="p">:</span>
+</span><span id="L-529"><a href="#L-529"><span class="linenos"> 529</span></a>            <span class="k">return</span> <span class="n">response</span><span class="p">[</span><span class="s2">&quot;content&quot;</span><span class="p">][</span><span class="s2">&quot;password&quot;</span><span class="p">]</span>
+</span><span id="L-530"><a href="#L-530"><span class="linenos"> 530</span></a>        <span class="k">else</span><span class="p">:</span>
+</span><span id="L-531"><a href="#L-531"><span class="linenos"> 531</span></a>            <span class="n">reason</span> <span class="o">=</span> <span class="s2">&quot;unknown&quot;</span>
+</span><span id="L-532"><a href="#L-532"><span class="linenos"> 532</span></a>            <span class="k">if</span> <span class="s2">&quot;request_error&quot;</span> <span class="ow">in</span> <span class="n">response</span><span class="p">:</span>
+</span><span id="L-533"><a href="#L-533"><span class="linenos"> 533</span></a>                <span class="n">reason</span> <span class="o">=</span> <span class="n">response</span><span class="p">[</span><span class="s2">&quot;request_error&quot;</span><span class="p">]</span>
+</span><span id="L-534"><a href="#L-534"><span class="linenos"> 534</span></a>            <span class="k">raise</span> <span class="n">TeaclaveException</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Failed to reset password (</span><span class="si">{</span><span class="n">reason</span><span class="si">}</span><span class="s2">)&quot;</span><span class="p">)</span>
+</span><span id="L-535"><a href="#L-535"><span class="linenos"> 535</span></a>
+</span><span id="L-536"><a href="#L-536"><span class="linenos"> 536</span></a>    <span class="k">def</span> <span class="nf">delete_user</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">user_id</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
+</span><span id="L-537"><a href="#L-537"><span class="linenos"> 537</span></a><span class="w">        </span><span class="sd">&quot;&quot;&quot;Delete a user.</span>
+</span><span id="L-538"><a href="#L-538"><span class="linenos"> 538</span></a>
+</span><span id="L-539"><a href="#L-539"><span class="linenos"> 539</span></a><span class="sd">        Args:</span>
+</span><span id="L-540"><a href="#L-540"><span class="linenos"> 540</span></a>
+</span><span id="L-541"><a href="#L-541"><span class="linenos"> 541</span></a><span class="sd">            user_id: User ID.</span>
+</span><span id="L-542"><a href="#L-542"><span class="linenos"> 542</span></a><span class="sd">        &quot;&quot;&quot;</span>
+</span><span id="L-543"><a href="#L-543"><span class="linenos"> 543</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">check_channel</span><span class="p">()</span>
+</span><span id="L-544"><a href="#L-544"><span class="linenos"> 544</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">check_metadata</span><span class="p">()</span>
+</span><span id="L-545"><a href="#L-545"><span class="linenos"> 545</span></a>        <span class="n">request</span> <span class="o">=</span> <span class="n">DeleteUserRequest</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">metadata</span><span class="p">,</span> <span class="n">user_id</span><span class="p">)</span>
+</span><span id="L-546"><a href="#L-546"><span class="linenos"> 546</span></a>        <span class="n">_write_message</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">channel</span><span class="p">,</span> <span class="n">request</span><span class="p">)</span>
+</span><span id="L-547"><a href="#L-547"><span class="linenos"> 547</span></a>        <span class="n">response</span> <span class="o">=</span> <span class="n">_read_message</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">channel</span><span class="p">)</span>
+</span><span id="L-548"><a href="#L-548"><span class="linenos"> 548</span></a>        <span class="k">if</span> <span class="n">response</span><span class="p">[</span><span class="s2">&quot;result&quot;</span><span class="p">]</span> <span class="o">==</span> <span class="s2">&quot;ok&quot;</span><span class="p">:</span>
+</span><span id="L-549"><a href="#L-549"><span class="linenos"> 549</span></a>            <span class="k">pass</span>
+</span><span id="L-550"><a href="#L-550"><span class="linenos"> 550</span></a>        <span class="k">else</span><span class="p">:</span>
+</span><span id="L-551"><a href="#L-551"><span class="linenos"> 551</span></a>            <span class="n">reason</span> <span class="o">=</span> <span class="s2">&quot;unknown&quot;</span>
+</span><span id="L-552"><a href="#L-552"><span class="linenos"> 552</span></a>            <span class="k">if</span> <span class="s2">&quot;request_error&quot;</span> <span class="ow">in</span> <span class="n">response</span><span class="p">:</span>
+</span><span id="L-553"><a href="#L-553"><span class="linenos"> 553</span></a>                <span class="n">reason</span> <span class="o">=</span> <span class="n">response</span><span class="p">[</span><span class="s2">&quot;request_error&quot;</span><span class="p">]</span>
+</span><span id="L-554"><a href="#L-554"><span class="linenos"> 554</span></a>            <span class="k">raise</span> <span class="n">TeaclaveException</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Failed to delete user (</span><span class="si">{</span><span class="n">reason</span><span class="si">}</span><span class="s2">)&quot;</span><span class="p">)</span>
+</span><span id="L-555"><a href="#L-555"><span class="linenos"> 555</span></a>
+</span><span id="L-556"><a href="#L-556"><span class="linenos"> 556</span></a>    <span class="k">def</span> <span class="nf">list_users</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">user_id</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
+</span><span id="L-557"><a href="#L-557"><span class="linenos"> 557</span></a><span class="w">        </span><span class="sd">&quot;&quot;&quot;List managed users</span>
+</span><span id="L-558"><a href="#L-558"><span class="linenos"> 558</span></a>
+</span><span id="L-559"><a href="#L-559"><span class="linenos"> 559</span></a><span class="sd">        Args:</span>
+</span><span id="L-560"><a href="#L-560"><span class="linenos"> 560</span></a>
+</span><span id="L-561"><a href="#L-561"><span class="linenos"> 561</span></a><span class="sd">            user_id: User ID.</span>
+</span><span id="L-562"><a href="#L-562"><span class="linenos"> 562</span></a>
+</span><span id="L-563"><a href="#L-563"><span class="linenos"> 563</span></a><span class="sd">        Returns:</span>
+</span><span id="L-564"><a href="#L-564"><span class="linenos"> 564</span></a>
+</span><span id="L-565"><a href="#L-565"><span class="linenos"> 565</span></a><span class="sd">            str: User list</span>
+</span><span id="L-566"><a href="#L-566"><span class="linenos"> 566</span></a><span class="sd">        &quot;&quot;&quot;</span>
+</span><span id="L-567"><a href="#L-567"><span class="linenos"> 567</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">check_channel</span><span class="p">()</span>
+</span><span id="L-568"><a href="#L-568"><span class="linenos"> 568</span></a>        <span class="n">request</span> <span class="o">=</span> <span class="n">ListUsersRequest</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">metadata</span><span class="p">,</span> <span class="n">user_id</span><span class="p">)</span>
+</span><span id="L-569"><a href="#L-569"><span class="linenos"> 569</span></a>        <span class="n">_write_message</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">channel</span><span class="p">,</span> <span class="n">request</span><span class="p">)</span>
+</span><span id="L-570"><a href="#L-570"><span class="linenos"> 570</span></a>        <span class="n">response</span> <span class="o">=</span> <span class="n">_read_message</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">channel</span><span class="p">)</span>
+</span><span id="L-571"><a href="#L-571"><span class="linenos"> 571</span></a>        <span class="k">if</span> <span class="n">response</span><span class="p">[</span><span class="s2">&quot;result&quot;</span><span class="p">]</span> <span class="o">==</span> <span class="s2">&quot;ok&quot;</span><span class="p">:</span>
+</span><span id="L-572"><a href="#L-572"><span class="linenos"> 572</span></a>            <span class="k">return</span> <span class="n">response</span><span class="p">[</span><span class="s2">&quot;content&quot;</span><span class="p">][</span><span class="s2">&quot;ids&quot;</span><span class="p">]</span>
+</span><span id="L-573"><a href="#L-573"><span class="linenos"> 573</span></a>        <span class="k">else</span><span class="p">:</span>
+</span><span id="L-574"><a href="#L-574"><span class="linenos"> 574</span></a>            <span class="n">reason</span> <span class="o">=</span> <span class="s2">&quot;unknown&quot;</span>
+</span><span id="L-575"><a href="#L-575"><span class="linenos"> 575</span></a>            <span class="k">if</span> <span class="s2">&quot;request_error&quot;</span> <span class="ow">in</span> <span class="n">response</span><span class="p">:</span>
+</span><span id="L-576"><a href="#L-576"><span class="linenos"> 576</span></a>                <span class="n">reason</span> <span class="o">=</span> <span class="n">response</span><span class="p">[</span><span class="s2">&quot;request_error&quot;</span><span class="p">]</span>
+</span><span id="L-577"><a href="#L-577"><span class="linenos"> 577</span></a>            <span class="k">raise</span> <span class="n">TeaclaveException</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Failed to list user (</span><span class="si">{</span><span class="n">reason</span><span class="si">}</span><span class="s2">)&quot;</span><span class="p">)</span>
+</span><span id="L-578"><a href="#L-578"><span class="linenos"> 578</span></a>
+</span><span id="L-579"><a href="#L-579"><span class="linenos"> 579</span></a>
+</span><span id="L-580"><a href="#L-580"><span class="linenos"> 580</span></a><span class="k">class</span> <span class="nc">RegisterFunctionRequest</span><span class="p">(</span><span class="n">Request</span><span class="p">):</span>
+</span><span id="L-581"><a href="#L-581"><span class="linenos"> 581</span></a>
+</span><span id="L-582"><a href="#L-582"><span class="linenos"> 582</span></a>    <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">metadata</span><span class="p">:</span> <span class="n">Metadata</span><span class="p">,</span> <span class="n">name</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">description</span><span class="p">:</span> [...]
+</span><span id="L-583"><a href="#L-583"><span class="linenos"> 583</span></a>                 <span class="n">executor_type</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">public</span><span class="p">:</span> <span class="nb">bool</span><span class="p">,</span> <span class="n">payload</span><span class="p">:</span> <span class="n">List</span><span class="p">[</span><span class="nb">int</span><span class="p">],</span>
+</span><span id="L-584"><a href="#L-584"><span class="linenos"> 584</span></a>                 <span class="n">arguments</span><span class="p">:</span> <span class="n">List</span><span class="p">[</span><span class="n">FunctionArgument</span><span class="p">],</span>
+</span><span id="L-585"><a href="#L-585"><span class="linenos"> 585</span></a>                 <span class="n">inputs</span><span class="p">:</span> <span class="n">List</span><span class="p">[</span><span class="n">FunctionInput</span><span class="p">],</span> <span class="n">outputs</span><span class="p">:</span> <span class="n">List</span><span class="p">[</span><span class="n">FunctionOutput</span><span class="p">],</span>
+</span><span id="L-586"><a href="#L-586"><span class="linenos"> 586</span></a>                 <span class="n">user_allowlist</span><span class="p">:</span> <span class="n">List</span><span class="p">[</span><span class="nb">str</span><span class="p">],</span> <span class="n">usage_quota</span><span class="p">:</span> <span class="nb">int</span><span class="p">):</span>
+</span><span id="L-587"><a href="#L-587"><span class="linenos"> 587</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">request</span> <span class="o">=</span> <span class="s2">&quot;register_function&quot;</span>
+</span><span id="L-588"><a href="#L-588"><span class="linenos"> 588</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">metadata</span> <span class="o">=</span> <span class="n">metadata</span>
+</span><span id="L-589"><a href="#L-589"><span class="linenos"> 589</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">name</span> <span class="o">=</span> <span class="n">name</span>
+</span><span id="L-590"><a href="#L-590"><span class="linenos"> 590</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">description</span> <span class="o">=</span> <span class="n">description</span>
+</span><span id="L-591"><a href="#L-591"><span class="linenos"> 591</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">executor_type</span> <span class="o">=</span> <span class="n">executor_type</span>
+</span><span id="L-592"><a href="#L-592"><span class="linenos"> 592</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">public</span> <span class="o">=</span> <span class="n">public</span>
+</span><span id="L-593"><a href="#L-593"><span class="linenos"> 593</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">payload</span> <span class="o">=</span> <span class="n">payload</span>
+</span><span id="L-594"><a href="#L-594"><span class="linenos"> 594</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">arguments</span> <span class="o">=</span> <span class="n">arguments</span>
+</span><span id="L-595"><a href="#L-595"><span class="linenos"> 595</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">inputs</span> <span class="o">=</span> <span class="n">inputs</span>
+</span><span id="L-596"><a href="#L-596"><span class="linenos"> 596</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">outputs</span> <span class="o">=</span> <span class="n">outputs</span>
+</span><span id="L-597"><a href="#L-597"><span class="linenos"> 597</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">user_allowlist</span> <span class="o">=</span> <span class="n">user_allowlist</span>
+</span><span id="L-598"><a href="#L-598"><span class="linenos"> 598</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">usage_quota</span> <span class="o">=</span> <span class="n">usage_quota</span>
+</span><span id="L-599"><a href="#L-599"><span class="linenos"> 599</span></a>
+</span><span id="L-600"><a href="#L-600"><span class="linenos"> 600</span></a>
+</span><span id="L-601"><a href="#L-601"><span class="linenos"> 601</span></a><span class="k">class</span> <span class="nc">UpdateFunctionRequest</span><span class="p">(</span><span class="n">Request</span><span class="p">):</span>
+</span><span id="L-602"><a href="#L-602"><span class="linenos"> 602</span></a>
+</span><span id="L-603"><a href="#L-603"><span class="linenos"> 603</span></a>    <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">metadata</span><span class="p">:</span> <span class="n">Metadata</span><span class="p">,</span> <span class="n">function_id</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">name</span><span class="p">:</span> [...]
+</span><span id="L-604"><a href="#L-604"><span class="linenos"> 604</span></a>                 <span class="n">description</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">executor_type</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">public</span><span class="p">:</span> <span class="nb">bool</span><span class="p">,</span>
+</span><span id="L-605"><a href="#L-605"><span class="linenos"> 605</span></a>                 <span class="n">payload</span><span class="p">:</span> <span class="n">List</span><span class="p">[</span><span class="nb">int</span><span class="p">],</span> <span class="n">arguments</span><span class="p">:</span> <span class="n">List</span><span class="p">[</span><span class="n">FunctionArgument</span><span class="p">],</span>
+</span><span id="L-606"><a href="#L-606"><span class="linenos"> 606</span></a>                 <span class="n">inputs</span><span class="p">:</span> <span class="n">List</span><span class="p">[</span><span class="n">FunctionInput</span><span class="p">],</span> <span class="n">outputs</span><span class="p">:</span> <span class="n">List</span><span class="p">[</span><span class="n">FunctionOutput</span><span class="p">],</span>
+</span><span id="L-607"><a href="#L-607"><span class="linenos"> 607</span></a>                 <span class="n">user_allowlist</span><span class="p">:</span> <span class="n">List</span><span class="p">[</span><span class="nb">str</span><span class="p">],</span> <span class="n">usage_quota</span><span class="p">:</span> <span class="nb">int</span><span class="p">):</span>
+</span><span id="L-608"><a href="#L-608"><span class="linenos"> 608</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">request</span> <span class="o">=</span> <span class="s2">&quot;update_function&quot;</span>
+</span><span id="L-609"><a href="#L-609"><span class="linenos"> 609</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">metadata</span> <span class="o">=</span> <span class="n">metadata</span>
+</span><span id="L-610"><a href="#L-610"><span class="linenos"> 610</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">function_id</span> <span class="o">=</span> <span class="n">function_id</span>
+</span><span id="L-611"><a href="#L-611"><span class="linenos"> 611</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">name</span> <span class="o">=</span> <span class="n">name</span>
+</span><span id="L-612"><a href="#L-612"><span class="linenos"> 612</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">description</span> <span class="o">=</span> <span class="n">description</span>
+</span><span id="L-613"><a href="#L-613"><span class="linenos"> 613</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">executor_type</span> <span class="o">=</span> <span class="n">executor_type</span>
+</span><span id="L-614"><a href="#L-614"><span class="linenos"> 614</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">public</span> <span class="o">=</span> <span class="n">public</span>
+</span><span id="L-615"><a href="#L-615"><span class="linenos"> 615</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">payload</span> <span class="o">=</span> <span class="n">payload</span>
+</span><span id="L-616"><a href="#L-616"><span class="linenos"> 616</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">arguments</span> <span class="o">=</span> <span class="n">arguments</span>
+</span><span id="L-617"><a href="#L-617"><span class="linenos"> 617</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">inputs</span> <span class="o">=</span> <span class="n">inputs</span>
+</span><span id="L-618"><a href="#L-618"><span class="linenos"> 618</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">outputs</span> <span class="o">=</span> <span class="n">outputs</span>
+</span><span id="L-619"><a href="#L-619"><span class="linenos"> 619</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">user_allowlist</span> <span class="o">=</span> <span class="n">user_allowlist</span>
+</span><span id="L-620"><a href="#L-620"><span class="linenos"> 620</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">usage_quota</span> <span class="o">=</span> <span class="n">usage_quota</span>
+</span><span id="L-621"><a href="#L-621"><span class="linenos"> 621</span></a>
+</span><span id="L-622"><a href="#L-622"><span class="linenos"> 622</span></a>
+</span><span id="L-623"><a href="#L-623"><span class="linenos"> 623</span></a><span class="k">class</span> <span class="nc">ListFunctionsRequest</span><span class="p">(</span><span class="n">Request</span><span class="p">):</span>
+</span><span id="L-624"><a href="#L-624"><span class="linenos"> 624</span></a>
+</span><span id="L-625"><a href="#L-625"><span class="linenos"> 625</span></a>    <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">metadata</span><span class="p">:</span> <span class="n">Metadata</span><span class="p">,</span> <span class="n">user_id</span><span class="p">:</span> <span class="nb">str</span><span class="p">):</span>
+</span><span id="L-626"><a href="#L-626"><span class="linenos"> 626</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">request</span> <span class="o">=</span> <span class="s2">&quot;list_functions&quot;</span>
+</span><span id="L-627"><a href="#L-627"><span class="linenos"> 627</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">metadata</span> <span class="o">=</span> <span class="n">metadata</span>
+</span><span id="L-628"><a href="#L-628"><span class="linenos"> 628</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">user_id</span> <span class="o">=</span> <span class="n">user_id</span>
+</span><span id="L-629"><a href="#L-629"><span class="linenos"> 629</span></a>
+</span><span id="L-630"><a href="#L-630"><span class="linenos"> 630</span></a>
+</span><span id="L-631"><a href="#L-631"><span class="linenos"> 631</span></a><span class="k">class</span> <span class="nc">DeleteFunctionRequest</span><span class="p">(</span><span class="n">Request</span><span class="p">):</span>
+</span><span id="L-632"><a href="#L-632"><span class="linenos"> 632</span></a>
+</span><span id="L-633"><a href="#L-633"><span class="linenos"> 633</span></a>    <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">metadata</span><span class="p">:</span> <span class="n">Metadata</span><span class="p">,</span> <span class="n">function_id</span><span class="p">:</span> <span class="nb">str</span><span class="p">):</span>
+</span><span id="L-634"><a href="#L-634"><span class="linenos"> 634</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">request</span> <span class="o">=</span> <span class="s2">&quot;delete_function&quot;</span>
+</span><span id="L-635"><a href="#L-635"><span class="linenos"> 635</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">metadata</span> <span class="o">=</span> <span class="n">metadata</span>
+</span><span id="L-636"><a href="#L-636"><span class="linenos"> 636</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">function_id</span> <span class="o">=</span> <span class="n">function_id</span>
+</span><span id="L-637"><a href="#L-637"><span class="linenos"> 637</span></a>
+</span><span id="L-638"><a href="#L-638"><span class="linenos"> 638</span></a>
+</span><span id="L-639"><a href="#L-639"><span class="linenos"> 639</span></a><span class="k">class</span> <span class="nc">DisableFunctionRequest</span><span class="p">(</span><span class="n">Request</span><span class="p">):</span>
+</span><span id="L-640"><a href="#L-640"><span class="linenos"> 640</span></a>
+</span><span id="L-641"><a href="#L-641"><span class="linenos"> 641</span></a>    <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">metadata</span><span class="p">:</span> <span class="n">Metadata</span><span class="p">,</span> <span class="n">function_id</span><span class="p">:</span> <span class="nb">str</span><span class="p">):</span>
+</span><span id="L-642"><a href="#L-642"><span class="linenos"> 642</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">request</span> <span class="o">=</span> <span class="s2">&quot;disable_function&quot;</span>
+</span><span id="L-643"><a href="#L-643"><span class="linenos"> 643</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">metadata</span> <span class="o">=</span> <span class="n">metadata</span>
+</span><span id="L-644"><a href="#L-644"><span class="linenos"> 644</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">function_id</span> <span class="o">=</span> <span class="n">function_id</span>
+</span><span id="L-645"><a href="#L-645"><span class="linenos"> 645</span></a>
+</span><span id="L-646"><a href="#L-646"><span class="linenos"> 646</span></a>
+</span><span id="L-647"><a href="#L-647"><span class="linenos"> 647</span></a><span class="k">class</span> <span class="nc">GetFunctionRequest</span><span class="p">(</span><span class="n">Request</span><span class="p">):</span>
+</span><span id="L-648"><a href="#L-648"><span class="linenos"> 648</span></a>
+</span><span id="L-649"><a href="#L-649"><span class="linenos"> 649</span></a>    <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">metadata</span><span class="p">:</span> <span class="n">Metadata</span><span class="p">,</span> <span class="n">function_id</span><span class="p">:</span> <span class="nb">str</span><span class="p">):</span>
+</span><span id="L-650"><a href="#L-650"><span class="linenos"> 650</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">request</span> <span class="o">=</span> <span class="s2">&quot;get_function&quot;</span>
+</span><span id="L-651"><a href="#L-651"><span class="linenos"> 651</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">metadata</span> <span class="o">=</span> <span class="n">metadata</span>
+</span><span id="L-652"><a href="#L-652"><span class="linenos"> 652</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">function_id</span> <span class="o">=</span> <span class="n">function_id</span>
+</span><span id="L-653"><a href="#L-653"><span class="linenos"> 653</span></a>
+</span><span id="L-654"><a href="#L-654"><span class="linenos"> 654</span></a>
+</span><span id="L-655"><a href="#L-655"><span class="linenos"> 655</span></a><span class="k">class</span> <span class="nc">GetFunctionUsageStatsRequest</span><span class="p">(</span><span class="n">Request</span><span class="p">):</span>
+</span><span id="L-656"><a href="#L-656"><span class="linenos"> 656</span></a>
+</span><span id="L-657"><a href="#L-657"><span class="linenos"> 657</span></a>    <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">metadata</span><span class="p">:</span> <span class="n">Metadata</span><span class="p">,</span> <span class="n">function_id</span><span class="p">:</span> <span class="nb">str</span><span class="p">):</span>
+</span><span id="L-658"><a href="#L-658"><span class="linenos"> 658</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">request</span> <span class="o">=</span> <span class="s2">&quot;get_function_usage_stats&quot;</span>
+</span><span id="L-659"><a href="#L-659"><span class="linenos"> 659</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">metadata</span> <span class="o">=</span> <span class="n">metadata</span>
+</span><span id="L-660"><a href="#L-660"><span class="linenos"> 660</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">function_id</span> <span class="o">=</span> <span class="n">function_id</span>
+</span><span id="L-661"><a href="#L-661"><span class="linenos"> 661</span></a>
+</span><span id="L-662"><a href="#L-662"><span class="linenos"> 662</span></a>
+</span><span id="L-663"><a href="#L-663"><span class="linenos"> 663</span></a><span class="k">class</span> <span class="nc">RegisterInputFileRequest</span><span class="p">(</span><span class="n">Request</span><span class="p">):</span>
+</span><span id="L-664"><a href="#L-664"><span class="linenos"> 664</span></a>
+</span><span id="L-665"><a href="#L-665"><span class="linenos"> 665</span></a>    <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">metadata</span><span class="p">:</span> <span class="n">Metadata</span><span class="p">,</span> <span class="n">url</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">cmac</span><span class="p">:</span> <span c [...]
+</span><span id="L-666"><a href="#L-666"><span class="linenos"> 666</span></a>                 <span class="n">crypto_info</span><span class="p">:</span> <span class="n">CryptoInfo</span><span class="p">):</span>
+</span><span id="L-667"><a href="#L-667"><span class="linenos"> 667</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">request</span> <span class="o">=</span> <span class="s2">&quot;register_input_file&quot;</span>
+</span><span id="L-668"><a href="#L-668"><span class="linenos"> 668</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">metadata</span> <span class="o">=</span> <span class="n">metadata</span>
+</span><span id="L-669"><a href="#L-669"><span class="linenos"> 669</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">url</span> <span class="o">=</span> <span class="n">url</span>
+</span><span id="L-670"><a href="#L-670"><span class="linenos"> 670</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">cmac</span> <span class="o">=</span> <span class="n">cmac</span>
+</span><span id="L-671"><a href="#L-671"><span class="linenos"> 671</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">crypto_info</span> <span class="o">=</span> <span class="n">crypto_info</span>
+</span><span id="L-672"><a href="#L-672"><span class="linenos"> 672</span></a>
+</span><span id="L-673"><a href="#L-673"><span class="linenos"> 673</span></a>
+</span><span id="L-674"><a href="#L-674"><span class="linenos"> 674</span></a><span class="k">class</span> <span class="nc">RegisterOutputFileRequest</span><span class="p">(</span><span class="n">Request</span><span class="p">):</span>
+</span><span id="L-675"><a href="#L-675"><span class="linenos"> 675</span></a>
+</span><span id="L-676"><a href="#L-676"><span class="linenos"> 676</span></a>    <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">metadata</span><span class="p">:</span> <span class="n">Metadata</span><span class="p">,</span> <span class="n">url</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">crypto_info</span><span class="p">:</span>  [...]
+</span><span id="L-677"><a href="#L-677"><span class="linenos"> 677</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">request</span> <span class="o">=</span> <span class="s2">&quot;register_output_file&quot;</span>
+</span><span id="L-678"><a href="#L-678"><span class="linenos"> 678</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">metadata</span> <span class="o">=</span> <span class="n">metadata</span>
+</span><span id="L-679"><a href="#L-679"><span class="linenos"> 679</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">url</span> <span class="o">=</span> <span class="n">url</span>
+</span><span id="L-680"><a href="#L-680"><span class="linenos"> 680</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">crypto_info</span> <span class="o">=</span> <span class="n">crypto_info</span>
+</span><span id="L-681"><a href="#L-681"><span class="linenos"> 681</span></a>
+</span><span id="L-682"><a href="#L-682"><span class="linenos"> 682</span></a>
+</span><span id="L-683"><a href="#L-683"><span class="linenos"> 683</span></a><span class="k">class</span> <span class="nc">UpdateInputFileRequest</span><span class="p">(</span><span class="n">Request</span><span class="p">):</span>
+</span><span id="L-684"><a href="#L-684"><span class="linenos"> 684</span></a>
+</span><span id="L-685"><a href="#L-685"><span class="linenos"> 685</span></a>    <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">metadata</span><span class="p">:</span> <span class="n">Metadata</span><span class="p">,</span> <span class="n">data_id</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">url</span><span class="p">:</span> <spa [...]
+</span><span id="L-686"><a href="#L-686"><span class="linenos"> 686</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">request</span> <span class="o">=</span> <span class="s2">&quot;update_input_file&quot;</span>
+</span><span id="L-687"><a href="#L-687"><span class="linenos"> 687</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">metadata</span> <span class="o">=</span> <span class="n">metadata</span>
+</span><span id="L-688"><a href="#L-688"><span class="linenos"> 688</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">data_id</span> <span class="o">=</span> <span class="n">data_id</span>
+</span><span id="L-689"><a href="#L-689"><span class="linenos"> 689</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">url</span> <span class="o">=</span> <span class="n">url</span>
+</span><span id="L-690"><a href="#L-690"><span class="linenos"> 690</span></a>
+</span><span id="L-691"><a href="#L-691"><span class="linenos"> 691</span></a>
+</span><span id="L-692"><a href="#L-692"><span class="linenos"> 692</span></a><span class="k">class</span> <span class="nc">UpdateOutputFileRequest</span><span class="p">(</span><span class="n">Request</span><span class="p">):</span>
+</span><span id="L-693"><a href="#L-693"><span class="linenos"> 693</span></a>
+</span><span id="L-694"><a href="#L-694"><span class="linenos"> 694</span></a>    <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">metadata</span><span class="p">:</span> <span class="n">Metadata</span><span class="p">,</span> <span class="n">data_id</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">url</span><span class="p">:</span> <spa [...]
+</span><span id="L-695"><a href="#L-695"><span class="linenos"> 695</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">request</span> <span class="o">=</span> <span class="s2">&quot;update_output_file&quot;</span>
+</span><span id="L-696"><a href="#L-696"><span class="linenos"> 696</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">metadata</span> <span class="o">=</span> <span class="n">metadata</span>
+</span><span id="L-697"><a href="#L-697"><span class="linenos"> 697</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">data_id</span> <span class="o">=</span> <span class="n">data_id</span>
+</span><span id="L-698"><a href="#L-698"><span class="linenos"> 698</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">url</span> <span class="o">=</span> <span class="n">url</span>
+</span><span id="L-699"><a href="#L-699"><span class="linenos"> 699</span></a>
+</span><span id="L-700"><a href="#L-700"><span class="linenos"> 700</span></a>
+</span><span id="L-701"><a href="#L-701"><span class="linenos"> 701</span></a><span class="k">class</span> <span class="nc">CreateTaskRequest</span><span class="p">(</span><span class="n">Request</span><span class="p">):</span>
+</span><span id="L-702"><a href="#L-702"><span class="linenos"> 702</span></a>
+</span><span id="L-703"><a href="#L-703"><span class="linenos"> 703</span></a>    <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">metadata</span><span class="p">:</span> <span class="n">Metadata</span><span class="p">,</span> <span class="n">function_id</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span>
+</span><span id="L-704"><a href="#L-704"><span class="linenos"> 704</span></a>                 <span class="n">function_arguments</span><span class="p">:</span> <span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Any</span><span class="p">],</span> <span class="n">executor</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span>
+</span><span id="L-705"><a href="#L-705"><span class="linenos"> 705</span></a>                 <span class="n">inputs_ownership</span><span class="p">:</span> <span class="n">List</span><span class="p">[</span><span class="n">OwnerList</span><span class="p">],</span>
+</span><span id="L-706"><a href="#L-706"><span class="linenos"> 706</span></a>                 <span class="n">outputs_ownership</span><span class="p">:</span> <span class="n">List</span><span class="p">[</span><span class="n">OwnerList</span><span class="p">]):</span>
+</span><span id="L-707"><a href="#L-707"><span class="linenos"> 707</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">request</span> <span class="o">=</span> <span class="s2">&quot;create_task&quot;</span>
+</span><span id="L-708"><a href="#L-708"><span class="linenos"> 708</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">metadata</span> <span class="o">=</span> <span class="n">metadata</span>
+</span><span id="L-709"><a href="#L-709"><span class="linenos"> 709</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">function_id</span> <span class="o">=</span> <span class="n">function_id</span>
+</span><span id="L-710"><a href="#L-710"><span class="linenos"> 710</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">function_arguments</span> <span class="o">=</span> <span class="n">function_arguments</span>
+</span><span id="L-711"><a href="#L-711"><span class="linenos"> 711</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">executor</span> <span class="o">=</span> <span class="n">executor</span>
+</span><span id="L-712"><a href="#L-712"><span class="linenos"> 712</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">inputs_ownership</span> <span class="o">=</span> <span class="n">inputs_ownership</span>
+</span><span id="L-713"><a href="#L-713"><span class="linenos"> 713</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">outputs_ownership</span> <span class="o">=</span> <span class="n">outputs_ownership</span>
+</span><span id="L-714"><a href="#L-714"><span class="linenos"> 714</span></a>
+</span><span id="L-715"><a href="#L-715"><span class="linenos"> 715</span></a>
+</span><span id="L-716"><a href="#L-716"><span class="linenos"> 716</span></a><span class="k">class</span> <span class="nc">AssignDataRequest</span><span class="p">(</span><span class="n">Request</span><span class="p">):</span>
+</span><span id="L-717"><a href="#L-717"><span class="linenos"> 717</span></a>
+</span><span id="L-718"><a href="#L-718"><span class="linenos"> 718</span></a>    <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">metadata</span><span class="p">:</span> <span class="n">Metadata</span><span class="p">,</span> <span class="n">task_id</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">inputs</span><span class="p">:</span> < [...]
+</span><span id="L-719"><a href="#L-719"><span class="linenos"> 719</span></a>                 <span class="n">outputs</span><span class="p">:</span> <span class="n">List</span><span class="p">[</span><span class="n">DataMap</span><span class="p">]):</span>
+</span><span id="L-720"><a href="#L-720"><span class="linenos"> 720</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">request</span> <span class="o">=</span> <span class="s2">&quot;assign_data&quot;</span>
+</span><span id="L-721"><a href="#L-721"><span class="linenos"> 721</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">metadata</span> <span class="o">=</span> <span class="n">metadata</span>
+</span><span id="L-722"><a href="#L-722"><span class="linenos"> 722</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">task_id</span> <span class="o">=</span> <span class="n">task_id</span>
+</span><span id="L-723"><a href="#L-723"><span class="linenos"> 723</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">inputs</span> <span class="o">=</span> <span class="n">inputs</span>
+</span><span id="L-724"><a href="#L-724"><span class="linenos"> 724</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">outputs</span> <span class="o">=</span> <span class="n">outputs</span>
+</span><span id="L-725"><a href="#L-725"><span class="linenos"> 725</span></a>
+</span><span id="L-726"><a href="#L-726"><span class="linenos"> 726</span></a>
+</span><span id="L-727"><a href="#L-727"><span class="linenos"> 727</span></a><span class="k">class</span> <span class="nc">ApproveTaskRequest</span><span class="p">(</span><span class="n">Request</span><span class="p">):</span>
+</span><span id="L-728"><a href="#L-728"><span class="linenos"> 728</span></a>
+</span><span id="L-729"><a href="#L-729"><span class="linenos"> 729</span></a>    <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">metadata</span><span class="p">:</span> <span class="n">Metadata</span><span class="p">,</span> <span class="n">task_id</span><span class="p">:</span> <span class="nb">str</span><span class="p">):</span>
+</span><span id="L-730"><a href="#L-730"><span class="linenos"> 730</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">request</span> <span class="o">=</span> <span class="s2">&quot;approve_task&quot;</span>
+</span><span id="L-731"><a href="#L-731"><span class="linenos"> 731</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">metadata</span> <span class="o">=</span> <span class="n">metadata</span>
+</span><span id="L-732"><a href="#L-732"><span class="linenos"> 732</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">task_id</span> <span class="o">=</span> <span class="n">task_id</span>
+</span><span id="L-733"><a href="#L-733"><span class="linenos"> 733</span></a>
+</span><span id="L-734"><a href="#L-734"><span class="linenos"> 734</span></a>
+</span><span id="L-735"><a href="#L-735"><span class="linenos"> 735</span></a><span class="k">class</span> <span class="nc">InvokeTaskRequest</span><span class="p">(</span><span class="n">Request</span><span class="p">):</span>
+</span><span id="L-736"><a href="#L-736"><span class="linenos"> 736</span></a>
+</span><span id="L-737"><a href="#L-737"><span class="linenos"> 737</span></a>    <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">metadata</span><span class="p">:</span> <span class="n">Metadata</span><span class="p">,</span> <span class="n">task_id</span><span class="p">:</span> <span class="nb">str</span><span class="p">):</span>
+</span><span id="L-738"><a href="#L-738"><span class="linenos"> 738</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">request</span> <span class="o">=</span> <span class="s2">&quot;invoke_task&quot;</span>
+</span><span id="L-739"><a href="#L-739"><span class="linenos"> 739</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">metadata</span> <span class="o">=</span> <span class="n">metadata</span>
+</span><span id="L-740"><a href="#L-740"><span class="linenos"> 740</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">task_id</span> <span class="o">=</span> <span class="n">task_id</span>
+</span><span id="L-741"><a href="#L-741"><span class="linenos"> 741</span></a>
+</span><span id="L-742"><a href="#L-742"><span class="linenos"> 742</span></a>
+</span><span id="L-743"><a href="#L-743"><span class="linenos"> 743</span></a><span class="k">class</span> <span class="nc">CancelTaskRequest</span><span class="p">(</span><span class="n">Request</span><span class="p">):</span>
+</span><span id="L-744"><a href="#L-744"><span class="linenos"> 744</span></a>
+</span><span id="L-745"><a href="#L-745"><span class="linenos"> 745</span></a>    <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">metadata</span><span class="p">:</span> <span class="n">Metadata</span><span class="p">,</span> <span class="n">task_id</span><span class="p">:</span> <span class="nb">str</span><span class="p">):</span>
+</span><span id="L-746"><a href="#L-746"><span class="linenos"> 746</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">request</span> <span class="o">=</span> <span class="s2">&quot;cancel_task&quot;</span>
+</span><span id="L-747"><a href="#L-747"><span class="linenos"> 747</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">metadata</span> <span class="o">=</span> <span class="n">metadata</span>
+</span><span id="L-748"><a href="#L-748"><span class="linenos"> 748</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">task_id</span> <span class="o">=</span> <span class="n">task_id</span>
+</span><span id="L-749"><a href="#L-749"><span class="linenos"> 749</span></a>
+</span><span id="L-750"><a href="#L-750"><span class="linenos"> 750</span></a>
+</span><span id="L-751"><a href="#L-751"><span class="linenos"> 751</span></a><span class="k">class</span> <span class="nc">GetTaskRequest</span><span class="p">(</span><span class="n">Request</span><span class="p">):</span>
+</span><span id="L-752"><a href="#L-752"><span class="linenos"> 752</span></a>
+</span><span id="L-753"><a href="#L-753"><span class="linenos"> 753</span></a>    <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">metadata</span><span class="p">:</span> <span class="n">Metadata</span><span class="p">,</span> <span class="n">task_id</span><span class="p">:</span> <span class="nb">str</span><span class="p">):</span>
+</span><span id="L-754"><a href="#L-754"><span class="linenos"> 754</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">request</span> <span class="o">=</span> <span class="s2">&quot;get_task&quot;</span>
+</span><span id="L-755"><a href="#L-755"><span class="linenos"> 755</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">metadata</span> <span class="o">=</span> <span class="n">metadata</span>
+</span><span id="L-756"><a href="#L-756"><span class="linenos"> 756</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">task_id</span> <span class="o">=</span> <span class="n">task_id</span>
+</span><span id="L-757"><a href="#L-757"><span class="linenos"> 757</span></a>
+</span><span id="L-758"><a href="#L-758"><span class="linenos"> 758</span></a>
+</span><span id="L-759"><a href="#L-759"><span class="linenos"> 759</span></a><span class="k">class</span> <span class="nc">FrontendService</span><span class="p">(</span><span class="n">TeaclaveService</span><span class="p">):</span>
+</span><span id="L-760"><a href="#L-760"><span class="linenos"> 760</span></a><span class="w">    </span><span class="sd">&quot;&quot;&quot;Establish trusted channel with the frontend service and provide</span>
+</span><span id="L-761"><a href="#L-761"><span class="linenos"> 761</span></a><span class="sd">    clients to send request through RPC.</span>
+</span><span id="L-762"><a href="#L-762"><span class="linenos"> 762</span></a>
+</span><span id="L-763"><a href="#L-763"><span class="linenos"> 763</span></a><span class="sd">    Args:</span>
+</span><span id="L-764"><a href="#L-764"><span class="linenos"> 764</span></a><span class="sd">    </span>
+</span><span id="L-765"><a href="#L-765"><span class="linenos"> 765</span></a><span class="sd">        address: The address of the remote services in tuple.</span>
+</span><span id="L-766"><a href="#L-766"><span class="linenos"> 766</span></a><span class="sd">        as_root_ca_cert_path: Root CA certification of the attestation services</span>
+</span><span id="L-767"><a href="#L-767"><span class="linenos"> 767</span></a><span class="sd">            to verify the attestation report.</span>
+</span><span id="L-768"><a href="#L-768"><span class="linenos"> 768</span></a><span class="sd">        enclave_info_path: Path of enclave info to verify the remote service in</span>
+</span><span id="L-769"><a href="#L-769"><span class="linenos"> 769</span></a><span class="sd">            the attestation report.</span>
+</span><span id="L-770"><a href="#L-770"><span class="linenos"> 770</span></a><span class="sd">    &quot;&quot;&quot;</span>
+</span><span id="L-771"><a href="#L-771"><span class="linenos"> 771</span></a>
+</span><span id="L-772"><a href="#L-772"><span class="linenos"> 772</span></a>    <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span>
+</span><span id="L-773"><a href="#L-773"><span class="linenos"> 773</span></a>                 <span class="n">address</span><span class="p">:</span> <span class="n">Tuple</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">int</span><span class="p">],</span>
+</span><span id="L-774"><a href="#L-774"><span class="linenos"> 774</span></a>                 <span class="n">as_root_ca_cert_path</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span>
+</span><span id="L-775"><a href="#L-775"><span class="linenos"> 775</span></a>                 <span class="n">enclave_info_path</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span>
+</span><span id="L-776"><a href="#L-776"><span class="linenos"> 776</span></a>                 <span class="n">dump_report</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span>
+</span><span id="L-777"><a href="#L-777"><span class="linenos"> 777</span></a>        <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span><span class="s2">&quot;frontend&quot;</span><span class="p">,</span> <span class="n">address</span><span class="p">,</span> <span class="n">as_root_ca_cert_path</span><span class="p">,</span>
+</span><span id="L-778"><a href="#L-778"><span class="linenos"> 778</span></a>                         <span class="n">enclave_info_path</span><span class="p">,</span> <span class="n">dump_report</span><span class="p">)</span>
+</span><span id="L-779"><a href="#L-779"><span class="linenos"> 779</span></a>
+</span><span id="L-780"><a href="#L-780"><span class="linenos"> 780</span></a>    <span class="k">def</span> <span class="nf">register_function</span><span class="p">(</span>
+</span><span id="L-781"><a href="#L-781"><span class="linenos"> 781</span></a>        <span class="bp">self</span><span class="p">,</span>
+</span><span id="L-782"><a href="#L-782"><span class="linenos"> 782</span></a>        <span class="n">name</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span>
+</span><span id="L-783"><a href="#L-783"><span class="linenos"> 783</span></a>        <span class="n">description</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span>
+</span><span id="L-784"><a href="#L-784"><span class="linenos"> 784</span></a>        <span class="n">executor_type</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span>
+</span><span id="L-785"><a href="#L-785"><span class="linenos"> 785</span></a>        <span class="n">public</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span>
+</span><span id="L-786"><a href="#L-786"><span class="linenos"> 786</span></a>        <span class="n">payload</span><span class="p">:</span> <span class="n">List</span><span class="p">[</span><span class="nb">int</span><span class="p">]</span> <span class="o">=</span> <span class="p">[],</span>
+</span><span id="L-787"><a href="#L-787"><span class="linenos"> 787</span></a>        <span class="n">arguments</span><span class="p">:</span> <span class="n">List</span><span class="p">[</span><span class="n">FunctionArgument</span><span class="p">]</span> <span class="o">=</span> <span class="p">[],</span>
+</span><span id="L-788"><a href="#L-788"><span class="linenos"> 788</span></a>        <span class="n">inputs</span><span class="p">:</span> <span class="n">List</span><span class="p">[</span><span class="n">FunctionInput</span><span class="p">]</span> <span class="o">=</span> <span class="p">[],</span>
+</span><span id="L-789"><a href="#L-789"><span class="linenos"> 789</span></a>        <span class="n">outputs</span><span class="p">:</span> <span class="n">List</span><span class="p">[</span><span class="n">FunctionOutput</span><span class="p">]</span> <span class="o">=</span> <span class="p">[],</span>
+</span><span id="L-790"><a href="#L-790"><span class="linenos"> 790</span></a>        <span class="n">user_allowlist</span><span class="p">:</span> <span class="n">List</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="p">[],</span>
+</span><span id="L-791"><a href="#L-791"><span class="linenos"> 791</span></a>        <span class="n">usage_quota</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="o">-</span><span class="mi">1</span><span class="p">,</span>
+</span><span id="L-792"><a href="#L-792"><span class="linenos"> 792</span></a>    <span class="p">):</span>
+</span><span id="L-793"><a href="#L-793"><span class="linenos"> 793</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">check_metadata</span><span class="p">()</span>
+</span><span id="L-794"><a href="#L-794"><span class="linenos"> 794</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">check_channel</span><span class="p">()</span>
+</span><span id="L-795"><a href="#L-795"><span class="linenos"> 795</span></a>        <span class="n">request</span> <span class="o">=</span> <span class="n">RegisterFunctionRequest</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">metadata</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">description</span><span class="p">,</span>
+</span><span id="L-796"><a href="#L-796"><span class="linenos"> 796</span></a>                                          <span class="n">executor_type</span><span class="p">,</span> <span class="n">public</span><span class="p">,</span> <span class="n">payload</span><span class="p">,</span>
+</span><span id="L-797"><a href="#L-797"><span class="linenos"> 797</span></a>                                          <span class="n">arguments</span><span class="p">,</span> <span class="n">inputs</span><span class="p">,</span> <span class="n">outputs</span><span class="p">,</span>
+</span><span id="L-798"><a href="#L-798"><span class="linenos"> 798</span></a>                                          <span class="n">user_allowlist</span><span class="p">,</span> <span class="n">usage_quota</span><span class="p">)</span>
+</span><span id="L-799"><a href="#L-799"><span class="linenos"> 799</span></a>        <span class="n">_write_message</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">channel</span><span class="p">,</span> <span class="n">request</span><span class="p">)</span>
+</span><span id="L-800"><a href="#L-800"><span class="linenos"> 800</span></a>        <span class="n">response</span> <span class="o">=</span> <span class="n">_read_message</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">channel</span><span class="p">)</span>
+</span><span id="L-801"><a href="#L-801"><span class="linenos"> 801</span></a>        <span class="k">if</span> <span class="n">response</span><span class="p">[</span><span class="s2">&quot;result&quot;</span><span class="p">]</span> <span class="o">==</span> <span class="s2">&quot;ok&quot;</span><span class="p">:</span>
+</span><span id="L-802"><a href="#L-802"><span class="linenos"> 802</span></a>            <span class="k">return</span> <span class="n">response</span><span class="p">[</span><span class="s2">&quot;content&quot;</span><span class="p">][</span><span class="s2">&quot;function_id&quot;</span><span class="p">]</span>
+</span><span id="L-803"><a href="#L-803"><span class="linenos"> 803</span></a>        <span class="k">else</span><span class="p">:</span>
+</span><span id="L-804"><a href="#L-804"><span class="linenos"> 804</span></a>            <span class="n">reason</span> <span class="o">=</span> <span class="s2">&quot;unknown&quot;</span>
+</span><span id="L-805"><a href="#L-805"><span class="linenos"> 805</span></a>            <span class="k">if</span> <span class="s2">&quot;request_error&quot;</span> <span class="ow">in</span> <span class="n">response</span><span class="p">:</span>
+</span><span id="L-806"><a href="#L-806"><span class="linenos"> 806</span></a>                <span class="n">reason</span> <span class="o">=</span> <span class="n">response</span><span class="p">[</span><span class="s2">&quot;request_error&quot;</span><span class="p">]</span>
+</span><span id="L-807"><a href="#L-807"><span class="linenos"> 807</span></a>            <span class="k">raise</span> <span class="n">TeaclaveException</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Failed to register function (</span><span class="si">{</span><span class="n">reason</span><span class="si">}</span><span class="s2">)&quot;</span><span class="p">)</span>
+</span><span id="L-808"><a href="#L-808"><span class="linenos"> 808</span></a>
+</span><span id="L-809"><a href="#L-809"><span class="linenos"> 809</span></a>    <span class="k">def</span> <span class="nf">update_function</span><span class="p">(</span>
+</span><span id="L-810"><a href="#L-810"><span class="linenos"> 810</span></a>        <span class="bp">self</span><span class="p">,</span>
+</span><span id="L-811"><a href="#L-811"><span class="linenos"> 811</span></a>        <span class="n">function_id</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span>
+</span><span id="L-812"><a href="#L-812"><span class="linenos"> 812</span></a>        <span class="n">name</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span>
+</span><span id="L-813"><a href="#L-813"><span class="linenos"> 813</span></a>        <span class="n">description</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span>
+</span><span id="L-814"><a href="#L-814"><span class="linenos"> 814</span></a>        <span class="n">executor_type</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span>
+</span><span id="L-815"><a href="#L-815"><span class="linenos"> 815</span></a>        <span class="n">public</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span>
+</span><span id="L-816"><a href="#L-816"><span class="linenos"> 816</span></a>        <span class="n">payload</span><span class="p">:</span> <span class="n">List</span><span class="p">[</span><span class="nb">int</span><span class="p">]</span> <span class="o">=</span> <span class="p">[],</span>
+</span><span id="L-817"><a href="#L-817"><span class="linenos"> 817</span></a>        <span class="n">arguments</span><span class="p">:</span> <span class="n">List</span><span class="p">[</span><span class="n">FunctionArgument</span><span class="p">]</span> <span class="o">=</span> <span class="p">[],</span>
+</span><span id="L-818"><a href="#L-818"><span class="linenos"> 818</span></a>        <span class="n">inputs</span><span class="p">:</span> <span class="n">List</span><span class="p">[</span><span class="n">FunctionInput</span><span class="p">]</span> <span class="o">=</span> <span class="p">[],</span>
+</span><span id="L-819"><a href="#L-819"><span class="linenos"> 819</span></a>        <span class="n">outputs</span><span class="p">:</span> <span class="n">List</span><span class="p">[</span><span class="n">FunctionOutput</span><span class="p">]</span> <span class="o">=</span> <span class="p">[],</span>
+</span><span id="L-820"><a href="#L-820"><span class="linenos"> 820</span></a>        <span class="n">user_allowlist</span><span class="p">:</span> <span class="n">List</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="p">[],</span>
+</span><span id="L-821"><a href="#L-821"><span class="linenos"> 821</span></a>        <span class="n">usage_quota</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="o">-</span><span class="mi">1</span><span class="p">,</span>
+</span><span id="L-822"><a href="#L-822"><span class="linenos"> 822</span></a>    <span class="p">):</span>
+</span><span id="L-823"><a href="#L-823"><span class="linenos"> 823</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">check_metadata</span><span class="p">()</span>
+</span><span id="L-824"><a href="#L-824"><span class="linenos"> 824</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">check_channel</span><span class="p">()</span>
+</span><span id="L-825"><a href="#L-825"><span class="linenos"> 825</span></a>        <span class="n">request</span> <span class="o">=</span> <span class="n">UpdateFunctionRequest</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">metadata</span><span class="p">,</span> <span class="n">function_id</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span>
+</span><span id="L-826"><a href="#L-826"><span class="linenos"> 826</span></a>                                        <span class="n">description</span><span class="p">,</span> <span class="n">executor_type</span><span class="p">,</span> <span class="n">public</span><span class="p">,</span>
+</span><span id="L-827"><a href="#L-827"><span class="linenos"> 827</span></a>                                        <span class="n">payload</span><span class="p">,</span> <span class="n">arguments</span><span class="p">,</span> <span class="n">inputs</span><span class="p">,</span> <span class="n">outputs</span><span class="p">,</span>
+</span><span id="L-828"><a href="#L-828"><span class="linenos"> 828</span></a>                                        <span class="n">user_allowlist</span><span class="p">,</span> <span class="n">usage_quota</span><span class="p">)</span>
+</span><span id="L-829"><a href="#L-829"><span class="linenos"> 829</span></a>        <span class="n">_write_message</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">channel</span><span class="p">,</span> <span class="n">request</span><span class="p">)</span>
+</span><span id="L-830"><a href="#L-830"><span class="linenos"> 830</span></a>        <span class="n">response</span> <span class="o">=</span> <span class="n">_read_message</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">channel</span><span class="p">)</span>
+</span><span id="L-831"><a href="#L-831"><span class="linenos"> 831</span></a>        <span class="k">if</span> <span class="n">response</span><span class="p">[</span><span class="s2">&quot;result&quot;</span><span class="p">]</span> <span class="o">==</span> <span class="s2">&quot;ok&quot;</span><span class="p">:</span>
+</span><span id="L-832"><a href="#L-832"><span class="linenos"> 832</span></a>            <span class="k">return</span> <span class="n">response</span><span class="p">[</span><span class="s2">&quot;content&quot;</span><span class="p">][</span><span class="s2">&quot;function_id&quot;</span><span class="p">]</span>
+</span><span id="L-833"><a href="#L-833"><span class="linenos"> 833</span></a>        <span class="k">else</span><span class="p">:</span>
+</span><span id="L-834"><a href="#L-834"><span class="linenos"> 834</span></a>            <span class="n">reason</span> <span class="o">=</span> <span class="s2">&quot;unknown&quot;</span>
+</span><span id="L-835"><a href="#L-835"><span class="linenos"> 835</span></a>            <span class="k">if</span> <span class="s2">&quot;request_error&quot;</span> <span class="ow">in</span> <span class="n">response</span><span class="p">:</span>
+</span><span id="L-836"><a href="#L-836"><span class="linenos"> 836</span></a>                <span class="n">reason</span> <span class="o">=</span> <span class="n">response</span><span class="p">[</span><span class="s2">&quot;request_error&quot;</span><span class="p">]</span>
+</span><span id="L-837"><a href="#L-837"><span class="linenos"> 837</span></a>            <span class="k">raise</span> <span class="n">TeaclaveException</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Failed to update function (</span><span class="si">{</span><span class="n">reason</span><span class="si">}</span><span class="s2">)&quot;</span><span class="p">)</span>
+</span><span id="L-838"><a href="#L-838"><span class="linenos"> 838</span></a>
+</span><span id="L-839"><a href="#L-839"><span class="linenos"> 839</span></a>    <span class="k">def</span> <span class="nf">list_functions</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">user_id</span><span class="p">:</span> <span class="nb">str</span><span class="p">):</span>
+</span><span id="L-840"><a href="#L-840"><span class="linenos"> 840</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">check_metadata</span><span class="p">()</span>
+</span><span id="L-841"><a href="#L-841"><span class="linenos"> 841</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">check_channel</span><span class="p">()</span>
+</span><span id="L-842"><a href="#L-842"><span class="linenos"> 842</span></a>        <span class="n">request</span> <span class="o">=</span> <span class="n">ListFunctionsRequest</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">metadata</span><span class="p">,</span> <span class="n">user_id</span><span class="p">)</span>
+</span><span id="L-843"><a href="#L-843"><span class="linenos"> 843</span></a>        <span class="n">_write_message</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">channel</span><span class="p">,</span> <span class="n">request</span><span class="p">)</span>
+</span><span id="L-844"><a href="#L-844"><span class="linenos"> 844</span></a>        <span class="n">response</span> <span class="o">=</span> <span class="n">_read_message</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">channel</span><span class="p">)</span>
+</span><span id="L-845"><a href="#L-845"><span class="linenos"> 845</span></a>        <span class="k">if</span> <span class="n">response</span><span class="p">[</span><span class="s2">&quot;result&quot;</span><span class="p">]</span> <span class="o">==</span> <span class="s2">&quot;ok&quot;</span><span class="p">:</span>
+</span><span id="L-846"><a href="#L-846"><span class="linenos"> 846</span></a>            <span class="k">return</span> <span class="n">response</span><span class="p">[</span><span class="s2">&quot;content&quot;</span><span class="p">]</span>
+</span><span id="L-847"><a href="#L-847"><span class="linenos"> 847</span></a>        <span class="k">else</span><span class="p">:</span>
+</span><span id="L-848"><a href="#L-848"><span class="linenos"> 848</span></a>            <span class="k">raise</span> <span class="n">TeaclaveException</span><span class="p">(</span><span class="s2">&quot;Failed to list functions&quot;</span><span class="p">)</span>
+</span><span id="L-849"><a href="#L-849"><span class="linenos"> 849</span></a>
+</span><span id="L-850"><a href="#L-850"><span class="linenos"> 850</span></a>    <span class="k">def</span> <span class="nf">get_function</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">function_id</span><span class="p">:</span> <span class="nb">str</span><span class="p">):</span>
+</span><span id="L-851"><a href="#L-851"><span class="linenos"> 851</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">check_metadata</span><span class="p">()</span>
+</span><span id="L-852"><a href="#L-852"><span class="linenos"> 852</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">check_channel</span><span class="p">()</span>
+</span><span id="L-853"><a href="#L-853"><span class="linenos"> 853</span></a>        <span class="n">request</span> <span class="o">=</span> <span class="n">GetFunctionRequest</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">metadata</span><span class="p">,</span> <span class="n">function_id</span><span class="p">)</span>
+</span><span id="L-854"><a href="#L-854"><span class="linenos"> 854</span></a>        <span class="n">_write_message</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">channel</span><span class="p">,</span> <span class="n">request</span><span class="p">)</span>
+</span><span id="L-855"><a href="#L-855"><span class="linenos"> 855</span></a>        <span class="n">response</span> <span class="o">=</span> <span class="n">_read_message</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">channel</span><span class="p">)</span>
+</span><span id="L-856"><a href="#L-856"><span class="linenos"> 856</span></a>        <span class="k">if</span> <span class="n">response</span><span class="p">[</span><span class="s2">&quot;result&quot;</span><span class="p">]</span> <span class="o">==</span> <span class="s2">&quot;ok&quot;</span><span class="p">:</span>
+</span><span id="L-857"><a href="#L-857"><span class="linenos"> 857</span></a>            <span class="k">return</span> <span class="n">response</span><span class="p">[</span><span class="s2">&quot;content&quot;</span><span class="p">]</span>
+</span><span id="L-858"><a href="#L-858"><span class="linenos"> 858</span></a>        <span class="k">else</span><span class="p">:</span>
+</span><span id="L-859"><a href="#L-859"><span class="linenos"> 859</span></a>            <span class="n">reason</span> <span class="o">=</span> <span class="s2">&quot;unknown&quot;</span>
+</span><span id="L-860"><a href="#L-860"><span class="linenos"> 860</span></a>            <span class="k">if</span> <span class="s2">&quot;request_error&quot;</span> <span class="ow">in</span> <span class="n">response</span><span class="p">:</span>
+</span><span id="L-861"><a href="#L-861"><span class="linenos"> 861</span></a>                <span class="n">reason</span> <span class="o">=</span> <span class="n">response</span><span class="p">[</span><span class="s2">&quot;request_error&quot;</span><span class="p">]</span>
+</span><span id="L-862"><a href="#L-862"><span class="linenos"> 862</span></a>            <span class="k">raise</span> <span class="n">TeaclaveException</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Failed to get function (</span><span class="si">{</span><span class="n">reason</span><span class="si">}</span><span class="s2">)&quot;</span><span class="p">)</span>
+</span><span id="L-863"><a href="#L-863"><span class="linenos"> 863</span></a>
+</span><span id="L-864"><a href="#L-864"><span class="linenos"> 864</span></a>    <span class="k">def</span> <span class="nf">get_function_usage_stats</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">user_id</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">function_id</span><span class="p">:</span> <span class="nb">str</span><span class="p">):</span>
+</span><span id="L-865"><a href="#L-865"><span class="linenos"> 865</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">check_metadata</span><span class="p">()</span>
+</span><span id="L-866"><a href="#L-866"><span class="linenos"> 866</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">check_channel</span><span class="p">()</span>
+</span><span id="L-867"><a href="#L-867"><span class="linenos"> 867</span></a>        <span class="n">request</span> <span class="o">=</span> <span class="n">GetFunctionUsageStatsRequest</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">metadata</span><span class="p">,</span> <span class="n">function_id</span><span class="p">)</span>
+</span><span id="L-868"><a href="#L-868"><span class="linenos"> 868</span></a>        <span class="n">_write_message</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">channel</span><span class="p">,</span> <span class="n">request</span><span class="p">)</span>
+</span><span id="L-869"><a href="#L-869"><span class="linenos"> 869</span></a>        <span class="n">response</span> <span class="o">=</span> <span class="n">_read_message</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">channel</span><span class="p">)</span>
+</span><span id="L-870"><a href="#L-870"><span class="linenos"> 870</span></a>        <span class="k">if</span> <span class="n">response</span><span class="p">[</span><span class="s2">&quot;result&quot;</span><span class="p">]</span> <span class="o">==</span> <span class="s2">&quot;ok&quot;</span><span class="p">:</span>
+</span><span id="L-871"><a href="#L-871"><span class="linenos"> 871</span></a>            <span class="k">return</span> <span class="n">response</span><span class="p">[</span><span class="s2">&quot;content&quot;</span><span class="p">]</span>
+</span><span id="L-872"><a href="#L-872"><span class="linenos"> 872</span></a>        <span class="k">else</span><span class="p">:</span>
+</span><span id="L-873"><a href="#L-873"><span class="linenos"> 873</span></a>            <span class="n">reason</span> <span class="o">=</span> <span class="s2">&quot;unknown&quot;</span>
+</span><span id="L-874"><a href="#L-874"><span class="linenos"> 874</span></a>            <span class="k">if</span> <span class="s2">&quot;request_error&quot;</span> <span class="ow">in</span> <span class="n">response</span><span class="p">:</span>
+</span><span id="L-875"><a href="#L-875"><span class="linenos"> 875</span></a>                <span class="n">reason</span> <span class="o">=</span> <span class="n">response</span><span class="p">[</span><span class="s2">&quot;request_error&quot;</span><span class="p">]</span>
+</span><span id="L-876"><a href="#L-876"><span class="linenos"> 876</span></a>            <span class="k">raise</span> <span class="n">TeaclaveException</span><span class="p">(</span>
+</span><span id="L-877"><a href="#L-877"><span class="linenos"> 877</span></a>                <span class="sa">f</span><span class="s2">&quot;Failed to get function usage statistics (</span><span class="si">{</span><span class="n">reason</span><span class="si">}</span><span class="s2">)&quot;</span><span class="p">)</span>
+</span><span id="L-878"><a href="#L-878"><span class="linenos"> 878</span></a>
+</span><span id="L-879"><a href="#L-879"><span class="linenos"> 879</span></a>    <span class="k">def</span> <span class="nf">delete_function</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">function_id</span><span class="p">:</span> <span class="nb">str</span><span class="p">):</span>
+</span><span id="L-880"><a href="#L-880"><span class="linenos"> 880</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">check_metadata</span><span class="p">()</span>
+</span><span id="L-881"><a href="#L-881"><span class="linenos"> 881</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">check_channel</span><span class="p">()</span>
+</span><span id="L-882"><a href="#L-882"><span class="linenos"> 882</span></a>        <span class="n">request</span> <span class="o">=</span> <span class="n">DeleteFunctionRequest</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">metadata</span><span class="p">,</span> <span class="n">function_id</span><span class="p">)</span>
+</span><span id="L-883"><a href="#L-883"><span class="linenos"> 883</span></a>        <span class="n">_write_message</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">channel</span><span class="p">,</span> <span class="n">request</span><span class="p">)</span>
+</span><span id="L-884"><a href="#L-884"><span class="linenos"> 884</span></a>        <span class="n">response</span> <span class="o">=</span> <span class="n">_read_message</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">channel</span><span class="p">)</span>
+</span><span id="L-885"><a href="#L-885"><span class="linenos"> 885</span></a>        <span class="k">if</span> <span class="n">response</span><span class="p">[</span><span class="s2">&quot;result&quot;</span><span class="p">]</span> <span class="o">==</span> <span class="s2">&quot;ok&quot;</span><span class="p">:</span>
+</span><span id="L-886"><a href="#L-886"><span class="linenos"> 886</span></a>            <span class="k">return</span> <span class="n">response</span><span class="p">[</span><span class="s2">&quot;content&quot;</span><span class="p">]</span>
+</span><span id="L-887"><a href="#L-887"><span class="linenos"> 887</span></a>        <span class="k">else</span><span class="p">:</span>
+</span><span id="L-888"><a href="#L-888"><span class="linenos"> 888</span></a>            <span class="k">raise</span> <span class="n">TeaclaveException</span><span class="p">(</span><span class="s2">&quot;Failed to delete function&quot;</span><span class="p">)</span>
+</span><span id="L-889"><a href="#L-889"><span class="linenos"> 889</span></a>
+</span><span id="L-890"><a href="#L-890"><span class="linenos"> 890</span></a>    <span class="k">def</span> <span class="nf">disable_function</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">function_id</span><span class="p">:</span> <span class="nb">str</span><span class="p">):</span>
+</span><span id="L-891"><a href="#L-891"><span class="linenos"> 891</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">check_metadata</span><span class="p">()</span>
+</span><span id="L-892"><a href="#L-892"><span class="linenos"> 892</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">check_channel</span><span class="p">()</span>
+</span><span id="L-893"><a href="#L-893"><span class="linenos"> 893</span></a>        <span class="n">request</span> <span class="o">=</span> <span class="n">DisableFunctionRequest</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">metadata</span><span class="p">,</span> <span class="n">function_id</span><span class="p">)</span>
+</span><span id="L-894"><a href="#L-894"><span class="linenos"> 894</span></a>        <span class="n">_write_message</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">channel</span><span class="p">,</span> <span class="n">request</span><span class="p">)</span>
+</span><span id="L-895"><a href="#L-895"><span class="linenos"> 895</span></a>        <span class="n">response</span> <span class="o">=</span> <span class="n">_read_message</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">channel</span><span class="p">)</span>
+</span><span id="L-896"><a href="#L-896"><span class="linenos"> 896</span></a>        <span class="k">if</span> <span class="n">response</span><span class="p">[</span><span class="s2">&quot;result&quot;</span><span class="p">]</span> <span class="o">==</span> <span class="s2">&quot;ok&quot;</span><span class="p">:</span>
+</span><span id="L-897"><a href="#L-897"><span class="linenos"> 897</span></a>            <span class="k">return</span> <span class="n">response</span><span class="p">[</span><span class="s2">&quot;content&quot;</span><span class="p">]</span>
+</span><span id="L-898"><a href="#L-898"><span class="linenos"> 898</span></a>        <span class="k">else</span><span class="p">:</span>
+</span><span id="L-899"><a href="#L-899"><span class="linenos"> 899</span></a>            <span class="k">raise</span> <span class="n">TeaclaveException</span><span class="p">(</span><span class="s2">&quot;Failed to disable function&quot;</span><span class="p">)</span>
+</span><span id="L-900"><a href="#L-900"><span class="linenos"> 900</span></a>
+</span><span id="L-901"><a href="#L-901"><span class="linenos"> 901</span></a>    <span class="k">def</span> <span class="nf">register_input_file</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">url</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">schema</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">key</span><span class="p">:</span> <sp [...]
+</span><span id="L-902"><a href="#L-902"><span class="linenos"> 902</span></a>                            <span class="n">iv</span><span class="p">:</span> <span class="n">List</span><span class="p">[</span><span class="nb">int</span><span class="p">],</span> <span class="n">cmac</span><span class="p">:</span> <span class="n">List</span><span class="p">[</span><span class="nb">int</span><span class="p">]):</span>
+</span><span id="L-903"><a href="#L-903"><span class="linenos"> 903</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">check_metadata</span><span class="p">()</span>
+</span><span id="L-904"><a href="#L-904"><span class="linenos"> 904</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">check_channel</span><span class="p">()</span>
+</span><span id="L-905"><a href="#L-905"><span class="linenos"> 905</span></a>        <span class="n">request</span> <span class="o">=</span> <span class="n">RegisterInputFileRequest</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">metadata</span><span class="p">,</span> <span class="n">url</span><span class="p">,</span> <span class="n">cmac</span><span class="p">,</span>
+</span><span id="L-906"><a href="#L-906"><span class="linenos"> 906</span></a>                                           <span class="n">CryptoInfo</span><span class="p">(</span><span class="n">schema</span><span class="p">,</span> <span class="n">key</span><span class="p">,</span> <span class="n">iv</span><span class="p">))</span>
+</span><span id="L-907"><a href="#L-907"><span class="linenos"> 907</span></a>        <span class="n">_write_message</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">channel</span><span class="p">,</span> <span class="n">request</span><span class="p">)</span>
+</span><span id="L-908"><a href="#L-908"><span class="linenos"> 908</span></a>        <span class="n">response</span> <span class="o">=</span> <span class="n">_read_message</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">channel</span><span class="p">)</span>
+</span><span id="L-909"><a href="#L-909"><span class="linenos"> 909</span></a>        <span class="k">if</span> <span class="n">response</span><span class="p">[</span><span class="s2">&quot;result&quot;</span><span class="p">]</span> <span class="o">==</span> <span class="s2">&quot;ok&quot;</span><span class="p">:</span>
+</span><span id="L-910"><a href="#L-910"><span class="linenos"> 910</span></a>            <span class="k">return</span> <span class="n">response</span><span class="p">[</span><span class="s2">&quot;content&quot;</span><span class="p">][</span><span class="s2">&quot;data_id&quot;</span><span class="p">]</span>
+</span><span id="L-911"><a href="#L-911"><span class="linenos"> 911</span></a>        <span class="k">else</span><span class="p">:</span>
+</span><span id="L-912"><a href="#L-912"><span class="linenos"> 912</span></a>            <span class="n">reason</span> <span class="o">=</span> <span class="s2">&quot;unknown&quot;</span>
+</span><span id="L-913"><a href="#L-913"><span class="linenos"> 913</span></a>            <span class="k">if</span> <span class="s2">&quot;request_error&quot;</span> <span class="ow">in</span> <span class="n">response</span><span class="p">:</span>
+</span><span id="L-914"><a href="#L-914"><span class="linenos"> 914</span></a>                <span class="n">reason</span> <span class="o">=</span> <span class="n">response</span><span class="p">[</span><span class="s2">&quot;request_error&quot;</span><span class="p">]</span>
+</span><span id="L-915"><a href="#L-915"><span class="linenos"> 915</span></a>            <span class="k">raise</span> <span class="n">TeaclaveException</span><span class="p">(</span>
+</span><span id="L-916"><a href="#L-916"><span class="linenos"> 916</span></a>                <span class="sa">f</span><span class="s2">&quot;Failed to register input file (</span><span class="si">{</span><span class="n">reason</span><span class="si">}</span><span class="s2">)&quot;</span><span class="p">)</span>
+</span><span id="L-917"><a href="#L-917"><span class="linenos"> 917</span></a>
+</span><span id="L-918"><a href="#L-918"><span class="linenos"> 918</span></a>    <span class="k">def</span> <span class="nf">register_output_file</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">url</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">schema</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">key</span><span class="p">:</span> <s [...]
+</span><span id="L-919"><a href="#L-919"><span class="linenos"> 919</span></a>                             <span class="n">iv</span><span class="p">:</span> <span class="n">List</span><span class="p">[</span><span class="nb">int</span><span class="p">]):</span>
+</span><span id="L-920"><a href="#L-920"><span class="linenos"> 920</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">check_metadata</span><span class="p">()</span>
+</span><span id="L-921"><a href="#L-921"><span class="linenos"> 921</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">check_channel</span><span class="p">()</span>
+</span><span id="L-922"><a href="#L-922"><span class="linenos"> 922</span></a>        <span class="n">request</span> <span class="o">=</span> <span class="n">RegisterOutputFileRequest</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">metadata</span><span class="p">,</span> <span class="n">url</span><span class="p">,</span>
+</span><span id="L-923"><a href="#L-923"><span class="linenos"> 923</span></a>                                            <span class="n">CryptoInfo</span><span class="p">(</span><span class="n">schema</span><span class="p">,</span> <span class="n">key</span><span class="p">,</span> <span class="n">iv</span><span class="p">))</span>
+</span><span id="L-924"><a href="#L-924"><span class="linenos"> 924</span></a>        <span class="n">_write_message</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">channel</span><span class="p">,</span> <span class="n">request</span><span class="p">)</span>
+</span><span id="L-925"><a href="#L-925"><span class="linenos"> 925</span></a>        <span class="n">response</span> <span class="o">=</span> <span class="n">_read_message</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">channel</span><span class="p">)</span>
+</span><span id="L-926"><a href="#L-926"><span class="linenos"> 926</span></a>        <span class="k">if</span> <span class="n">response</span><span class="p">[</span><span class="s2">&quot;result&quot;</span><span class="p">]</span> <span class="o">==</span> <span class="s2">&quot;ok&quot;</span><span class="p">:</span>
+</span><span id="L-927"><a href="#L-927"><span class="linenos"> 927</span></a>            <span class="k">return</span> <span class="n">response</span><span class="p">[</span><span class="s2">&quot;content&quot;</span><span class="p">][</span><span class="s2">&quot;data_id&quot;</span><span class="p">]</span>
+</span><span id="L-928"><a href="#L-928"><span class="linenos"> 928</span></a>        <span class="k">else</span><span class="p">:</span>
+</span><span id="L-929"><a href="#L-929"><span class="linenos"> 929</span></a>            <span class="n">reason</span> <span class="o">=</span> <span class="s2">&quot;unknown&quot;</span>
+</span><span id="L-930"><a href="#L-930"><span class="linenos"> 930</span></a>            <span class="k">if</span> <span class="s2">&quot;request_error&quot;</span> <span class="ow">in</span> <span class="n">response</span><span class="p">:</span>
+</span><span id="L-931"><a href="#L-931"><span class="linenos"> 931</span></a>                <span class="n">reason</span> <span class="o">=</span> <span class="n">response</span><span class="p">[</span><span class="s2">&quot;request_error&quot;</span><span class="p">]</span>
+</span><span id="L-932"><a href="#L-932"><span class="linenos"> 932</span></a>            <span class="k">raise</span> <span class="n">TeaclaveException</span><span class="p">(</span>
+</span><span id="L-933"><a href="#L-933"><span class="linenos"> 933</span></a>                <span class="sa">f</span><span class="s2">&quot;Failed to register output file (</span><span class="si">{</span><span class="n">reason</span><span class="si">}</span><span class="s2">)&quot;</span><span class="p">)</span>
+</span><span id="L-934"><a href="#L-934"><span class="linenos"> 934</span></a>
+</span><span id="L-935"><a href="#L-935"><span class="linenos"> 935</span></a>    <span class="k">def</span> <span class="nf">create_task</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span>
+</span><span id="L-936"><a href="#L-936"><span class="linenos"> 936</span></a>                    <span class="n">function_id</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span>
+</span><span id="L-937"><a href="#L-937"><span class="linenos"> 937</span></a>                    <span class="n">function_arguments</span><span class="p">:</span> <span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Any</span><span class="p">],</span>
+</span><span id="L-938"><a href="#L-938"><span class="linenos"> 938</span></a>                    <span class="n">executor</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span>
+</span><span id="L-939"><a href="#L-939"><span class="linenos"> 939</span></a>                    <span class="n">inputs_ownership</span><span class="p">:</span> <span class="n">List</span><span class="p">[</span><span class="n">OwnerList</span><span class="p">]</span> <span class="o">=</span> <span class="p">[],</span>
+</span><span id="L-940"><a href="#L-940"><span class="linenos"> 940</span></a>                    <span class="n">outputs_ownership</span><span class="p">:</span> <span class="n">List</span><span class="p">[</span><span class="n">OwnerList</span><span class="p">]</span> <span class="o">=</span> <span class="p">[]):</span>
+</span><span id="L-941"><a href="#L-941"><span class="linenos"> 941</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">check_metadata</span><span class="p">()</span>
+</span><span id="L-942"><a href="#L-942"><span class="linenos"> 942</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">check_channel</span><span class="p">()</span>
+</span><span id="L-943"><a href="#L-943"><span class="linenos"> 943</span></a>        <span class="n">function_arguments</span> <span class="o">=</span> <span class="n">json</span><span class="o">.</span><span class="n">dumps</span><span class="p">(</span><span class="n">function_arguments</span><span class="p">)</span>
+</span><span id="L-944"><a href="#L-944"><span class="linenos"> 944</span></a>        <span class="n">request</span> <span class="o">=</span> <span class="n">CreateTaskRequest</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">metadata</span><span class="p">,</span> <span class="n">function_id</span><span class="p">,</span>
+</span><span id="L-945"><a href="#L-945"><span class="linenos"> 945</span></a>                                    <span class="n">function_arguments</span><span class="p">,</span> <span class="n">executor</span><span class="p">,</span>
+</span><span id="L-946"><a href="#L-946"><span class="linenos"> 946</span></a>                                    <span class="n">inputs_ownership</span><span class="p">,</span> <span class="n">outputs_ownership</span><span class="p">)</span>
+</span><span id="L-947"><a href="#L-947"><span class="linenos"> 947</span></a>        <span class="n">_write_message</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">channel</span><span class="p">,</span> <span class="n">request</span><span class="p">)</span>
+</span><span id="L-948"><a href="#L-948"><span class="linenos"> 948</span></a>        <span class="n">response</span> <span class="o">=</span> <span class="n">_read_message</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">channel</span><span class="p">)</span>
+</span><span id="L-949"><a href="#L-949"><span class="linenos"> 949</span></a>        <span class="k">if</span> <span class="n">response</span><span class="p">[</span><span class="s2">&quot;result&quot;</span><span class="p">]</span> <span class="o">==</span> <span class="s2">&quot;ok&quot;</span><span class="p">:</span>
+</span><span id="L-950"><a href="#L-950"><span class="linenos"> 950</span></a>            <span class="k">return</span> <span class="n">response</span><span class="p">[</span><span class="s2">&quot;content&quot;</span><span class="p">][</span><span class="s2">&quot;task_id&quot;</span><span class="p">]</span>
+</span><span id="L-951"><a href="#L-951"><span class="linenos"> 951</span></a>        <span class="k">else</span><span class="p">:</span>
+</span><span id="L-952"><a href="#L-952"><span class="linenos"> 952</span></a>            <span class="n">reason</span> <span class="o">=</span> <span class="s2">&quot;unknown&quot;</span>
+</span><span id="L-953"><a href="#L-953"><span class="linenos"> 953</span></a>            <span class="k">if</span> <span class="s2">&quot;request_error&quot;</span> <span class="ow">in</span> <span class="n">response</span><span class="p">:</span>
+</span><span id="L-954"><a href="#L-954"><span class="linenos"> 954</span></a>                <span class="n">reason</span> <span class="o">=</span> <span class="n">response</span><span class="p">[</span><span class="s2">&quot;request_error&quot;</span><span class="p">]</span>
+</span><span id="L-955"><a href="#L-955"><span class="linenos"> 955</span></a>            <span class="k">raise</span> <span class="n">TeaclaveException</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Failed to create task (</span><span class="si">{</span><span class="n">reason</span><span class="si">}</span><span class="s2">)&quot;</span><span class="p">)</span>
+</span><span id="L-956"><a href="#L-956"><span class="linenos"> 956</span></a>
+</span><span id="L-957"><a href="#L-957"><span class="linenos"> 957</span></a>    <span class="k">def</span> <span class="nf">assign_data_to_task</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">task_id</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">inputs</span><span class="p">:</span> <span class="n">List</span><span class="p">[</span><span class="n">DataMap</span><span class="p">],</span>
+</span><span id="L-958"><a href="#L-958"><span class="linenos"> 958</span></a>                            <span class="n">outputs</span><span class="p">:</span> <span class="n">List</span><span class="p">[</span><span class="n">DataMap</span><span class="p">]):</span>
+</span><span id="L-959"><a href="#L-959"><span class="linenos"> 959</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">check_metadata</span><span class="p">()</span>
+</span><span id="L-960"><a href="#L-960"><span class="linenos"> 960</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">check_channel</span><span class="p">()</span>
+</span><span id="L-961"><a href="#L-961"><span class="linenos"> 961</span></a>        <span class="n">request</span> <span class="o">=</span> <span class="n">AssignDataRequest</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">metadata</span><span class="p">,</span> <span class="n">task_id</span><span class="p">,</span> <span class="n">inputs</span><span class="p">,</span> <span class="n">outputs</span><span class="p">)</span>
+</span><span id="L-962"><a href="#L-962"><span class="linenos"> 962</span></a>        <span class="n">_write_message</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">channel</span><span class="p">,</span> <span class="n">request</span><span class="p">)</span>
+</span><span id="L-963"><a href="#L-963"><span class="linenos"> 963</span></a>        <span class="n">response</span> <span class="o">=</span> <span class="n">_read_message</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">channel</span><span class="p">)</span>
+</span><span id="L-964"><a href="#L-964"><span class="linenos"> 964</span></a>        <span class="k">if</span> <span class="n">response</span><span class="p">[</span><span class="s2">&quot;result&quot;</span><span class="p">]</span> <span class="o">==</span> <span class="s2">&quot;ok&quot;</span><span class="p">:</span>
+</span><span id="L-965"><a href="#L-965"><span class="linenos"> 965</span></a>            <span class="k">pass</span>
+</span><span id="L-966"><a href="#L-966"><span class="linenos"> 966</span></a>        <span class="k">else</span><span class="p">:</span>
+</span><span id="L-967"><a href="#L-967"><span class="linenos"> 967</span></a>            <span class="n">reason</span> <span class="o">=</span> <span class="s2">&quot;unknown&quot;</span>
+</span><span id="L-968"><a href="#L-968"><span class="linenos"> 968</span></a>            <span class="k">if</span> <span class="s2">&quot;request_error&quot;</span> <span class="ow">in</span> <span class="n">response</span><span class="p">:</span>
+</span><span id="L-969"><a href="#L-969"><span class="linenos"> 969</span></a>                <span class="n">reason</span> <span class="o">=</span> <span class="n">response</span><span class="p">[</span><span class="s2">&quot;request_error&quot;</span><span class="p">]</span>
+</span><span id="L-970"><a href="#L-970"><span class="linenos"> 970</span></a>            <span class="k">raise</span> <span class="n">TeaclaveException</span><span class="p">(</span>
+</span><span id="L-971"><a href="#L-971"><span class="linenos"> 971</span></a>                <span class="sa">f</span><span class="s2">&quot;Failed to assign data to task (</span><span class="si">{</span><span class="n">reason</span><span class="si">}</span><span class="s2">)&quot;</span><span class="p">)</span>
+</span><span id="L-972"><a href="#L-972"><span class="linenos"> 972</span></a>
+</span><span id="L-973"><a href="#L-973"><span class="linenos"> 973</span></a>    <span class="k">def</span> <span class="nf">approve_task</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">task_id</span><span class="p">:</span> <span class="nb">str</span><span class="p">):</span>
+</span><span id="L-974"><a href="#L-974"><span class="linenos"> 974</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">check_metadata</span><span class="p">()</span>
+</span><span id="L-975"><a href="#L-975"><span class="linenos"> 975</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">check_channel</span><span class="p">()</span>
+</span><span id="L-976"><a href="#L-976"><span class="linenos"> 976</span></a>        <span class="n">request</span> <span class="o">=</span> <span class="n">ApproveTaskRequest</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">metadata</span><span class="p">,</span> <span class="n">task_id</span><span class="p">)</span>
+</span><span id="L-977"><a href="#L-977"><span class="linenos"> 977</span></a>        <span class="n">_write_message</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">channel</span><span class="p">,</span> <span class="n">request</span><span class="p">)</span>
+</span><span id="L-978"><a href="#L-978"><span class="linenos"> 978</span></a>        <span class="n">response</span> <span class="o">=</span> <span class="n">_read_message</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">channel</span><span class="p">)</span>
+</span><span id="L-979"><a href="#L-979"><span class="linenos"> 979</span></a>        <span class="k">if</span> <span class="n">response</span><span class="p">[</span><span class="s2">&quot;result&quot;</span><span class="p">]</span> <span class="o">==</span> <span class="s2">&quot;ok&quot;</span><span class="p">:</span>
+</span><span id="L-980"><a href="#L-980"><span class="linenos"> 980</span></a>            <span class="k">pass</span>
+</span><span id="L-981"><a href="#L-981"><span class="linenos"> 981</span></a>        <span class="k">else</span><span class="p">:</span>
+</span><span id="L-982"><a href="#L-982"><span class="linenos"> 982</span></a>            <span class="n">reason</span> <span class="o">=</span> <span class="s2">&quot;unknown&quot;</span>
+</span><span id="L-983"><a href="#L-983"><span class="linenos"> 983</span></a>            <span class="k">if</span> <span class="s2">&quot;request_error&quot;</span> <span class="ow">in</span> <span class="n">response</span><span class="p">:</span>
+</span><span id="L-984"><a href="#L-984"><span class="linenos"> 984</span></a>                <span class="n">reason</span> <span class="o">=</span> <span class="n">response</span><span class="p">[</span><span class="s2">&quot;request_error&quot;</span><span class="p">]</span>
+</span><span id="L-985"><a href="#L-985"><span class="linenos"> 985</span></a>            <span class="k">raise</span> <span class="n">TeaclaveException</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Failed to approve task (</span><span class="si">{</span><span class="n">reason</span><span class="si">}</span><span class="s2">)&quot;</span><span class="p">)</span>
+</span><span id="L-986"><a href="#L-986"><span class="linenos"> 986</span></a>
+</span><span id="L-987"><a href="#L-987"><span class="linenos"> 987</span></a>    <span class="k">def</span> <span class="nf">invoke_task</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">task_id</span><span class="p">:</span> <span class="nb">str</span><span class="p">):</span>
+</span><span id="L-988"><a href="#L-988"><span class="linenos"> 988</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">check_metadata</span><span class="p">()</span>
+</span><span id="L-989"><a href="#L-989"><span class="linenos"> 989</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">check_channel</span><span class="p">()</span>
+</span><span id="L-990"><a href="#L-990"><span class="linenos"> 990</span></a>        <span class="n">request</span> <span class="o">=</span> <span class="n">InvokeTaskRequest</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">metadata</span><span class="p">,</span> <span class="n">task_id</span><span class="p">)</span>
+</span><span id="L-991"><a href="#L-991"><span class="linenos"> 991</span></a>        <span class="n">_write_message</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">channel</span><span class="p">,</span> <span class="n">request</span><span class="p">)</span>
+</span><span id="L-992"><a href="#L-992"><span class="linenos"> 992</span></a>        <span class="n">response</span> <span class="o">=</span> <span class="n">_read_message</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">channel</span><span class="p">)</span>
+</span><span id="L-993"><a href="#L-993"><span class="linenos"> 993</span></a>        <span class="k">if</span> <span class="n">response</span><span class="p">[</span><span class="s2">&quot;result&quot;</span><span class="p">]</span> <span class="o">==</span> <span class="s2">&quot;ok&quot;</span><span class="p">:</span>
+</span><span id="L-994"><a href="#L-994"><span class="linenos"> 994</span></a>            <span class="k">pass</span>
+</span><span id="L-995"><a href="#L-995"><span class="linenos"> 995</span></a>        <span class="k">else</span><span class="p">:</span>
+</span><span id="L-996"><a href="#L-996"><span class="linenos"> 996</span></a>            <span class="n">reason</span> <span class="o">=</span> <span class="s2">&quot;unknown&quot;</span>
+</span><span id="L-997"><a href="#L-997"><span class="linenos"> 997</span></a>            <span class="k">if</span> <span class="s2">&quot;request_error&quot;</span> <span class="ow">in</span> <span class="n">response</span><span class="p">:</span>
+</span><span id="L-998"><a href="#L-998"><span class="linenos"> 998</span></a>                <span class="n">reason</span> <span class="o">=</span> <span class="n">response</span><span class="p">[</span><span class="s2">&quot;request_error&quot;</span><span class="p">]</span>
+</span><span id="L-999"><a href="#L-999"><span class="linenos"> 999</span></a>            <span class="k">raise</span> <span class="n">TeaclaveException</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Failed to invoke task (</span><span class="si">{</span><span class="n">reason</span><span class="si">}</span><span class="s2">)&quot;</span><span class="p">)</span>
+</span><span id="L-1000"><a href="#L-1000"><span class="linenos">1000</span></a>
+</span><span id="L-1001"><a href="#L-1001"><span class="linenos">1001</span></a>    <span class="k">def</span> <span class="nf">cancel_task</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">task_id</span><span class="p">:</span> <span class="nb">str</span><span class="p">):</span>
+</span><span id="L-1002"><a href="#L-1002"><span class="linenos">1002</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">check_metadata</span><span class="p">()</span>
+</span><span id="L-1003"><a href="#L-1003"><span class="linenos">1003</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">check_channel</span><span class="p">()</span>
+</span><span id="L-1004"><a href="#L-1004"><span class="linenos">1004</span></a>        <span class="n">request</span> <span class="o">=</span> <span class="n">CancelTaskRequest</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">metadata</span><span class="p">,</span> <span class="n">task_id</span><span class="p">)</span>
+</span><span id="L-1005"><a href="#L-1005"><span class="linenos">1005</span></a>        <span class="n">_write_message</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">channel</span><span class="p">,</span> <span class="n">request</span><span class="p">)</span>
+</span><span id="L-1006"><a href="#L-1006"><span class="linenos">1006</span></a>        <span class="n">response</span> <span class="o">=</span> <span class="n">_read_message</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">channel</span><span class="p">)</span>
+</span><span id="L-1007"><a href="#L-1007"><span class="linenos">1007</span></a>        <span class="k">if</span> <span class="n">response</span><span class="p">[</span><span class="s2">&quot;result&quot;</span><span class="p">]</span> <span class="o">==</span> <span class="s2">&quot;ok&quot;</span><span class="p">:</span>
+</span><span id="L-1008"><a href="#L-1008"><span class="linenos">1008</span></a>            <span class="k">pass</span>
+</span><span id="L-1009"><a href="#L-1009"><span class="linenos">1009</span></a>        <span class="k">else</span><span class="p">:</span>
+</span><span id="L-1010"><a href="#L-1010"><span class="linenos">1010</span></a>            <span class="n">reason</span> <span class="o">=</span> <span class="s2">&quot;unknown&quot;</span>
+</span><span id="L-1011"><a href="#L-1011"><span class="linenos">1011</span></a>            <span class="k">if</span> <span class="s2">&quot;request_error&quot;</span> <span class="ow">in</span> <span class="n">response</span><span class="p">:</span>
+</span><span id="L-1012"><a href="#L-1012"><span class="linenos">1012</span></a>                <span class="n">reason</span> <span class="o">=</span> <span class="n">response</span><span class="p">[</span><span class="s2">&quot;request_error&quot;</span><span class="p">]</span>
+</span><span id="L-1013"><a href="#L-1013"><span class="linenos">1013</span></a>            <span class="k">raise</span> <span class="n">TeaclaveException</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Failed to cancel task (</span><span class="si">{</span><span class="n">reason</span><span class="si">}</span><span class="s2">)&quot;</span><span class="p">)</span>
+</span><span id="L-1014"><a href="#L-1014"><span class="linenos">1014</span></a>
+</span><span id="L-1015"><a href="#L-1015"><span class="linenos">1015</span></a>    <span class="k">def</span> <span class="nf">get_task</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">task_id</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">dict</span><span class="p">:</span>
+</span><span id="L-1016"><a href="#L-1016"><span class="linenos">1016</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">check_metadata</span><span class="p">()</span>
+</span><span id="L-1017"><a href="#L-1017"><span class="linenos">1017</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">check_channel</span><span class="p">()</span>
+</span><span id="L-1018"><a href="#L-1018"><span class="linenos">1018</span></a>        <span class="n">request</span> <span class="o">=</span> <span class="n">GetTaskRequest</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">metadata</span><span class="p">,</span> <span class="n">task_id</span><span class="p">)</span>
+</span><span id="L-1019"><a href="#L-1019"><span class="linenos">1019</span></a>
+</span><span id="L-1020"><a href="#L-1020"><span class="linenos">1020</span></a>        <span class="n">_write_message</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">channel</span><span class="p">,</span> <span class="n">request</span><span class="p">)</span>
+</span><span id="L-1021"><a href="#L-1021"><span class="linenos">1021</span></a>        <span class="n">response</span> <span class="o">=</span> <span class="n">_read_message</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">channel</span><span class="p">)</span>
+</span><span id="L-1022"><a href="#L-1022"><span class="linenos">1022</span></a>        <span class="k">if</span> <span class="n">response</span><span class="p">[</span><span class="s2">&quot;result&quot;</span><span class="p">]</span> <span class="o">!=</span> <span class="s2">&quot;ok&quot;</span><span class="p">:</span>
+</span><span id="L-1023"><a href="#L-1023"><span class="linenos">1023</span></a>            <span class="n">reason</span> <span class="o">=</span> <span class="s2">&quot;unknown&quot;</span>
+</span><span id="L-1024"><a href="#L-1024"><span class="linenos">1024</span></a>            <span class="k">if</span> <span class="s2">&quot;request_error&quot;</span> <span class="ow">in</span> <span class="n">response</span><span class="p">:</span>
+</span><span id="L-1025"><a href="#L-1025"><span class="linenos">1025</span></a>                <span class="n">reason</span> <span class="o">=</span> <span class="n">response</span><span class="p">[</span><span class="s2">&quot;request_error&quot;</span><span class="p">]</span>
+</span><span id="L-1026"><a href="#L-1026"><span class="linenos">1026</span></a>            <span class="k">raise</span> <span class="n">TeaclaveException</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Failed to get task result (</span><span class="si">{</span><span class="n">reason</span><span class="si">}</span><span class="s2">)&quot;</span><span class="p">)</span>
+</span><span id="L-1027"><a href="#L-1027"><span class="linenos">1027</span></a>        <span class="k">return</span> <span class="n">response</span><span class="p">[</span><span class="s2">&quot;content&quot;</span><span class="p">]</span>
+</span><span id="L-1028"><a href="#L-1028"><span class="linenos">1028</span></a>
+</span><span id="L-1029"><a href="#L-1029"><span class="linenos">1029</span></a>    <span class="k">def</span> <span class="nf">get_task_result</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">task_id</span><span class="p">:</span> <span class="nb">str</span><span class="p">):</span>
+</span><span id="L-1030"><a href="#L-1030"><span class="linenos">1030</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">check_metadata</span><span class="p">()</span>
+</span><span id="L-1031"><a href="#L-1031"><span class="linenos">1031</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">check_channel</span><span class="p">()</span>
+</span><span id="L-1032"><a href="#L-1032"><span class="linenos">1032</span></a>        <span class="n">request</span> <span class="o">=</span> <span class="n">GetTaskRequest</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">metadata</span><span class="p">,</span> <span class="n">task_id</span><span class="p">)</span>
+</span><span id="L-1033"><a href="#L-1033"><span class="linenos">1033</span></a>
+</span><span id="L-1034"><a href="#L-1034"><span class="linenos">1034</span></a>        <span class="k">while</span> <span class="kc">True</span><span class="p">:</span>
+</span><span id="L-1035"><a href="#L-1035"><span class="linenos">1035</span></a>            <span class="n">_write_message</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">channel</span><span class="p">,</span> <span class="n">request</span><span class="p">)</span>
+</span><span id="L-1036"><a href="#L-1036"><span class="linenos">1036</span></a>            <span class="n">response</span> <span class="o">=</span> <span class="n">_read_message</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">channel</span><span class="p">)</span>
+</span><span id="L-1037"><a href="#L-1037"><span class="linenos">1037</span></a>            <span class="k">if</span> <span class="n">response</span><span class="p">[</span><span class="s2">&quot;result&quot;</span><span class="p">]</span> <span class="o">!=</span> <span class="s2">&quot;ok&quot;</span><span class="p">:</span>
+</span><span id="L-1038"><a href="#L-1038"><span class="linenos">1038</span></a>                <span class="n">reason</span> <span class="o">=</span> <span class="s2">&quot;unknown&quot;</span>
+</span><span id="L-1039"><a href="#L-1039"><span class="linenos">1039</span></a>                <span class="k">if</span> <span class="s2">&quot;request_error&quot;</span> <span class="ow">in</span> <span class="n">response</span><span class="p">:</span>
+</span><span id="L-1040"><a href="#L-1040"><span class="linenos">1040</span></a>                    <span class="n">reason</span> <span class="o">=</span> <span class="n">response</span><span class="p">[</span><span class="s2">&quot;request_error&quot;</span><span class="p">]</span>
+</span><span id="L-1041"><a href="#L-1041"><span class="linenos">1041</span></a>                <span class="k">raise</span> <span class="n">TeaclaveException</span><span class="p">(</span>
+</span><span id="L-1042"><a href="#L-1042"><span class="linenos">1042</span></a>                    <span class="sa">f</span><span class="s2">&quot;Failed to get task result (</span><span class="si">{</span><span class="n">reason</span><span class="si">}</span><span class="s2">)&quot;</span><span class="p">)</span>
+</span><span id="L-1043"><a href="#L-1043"><span class="linenos">1043</span></a>            <span class="n">time</span><span class="o">.</span><span class="n">sleep</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span>
+</span><span id="L-1044"><a href="#L-1044"><span class="linenos">1044</span></a>            <span class="k">if</span> <span class="n">response</span><span class="p">[</span><span class="s2">&quot;content&quot;</span><span class="p">][</span><span class="s2">&quot;status&quot;</span><span class="p">]</span> <span class="o">==</span> <span class="n">TaskStatus</span><span class="o">.</span><span class="n">Finished</span><span class="p">:</span>
+</span><span id="L-1045"><a href="#L-1045"><span class="linenos">1045</span></a>                <span class="k">break</span>
+</span><span id="L-1046"><a href="#L-1046"><span class="linenos">1046</span></a>            <span class="k">elif</span> <span class="n">response</span><span class="p">[</span><span class="s2">&quot;content&quot;</span><span class="p">][</span><span class="s2">&quot;status&quot;</span><span class="p">]</span> <span class="o">==</span> <span class="n">TaskStatus</span><span class="o">.</span><span class="n">Canceled</span><span class="p">:</span>
+</span><span id="L-1047"><a href="#L-1047"><span class="linenos">1047</span></a>                <span class="k">raise</span> <span class="n">TeaclaveException</span><span class="p">(</span>
+</span><span id="L-1048"><a href="#L-1048"><span class="linenos">1048</span></a>                    <span class="s2">&quot;Task Canceled, Error: &quot;</span> <span class="o">+</span>
+</span><span id="L-1049"><a href="#L-1049"><span class="linenos">1049</span></a>                    <span class="n">response</span><span class="p">[</span><span class="s2">&quot;content&quot;</span><span class="p">][</span><span class="s2">&quot;result&quot;</span><span class="p">][</span><span class="s2">&quot;result&quot;</span><span class="p">][</span><span class="s2">&quot;Err&quot;</span><span class="p">][</span><span class="s2">&quot;reason&quot;</span><span class="p">])</span>
+</span><span id="L-1050"><a href="#L-1050"><span class="linenos">1050</span></a>            <span class="k">elif</span> <span class="n">response</span><span class="p">[</span><span class="s2">&quot;content&quot;</span><span class="p">][</span><span class="s2">&quot;status&quot;</span><span class="p">]</span> <span class="o">==</span> <span class="n">TaskStatus</span><span class="o">.</span><span class="n">Failed</span><span class="p">:</span>
+</span><span id="L-1051"><a href="#L-1051"><span class="linenos">1051</span></a>                <span class="k">raise</span> <span class="n">TeaclaveException</span><span class="p">(</span>
+</span><span id="L-1052"><a href="#L-1052"><span class="linenos">1052</span></a>                    <span class="s2">&quot;Task Failed, Error: &quot;</span> <span class="o">+</span>
+</span><span id="L-1053"><a href="#L-1053"><span class="linenos">1053</span></a>                    <span class="n">response</span><span class="p">[</span><span class="s2">&quot;content&quot;</span><span class="p">][</span><span class="s2">&quot;result&quot;</span><span class="p">][</span><span class="s2">&quot;result&quot;</span><span class="p">][</span><span class="s2">&quot;Err&quot;</span><span class="p">][</span><span class="s2">&quot;reason&quot;</span><span class="p">])</span>
+</span><span id="L-1054"><a href="#L-1054"><span class="linenos">1054</span></a>
+</span><span id="L-1055"><a href="#L-1055"><span class="linenos">1055</span></a>        <span class="k">return</span> <span class="n">response</span><span class="p">[</span><span class="s2">&quot;content&quot;</span><span class="p">][</span><span class="s2">&quot;result&quot;</span><span class="p">][</span><span class="s2">&quot;result&quot;</span><span class="p">][</span><span class="s2">&quot;Ok&quot;</span><span class="p">][</span><span class="s2">&quot;return_value&quot;</span><span  [...]
+</span><span id="L-1056"><a href="#L-1056"><span class="linenos">1056</span></a>
+</span><span id="L-1057"><a href="#L-1057"><span class="linenos">1057</span></a>    <span class="k">def</span> <span class="nf">get_output_cmac_by_tag</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">task_id</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">tag</span><span class="p">:</span> <span class="nb">str</span><span class="p">):</span>
+</span><span id="L-1058"><a href="#L-1058"><span class="linenos">1058</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">check_metadata</span><span class="p">()</span>
+</span><span id="L-1059"><a href="#L-1059"><span class="linenos">1059</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">check_channel</span><span class="p">()</span>
+</span><span id="L-1060"><a href="#L-1060"><span class="linenos">1060</span></a>        <span class="n">request</span> <span class="o">=</span> <span class="n">GetTaskRequest</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">metadata</span><span class="p">,</span> <span class="n">task_id</span><span class="p">)</span>
+</span><span id="L-1061"><a href="#L-1061"><span class="linenos">1061</span></a>        <span class="k">while</span> <span class="kc">True</span><span class="p">:</span>
+</span><span id="L-1062"><a href="#L-1062"><span class="linenos">1062</span></a>            <span class="n">_write_message</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">channel</span><span class="p">,</span> <span class="n">request</span><span class="p">)</span>
+</span><span id="L-1063"><a href="#L-1063"><span class="linenos">1063</span></a>            <span class="n">response</span> <span class="o">=</span> <span class="n">_read_message</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">channel</span><span class="p">)</span>
+</span><span id="L-1064"><a href="#L-1064"><span class="linenos">1064</span></a>            <span class="k">if</span> <span class="n">response</span><span class="p">[</span><span class="s2">&quot;result&quot;</span><span class="p">]</span> <span class="o">!=</span> <span class="s2">&quot;ok&quot;</span><span class="p">:</span>
+</span><span id="L-1065"><a href="#L-1065"><span class="linenos">1065</span></a>                <span class="n">reason</span> <span class="o">=</span> <span class="s2">&quot;unknown&quot;</span>
+</span><span id="L-1066"><a href="#L-1066"><span class="linenos">1066</span></a>                <span class="k">if</span> <span class="s2">&quot;request_error&quot;</span> <span class="ow">in</span> <span class="n">response</span><span class="p">:</span>
+</span><span id="L-1067"><a href="#L-1067"><span class="linenos">1067</span></a>                    <span class="n">reason</span> <span class="o">=</span> <span class="n">response</span><span class="p">[</span><span class="s2">&quot;request_error&quot;</span><span class="p">]</span>
+</span><span id="L-1068"><a href="#L-1068"><span class="linenos">1068</span></a>                <span class="k">raise</span> <span class="n">TeaclaveException</span><span class="p">(</span>
+</span><span id="L-1069"><a href="#L-1069"><span class="linenos">1069</span></a>                    <span class="sa">f</span><span class="s2">&quot;Failed to get output cmac by tag (</span><span class="si">{</span><span class="n">reason</span><span class="si">}</span><span class="s2">)&quot;</span><span class="p">)</span>
+</span><span id="L-1070"><a href="#L-1070"><span class="linenos">1070</span></a>            <span class="n">time</span><span class="o">.</span><span class="n">sleep</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span>
+</span><span id="L-1071"><a href="#L-1071"><span class="linenos">1071</span></a>            <span class="k">if</span> <span class="n">response</span><span class="p">[</span><span class="s2">&quot;content&quot;</span><span class="p">][</span><span class="s2">&quot;status&quot;</span><span class="p">]</span> <span class="o">==</span> <span class="n">TaskStatus</span><span class="o">.</span><span class="n">Finished</span><span class="p">:</span>
+</span><span id="L-1072"><a href="#L-1072"><span class="linenos">1072</span></a>                <span class="k">break</span>
+</span><span id="L-1073"><a href="#L-1073"><span class="linenos">1073</span></a>
+</span><span id="L-1074"><a href="#L-1074"><span class="linenos">1074</span></a>        <span class="k">return</span> <span class="n">response</span><span class="p">[</span><span class="s2">&quot;content&quot;</span><span class="p">][</span><span class="s2">&quot;result&quot;</span><span class="p">][</span><span class="s2">&quot;result&quot;</span><span class="p">][</span><span class="s2">&quot;Ok&quot;</span><span class="p">][</span><span class="s2">&quot;tags_map&quot;</span><span clas [...]
+</span><span id="L-1075"><a href="#L-1075"><span class="linenos">1075</span></a>
+</span><span id="L-1076"><a href="#L-1076"><span class="linenos">1076</span></a>
+</span><span id="L-1077"><a href="#L-1077"><span class="linenos">1077</span></a><span class="k">def</span> <span class="nf">_write_message</span><span class="p">(</span><span class="n">sock</span><span class="p">:</span> <span class="n">ssl</span><span class="o">.</span><span class="n">SSLSocket</span><span class="p">,</span> <span class="n">message</span><span class="p">:</span> <span class="n">Any</span><span class="p">):</span>
+</span><span id="L-1078"><a href="#L-1078"><span class="linenos">1078</span></a>
+</span><span id="L-1079"><a href="#L-1079"><span class="linenos">1079</span></a>    <span class="k">class</span> <span class="nc">RequestEncoder</span><span class="p">(</span><span class="n">json</span><span class="o">.</span><span class="n">JSONEncoder</span><span class="p">):</span>
+</span><span id="L-1080"><a href="#L-1080"><span class="linenos">1080</span></a>
+</span><span id="L-1081"><a href="#L-1081"><span class="linenos">1081</span></a>        <span class="k">def</span> <span class="nf">default</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">o</span><span class="p">):</span>
+</span><span id="L-1082"><a href="#L-1082"><span class="linenos">1082</span></a>            <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">o</span><span class="p">,</span> <span class="n">Request</span><span class="p">):</span>
+</span><span id="L-1083"><a href="#L-1083"><span class="linenos">1083</span></a>                <span class="n">request</span> <span class="o">=</span> <span class="n">o</span><span class="o">.</span><span class="vm">__dict__</span><span class="p">[</span><span class="s2">&quot;request&quot;</span><span class="p">]</span>
+</span><span id="L-1084"><a href="#L-1084"><span class="linenos">1084</span></a>                <span class="n">j</span> <span class="o">=</span> <span class="p">{}</span>
+</span><span id="L-1085"><a href="#L-1085"><span class="linenos">1085</span></a>                <span class="n">j</span><span class="p">[</span><span class="s2">&quot;message&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="p">{}</span>
+</span><span id="L-1086"><a href="#L-1086"><span class="linenos">1086</span></a>                <span class="n">j</span><span class="p">[</span><span class="s2">&quot;message&quot;</span><span class="p">][</span><span class="n">request</span><span class="p">]</span> <span class="o">=</span> <span class="p">{}</span>
+</span><span id="L-1087"><a href="#L-1087"><span class="linenos">1087</span></a>                <span class="k">for</span> <span class="n">k</span><span class="p">,</span> <span class="n">v</span> <span class="ow">in</span> <span class="n">o</span><span class="o">.</span><span class="vm">__dict__</span><span class="o">.</span><span class="n">items</span><span class="p">():</span>
+</span><span id="L-1088"><a href="#L-1088"><span class="linenos">1088</span></a>                    <span class="k">if</span> <span class="n">k</span> <span class="o">==</span> <span class="s2">&quot;metadata&quot;</span><span class="p">:</span> <span class="n">j</span><span class="p">[</span><span class="n">k</span><span class="p">]</span> <span class="o">=</span> <span class="n">v</span>
+</span><span id="L-1089"><a href="#L-1089"><span class="linenos">1089</span></a>                    <span class="k">elif</span> <span class="n">k</span> <span class="o">==</span> <span class="s2">&quot;request&quot;</span><span class="p">:</span> <span class="k">continue</span>
+</span><span id="L-1090"><a href="#L-1090"><span class="linenos">1090</span></a>                    <span class="k">else</span><span class="p">:</span> <span class="n">j</span><span class="p">[</span><span class="s2">&quot;message&quot;</span><span class="p">][</span><span class="n">request</span><span class="p">][</span><span class="n">k</span><span class="p">]</span> <span class="o">=</span> <span class="n">v</span>
+</span><span id="L-1091"><a href="#L-1091"><span class="linenos">1091</span></a>                <span class="k">return</span> <span class="n">j</span>
+</span><span id="L-1092"><a href="#L-1092"><span class="linenos">1092</span></a>            <span class="k">else</span><span class="p">:</span>
+</span><span id="L-1093"><a href="#L-1093"><span class="linenos">1093</span></a>                <span class="k">return</span> <span class="n">o</span><span class="o">.</span><span class="vm">__dict__</span>
+</span><span id="L-1094"><a href="#L-1094"><span class="linenos">1094</span></a>
+</span><span id="L-1095"><a href="#L-1095"><span class="linenos">1095</span></a>    <span class="n">message</span> <span class="o">=</span> <span class="n">json</span><span class="o">.</span><span class="n">dumps</span><span class="p">(</span><span class="n">message</span><span class="p">,</span> <span class="bp">cls</span><span class="o">=</span><span class="n">RequestEncoder</span><span class="p">,</span>
+</span><span id="L-1096"><a href="#L-1096"><span class="linenos">1096</span></a>                         <span class="n">separators</span><span class="o">=</span><span class="p">(</span><span class="s1">&#39;,&#39;</span><span class="p">,</span> <span class="s1">&#39;:&#39;</span><span class="p">))</span><span class="o">.</span><span class="n">encode</span><span class="p">()</span>
+</span><span id="L-1097"><a href="#L-1097"><span class="linenos">1097</span></a>    <span class="n">sock</span><span class="o">.</span><span class="n">sendall</span><span class="p">(</span><span class="n">struct</span><span class="o">.</span><span class="n">pack</span><span class="p">(</span><span class="s2">&quot;&gt;Q&quot;</span><span class="p">,</span> <span class="nb">len</span><span class="p">(</span><span class="n">message</span><span class="p">)))</span>
+</span><span id="L-1098"><a href="#L-1098"><span class="linenos">1098</span></a>    <span class="n">sock</span><span class="o">.</span><span class="n">sendall</span><span class="p">(</span><span class="n">message</span><span class="p">)</span>
+</span><span id="L-1099"><a href="#L-1099"><span class="linenos">1099</span></a>
+</span><span id="L-1100"><a href="#L-1100"><span class="linenos">1100</span></a>
+</span><span id="L-1101"><a href="#L-1101"><span class="linenos">1101</span></a><span class="k">def</span> <span class="nf">_read_message</span><span class="p">(</span><span class="n">sock</span><span class="p">:</span> <span class="n">ssl</span><span class="o">.</span><span class="n">SSLSocket</span><span class="p">):</span>
+</span><span id="L-1102"><a href="#L-1102"><span class="linenos">1102</span></a>    <span class="n">response_len</span> <span class="o">=</span> <span class="n">struct</span><span class="o">.</span><span class="n">unpack</span><span class="p">(</span><span class="s2">&quot;&gt;Q&quot;</span><span class="p">,</span> <span class="n">sock</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="mi">8</span><span class="p">))</span>
+</span><span id="L-1103"><a href="#L-1103"><span class="linenos">1103</span></a>    <span class="n">raw</span> <span class="o">=</span> <span class="nb">bytearray</span><span class="p">()</span>
+</span><span id="L-1104"><a href="#L-1104"><span class="linenos">1104</span></a>    <span class="n">total_recv</span> <span class="o">=</span> <span class="mi">0</span>
+</span><span id="L-1105"><a href="#L-1105"><span class="linenos">1105</span></a>    <span class="k">while</span> <span class="n">total_recv</span> <span class="o">&lt;</span> <span class="n">response_len</span><span class="p">[</span><span class="mi">0</span><span class="p">]:</span>
+</span><span id="L-1106"><a href="#L-1106"><span class="linenos">1106</span></a>        <span class="n">data</span> <span class="o">=</span> <span class="n">sock</span><span class="o">.</span><span class="n">recv</span><span class="p">()</span>
+</span><span id="L-1107"><a href="#L-1107"><span class="linenos">1107</span></a>        <span class="n">total_recv</span> <span class="o">+=</span> <span class="nb">len</span><span class="p">(</span><span class="n">data</span><span class="p">)</span>
+</span><span id="L-1108"><a href="#L-1108"><span class="linenos">1108</span></a>        <span class="n">raw</span> <span class="o">+=</span> <span class="n">data</span>
+</span><span id="L-1109"><a href="#L-1109"><span class="linenos">1109</span></a>    <span class="n">response</span> <span class="o">=</span> <span class="n">json</span><span class="o">.</span><span class="n">loads</span><span class="p">(</span><span class="n">raw</span><span class="p">)</span>
+</span><span id="L-1110"><a href="#L-1110"><span class="linenos">1110</span></a>    <span class="k">return</span> <span class="n">response</span>
+</span></pre></div>
+
+
+            </section>
+                <section id="FrontendService">
+                            <input id="FrontendService-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
+<div class="attr class">
+            
+    <span class="def">class</span>
+    <span class="name">FrontendService</span><wbr>(<span class="base"><a href="#TeaclaveService">TeaclaveService</a></span>):
+
+                <label class="view-source-button" for="FrontendService-view-source"><span>View Source</span></label>
+
+    </div>
+    <a class="headerlink" href="#FrontendService"></a>
+            <div class="pdoc-code codehilite"><pre><span></span><span id="FrontendService-760"><a href="#FrontendService-760"><span class="linenos"> 760</span></a><span class="k">class</span> <span class="nc">FrontendService</span><span class="p">(</span><span class="n">TeaclaveService</span><span class="p">):</span>
+</span><span id="FrontendService-761"><a href="#FrontendService-761"><span class="linenos"> 761</span></a><span class="w">    </span><span class="sd">&quot;&quot;&quot;Establish trusted channel with the frontend service and provide</span>
+</span><span id="FrontendService-762"><a href="#FrontendService-762"><span class="linenos"> 762</span></a><span class="sd">    clients to send request through RPC.</span>
+</span><span id="FrontendService-763"><a href="#FrontendService-763"><span class="linenos"> 763</span></a>
+</span><span id="FrontendService-764"><a href="#FrontendService-764"><span class="linenos"> 764</span></a><span class="sd">    Args:</span>
+</span><span id="FrontendService-765"><a href="#FrontendService-765"><span class="linenos"> 765</span></a><span class="sd">    </span>
+</span><span id="FrontendService-766"><a href="#FrontendService-766"><span class="linenos"> 766</span></a><span class="sd">        address: The address of the remote services in tuple.</span>
+</span><span id="FrontendService-767"><a href="#FrontendService-767"><span class="linenos"> 767</span></a><span class="sd">        as_root_ca_cert_path: Root CA certification of the attestation services</span>
+</span><span id="FrontendService-768"><a href="#FrontendService-768"><span class="linenos"> 768</span></a><span class="sd">            to verify the attestation report.</span>
+</span><span id="FrontendService-769"><a href="#FrontendService-769"><span class="linenos"> 769</span></a><span class="sd">        enclave_info_path: Path of enclave info to verify the remote service in</span>
+</span><span id="FrontendService-770"><a href="#FrontendService-770"><span class="linenos"> 770</span></a><span class="sd">            the attestation report.</span>
+</span><span id="FrontendService-771"><a href="#FrontendService-771"><span class="linenos"> 771</span></a><span class="sd">    &quot;&quot;&quot;</span>
+</span><span id="FrontendService-772"><a href="#FrontendService-772"><span class="linenos"> 772</span></a>
+</span><span id="FrontendService-773"><a href="#FrontendService-773"><span class="linenos"> 773</span></a>    <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span>
+</span><span id="FrontendService-774"><a href="#FrontendService-774"><span class="linenos"> 774</span></a>                 <span class="n">address</span><span class="p">:</span> <span class="n">Tuple</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">int</span><span class="p">],</span>
+</span><span id="FrontendService-775"><a href="#FrontendService-775"><span class="linenos"> 775</span></a>                 <span class="n">as_root_ca_cert_path</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span>
+</span><span id="FrontendService-776"><a href="#FrontendService-776"><span class="linenos"> 776</span></a>                 <span class="n">enclave_info_path</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span>
+</span><span id="FrontendService-777"><a href="#FrontendService-777"><span class="linenos"> 777</span></a>                 <span class="n">dump_report</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span>
+</span><span id="FrontendService-778"><a href="#FrontendService-778"><span class="linenos"> 778</span></a>        <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span><span class="s2">&quot;frontend&quot;</span><span class="p">,</span> <span class="n">address</span><span class="p">,</span> <span class="n">as_root_ca_cert_path</span><span class="p">,</span>
+</span><span id="FrontendService-779"><a href="#FrontendService-779"><span class="linenos"> 779</span></a>                         <span class="n">enclave_info_path</span><span class="p">,</span> <span class="n">dump_report</span><span class="p">)</span>
+</span><span id="FrontendService-780"><a href="#FrontendService-780"><span class="linenos"> 780</span></a>
+</span><span id="FrontendService-781"><a href="#FrontendService-781"><span class="linenos"> 781</span></a>    <span class="k">def</span> <span class="nf">register_function</span><span class="p">(</span>
+</span><span id="FrontendService-782"><a href="#FrontendService-782"><span class="linenos"> 782</span></a>        <span class="bp">self</span><span class="p">,</span>
+</span><span id="FrontendService-783"><a href="#FrontendService-783"><span class="linenos"> 783</span></a>        <span class="n">name</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span>
+</span><span id="FrontendService-784"><a href="#FrontendService-784"><span class="linenos"> 784</span></a>        <span class="n">description</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span>
+</span><span id="FrontendService-785"><a href="#FrontendService-785"><span class="linenos"> 785</span></a>        <span class="n">executor_type</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span>
+</span><span id="FrontendService-786"><a href="#FrontendService-786"><span class="linenos"> 786</span></a>        <span class="n">public</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span>
+</span><span id="FrontendService-787"><a href="#FrontendService-787"><span class="linenos"> 787</span></a>        <span class="n">payload</span><span class="p">:</span> <span class="n">List</span><span class="p">[</span><span class="nb">int</span><span class="p">]</span> <span class="o">=</span> <span class="p">[],</span>
+</span><span id="FrontendService-788"><a href="#FrontendService-788"><span class="linenos"> 788</span></a>        <span class="n">arguments</span><span class="p">:</span> <span class="n">List</span><span class="p">[</span><span class="n">FunctionArgument</span><span class="p">]</span> <span class="o">=</span> <span class="p">[],</span>
+</span><span id="FrontendService-789"><a href="#FrontendService-789"><span class="linenos"> 789</span></a>        <span class="n">inputs</span><span class="p">:</span> <span class="n">List</span><span class="p">[</span><span class="n">FunctionInput</span><span class="p">]</span> <span class="o">=</span> <span class="p">[],</span>
+</span><span id="FrontendService-790"><a href="#FrontendService-790"><span class="linenos"> 790</span></a>        <span class="n">outputs</span><span class="p">:</span> <span class="n">List</span><span class="p">[</span><span class="n">FunctionOutput</span><span class="p">]</span> <span class="o">=</span> <span class="p">[],</span>
+</span><span id="FrontendService-791"><a href="#FrontendService-791"><span class="linenos"> 791</span></a>        <span class="n">user_allowlist</span><span class="p">:</span> <span class="n">List</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="p">[],</span>
+</span><span id="FrontendService-792"><a href="#FrontendService-792"><span class="linenos"> 792</span></a>        <span class="n">usage_quota</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="o">-</span><span class="mi">1</span><span class="p">,</span>
+</span><span id="FrontendService-793"><a href="#FrontendService-793"><span class="linenos"> 793</span></a>    <span class="p">):</span>
+</span><span id="FrontendService-794"><a href="#FrontendService-794"><span class="linenos"> 794</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">check_metadata</span><span class="p">()</span>
+</span><span id="FrontendService-795"><a href="#FrontendService-795"><span class="linenos"> 795</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">check_channel</span><span class="p">()</span>
+</span><span id="FrontendService-796"><a href="#FrontendService-796"><span class="linenos"> 796</span></a>        <span class="n">request</span> <span class="o">=</span> <span class="n">RegisterFunctionRequest</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">metadata</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">description</span><span class="p">,</span>
+</span><span id="FrontendService-797"><a href="#FrontendService-797"><span class="linenos"> 797</span></a>                                          <span class="n">executor_type</span><span class="p">,</span> <span class="n">public</span><span class="p">,</span> <span class="n">payload</span><span class="p">,</span>
+</span><span id="FrontendService-798"><a href="#FrontendService-798"><span class="linenos"> 798</span></a>                                          <span class="n">arguments</span><span class="p">,</span> <span class="n">inputs</span><span class="p">,</span> <span class="n">outputs</span><span class="p">,</span>
+</span><span id="FrontendService-799"><a href="#FrontendService-799"><span class="linenos"> 799</span></a>                                          <span class="n">user_allowlist</span><span class="p">,</span> <span class="n">usage_quota</span><span class="p">)</span>
+</span><span id="FrontendService-800"><a href="#FrontendService-800"><span class="linenos"> 800</span></a>        <span class="n">_write_message</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">channel</span><span class="p">,</span> <span class="n">request</span><span class="p">)</span>
+</span><span id="FrontendService-801"><a href="#FrontendService-801"><span class="linenos"> 801</span></a>        <span class="n">response</span> <span class="o">=</span> <span class="n">_read_message</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">channel</span><span class="p">)</span>
+</span><span id="FrontendService-802"><a href="#FrontendService-802"><span class="linenos"> 802</span></a>        <span class="k">if</span> <span class="n">response</span><span class="p">[</span><span class="s2">&quot;result&quot;</span><span class="p">]</span> <span class="o">==</span> <span class="s2">&quot;ok&quot;</span><span class="p">:</span>
+</span><span id="FrontendService-803"><a href="#FrontendService-803"><span class="linenos"> 803</span></a>            <span class="k">return</span> <span class="n">response</span><span class="p">[</span><span class="s2">&quot;content&quot;</span><span class="p">][</span><span class="s2">&quot;function_id&quot;</span><span class="p">]</span>
+</span><span id="FrontendService-804"><a href="#FrontendService-804"><span class="linenos"> 804</span></a>        <span class="k">else</span><span class="p">:</span>
+</span><span id="FrontendService-805"><a href="#FrontendService-805"><span class="linenos"> 805</span></a>            <span class="n">reason</span> <span class="o">=</span> <span class="s2">&quot;unknown&quot;</span>
+</span><span id="FrontendService-806"><a href="#FrontendService-806"><span class="linenos"> 806</span></a>            <span class="k">if</span> <span class="s2">&quot;request_error&quot;</span> <span class="ow">in</span> <span class="n">response</span><span class="p">:</span>
+</span><span id="FrontendService-807"><a href="#FrontendService-807"><span class="linenos"> 807</span></a>                <span class="n">reason</span> <span class="o">=</span> <span class="n">response</span><span class="p">[</span><span class="s2">&quot;request_error&quot;</span><span class="p">]</span>
+</span><span id="FrontendService-808"><a href="#FrontendService-808"><span class="linenos"> 808</span></a>            <span class="k">raise</span> <span class="n">TeaclaveException</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Failed to register function (</span><span class="si">{</span><span class="n">reason</span><span class="si">}</span><span class="s2">)&quot;</span><span class="p">)</span>
+</span><span id="FrontendService-809"><a href="#FrontendService-809"><span class="linenos"> 809</span></a>
+</span><span id="FrontendService-810"><a href="#FrontendService-810"><span class="linenos"> 810</span></a>    <span class="k">def</span> <span class="nf">update_function</span><span class="p">(</span>
+</span><span id="FrontendService-811"><a href="#FrontendService-811"><span class="linenos"> 811</span></a>        <span class="bp">self</span><span class="p">,</span>
+</span><span id="FrontendService-812"><a href="#FrontendService-812"><span class="linenos"> 812</span></a>        <span class="n">function_id</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span>
+</span><span id="FrontendService-813"><a href="#FrontendService-813"><span class="linenos"> 813</span></a>        <span class="n">name</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span>
+</span><span id="FrontendService-814"><a href="#FrontendService-814"><span class="linenos"> 814</span></a>        <span class="n">description</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span>
+</span><span id="FrontendService-815"><a href="#FrontendService-815"><span class="linenos"> 815</span></a>        <span class="n">executor_type</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span>
+</span><span id="FrontendService-816"><a href="#FrontendService-816"><span class="linenos"> 816</span></a>        <span class="n">public</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span>
+</span><span id="FrontendService-817"><a href="#FrontendService-817"><span class="linenos"> 817</span></a>        <span class="n">payload</span><span class="p">:</span> <span class="n">List</span><span class="p">[</span><span class="nb">int</span><span class="p">]</span> <span class="o">=</span> <span class="p">[],</span>
+</span><span id="FrontendService-818"><a href="#FrontendService-818"><span class="linenos"> 818</span></a>        <span class="n">arguments</span><span class="p">:</span> <span class="n">List</span><span class="p">[</span><span class="n">FunctionArgument</span><span class="p">]</span> <span class="o">=</span> <span class="p">[],</span>
+</span><span id="FrontendService-819"><a href="#FrontendService-819"><span class="linenos"> 819</span></a>        <span class="n">inputs</span><span class="p">:</span> <span class="n">List</span><span class="p">[</span><span class="n">FunctionInput</span><span class="p">]</span> <span class="o">=</span> <span class="p">[],</span>
+</span><span id="FrontendService-820"><a href="#FrontendService-820"><span class="linenos"> 820</span></a>        <span class="n">outputs</span><span class="p">:</span> <span class="n">List</span><span class="p">[</span><span class="n">FunctionOutput</span><span class="p">]</span> <span class="o">=</span> <span class="p">[],</span>
+</span><span id="FrontendService-821"><a href="#FrontendService-821"><span class="linenos"> 821</span></a>        <span class="n">user_allowlist</span><span class="p">:</span> <span class="n">List</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="p">[],</span>
+</span><span id="FrontendService-822"><a href="#FrontendService-822"><span class="linenos"> 822</span></a>        <span class="n">usage_quota</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="o">-</span><span class="mi">1</span><span class="p">,</span>
+</span><span id="FrontendService-823"><a href="#FrontendService-823"><span class="linenos"> 823</span></a>    <span class="p">):</span>
+</span><span id="FrontendService-824"><a href="#FrontendService-824"><span class="linenos"> 824</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">check_metadata</span><span class="p">()</span>
+</span><span id="FrontendService-825"><a href="#FrontendService-825"><span class="linenos"> 825</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">check_channel</span><span class="p">()</span>
+</span><span id="FrontendService-826"><a href="#FrontendService-826"><span class="linenos"> 826</span></a>        <span class="n">request</span> <span class="o">=</span> <span class="n">UpdateFunctionRequest</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">metadata</span><span class="p">,</span> <span class="n">function_id</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span>
+</span><span id="FrontendService-827"><a href="#FrontendService-827"><span class="linenos"> 827</span></a>                                        <span class="n">description</span><span class="p">,</span> <span class="n">executor_type</span><span class="p">,</span> <span class="n">public</span><span class="p">,</span>
+</span><span id="FrontendService-828"><a href="#FrontendService-828"><span class="linenos"> 828</span></a>                                        <span class="n">payload</span><span class="p">,</span> <span class="n">arguments</span><span class="p">,</span> <span class="n">inputs</span><span class="p">,</span> <span class="n">outputs</span><span class="p">,</span>
+</span><span id="FrontendService-829"><a href="#FrontendService-829"><span class="linenos"> 829</span></a>                                        <span class="n">user_allowlist</span><span class="p">,</span> <span class="n">usage_quota</span><span class="p">)</span>
+</span><span id="FrontendService-830"><a href="#FrontendService-830"><span class="linenos"> 830</span></a>        <span class="n">_write_message</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">channel</span><span class="p">,</span> <span class="n">request</span><span class="p">)</span>
+</span><span id="FrontendService-831"><a href="#FrontendService-831"><span class="linenos"> 831</span></a>        <span class="n">response</span> <span class="o">=</span> <span class="n">_read_message</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">channel</span><span class="p">)</span>
+</span><span id="FrontendService-832"><a href="#FrontendService-832"><span class="linenos"> 832</span></a>        <span class="k">if</span> <span class="n">response</span><span class="p">[</span><span class="s2">&quot;result&quot;</span><span class="p">]</span> <span class="o">==</span> <span class="s2">&quot;ok&quot;</span><span class="p">:</span>
+</span><span id="FrontendService-833"><a href="#FrontendService-833"><span class="linenos"> 833</span></a>            <span class="k">return</span> <span class="n">response</span><span class="p">[</span><span class="s2">&quot;content&quot;</span><span class="p">][</span><span class="s2">&quot;function_id&quot;</span><span class="p">]</span>
+</span><span id="FrontendService-834"><a href="#FrontendService-834"><span class="linenos"> 834</span></a>        <span class="k">else</span><span class="p">:</span>
+</span><span id="FrontendService-835"><a href="#FrontendService-835"><span class="linenos"> 835</span></a>            <span class="n">reason</span> <span class="o">=</span> <span class="s2">&quot;unknown&quot;</span>
+</span><span id="FrontendService-836"><a href="#FrontendService-836"><span class="linenos"> 836</span></a>            <span class="k">if</span> <span class="s2">&quot;request_error&quot;</span> <span class="ow">in</span> <span class="n">response</span><span class="p">:</span>
+</span><span id="FrontendService-837"><a href="#FrontendService-837"><span class="linenos"> 837</span></a>                <span class="n">reason</span> <span class="o">=</span> <span class="n">response</span><span class="p">[</span><span class="s2">&quot;request_error&quot;</span><span class="p">]</span>
+</span><span id="FrontendService-838"><a href="#FrontendService-838"><span class="linenos"> 838</span></a>            <span class="k">raise</span> <span class="n">TeaclaveException</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Failed to update function (</span><span class="si">{</span><span class="n">reason</span><span class="si">}</span><span class="s2">)&quot;</span><span class="p">)</span>
+</span><span id="FrontendService-839"><a href="#FrontendService-839"><span class="linenos"> 839</span></a>
+</span><span id="FrontendService-840"><a href="#FrontendService-840"><span class="linenos"> 840</span></a>    <span class="k">def</span> <span class="nf">list_functions</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">user_id</span><span class="p">:</span> <span class="nb">str</span><span class="p">):</span>
+</span><span id="FrontendService-841"><a href="#FrontendService-841"><span class="linenos"> 841</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">check_metadata</span><span class="p">()</span>
+</span><span id="FrontendService-842"><a href="#FrontendService-842"><span class="linenos"> 842</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">check_channel</span><span class="p">()</span>
+</span><span id="FrontendService-843"><a href="#FrontendService-843"><span class="linenos"> 843</span></a>        <span class="n">request</span> <span class="o">=</span> <span class="n">ListFunctionsRequest</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">metadata</span><span class="p">,</span> <span class="n">user_id</span><span class="p">)</span>
+</span><span id="FrontendService-844"><a href="#FrontendService-844"><span class="linenos"> 844</span></a>        <span class="n">_write_message</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">channel</span><span class="p">,</span> <span class="n">request</span><span class="p">)</span>
+</span><span id="FrontendService-845"><a href="#FrontendService-845"><span class="linenos"> 845</span></a>        <span class="n">response</span> <span class="o">=</span> <span class="n">_read_message</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">channel</span><span class="p">)</span>
+</span><span id="FrontendService-846"><a href="#FrontendService-846"><span class="linenos"> 846</span></a>        <span class="k">if</span> <span class="n">response</span><span class="p">[</span><span class="s2">&quot;result&quot;</span><span class="p">]</span> <span class="o">==</span> <span class="s2">&quot;ok&quot;</span><span class="p">:</span>
+</span><span id="FrontendService-847"><a href="#FrontendService-847"><span class="linenos"> 847</span></a>            <span class="k">return</span> <span class="n">response</span><span class="p">[</span><span class="s2">&quot;content&quot;</span><span class="p">]</span>
+</span><span id="FrontendService-848"><a href="#FrontendService-848"><span class="linenos"> 848</span></a>        <span class="k">else</span><span class="p">:</span>
+</span><span id="FrontendService-849"><a href="#FrontendService-849"><span class="linenos"> 849</span></a>            <span class="k">raise</span> <span class="n">TeaclaveException</span><span class="p">(</span><span class="s2">&quot;Failed to list functions&quot;</span><span class="p">)</span>
+</span><span id="FrontendService-850"><a href="#FrontendService-850"><span class="linenos"> 850</span></a>
+</span><span id="FrontendService-851"><a href="#FrontendService-851"><span class="linenos"> 851</span></a>    <span class="k">def</span> <span class="nf">get_function</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">function_id</span><span class="p">:</span> <span class="nb">str</span><span class="p">):</span>
+</span><span id="FrontendService-852"><a href="#FrontendService-852"><span class="linenos"> 852</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">check_metadata</span><span class="p">()</span>
+</span><span id="FrontendService-853"><a href="#FrontendService-853"><span class="linenos"> 853</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">check_channel</span><span class="p">()</span>
+</span><span id="FrontendService-854"><a href="#FrontendService-854"><span class="linenos"> 854</span></a>        <span class="n">request</span> <span class="o">=</span> <span class="n">GetFunctionRequest</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">metadata</span><span class="p">,</span> <span class="n">function_id</span><span class="p">)</span>
+</span><span id="FrontendService-855"><a href="#FrontendService-855"><span class="linenos"> 855</span></a>        <span class="n">_write_message</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">channel</span><span class="p">,</span> <span class="n">request</span><span class="p">)</span>
+</span><span id="FrontendService-856"><a href="#FrontendService-856"><span class="linenos"> 856</span></a>        <span class="n">response</span> <span class="o">=</span> <span class="n">_read_message</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">channel</span><span class="p">)</span>
+</span><span id="FrontendService-857"><a href="#FrontendService-857"><span class="linenos"> 857</span></a>        <span class="k">if</span> <span class="n">response</span><span class="p">[</span><span class="s2">&quot;result&quot;</span><span class="p">]</span> <span class="o">==</span> <span class="s2">&quot;ok&quot;</span><span class="p">:</span>
+</span><span id="FrontendService-858"><a href="#FrontendService-858"><span class="linenos"> 858</span></a>            <span class="k">return</span> <span class="n">response</span><span class="p">[</span><span class="s2">&quot;content&quot;</span><span class="p">]</span>
+</span><span id="FrontendService-859"><a href="#FrontendService-859"><span class="linenos"> 859</span></a>        <span class="k">else</span><span class="p">:</span>
+</span><span id="FrontendService-860"><a href="#FrontendService-860"><span class="linenos"> 860</span></a>            <span class="n">reason</span> <span class="o">=</span> <span class="s2">&quot;unknown&quot;</span>
+</span><span id="FrontendService-861"><a href="#FrontendService-861"><span class="linenos"> 861</span></a>            <span class="k">if</span> <span class="s2">&quot;request_error&quot;</span> <span class="ow">in</span> <span class="n">response</span><span class="p">:</span>
+</span><span id="FrontendService-862"><a href="#FrontendService-862"><span class="linenos"> 862</span></a>                <span class="n">reason</span> <span class="o">=</span> <span class="n">response</span><span class="p">[</span><span class="s2">&quot;request_error&quot;</span><span class="p">]</span>
+</span><span id="FrontendService-863"><a href="#FrontendService-863"><span class="linenos"> 863</span></a>            <span class="k">raise</span> <span class="n">TeaclaveException</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Failed to get function (</span><span class="si">{</span><span class="n">reason</span><span class="si">}</span><span class="s2">)&quot;</span><span class="p">)</span>
+</span><span id="FrontendService-864"><a href="#FrontendService-864"><span class="linenos"> 864</span></a>
+</span><span id="FrontendService-865"><a href="#FrontendService-865"><span class="linenos"> 865</span></a>    <span class="k">def</span> <span class="nf">get_function_usage_stats</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">user_id</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">function_id</span><span class="p">:</span> <span class="nb">str</span><span class="p">):</span>
+</span><span id="FrontendService-866"><a href="#FrontendService-866"><span class="linenos"> 866</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">check_metadata</span><span class="p">()</span>
+</span><span id="FrontendService-867"><a href="#FrontendService-867"><span class="linenos"> 867</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">check_channel</span><span class="p">()</span>
+</span><span id="FrontendService-868"><a href="#FrontendService-868"><span class="linenos"> 868</span></a>        <span class="n">request</span> <span class="o">=</span> <span class="n">GetFunctionUsageStatsRequest</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">metadata</span><span class="p">,</span> <span class="n">function_id</span><span class="p">)</span>
+</span><span id="FrontendService-869"><a href="#FrontendService-869"><span class="linenos"> 869</span></a>        <span class="n">_write_message</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">channel</span><span class="p">,</span> <span class="n">request</span><span class="p">)</span>
+</span><span id="FrontendService-870"><a href="#FrontendService-870"><span class="linenos"> 870</span></a>        <span class="n">response</span> <span class="o">=</span> <span class="n">_read_message</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">channel</span><span class="p">)</span>
+</span><span id="FrontendService-871"><a href="#FrontendService-871"><span class="linenos"> 871</span></a>        <span class="k">if</span> <span class="n">response</span><span class="p">[</span><span class="s2">&quot;result&quot;</span><span class="p">]</span> <span class="o">==</span> <span class="s2">&quot;ok&quot;</span><span class="p">:</span>
+</span><span id="FrontendService-872"><a href="#FrontendService-872"><span class="linenos"> 872</span></a>            <span class="k">return</span> <span class="n">response</span><span class="p">[</span><span class="s2">&quot;content&quot;</span><span class="p">]</span>
+</span><span id="FrontendService-873"><a href="#FrontendService-873"><span class="linenos"> 873</span></a>        <span class="k">else</span><span class="p">:</span>
+</span><span id="FrontendService-874"><a href="#FrontendService-874"><span class="linenos"> 874</span></a>            <span class="n">reason</span> <span class="o">=</span> <span class="s2">&quot;unknown&quot;</span>
+</span><span id="FrontendService-875"><a href="#FrontendService-875"><span class="linenos"> 875</span></a>            <span class="k">if</span> <span class="s2">&quot;request_error&quot;</span> <span class="ow">in</span> <span class="n">response</span><span class="p">:</span>
+</span><span id="FrontendService-876"><a href="#FrontendService-876"><span class="linenos"> 876</span></a>                <span class="n">reason</span> <span class="o">=</span> <span class="n">response</span><span class="p">[</span><span class="s2">&quot;request_error&quot;</span><span class="p">]</span>
+</span><span id="FrontendService-877"><a href="#FrontendService-877"><span class="linenos"> 877</span></a>            <span class="k">raise</span> <span class="n">TeaclaveException</span><span class="p">(</span>
+</span><span id="FrontendService-878"><a href="#FrontendService-878"><span class="linenos"> 878</span></a>                <span class="sa">f</span><span class="s2">&quot;Failed to get function usage statistics (</span><span class="si">{</span><span class="n">reason</span><span class="si">}</span><span class="s2">)&quot;</span><span class="p">)</span>
+</span><span id="FrontendService-879"><a href="#FrontendService-879"><span class="linenos"> 879</span></a>
+</span><span id="FrontendService-880"><a href="#FrontendService-880"><span class="linenos"> 880</span></a>    <span class="k">def</span> <span class="nf">delete_function</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">function_id</span><span class="p">:</span> <span class="nb">str</span><span class="p">):</span>
+</span><span id="FrontendService-881"><a href="#FrontendService-881"><span class="linenos"> 881</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">check_metadata</span><span class="p">()</span>
+</span><span id="FrontendService-882"><a href="#FrontendService-882"><span class="linenos"> 882</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">check_channel</span><span class="p">()</span>
+</span><span id="FrontendService-883"><a href="#FrontendService-883"><span class="linenos"> 883</span></a>        <span class="n">request</span> <span class="o">=</span> <span class="n">DeleteFunctionRequest</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">metadata</span><span class="p">,</span> <span class="n">function_id</span><span class="p">)</span>
+</span><span id="FrontendService-884"><a href="#FrontendService-884"><span class="linenos"> 884</span></a>        <span class="n">_write_message</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">channel</span><span class="p">,</span> <span class="n">request</span><span class="p">)</span>
+</span><span id="FrontendService-885"><a href="#FrontendService-885"><span class="linenos"> 885</span></a>        <span class="n">response</span> <span class="o">=</span> <span class="n">_read_message</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">channel</span><span class="p">)</span>
+</span><span id="FrontendService-886"><a href="#FrontendService-886"><span class="linenos"> 886</span></a>        <span class="k">if</span> <span class="n">response</span><span class="p">[</span><span class="s2">&quot;result&quot;</span><span class="p">]</span> <span class="o">==</span> <span class="s2">&quot;ok&quot;</span><span class="p">:</span>
+</span><span id="FrontendService-887"><a href="#FrontendService-887"><span class="linenos"> 887</span></a>            <span class="k">return</span> <span class="n">response</span><span class="p">[</span><span class="s2">&quot;content&quot;</span><span class="p">]</span>
+</span><span id="FrontendService-888"><a href="#FrontendService-888"><span class="linenos"> 888</span></a>        <span class="k">else</span><span class="p">:</span>
+</span><span id="FrontendService-889"><a href="#FrontendService-889"><span class="linenos"> 889</span></a>            <span class="k">raise</span> <span class="n">TeaclaveException</span><span class="p">(</span><span class="s2">&quot;Failed to delete function&quot;</span><span class="p">)</span>
+</span><span id="FrontendService-890"><a href="#FrontendService-890"><span class="linenos"> 890</span></a>
+</span><span id="FrontendService-891"><a href="#FrontendService-891"><span class="linenos"> 891</span></a>    <span class="k">def</span> <span class="nf">disable_function</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">function_id</span><span class="p">:</span> <span class="nb">str</span><span class="p">):</span>
+</span><span id="FrontendService-892"><a href="#FrontendService-892"><span class="linenos"> 892</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">check_metadata</span><span class="p">()</span>
+</span><span id="FrontendService-893"><a href="#FrontendService-893"><span class="linenos"> 893</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">check_channel</span><span class="p">()</span>
+</span><span id="FrontendService-894"><a href="#FrontendService-894"><span class="linenos"> 894</span></a>        <span class="n">request</span> <span class="o">=</span> <span class="n">DisableFunctionRequest</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">metadata</span><span class="p">,</span> <span class="n">function_id</span><span class="p">)</span>
+</span><span id="FrontendService-895"><a href="#FrontendService-895"><span class="linenos"> 895</span></a>        <span class="n">_write_message</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">channel</span><span class="p">,</span> <span class="n">request</span><span class="p">)</span>
+</span><span id="FrontendService-896"><a href="#FrontendService-896"><span class="linenos"> 896</span></a>        <span class="n">response</span> <span class="o">=</span> <span class="n">_read_message</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">channel</span><span class="p">)</span>
+</span><span id="FrontendService-897"><a href="#FrontendService-897"><span class="linenos"> 897</span></a>        <span class="k">if</span> <span class="n">response</span><span class="p">[</span><span class="s2">&quot;result&quot;</span><span class="p">]</span> <span class="o">==</span> <span class="s2">&quot;ok&quot;</span><span class="p">:</span>
+</span><span id="FrontendService-898"><a href="#FrontendService-898"><span class="linenos"> 898</span></a>            <span class="k">return</span> <span class="n">response</span><span class="p">[</span><span class="s2">&quot;content&quot;</span><span class="p">]</span>
+</span><span id="FrontendService-899"><a href="#FrontendService-899"><span class="linenos"> 899</span></a>        <span class="k">else</span><span class="p">:</span>
+</span><span id="FrontendService-900"><a href="#FrontendService-900"><span class="linenos"> 900</span></a>            <span class="k">raise</span> <span class="n">TeaclaveException</span><span class="p">(</span><span class="s2">&quot;Failed to disable function&quot;</span><span class="p">)</span>
+</span><span id="FrontendService-901"><a href="#FrontendService-901"><span class="linenos"> 901</span></a>
+</span><span id="FrontendService-902"><a href="#FrontendService-902"><span class="linenos"> 902</span></a>    <span class="k">def</span> <span class="nf">register_input_file</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">url</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">schema</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">key</span> [...]
+</span><span id="FrontendService-903"><a href="#FrontendService-903"><span class="linenos"> 903</span></a>                            <span class="n">iv</span><span class="p">:</span> <span class="n">List</span><span class="p">[</span><span class="nb">int</span><span class="p">],</span> <span class="n">cmac</span><span class="p">:</span> <span class="n">List</span><span class="p">[</span><span class="nb">int</span><span class="p">]):</span>
+</span><span id="FrontendService-904"><a href="#FrontendService-904"><span class="linenos"> 904</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">check_metadata</span><span class="p">()</span>
+</span><span id="FrontendService-905"><a href="#FrontendService-905"><span class="linenos"> 905</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">check_channel</span><span class="p">()</span>
+</span><span id="FrontendService-906"><a href="#FrontendService-906"><span class="linenos"> 906</span></a>        <span class="n">request</span> <span class="o">=</span> <span class="n">RegisterInputFileRequest</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">metadata</span><span class="p">,</span> <span class="n">url</span><span class="p">,</span> <span class="n">cmac</span><span class="p">,</span>
+</span><span id="FrontendService-907"><a href="#FrontendService-907"><span class="linenos"> 907</span></a>                                           <span class="n">CryptoInfo</span><span class="p">(</span><span class="n">schema</span><span class="p">,</span> <span class="n">key</span><span class="p">,</span> <span class="n">iv</span><span class="p">))</span>
+</span><span id="FrontendService-908"><a href="#FrontendService-908"><span class="linenos"> 908</span></a>        <span class="n">_write_message</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">channel</span><span class="p">,</span> <span class="n">request</span><span class="p">)</span>
+</span><span id="FrontendService-909"><a href="#FrontendService-909"><span class="linenos"> 909</span></a>        <span class="n">response</span> <span class="o">=</span> <span class="n">_read_message</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">channel</span><span class="p">)</span>
+</span><span id="FrontendService-910"><a href="#FrontendService-910"><span class="linenos"> 910</span></a>        <span class="k">if</span> <span class="n">response</span><span class="p">[</span><span class="s2">&quot;result&quot;</span><span class="p">]</span> <span class="o">==</span> <span class="s2">&quot;ok&quot;</span><span class="p">:</span>
+</span><span id="FrontendService-911"><a href="#FrontendService-911"><span class="linenos"> 911</span></a>            <span class="k">return</span> <span class="n">response</span><span class="p">[</span><span class="s2">&quot;content&quot;</span><span class="p">][</span><span class="s2">&quot;data_id&quot;</span><span class="p">]</span>
+</span><span id="FrontendService-912"><a href="#FrontendService-912"><span class="linenos"> 912</span></a>        <span class="k">else</span><span class="p">:</span>
+</span><span id="FrontendService-913"><a href="#FrontendService-913"><span class="linenos"> 913</span></a>            <span class="n">reason</span> <span class="o">=</span> <span class="s2">&quot;unknown&quot;</span>
+</span><span id="FrontendService-914"><a href="#FrontendService-914"><span class="linenos"> 914</span></a>            <span class="k">if</span> <span class="s2">&quot;request_error&quot;</span> <span class="ow">in</span> <span class="n">response</span><span class="p">:</span>
+</span><span id="FrontendService-915"><a href="#FrontendService-915"><span class="linenos"> 915</span></a>                <span class="n">reason</span> <span class="o">=</span> <span class="n">response</span><span class="p">[</span><span class="s2">&quot;request_error&quot;</span><span class="p">]</span>
+</span><span id="FrontendService-916"><a href="#FrontendService-916"><span class="linenos"> 916</span></a>            <span class="k">raise</span> <span class="n">TeaclaveException</span><span class="p">(</span>
+</span><span id="FrontendService-917"><a href="#FrontendService-917"><span class="linenos"> 917</span></a>                <span class="sa">f</span><span class="s2">&quot;Failed to register input file (</span><span class="si">{</span><span class="n">reason</span><span class="si">}</span><span class="s2">)&quot;</span><span class="p">)</span>
+</span><span id="FrontendService-918"><a href="#FrontendService-918"><span class="linenos"> 918</span></a>
+</span><span id="FrontendService-919"><a href="#FrontendService-919"><span class="linenos"> 919</span></a>    <span class="k">def</span> <span class="nf">register_output_file</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">url</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">schema</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">key</span [...]
+</span><span id="FrontendService-920"><a href="#FrontendService-920"><span class="linenos"> 920</span></a>                             <span class="n">iv</span><span class="p">:</span> <span class="n">List</span><span class="p">[</span><span class="nb">int</span><span class="p">]):</span>
+</span><span id="FrontendService-921"><a href="#FrontendService-921"><span class="linenos"> 921</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">check_metadata</span><span class="p">()</span>
+</span><span id="FrontendService-922"><a href="#FrontendService-922"><span class="linenos"> 922</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">check_channel</span><span class="p">()</span>
+</span><span id="FrontendService-923"><a href="#FrontendService-923"><span class="linenos"> 923</span></a>        <span class="n">request</span> <span class="o">=</span> <span class="n">RegisterOutputFileRequest</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">metadata</span><span class="p">,</span> <span class="n">url</span><span class="p">,</span>
+</span><span id="FrontendService-924"><a href="#FrontendService-924"><span class="linenos"> 924</span></a>                                            <span class="n">CryptoInfo</span><span class="p">(</span><span class="n">schema</span><span class="p">,</span> <span class="n">key</span><span class="p">,</span> <span class="n">iv</span><span class="p">))</span>
+</span><span id="FrontendService-925"><a href="#FrontendService-925"><span class="linenos"> 925</span></a>        <span class="n">_write_message</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">channel</span><span class="p">,</span> <span class="n">request</span><span class="p">)</span>
+</span><span id="FrontendService-926"><a href="#FrontendService-926"><span class="linenos"> 926</span></a>        <span class="n">response</span> <span class="o">=</span> <span class="n">_read_message</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">channel</span><span class="p">)</span>
+</span><span id="FrontendService-927"><a href="#FrontendService-927"><span class="linenos"> 927</span></a>        <span class="k">if</span> <span class="n">response</span><span class="p">[</span><span class="s2">&quot;result&quot;</span><span class="p">]</span> <span class="o">==</span> <span class="s2">&quot;ok&quot;</span><span class="p">:</span>
+</span><span id="FrontendService-928"><a href="#FrontendService-928"><span class="linenos"> 928</span></a>            <span class="k">return</span> <span class="n">response</span><span class="p">[</span><span class="s2">&quot;content&quot;</span><span class="p">][</span><span class="s2">&quot;data_id&quot;</span><span class="p">]</span>
+</span><span id="FrontendService-929"><a href="#FrontendService-929"><span class="linenos"> 929</span></a>        <span class="k">else</span><span class="p">:</span>
+</span><span id="FrontendService-930"><a href="#FrontendService-930"><span class="linenos"> 930</span></a>            <span class="n">reason</span> <span class="o">=</span> <span class="s2">&quot;unknown&quot;</span>
+</span><span id="FrontendService-931"><a href="#FrontendService-931"><span class="linenos"> 931</span></a>            <span class="k">if</span> <span class="s2">&quot;request_error&quot;</span> <span class="ow">in</span> <span class="n">response</span><span class="p">:</span>
+</span><span id="FrontendService-932"><a href="#FrontendService-932"><span class="linenos"> 932</span></a>                <span class="n">reason</span> <span class="o">=</span> <span class="n">response</span><span class="p">[</span><span class="s2">&quot;request_error&quot;</span><span class="p">]</span>
+</span><span id="FrontendService-933"><a href="#FrontendService-933"><span class="linenos"> 933</span></a>            <span class="k">raise</span> <span class="n">TeaclaveException</span><span class="p">(</span>
+</span><span id="FrontendService-934"><a href="#FrontendService-934"><span class="linenos"> 934</span></a>                <span class="sa">f</span><span class="s2">&quot;Failed to register output file (</span><span class="si">{</span><span class="n">reason</span><span class="si">}</span><span class="s2">)&quot;</span><span class="p">)</span>
+</span><span id="FrontendService-935"><a href="#FrontendService-935"><span class="linenos"> 935</span></a>
+</span><span id="FrontendService-936"><a href="#FrontendService-936"><span class="linenos"> 936</span></a>    <span class="k">def</span> <span class="nf">create_task</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span>
+</span><span id="FrontendService-937"><a href="#FrontendService-937"><span class="linenos"> 937</span></a>                    <span class="n">function_id</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span>
+</span><span id="FrontendService-938"><a href="#FrontendService-938"><span class="linenos"> 938</span></a>                    <span class="n">function_arguments</span><span class="p">:</span> <span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Any</span><span class="p">],</span>
+</span><span id="FrontendService-939"><a href="#FrontendService-939"><span class="linenos"> 939</span></a>                    <span class="n">executor</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span>
+</span><span id="FrontendService-940"><a href="#FrontendService-940"><span class="linenos"> 940</span></a>                    <span class="n">inputs_ownership</span><span class="p">:</span> <span class="n">List</span><span class="p">[</span><span class="n">OwnerList</span><span class="p">]</span> <span class="o">=</span> <span class="p">[],</span>
+</span><span id="FrontendService-941"><a href="#FrontendService-941"><span class="linenos"> 941</span></a>                    <span class="n">outputs_ownership</span><span class="p">:</span> <span class="n">List</span><span class="p">[</span><span class="n">OwnerList</span><span class="p">]</span> <span class="o">=</span> <span class="p">[]):</span>
+</span><span id="FrontendService-942"><a href="#FrontendService-942"><span class="linenos"> 942</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">check_metadata</span><span class="p">()</span>
+</span><span id="FrontendService-943"><a href="#FrontendService-943"><span class="linenos"> 943</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">check_channel</span><span class="p">()</span>
+</span><span id="FrontendService-944"><a href="#FrontendService-944"><span class="linenos"> 944</span></a>        <span class="n">function_arguments</span> <span class="o">=</span> <span class="n">json</span><span class="o">.</span><span class="n">dumps</span><span class="p">(</span><span class="n">function_arguments</span><span class="p">)</span>
+</span><span id="FrontendService-945"><a href="#FrontendService-945"><span class="linenos"> 945</span></a>        <span class="n">request</span> <span class="o">=</span> <span class="n">CreateTaskRequest</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">metadata</span><span class="p">,</span> <span class="n">function_id</span><span class="p">,</span>
+</span><span id="FrontendService-946"><a href="#FrontendService-946"><span class="linenos"> 946</span></a>                                    <span class="n">function_arguments</span><span class="p">,</span> <span class="n">executor</span><span class="p">,</span>
+</span><span id="FrontendService-947"><a href="#FrontendService-947"><span class="linenos"> 947</span></a>                                    <span class="n">inputs_ownership</span><span class="p">,</span> <span class="n">outputs_ownership</span><span class="p">)</span>
+</span><span id="FrontendService-948"><a href="#FrontendService-948"><span class="linenos"> 948</span></a>        <span class="n">_write_message</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">channel</span><span class="p">,</span> <span class="n">request</span><span class="p">)</span>
+</span><span id="FrontendService-949"><a href="#FrontendService-949"><span class="linenos"> 949</span></a>        <span class="n">response</span> <span class="o">=</span> <span class="n">_read_message</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">channel</span><span class="p">)</span>
+</span><span id="FrontendService-950"><a href="#FrontendService-950"><span class="linenos"> 950</span></a>        <span class="k">if</span> <span class="n">response</span><span class="p">[</span><span class="s2">&quot;result&quot;</span><span class="p">]</span> <span class="o">==</span> <span class="s2">&quot;ok&quot;</span><span class="p">:</span>
+</span><span id="FrontendService-951"><a href="#FrontendService-951"><span class="linenos"> 951</span></a>            <span class="k">return</span> <span class="n">response</span><span class="p">[</span><span class="s2">&quot;content&quot;</span><span class="p">][</span><span class="s2">&quot;task_id&quot;</span><span class="p">]</span>
+</span><span id="FrontendService-952"><a href="#FrontendService-952"><span class="linenos"> 952</span></a>        <span class="k">else</span><span class="p">:</span>
+</span><span id="FrontendService-953"><a href="#FrontendService-953"><span class="linenos"> 953</span></a>            <span class="n">reason</span> <span class="o">=</span> <span class="s2">&quot;unknown&quot;</span>
+</span><span id="FrontendService-954"><a href="#FrontendService-954"><span class="linenos"> 954</span></a>            <span class="k">if</span> <span class="s2">&quot;request_error&quot;</span> <span class="ow">in</span> <span class="n">response</span><span class="p">:</span>
+</span><span id="FrontendService-955"><a href="#FrontendService-955"><span class="linenos"> 955</span></a>                <span class="n">reason</span> <span class="o">=</span> <span class="n">response</span><span class="p">[</span><span class="s2">&quot;request_error&quot;</span><span class="p">]</span>
+</span><span id="FrontendService-956"><a href="#FrontendService-956"><span class="linenos"> 956</span></a>            <span class="k">raise</span> <span class="n">TeaclaveException</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Failed to create task (</span><span class="si">{</span><span class="n">reason</span><span class="si">}</span><span class="s2">)&quot;</span><span class="p">)</span>
+</span><span id="FrontendService-957"><a href="#FrontendService-957"><span class="linenos"> 957</span></a>
+</span><span id="FrontendService-958"><a href="#FrontendService-958"><span class="linenos"> 958</span></a>    <span class="k">def</span> <span class="nf">assign_data_to_task</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">task_id</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">inputs</span><span class="p">:</span> <span class="n">List</span><span class="p">[</span><span class="n">DataMap [...]
+</span><span id="FrontendService-959"><a href="#FrontendService-959"><span class="linenos"> 959</span></a>                            <span class="n">outputs</span><span class="p">:</span> <span class="n">List</span><span class="p">[</span><span class="n">DataMap</span><span class="p">]):</span>
+</span><span id="FrontendService-960"><a href="#FrontendService-960"><span class="linenos"> 960</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">check_metadata</span><span class="p">()</span>
+</span><span id="FrontendService-961"><a href="#FrontendService-961"><span class="linenos"> 961</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">check_channel</span><span class="p">()</span>
+</span><span id="FrontendService-962"><a href="#FrontendService-962"><span class="linenos"> 962</span></a>        <span class="n">request</span> <span class="o">=</span> <span class="n">AssignDataRequest</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">metadata</span><span class="p">,</span> <span class="n">task_id</span><span class="p">,</span> <span class="n">inputs</span><span class="p">,</span> <span class="n">outputs</span><span class [...]
+</span><span id="FrontendService-963"><a href="#FrontendService-963"><span class="linenos"> 963</span></a>        <span class="n">_write_message</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">channel</span><span class="p">,</span> <span class="n">request</span><span class="p">)</span>
+</span><span id="FrontendService-964"><a href="#FrontendService-964"><span class="linenos"> 964</span></a>        <span class="n">response</span> <span class="o">=</span> <span class="n">_read_message</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">channel</span><span class="p">)</span>
+</span><span id="FrontendService-965"><a href="#FrontendService-965"><span class="linenos"> 965</span></a>        <span class="k">if</span> <span class="n">response</span><span class="p">[</span><span class="s2">&quot;result&quot;</span><span class="p">]</span> <span class="o">==</span> <span class="s2">&quot;ok&quot;</span><span class="p">:</span>
+</span><span id="FrontendService-966"><a href="#FrontendService-966"><span class="linenos"> 966</span></a>            <span class="k">pass</span>
+</span><span id="FrontendService-967"><a href="#FrontendService-967"><span class="linenos"> 967</span></a>        <span class="k">else</span><span class="p">:</span>
+</span><span id="FrontendService-968"><a href="#FrontendService-968"><span class="linenos"> 968</span></a>            <span class="n">reason</span> <span class="o">=</span> <span class="s2">&quot;unknown&quot;</span>
+</span><span id="FrontendService-969"><a href="#FrontendService-969"><span class="linenos"> 969</span></a>            <span class="k">if</span> <span class="s2">&quot;request_error&quot;</span> <span class="ow">in</span> <span class="n">response</span><span class="p">:</span>
+</span><span id="FrontendService-970"><a href="#FrontendService-970"><span class="linenos"> 970</span></a>                <span class="n">reason</span> <span class="o">=</span> <span class="n">response</span><span class="p">[</span><span class="s2">&quot;request_error&quot;</span><span class="p">]</span>
+</span><span id="FrontendService-971"><a href="#FrontendService-971"><span class="linenos"> 971</span></a>            <span class="k">raise</span> <span class="n">TeaclaveException</span><span class="p">(</span>
+</span><span id="FrontendService-972"><a href="#FrontendService-972"><span class="linenos"> 972</span></a>                <span class="sa">f</span><span class="s2">&quot;Failed to assign data to task (</span><span class="si">{</span><span class="n">reason</span><span class="si">}</span><span class="s2">)&quot;</span><span class="p">)</span>
+</span><span id="FrontendService-973"><a href="#FrontendService-973"><span class="linenos"> 973</span></a>
+</span><span id="FrontendService-974"><a href="#FrontendService-974"><span class="linenos"> 974</span></a>    <span class="k">def</span> <span class="nf">approve_task</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">task_id</span><span class="p">:</span> <span class="nb">str</span><span class="p">):</span>
+</span><span id="FrontendService-975"><a href="#FrontendService-975"><span class="linenos"> 975</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">check_metadata</span><span class="p">()</span>
+</span><span id="FrontendService-976"><a href="#FrontendService-976"><span class="linenos"> 976</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">check_channel</span><span class="p">()</span>
+</span><span id="FrontendService-977"><a href="#FrontendService-977"><span class="linenos"> 977</span></a>        <span class="n">request</span> <span class="o">=</span> <span class="n">ApproveTaskRequest</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">metadata</span><span class="p">,</span> <span class="n">task_id</span><span class="p">)</span>
+</span><span id="FrontendService-978"><a href="#FrontendService-978"><span class="linenos"> 978</span></a>        <span class="n">_write_message</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">channel</span><span class="p">,</span> <span class="n">request</span><span class="p">)</span>
+</span><span id="FrontendService-979"><a href="#FrontendService-979"><span class="linenos"> 979</span></a>        <span class="n">response</span> <span class="o">=</span> <span class="n">_read_message</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">channel</span><span class="p">)</span>
+</span><span id="FrontendService-980"><a href="#FrontendService-980"><span class="linenos"> 980</span></a>        <span class="k">if</span> <span class="n">response</span><span class="p">[</span><span class="s2">&quot;result&quot;</span><span class="p">]</span> <span class="o">==</span> <span class="s2">&quot;ok&quot;</span><span class="p">:</span>
+</span><span id="FrontendService-981"><a href="#FrontendService-981"><span class="linenos"> 981</span></a>            <span class="k">pass</span>
+</span><span id="FrontendService-982"><a href="#FrontendService-982"><span class="linenos"> 982</span></a>        <span class="k">else</span><span class="p">:</span>
+</span><span id="FrontendService-983"><a href="#FrontendService-983"><span class="linenos"> 983</span></a>            <span class="n">reason</span> <span class="o">=</span> <span class="s2">&quot;unknown&quot;</span>
+</span><span id="FrontendService-984"><a href="#FrontendService-984"><span class="linenos"> 984</span></a>            <span class="k">if</span> <span class="s2">&quot;request_error&quot;</span> <span class="ow">in</span> <span class="n">response</span><span class="p">:</span>
+</span><span id="FrontendService-985"><a href="#FrontendService-985"><span class="linenos"> 985</span></a>                <span class="n">reason</span> <span class="o">=</span> <span class="n">response</span><span class="p">[</span><span class="s2">&quot;request_error&quot;</span><span class="p">]</span>
+</span><span id="FrontendService-986"><a href="#FrontendService-986"><span class="linenos"> 986</span></a>            <span class="k">raise</span> <span class="n">TeaclaveException</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Failed to approve task (</span><span class="si">{</span><span class="n">reason</span><span class="si">}</span><span class="s2">)&quot;</span><span class="p">)</span>
+</span><span id="FrontendService-987"><a href="#FrontendService-987"><span class="linenos"> 987</span></a>
+</span><span id="FrontendService-988"><a href="#FrontendService-988"><span class="linenos"> 988</span></a>    <span class="k">def</span> <span class="nf">invoke_task</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">task_id</span><span class="p">:</span> <span class="nb">str</span><span class="p">):</span>
+</span><span id="FrontendService-989"><a href="#FrontendService-989"><span class="linenos"> 989</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">check_metadata</span><span class="p">()</span>
+</span><span id="FrontendService-990"><a href="#FrontendService-990"><span class="linenos"> 990</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">check_channel</span><span class="p">()</span>
+</span><span id="FrontendService-991"><a href="#FrontendService-991"><span class="linenos"> 991</span></a>        <span class="n">request</span> <span class="o">=</span> <span class="n">InvokeTaskRequest</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">metadata</span><span class="p">,</span> <span class="n">task_id</span><span class="p">)</span>
+</span><span id="FrontendService-992"><a href="#FrontendService-992"><span class="linenos"> 992</span></a>        <span class="n">_write_message</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">channel</span><span class="p">,</span> <span class="n">request</span><span class="p">)</span>
+</span><span id="FrontendService-993"><a href="#FrontendService-993"><span class="linenos"> 993</span></a>        <span class="n">response</span> <span class="o">=</span> <span class="n">_read_message</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">channel</span><span class="p">)</span>
+</span><span id="FrontendService-994"><a href="#FrontendService-994"><span class="linenos"> 994</span></a>        <span class="k">if</span> <span class="n">response</span><span class="p">[</span><span class="s2">&quot;result&quot;</span><span class="p">]</span> <span class="o">==</span> <span class="s2">&quot;ok&quot;</span><span class="p">:</span>
+</span><span id="FrontendService-995"><a href="#FrontendService-995"><span class="linenos"> 995</span></a>            <span class="k">pass</span>
+</span><span id="FrontendService-996"><a href="#FrontendService-996"><span class="linenos"> 996</span></a>        <span class="k">else</span><span class="p">:</span>
+</span><span id="FrontendService-997"><a href="#FrontendService-997"><span class="linenos"> 997</span></a>            <span class="n">reason</span> <span class="o">=</span> <span class="s2">&quot;unknown&quot;</span>
+</span><span id="FrontendService-998"><a href="#FrontendService-998"><span class="linenos"> 998</span></a>            <span class="k">if</span> <span class="s2">&quot;request_error&quot;</span> <span class="ow">in</span> <span class="n">response</span><span class="p">:</span>
+</span><span id="FrontendService-999"><a href="#FrontendService-999"><span class="linenos"> 999</span></a>                <span class="n">reason</span> <span class="o">=</span> <span class="n">response</span><span class="p">[</span><span class="s2">&quot;request_error&quot;</span><span class="p">]</span>
+</span><span id="FrontendService-1000"><a href="#FrontendService-1000"><span class="linenos">1000</span></a>            <span class="k">raise</span> <span class="n">TeaclaveException</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Failed to invoke task (</span><span class="si">{</span><span class="n">reason</span><span class="si">}</span><span class="s2">)&quot;</span><span class="p">)</span>
+</span><span id="FrontendService-1001"><a href="#FrontendService-1001"><span class="linenos">1001</span></a>
+</span><span id="FrontendService-1002"><a href="#FrontendService-1002"><span class="linenos">1002</span></a>    <span class="k">def</span> <span class="nf">cancel_task</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">task_id</span><span class="p">:</span> <span class="nb">str</span><span class="p">):</span>
+</span><span id="FrontendService-1003"><a href="#FrontendService-1003"><span class="linenos">1003</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">check_metadata</span><span class="p">()</span>
+</span><span id="FrontendService-1004"><a href="#FrontendService-1004"><span class="linenos">1004</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">check_channel</span><span class="p">()</span>
+</span><span id="FrontendService-1005"><a href="#FrontendService-1005"><span class="linenos">1005</span></a>        <span class="n">request</span> <span class="o">=</span> <span class="n">CancelTaskRequest</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">metadata</span><span class="p">,</span> <span class="n">task_id</span><span class="p">)</span>
+</span><span id="FrontendService-1006"><a href="#FrontendService-1006"><span class="linenos">1006</span></a>        <span class="n">_write_message</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">channel</span><span class="p">,</span> <span class="n">request</span><span class="p">)</span>
+</span><span id="FrontendService-1007"><a href="#FrontendService-1007"><span class="linenos">1007</span></a>        <span class="n">response</span> <span class="o">=</span> <span class="n">_read_message</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">channel</span><span class="p">)</span>
+</span><span id="FrontendService-1008"><a href="#FrontendService-1008"><span class="linenos">1008</span></a>        <span class="k">if</span> <span class="n">response</span><span class="p">[</span><span class="s2">&quot;result&quot;</span><span class="p">]</span> <span class="o">==</span> <span class="s2">&quot;ok&quot;</span><span class="p">:</span>
+</span><span id="FrontendService-1009"><a href="#FrontendService-1009"><span class="linenos">1009</span></a>            <span class="k">pass</span>
+</span><span id="FrontendService-1010"><a href="#FrontendService-1010"><span class="linenos">1010</span></a>        <span class="k">else</span><span class="p">:</span>
+</span><span id="FrontendService-1011"><a href="#FrontendService-1011"><span class="linenos">1011</span></a>            <span class="n">reason</span> <span class="o">=</span> <span class="s2">&quot;unknown&quot;</span>
+</span><span id="FrontendService-1012"><a href="#FrontendService-1012"><span class="linenos">1012</span></a>            <span class="k">if</span> <span class="s2">&quot;request_error&quot;</span> <span class="ow">in</span> <span class="n">response</span><span class="p">:</span>
+</span><span id="FrontendService-1013"><a href="#FrontendService-1013"><span class="linenos">1013</span></a>                <span class="n">reason</span> <span class="o">=</span> <span class="n">response</span><span class="p">[</span><span class="s2">&quot;request_error&quot;</span><span class="p">]</span>
+</span><span id="FrontendService-1014"><a href="#FrontendService-1014"><span class="linenos">1014</span></a>            <span class="k">raise</span> <span class="n">TeaclaveException</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Failed to cancel task (</span><span class="si">{</span><span class="n">reason</span><span class="si">}</span><span class="s2">)&quot;</span><span class="p">)</span>
+</span><span id="FrontendService-1015"><a href="#FrontendService-1015"><span class="linenos">1015</span></a>
+</span><span id="FrontendService-1016"><a href="#FrontendService-1016"><span class="linenos">1016</span></a>    <span class="k">def</span> <span class="nf">get_task</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">task_id</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">dict</span><span class="p">:</span>
+</span><span id="FrontendService-1017"><a href="#FrontendService-1017"><span class="linenos">1017</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">check_metadata</span><span class="p">()</span>
+</span><span id="FrontendService-1018"><a href="#FrontendService-1018"><span class="linenos">1018</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">check_channel</span><span class="p">()</span>
+</span><span id="FrontendService-1019"><a href="#FrontendService-1019"><span class="linenos">1019</span></a>        <span class="n">request</span> <span class="o">=</span> <span class="n">GetTaskRequest</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">metadata</span><span class="p">,</span> <span class="n">task_id</span><span class="p">)</span>
+</span><span id="FrontendService-1020"><a href="#FrontendService-1020"><span class="linenos">1020</span></a>
+</span><span id="FrontendService-1021"><a href="#FrontendService-1021"><span class="linenos">1021</span></a>        <span class="n">_write_message</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">channel</span><span class="p">,</span> <span class="n">request</span><span class="p">)</span>
+</span><span id="FrontendService-1022"><a href="#FrontendService-1022"><span class="linenos">1022</span></a>        <span class="n">response</span> <span class="o">=</span> <span class="n">_read_message</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">channel</span><span class="p">)</span>
+</span><span id="FrontendService-1023"><a href="#FrontendService-1023"><span class="linenos">1023</span></a>        <span class="k">if</span> <span class="n">response</span><span class="p">[</span><span class="s2">&quot;result&quot;</span><span class="p">]</span> <span class="o">!=</span> <span class="s2">&quot;ok&quot;</span><span class="p">:</span>
+</span><span id="FrontendService-1024"><a href="#FrontendService-1024"><span class="linenos">1024</span></a>            <span class="n">reason</span> <span class="o">=</span> <span class="s2">&quot;unknown&quot;</span>
+</span><span id="FrontendService-1025"><a href="#FrontendService-1025"><span class="linenos">1025</span></a>            <span class="k">if</span> <span class="s2">&quot;request_error&quot;</span> <span class="ow">in</span> <span class="n">response</span><span class="p">:</span>
+</span><span id="FrontendService-1026"><a href="#FrontendService-1026"><span class="linenos">1026</span></a>                <span class="n">reason</span> <span class="o">=</span> <span class="n">response</span><span class="p">[</span><span class="s2">&quot;request_error&quot;</span><span class="p">]</span>
+</span><span id="FrontendService-1027"><a href="#FrontendService-1027"><span class="linenos">1027</span></a>            <span class="k">raise</span> <span class="n">TeaclaveException</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Failed to get task result (</span><span class="si">{</span><span class="n">reason</span><span class="si">}</span><span class="s2">)&quot;</span><span class="p">)</span>
+</span><span id="FrontendService-1028"><a href="#FrontendService-1028"><span class="linenos">1028</span></a>        <span class="k">return</span> <span class="n">response</span><span class="p">[</span><span class="s2">&quot;content&quot;</span><span class="p">]</span>
+</span><span id="FrontendService-1029"><a href="#FrontendService-1029"><span class="linenos">1029</span></a>
+</span><span id="FrontendService-1030"><a href="#FrontendService-1030"><span class="linenos">1030</span></a>    <span class="k">def</span> <span class="nf">get_task_result</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">task_id</span><span class="p">:</span> <span class="nb">str</span><span class="p">):</span>
+</span><span id="FrontendService-1031"><a href="#FrontendService-1031"><span class="linenos">1031</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">check_metadata</span><span class="p">()</span>
+</span><span id="FrontendService-1032"><a href="#FrontendService-1032"><span class="linenos">1032</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">check_channel</span><span class="p">()</span>
+</span><span id="FrontendService-1033"><a href="#FrontendService-1033"><span class="linenos">1033</span></a>        <span class="n">request</span> <span class="o">=</span> <span class="n">GetTaskRequest</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">metadata</span><span class="p">,</span> <span class="n">task_id</span><span class="p">)</span>
+</span><span id="FrontendService-1034"><a href="#FrontendService-1034"><span class="linenos">1034</span></a>
+</span><span id="FrontendService-1035"><a href="#FrontendService-1035"><span class="linenos">1035</span></a>        <span class="k">while</span> <span class="kc">True</span><span class="p">:</span>
+</span><span id="FrontendService-1036"><a href="#FrontendService-1036"><span class="linenos">1036</span></a>            <span class="n">_write_message</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">channel</span><span class="p">,</span> <span class="n">request</span><span class="p">)</span>
+</span><span id="FrontendService-1037"><a href="#FrontendService-1037"><span class="linenos">1037</span></a>            <span class="n">response</span> <span class="o">=</span> <span class="n">_read_message</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">channel</span><span class="p">)</span>
+</span><span id="FrontendService-1038"><a href="#FrontendService-1038"><span class="linenos">1038</span></a>            <span class="k">if</span> <span class="n">response</span><span class="p">[</span><span class="s2">&quot;result&quot;</span><span class="p">]</span> <span class="o">!=</span> <span class="s2">&quot;ok&quot;</span><span class="p">:</span>
+</span><span id="FrontendService-1039"><a href="#FrontendService-1039"><span class="linenos">1039</span></a>                <span class="n">reason</span> <span class="o">=</span> <span class="s2">&quot;unknown&quot;</span>
+</span><span id="FrontendService-1040"><a href="#FrontendService-1040"><span class="linenos">1040</span></a>                <span class="k">if</span> <span class="s2">&quot;request_error&quot;</span> <span class="ow">in</span> <span class="n">response</span><span class="p">:</span>
+</span><span id="FrontendService-1041"><a href="#FrontendService-1041"><span class="linenos">1041</span></a>                    <span class="n">reason</span> <span class="o">=</span> <span class="n">response</span><span class="p">[</span><span class="s2">&quot;request_error&quot;</span><span class="p">]</span>
+</span><span id="FrontendService-1042"><a href="#FrontendService-1042"><span class="linenos">1042</span></a>                <span class="k">raise</span> <span class="n">TeaclaveException</span><span class="p">(</span>
+</span><span id="FrontendService-1043"><a href="#FrontendService-1043"><span class="linenos">1043</span></a>                    <span class="sa">f</span><span class="s2">&quot;Failed to get task result (</span><span class="si">{</span><span class="n">reason</span><span class="si">}</span><span class="s2">)&quot;</span><span class="p">)</span>
+</span><span id="FrontendService-1044"><a href="#FrontendService-1044"><span class="linenos">1044</span></a>            <span class="n">time</span><span class="o">.</span><span class="n">sleep</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span>
+</span><span id="FrontendService-1045"><a href="#FrontendService-1045"><span class="linenos">1045</span></a>            <span class="k">if</span> <span class="n">response</span><span class="p">[</span><span class="s2">&quot;content&quot;</span><span class="p">][</span><span class="s2">&quot;status&quot;</span><span class="p">]</span> <span class="o">==</span> <span class="n">TaskStatus</span><span class="o">.</span><span class="n">Finished</span><span class="p">:</span>
+</span><span id="FrontendService-1046"><a href="#FrontendService-1046"><span class="linenos">1046</span></a>                <span class="k">break</span>
+</span><span id="FrontendService-1047"><a href="#FrontendService-1047"><span class="linenos">1047</span></a>            <span class="k">elif</span> <span class="n">response</span><span class="p">[</span><span class="s2">&quot;content&quot;</span><span class="p">][</span><span class="s2">&quot;status&quot;</span><span class="p">]</span> <span class="o">==</span> <span class="n">TaskStatus</span><span class="o">.</span><span class="n">Canceled</span><span class="p">:</span>
+</span><span id="FrontendService-1048"><a href="#FrontendService-1048"><span class="linenos">1048</span></a>                <span class="k">raise</span> <span class="n">TeaclaveException</span><span class="p">(</span>
+</span><span id="FrontendService-1049"><a href="#FrontendService-1049"><span class="linenos">1049</span></a>                    <span class="s2">&quot;Task Canceled, Error: &quot;</span> <span class="o">+</span>
+</span><span id="FrontendService-1050"><a href="#FrontendService-1050"><span class="linenos">1050</span></a>                    <span class="n">response</span><span class="p">[</span><span class="s2">&quot;content&quot;</span><span class="p">][</span><span class="s2">&quot;result&quot;</span><span class="p">][</span><span class="s2">&quot;result&quot;</span><span class="p">][</span><span class="s2">&quot;Err&quot;</span><span class="p">][</span><span class="s2">&quot;reason&quot;</span>< [...]
+</span><span id="FrontendService-1051"><a href="#FrontendService-1051"><span class="linenos">1051</span></a>            <span class="k">elif</span> <span class="n">response</span><span class="p">[</span><span class="s2">&quot;content&quot;</span><span class="p">][</span><span class="s2">&quot;status&quot;</span><span class="p">]</span> <span class="o">==</span> <span class="n">TaskStatus</span><span class="o">.</span><span class="n">Failed</span><span class="p">:</span>
+</span><span id="FrontendService-1052"><a href="#FrontendService-1052"><span class="linenos">1052</span></a>                <span class="k">raise</span> <span class="n">TeaclaveException</span><span class="p">(</span>
+</span><span id="FrontendService-1053"><a href="#FrontendService-1053"><span class="linenos">1053</span></a>                    <span class="s2">&quot;Task Failed, Error: &quot;</span> <span class="o">+</span>
+</span><span id="FrontendService-1054"><a href="#FrontendService-1054"><span class="linenos">1054</span></a>                    <span class="n">response</span><span class="p">[</span><span class="s2">&quot;content&quot;</span><span class="p">][</span><span class="s2">&quot;result&quot;</span><span class="p">][</span><span class="s2">&quot;result&quot;</span><span class="p">][</span><span class="s2">&quot;Err&quot;</span><span class="p">][</span><span class="s2">&quot;reason&quot;</span>< [...]
+</span><span id="FrontendService-1055"><a href="#FrontendService-1055"><span class="linenos">1055</span></a>
+</span><span id="FrontendService-1056"><a href="#FrontendService-1056"><span class="linenos">1056</span></a>        <span class="k">return</span> <span class="n">response</span><span class="p">[</span><span class="s2">&quot;content&quot;</span><span class="p">][</span><span class="s2">&quot;result&quot;</span><span class="p">][</span><span class="s2">&quot;result&quot;</span><span class="p">][</span><span class="s2">&quot;Ok&quot;</span><span class="p">][</span><span class="s2">&quot;ret [...]
+</span><span id="FrontendService-1057"><a href="#FrontendService-1057"><span class="linenos">1057</span></a>
+</span><span id="FrontendService-1058"><a href="#FrontendService-1058"><span class="linenos">1058</span></a>    <span class="k">def</span> <span class="nf">get_output_cmac_by_tag</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">task_id</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">tag</span><span class="p">:</span> <span class="nb">str</span><span class="p">):</span>
+</span><span id="FrontendService-1059"><a href="#FrontendService-1059"><span class="linenos">1059</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">check_metadata</span><span class="p">()</span>
+</span><span id="FrontendService-1060"><a href="#FrontendService-1060"><span class="linenos">1060</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">check_channel</span><span class="p">()</span>
+</span><span id="FrontendService-1061"><a href="#FrontendService-1061"><span class="linenos">1061</span></a>        <span class="n">request</span> <span class="o">=</span> <span class="n">GetTaskRequest</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">metadata</span><span class="p">,</span> <span class="n">task_id</span><span class="p">)</span>
+</span><span id="FrontendService-1062"><a href="#FrontendService-1062"><span class="linenos">1062</span></a>        <span class="k">while</span> <span class="kc">True</span><span class="p">:</span>
+</span><span id="FrontendService-1063"><a href="#FrontendService-1063"><span class="linenos">1063</span></a>            <span class="n">_write_message</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">channel</span><span class="p">,</span> <span class="n">request</span><span class="p">)</span>
+</span><span id="FrontendService-1064"><a href="#FrontendService-1064"><span class="linenos">1064</span></a>            <span class="n">response</span> <span class="o">=</span> <span class="n">_read_message</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">channel</span><span class="p">)</span>
+</span><span id="FrontendService-1065"><a href="#FrontendService-1065"><span class="linenos">1065</span></a>            <span class="k">if</span> <span class="n">response</span><span class="p">[</span><span class="s2">&quot;result&quot;</span><span class="p">]</span> <span class="o">!=</span> <span class="s2">&quot;ok&quot;</span><span class="p">:</span>
+</span><span id="FrontendService-1066"><a href="#FrontendService-1066"><span class="linenos">1066</span></a>                <span class="n">reason</span> <span class="o">=</span> <span class="s2">&quot;unknown&quot;</span>
+</span><span id="FrontendService-1067"><a href="#FrontendService-1067"><span class="linenos">1067</span></a>                <span class="k">if</span> <span class="s2">&quot;request_error&quot;</span> <span class="ow">in</span> <span class="n">response</span><span class="p">:</span>
+</span><span id="FrontendService-1068"><a href="#FrontendService-1068"><span class="linenos">1068</span></a>                    <span class="n">reason</span> <span class="o">=</span> <span class="n">response</span><span class="p">[</span><span class="s2">&quot;request_error&quot;</span><span class="p">]</span>
+</span><span id="FrontendService-1069"><a href="#FrontendService-1069"><span class="linenos">1069</span></a>                <span class="k">raise</span> <span class="n">TeaclaveException</span><span class="p">(</span>
+</span><span id="FrontendService-1070"><a href="#FrontendService-1070"><span class="linenos">1070</span></a>                    <span class="sa">f</span><span class="s2">&quot;Failed to get output cmac by tag (</span><span class="si">{</span><span class="n">reason</span><span class="si">}</span><span class="s2">)&quot;</span><span class="p">)</span>
+</span><span id="FrontendService-1071"><a href="#FrontendService-1071"><span class="linenos">1071</span></a>            <span class="n">time</span><span class="o">.</span><span class="n">sleep</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span>
+</span><span id="FrontendService-1072"><a href="#FrontendService-1072"><span class="linenos">1072</span></a>            <span class="k">if</span> <span class="n">response</span><span class="p">[</span><span class="s2">&quot;content&quot;</span><span class="p">][</span><span class="s2">&quot;status&quot;</span><span class="p">]</span> <span class="o">==</span> <span class="n">TaskStatus</span><span class="o">.</span><span class="n">Finished</span><span class="p">:</span>
+</span><span id="FrontendService-1073"><a href="#FrontendService-1073"><span class="linenos">1073</span></a>                <span class="k">break</span>
+</span><span id="FrontendService-1074"><a href="#FrontendService-1074"><span class="linenos">1074</span></a>
+</span><span id="FrontendService-1075"><a href="#FrontendService-1075"><span class="linenos">1075</span></a>        <span class="k">return</span> <span class="n">response</span><span class="p">[</span><span class="s2">&quot;content&quot;</span><span class="p">][</span><span class="s2">&quot;result&quot;</span><span class="p">][</span><span class="s2">&quot;result&quot;</span><span class="p">][</span><span class="s2">&quot;Ok&quot;</span><span class="p">][</span><span class="s2">&quot;tag [...]
+</span></pre></div>
+
+
+            <div class="docstring"><p>Establish trusted channel with the frontend service and provide
+clients to send request through RPC.</p>
+
+<p>Args:</p>
+
+<pre><code>address: The address of the remote services in tuple.
+as_root_ca_cert_path: Root CA certification of the attestation services
+    to verify the attestation report.
+enclave_info_path: Path of enclave info to verify the remote service in
+    the attestation report.
+</code></pre>
+</div>
+
+
+                            <div id="FrontendService.__init__" class="classattr">
+                                        <input id="FrontendService.__init__-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
+<div class="attr function">
+            
+        <span class="name">FrontendService</span><span class="signature pdoc-code multiline">(<span class="param">	<span class="n">address</span><span class="p">:</span> <span class="n">Tuple</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">int</span><span class="p">]</span>,</span><span class="param">	<span class="n">as_root_ca_cert_path</span><span class="p">:</span> <span class="nb">str</span>,</span><span class="param">	<span class="n [...]
+
+                <label class="view-source-button" for="FrontendService.__init__-view-source"><span>View Source</span></label>
+
+    </div>
+    <a class="headerlink" href="#FrontendService.__init__"></a>
+            <div class="pdoc-code codehilite"><pre><span></span><span id="FrontendService.__init__-773"><a href="#FrontendService.__init__-773"><span class="linenos">773</span></a>    <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span>
+</span><span id="FrontendService.__init__-774"><a href="#FrontendService.__init__-774"><span class="linenos">774</span></a>                 <span class="n">address</span><span class="p">:</span> <span class="n">Tuple</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">int</span><span class="p">],</span>
+</span><span id="FrontendService.__init__-775"><a href="#FrontendService.__init__-775"><span class="linenos">775</span></a>                 <span class="n">as_root_ca_cert_path</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span>
+</span><span id="FrontendService.__init__-776"><a href="#FrontendService.__init__-776"><span class="linenos">776</span></a>                 <span class="n">enclave_info_path</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span>
+</span><span id="FrontendService.__init__-777"><a href="#FrontendService.__init__-777"><span class="linenos">777</span></a>                 <span class="n">dump_report</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span>
+</span><span id="FrontendService.__init__-778"><a href="#FrontendService.__init__-778"><span class="linenos">778</span></a>        <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span><span class="s2">&quot;frontend&quot;</span><span class="p">,</span> <span class="n">address</span><span class="p">,</span> <span class="n">as_root_ca_cert_path</span><span class="p">,</span>
+</span><span id="FrontendService.__init__-779"><a href="#FrontendService.__init__-779"><span class="linenos">779</span></a>                         <span class="n">enclave_info_path</span><span class="p">,</span> <span class="n">dump_report</span><span class="p">)</span>
+</span></pre></div>
+
+
+    
+
+                            </div>
+                            <div id="FrontendService.register_function" class="classattr">
+                                        <input id="FrontendService.register_function-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
+<div class="attr function">
+            
+        <span class="def">def</span>
+        <span class="name">register_function</span><span class="signature pdoc-code multiline">(<span class="param">	<span class="bp">self</span>,</span><span class="param">	<span class="n">name</span><span class="p">:</span> <span class="nb">str</span>,</span><span class="param">	<span class="n">description</span><span class="p">:</span> <span class="nb">str</span>,</span><span class="param">	<span class="n">executor_type</span><span class="p">:</span> <span class="nb">str</span>,</span [...]
+
+                <label class="view-source-button" for="FrontendService.register_function-view-source"><span>View Source</span></label>
+
+    </div>
+    <a class="headerlink" href="#FrontendService.register_function"></a>
+            <div class="pdoc-code codehilite"><pre><span></span><span id="FrontendService.register_function-781"><a href="#FrontendService.register_function-781"><span class="linenos">781</span></a>    <span class="k">def</span> <span class="nf">register_function</span><span class="p">(</span>
+</span><span id="FrontendService.register_function-782"><a href="#FrontendService.register_function-782"><span class="linenos">782</span></a>        <span class="bp">self</span><span class="p">,</span>
+</span><span id="FrontendService.register_function-783"><a href="#FrontendService.register_function-783"><span class="linenos">783</span></a>        <span class="n">name</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span>
+</span><span id="FrontendService.register_function-784"><a href="#FrontendService.register_function-784"><span class="linenos">784</span></a>        <span class="n">description</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span>
+</span><span id="FrontendService.register_function-785"><a href="#FrontendService.register_function-785"><span class="linenos">785</span></a>        <span class="n">executor_type</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span>
+</span><span id="FrontendService.register_function-786"><a href="#FrontendService.register_function-786"><span class="linenos">786</span></a>        <span class="n">public</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span>
+</span><span id="FrontendService.register_function-787"><a href="#FrontendService.register_function-787"><span class="linenos">787</span></a>        <span class="n">payload</span><span class="p">:</span> <span class="n">List</span><span class="p">[</span><span class="nb">int</span><span class="p">]</span> <span class="o">=</span> <span class="p">[],</span>
+</span><span id="FrontendService.register_function-788"><a href="#FrontendService.register_function-788"><span class="linenos">788</span></a>        <span class="n">arguments</span><span class="p">:</span> <span class="n">List</span><span class="p">[</span><span class="n">FunctionArgument</span><span class="p">]</span> <span class="o">=</span> <span class="p">[],</span>
+</span><span id="FrontendService.register_function-789"><a href="#FrontendService.register_function-789"><span class="linenos">789</span></a>        <span class="n">inputs</span><span class="p">:</span> <span class="n">List</span><span class="p">[</span><span class="n">FunctionInput</span><span class="p">]</span> <span class="o">=</span> <span class="p">[],</span>
+</span><span id="FrontendService.register_function-790"><a href="#FrontendService.register_function-790"><span class="linenos">790</span></a>        <span class="n">outputs</span><span class="p">:</span> <span class="n">List</span><span class="p">[</span><span class="n">FunctionOutput</span><span class="p">]</span> <span class="o">=</span> <span class="p">[],</span>
+</span><span id="FrontendService.register_function-791"><a href="#FrontendService.register_function-791"><span class="linenos">791</span></a>        <span class="n">user_allowlist</span><span class="p">:</span> <span class="n">List</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="p">[],</span>
+</span><span id="FrontendService.register_function-792"><a href="#FrontendService.register_function-792"><span class="linenos">792</span></a>        <span class="n">usage_quota</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="o">-</span><span class="mi">1</span><span class="p">,</span>
+</span><span id="FrontendService.register_function-793"><a href="#FrontendService.register_function-793"><span class="linenos">793</span></a>    <span class="p">):</span>
+</span><span id="FrontendService.register_function-794"><a href="#FrontendService.register_function-794"><span class="linenos">794</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">check_metadata</span><span class="p">()</span>
+</span><span id="FrontendService.register_function-795"><a href="#FrontendService.register_function-795"><span class="linenos">795</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">check_channel</span><span class="p">()</span>
+</span><span id="FrontendService.register_function-796"><a href="#FrontendService.register_function-796"><span class="linenos">796</span></a>        <span class="n">request</span> <span class="o">=</span> <span class="n">RegisterFunctionRequest</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">metadata</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">description</span><span class="p">,</span>
+</span><span id="FrontendService.register_function-797"><a href="#FrontendService.register_function-797"><span class="linenos">797</span></a>                                          <span class="n">executor_type</span><span class="p">,</span> <span class="n">public</span><span class="p">,</span> <span class="n">payload</span><span class="p">,</span>
+</span><span id="FrontendService.register_function-798"><a href="#FrontendService.register_function-798"><span class="linenos">798</span></a>                                          <span class="n">arguments</span><span class="p">,</span> <span class="n">inputs</span><span class="p">,</span> <span class="n">outputs</span><span class="p">,</span>
+</span><span id="FrontendService.register_function-799"><a href="#FrontendService.register_function-799"><span class="linenos">799</span></a>                                          <span class="n">user_allowlist</span><span class="p">,</span> <span class="n">usage_quota</span><span class="p">)</span>
+</span><span id="FrontendService.register_function-800"><a href="#FrontendService.register_function-800"><span class="linenos">800</span></a>        <span class="n">_write_message</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">channel</span><span class="p">,</span> <span class="n">request</span><span class="p">)</span>
+</span><span id="FrontendService.register_function-801"><a href="#FrontendService.register_function-801"><span class="linenos">801</span></a>        <span class="n">response</span> <span class="o">=</span> <span class="n">_read_message</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">channel</span><span class="p">)</span>
+</span><span id="FrontendService.register_function-802"><a href="#FrontendService.register_function-802"><span class="linenos">802</span></a>        <span class="k">if</span> <span class="n">response</span><span class="p">[</span><span class="s2">&quot;result&quot;</span><span class="p">]</span> <span class="o">==</span> <span class="s2">&quot;ok&quot;</span><span class="p">:</span>
+</span><span id="FrontendService.register_function-803"><a href="#FrontendService.register_function-803"><span class="linenos">803</span></a>            <span class="k">return</span> <span class="n">response</span><span class="p">[</span><span class="s2">&quot;content&quot;</span><span class="p">][</span><span class="s2">&quot;function_id&quot;</span><span class="p">]</span>
+</span><span id="FrontendService.register_function-804"><a href="#FrontendService.register_function-804"><span class="linenos">804</span></a>        <span class="k">else</span><span class="p">:</span>
+</span><span id="FrontendService.register_function-805"><a href="#FrontendService.register_function-805"><span class="linenos">805</span></a>            <span class="n">reason</span> <span class="o">=</span> <span class="s2">&quot;unknown&quot;</span>
+</span><span id="FrontendService.register_function-806"><a href="#FrontendService.register_function-806"><span class="linenos">806</span></a>            <span class="k">if</span> <span class="s2">&quot;request_error&quot;</span> <span class="ow">in</span> <span class="n">response</span><span class="p">:</span>
+</span><span id="FrontendService.register_function-807"><a href="#FrontendService.register_function-807"><span class="linenos">807</span></a>                <span class="n">reason</span> <span class="o">=</span> <span class="n">response</span><span class="p">[</span><span class="s2">&quot;request_error&quot;</span><span class="p">]</span>
+</span><span id="FrontendService.register_function-808"><a href="#FrontendService.register_function-808"><span class="linenos">808</span></a>            <span class="k">raise</span> <span class="n">TeaclaveException</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Failed to register function (</span><span class="si">{</span><span class="n">reason</span><span class="si">}</span><span class="s2">)&quot;</span><span class="p">)</span>
+</span></pre></div>
+
+
+    
+
+                            </div>
+                            <div id="FrontendService.update_function" class="classattr">
+                                        <input id="FrontendService.update_function-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
+<div class="attr function">
+            
+        <span class="def">def</span>
+        <span class="name">update_function</span><span class="signature pdoc-code multiline">(<span class="param">	<span class="bp">self</span>,</span><span class="param">	<span class="n">function_id</span><span class="p">:</span> <span class="nb">str</span>,</span><span class="param">	<span class="n">name</span><span class="p">:</span> <span class="nb">str</span>,</span><span class="param">	<span class="n">description</span><span class="p">:</span> <span class="nb">str</span>,</span><sp [...]
+
+                <label class="view-source-button" for="FrontendService.update_function-view-source"><span>View Source</span></label>
+
+    </div>
+    <a class="headerlink" href="#FrontendService.update_function"></a>
+            <div class="pdoc-code codehilite"><pre><span></span><span id="FrontendService.update_function-810"><a href="#FrontendService.update_function-810"><span class="linenos">810</span></a>    <span class="k">def</span> <span class="nf">update_function</span><span class="p">(</span>
+</span><span id="FrontendService.update_function-811"><a href="#FrontendService.update_function-811"><span class="linenos">811</span></a>        <span class="bp">self</span><span class="p">,</span>
+</span><span id="FrontendService.update_function-812"><a href="#FrontendService.update_function-812"><span class="linenos">812</span></a>        <span class="n">function_id</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span>
+</span><span id="FrontendService.update_function-813"><a href="#FrontendService.update_function-813"><span class="linenos">813</span></a>        <span class="n">name</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span>
+</span><span id="FrontendService.update_function-814"><a href="#FrontendService.update_function-814"><span class="linenos">814</span></a>        <span class="n">description</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span>
+</span><span id="FrontendService.update_function-815"><a href="#FrontendService.update_function-815"><span class="linenos">815</span></a>        <span class="n">executor_type</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span>
+</span><span id="FrontendService.update_function-816"><a href="#FrontendService.update_function-816"><span class="linenos">816</span></a>        <span class="n">public</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span>
+</span><span id="FrontendService.update_function-817"><a href="#FrontendService.update_function-817"><span class="linenos">817</span></a>        <span class="n">payload</span><span class="p">:</span> <span class="n">List</span><span class="p">[</span><span class="nb">int</span><span class="p">]</span> <span class="o">=</span> <span class="p">[],</span>
+</span><span id="FrontendService.update_function-818"><a href="#FrontendService.update_function-818"><span class="linenos">818</span></a>        <span class="n">arguments</span><span class="p">:</span> <span class="n">List</span><span class="p">[</span><span class="n">FunctionArgument</span><span class="p">]</span> <span class="o">=</span> <span class="p">[],</span>
+</span><span id="FrontendService.update_function-819"><a href="#FrontendService.update_function-819"><span class="linenos">819</span></a>        <span class="n">inputs</span><span class="p">:</span> <span class="n">List</span><span class="p">[</span><span class="n">FunctionInput</span><span class="p">]</span> <span class="o">=</span> <span class="p">[],</span>
+</span><span id="FrontendService.update_function-820"><a href="#FrontendService.update_function-820"><span class="linenos">820</span></a>        <span class="n">outputs</span><span class="p">:</span> <span class="n">List</span><span class="p">[</span><span class="n">FunctionOutput</span><span class="p">]</span> <span class="o">=</span> <span class="p">[],</span>
+</span><span id="FrontendService.update_function-821"><a href="#FrontendService.update_function-821"><span class="linenos">821</span></a>        <span class="n">user_allowlist</span><span class="p">:</span> <span class="n">List</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="p">[],</span>
+</span><span id="FrontendService.update_function-822"><a href="#FrontendService.update_function-822"><span class="linenos">822</span></a>        <span class="n">usage_quota</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="o">-</span><span class="mi">1</span><span class="p">,</span>
+</span><span id="FrontendService.update_function-823"><a href="#FrontendService.update_function-823"><span class="linenos">823</span></a>    <span class="p">):</span>
+</span><span id="FrontendService.update_function-824"><a href="#FrontendService.update_function-824"><span class="linenos">824</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">check_metadata</span><span class="p">()</span>
+</span><span id="FrontendService.update_function-825"><a href="#FrontendService.update_function-825"><span class="linenos">825</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">check_channel</span><span class="p">()</span>
+</span><span id="FrontendService.update_function-826"><a href="#FrontendService.update_function-826"><span class="linenos">826</span></a>        <span class="n">request</span> <span class="o">=</span> <span class="n">UpdateFunctionRequest</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">metadata</span><span class="p">,</span> <span class="n">function_id</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span>
+</span><span id="FrontendService.update_function-827"><a href="#FrontendService.update_function-827"><span class="linenos">827</span></a>                                        <span class="n">description</span><span class="p">,</span> <span class="n">executor_type</span><span class="p">,</span> <span class="n">public</span><span class="p">,</span>
+</span><span id="FrontendService.update_function-828"><a href="#FrontendService.update_function-828"><span class="linenos">828</span></a>                                        <span class="n">payload</span><span class="p">,</span> <span class="n">arguments</span><span class="p">,</span> <span class="n">inputs</span><span class="p">,</span> <span class="n">outputs</span><span class="p">,</span>
+</span><span id="FrontendService.update_function-829"><a href="#FrontendService.update_function-829"><span class="linenos">829</span></a>                                        <span class="n">user_allowlist</span><span class="p">,</span> <span class="n">usage_quota</span><span class="p">)</span>
+</span><span id="FrontendService.update_function-830"><a href="#FrontendService.update_function-830"><span class="linenos">830</span></a>        <span class="n">_write_message</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">channel</span><span class="p">,</span> <span class="n">request</span><span class="p">)</span>
+</span><span id="FrontendService.update_function-831"><a href="#FrontendService.update_function-831"><span class="linenos">831</span></a>        <span class="n">response</span> <span class="o">=</span> <span class="n">_read_message</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">channel</span><span class="p">)</span>
+</span><span id="FrontendService.update_function-832"><a href="#FrontendService.update_function-832"><span class="linenos">832</span></a>        <span class="k">if</span> <span class="n">response</span><span class="p">[</span><span class="s2">&quot;result&quot;</span><span class="p">]</span> <span class="o">==</span> <span class="s2">&quot;ok&quot;</span><span class="p">:</span>
+</span><span id="FrontendService.update_function-833"><a href="#FrontendService.update_function-833"><span class="linenos">833</span></a>            <span class="k">return</span> <span class="n">response</span><span class="p">[</span><span class="s2">&quot;content&quot;</span><span class="p">][</span><span class="s2">&quot;function_id&quot;</span><span class="p">]</span>
+</span><span id="FrontendService.update_function-834"><a href="#FrontendService.update_function-834"><span class="linenos">834</span></a>        <span class="k">else</span><span class="p">:</span>
+</span><span id="FrontendService.update_function-835"><a href="#FrontendService.update_function-835"><span class="linenos">835</span></a>            <span class="n">reason</span> <span class="o">=</span> <span class="s2">&quot;unknown&quot;</span>
+</span><span id="FrontendService.update_function-836"><a href="#FrontendService.update_function-836"><span class="linenos">836</span></a>            <span class="k">if</span> <span class="s2">&quot;request_error&quot;</span> <span class="ow">in</span> <span class="n">response</span><span class="p">:</span>
+</span><span id="FrontendService.update_function-837"><a href="#FrontendService.update_function-837"><span class="linenos">837</span></a>                <span class="n">reason</span> <span class="o">=</span> <span class="n">response</span><span class="p">[</span><span class="s2">&quot;request_error&quot;</span><span class="p">]</span>
+</span><span id="FrontendService.update_function-838"><a href="#FrontendService.update_function-838"><span class="linenos">838</span></a>            <span class="k">raise</span> <span class="n">TeaclaveException</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Failed to update function (</span><span class="si">{</span><span class="n">reason</span><span class="si">}</span><span class="s2">)&quot;</span><span class="p">)</span>
+</span></pre></div>
+
+
+    
+
+                            </div>
+                            <div id="FrontendService.list_functions" class="classattr">
+                                        <input id="FrontendService.list_functions-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
+<div class="attr function">
+            
+        <span class="def">def</span>
+        <span class="name">list_functions</span><span class="signature pdoc-code condensed">(<span class="param"><span class="bp">self</span>, </span><span class="param"><span class="n">user_id</span><span class="p">:</span> <span class="nb">str</span></span><span class="return-annotation">):</span></span>
+
+                <label class="view-source-button" for="FrontendService.list_functions-view-source"><span>View Source</span></label>
+
+    </div>
+    <a class="headerlink" href="#FrontendService.list_functions"></a>
+            <div class="pdoc-code codehilite"><pre><span></span><span id="FrontendService.list_functions-840"><a href="#FrontendService.list_functions-840"><span class="linenos">840</span></a>    <span class="k">def</span> <span class="nf">list_functions</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">user_id</span><span class="p">:</span> <span class="nb">str</span><span class="p">):</span>
+</span><span id="FrontendService.list_functions-841"><a href="#FrontendService.list_functions-841"><span class="linenos">841</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">check_metadata</span><span class="p">()</span>
+</span><span id="FrontendService.list_functions-842"><a href="#FrontendService.list_functions-842"><span class="linenos">842</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">check_channel</span><span class="p">()</span>
+</span><span id="FrontendService.list_functions-843"><a href="#FrontendService.list_functions-843"><span class="linenos">843</span></a>        <span class="n">request</span> <span class="o">=</span> <span class="n">ListFunctionsRequest</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">metadata</span><span class="p">,</span> <span class="n">user_id</span><span class="p">)</span>
+</span><span id="FrontendService.list_functions-844"><a href="#FrontendService.list_functions-844"><span class="linenos">844</span></a>        <span class="n">_write_message</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">channel</span><span class="p">,</span> <span class="n">request</span><span class="p">)</span>
+</span><span id="FrontendService.list_functions-845"><a href="#FrontendService.list_functions-845"><span class="linenos">845</span></a>        <span class="n">response</span> <span class="o">=</span> <span class="n">_read_message</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">channel</span><span class="p">)</span>
+</span><span id="FrontendService.list_functions-846"><a href="#FrontendService.list_functions-846"><span class="linenos">846</span></a>        <span class="k">if</span> <span class="n">response</span><span class="p">[</span><span class="s2">&quot;result&quot;</span><span class="p">]</span> <span class="o">==</span> <span class="s2">&quot;ok&quot;</span><span class="p">:</span>
+</span><span id="FrontendService.list_functions-847"><a href="#FrontendService.list_functions-847"><span class="linenos">847</span></a>            <span class="k">return</span> <span class="n">response</span><span class="p">[</span><span class="s2">&quot;content&quot;</span><span class="p">]</span>
+</span><span id="FrontendService.list_functions-848"><a href="#FrontendService.list_functions-848"><span class="linenos">848</span></a>        <span class="k">else</span><span class="p">:</span>
+</span><span id="FrontendService.list_functions-849"><a href="#FrontendService.list_functions-849"><span class="linenos">849</span></a>            <span class="k">raise</span> <span class="n">TeaclaveException</span><span class="p">(</span><span class="s2">&quot;Failed to list functions&quot;</span><span class="p">)</span>
+</span></pre></div>
+
+
+    
+
+                            </div>
+                            <div id="FrontendService.get_function" class="classattr">
+                                        <input id="FrontendService.get_function-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
+<div class="attr function">
+            
+        <span class="def">def</span>
+        <span class="name">get_function</span><span class="signature pdoc-code condensed">(<span class="param"><span class="bp">self</span>, </span><span class="param"><span class="n">function_id</span><span class="p">:</span> <span class="nb">str</span></span><span class="return-annotation">):</span></span>
+
+                <label class="view-source-button" for="FrontendService.get_function-view-source"><span>View Source</span></label>
+
+    </div>
+    <a class="headerlink" href="#FrontendService.get_function"></a>
+            <div class="pdoc-code codehilite"><pre><span></span><span id="FrontendService.get_function-851"><a href="#FrontendService.get_function-851"><span class="linenos">851</span></a>    <span class="k">def</span> <span class="nf">get_function</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">function_id</span><span class="p">:</span> <span class="nb">str</span><span class="p">):</span>
+</span><span id="FrontendService.get_function-852"><a href="#FrontendService.get_function-852"><span class="linenos">852</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">check_metadata</span><span class="p">()</span>
+</span><span id="FrontendService.get_function-853"><a href="#FrontendService.get_function-853"><span class="linenos">853</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">check_channel</span><span class="p">()</span>
+</span><span id="FrontendService.get_function-854"><a href="#FrontendService.get_function-854"><span class="linenos">854</span></a>        <span class="n">request</span> <span class="o">=</span> <span class="n">GetFunctionRequest</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">metadata</span><span class="p">,</span> <span class="n">function_id</span><span class="p">)</span>
+</span><span id="FrontendService.get_function-855"><a href="#FrontendService.get_function-855"><span class="linenos">855</span></a>        <span class="n">_write_message</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">channel</span><span class="p">,</span> <span class="n">request</span><span class="p">)</span>
+</span><span id="FrontendService.get_function-856"><a href="#FrontendService.get_function-856"><span class="linenos">856</span></a>        <span class="n">response</span> <span class="o">=</span> <span class="n">_read_message</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">channel</span><span class="p">)</span>
+</span><span id="FrontendService.get_function-857"><a href="#FrontendService.get_function-857"><span class="linenos">857</span></a>        <span class="k">if</span> <span class="n">response</span><span class="p">[</span><span class="s2">&quot;result&quot;</span><span class="p">]</span> <span class="o">==</span> <span class="s2">&quot;ok&quot;</span><span class="p">:</span>
+</span><span id="FrontendService.get_function-858"><a href="#FrontendService.get_function-858"><span class="linenos">858</span></a>            <span class="k">return</span> <span class="n">response</span><span class="p">[</span><span class="s2">&quot;content&quot;</span><span class="p">]</span>
+</span><span id="FrontendService.get_function-859"><a href="#FrontendService.get_function-859"><span class="linenos">859</span></a>        <span class="k">else</span><span class="p">:</span>
+</span><span id="FrontendService.get_function-860"><a href="#FrontendService.get_function-860"><span class="linenos">860</span></a>            <span class="n">reason</span> <span class="o">=</span> <span class="s2">&quot;unknown&quot;</span>
+</span><span id="FrontendService.get_function-861"><a href="#FrontendService.get_function-861"><span class="linenos">861</span></a>            <span class="k">if</span> <span class="s2">&quot;request_error&quot;</span> <span class="ow">in</span> <span class="n">response</span><span class="p">:</span>
+</span><span id="FrontendService.get_function-862"><a href="#FrontendService.get_function-862"><span class="linenos">862</span></a>                <span class="n">reason</span> <span class="o">=</span> <span class="n">response</span><span class="p">[</span><span class="s2">&quot;request_error&quot;</span><span class="p">]</span>
+</span><span id="FrontendService.get_function-863"><a href="#FrontendService.get_function-863"><span class="linenos">863</span></a>            <span class="k">raise</span> <span class="n">TeaclaveException</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Failed to get function (</span><span class="si">{</span><span class="n">reason</span><span class="si">}</span><span class="s2">)&quot;</span><span class="p">)</span>
+</span></pre></div>
+
+
+    
+
+                            </div>
+                            <div id="FrontendService.get_function_usage_stats" class="classattr">
+                                        <input id="FrontendService.get_function_usage_stats-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
+<div class="attr function">
+            
+        <span class="def">def</span>
+        <span class="name">get_function_usage_stats</span><span class="signature pdoc-code condensed">(<span class="param"><span class="bp">self</span>, </span><span class="param"><span class="n">user_id</span><span class="p">:</span> <span class="nb">str</span>, </span><span class="param"><span class="n">function_id</span><span class="p">:</span> <span class="nb">str</span></span><span class="return-annotation">):</span></span>
+
+                <label class="view-source-button" for="FrontendService.get_function_usage_stats-view-source"><span>View Source</span></label>
+
+    </div>
+    <a class="headerlink" href="#FrontendService.get_function_usage_stats"></a>
+            <div class="pdoc-code codehilite"><pre><span></span><span id="FrontendService.get_function_usage_stats-865"><a href="#FrontendService.get_function_usage_stats-865"><span class="linenos">865</span></a>    <span class="k">def</span> <span class="nf">get_function_usage_stats</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">user_id</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">f [...]
+</span><span id="FrontendService.get_function_usage_stats-866"><a href="#FrontendService.get_function_usage_stats-866"><span class="linenos">866</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">check_metadata</span><span class="p">()</span>
+</span><span id="FrontendService.get_function_usage_stats-867"><a href="#FrontendService.get_function_usage_stats-867"><span class="linenos">867</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">check_channel</span><span class="p">()</span>
+</span><span id="FrontendService.get_function_usage_stats-868"><a href="#FrontendService.get_function_usage_stats-868"><span class="linenos">868</span></a>        <span class="n">request</span> <span class="o">=</span> <span class="n">GetFunctionUsageStatsRequest</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">metadata</span><span class="p">,</span> <span class="n">function_id</span><span class="p">)</span>
+</span><span id="FrontendService.get_function_usage_stats-869"><a href="#FrontendService.get_function_usage_stats-869"><span class="linenos">869</span></a>        <span class="n">_write_message</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">channel</span><span class="p">,</span> <span class="n">request</span><span class="p">)</span>
+</span><span id="FrontendService.get_function_usage_stats-870"><a href="#FrontendService.get_function_usage_stats-870"><span class="linenos">870</span></a>        <span class="n">response</span> <span class="o">=</span> <span class="n">_read_message</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">channel</span><span class="p">)</span>
+</span><span id="FrontendService.get_function_usage_stats-871"><a href="#FrontendService.get_function_usage_stats-871"><span class="linenos">871</span></a>        <span class="k">if</span> <span class="n">response</span><span class="p">[</span><span class="s2">&quot;result&quot;</span><span class="p">]</span> <span class="o">==</span> <span class="s2">&quot;ok&quot;</span><span class="p">:</span>
+</span><span id="FrontendService.get_function_usage_stats-872"><a href="#FrontendService.get_function_usage_stats-872"><span class="linenos">872</span></a>            <span class="k">return</span> <span class="n">response</span><span class="p">[</span><span class="s2">&quot;content&quot;</span><span class="p">]</span>
+</span><span id="FrontendService.get_function_usage_stats-873"><a href="#FrontendService.get_function_usage_stats-873"><span class="linenos">873</span></a>        <span class="k">else</span><span class="p">:</span>
+</span><span id="FrontendService.get_function_usage_stats-874"><a href="#FrontendService.get_function_usage_stats-874"><span class="linenos">874</span></a>            <span class="n">reason</span> <span class="o">=</span> <span class="s2">&quot;unknown&quot;</span>
+</span><span id="FrontendService.get_function_usage_stats-875"><a href="#FrontendService.get_function_usage_stats-875"><span class="linenos">875</span></a>            <span class="k">if</span> <span class="s2">&quot;request_error&quot;</span> <span class="ow">in</span> <span class="n">response</span><span class="p">:</span>
+</span><span id="FrontendService.get_function_usage_stats-876"><a href="#FrontendService.get_function_usage_stats-876"><span class="linenos">876</span></a>                <span class="n">reason</span> <span class="o">=</span> <span class="n">response</span><span class="p">[</span><span class="s2">&quot;request_error&quot;</span><span class="p">]</span>
+</span><span id="FrontendService.get_function_usage_stats-877"><a href="#FrontendService.get_function_usage_stats-877"><span class="linenos">877</span></a>            <span class="k">raise</span> <span class="n">TeaclaveException</span><span class="p">(</span>
+</span><span id="FrontendService.get_function_usage_stats-878"><a href="#FrontendService.get_function_usage_stats-878"><span class="linenos">878</span></a>                <span class="sa">f</span><span class="s2">&quot;Failed to get function usage statistics (</span><span class="si">{</span><span class="n">reason</span><span class="si">}</span><span class="s2">)&quot;</span><span class="p">)</span>
+</span></pre></div>
+
+
+    
+
+                            </div>
+                            <div id="FrontendService.delete_function" class="classattr">
+                                        <input id="FrontendService.delete_function-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
+<div class="attr function">
+            
+        <span class="def">def</span>
+        <span class="name">delete_function</span><span class="signature pdoc-code condensed">(<span class="param"><span class="bp">self</span>, </span><span class="param"><span class="n">function_id</span><span class="p">:</span> <span class="nb">str</span></span><span class="return-annotation">):</span></span>
+
+                <label class="view-source-button" for="FrontendService.delete_function-view-source"><span>View Source</span></label>
+
+    </div>
+    <a class="headerlink" href="#FrontendService.delete_function"></a>
+            <div class="pdoc-code codehilite"><pre><span></span><span id="FrontendService.delete_function-880"><a href="#FrontendService.delete_function-880"><span class="linenos">880</span></a>    <span class="k">def</span> <span class="nf">delete_function</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">function_id</span><span class="p">:</span> <span class="nb">str</span><span class="p">):</span>
+</span><span id="FrontendService.delete_function-881"><a href="#FrontendService.delete_function-881"><span class="linenos">881</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">check_metadata</span><span class="p">()</span>
+</span><span id="FrontendService.delete_function-882"><a href="#FrontendService.delete_function-882"><span class="linenos">882</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">check_channel</span><span class="p">()</span>
+</span><span id="FrontendService.delete_function-883"><a href="#FrontendService.delete_function-883"><span class="linenos">883</span></a>        <span class="n">request</span> <span class="o">=</span> <span class="n">DeleteFunctionRequest</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">metadata</span><span class="p">,</span> <span class="n">function_id</span><span class="p">)</span>
+</span><span id="FrontendService.delete_function-884"><a href="#FrontendService.delete_function-884"><span class="linenos">884</span></a>        <span class="n">_write_message</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">channel</span><span class="p">,</span> <span class="n">request</span><span class="p">)</span>
+</span><span id="FrontendService.delete_function-885"><a href="#FrontendService.delete_function-885"><span class="linenos">885</span></a>        <span class="n">response</span> <span class="o">=</span> <span class="n">_read_message</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">channel</span><span class="p">)</span>
+</span><span id="FrontendService.delete_function-886"><a href="#FrontendService.delete_function-886"><span class="linenos">886</span></a>        <span class="k">if</span> <span class="n">response</span><span class="p">[</span><span class="s2">&quot;result&quot;</span><span class="p">]</span> <span class="o">==</span> <span class="s2">&quot;ok&quot;</span><span class="p">:</span>
+</span><span id="FrontendService.delete_function-887"><a href="#FrontendService.delete_function-887"><span class="linenos">887</span></a>            <span class="k">return</span> <span class="n">response</span><span class="p">[</span><span class="s2">&quot;content&quot;</span><span class="p">]</span>
+</span><span id="FrontendService.delete_function-888"><a href="#FrontendService.delete_function-888"><span class="linenos">888</span></a>        <span class="k">else</span><span class="p">:</span>
+</span><span id="FrontendService.delete_function-889"><a href="#FrontendService.delete_function-889"><span class="linenos">889</span></a>            <span class="k">raise</span> <span class="n">TeaclaveException</span><span class="p">(</span><span class="s2">&quot;Failed to delete function&quot;</span><span class="p">)</span>
+</span></pre></div>
+
+
+    
+
+                            </div>
+                            <div id="FrontendService.disable_function" class="classattr">
+                                        <input id="FrontendService.disable_function-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
+<div class="attr function">
+            
+        <span class="def">def</span>
+        <span class="name">disable_function</span><span class="signature pdoc-code condensed">(<span class="param"><span class="bp">self</span>, </span><span class="param"><span class="n">function_id</span><span class="p">:</span> <span class="nb">str</span></span><span class="return-annotation">):</span></span>
+
+                <label class="view-source-button" for="FrontendService.disable_function-view-source"><span>View Source</span></label>
+
+    </div>
+    <a class="headerlink" href="#FrontendService.disable_function"></a>
+            <div class="pdoc-code codehilite"><pre><span></span><span id="FrontendService.disable_function-891"><a href="#FrontendService.disable_function-891"><span class="linenos">891</span></a>    <span class="k">def</span> <span class="nf">disable_function</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">function_id</span><span class="p">:</span> <span class="nb">str</span><span class="p">):</span>
+</span><span id="FrontendService.disable_function-892"><a href="#FrontendService.disable_function-892"><span class="linenos">892</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">check_metadata</span><span class="p">()</span>
+</span><span id="FrontendService.disable_function-893"><a href="#FrontendService.disable_function-893"><span class="linenos">893</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">check_channel</span><span class="p">()</span>
+</span><span id="FrontendService.disable_function-894"><a href="#FrontendService.disable_function-894"><span class="linenos">894</span></a>        <span class="n">request</span> <span class="o">=</span> <span class="n">DisableFunctionRequest</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">metadata</span><span class="p">,</span> <span class="n">function_id</span><span class="p">)</span>
+</span><span id="FrontendService.disable_function-895"><a href="#FrontendService.disable_function-895"><span class="linenos">895</span></a>        <span class="n">_write_message</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">channel</span><span class="p">,</span> <span class="n">request</span><span class="p">)</span>
+</span><span id="FrontendService.disable_function-896"><a href="#FrontendService.disable_function-896"><span class="linenos">896</span></a>        <span class="n">response</span> <span class="o">=</span> <span class="n">_read_message</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">channel</span><span class="p">)</span>
+</span><span id="FrontendService.disable_function-897"><a href="#FrontendService.disable_function-897"><span class="linenos">897</span></a>        <span class="k">if</span> <span class="n">response</span><span class="p">[</span><span class="s2">&quot;result&quot;</span><span class="p">]</span> <span class="o">==</span> <span class="s2">&quot;ok&quot;</span><span class="p">:</span>
+</span><span id="FrontendService.disable_function-898"><a href="#FrontendService.disable_function-898"><span class="linenos">898</span></a>            <span class="k">return</span> <span class="n">response</span><span class="p">[</span><span class="s2">&quot;content&quot;</span><span class="p">]</span>
+</span><span id="FrontendService.disable_function-899"><a href="#FrontendService.disable_function-899"><span class="linenos">899</span></a>        <span class="k">else</span><span class="p">:</span>
+</span><span id="FrontendService.disable_function-900"><a href="#FrontendService.disable_function-900"><span class="linenos">900</span></a>            <span class="k">raise</span> <span class="n">TeaclaveException</span><span class="p">(</span><span class="s2">&quot;Failed to disable function&quot;</span><span class="p">)</span>
+</span></pre></div>
+
+
+    
+
+                            </div>
+                            <div id="FrontendService.register_input_file" class="classattr">
+                                        <input id="FrontendService.register_input_file-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
+<div class="attr function">
+            
+        <span class="def">def</span>
+        <span class="name">register_input_file</span><span class="signature pdoc-code multiline">(<span class="param">	<span class="bp">self</span>,</span><span class="param">	<span class="n">url</span><span class="p">:</span> <span class="nb">str</span>,</span><span class="param">	<span class="n">schema</span><span class="p">:</span> <span class="nb">str</span>,</span><span class="param">	<span class="n">key</span><span class="p">:</span> <span class="n">List</span><span class="p">[</sp [...]
+
+                <label class="view-source-button" for="FrontendService.register_input_file-view-source"><span>View Source</span></label>
+
+    </div>
+    <a class="headerlink" href="#FrontendService.register_input_file"></a>
+            <div class="pdoc-code codehilite"><pre><span></span><span id="FrontendService.register_input_file-902"><a href="#FrontendService.register_input_file-902"><span class="linenos">902</span></a>    <span class="k">def</span> <span class="nf">register_input_file</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">url</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">schema</span><span c [...]
+</span><span id="FrontendService.register_input_file-903"><a href="#FrontendService.register_input_file-903"><span class="linenos">903</span></a>                            <span class="n">iv</span><span class="p">:</span> <span class="n">List</span><span class="p">[</span><span class="nb">int</span><span class="p">],</span> <span class="n">cmac</span><span class="p">:</span> <span class="n">List</span><span class="p">[</span><span class="nb">int</span><span class="p">]):</span>
+</span><span id="FrontendService.register_input_file-904"><a href="#FrontendService.register_input_file-904"><span class="linenos">904</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">check_metadata</span><span class="p">()</span>
+</span><span id="FrontendService.register_input_file-905"><a href="#FrontendService.register_input_file-905"><span class="linenos">905</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">check_channel</span><span class="p">()</span>
+</span><span id="FrontendService.register_input_file-906"><a href="#FrontendService.register_input_file-906"><span class="linenos">906</span></a>        <span class="n">request</span> <span class="o">=</span> <span class="n">RegisterInputFileRequest</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">metadata</span><span class="p">,</span> <span class="n">url</span><span class="p">,</span> <span class="n">cmac</span><span class="p">,</span>
+</span><span id="FrontendService.register_input_file-907"><a href="#FrontendService.register_input_file-907"><span class="linenos">907</span></a>                                           <span class="n">CryptoInfo</span><span class="p">(</span><span class="n">schema</span><span class="p">,</span> <span class="n">key</span><span class="p">,</span> <span class="n">iv</span><span class="p">))</span>
+</span><span id="FrontendService.register_input_file-908"><a href="#FrontendService.register_input_file-908"><span class="linenos">908</span></a>        <span class="n">_write_message</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">channel</span><span class="p">,</span> <span class="n">request</span><span class="p">)</span>
+</span><span id="FrontendService.register_input_file-909"><a href="#FrontendService.register_input_file-909"><span class="linenos">909</span></a>        <span class="n">response</span> <span class="o">=</span> <span class="n">_read_message</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">channel</span><span class="p">)</span>
+</span><span id="FrontendService.register_input_file-910"><a href="#FrontendService.register_input_file-910"><span class="linenos">910</span></a>        <span class="k">if</span> <span class="n">response</span><span class="p">[</span><span class="s2">&quot;result&quot;</span><span class="p">]</span> <span class="o">==</span> <span class="s2">&quot;ok&quot;</span><span class="p">:</span>
+</span><span id="FrontendService.register_input_file-911"><a href="#FrontendService.register_input_file-911"><span class="linenos">911</span></a>            <span class="k">return</span> <span class="n">response</span><span class="p">[</span><span class="s2">&quot;content&quot;</span><span class="p">][</span><span class="s2">&quot;data_id&quot;</span><span class="p">]</span>
+</span><span id="FrontendService.register_input_file-912"><a href="#FrontendService.register_input_file-912"><span class="linenos">912</span></a>        <span class="k">else</span><span class="p">:</span>
+</span><span id="FrontendService.register_input_file-913"><a href="#FrontendService.register_input_file-913"><span class="linenos">913</span></a>            <span class="n">reason</span> <span class="o">=</span> <span class="s2">&quot;unknown&quot;</span>
+</span><span id="FrontendService.register_input_file-914"><a href="#FrontendService.register_input_file-914"><span class="linenos">914</span></a>            <span class="k">if</span> <span class="s2">&quot;request_error&quot;</span> <span class="ow">in</span> <span class="n">response</span><span class="p">:</span>
+</span><span id="FrontendService.register_input_file-915"><a href="#FrontendService.register_input_file-915"><span class="linenos">915</span></a>                <span class="n">reason</span> <span class="o">=</span> <span class="n">response</span><span class="p">[</span><span class="s2">&quot;request_error&quot;</span><span class="p">]</span>
+</span><span id="FrontendService.register_input_file-916"><a href="#FrontendService.register_input_file-916"><span class="linenos">916</span></a>            <span class="k">raise</span> <span class="n">TeaclaveException</span><span class="p">(</span>
+</span><span id="FrontendService.register_input_file-917"><a href="#FrontendService.register_input_file-917"><span class="linenos">917</span></a>                <span class="sa">f</span><span class="s2">&quot;Failed to register input file (</span><span class="si">{</span><span class="n">reason</span><span class="si">}</span><span class="s2">)&quot;</span><span class="p">)</span>
+</span></pre></div>
+
+
+    
+
+                            </div>
+                            <div id="FrontendService.register_output_file" class="classattr">
+                                        <input id="FrontendService.register_output_file-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
+<div class="attr function">
+            
+        <span class="def">def</span>
+        <span class="name">register_output_file</span><span class="signature pdoc-code condensed">(<span class="param"><span class="bp">self</span>, </span><span class="param"><span class="n">url</span><span class="p">:</span> <span class="nb">str</span>, </span><span class="param"><span class="n">schema</span><span class="p">:</span> <span class="nb">str</span>, </span><span class="param"><span class="n">key</span><span class="p">:</span> <span class="n">List</span><span class="p">[</sp [...]
+
+                <label class="view-source-button" for="FrontendService.register_output_file-view-source"><span>View Source</span></label>
+
+    </div>
+    <a class="headerlink" href="#FrontendService.register_output_file"></a>
+            <div class="pdoc-code codehilite"><pre><span></span><span id="FrontendService.register_output_file-919"><a href="#FrontendService.register_output_file-919"><span class="linenos">919</span></a>    <span class="k">def</span> <span class="nf">register_output_file</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">url</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">schema</span><spa [...]
+</span><span id="FrontendService.register_output_file-920"><a href="#FrontendService.register_output_file-920"><span class="linenos">920</span></a>                             <span class="n">iv</span><span class="p">:</span> <span class="n">List</span><span class="p">[</span><span class="nb">int</span><span class="p">]):</span>
+</span><span id="FrontendService.register_output_file-921"><a href="#FrontendService.register_output_file-921"><span class="linenos">921</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">check_metadata</span><span class="p">()</span>
+</span><span id="FrontendService.register_output_file-922"><a href="#FrontendService.register_output_file-922"><span class="linenos">922</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">check_channel</span><span class="p">()</span>
+</span><span id="FrontendService.register_output_file-923"><a href="#FrontendService.register_output_file-923"><span class="linenos">923</span></a>        <span class="n">request</span> <span class="o">=</span> <span class="n">RegisterOutputFileRequest</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">metadata</span><span class="p">,</span> <span class="n">url</span><span class="p">,</span>
+</span><span id="FrontendService.register_output_file-924"><a href="#FrontendService.register_output_file-924"><span class="linenos">924</span></a>                                            <span class="n">CryptoInfo</span><span class="p">(</span><span class="n">schema</span><span class="p">,</span> <span class="n">key</span><span class="p">,</span> <span class="n">iv</span><span class="p">))</span>
+</span><span id="FrontendService.register_output_file-925"><a href="#FrontendService.register_output_file-925"><span class="linenos">925</span></a>        <span class="n">_write_message</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">channel</span><span class="p">,</span> <span class="n">request</span><span class="p">)</span>
+</span><span id="FrontendService.register_output_file-926"><a href="#FrontendService.register_output_file-926"><span class="linenos">926</span></a>        <span class="n">response</span> <span class="o">=</span> <span class="n">_read_message</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">channel</span><span class="p">)</span>
+</span><span id="FrontendService.register_output_file-927"><a href="#FrontendService.register_output_file-927"><span class="linenos">927</span></a>        <span class="k">if</span> <span class="n">response</span><span class="p">[</span><span class="s2">&quot;result&quot;</span><span class="p">]</span> <span class="o">==</span> <span class="s2">&quot;ok&quot;</span><span class="p">:</span>
+</span><span id="FrontendService.register_output_file-928"><a href="#FrontendService.register_output_file-928"><span class="linenos">928</span></a>            <span class="k">return</span> <span class="n">response</span><span class="p">[</span><span class="s2">&quot;content&quot;</span><span class="p">][</span><span class="s2">&quot;data_id&quot;</span><span class="p">]</span>
+</span><span id="FrontendService.register_output_file-929"><a href="#FrontendService.register_output_file-929"><span class="linenos">929</span></a>        <span class="k">else</span><span class="p">:</span>
+</span><span id="FrontendService.register_output_file-930"><a href="#FrontendService.register_output_file-930"><span class="linenos">930</span></a>            <span class="n">reason</span> <span class="o">=</span> <span class="s2">&quot;unknown&quot;</span>
+</span><span id="FrontendService.register_output_file-931"><a href="#FrontendService.register_output_file-931"><span class="linenos">931</span></a>            <span class="k">if</span> <span class="s2">&quot;request_error&quot;</span> <span class="ow">in</span> <span class="n">response</span><span class="p">:</span>
+</span><span id="FrontendService.register_output_file-932"><a href="#FrontendService.register_output_file-932"><span class="linenos">932</span></a>                <span class="n">reason</span> <span class="o">=</span> <span class="n">response</span><span class="p">[</span><span class="s2">&quot;request_error&quot;</span><span class="p">]</span>
+</span><span id="FrontendService.register_output_file-933"><a href="#FrontendService.register_output_file-933"><span class="linenos">933</span></a>            <span class="k">raise</span> <span class="n">TeaclaveException</span><span class="p">(</span>
+</span><span id="FrontendService.register_output_file-934"><a href="#FrontendService.register_output_file-934"><span class="linenos">934</span></a>                <span class="sa">f</span><span class="s2">&quot;Failed to register output file (</span><span class="si">{</span><span class="n">reason</span><span class="si">}</span><span class="s2">)&quot;</span><span class="p">)</span>
+</span></pre></div>
+
+
+    
+
+                            </div>
+                            <div id="FrontendService.create_task" class="classattr">
+                                        <input id="FrontendService.create_task-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
+<div class="attr function">
+            
+        <span class="def">def</span>
+        <span class="name">create_task</span><span class="signature pdoc-code multiline">(<span class="param">	<span class="bp">self</span>,</span><span class="param">	<span class="n">function_id</span><span class="p">:</span> <span class="nb">str</span>,</span><span class="param">	<span class="n">function_arguments</span><span class="p">:</span> <span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Any</span><span class="p [...]
+
+                <label class="view-source-button" for="FrontendService.create_task-view-source"><span>View Source</span></label>
+
+    </div>
+    <a class="headerlink" href="#FrontendService.create_task"></a>
+            <div class="pdoc-code codehilite"><pre><span></span><span id="FrontendService.create_task-936"><a href="#FrontendService.create_task-936"><span class="linenos">936</span></a>    <span class="k">def</span> <span class="nf">create_task</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span>
+</span><span id="FrontendService.create_task-937"><a href="#FrontendService.create_task-937"><span class="linenos">937</span></a>                    <span class="n">function_id</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span>
+</span><span id="FrontendService.create_task-938"><a href="#FrontendService.create_task-938"><span class="linenos">938</span></a>                    <span class="n">function_arguments</span><span class="p">:</span> <span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Any</span><span class="p">],</span>
+</span><span id="FrontendService.create_task-939"><a href="#FrontendService.create_task-939"><span class="linenos">939</span></a>                    <span class="n">executor</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span>
+</span><span id="FrontendService.create_task-940"><a href="#FrontendService.create_task-940"><span class="linenos">940</span></a>                    <span class="n">inputs_ownership</span><span class="p">:</span> <span class="n">List</span><span class="p">[</span><span class="n">OwnerList</span><span class="p">]</span> <span class="o">=</span> <span class="p">[],</span>
+</span><span id="FrontendService.create_task-941"><a href="#FrontendService.create_task-941"><span class="linenos">941</span></a>                    <span class="n">outputs_ownership</span><span class="p">:</span> <span class="n">List</span><span class="p">[</span><span class="n">OwnerList</span><span class="p">]</span> <span class="o">=</span> <span class="p">[]):</span>
+</span><span id="FrontendService.create_task-942"><a href="#FrontendService.create_task-942"><span class="linenos">942</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">check_metadata</span><span class="p">()</span>
+</span><span id="FrontendService.create_task-943"><a href="#FrontendService.create_task-943"><span class="linenos">943</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">check_channel</span><span class="p">()</span>
+</span><span id="FrontendService.create_task-944"><a href="#FrontendService.create_task-944"><span class="linenos">944</span></a>        <span class="n">function_arguments</span> <span class="o">=</span> <span class="n">json</span><span class="o">.</span><span class="n">dumps</span><span class="p">(</span><span class="n">function_arguments</span><span class="p">)</span>
+</span><span id="FrontendService.create_task-945"><a href="#FrontendService.create_task-945"><span class="linenos">945</span></a>        <span class="n">request</span> <span class="o">=</span> <span class="n">CreateTaskRequest</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">metadata</span><span class="p">,</span> <span class="n">function_id</span><span class="p">,</span>
+</span><span id="FrontendService.create_task-946"><a href="#FrontendService.create_task-946"><span class="linenos">946</span></a>                                    <span class="n">function_arguments</span><span class="p">,</span> <span class="n">executor</span><span class="p">,</span>
+</span><span id="FrontendService.create_task-947"><a href="#FrontendService.create_task-947"><span class="linenos">947</span></a>                                    <span class="n">inputs_ownership</span><span class="p">,</span> <span class="n">outputs_ownership</span><span class="p">)</span>
+</span><span id="FrontendService.create_task-948"><a href="#FrontendService.create_task-948"><span class="linenos">948</span></a>        <span class="n">_write_message</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">channel</span><span class="p">,</span> <span class="n">request</span><span class="p">)</span>
+</span><span id="FrontendService.create_task-949"><a href="#FrontendService.create_task-949"><span class="linenos">949</span></a>        <span class="n">response</span> <span class="o">=</span> <span class="n">_read_message</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">channel</span><span class="p">)</span>
+</span><span id="FrontendService.create_task-950"><a href="#FrontendService.create_task-950"><span class="linenos">950</span></a>        <span class="k">if</span> <span class="n">response</span><span class="p">[</span><span class="s2">&quot;result&quot;</span><span class="p">]</span> <span class="o">==</span> <span class="s2">&quot;ok&quot;</span><span class="p">:</span>
+</span><span id="FrontendService.create_task-951"><a href="#FrontendService.create_task-951"><span class="linenos">951</span></a>            <span class="k">return</span> <span class="n">response</span><span class="p">[</span><span class="s2">&quot;content&quot;</span><span class="p">][</span><span class="s2">&quot;task_id&quot;</span><span class="p">]</span>
+</span><span id="FrontendService.create_task-952"><a href="#FrontendService.create_task-952"><span class="linenos">952</span></a>        <span class="k">else</span><span class="p">:</span>
+</span><span id="FrontendService.create_task-953"><a href="#FrontendService.create_task-953"><span class="linenos">953</span></a>            <span class="n">reason</span> <span class="o">=</span> <span class="s2">&quot;unknown&quot;</span>
+</span><span id="FrontendService.create_task-954"><a href="#FrontendService.create_task-954"><span class="linenos">954</span></a>            <span class="k">if</span> <span class="s2">&quot;request_error&quot;</span> <span class="ow">in</span> <span class="n">response</span><span class="p">:</span>
+</span><span id="FrontendService.create_task-955"><a href="#FrontendService.create_task-955"><span class="linenos">955</span></a>                <span class="n">reason</span> <span class="o">=</span> <span class="n">response</span><span class="p">[</span><span class="s2">&quot;request_error&quot;</span><span class="p">]</span>
+</span><span id="FrontendService.create_task-956"><a href="#FrontendService.create_task-956"><span class="linenos">956</span></a>            <span class="k">raise</span> <span class="n">TeaclaveException</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Failed to create task (</span><span class="si">{</span><span class="n">reason</span><span class="si">}</span><span class="s2">)&quot;</span><span class="p">)</span>
+</span></pre></div>
+
+
+    
+
+                            </div>
+                            <div id="FrontendService.assign_data_to_task" class="classattr">
+                                        <input id="FrontendService.assign_data_to_task-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
+<div class="attr function">
+            
+        <span class="def">def</span>
+        <span class="name">assign_data_to_task</span><span class="signature pdoc-code multiline">(<span class="param">	<span class="bp">self</span>,</span><span class="param">	<span class="n">task_id</span><span class="p">:</span> <span class="nb">str</span>,</span><span class="param">	<span class="n">inputs</span><span class="p">:</span> <span class="n">List</span><span class="p">[</span><span class="n"><a href="#DataMap">python.teaclave.DataMap</a></span><span class="p">]</span>,</span [...]
+
+                <label class="view-source-button" for="FrontendService.assign_data_to_task-view-source"><span>View Source</span></label>
+
+    </div>
+    <a class="headerlink" href="#FrontendService.assign_data_to_task"></a>
+            <div class="pdoc-code codehilite"><pre><span></span><span id="FrontendService.assign_data_to_task-958"><a href="#FrontendService.assign_data_to_task-958"><span class="linenos">958</span></a>    <span class="k">def</span> <span class="nf">assign_data_to_task</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">task_id</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">inputs</span><sp [...]
+</span><span id="FrontendService.assign_data_to_task-959"><a href="#FrontendService.assign_data_to_task-959"><span class="linenos">959</span></a>                            <span class="n">outputs</span><span class="p">:</span> <span class="n">List</span><span class="p">[</span><span class="n">DataMap</span><span class="p">]):</span>
+</span><span id="FrontendService.assign_data_to_task-960"><a href="#FrontendService.assign_data_to_task-960"><span class="linenos">960</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">check_metadata</span><span class="p">()</span>
+</span><span id="FrontendService.assign_data_to_task-961"><a href="#FrontendService.assign_data_to_task-961"><span class="linenos">961</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">check_channel</span><span class="p">()</span>
+</span><span id="FrontendService.assign_data_to_task-962"><a href="#FrontendService.assign_data_to_task-962"><span class="linenos">962</span></a>        <span class="n">request</span> <span class="o">=</span> <span class="n">AssignDataRequest</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">metadata</span><span class="p">,</span> <span class="n">task_id</span><span class="p">,</span> <span class="n">inputs</span><span class="p">,</span> <s [...]
+</span><span id="FrontendService.assign_data_to_task-963"><a href="#FrontendService.assign_data_to_task-963"><span class="linenos">963</span></a>        <span class="n">_write_message</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">channel</span><span class="p">,</span> <span class="n">request</span><span class="p">)</span>
+</span><span id="FrontendService.assign_data_to_task-964"><a href="#FrontendService.assign_data_to_task-964"><span class="linenos">964</span></a>        <span class="n">response</span> <span class="o">=</span> <span class="n">_read_message</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">channel</span><span class="p">)</span>
+</span><span id="FrontendService.assign_data_to_task-965"><a href="#FrontendService.assign_data_to_task-965"><span class="linenos">965</span></a>        <span class="k">if</span> <span class="n">response</span><span class="p">[</span><span class="s2">&quot;result&quot;</span><span class="p">]</span> <span class="o">==</span> <span class="s2">&quot;ok&quot;</span><span class="p">:</span>
+</span><span id="FrontendService.assign_data_to_task-966"><a href="#FrontendService.assign_data_to_task-966"><span class="linenos">966</span></a>            <span class="k">pass</span>
+</span><span id="FrontendService.assign_data_to_task-967"><a href="#FrontendService.assign_data_to_task-967"><span class="linenos">967</span></a>        <span class="k">else</span><span class="p">:</span>
+</span><span id="FrontendService.assign_data_to_task-968"><a href="#FrontendService.assign_data_to_task-968"><span class="linenos">968</span></a>            <span class="n">reason</span> <span class="o">=</span> <span class="s2">&quot;unknown&quot;</span>
+</span><span id="FrontendService.assign_data_to_task-969"><a href="#FrontendService.assign_data_to_task-969"><span class="linenos">969</span></a>            <span class="k">if</span> <span class="s2">&quot;request_error&quot;</span> <span class="ow">in</span> <span class="n">response</span><span class="p">:</span>
+</span><span id="FrontendService.assign_data_to_task-970"><a href="#FrontendService.assign_data_to_task-970"><span class="linenos">970</span></a>                <span class="n">reason</span> <span class="o">=</span> <span class="n">response</span><span class="p">[</span><span class="s2">&quot;request_error&quot;</span><span class="p">]</span>
+</span><span id="FrontendService.assign_data_to_task-971"><a href="#FrontendService.assign_data_to_task-971"><span class="linenos">971</span></a>            <span class="k">raise</span> <span class="n">TeaclaveException</span><span class="p">(</span>
+</span><span id="FrontendService.assign_data_to_task-972"><a href="#FrontendService.assign_data_to_task-972"><span class="linenos">972</span></a>                <span class="sa">f</span><span class="s2">&quot;Failed to assign data to task (</span><span class="si">{</span><span class="n">reason</span><span class="si">}</span><span class="s2">)&quot;</span><span class="p">)</span>
+</span></pre></div>
+
+
+    
+
+                            </div>
+                            <div id="FrontendService.approve_task" class="classattr">
+                                        <input id="FrontendService.approve_task-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
+<div class="attr function">
+            
+        <span class="def">def</span>
+        <span class="name">approve_task</span><span class="signature pdoc-code condensed">(<span class="param"><span class="bp">self</span>, </span><span class="param"><span class="n">task_id</span><span class="p">:</span> <span class="nb">str</span></span><span class="return-annotation">):</span></span>
+
+                <label class="view-source-button" for="FrontendService.approve_task-view-source"><span>View Source</span></label>
+
+    </div>
+    <a class="headerlink" href="#FrontendService.approve_task"></a>
+            <div class="pdoc-code codehilite"><pre><span></span><span id="FrontendService.approve_task-974"><a href="#FrontendService.approve_task-974"><span class="linenos">974</span></a>    <span class="k">def</span> <span class="nf">approve_task</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">task_id</span><span class="p">:</span> <span class="nb">str</span><span class="p">):</span>
+</span><span id="FrontendService.approve_task-975"><a href="#FrontendService.approve_task-975"><span class="linenos">975</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">check_metadata</span><span class="p">()</span>
+</span><span id="FrontendService.approve_task-976"><a href="#FrontendService.approve_task-976"><span class="linenos">976</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">check_channel</span><span class="p">()</span>
+</span><span id="FrontendService.approve_task-977"><a href="#FrontendService.approve_task-977"><span class="linenos">977</span></a>        <span class="n">request</span> <span class="o">=</span> <span class="n">ApproveTaskRequest</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">metadata</span><span class="p">,</span> <span class="n">task_id</span><span class="p">)</span>
+</span><span id="FrontendService.approve_task-978"><a href="#FrontendService.approve_task-978"><span class="linenos">978</span></a>        <span class="n">_write_message</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">channel</span><span class="p">,</span> <span class="n">request</span><span class="p">)</span>
+</span><span id="FrontendService.approve_task-979"><a href="#FrontendService.approve_task-979"><span class="linenos">979</span></a>        <span class="n">response</span> <span class="o">=</span> <span class="n">_read_message</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">channel</span><span class="p">)</span>
+</span><span id="FrontendService.approve_task-980"><a href="#FrontendService.approve_task-980"><span class="linenos">980</span></a>        <span class="k">if</span> <span class="n">response</span><span class="p">[</span><span class="s2">&quot;result&quot;</span><span class="p">]</span> <span class="o">==</span> <span class="s2">&quot;ok&quot;</span><span class="p">:</span>
+</span><span id="FrontendService.approve_task-981"><a href="#FrontendService.approve_task-981"><span class="linenos">981</span></a>            <span class="k">pass</span>
+</span><span id="FrontendService.approve_task-982"><a href="#FrontendService.approve_task-982"><span class="linenos">982</span></a>        <span class="k">else</span><span class="p">:</span>
+</span><span id="FrontendService.approve_task-983"><a href="#FrontendService.approve_task-983"><span class="linenos">983</span></a>            <span class="n">reason</span> <span class="o">=</span> <span class="s2">&quot;unknown&quot;</span>
+</span><span id="FrontendService.approve_task-984"><a href="#FrontendService.approve_task-984"><span class="linenos">984</span></a>            <span class="k">if</span> <span class="s2">&quot;request_error&quot;</span> <span class="ow">in</span> <span class="n">response</span><span class="p">:</span>
+</span><span id="FrontendService.approve_task-985"><a href="#FrontendService.approve_task-985"><span class="linenos">985</span></a>                <span class="n">reason</span> <span class="o">=</span> <span class="n">response</span><span class="p">[</span><span class="s2">&quot;request_error&quot;</span><span class="p">]</span>
+</span><span id="FrontendService.approve_task-986"><a href="#FrontendService.approve_task-986"><span class="linenos">986</span></a>            <span class="k">raise</span> <span class="n">TeaclaveException</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Failed to approve task (</span><span class="si">{</span><span class="n">reason</span><span class="si">}</span><span class="s2">)&quot;</span><span class="p">)</span>
+</span></pre></div>
+
+
+    
+
+                            </div>
+                            <div id="FrontendService.invoke_task" class="classattr">
+                                        <input id="FrontendService.invoke_task-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
+<div class="attr function">
+            
+        <span class="def">def</span>
+        <span class="name">invoke_task</span><span class="signature pdoc-code condensed">(<span class="param"><span class="bp">self</span>, </span><span class="param"><span class="n">task_id</span><span class="p">:</span> <span class="nb">str</span></span><span class="return-annotation">):</span></span>
+
+                <label class="view-source-button" for="FrontendService.invoke_task-view-source"><span>View Source</span></label>
+
+    </div>
+    <a class="headerlink" href="#FrontendService.invoke_task"></a>
+            <div class="pdoc-code codehilite"><pre><span></span><span id="FrontendService.invoke_task-988"><a href="#FrontendService.invoke_task-988"><span class="linenos"> 988</span></a>    <span class="k">def</span> <span class="nf">invoke_task</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">task_id</span><span class="p">:</span> <span class="nb">str</span><span class="p">):</span>
+</span><span id="FrontendService.invoke_task-989"><a href="#FrontendService.invoke_task-989"><span class="linenos"> 989</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">check_metadata</span><span class="p">()</span>
+</span><span id="FrontendService.invoke_task-990"><a href="#FrontendService.invoke_task-990"><span class="linenos"> 990</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">check_channel</span><span class="p">()</span>
+</span><span id="FrontendService.invoke_task-991"><a href="#FrontendService.invoke_task-991"><span class="linenos"> 991</span></a>        <span class="n">request</span> <span class="o">=</span> <span class="n">InvokeTaskRequest</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">metadata</span><span class="p">,</span> <span class="n">task_id</span><span class="p">)</span>
+</span><span id="FrontendService.invoke_task-992"><a href="#FrontendService.invoke_task-992"><span class="linenos"> 992</span></a>        <span class="n">_write_message</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">channel</span><span class="p">,</span> <span class="n">request</span><span class="p">)</span>
+</span><span id="FrontendService.invoke_task-993"><a href="#FrontendService.invoke_task-993"><span class="linenos"> 993</span></a>        <span class="n">response</span> <span class="o">=</span> <span class="n">_read_message</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">channel</span><span class="p">)</span>
+</span><span id="FrontendService.invoke_task-994"><a href="#FrontendService.invoke_task-994"><span class="linenos"> 994</span></a>        <span class="k">if</span> <span class="n">response</span><span class="p">[</span><span class="s2">&quot;result&quot;</span><span class="p">]</span> <span class="o">==</span> <span class="s2">&quot;ok&quot;</span><span class="p">:</span>
+</span><span id="FrontendService.invoke_task-995"><a href="#FrontendService.invoke_task-995"><span class="linenos"> 995</span></a>            <span class="k">pass</span>
+</span><span id="FrontendService.invoke_task-996"><a href="#FrontendService.invoke_task-996"><span class="linenos"> 996</span></a>        <span class="k">else</span><span class="p">:</span>
+</span><span id="FrontendService.invoke_task-997"><a href="#FrontendService.invoke_task-997"><span class="linenos"> 997</span></a>            <span class="n">reason</span> <span class="o">=</span> <span class="s2">&quot;unknown&quot;</span>
+</span><span id="FrontendService.invoke_task-998"><a href="#FrontendService.invoke_task-998"><span class="linenos"> 998</span></a>            <span class="k">if</span> <span class="s2">&quot;request_error&quot;</span> <span class="ow">in</span> <span class="n">response</span><span class="p">:</span>
+</span><span id="FrontendService.invoke_task-999"><a href="#FrontendService.invoke_task-999"><span class="linenos"> 999</span></a>                <span class="n">reason</span> <span class="o">=</span> <span class="n">response</span><span class="p">[</span><span class="s2">&quot;request_error&quot;</span><span class="p">]</span>
+</span><span id="FrontendService.invoke_task-1000"><a href="#FrontendService.invoke_task-1000"><span class="linenos">1000</span></a>            <span class="k">raise</span> <span class="n">TeaclaveException</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Failed to invoke task (</span><span class="si">{</span><span class="n">reason</span><span class="si">}</span><span class="s2">)&quot;</span><span class="p">)</span>
+</span></pre></div>
+
+
+    
+
+                            </div>
+                            <div id="FrontendService.cancel_task" class="classattr">
+                                        <input id="FrontendService.cancel_task-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
+<div class="attr function">
+            
+        <span class="def">def</span>
+        <span class="name">cancel_task</span><span class="signature pdoc-code condensed">(<span class="param"><span class="bp">self</span>, </span><span class="param"><span class="n">task_id</span><span class="p">:</span> <span class="nb">str</span></span><span class="return-annotation">):</span></span>
+
+                <label class="view-source-button" for="FrontendService.cancel_task-view-source"><span>View Source</span></label>
+
+    </div>
+    <a class="headerlink" href="#FrontendService.cancel_task"></a>
+            <div class="pdoc-code codehilite"><pre><span></span><span id="FrontendService.cancel_task-1002"><a href="#FrontendService.cancel_task-1002"><span class="linenos">1002</span></a>    <span class="k">def</span> <span class="nf">cancel_task</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">task_id</span><span class="p">:</span> <span class="nb">str</span><span class="p">):</span>
+</span><span id="FrontendService.cancel_task-1003"><a href="#FrontendService.cancel_task-1003"><span class="linenos">1003</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">check_metadata</span><span class="p">()</span>
+</span><span id="FrontendService.cancel_task-1004"><a href="#FrontendService.cancel_task-1004"><span class="linenos">1004</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">check_channel</span><span class="p">()</span>
+</span><span id="FrontendService.cancel_task-1005"><a href="#FrontendService.cancel_task-1005"><span class="linenos">1005</span></a>        <span class="n">request</span> <span class="o">=</span> <span class="n">CancelTaskRequest</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">metadata</span><span class="p">,</span> <span class="n">task_id</span><span class="p">)</span>
+</span><span id="FrontendService.cancel_task-1006"><a href="#FrontendService.cancel_task-1006"><span class="linenos">1006</span></a>        <span class="n">_write_message</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">channel</span><span class="p">,</span> <span class="n">request</span><span class="p">)</span>
+</span><span id="FrontendService.cancel_task-1007"><a href="#FrontendService.cancel_task-1007"><span class="linenos">1007</span></a>        <span class="n">response</span> <span class="o">=</span> <span class="n">_read_message</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">channel</span><span class="p">)</span>
+</span><span id="FrontendService.cancel_task-1008"><a href="#FrontendService.cancel_task-1008"><span class="linenos">1008</span></a>        <span class="k">if</span> <span class="n">response</span><span class="p">[</span><span class="s2">&quot;result&quot;</span><span class="p">]</span> <span class="o">==</span> <span class="s2">&quot;ok&quot;</span><span class="p">:</span>
+</span><span id="FrontendService.cancel_task-1009"><a href="#FrontendService.cancel_task-1009"><span class="linenos">1009</span></a>            <span class="k">pass</span>
+</span><span id="FrontendService.cancel_task-1010"><a href="#FrontendService.cancel_task-1010"><span class="linenos">1010</span></a>        <span class="k">else</span><span class="p">:</span>
+</span><span id="FrontendService.cancel_task-1011"><a href="#FrontendService.cancel_task-1011"><span class="linenos">1011</span></a>            <span class="n">reason</span> <span class="o">=</span> <span class="s2">&quot;unknown&quot;</span>
+</span><span id="FrontendService.cancel_task-1012"><a href="#FrontendService.cancel_task-1012"><span class="linenos">1012</span></a>            <span class="k">if</span> <span class="s2">&quot;request_error&quot;</span> <span class="ow">in</span> <span class="n">response</span><span class="p">:</span>
+</span><span id="FrontendService.cancel_task-1013"><a href="#FrontendService.cancel_task-1013"><span class="linenos">1013</span></a>                <span class="n">reason</span> <span class="o">=</span> <span class="n">response</span><span class="p">[</span><span class="s2">&quot;request_error&quot;</span><span class="p">]</span>
+</span><span id="FrontendService.cancel_task-1014"><a href="#FrontendService.cancel_task-1014"><span class="linenos">1014</span></a>            <span class="k">raise</span> <span class="n">TeaclaveException</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Failed to cancel task (</span><span class="si">{</span><span class="n">reason</span><span class="si">}</span><span class="s2">)&quot;</span><span class="p">)</span>
+</span></pre></div>
+
+
+    
+
+                            </div>
+                            <div id="FrontendService.get_task" class="classattr">
+                                        <input id="FrontendService.get_task-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
+<div class="attr function">
+            
+        <span class="def">def</span>
+        <span class="name">get_task</span><span class="signature pdoc-code condensed">(<span class="param"><span class="bp">self</span>, </span><span class="param"><span class="n">task_id</span><span class="p">:</span> <span class="nb">str</span></span><span class="return-annotation">) -> <span class="nb">dict</span>:</span></span>
+
+                <label class="view-source-button" for="FrontendService.get_task-view-source"><span>View Source</span></label>
+
+    </div>
+    <a class="headerlink" href="#FrontendService.get_task"></a>
+            <div class="pdoc-code codehilite"><pre><span></span><span id="FrontendService.get_task-1016"><a href="#FrontendService.get_task-1016"><span class="linenos">1016</span></a>    <span class="k">def</span> <span class="nf">get_task</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">task_id</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">dict</span><span [...]
+</span><span id="FrontendService.get_task-1017"><a href="#FrontendService.get_task-1017"><span class="linenos">1017</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">check_metadata</span><span class="p">()</span>
+</span><span id="FrontendService.get_task-1018"><a href="#FrontendService.get_task-1018"><span class="linenos">1018</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">check_channel</span><span class="p">()</span>
+</span><span id="FrontendService.get_task-1019"><a href="#FrontendService.get_task-1019"><span class="linenos">1019</span></a>        <span class="n">request</span> <span class="o">=</span> <span class="n">GetTaskRequest</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">metadata</span><span class="p">,</span> <span class="n">task_id</span><span class="p">)</span>
+</span><span id="FrontendService.get_task-1020"><a href="#FrontendService.get_task-1020"><span class="linenos">1020</span></a>
+</span><span id="FrontendService.get_task-1021"><a href="#FrontendService.get_task-1021"><span class="linenos">1021</span></a>        <span class="n">_write_message</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">channel</span><span class="p">,</span> <span class="n">request</span><span class="p">)</span>
+</span><span id="FrontendService.get_task-1022"><a href="#FrontendService.get_task-1022"><span class="linenos">1022</span></a>        <span class="n">response</span> <span class="o">=</span> <span class="n">_read_message</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">channel</span><span class="p">)</span>
+</span><span id="FrontendService.get_task-1023"><a href="#FrontendService.get_task-1023"><span class="linenos">1023</span></a>        <span class="k">if</span> <span class="n">response</span><span class="p">[</span><span class="s2">&quot;result&quot;</span><span class="p">]</span> <span class="o">!=</span> <span class="s2">&quot;ok&quot;</span><span class="p">:</span>
+</span><span id="FrontendService.get_task-1024"><a href="#FrontendService.get_task-1024"><span class="linenos">1024</span></a>            <span class="n">reason</span> <span class="o">=</span> <span class="s2">&quot;unknown&quot;</span>
+</span><span id="FrontendService.get_task-1025"><a href="#FrontendService.get_task-1025"><span class="linenos">1025</span></a>            <span class="k">if</span> <span class="s2">&quot;request_error&quot;</span> <span class="ow">in</span> <span class="n">response</span><span class="p">:</span>
+</span><span id="FrontendService.get_task-1026"><a href="#FrontendService.get_task-1026"><span class="linenos">1026</span></a>                <span class="n">reason</span> <span class="o">=</span> <span class="n">response</span><span class="p">[</span><span class="s2">&quot;request_error&quot;</span><span class="p">]</span>
+</span><span id="FrontendService.get_task-1027"><a href="#FrontendService.get_task-1027"><span class="linenos">1027</span></a>            <span class="k">raise</span> <span class="n">TeaclaveException</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Failed to get task result (</span><span class="si">{</span><span class="n">reason</span><span class="si">}</span><span class="s2">)&quot;</span><span class="p">)</span>
+</span><span id="FrontendService.get_task-1028"><a href="#FrontendService.get_task-1028"><span class="linenos">1028</span></a>        <span class="k">return</span> <span class="n">response</span><span class="p">[</span><span class="s2">&quot;content&quot;</span><span class="p">]</span>
+</span></pre></div>
+
+
+    
+
+                            </div>
+                            <div id="FrontendService.get_task_result" class="classattr">
+                                        <input id="FrontendService.get_task_result-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
+<div class="attr function">
+            
+        <span class="def">def</span>
+        <span class="name">get_task_result</span><span class="signature pdoc-code condensed">(<span class="param"><span class="bp">self</span>, </span><span class="param"><span class="n">task_id</span><span class="p">:</span> <span class="nb">str</span></span><span class="return-annotation">):</span></span>
+
+                <label class="view-source-button" for="FrontendService.get_task_result-view-source"><span>View Source</span></label>
+
+    </div>
+    <a class="headerlink" href="#FrontendService.get_task_result"></a>
+            <div class="pdoc-code codehilite"><pre><span></span><span id="FrontendService.get_task_result-1030"><a href="#FrontendService.get_task_result-1030"><span class="linenos">1030</span></a>    <span class="k">def</span> <span class="nf">get_task_result</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">task_id</span><span class="p">:</span> <span class="nb">str</span><span class="p">):</span>
+</span><span id="FrontendService.get_task_result-1031"><a href="#FrontendService.get_task_result-1031"><span class="linenos">1031</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">check_metadata</span><span class="p">()</span>
+</span><span id="FrontendService.get_task_result-1032"><a href="#FrontendService.get_task_result-1032"><span class="linenos">1032</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">check_channel</span><span class="p">()</span>
+</span><span id="FrontendService.get_task_result-1033"><a href="#FrontendService.get_task_result-1033"><span class="linenos">1033</span></a>        <span class="n">request</span> <span class="o">=</span> <span class="n">GetTaskRequest</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">metadata</span><span class="p">,</span> <span class="n">task_id</span><span class="p">)</span>
+</span><span id="FrontendService.get_task_result-1034"><a href="#FrontendService.get_task_result-1034"><span class="linenos">1034</span></a>
+</span><span id="FrontendService.get_task_result-1035"><a href="#FrontendService.get_task_result-1035"><span class="linenos">1035</span></a>        <span class="k">while</span> <span class="kc">True</span><span class="p">:</span>
+</span><span id="FrontendService.get_task_result-1036"><a href="#FrontendService.get_task_result-1036"><span class="linenos">1036</span></a>            <span class="n">_write_message</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">channel</span><span class="p">,</span> <span class="n">request</span><span class="p">)</span>
+</span><span id="FrontendService.get_task_result-1037"><a href="#FrontendService.get_task_result-1037"><span class="linenos">1037</span></a>            <span class="n">response</span> <span class="o">=</span> <span class="n">_read_message</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">channel</span><span class="p">)</span>
+</span><span id="FrontendService.get_task_result-1038"><a href="#FrontendService.get_task_result-1038"><span class="linenos">1038</span></a>            <span class="k">if</span> <span class="n">response</span><span class="p">[</span><span class="s2">&quot;result&quot;</span><span class="p">]</span> <span class="o">!=</span> <span class="s2">&quot;ok&quot;</span><span class="p">:</span>
+</span><span id="FrontendService.get_task_result-1039"><a href="#FrontendService.get_task_result-1039"><span class="linenos">1039</span></a>                <span class="n">reason</span> <span class="o">=</span> <span class="s2">&quot;unknown&quot;</span>
+</span><span id="FrontendService.get_task_result-1040"><a href="#FrontendService.get_task_result-1040"><span class="linenos">1040</span></a>                <span class="k">if</span> <span class="s2">&quot;request_error&quot;</span> <span class="ow">in</span> <span class="n">response</span><span class="p">:</span>
+</span><span id="FrontendService.get_task_result-1041"><a href="#FrontendService.get_task_result-1041"><span class="linenos">1041</span></a>                    <span class="n">reason</span> <span class="o">=</span> <span class="n">response</span><span class="p">[</span><span class="s2">&quot;request_error&quot;</span><span class="p">]</span>
+</span><span id="FrontendService.get_task_result-1042"><a href="#FrontendService.get_task_result-1042"><span class="linenos">1042</span></a>                <span class="k">raise</span> <span class="n">TeaclaveException</span><span class="p">(</span>
+</span><span id="FrontendService.get_task_result-1043"><a href="#FrontendService.get_task_result-1043"><span class="linenos">1043</span></a>                    <span class="sa">f</span><span class="s2">&quot;Failed to get task result (</span><span class="si">{</span><span class="n">reason</span><span class="si">}</span><span class="s2">)&quot;</span><span class="p">)</span>
+</span><span id="FrontendService.get_task_result-1044"><a href="#FrontendService.get_task_result-1044"><span class="linenos">1044</span></a>            <span class="n">time</span><span class="o">.</span><span class="n">sleep</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span>
+</span><span id="FrontendService.get_task_result-1045"><a href="#FrontendService.get_task_result-1045"><span class="linenos">1045</span></a>            <span class="k">if</span> <span class="n">response</span><span class="p">[</span><span class="s2">&quot;content&quot;</span><span class="p">][</span><span class="s2">&quot;status&quot;</span><span class="p">]</span> <span class="o">==</span> <span class="n">TaskStatus</span><span class="o">.</span><span class="n">Finished</span><span clas [...]
+</span><span id="FrontendService.get_task_result-1046"><a href="#FrontendService.get_task_result-1046"><span class="linenos">1046</span></a>                <span class="k">break</span>
+</span><span id="FrontendService.get_task_result-1047"><a href="#FrontendService.get_task_result-1047"><span class="linenos">1047</span></a>            <span class="k">elif</span> <span class="n">response</span><span class="p">[</span><span class="s2">&quot;content&quot;</span><span class="p">][</span><span class="s2">&quot;status&quot;</span><span class="p">]</span> <span class="o">==</span> <span class="n">TaskStatus</span><span class="o">.</span><span class="n">Canceled</span><span cl [...]
+</span><span id="FrontendService.get_task_result-1048"><a href="#FrontendService.get_task_result-1048"><span class="linenos">1048</span></a>                <span class="k">raise</span> <span class="n">TeaclaveException</span><span class="p">(</span>
+</span><span id="FrontendService.get_task_result-1049"><a href="#FrontendService.get_task_result-1049"><span class="linenos">1049</span></a>                    <span class="s2">&quot;Task Canceled, Error: &quot;</span> <span class="o">+</span>
+</span><span id="FrontendService.get_task_result-1050"><a href="#FrontendService.get_task_result-1050"><span class="linenos">1050</span></a>                    <span class="n">response</span><span class="p">[</span><span class="s2">&quot;content&quot;</span><span class="p">][</span><span class="s2">&quot;result&quot;</span><span class="p">][</span><span class="s2">&quot;result&quot;</span><span class="p">][</span><span class="s2">&quot;Err&quot;</span><span class="p">][</span><span class [...]
+</span><span id="FrontendService.get_task_result-1051"><a href="#FrontendService.get_task_result-1051"><span class="linenos">1051</span></a>            <span class="k">elif</span> <span class="n">response</span><span class="p">[</span><span class="s2">&quot;content&quot;</span><span class="p">][</span><span class="s2">&quot;status&quot;</span><span class="p">]</span> <span class="o">==</span> <span class="n">TaskStatus</span><span class="o">.</span><span class="n">Failed</span><span clas [...]
+</span><span id="FrontendService.get_task_result-1052"><a href="#FrontendService.get_task_result-1052"><span class="linenos">1052</span></a>                <span class="k">raise</span> <span class="n">TeaclaveException</span><span class="p">(</span>
+</span><span id="FrontendService.get_task_result-1053"><a href="#FrontendService.get_task_result-1053"><span class="linenos">1053</span></a>                    <span class="s2">&quot;Task Failed, Error: &quot;</span> <span class="o">+</span>
+</span><span id="FrontendService.get_task_result-1054"><a href="#FrontendService.get_task_result-1054"><span class="linenos">1054</span></a>                    <span class="n">response</span><span class="p">[</span><span class="s2">&quot;content&quot;</span><span class="p">][</span><span class="s2">&quot;result&quot;</span><span class="p">][</span><span class="s2">&quot;result&quot;</span><span class="p">][</span><span class="s2">&quot;Err&quot;</span><span class="p">][</span><span class [...]
+</span><span id="FrontendService.get_task_result-1055"><a href="#FrontendService.get_task_result-1055"><span class="linenos">1055</span></a>
+</span><span id="FrontendService.get_task_result-1056"><a href="#FrontendService.get_task_result-1056"><span class="linenos">1056</span></a>        <span class="k">return</span> <span class="n">response</span><span class="p">[</span><span class="s2">&quot;content&quot;</span><span class="p">][</span><span class="s2">&quot;result&quot;</span><span class="p">][</span><span class="s2">&quot;result&quot;</span><span class="p">][</span><span class="s2">&quot;Ok&quot;</span><span class="p">][< [...]
+</span></pre></div>
+
+
+    
+
+                            </div>
+                            <div id="FrontendService.get_output_cmac_by_tag" class="classattr">
+                                        <input id="FrontendService.get_output_cmac_by_tag-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
+<div class="attr function">
+            
+        <span class="def">def</span>
+        <span class="name">get_output_cmac_by_tag</span><span class="signature pdoc-code condensed">(<span class="param"><span class="bp">self</span>, </span><span class="param"><span class="n">task_id</span><span class="p">:</span> <span class="nb">str</span>, </span><span class="param"><span class="n">tag</span><span class="p">:</span> <span class="nb">str</span></span><span class="return-annotation">):</span></span>
+
+                <label class="view-source-button" for="FrontendService.get_output_cmac_by_tag-view-source"><span>View Source</span></label>
+
+    </div>
+    <a class="headerlink" href="#FrontendService.get_output_cmac_by_tag"></a>
+            <div class="pdoc-code codehilite"><pre><span></span><span id="FrontendService.get_output_cmac_by_tag-1058"><a href="#FrontendService.get_output_cmac_by_tag-1058"><span class="linenos">1058</span></a>    <span class="k">def</span> <span class="nf">get_output_cmac_by_tag</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">task_id</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">tag< [...]
+</span><span id="FrontendService.get_output_cmac_by_tag-1059"><a href="#FrontendService.get_output_cmac_by_tag-1059"><span class="linenos">1059</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">check_metadata</span><span class="p">()</span>
+</span><span id="FrontendService.get_output_cmac_by_tag-1060"><a href="#FrontendService.get_output_cmac_by_tag-1060"><span class="linenos">1060</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">check_channel</span><span class="p">()</span>
+</span><span id="FrontendService.get_output_cmac_by_tag-1061"><a href="#FrontendService.get_output_cmac_by_tag-1061"><span class="linenos">1061</span></a>        <span class="n">request</span> <span class="o">=</span> <span class="n">GetTaskRequest</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">metadata</span><span class="p">,</span> <span class="n">task_id</span><span class="p">)</span>
+</span><span id="FrontendService.get_output_cmac_by_tag-1062"><a href="#FrontendService.get_output_cmac_by_tag-1062"><span class="linenos">1062</span></a>        <span class="k">while</span> <span class="kc">True</span><span class="p">:</span>
+</span><span id="FrontendService.get_output_cmac_by_tag-1063"><a href="#FrontendService.get_output_cmac_by_tag-1063"><span class="linenos">1063</span></a>            <span class="n">_write_message</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">channel</span><span class="p">,</span> <span class="n">request</span><span class="p">)</span>
+</span><span id="FrontendService.get_output_cmac_by_tag-1064"><a href="#FrontendService.get_output_cmac_by_tag-1064"><span class="linenos">1064</span></a>            <span class="n">response</span> <span class="o">=</span> <span class="n">_read_message</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">channel</span><span class="p">)</span>
+</span><span id="FrontendService.get_output_cmac_by_tag-1065"><a href="#FrontendService.get_output_cmac_by_tag-1065"><span class="linenos">1065</span></a>            <span class="k">if</span> <span class="n">response</span><span class="p">[</span><span class="s2">&quot;result&quot;</span><span class="p">]</span> <span class="o">!=</span> <span class="s2">&quot;ok&quot;</span><span class="p">:</span>
+</span><span id="FrontendService.get_output_cmac_by_tag-1066"><a href="#FrontendService.get_output_cmac_by_tag-1066"><span class="linenos">1066</span></a>                <span class="n">reason</span> <span class="o">=</span> <span class="s2">&quot;unknown&quot;</span>
+</span><span id="FrontendService.get_output_cmac_by_tag-1067"><a href="#FrontendService.get_output_cmac_by_tag-1067"><span class="linenos">1067</span></a>                <span class="k">if</span> <span class="s2">&quot;request_error&quot;</span> <span class="ow">in</span> <span class="n">response</span><span class="p">:</span>
+</span><span id="FrontendService.get_output_cmac_by_tag-1068"><a href="#FrontendService.get_output_cmac_by_tag-1068"><span class="linenos">1068</span></a>                    <span class="n">reason</span> <span class="o">=</span> <span class="n">response</span><span class="p">[</span><span class="s2">&quot;request_error&quot;</span><span class="p">]</span>
+</span><span id="FrontendService.get_output_cmac_by_tag-1069"><a href="#FrontendService.get_output_cmac_by_tag-1069"><span class="linenos">1069</span></a>                <span class="k">raise</span> <span class="n">TeaclaveException</span><span class="p">(</span>
+</span><span id="FrontendService.get_output_cmac_by_tag-1070"><a href="#FrontendService.get_output_cmac_by_tag-1070"><span class="linenos">1070</span></a>                    <span class="sa">f</span><span class="s2">&quot;Failed to get output cmac by tag (</span><span class="si">{</span><span class="n">reason</span><span class="si">}</span><span class="s2">)&quot;</span><span class="p">)</span>
+</span><span id="FrontendService.get_output_cmac_by_tag-1071"><a href="#FrontendService.get_output_cmac_by_tag-1071"><span class="linenos">1071</span></a>            <span class="n">time</span><span class="o">.</span><span class="n">sleep</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span>
+</span><span id="FrontendService.get_output_cmac_by_tag-1072"><a href="#FrontendService.get_output_cmac_by_tag-1072"><span class="linenos">1072</span></a>            <span class="k">if</span> <span class="n">response</span><span class="p">[</span><span class="s2">&quot;content&quot;</span><span class="p">][</span><span class="s2">&quot;status&quot;</span><span class="p">]</span> <span class="o">==</span> <span class="n">TaskStatus</span><span class="o">.</span><span class="n">Finished</s [...]
+</span><span id="FrontendService.get_output_cmac_by_tag-1073"><a href="#FrontendService.get_output_cmac_by_tag-1073"><span class="linenos">1073</span></a>                <span class="k">break</span>
+</span><span id="FrontendService.get_output_cmac_by_tag-1074"><a href="#FrontendService.get_output_cmac_by_tag-1074"><span class="linenos">1074</span></a>
+</span><span id="FrontendService.get_output_cmac_by_tag-1075"><a href="#FrontendService.get_output_cmac_by_tag-1075"><span class="linenos">1075</span></a>        <span class="k">return</span> <span class="n">response</span><span class="p">[</span><span class="s2">&quot;content&quot;</span><span class="p">][</span><span class="s2">&quot;result&quot;</span><span class="p">][</span><span class="s2">&quot;result&quot;</span><span class="p">][</span><span class="s2">&quot;Ok&quot;</span><span [...]
+</span></pre></div>
+
+
+    
+
+                            </div>
+                            <div class="inherited">
+                                <h5>Inherited Members</h5>
+                                <dl>
+                                    <div><dt><a href="#TeaclaveService">TeaclaveService</a></dt>
+                                <dd id="FrontendService.close" class="function"><a href="#TeaclaveService.close">close</a></dd>
+                <dd id="FrontendService.check_channel" class="function"><a href="#TeaclaveService.check_channel">check_channel</a></dd>
+                <dd id="FrontendService.check_metadata" class="function"><a href="#TeaclaveService.check_metadata">check_metadata</a></dd>
+                <dd id="FrontendService.connect" class="function"><a href="#TeaclaveService.connect">connect</a></dd>
+
+            </div>
+                                </dl>
+                            </div>
+                </section>
+                <section id="AuthenticationService">
+                            <input id="AuthenticationService-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
+<div class="attr class">
+            
+    <span class="def">class</span>
+    <span class="name">AuthenticationService</span><wbr>(<span class="base"><a href="#TeaclaveService">TeaclaveService</a></span>):
+
+                <label class="view-source-button" for="AuthenticationService-view-source"><span>View Source</span></label>
+
+    </div>
+    <a class="headerlink" href="#AuthenticationService"></a>
+            <div class="pdoc-code codehilite"><pre><span></span><span id="AuthenticationService-397"><a href="#AuthenticationService-397"><span class="linenos">397</span></a><span class="k">class</span> <span class="nc">AuthenticationService</span><span class="p">(</span><span class="n">TeaclaveService</span><span class="p">):</span>
+</span><span id="AuthenticationService-398"><a href="#AuthenticationService-398"><span class="linenos">398</span></a><span class="w">    </span><span class="sd">&quot;&quot;&quot;</span>
+</span><span id="AuthenticationService-399"><a href="#AuthenticationService-399"><span class="linenos">399</span></a><span class="sd">    Establish trusted channel with the authentication service and provide</span>
+</span><span id="AuthenticationService-400"><a href="#AuthenticationService-400"><span class="linenos">400</span></a><span class="sd">    clients to send request through RPC.</span>
+</span><span id="AuthenticationService-401"><a href="#AuthenticationService-401"><span class="linenos">401</span></a>
+</span><span id="AuthenticationService-402"><a href="#AuthenticationService-402"><span class="linenos">402</span></a><span class="sd">    Args:</span>
+</span><span id="AuthenticationService-403"><a href="#AuthenticationService-403"><span class="linenos">403</span></a>
+</span><span id="AuthenticationService-404"><a href="#AuthenticationService-404"><span class="linenos">404</span></a><span class="sd">        address: The address of the remote services in tuple.</span>
+</span><span id="AuthenticationService-405"><a href="#AuthenticationService-405"><span class="linenos">405</span></a><span class="sd">        as_root_ca_cert_path: Root CA certification of the attestation services</span>
+</span><span id="AuthenticationService-406"><a href="#AuthenticationService-406"><span class="linenos">406</span></a><span class="sd">            to verify the attestation report.</span>
+</span><span id="AuthenticationService-407"><a href="#AuthenticationService-407"><span class="linenos">407</span></a><span class="sd">        enclave_info_path: Path of enclave info to verify the remote service in</span>
+</span><span id="AuthenticationService-408"><a href="#AuthenticationService-408"><span class="linenos">408</span></a><span class="sd">            the attestation report.</span>
+</span><span id="AuthenticationService-409"><a href="#AuthenticationService-409"><span class="linenos">409</span></a><span class="sd">    &quot;&quot;&quot;</span>
+</span><span id="AuthenticationService-410"><a href="#AuthenticationService-410"><span class="linenos">410</span></a>
+</span><span id="AuthenticationService-411"><a href="#AuthenticationService-411"><span class="linenos">411</span></a>    <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span>
+</span><span id="AuthenticationService-412"><a href="#AuthenticationService-412"><span class="linenos">412</span></a>                 <span class="n">address</span><span class="p">:</span> <span class="n">Tuple</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">int</span><span class="p">],</span>
+</span><span id="AuthenticationService-413"><a href="#AuthenticationService-413"><span class="linenos">413</span></a>                 <span class="n">as_root_ca_cert_path</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span>
+</span><span id="AuthenticationService-414"><a href="#AuthenticationService-414"><span class="linenos">414</span></a>                 <span class="n">enclave_info_path</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span>
+</span><span id="AuthenticationService-415"><a href="#AuthenticationService-415"><span class="linenos">415</span></a>                 <span class="n">dump_report</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span>
+</span><span id="AuthenticationService-416"><a href="#AuthenticationService-416"><span class="linenos">416</span></a>        <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span><span class="s2">&quot;authentication&quot;</span><span class="p">,</span> <span class="n">address</span><span class="p">,</span> <span class="n">as_root_ca_cert_path</span><span class="p">,</span>
+</span><span id="AuthenticationService-417"><a href="#AuthenticationService-417"><span class="linenos">417</span></a>                         <span class="n">enclave_info_path</span><span class="p">,</span> <span class="n">dump_report</span><span class="p">)</span>
+</span><span id="AuthenticationService-418"><a href="#AuthenticationService-418"><span class="linenos">418</span></a>
+</span><span id="AuthenticationService-419"><a href="#AuthenticationService-419"><span class="linenos">419</span></a>    <span class="k">def</span> <span class="nf">user_register</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">user_id</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">user_password</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span clas [...]
+</span><span id="AuthenticationService-420"><a href="#AuthenticationService-420"><span class="linenos">420</span></a>                      <span class="n">attribute</span><span class="p">:</span> <span class="nb">str</span><span class="p">):</span>
+</span><span id="AuthenticationService-421"><a href="#AuthenticationService-421"><span class="linenos">421</span></a><span class="w">        </span><span class="sd">&quot;&quot;&quot;Register a new user.</span>
+</span><span id="AuthenticationService-422"><a href="#AuthenticationService-422"><span class="linenos">422</span></a>
+</span><span id="AuthenticationService-423"><a href="#AuthenticationService-423"><span class="linenos">423</span></a><span class="sd">        Args:</span>
+</span><span id="AuthenticationService-424"><a href="#AuthenticationService-424"><span class="linenos">424</span></a>
+</span><span id="AuthenticationService-425"><a href="#AuthenticationService-425"><span class="linenos">425</span></a><span class="sd">            user_id: User ID.</span>
+</span><span id="AuthenticationService-426"><a href="#AuthenticationService-426"><span class="linenos">426</span></a><span class="sd">            user_password: Password.</span>
+</span><span id="AuthenticationService-427"><a href="#AuthenticationService-427"><span class="linenos">427</span></a><span class="sd">            role: Role of user.</span>
+</span><span id="AuthenticationService-428"><a href="#AuthenticationService-428"><span class="linenos">428</span></a><span class="sd">            attribute: Attribute related to the role.</span>
+</span><span id="AuthenticationService-429"><a href="#AuthenticationService-429"><span class="linenos">429</span></a><span class="sd">        &quot;&quot;&quot;</span>
+</span><span id="AuthenticationService-430"><a href="#AuthenticationService-430"><span class="linenos">430</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">check_channel</span><span class="p">()</span>
+</span><span id="AuthenticationService-431"><a href="#AuthenticationService-431"><span class="linenos">431</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">check_metadata</span><span class="p">()</span>
+</span><span id="AuthenticationService-432"><a href="#AuthenticationService-432"><span class="linenos">432</span></a>        <span class="n">request</span> <span class="o">=</span> <span class="n">UserRegisterRequest</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">metadata</span><span class="p">,</span> <span class="n">user_id</span><span class="p">,</span> <span class="n">user_password</span><span class="p">,</span>
+</span><span id="AuthenticationService-433"><a href="#AuthenticationService-433"><span class="linenos">433</span></a>                                      <span class="n">role</span><span class="p">,</span> <span class="n">attribute</span><span class="p">)</span>
+</span><span id="AuthenticationService-434"><a href="#AuthenticationService-434"><span class="linenos">434</span></a>        <span class="n">_write_message</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">channel</span><span class="p">,</span> <span class="n">request</span><span class="p">)</span>
+</span><span id="AuthenticationService-435"><a href="#AuthenticationService-435"><span class="linenos">435</span></a>        <span class="n">response</span> <span class="o">=</span> <span class="n">_read_message</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">channel</span><span class="p">)</span>
+</span><span id="AuthenticationService-436"><a href="#AuthenticationService-436"><span class="linenos">436</span></a>        <span class="k">if</span> <span class="n">response</span><span class="p">[</span><span class="s2">&quot;result&quot;</span><span class="p">]</span> <span class="o">==</span> <span class="s2">&quot;ok&quot;</span><span class="p">:</span>
+</span><span id="AuthenticationService-437"><a href="#AuthenticationService-437"><span class="linenos">437</span></a>            <span class="k">pass</span>
+</span><span id="AuthenticationService-438"><a href="#AuthenticationService-438"><span class="linenos">438</span></a>        <span class="k">else</span><span class="p">:</span>
+</span><span id="AuthenticationService-439"><a href="#AuthenticationService-439"><span class="linenos">439</span></a>            <span class="n">reason</span> <span class="o">=</span> <span class="s2">&quot;unknown&quot;</span>
+</span><span id="AuthenticationService-440"><a href="#AuthenticationService-440"><span class="linenos">440</span></a>            <span class="k">if</span> <span class="s2">&quot;request_error&quot;</span> <span class="ow">in</span> <span class="n">response</span><span class="p">:</span>
+</span><span id="AuthenticationService-441"><a href="#AuthenticationService-441"><span class="linenos">441</span></a>                <span class="n">reason</span> <span class="o">=</span> <span class="n">response</span><span class="p">[</span><span class="s2">&quot;request_error&quot;</span><span class="p">]</span>
+</span><span id="AuthenticationService-442"><a href="#AuthenticationService-442"><span class="linenos">442</span></a>            <span class="k">raise</span> <span class="n">TeaclaveException</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Failed to register user (</span><span class="si">{</span><span class="n">reason</span><span class="si">}</span><span class="s2">)&quot;</span><span class="p">)</span>
+</span><span id="AuthenticationService-443"><a href="#AuthenticationService-443"><span class="linenos">443</span></a>
+</span><span id="AuthenticationService-444"><a href="#AuthenticationService-444"><span class="linenos">444</span></a>    <span class="k">def</span> <span class="nf">user_update</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">user_id</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">user_password</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class= [...]
+</span><span id="AuthenticationService-445"><a href="#AuthenticationService-445"><span class="linenos">445</span></a>                    <span class="n">attribute</span><span class="p">:</span> <span class="nb">str</span><span class="p">):</span>
+</span><span id="AuthenticationService-446"><a href="#AuthenticationService-446"><span class="linenos">446</span></a><span class="w">        </span><span class="sd">&quot;&quot;&quot;Update an existing user.</span>
+</span><span id="AuthenticationService-447"><a href="#AuthenticationService-447"><span class="linenos">447</span></a>
+</span><span id="AuthenticationService-448"><a href="#AuthenticationService-448"><span class="linenos">448</span></a><span class="sd">        Args:</span>
+</span><span id="AuthenticationService-449"><a href="#AuthenticationService-449"><span class="linenos">449</span></a>
+</span><span id="AuthenticationService-450"><a href="#AuthenticationService-450"><span class="linenos">450</span></a><span class="sd">            user_id: User ID.</span>
+</span><span id="AuthenticationService-451"><a href="#AuthenticationService-451"><span class="linenos">451</span></a><span class="sd">            user_password: Password.</span>
+</span><span id="AuthenticationService-452"><a href="#AuthenticationService-452"><span class="linenos">452</span></a><span class="sd">            role: Role of user.</span>
+</span><span id="AuthenticationService-453"><a href="#AuthenticationService-453"><span class="linenos">453</span></a><span class="sd">            attribute: Attribute related to the role.</span>
+</span><span id="AuthenticationService-454"><a href="#AuthenticationService-454"><span class="linenos">454</span></a><span class="sd">        &quot;&quot;&quot;</span>
+</span><span id="AuthenticationService-455"><a href="#AuthenticationService-455"><span class="linenos">455</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">check_channel</span><span class="p">()</span>
+</span><span id="AuthenticationService-456"><a href="#AuthenticationService-456"><span class="linenos">456</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">check_metadata</span><span class="p">()</span>
+</span><span id="AuthenticationService-457"><a href="#AuthenticationService-457"><span class="linenos">457</span></a>        <span class="n">request</span> <span class="o">=</span> <span class="n">UserUpdateRequest</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">metadata</span><span class="p">,</span> <span class="n">user_id</span><span class="p">,</span> <span class="n">user_password</span><span class="p">,</span>
+</span><span id="AuthenticationService-458"><a href="#AuthenticationService-458"><span class="linenos">458</span></a>                                    <span class="n">role</span><span class="p">,</span> <span class="n">attribute</span><span class="p">)</span>
+</span><span id="AuthenticationService-459"><a href="#AuthenticationService-459"><span class="linenos">459</span></a>        <span class="n">_write_message</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">channel</span><span class="p">,</span> <span class="n">request</span><span class="p">)</span>
+</span><span id="AuthenticationService-460"><a href="#AuthenticationService-460"><span class="linenos">460</span></a>        <span class="n">response</span> <span class="o">=</span> <span class="n">_read_message</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">channel</span><span class="p">)</span>
+</span><span id="AuthenticationService-461"><a href="#AuthenticationService-461"><span class="linenos">461</span></a>        <span class="k">if</span> <span class="n">response</span><span class="p">[</span><span class="s2">&quot;result&quot;</span><span class="p">]</span> <span class="o">==</span> <span class="s2">&quot;ok&quot;</span><span class="p">:</span>
+</span><span id="AuthenticationService-462"><a href="#AuthenticationService-462"><span class="linenos">462</span></a>            <span class="k">pass</span>
+</span><span id="AuthenticationService-463"><a href="#AuthenticationService-463"><span class="linenos">463</span></a>        <span class="k">else</span><span class="p">:</span>
+</span><span id="AuthenticationService-464"><a href="#AuthenticationService-464"><span class="linenos">464</span></a>            <span class="n">reason</span> <span class="o">=</span> <span class="s2">&quot;unknown&quot;</span>
+</span><span id="AuthenticationService-465"><a href="#AuthenticationService-465"><span class="linenos">465</span></a>            <span class="k">if</span> <span class="s2">&quot;request_error&quot;</span> <span class="ow">in</span> <span class="n">response</span><span class="p">:</span>
+</span><span id="AuthenticationService-466"><a href="#AuthenticationService-466"><span class="linenos">466</span></a>                <span class="n">reason</span> <span class="o">=</span> <span class="n">response</span><span class="p">[</span><span class="s2">&quot;request_error&quot;</span><span class="p">]</span>
+</span><span id="AuthenticationService-467"><a href="#AuthenticationService-467"><span class="linenos">467</span></a>            <span class="k">raise</span> <span class="n">TeaclaveException</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Failed to update user (</span><span class="si">{</span><span class="n">reason</span><span class="si">}</span><span class="s2">)&quot;</span><span class="p">)</span>
+</span><span id="AuthenticationService-468"><a href="#AuthenticationService-468"><span class="linenos">468</span></a>
+</span><span id="AuthenticationService-469"><a href="#AuthenticationService-469"><span class="linenos">469</span></a>    <span class="k">def</span> <span class="nf">user_login</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">user_id</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">user_password</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class=" [...]
+</span><span id="AuthenticationService-470"><a href="#AuthenticationService-470"><span class="linenos">470</span></a><span class="w">        </span><span class="sd">&quot;&quot;&quot;Login and get a session token.</span>
+</span><span id="AuthenticationService-471"><a href="#AuthenticationService-471"><span class="linenos">471</span></a>
+</span><span id="AuthenticationService-472"><a href="#AuthenticationService-472"><span class="linenos">472</span></a><span class="sd">        Args:</span>
+</span><span id="AuthenticationService-473"><a href="#AuthenticationService-473"><span class="linenos">473</span></a>
+</span><span id="AuthenticationService-474"><a href="#AuthenticationService-474"><span class="linenos">474</span></a><span class="sd">            user_id: User ID.</span>
+</span><span id="AuthenticationService-475"><a href="#AuthenticationService-475"><span class="linenos">475</span></a><span class="sd">            user_password: Password.</span>
+</span><span id="AuthenticationService-476"><a href="#AuthenticationService-476"><span class="linenos">476</span></a>
+</span><span id="AuthenticationService-477"><a href="#AuthenticationService-477"><span class="linenos">477</span></a><span class="sd">        Returns:</span>
+</span><span id="AuthenticationService-478"><a href="#AuthenticationService-478"><span class="linenos">478</span></a>
+</span><span id="AuthenticationService-479"><a href="#AuthenticationService-479"><span class="linenos">479</span></a><span class="sd">            str: User login token.</span>
+</span><span id="AuthenticationService-480"><a href="#AuthenticationService-480"><span class="linenos">480</span></a><span class="sd">        &quot;&quot;&quot;</span>
+</span><span id="AuthenticationService-481"><a href="#AuthenticationService-481"><span class="linenos">481</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">check_channel</span><span class="p">()</span>
+</span><span id="AuthenticationService-482"><a href="#AuthenticationService-482"><span class="linenos">482</span></a>        <span class="n">request</span> <span class="o">=</span> <span class="n">UserLoginRequest</span><span class="p">(</span><span class="n">user_id</span><span class="p">,</span> <span class="n">user_password</span><span class="p">)</span>
+</span><span id="AuthenticationService-483"><a href="#AuthenticationService-483"><span class="linenos">483</span></a>        <span class="n">_write_message</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">channel</span><span class="p">,</span> <span class="n">request</span><span class="p">)</span>
+</span><span id="AuthenticationService-484"><a href="#AuthenticationService-484"><span class="linenos">484</span></a>        <span class="n">response</span> <span class="o">=</span> <span class="n">_read_message</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">channel</span><span class="p">)</span>
+</span><span id="AuthenticationService-485"><a href="#AuthenticationService-485"><span class="linenos">485</span></a>        <span class="k">if</span> <span class="n">response</span><span class="p">[</span><span class="s2">&quot;result&quot;</span><span class="p">]</span> <span class="o">==</span> <span class="s2">&quot;ok&quot;</span><span class="p">:</span>
+</span><span id="AuthenticationService-486"><a href="#AuthenticationService-486"><span class="linenos">486</span></a>            <span class="k">return</span> <span class="n">response</span><span class="p">[</span><span class="s2">&quot;content&quot;</span><span class="p">][</span><span class="s2">&quot;token&quot;</span><span class="p">]</span>
+</span><span id="AuthenticationService-487"><a href="#AuthenticationService-487"><span class="linenos">487</span></a>        <span class="k">else</span><span class="p">:</span>
+</span><span id="AuthenticationService-488"><a href="#AuthenticationService-488"><span class="linenos">488</span></a>            <span class="n">reason</span> <span class="o">=</span> <span class="s2">&quot;unknown&quot;</span>
+</span><span id="AuthenticationService-489"><a href="#AuthenticationService-489"><span class="linenos">489</span></a>            <span class="k">if</span> <span class="s2">&quot;request_error&quot;</span> <span class="ow">in</span> <span class="n">response</span><span class="p">:</span>
+</span><span id="AuthenticationService-490"><a href="#AuthenticationService-490"><span class="linenos">490</span></a>                <span class="n">reason</span> <span class="o">=</span> <span class="n">response</span><span class="p">[</span><span class="s2">&quot;request_error&quot;</span><span class="p">]</span>
+</span><span id="AuthenticationService-491"><a href="#AuthenticationService-491"><span class="linenos">491</span></a>            <span class="k">raise</span> <span class="n">TeaclaveException</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Failed to login user (</span><span class="si">{</span><span class="n">reason</span><span class="si">}</span><span class="s2">)&quot;</span><span class="p">)</span>
+</span><span id="AuthenticationService-492"><a href="#AuthenticationService-492"><span class="linenos">492</span></a>
+</span><span id="AuthenticationService-493"><a href="#AuthenticationService-493"><span class="linenos">493</span></a>    <span class="k">def</span> <span class="nf">user_change_password</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">user_password</span><span class="p">:</span> <span class="nb">str</span><span class="p">):</span>
+</span><span id="AuthenticationService-494"><a href="#AuthenticationService-494"><span class="linenos">494</span></a><span class="w">        </span><span class="sd">&quot;&quot;&quot;Change password.</span>
+</span><span id="AuthenticationService-495"><a href="#AuthenticationService-495"><span class="linenos">495</span></a>
+</span><span id="AuthenticationService-496"><a href="#AuthenticationService-496"><span class="linenos">496</span></a><span class="sd">        Args:</span>
+</span><span id="AuthenticationService-497"><a href="#AuthenticationService-497"><span class="linenos">497</span></a>
+</span><span id="AuthenticationService-498"><a href="#AuthenticationService-498"><span class="linenos">498</span></a><span class="sd">            user_password: New password.</span>
+</span><span id="AuthenticationService-499"><a href="#AuthenticationService-499"><span class="linenos">499</span></a><span class="sd">        &quot;&quot;&quot;</span>
+</span><span id="AuthenticationService-500"><a href="#AuthenticationService-500"><span class="linenos">500</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">check_channel</span><span class="p">()</span>
+</span><span id="AuthenticationService-501"><a href="#AuthenticationService-501"><span class="linenos">501</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">check_metadata</span><span class="p">()</span>
+</span><span id="AuthenticationService-502"><a href="#AuthenticationService-502"><span class="linenos">502</span></a>        <span class="n">request</span> <span class="o">=</span> <span class="n">UserChangePasswordRequest</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">metadata</span><span class="p">,</span> <span class="n">user_password</span><span class="p">)</span>
+</span><span id="AuthenticationService-503"><a href="#AuthenticationService-503"><span class="linenos">503</span></a>        <span class="n">_write_message</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">channel</span><span class="p">,</span> <span class="n">request</span><span class="p">)</span>
+</span><span id="AuthenticationService-504"><a href="#AuthenticationService-504"><span class="linenos">504</span></a>        <span class="n">response</span> <span class="o">=</span> <span class="n">_read_message</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">channel</span><span class="p">)</span>
+</span><span id="AuthenticationService-505"><a href="#AuthenticationService-505"><span class="linenos">505</span></a>        <span class="k">if</span> <span class="n">response</span><span class="p">[</span><span class="s2">&quot;result&quot;</span><span class="p">]</span> <span class="o">==</span> <span class="s2">&quot;ok&quot;</span><span class="p">:</span>
+</span><span id="AuthenticationService-506"><a href="#AuthenticationService-506"><span class="linenos">506</span></a>            <span class="k">pass</span>
+</span><span id="AuthenticationService-507"><a href="#AuthenticationService-507"><span class="linenos">507</span></a>        <span class="k">else</span><span class="p">:</span>
+</span><span id="AuthenticationService-508"><a href="#AuthenticationService-508"><span class="linenos">508</span></a>            <span class="n">reason</span> <span class="o">=</span> <span class="s2">&quot;unknown&quot;</span>
+</span><span id="AuthenticationService-509"><a href="#AuthenticationService-509"><span class="linenos">509</span></a>            <span class="k">if</span> <span class="s2">&quot;request_error&quot;</span> <span class="ow">in</span> <span class="n">response</span><span class="p">:</span>
+</span><span id="AuthenticationService-510"><a href="#AuthenticationService-510"><span class="linenos">510</span></a>                <span class="n">reason</span> <span class="o">=</span> <span class="n">response</span><span class="p">[</span><span class="s2">&quot;request_error&quot;</span><span class="p">]</span>
+</span><span id="AuthenticationService-511"><a href="#AuthenticationService-511"><span class="linenos">511</span></a>            <span class="k">raise</span> <span class="n">TeaclaveException</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Failed to change password (</span><span class="si">{</span><span class="n">reason</span><span class="si">}</span><span class="s2">)&quot;</span><span class="p">)</span>
+</span><span id="AuthenticationService-512"><a href="#AuthenticationService-512"><span class="linenos">512</span></a>
+</span><span id="AuthenticationService-513"><a href="#AuthenticationService-513"><span class="linenos">513</span></a>    <span class="k">def</span> <span class="nf">reset_user_password</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">user_id</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
+</span><span id="AuthenticationService-514"><a href="#AuthenticationService-514"><span class="linenos">514</span></a><span class="w">        </span><span class="sd">&quot;&quot;&quot;Reset password of a managed user.</span>
+</span><span id="AuthenticationService-515"><a href="#AuthenticationService-515"><span class="linenos">515</span></a>
+</span><span id="AuthenticationService-516"><a href="#AuthenticationService-516"><span class="linenos">516</span></a><span class="sd">        Args:</span>
+</span><span id="AuthenticationService-517"><a href="#AuthenticationService-517"><span class="linenos">517</span></a>
+</span><span id="AuthenticationService-518"><a href="#AuthenticationService-518"><span class="linenos">518</span></a><span class="sd">            user_id: User ID.</span>
+</span><span id="AuthenticationService-519"><a href="#AuthenticationService-519"><span class="linenos">519</span></a>
+</span><span id="AuthenticationService-520"><a href="#AuthenticationService-520"><span class="linenos">520</span></a><span class="sd">        Returns:</span>
+</span><span id="AuthenticationService-521"><a href="#AuthenticationService-521"><span class="linenos">521</span></a>
+</span><span id="AuthenticationService-522"><a href="#AuthenticationService-522"><span class="linenos">522</span></a><span class="sd">            str: New password.</span>
+</span><span id="AuthenticationService-523"><a href="#AuthenticationService-523"><span class="linenos">523</span></a><span class="sd">        &quot;&quot;&quot;</span>
+</span><span id="AuthenticationService-524"><a href="#AuthenticationService-524"><span class="linenos">524</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">check_channel</span><span class="p">()</span>
+</span><span id="AuthenticationService-525"><a href="#AuthenticationService-525"><span class="linenos">525</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">check_metadata</span><span class="p">()</span>
+</span><span id="AuthenticationService-526"><a href="#AuthenticationService-526"><span class="linenos">526</span></a>        <span class="n">request</span> <span class="o">=</span> <span class="n">ResetUserPasswordRequest</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">metadata</span><span class="p">,</span> <span class="n">user_id</span><span class="p">)</span>
+</span><span id="AuthenticationService-527"><a href="#AuthenticationService-527"><span class="linenos">527</span></a>        <span class="n">_write_message</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">channel</span><span class="p">,</span> <span class="n">request</span><span class="p">)</span>
+</span><span id="AuthenticationService-528"><a href="#AuthenticationService-528"><span class="linenos">528</span></a>        <span class="n">response</span> <span class="o">=</span> <span class="n">_read_message</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">channel</span><span class="p">)</span>
+</span><span id="AuthenticationService-529"><a href="#AuthenticationService-529"><span class="linenos">529</span></a>        <span class="k">if</span> <span class="n">response</span><span class="p">[</span><span class="s2">&quot;result&quot;</span><span class="p">]</span> <span class="o">==</span> <span class="s2">&quot;ok&quot;</span><span class="p">:</span>
+</span><span id="AuthenticationService-530"><a href="#AuthenticationService-530"><span class="linenos">530</span></a>            <span class="k">return</span> <span class="n">response</span><span class="p">[</span><span class="s2">&quot;content&quot;</span><span class="p">][</span><span class="s2">&quot;password&quot;</span><span class="p">]</span>
+</span><span id="AuthenticationService-531"><a href="#AuthenticationService-531"><span class="linenos">531</span></a>        <span class="k">else</span><span class="p">:</span>
+</span><span id="AuthenticationService-532"><a href="#AuthenticationService-532"><span class="linenos">532</span></a>            <span class="n">reason</span> <span class="o">=</span> <span class="s2">&quot;unknown&quot;</span>
+</span><span id="AuthenticationService-533"><a href="#AuthenticationService-533"><span class="linenos">533</span></a>            <span class="k">if</span> <span class="s2">&quot;request_error&quot;</span> <span class="ow">in</span> <span class="n">response</span><span class="p">:</span>
+</span><span id="AuthenticationService-534"><a href="#AuthenticationService-534"><span class="linenos">534</span></a>                <span class="n">reason</span> <span class="o">=</span> <span class="n">response</span><span class="p">[</span><span class="s2">&quot;request_error&quot;</span><span class="p">]</span>
+</span><span id="AuthenticationService-535"><a href="#AuthenticationService-535"><span class="linenos">535</span></a>            <span class="k">raise</span> <span class="n">TeaclaveException</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Failed to reset password (</span><span class="si">{</span><span class="n">reason</span><span class="si">}</span><span class="s2">)&quot;</span><span class="p">)</span>
+</span><span id="AuthenticationService-536"><a href="#AuthenticationService-536"><span class="linenos">536</span></a>
+</span><span id="AuthenticationService-537"><a href="#AuthenticationService-537"><span class="linenos">537</span></a>    <span class="k">def</span> <span class="nf">delete_user</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">user_id</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
+</span><span id="AuthenticationService-538"><a href="#AuthenticationService-538"><span class="linenos">538</span></a><span class="w">        </span><span class="sd">&quot;&quot;&quot;Delete a user.</span>
+</span><span id="AuthenticationService-539"><a href="#AuthenticationService-539"><span class="linenos">539</span></a>
+</span><span id="AuthenticationService-540"><a href="#AuthenticationService-540"><span class="linenos">540</span></a><span class="sd">        Args:</span>
+</span><span id="AuthenticationService-541"><a href="#AuthenticationService-541"><span class="linenos">541</span></a>
+</span><span id="AuthenticationService-542"><a href="#AuthenticationService-542"><span class="linenos">542</span></a><span class="sd">            user_id: User ID.</span>
+</span><span id="AuthenticationService-543"><a href="#AuthenticationService-543"><span class="linenos">543</span></a><span class="sd">        &quot;&quot;&quot;</span>
+</span><span id="AuthenticationService-544"><a href="#AuthenticationService-544"><span class="linenos">544</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">check_channel</span><span class="p">()</span>
+</span><span id="AuthenticationService-545"><a href="#AuthenticationService-545"><span class="linenos">545</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">check_metadata</span><span class="p">()</span>
+</span><span id="AuthenticationService-546"><a href="#AuthenticationService-546"><span class="linenos">546</span></a>        <span class="n">request</span> <span class="o">=</span> <span class="n">DeleteUserRequest</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">metadata</span><span class="p">,</span> <span class="n">user_id</span><span class="p">)</span>
+</span><span id="AuthenticationService-547"><a href="#AuthenticationService-547"><span class="linenos">547</span></a>        <span class="n">_write_message</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">channel</span><span class="p">,</span> <span class="n">request</span><span class="p">)</span>
+</span><span id="AuthenticationService-548"><a href="#AuthenticationService-548"><span class="linenos">548</span></a>        <span class="n">response</span> <span class="o">=</span> <span class="n">_read_message</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">channel</span><span class="p">)</span>
+</span><span id="AuthenticationService-549"><a href="#AuthenticationService-549"><span class="linenos">549</span></a>        <span class="k">if</span> <span class="n">response</span><span class="p">[</span><span class="s2">&quot;result&quot;</span><span class="p">]</span> <span class="o">==</span> <span class="s2">&quot;ok&quot;</span><span class="p">:</span>
+</span><span id="AuthenticationService-550"><a href="#AuthenticationService-550"><span class="linenos">550</span></a>            <span class="k">pass</span>
+</span><span id="AuthenticationService-551"><a href="#AuthenticationService-551"><span class="linenos">551</span></a>        <span class="k">else</span><span class="p">:</span>
+</span><span id="AuthenticationService-552"><a href="#AuthenticationService-552"><span class="linenos">552</span></a>            <span class="n">reason</span> <span class="o">=</span> <span class="s2">&quot;unknown&quot;</span>
+</span><span id="AuthenticationService-553"><a href="#AuthenticationService-553"><span class="linenos">553</span></a>            <span class="k">if</span> <span class="s2">&quot;request_error&quot;</span> <span class="ow">in</span> <span class="n">response</span><span class="p">:</span>
+</span><span id="AuthenticationService-554"><a href="#AuthenticationService-554"><span class="linenos">554</span></a>                <span class="n">reason</span> <span class="o">=</span> <span class="n">response</span><span class="p">[</span><span class="s2">&quot;request_error&quot;</span><span class="p">]</span>
+</span><span id="AuthenticationService-555"><a href="#AuthenticationService-555"><span class="linenos">555</span></a>            <span class="k">raise</span> <span class="n">TeaclaveException</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Failed to delete user (</span><span class="si">{</span><span class="n">reason</span><span class="si">}</span><span class="s2">)&quot;</span><span class="p">)</span>
+</span><span id="AuthenticationService-556"><a href="#AuthenticationService-556"><span class="linenos">556</span></a>
+</span><span id="AuthenticationService-557"><a href="#AuthenticationService-557"><span class="linenos">557</span></a>    <span class="k">def</span> <span class="nf">list_users</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">user_id</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
+</span><span id="AuthenticationService-558"><a href="#AuthenticationService-558"><span class="linenos">558</span></a><span class="w">        </span><span class="sd">&quot;&quot;&quot;List managed users</span>
+</span><span id="AuthenticationService-559"><a href="#AuthenticationService-559"><span class="linenos">559</span></a>
+</span><span id="AuthenticationService-560"><a href="#AuthenticationService-560"><span class="linenos">560</span></a><span class="sd">        Args:</span>
+</span><span id="AuthenticationService-561"><a href="#AuthenticationService-561"><span class="linenos">561</span></a>
+</span><span id="AuthenticationService-562"><a href="#AuthenticationService-562"><span class="linenos">562</span></a><span class="sd">            user_id: User ID.</span>
+</span><span id="AuthenticationService-563"><a href="#AuthenticationService-563"><span class="linenos">563</span></a>
+</span><span id="AuthenticationService-564"><a href="#AuthenticationService-564"><span class="linenos">564</span></a><span class="sd">        Returns:</span>
+</span><span id="AuthenticationService-565"><a href="#AuthenticationService-565"><span class="linenos">565</span></a>
+</span><span id="AuthenticationService-566"><a href="#AuthenticationService-566"><span class="linenos">566</span></a><span class="sd">            str: User list</span>
+</span><span id="AuthenticationService-567"><a href="#AuthenticationService-567"><span class="linenos">567</span></a><span class="sd">        &quot;&quot;&quot;</span>
+</span><span id="AuthenticationService-568"><a href="#AuthenticationService-568"><span class="linenos">568</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">check_channel</span><span class="p">()</span>
+</span><span id="AuthenticationService-569"><a href="#AuthenticationService-569"><span class="linenos">569</span></a>        <span class="n">request</span> <span class="o">=</span> <span class="n">ListUsersRequest</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">metadata</span><span class="p">,</span> <span class="n">user_id</span><span class="p">)</span>
+</span><span id="AuthenticationService-570"><a href="#AuthenticationService-570"><span class="linenos">570</span></a>        <span class="n">_write_message</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">channel</span><span class="p">,</span> <span class="n">request</span><span class="p">)</span>
+</span><span id="AuthenticationService-571"><a href="#AuthenticationService-571"><span class="linenos">571</span></a>        <span class="n">response</span> <span class="o">=</span> <span class="n">_read_message</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">channel</span><span class="p">)</span>
+</span><span id="AuthenticationService-572"><a href="#AuthenticationService-572"><span class="linenos">572</span></a>        <span class="k">if</span> <span class="n">response</span><span class="p">[</span><span class="s2">&quot;result&quot;</span><span class="p">]</span> <span class="o">==</span> <span class="s2">&quot;ok&quot;</span><span class="p">:</span>
+</span><span id="AuthenticationService-573"><a href="#AuthenticationService-573"><span class="linenos">573</span></a>            <span class="k">return</span> <span class="n">response</span><span class="p">[</span><span class="s2">&quot;content&quot;</span><span class="p">][</span><span class="s2">&quot;ids&quot;</span><span class="p">]</span>
+</span><span id="AuthenticationService-574"><a href="#AuthenticationService-574"><span class="linenos">574</span></a>        <span class="k">else</span><span class="p">:</span>
+</span><span id="AuthenticationService-575"><a href="#AuthenticationService-575"><span class="linenos">575</span></a>            <span class="n">reason</span> <span class="o">=</span> <span class="s2">&quot;unknown&quot;</span>
+</span><span id="AuthenticationService-576"><a href="#AuthenticationService-576"><span class="linenos">576</span></a>            <span class="k">if</span> <span class="s2">&quot;request_error&quot;</span> <span class="ow">in</span> <span class="n">response</span><span class="p">:</span>
+</span><span id="AuthenticationService-577"><a href="#AuthenticationService-577"><span class="linenos">577</span></a>                <span class="n">reason</span> <span class="o">=</span> <span class="n">response</span><span class="p">[</span><span class="s2">&quot;request_error&quot;</span><span class="p">]</span>
+</span><span id="AuthenticationService-578"><a href="#AuthenticationService-578"><span class="linenos">578</span></a>            <span class="k">raise</span> <span class="n">TeaclaveException</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Failed to list user (</span><span class="si">{</span><span class="n">reason</span><span class="si">}</span><span class="s2">)&quot;</span><span class="p">)</span>
+</span></pre></div>
+
+
+            <div class="docstring"><p>Establish trusted channel with the authentication service and provide
+clients to send request through RPC.</p>
+
+<p>Args:</p>
+
+<pre><code>address: The address of the remote services in tuple.
+as_root_ca_cert_path: Root CA certification of the attestation services
+    to verify the attestation report.
+enclave_info_path: Path of enclave info to verify the remote service in
+    the attestation report.
+</code></pre>
+</div>
+
+
+                            <div id="AuthenticationService.__init__" class="classattr">
+                                        <input id="AuthenticationService.__init__-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
+<div class="attr function">
+            
+        <span class="name">AuthenticationService</span><span class="signature pdoc-code multiline">(<span class="param">	<span class="n">address</span><span class="p">:</span> <span class="n">Tuple</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">int</span><span class="p">]</span>,</span><span class="param">	<span class="n">as_root_ca_cert_path</span><span class="p">:</span> <span class="nb">str</span>,</span><span class="param">	<span cl [...]
+
+                <label class="view-source-button" for="AuthenticationService.__init__-view-source"><span>View Source</span></label>
+
+    </div>
+    <a class="headerlink" href="#AuthenticationService.__init__"></a>
+            <div class="pdoc-code codehilite"><pre><span></span><span id="AuthenticationService.__init__-411"><a href="#AuthenticationService.__init__-411"><span class="linenos">411</span></a>    <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span>
+</span><span id="AuthenticationService.__init__-412"><a href="#AuthenticationService.__init__-412"><span class="linenos">412</span></a>                 <span class="n">address</span><span class="p">:</span> <span class="n">Tuple</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">int</span><span class="p">],</span>
+</span><span id="AuthenticationService.__init__-413"><a href="#AuthenticationService.__init__-413"><span class="linenos">413</span></a>                 <span class="n">as_root_ca_cert_path</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span>
+</span><span id="AuthenticationService.__init__-414"><a href="#AuthenticationService.__init__-414"><span class="linenos">414</span></a>                 <span class="n">enclave_info_path</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span>
+</span><span id="AuthenticationService.__init__-415"><a href="#AuthenticationService.__init__-415"><span class="linenos">415</span></a>                 <span class="n">dump_report</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span>
+</span><span id="AuthenticationService.__init__-416"><a href="#AuthenticationService.__init__-416"><span class="linenos">416</span></a>        <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span><span class="s2">&quot;authentication&quot;</span><span class="p">,</span> <span class="n">address</span><span class="p">,</span> <span class="n">as_root_ca_cert_path</span><span class="p">,</span>
+</span><span id="AuthenticationService.__init__-417"><a href="#AuthenticationService.__init__-417"><span class="linenos">417</span></a>                         <span class="n">enclave_info_path</span><span class="p">,</span> <span class="n">dump_report</span><span class="p">)</span>
+</span></pre></div>
+
+
+    
+
+                            </div>
+                            <div id="AuthenticationService.user_register" class="classattr">
+                                        <input id="AuthenticationService.user_register-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
+<div class="attr function">
+            
+        <span class="def">def</span>
+        <span class="name">user_register</span><span class="signature pdoc-code condensed">(<span class="param"><span class="bp">self</span>, </span><span class="param"><span class="n">user_id</span><span class="p">:</span> <span class="nb">str</span>, </span><span class="param"><span class="n">user_password</span><span class="p">:</span> <span class="nb">str</span>, </span><span class="param"><span class="n">role</span><span class="p">:</span> <span class="nb">str</span>, </span><span c [...]
+
+                <label class="view-source-button" for="AuthenticationService.user_register-view-source"><span>View Source</span></label>
+
+    </div>
+    <a class="headerlink" href="#AuthenticationService.user_register"></a>
+            <div class="pdoc-code codehilite"><pre><span></span><span id="AuthenticationService.user_register-419"><a href="#AuthenticationService.user_register-419"><span class="linenos">419</span></a>    <span class="k">def</span> <span class="nf">user_register</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">user_id</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">user_password</span><s [...]
+</span><span id="AuthenticationService.user_register-420"><a href="#AuthenticationService.user_register-420"><span class="linenos">420</span></a>                      <span class="n">attribute</span><span class="p">:</span> <span class="nb">str</span><span class="p">):</span>
+</span><span id="AuthenticationService.user_register-421"><a href="#AuthenticationService.user_register-421"><span class="linenos">421</span></a><span class="w">        </span><span class="sd">&quot;&quot;&quot;Register a new user.</span>
+</span><span id="AuthenticationService.user_register-422"><a href="#AuthenticationService.user_register-422"><span class="linenos">422</span></a>
+</span><span id="AuthenticationService.user_register-423"><a href="#AuthenticationService.user_register-423"><span class="linenos">423</span></a><span class="sd">        Args:</span>
+</span><span id="AuthenticationService.user_register-424"><a href="#AuthenticationService.user_register-424"><span class="linenos">424</span></a>
+</span><span id="AuthenticationService.user_register-425"><a href="#AuthenticationService.user_register-425"><span class="linenos">425</span></a><span class="sd">            user_id: User ID.</span>
+</span><span id="AuthenticationService.user_register-426"><a href="#AuthenticationService.user_register-426"><span class="linenos">426</span></a><span class="sd">            user_password: Password.</span>
+</span><span id="AuthenticationService.user_register-427"><a href="#AuthenticationService.user_register-427"><span class="linenos">427</span></a><span class="sd">            role: Role of user.</span>
+</span><span id="AuthenticationService.user_register-428"><a href="#AuthenticationService.user_register-428"><span class="linenos">428</span></a><span class="sd">            attribute: Attribute related to the role.</span>
+</span><span id="AuthenticationService.user_register-429"><a href="#AuthenticationService.user_register-429"><span class="linenos">429</span></a><span class="sd">        &quot;&quot;&quot;</span>
+</span><span id="AuthenticationService.user_register-430"><a href="#AuthenticationService.user_register-430"><span class="linenos">430</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">check_channel</span><span class="p">()</span>
+</span><span id="AuthenticationService.user_register-431"><a href="#AuthenticationService.user_register-431"><span class="linenos">431</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">check_metadata</span><span class="p">()</span>
+</span><span id="AuthenticationService.user_register-432"><a href="#AuthenticationService.user_register-432"><span class="linenos">432</span></a>        <span class="n">request</span> <span class="o">=</span> <span class="n">UserRegisterRequest</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">metadata</span><span class="p">,</span> <span class="n">user_id</span><span class="p">,</span> <span class="n">user_password</span><span class="p">,</span>
+</span><span id="AuthenticationService.user_register-433"><a href="#AuthenticationService.user_register-433"><span class="linenos">433</span></a>                                      <span class="n">role</span><span class="p">,</span> <span class="n">attribute</span><span class="p">)</span>
+</span><span id="AuthenticationService.user_register-434"><a href="#AuthenticationService.user_register-434"><span class="linenos">434</span></a>        <span class="n">_write_message</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">channel</span><span class="p">,</span> <span class="n">request</span><span class="p">)</span>
+</span><span id="AuthenticationService.user_register-435"><a href="#AuthenticationService.user_register-435"><span class="linenos">435</span></a>        <span class="n">response</span> <span class="o">=</span> <span class="n">_read_message</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">channel</span><span class="p">)</span>
+</span><span id="AuthenticationService.user_register-436"><a href="#AuthenticationService.user_register-436"><span class="linenos">436</span></a>        <span class="k">if</span> <span class="n">response</span><span class="p">[</span><span class="s2">&quot;result&quot;</span><span class="p">]</span> <span class="o">==</span> <span class="s2">&quot;ok&quot;</span><span class="p">:</span>
+</span><span id="AuthenticationService.user_register-437"><a href="#AuthenticationService.user_register-437"><span class="linenos">437</span></a>            <span class="k">pass</span>
+</span><span id="AuthenticationService.user_register-438"><a href="#AuthenticationService.user_register-438"><span class="linenos">438</span></a>        <span class="k">else</span><span class="p">:</span>
+</span><span id="AuthenticationService.user_register-439"><a href="#AuthenticationService.user_register-439"><span class="linenos">439</span></a>            <span class="n">reason</span> <span class="o">=</span> <span class="s2">&quot;unknown&quot;</span>
+</span><span id="AuthenticationService.user_register-440"><a href="#AuthenticationService.user_register-440"><span class="linenos">440</span></a>            <span class="k">if</span> <span class="s2">&quot;request_error&quot;</span> <span class="ow">in</span> <span class="n">response</span><span class="p">:</span>
+</span><span id="AuthenticationService.user_register-441"><a href="#AuthenticationService.user_register-441"><span class="linenos">441</span></a>                <span class="n">reason</span> <span class="o">=</span> <span class="n">response</span><span class="p">[</span><span class="s2">&quot;request_error&quot;</span><span class="p">]</span>
+</span><span id="AuthenticationService.user_register-442"><a href="#AuthenticationService.user_register-442"><span class="linenos">442</span></a>            <span class="k">raise</span> <span class="n">TeaclaveException</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Failed to register user (</span><span class="si">{</span><span class="n">reason</span><span class="si">}</span><span class="s2">)&quot;</span><span class="p">)</span>
+</span></pre></div>
+
+
+            <div class="docstring"><p>Register a new user.</p>
+
+<p>Args:</p>
+
+<pre><code>user_id: User ID.
+user_password: Password.
+role: Role of user.
+attribute: Attribute related to the role.
+</code></pre>
+</div>
+
+
+                            </div>
+                            <div id="AuthenticationService.user_update" class="classattr">
+                                        <input id="AuthenticationService.user_update-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
+<div class="attr function">
+            
+        <span class="def">def</span>
+        <span class="name">user_update</span><span class="signature pdoc-code condensed">(<span class="param"><span class="bp">self</span>, </span><span class="param"><span class="n">user_id</span><span class="p">:</span> <span class="nb">str</span>, </span><span class="param"><span class="n">user_password</span><span class="p">:</span> <span class="nb">str</span>, </span><span class="param"><span class="n">role</span><span class="p">:</span> <span class="nb">str</span>, </span><span cla [...]
+
+                <label class="view-source-button" for="AuthenticationService.user_update-view-source"><span>View Source</span></label>
+
+    </div>
+    <a class="headerlink" href="#AuthenticationService.user_update"></a>
+            <div class="pdoc-code codehilite"><pre><span></span><span id="AuthenticationService.user_update-444"><a href="#AuthenticationService.user_update-444"><span class="linenos">444</span></a>    <span class="k">def</span> <span class="nf">user_update</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">user_id</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">user_password</span><span cl [...]
+</span><span id="AuthenticationService.user_update-445"><a href="#AuthenticationService.user_update-445"><span class="linenos">445</span></a>                    <span class="n">attribute</span><span class="p">:</span> <span class="nb">str</span><span class="p">):</span>
+</span><span id="AuthenticationService.user_update-446"><a href="#AuthenticationService.user_update-446"><span class="linenos">446</span></a><span class="w">        </span><span class="sd">&quot;&quot;&quot;Update an existing user.</span>
+</span><span id="AuthenticationService.user_update-447"><a href="#AuthenticationService.user_update-447"><span class="linenos">447</span></a>
+</span><span id="AuthenticationService.user_update-448"><a href="#AuthenticationService.user_update-448"><span class="linenos">448</span></a><span class="sd">        Args:</span>
+</span><span id="AuthenticationService.user_update-449"><a href="#AuthenticationService.user_update-449"><span class="linenos">449</span></a>
+</span><span id="AuthenticationService.user_update-450"><a href="#AuthenticationService.user_update-450"><span class="linenos">450</span></a><span class="sd">            user_id: User ID.</span>
+</span><span id="AuthenticationService.user_update-451"><a href="#AuthenticationService.user_update-451"><span class="linenos">451</span></a><span class="sd">            user_password: Password.</span>
+</span><span id="AuthenticationService.user_update-452"><a href="#AuthenticationService.user_update-452"><span class="linenos">452</span></a><span class="sd">            role: Role of user.</span>
+</span><span id="AuthenticationService.user_update-453"><a href="#AuthenticationService.user_update-453"><span class="linenos">453</span></a><span class="sd">            attribute: Attribute related to the role.</span>
+</span><span id="AuthenticationService.user_update-454"><a href="#AuthenticationService.user_update-454"><span class="linenos">454</span></a><span class="sd">        &quot;&quot;&quot;</span>
+</span><span id="AuthenticationService.user_update-455"><a href="#AuthenticationService.user_update-455"><span class="linenos">455</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">check_channel</span><span class="p">()</span>
+</span><span id="AuthenticationService.user_update-456"><a href="#AuthenticationService.user_update-456"><span class="linenos">456</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">check_metadata</span><span class="p">()</span>
+</span><span id="AuthenticationService.user_update-457"><a href="#AuthenticationService.user_update-457"><span class="linenos">457</span></a>        <span class="n">request</span> <span class="o">=</span> <span class="n">UserUpdateRequest</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">metadata</span><span class="p">,</span> <span class="n">user_id</span><span class="p">,</span> <span class="n">user_password</span><span class="p">,</span>
+</span><span id="AuthenticationService.user_update-458"><a href="#AuthenticationService.user_update-458"><span class="linenos">458</span></a>                                    <span class="n">role</span><span class="p">,</span> <span class="n">attribute</span><span class="p">)</span>
+</span><span id="AuthenticationService.user_update-459"><a href="#AuthenticationService.user_update-459"><span class="linenos">459</span></a>        <span class="n">_write_message</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">channel</span><span class="p">,</span> <span class="n">request</span><span class="p">)</span>
+</span><span id="AuthenticationService.user_update-460"><a href="#AuthenticationService.user_update-460"><span class="linenos">460</span></a>        <span class="n">response</span> <span class="o">=</span> <span class="n">_read_message</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">channel</span><span class="p">)</span>
+</span><span id="AuthenticationService.user_update-461"><a href="#AuthenticationService.user_update-461"><span class="linenos">461</span></a>        <span class="k">if</span> <span class="n">response</span><span class="p">[</span><span class="s2">&quot;result&quot;</span><span class="p">]</span> <span class="o">==</span> <span class="s2">&quot;ok&quot;</span><span class="p">:</span>
+</span><span id="AuthenticationService.user_update-462"><a href="#AuthenticationService.user_update-462"><span class="linenos">462</span></a>            <span class="k">pass</span>
+</span><span id="AuthenticationService.user_update-463"><a href="#AuthenticationService.user_update-463"><span class="linenos">463</span></a>        <span class="k">else</span><span class="p">:</span>
+</span><span id="AuthenticationService.user_update-464"><a href="#AuthenticationService.user_update-464"><span class="linenos">464</span></a>            <span class="n">reason</span> <span class="o">=</span> <span class="s2">&quot;unknown&quot;</span>
+</span><span id="AuthenticationService.user_update-465"><a href="#AuthenticationService.user_update-465"><span class="linenos">465</span></a>            <span class="k">if</span> <span class="s2">&quot;request_error&quot;</span> <span class="ow">in</span> <span class="n">response</span><span class="p">:</span>
+</span><span id="AuthenticationService.user_update-466"><a href="#AuthenticationService.user_update-466"><span class="linenos">466</span></a>                <span class="n">reason</span> <span class="o">=</span> <span class="n">response</span><span class="p">[</span><span class="s2">&quot;request_error&quot;</span><span class="p">]</span>
+</span><span id="AuthenticationService.user_update-467"><a href="#AuthenticationService.user_update-467"><span class="linenos">467</span></a>            <span class="k">raise</span> <span class="n">TeaclaveException</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Failed to update user (</span><span class="si">{</span><span class="n">reason</span><span class="si">}</span><span class="s2">)&quot;</span><span class="p">)</span>
+</span></pre></div>
+
+
+            <div class="docstring"><p>Update an existing user.</p>
+
+<p>Args:</p>
+
+<pre><code>user_id: User ID.
+user_password: Password.
+role: Role of user.
+attribute: Attribute related to the role.
+</code></pre>
+</div>
+
+
+                            </div>
+                            <div id="AuthenticationService.user_login" class="classattr">
+                                        <input id="AuthenticationService.user_login-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
+<div class="attr function">
+            
+        <span class="def">def</span>
+        <span class="name">user_login</span><span class="signature pdoc-code condensed">(<span class="param"><span class="bp">self</span>, </span><span class="param"><span class="n">user_id</span><span class="p">:</span> <span class="nb">str</span>, </span><span class="param"><span class="n">user_password</span><span class="p">:</span> <span class="nb">str</span></span><span class="return-annotation">) -> <span class="nb">str</span>:</span></span>
+
+                <label class="view-source-button" for="AuthenticationService.user_login-view-source"><span>View Source</span></label>
+
+    </div>
+    <a class="headerlink" href="#AuthenticationService.user_login"></a>
+            <div class="pdoc-code codehilite"><pre><span></span><span id="AuthenticationService.user_login-469"><a href="#AuthenticationService.user_login-469"><span class="linenos">469</span></a>    <span class="k">def</span> <span class="nf">user_login</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">user_id</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">user_password</span><span class [...]
+</span><span id="AuthenticationService.user_login-470"><a href="#AuthenticationService.user_login-470"><span class="linenos">470</span></a><span class="w">        </span><span class="sd">&quot;&quot;&quot;Login and get a session token.</span>
+</span><span id="AuthenticationService.user_login-471"><a href="#AuthenticationService.user_login-471"><span class="linenos">471</span></a>
+</span><span id="AuthenticationService.user_login-472"><a href="#AuthenticationService.user_login-472"><span class="linenos">472</span></a><span class="sd">        Args:</span>
+</span><span id="AuthenticationService.user_login-473"><a href="#AuthenticationService.user_login-473"><span class="linenos">473</span></a>
+</span><span id="AuthenticationService.user_login-474"><a href="#AuthenticationService.user_login-474"><span class="linenos">474</span></a><span class="sd">            user_id: User ID.</span>
+</span><span id="AuthenticationService.user_login-475"><a href="#AuthenticationService.user_login-475"><span class="linenos">475</span></a><span class="sd">            user_password: Password.</span>
+</span><span id="AuthenticationService.user_login-476"><a href="#AuthenticationService.user_login-476"><span class="linenos">476</span></a>
+</span><span id="AuthenticationService.user_login-477"><a href="#AuthenticationService.user_login-477"><span class="linenos">477</span></a><span class="sd">        Returns:</span>
+</span><span id="AuthenticationService.user_login-478"><a href="#AuthenticationService.user_login-478"><span class="linenos">478</span></a>
+</span><span id="AuthenticationService.user_login-479"><a href="#AuthenticationService.user_login-479"><span class="linenos">479</span></a><span class="sd">            str: User login token.</span>
+</span><span id="AuthenticationService.user_login-480"><a href="#AuthenticationService.user_login-480"><span class="linenos">480</span></a><span class="sd">        &quot;&quot;&quot;</span>
+</span><span id="AuthenticationService.user_login-481"><a href="#AuthenticationService.user_login-481"><span class="linenos">481</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">check_channel</span><span class="p">()</span>
+</span><span id="AuthenticationService.user_login-482"><a href="#AuthenticationService.user_login-482"><span class="linenos">482</span></a>        <span class="n">request</span> <span class="o">=</span> <span class="n">UserLoginRequest</span><span class="p">(</span><span class="n">user_id</span><span class="p">,</span> <span class="n">user_password</span><span class="p">)</span>
+</span><span id="AuthenticationService.user_login-483"><a href="#AuthenticationService.user_login-483"><span class="linenos">483</span></a>        <span class="n">_write_message</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">channel</span><span class="p">,</span> <span class="n">request</span><span class="p">)</span>
+</span><span id="AuthenticationService.user_login-484"><a href="#AuthenticationService.user_login-484"><span class="linenos">484</span></a>        <span class="n">response</span> <span class="o">=</span> <span class="n">_read_message</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">channel</span><span class="p">)</span>
+</span><span id="AuthenticationService.user_login-485"><a href="#AuthenticationService.user_login-485"><span class="linenos">485</span></a>        <span class="k">if</span> <span class="n">response</span><span class="p">[</span><span class="s2">&quot;result&quot;</span><span class="p">]</span> <span class="o">==</span> <span class="s2">&quot;ok&quot;</span><span class="p">:</span>
+</span><span id="AuthenticationService.user_login-486"><a href="#AuthenticationService.user_login-486"><span class="linenos">486</span></a>            <span class="k">return</span> <span class="n">response</span><span class="p">[</span><span class="s2">&quot;content&quot;</span><span class="p">][</span><span class="s2">&quot;token&quot;</span><span class="p">]</span>
+</span><span id="AuthenticationService.user_login-487"><a href="#AuthenticationService.user_login-487"><span class="linenos">487</span></a>        <span class="k">else</span><span class="p">:</span>
+</span><span id="AuthenticationService.user_login-488"><a href="#AuthenticationService.user_login-488"><span class="linenos">488</span></a>            <span class="n">reason</span> <span class="o">=</span> <span class="s2">&quot;unknown&quot;</span>
+</span><span id="AuthenticationService.user_login-489"><a href="#AuthenticationService.user_login-489"><span class="linenos">489</span></a>            <span class="k">if</span> <span class="s2">&quot;request_error&quot;</span> <span class="ow">in</span> <span class="n">response</span><span class="p">:</span>
+</span><span id="AuthenticationService.user_login-490"><a href="#AuthenticationService.user_login-490"><span class="linenos">490</span></a>                <span class="n">reason</span> <span class="o">=</span> <span class="n">response</span><span class="p">[</span><span class="s2">&quot;request_error&quot;</span><span class="p">]</span>
+</span><span id="AuthenticationService.user_login-491"><a href="#AuthenticationService.user_login-491"><span class="linenos">491</span></a>            <span class="k">raise</span> <span class="n">TeaclaveException</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Failed to login user (</span><span class="si">{</span><span class="n">reason</span><span class="si">}</span><span class="s2">)&quot;</span><span class="p">)</span>
+</span></pre></div>
+
+
+            <div class="docstring"><p>Login and get a session token.</p>
+
+<p>Args:</p>
+
+<pre><code>user_id: User ID.
+user_password: Password.
+</code></pre>
+
+<p>Returns:</p>
+
+<pre><code>str: User login token.
+</code></pre>
+</div>
+
+
+                            </div>
+                            <div id="AuthenticationService.user_change_password" class="classattr">
+                                        <input id="AuthenticationService.user_change_password-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
+<div class="attr function">
+            
+        <span class="def">def</span>
+        <span class="name">user_change_password</span><span class="signature pdoc-code condensed">(<span class="param"><span class="bp">self</span>, </span><span class="param"><span class="n">user_password</span><span class="p">:</span> <span class="nb">str</span></span><span class="return-annotation">):</span></span>
+
+                <label class="view-source-button" for="AuthenticationService.user_change_password-view-source"><span>View Source</span></label>
+
+    </div>
+    <a class="headerlink" href="#AuthenticationService.user_change_password"></a>
+            <div class="pdoc-code codehilite"><pre><span></span><span id="AuthenticationService.user_change_password-493"><a href="#AuthenticationService.user_change_password-493"><span class="linenos">493</span></a>    <span class="k">def</span> <span class="nf">user_change_password</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">user_password</span><span class="p">:</span> <span class="nb">str</span><span class="p">):</span>
+</span><span id="AuthenticationService.user_change_password-494"><a href="#AuthenticationService.user_change_password-494"><span class="linenos">494</span></a><span class="w">        </span><span class="sd">&quot;&quot;&quot;Change password.</span>
+</span><span id="AuthenticationService.user_change_password-495"><a href="#AuthenticationService.user_change_password-495"><span class="linenos">495</span></a>
+</span><span id="AuthenticationService.user_change_password-496"><a href="#AuthenticationService.user_change_password-496"><span class="linenos">496</span></a><span class="sd">        Args:</span>
+</span><span id="AuthenticationService.user_change_password-497"><a href="#AuthenticationService.user_change_password-497"><span class="linenos">497</span></a>
+</span><span id="AuthenticationService.user_change_password-498"><a href="#AuthenticationService.user_change_password-498"><span class="linenos">498</span></a><span class="sd">            user_password: New password.</span>
+</span><span id="AuthenticationService.user_change_password-499"><a href="#AuthenticationService.user_change_password-499"><span class="linenos">499</span></a><span class="sd">        &quot;&quot;&quot;</span>
+</span><span id="AuthenticationService.user_change_password-500"><a href="#AuthenticationService.user_change_password-500"><span class="linenos">500</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">check_channel</span><span class="p">()</span>
+</span><span id="AuthenticationService.user_change_password-501"><a href="#AuthenticationService.user_change_password-501"><span class="linenos">501</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">check_metadata</span><span class="p">()</span>
+</span><span id="AuthenticationService.user_change_password-502"><a href="#AuthenticationService.user_change_password-502"><span class="linenos">502</span></a>        <span class="n">request</span> <span class="o">=</span> <span class="n">UserChangePasswordRequest</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">metadata</span><span class="p">,</span> <span class="n">user_password</span><span class="p">)</span>
+</span><span id="AuthenticationService.user_change_password-503"><a href="#AuthenticationService.user_change_password-503"><span class="linenos">503</span></a>        <span class="n">_write_message</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">channel</span><span class="p">,</span> <span class="n">request</span><span class="p">)</span>
+</span><span id="AuthenticationService.user_change_password-504"><a href="#AuthenticationService.user_change_password-504"><span class="linenos">504</span></a>        <span class="n">response</span> <span class="o">=</span> <span class="n">_read_message</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">channel</span><span class="p">)</span>
+</span><span id="AuthenticationService.user_change_password-505"><a href="#AuthenticationService.user_change_password-505"><span class="linenos">505</span></a>        <span class="k">if</span> <span class="n">response</span><span class="p">[</span><span class="s2">&quot;result&quot;</span><span class="p">]</span> <span class="o">==</span> <span class="s2">&quot;ok&quot;</span><span class="p">:</span>
+</span><span id="AuthenticationService.user_change_password-506"><a href="#AuthenticationService.user_change_password-506"><span class="linenos">506</span></a>            <span class="k">pass</span>
+</span><span id="AuthenticationService.user_change_password-507"><a href="#AuthenticationService.user_change_password-507"><span class="linenos">507</span></a>        <span class="k">else</span><span class="p">:</span>
+</span><span id="AuthenticationService.user_change_password-508"><a href="#AuthenticationService.user_change_password-508"><span class="linenos">508</span></a>            <span class="n">reason</span> <span class="o">=</span> <span class="s2">&quot;unknown&quot;</span>
+</span><span id="AuthenticationService.user_change_password-509"><a href="#AuthenticationService.user_change_password-509"><span class="linenos">509</span></a>            <span class="k">if</span> <span class="s2">&quot;request_error&quot;</span> <span class="ow">in</span> <span class="n">response</span><span class="p">:</span>
+</span><span id="AuthenticationService.user_change_password-510"><a href="#AuthenticationService.user_change_password-510"><span class="linenos">510</span></a>                <span class="n">reason</span> <span class="o">=</span> <span class="n">response</span><span class="p">[</span><span class="s2">&quot;request_error&quot;</span><span class="p">]</span>
+</span><span id="AuthenticationService.user_change_password-511"><a href="#AuthenticationService.user_change_password-511"><span class="linenos">511</span></a>            <span class="k">raise</span> <span class="n">TeaclaveException</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Failed to change password (</span><span class="si">{</span><span class="n">reason</span><span class="si">}</span><span class="s2">)&quot;</span><span class="p">)</span>
+</span></pre></div>
+
+
+            <div class="docstring"><p>Change password.</p>
+
+<p>Args:</p>
+
+<pre><code>user_password: New password.
+</code></pre>
+</div>
+
+
+                            </div>
+                            <div id="AuthenticationService.reset_user_password" class="classattr">
+                                        <input id="AuthenticationService.reset_user_password-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
+<div class="attr function">
+            
+        <span class="def">def</span>
+        <span class="name">reset_user_password</span><span class="signature pdoc-code condensed">(<span class="param"><span class="bp">self</span>, </span><span class="param"><span class="n">user_id</span><span class="p">:</span> <span class="nb">str</span></span><span class="return-annotation">) -> <span class="nb">str</span>:</span></span>
+
+                <label class="view-source-button" for="AuthenticationService.reset_user_password-view-source"><span>View Source</span></label>
+
+    </div>
+    <a class="headerlink" href="#AuthenticationService.reset_user_password"></a>
+            <div class="pdoc-code codehilite"><pre><span></span><span id="AuthenticationService.reset_user_password-513"><a href="#AuthenticationService.reset_user_password-513"><span class="linenos">513</span></a>    <span class="k">def</span> <span class="nf">reset_user_password</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">user_id</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-&gt [...]
+</span><span id="AuthenticationService.reset_user_password-514"><a href="#AuthenticationService.reset_user_password-514"><span class="linenos">514</span></a><span class="w">        </span><span class="sd">&quot;&quot;&quot;Reset password of a managed user.</span>
+</span><span id="AuthenticationService.reset_user_password-515"><a href="#AuthenticationService.reset_user_password-515"><span class="linenos">515</span></a>
+</span><span id="AuthenticationService.reset_user_password-516"><a href="#AuthenticationService.reset_user_password-516"><span class="linenos">516</span></a><span class="sd">        Args:</span>
+</span><span id="AuthenticationService.reset_user_password-517"><a href="#AuthenticationService.reset_user_password-517"><span class="linenos">517</span></a>
+</span><span id="AuthenticationService.reset_user_password-518"><a href="#AuthenticationService.reset_user_password-518"><span class="linenos">518</span></a><span class="sd">            user_id: User ID.</span>
+</span><span id="AuthenticationService.reset_user_password-519"><a href="#AuthenticationService.reset_user_password-519"><span class="linenos">519</span></a>
+</span><span id="AuthenticationService.reset_user_password-520"><a href="#AuthenticationService.reset_user_password-520"><span class="linenos">520</span></a><span class="sd">        Returns:</span>
+</span><span id="AuthenticationService.reset_user_password-521"><a href="#AuthenticationService.reset_user_password-521"><span class="linenos">521</span></a>
+</span><span id="AuthenticationService.reset_user_password-522"><a href="#AuthenticationService.reset_user_password-522"><span class="linenos">522</span></a><span class="sd">            str: New password.</span>
+</span><span id="AuthenticationService.reset_user_password-523"><a href="#AuthenticationService.reset_user_password-523"><span class="linenos">523</span></a><span class="sd">        &quot;&quot;&quot;</span>
+</span><span id="AuthenticationService.reset_user_password-524"><a href="#AuthenticationService.reset_user_password-524"><span class="linenos">524</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">check_channel</span><span class="p">()</span>
+</span><span id="AuthenticationService.reset_user_password-525"><a href="#AuthenticationService.reset_user_password-525"><span class="linenos">525</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">check_metadata</span><span class="p">()</span>
+</span><span id="AuthenticationService.reset_user_password-526"><a href="#AuthenticationService.reset_user_password-526"><span class="linenos">526</span></a>        <span class="n">request</span> <span class="o">=</span> <span class="n">ResetUserPasswordRequest</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">metadata</span><span class="p">,</span> <span class="n">user_id</span><span class="p">)</span>
+</span><span id="AuthenticationService.reset_user_password-527"><a href="#AuthenticationService.reset_user_password-527"><span class="linenos">527</span></a>        <span class="n">_write_message</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">channel</span><span class="p">,</span> <span class="n">request</span><span class="p">)</span>
+</span><span id="AuthenticationService.reset_user_password-528"><a href="#AuthenticationService.reset_user_password-528"><span class="linenos">528</span></a>        <span class="n">response</span> <span class="o">=</span> <span class="n">_read_message</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">channel</span><span class="p">)</span>
+</span><span id="AuthenticationService.reset_user_password-529"><a href="#AuthenticationService.reset_user_password-529"><span class="linenos">529</span></a>        <span class="k">if</span> <span class="n">response</span><span class="p">[</span><span class="s2">&quot;result&quot;</span><span class="p">]</span> <span class="o">==</span> <span class="s2">&quot;ok&quot;</span><span class="p">:</span>
+</span><span id="AuthenticationService.reset_user_password-530"><a href="#AuthenticationService.reset_user_password-530"><span class="linenos">530</span></a>            <span class="k">return</span> <span class="n">response</span><span class="p">[</span><span class="s2">&quot;content&quot;</span><span class="p">][</span><span class="s2">&quot;password&quot;</span><span class="p">]</span>
+</span><span id="AuthenticationService.reset_user_password-531"><a href="#AuthenticationService.reset_user_password-531"><span class="linenos">531</span></a>        <span class="k">else</span><span class="p">:</span>
+</span><span id="AuthenticationService.reset_user_password-532"><a href="#AuthenticationService.reset_user_password-532"><span class="linenos">532</span></a>            <span class="n">reason</span> <span class="o">=</span> <span class="s2">&quot;unknown&quot;</span>
+</span><span id="AuthenticationService.reset_user_password-533"><a href="#AuthenticationService.reset_user_password-533"><span class="linenos">533</span></a>            <span class="k">if</span> <span class="s2">&quot;request_error&quot;</span> <span class="ow">in</span> <span class="n">response</span><span class="p">:</span>
+</span><span id="AuthenticationService.reset_user_password-534"><a href="#AuthenticationService.reset_user_password-534"><span class="linenos">534</span></a>                <span class="n">reason</span> <span class="o">=</span> <span class="n">response</span><span class="p">[</span><span class="s2">&quot;request_error&quot;</span><span class="p">]</span>
+</span><span id="AuthenticationService.reset_user_password-535"><a href="#AuthenticationService.reset_user_password-535"><span class="linenos">535</span></a>            <span class="k">raise</span> <span class="n">TeaclaveException</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Failed to reset password (</span><span class="si">{</span><span class="n">reason</span><span class="si">}</span><span class="s2">)&quot;</span><span class="p">)</span>
+</span></pre></div>
+
+
+            <div class="docstring"><p>Reset password of a managed user.</p>
+
+<p>Args:</p>
+
+<pre><code>user_id: User ID.
+</code></pre>
+
+<p>Returns:</p>
+
+<pre><code>str: New password.
+</code></pre>
+</div>
+
+
+                            </div>
+                            <div id="AuthenticationService.delete_user" class="classattr">
+                                        <input id="AuthenticationService.delete_user-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
+<div class="attr function">
+            
+        <span class="def">def</span>
+        <span class="name">delete_user</span><span class="signature pdoc-code condensed">(<span class="param"><span class="bp">self</span>, </span><span class="param"><span class="n">user_id</span><span class="p">:</span> <span class="nb">str</span></span><span class="return-annotation">) -> <span class="nb">str</span>:</span></span>
+
+                <label class="view-source-button" for="AuthenticationService.delete_user-view-source"><span>View Source</span></label>
+
+    </div>
+    <a class="headerlink" href="#AuthenticationService.delete_user"></a>
+            <div class="pdoc-code codehilite"><pre><span></span><span id="AuthenticationService.delete_user-537"><a href="#AuthenticationService.delete_user-537"><span class="linenos">537</span></a>    <span class="k">def</span> <span class="nf">delete_user</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">user_id</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb [...]
+</span><span id="AuthenticationService.delete_user-538"><a href="#AuthenticationService.delete_user-538"><span class="linenos">538</span></a><span class="w">        </span><span class="sd">&quot;&quot;&quot;Delete a user.</span>
+</span><span id="AuthenticationService.delete_user-539"><a href="#AuthenticationService.delete_user-539"><span class="linenos">539</span></a>
+</span><span id="AuthenticationService.delete_user-540"><a href="#AuthenticationService.delete_user-540"><span class="linenos">540</span></a><span class="sd">        Args:</span>
+</span><span id="AuthenticationService.delete_user-541"><a href="#AuthenticationService.delete_user-541"><span class="linenos">541</span></a>
+</span><span id="AuthenticationService.delete_user-542"><a href="#AuthenticationService.delete_user-542"><span class="linenos">542</span></a><span class="sd">            user_id: User ID.</span>
+</span><span id="AuthenticationService.delete_user-543"><a href="#AuthenticationService.delete_user-543"><span class="linenos">543</span></a><span class="sd">        &quot;&quot;&quot;</span>
+</span><span id="AuthenticationService.delete_user-544"><a href="#AuthenticationService.delete_user-544"><span class="linenos">544</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">check_channel</span><span class="p">()</span>
+</span><span id="AuthenticationService.delete_user-545"><a href="#AuthenticationService.delete_user-545"><span class="linenos">545</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">check_metadata</span><span class="p">()</span>
+</span><span id="AuthenticationService.delete_user-546"><a href="#AuthenticationService.delete_user-546"><span class="linenos">546</span></a>        <span class="n">request</span> <span class="o">=</span> <span class="n">DeleteUserRequest</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">metadata</span><span class="p">,</span> <span class="n">user_id</span><span class="p">)</span>
+</span><span id="AuthenticationService.delete_user-547"><a href="#AuthenticationService.delete_user-547"><span class="linenos">547</span></a>        <span class="n">_write_message</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">channel</span><span class="p">,</span> <span class="n">request</span><span class="p">)</span>
+</span><span id="AuthenticationService.delete_user-548"><a href="#AuthenticationService.delete_user-548"><span class="linenos">548</span></a>        <span class="n">response</span> <span class="o">=</span> <span class="n">_read_message</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">channel</span><span class="p">)</span>
+</span><span id="AuthenticationService.delete_user-549"><a href="#AuthenticationService.delete_user-549"><span class="linenos">549</span></a>        <span class="k">if</span> <span class="n">response</span><span class="p">[</span><span class="s2">&quot;result&quot;</span><span class="p">]</span> <span class="o">==</span> <span class="s2">&quot;ok&quot;</span><span class="p">:</span>
+</span><span id="AuthenticationService.delete_user-550"><a href="#AuthenticationService.delete_user-550"><span class="linenos">550</span></a>            <span class="k">pass</span>
+</span><span id="AuthenticationService.delete_user-551"><a href="#AuthenticationService.delete_user-551"><span class="linenos">551</span></a>        <span class="k">else</span><span class="p">:</span>
+</span><span id="AuthenticationService.delete_user-552"><a href="#AuthenticationService.delete_user-552"><span class="linenos">552</span></a>            <span class="n">reason</span> <span class="o">=</span> <span class="s2">&quot;unknown&quot;</span>
+</span><span id="AuthenticationService.delete_user-553"><a href="#AuthenticationService.delete_user-553"><span class="linenos">553</span></a>            <span class="k">if</span> <span class="s2">&quot;request_error&quot;</span> <span class="ow">in</span> <span class="n">response</span><span class="p">:</span>
+</span><span id="AuthenticationService.delete_user-554"><a href="#AuthenticationService.delete_user-554"><span class="linenos">554</span></a>                <span class="n">reason</span> <span class="o">=</span> <span class="n">response</span><span class="p">[</span><span class="s2">&quot;request_error&quot;</span><span class="p">]</span>
+</span><span id="AuthenticationService.delete_user-555"><a href="#AuthenticationService.delete_user-555"><span class="linenos">555</span></a>            <span class="k">raise</span> <span class="n">TeaclaveException</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Failed to delete user (</span><span class="si">{</span><span class="n">reason</span><span class="si">}</span><span class="s2">)&quot;</span><span class="p">)</span>
+</span></pre></div>
+
+
+            <div class="docstring"><p>Delete a user.</p>
+
+<p>Args:</p>
+
+<pre><code>user_id: User ID.
+</code></pre>
+</div>
+
+
+                            </div>
+                            <div id="AuthenticationService.list_users" class="classattr">
+                                        <input id="AuthenticationService.list_users-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
+<div class="attr function">
+            
+        <span class="def">def</span>
+        <span class="name">list_users</span><span class="signature pdoc-code condensed">(<span class="param"><span class="bp">self</span>, </span><span class="param"><span class="n">user_id</span><span class="p">:</span> <span class="nb">str</span></span><span class="return-annotation">) -> <span class="nb">str</span>:</span></span>
+
+                <label class="view-source-button" for="AuthenticationService.list_users-view-source"><span>View Source</span></label>
+
+    </div>
+    <a class="headerlink" href="#AuthenticationService.list_users"></a>
+            <div class="pdoc-code codehilite"><pre><span></span><span id="AuthenticationService.list_users-557"><a href="#AuthenticationService.list_users-557"><span class="linenos">557</span></a>    <span class="k">def</span> <span class="nf">list_users</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">user_id</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">s [...]
+</span><span id="AuthenticationService.list_users-558"><a href="#AuthenticationService.list_users-558"><span class="linenos">558</span></a><span class="w">        </span><span class="sd">&quot;&quot;&quot;List managed users</span>
+</span><span id="AuthenticationService.list_users-559"><a href="#AuthenticationService.list_users-559"><span class="linenos">559</span></a>
+</span><span id="AuthenticationService.list_users-560"><a href="#AuthenticationService.list_users-560"><span class="linenos">560</span></a><span class="sd">        Args:</span>
+</span><span id="AuthenticationService.list_users-561"><a href="#AuthenticationService.list_users-561"><span class="linenos">561</span></a>
+</span><span id="AuthenticationService.list_users-562"><a href="#AuthenticationService.list_users-562"><span class="linenos">562</span></a><span class="sd">            user_id: User ID.</span>
+</span><span id="AuthenticationService.list_users-563"><a href="#AuthenticationService.list_users-563"><span class="linenos">563</span></a>
+</span><span id="AuthenticationService.list_users-564"><a href="#AuthenticationService.list_users-564"><span class="linenos">564</span></a><span class="sd">        Returns:</span>
+</span><span id="AuthenticationService.list_users-565"><a href="#AuthenticationService.list_users-565"><span class="linenos">565</span></a>
+</span><span id="AuthenticationService.list_users-566"><a href="#AuthenticationService.list_users-566"><span class="linenos">566</span></a><span class="sd">            str: User list</span>
+</span><span id="AuthenticationService.list_users-567"><a href="#AuthenticationService.list_users-567"><span class="linenos">567</span></a><span class="sd">        &quot;&quot;&quot;</span>
+</span><span id="AuthenticationService.list_users-568"><a href="#AuthenticationService.list_users-568"><span class="linenos">568</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">check_channel</span><span class="p">()</span>
+</span><span id="AuthenticationService.list_users-569"><a href="#AuthenticationService.list_users-569"><span class="linenos">569</span></a>        <span class="n">request</span> <span class="o">=</span> <span class="n">ListUsersRequest</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">metadata</span><span class="p">,</span> <span class="n">user_id</span><span class="p">)</span>
+</span><span id="AuthenticationService.list_users-570"><a href="#AuthenticationService.list_users-570"><span class="linenos">570</span></a>        <span class="n">_write_message</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">channel</span><span class="p">,</span> <span class="n">request</span><span class="p">)</span>
+</span><span id="AuthenticationService.list_users-571"><a href="#AuthenticationService.list_users-571"><span class="linenos">571</span></a>        <span class="n">response</span> <span class="o">=</span> <span class="n">_read_message</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">channel</span><span class="p">)</span>
+</span><span id="AuthenticationService.list_users-572"><a href="#AuthenticationService.list_users-572"><span class="linenos">572</span></a>        <span class="k">if</span> <span class="n">response</span><span class="p">[</span><span class="s2">&quot;result&quot;</span><span class="p">]</span> <span class="o">==</span> <span class="s2">&quot;ok&quot;</span><span class="p">:</span>
+</span><span id="AuthenticationService.list_users-573"><a href="#AuthenticationService.list_users-573"><span class="linenos">573</span></a>            <span class="k">return</span> <span class="n">response</span><span class="p">[</span><span class="s2">&quot;content&quot;</span><span class="p">][</span><span class="s2">&quot;ids&quot;</span><span class="p">]</span>
+</span><span id="AuthenticationService.list_users-574"><a href="#AuthenticationService.list_users-574"><span class="linenos">574</span></a>        <span class="k">else</span><span class="p">:</span>
+</span><span id="AuthenticationService.list_users-575"><a href="#AuthenticationService.list_users-575"><span class="linenos">575</span></a>            <span class="n">reason</span> <span class="o">=</span> <span class="s2">&quot;unknown&quot;</span>
+</span><span id="AuthenticationService.list_users-576"><a href="#AuthenticationService.list_users-576"><span class="linenos">576</span></a>            <span class="k">if</span> <span class="s2">&quot;request_error&quot;</span> <span class="ow">in</span> <span class="n">response</span><span class="p">:</span>
+</span><span id="AuthenticationService.list_users-577"><a href="#AuthenticationService.list_users-577"><span class="linenos">577</span></a>                <span class="n">reason</span> <span class="o">=</span> <span class="n">response</span><span class="p">[</span><span class="s2">&quot;request_error&quot;</span><span class="p">]</span>
+</span><span id="AuthenticationService.list_users-578"><a href="#AuthenticationService.list_users-578"><span class="linenos">578</span></a>            <span class="k">raise</span> <span class="n">TeaclaveException</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Failed to list user (</span><span class="si">{</span><span class="n">reason</span><span class="si">}</span><span class="s2">)&quot;</span><span class="p">)</span>
+</span></pre></div>
+
+
+            <div class="docstring"><p>List managed users</p>
+
+<p>Args:</p>
+
+<pre><code>user_id: User ID.
+</code></pre>
+
+<p>Returns:</p>
+
+<pre><code>str: User list
+</code></pre>
+</div>
+
+
+                            </div>
+                            <div class="inherited">
+                                <h5>Inherited Members</h5>
+                                <dl>
+                                    <div><dt><a href="#TeaclaveService">TeaclaveService</a></dt>
+                                <dd id="AuthenticationService.close" class="function"><a href="#TeaclaveService.close">close</a></dd>
+                <dd id="AuthenticationService.check_channel" class="function"><a href="#TeaclaveService.check_channel">check_channel</a></dd>
+                <dd id="AuthenticationService.check_metadata" class="function"><a href="#TeaclaveService.check_metadata">check_metadata</a></dd>
+                <dd id="AuthenticationService.connect" class="function"><a href="#TeaclaveService.connect">connect</a></dd>
+
+            </div>
+                                </dl>
+                            </div>
+                </section>
+                <section id="FunctionArgument">
+                            <input id="FunctionArgument-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
+<div class="attr class">
+            
+    <span class="def">class</span>
+    <span class="name">FunctionArgument</span>:
+
+                <label class="view-source-button" for="FunctionArgument-view-source"><span>View Source</span></label>
+
+    </div>
+    <a class="headerlink" href="#FunctionArgument"></a>
+            <div class="pdoc-code codehilite"><pre><span></span><span id="FunctionArgument-269"><a href="#FunctionArgument-269"><span class="linenos">269</span></a><span class="k">class</span> <span class="nc">FunctionArgument</span><span class="p">:</span>
+</span><span id="FunctionArgument-270"><a href="#FunctionArgument-270"><span class="linenos">270</span></a><span class="w">    </span><span class="sd">&quot;&quot;&quot;Function argument for registring.</span>
+</span><span id="FunctionArgument-271"><a href="#FunctionArgument-271"><span class="linenos">271</span></a>
+</span><span id="FunctionArgument-272"><a href="#FunctionArgument-272"><span class="linenos">272</span></a><span class="sd">    Args:</span>
+</span><span id="FunctionArgument-273"><a href="#FunctionArgument-273"><span class="linenos">273</span></a><span class="sd">        key: Name of the argument.</span>
+</span><span id="FunctionArgument-274"><a href="#FunctionArgument-274"><span class="linenos">274</span></a><span class="sd">        default_value: A default value of the argument. The default value is &quot;&quot;.</span>
+</span><span id="FunctionArgument-275"><a href="#FunctionArgument-275"><span class="linenos">275</span></a><span class="sd">        allow_overwrite: If allow_overwrite flag is set to be true. The service</span>
+</span><span id="FunctionArgument-276"><a href="#FunctionArgument-276"><span class="linenos">276</span></a><span class="sd">                         will allow the task creator to overwrite the arguement</span>
+</span><span id="FunctionArgument-277"><a href="#FunctionArgument-277"><span class="linenos">277</span></a><span class="sd">                         value when creating tasks.</span>
+</span><span id="FunctionArgument-278"><a href="#FunctionArgument-278"><span class="linenos">278</span></a><span class="sd">    &quot;&quot;&quot;</span>
+</span><span id="FunctionArgument-279"><a href="#FunctionArgument-279"><span class="linenos">279</span></a>
+</span><span id="FunctionArgument-280"><a href="#FunctionArgument-280"><span class="linenos">280</span></a>    <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span>
+</span><span id="FunctionArgument-281"><a href="#FunctionArgument-281"><span class="linenos">281</span></a>                 <span class="n">key</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span>
+</span><span id="FunctionArgument-282"><a href="#FunctionArgument-282"><span class="linenos">282</span></a>                 <span class="n">default_value</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="s2">&quot;&quot;</span><span class="p">,</span>
+</span><span id="FunctionArgument-283"><a href="#FunctionArgument-283"><span class="linenos">283</span></a>                 <span class="n">allow_overwrite</span><span class="o">=</span><span class="kc">True</span><span class="p">):</span>
+</span><span id="FunctionArgument-284"><a href="#FunctionArgument-284"><span class="linenos">284</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">key</span> <span class="o">=</span> <span class="n">key</span>
+</span><span id="FunctionArgument-285"><a href="#FunctionArgument-285"><span class="linenos">285</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">default_value</span> <span class="o">=</span> <span class="n">default_value</span>
+</span><span id="FunctionArgument-286"><a href="#FunctionArgument-286"><span class="linenos">286</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">allow_overwrite</span> <span class="o">=</span> <span class="n">allow_overwrite</span>
+</span></pre></div>
+
+
+            <div class="docstring"><p>Function argument for registring.</p>
+
+<p>Args:
+    key: Name of the argument.
+    default_value: A default value of the argument. The default value is "".
+    allow_overwrite: If allow_overwrite flag is set to be true. The service
+                     will allow the task creator to overwrite the arguement
+                     value when creating tasks.</p>
+</div>
+
+
+                            <div id="FunctionArgument.__init__" class="classattr">
+                                        <input id="FunctionArgument.__init__-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
+<div class="attr function">
+            
+        <span class="name">FunctionArgument</span><span class="signature pdoc-code condensed">(<span class="param"><span class="n">key</span><span class="p">:</span> <span class="nb">str</span>, </span><span class="param"><span class="n">default_value</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="s1">&#39;&#39;</span>, </span><span class="param"><span class="n">allow_overwrite</span><span class="o">=</span><span class="kc">True</span></s [...]
+
+                <label class="view-source-button" for="FunctionArgument.__init__-view-source"><span>View Source</span></label>
+
+    </div>
+    <a class="headerlink" href="#FunctionArgument.__init__"></a>
+            <div class="pdoc-code codehilite"><pre><span></span><span id="FunctionArgument.__init__-280"><a href="#FunctionArgument.__init__-280"><span class="linenos">280</span></a>    <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span>
+</span><span id="FunctionArgument.__init__-281"><a href="#FunctionArgument.__init__-281"><span class="linenos">281</span></a>                 <span class="n">key</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span>
+</span><span id="FunctionArgument.__init__-282"><a href="#FunctionArgument.__init__-282"><span class="linenos">282</span></a>                 <span class="n">default_value</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="s2">&quot;&quot;</span><span class="p">,</span>
+</span><span id="FunctionArgument.__init__-283"><a href="#FunctionArgument.__init__-283"><span class="linenos">283</span></a>                 <span class="n">allow_overwrite</span><span class="o">=</span><span class="kc">True</span><span class="p">):</span>
+</span><span id="FunctionArgument.__init__-284"><a href="#FunctionArgument.__init__-284"><span class="linenos">284</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">key</span> <span class="o">=</span> <span class="n">key</span>
+</span><span id="FunctionArgument.__init__-285"><a href="#FunctionArgument.__init__-285"><span class="linenos">285</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">default_value</span> <span class="o">=</span> <span class="n">default_value</span>
+</span><span id="FunctionArgument.__init__-286"><a href="#FunctionArgument.__init__-286"><span class="linenos">286</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">allow_overwrite</span> <span class="o">=</span> <span class="n">allow_overwrite</span>
+</span></pre></div>
+
+
+    
+
+                            </div>
+                </section>
+                <section id="FunctionInput">
+                            <input id="FunctionInput-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
+<div class="attr class">
+            
+    <span class="def">class</span>
+    <span class="name">FunctionInput</span>:
+
+                <label class="view-source-button" for="FunctionInput-view-source"><span>View Source</span></label>
+
+    </div>
+    <a class="headerlink" href="#FunctionInput"></a>
+            <div class="pdoc-code codehilite"><pre><span></span><span id="FunctionInput-237"><a href="#FunctionInput-237"><span class="linenos">237</span></a><span class="k">class</span> <span class="nc">FunctionInput</span><span class="p">:</span>
+</span><span id="FunctionInput-238"><a href="#FunctionInput-238"><span class="linenos">238</span></a><span class="w">    </span><span class="sd">&quot;&quot;&quot;Function input for registering.</span>
+</span><span id="FunctionInput-239"><a href="#FunctionInput-239"><span class="linenos">239</span></a>
+</span><span id="FunctionInput-240"><a href="#FunctionInput-240"><span class="linenos">240</span></a><span class="sd">    Args:</span>
+</span><span id="FunctionInput-241"><a href="#FunctionInput-241"><span class="linenos">241</span></a>
+</span><span id="FunctionInput-242"><a href="#FunctionInput-242"><span class="linenos">242</span></a><span class="sd">        name: Name of input data.</span>
+</span><span id="FunctionInput-243"><a href="#FunctionInput-243"><span class="linenos">243</span></a><span class="sd">        description: Description of the input data.</span>
+</span><span id="FunctionInput-244"><a href="#FunctionInput-244"><span class="linenos">244</span></a><span class="sd">        optional: [Default: False] Data owners do not need to register the data.</span>
+</span><span id="FunctionInput-245"><a href="#FunctionInput-245"><span class="linenos">245</span></a><span class="sd">    &quot;&quot;&quot;</span>
+</span><span id="FunctionInput-246"><a href="#FunctionInput-246"><span class="linenos">246</span></a>
+</span><span id="FunctionInput-247"><a href="#FunctionInput-247"><span class="linenos">247</span></a>    <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">description</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">optional</span><span [...]
+</span><span id="FunctionInput-248"><a href="#FunctionInput-248"><span class="linenos">248</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">name</span> <span class="o">=</span> <span class="n">name</span>
+</span><span id="FunctionInput-249"><a href="#FunctionInput-249"><span class="linenos">249</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">description</span> <span class="o">=</span> <span class="n">description</span>
+</span><span id="FunctionInput-250"><a href="#FunctionInput-250"><span class="linenos">250</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">optional</span> <span class="o">=</span> <span class="n">optional</span>
+</span></pre></div>
+
+
+            <div class="docstring"><p>Function input for registering.</p>
+
+<p>Args:</p>
+
+<pre><code>name: Name of input data.
+description: Description of the input data.
+optional: [Default: False] Data owners do not need to register the data.
+</code></pre>
+</div>
+
+
+                            <div id="FunctionInput.__init__" class="classattr">
+                                        <input id="FunctionInput.__init__-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
+<div class="attr function">
+            
+        <span class="name">FunctionInput</span><span class="signature pdoc-code condensed">(<span class="param"><span class="n">name</span><span class="p">:</span> <span class="nb">str</span>, </span><span class="param"><span class="n">description</span><span class="p">:</span> <span class="nb">str</span>, </span><span class="param"><span class="n">optional</span><span class="o">=</span><span class="kc">False</span></span>)</span>
+
+                <label class="view-source-button" for="FunctionInput.__init__-view-source"><span>View Source</span></label>
+
+    </div>
+    <a class="headerlink" href="#FunctionInput.__init__"></a>
+            <div class="pdoc-code codehilite"><pre><span></span><span id="FunctionInput.__init__-247"><a href="#FunctionInput.__init__-247"><span class="linenos">247</span></a>    <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">description</span><span class="p">:</span> <span class=" [...]
+</span><span id="FunctionInput.__init__-248"><a href="#FunctionInput.__init__-248"><span class="linenos">248</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">name</span> <span class="o">=</span> <span class="n">name</span>
+</span><span id="FunctionInput.__init__-249"><a href="#FunctionInput.__init__-249"><span class="linenos">249</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">description</span> <span class="o">=</span> <span class="n">description</span>
+</span><span id="FunctionInput.__init__-250"><a href="#FunctionInput.__init__-250"><span class="linenos">250</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">optional</span> <span class="o">=</span> <span class="n">optional</span>
+</span></pre></div>
+
+
+    
+
+                            </div>
+                </section>
+                <section id="FunctionOutput">
+                            <input id="FunctionOutput-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
+<div class="attr class">
+            
+    <span class="def">class</span>
+    <span class="name">FunctionOutput</span>:
+
+                <label class="view-source-button" for="FunctionOutput-view-source"><span>View Source</span></label>
+
+    </div>
+    <a class="headerlink" href="#FunctionOutput"></a>
+            <div class="pdoc-code codehilite"><pre><span></span><span id="FunctionOutput-253"><a href="#FunctionOutput-253"><span class="linenos">253</span></a><span class="k">class</span> <span class="nc">FunctionOutput</span><span class="p">:</span>
+</span><span id="FunctionOutput-254"><a href="#FunctionOutput-254"><span class="linenos">254</span></a><span class="w">    </span><span class="sd">&quot;&quot;&quot;Function output for registering.</span>
+</span><span id="FunctionOutput-255"><a href="#FunctionOutput-255"><span class="linenos">255</span></a>
+</span><span id="FunctionOutput-256"><a href="#FunctionOutput-256"><span class="linenos">256</span></a><span class="sd">    Args:</span>
+</span><span id="FunctionOutput-257"><a href="#FunctionOutput-257"><span class="linenos">257</span></a>
+</span><span id="FunctionOutput-258"><a href="#FunctionOutput-258"><span class="linenos">258</span></a><span class="sd">        name: Name of output data.</span>
+</span><span id="FunctionOutput-259"><a href="#FunctionOutput-259"><span class="linenos">259</span></a><span class="sd">        description: Description of the output data.</span>
+</span><span id="FunctionOutput-260"><a href="#FunctionOutput-260"><span class="linenos">260</span></a><span class="sd">        optional: [Default: False] Data owners do not need to register the data.</span>
+</span><span id="FunctionOutput-261"><a href="#FunctionOutput-261"><span class="linenos">261</span></a><span class="sd">    &quot;&quot;&quot;</span>
+</span><span id="FunctionOutput-262"><a href="#FunctionOutput-262"><span class="linenos">262</span></a>
+</span><span id="FunctionOutput-263"><a href="#FunctionOutput-263"><span class="linenos">263</span></a>    <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">description</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">optional</span><sp [...]
+</span><span id="FunctionOutput-264"><a href="#FunctionOutput-264"><span class="linenos">264</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">name</span> <span class="o">=</span> <span class="n">name</span>
+</span><span id="FunctionOutput-265"><a href="#FunctionOutput-265"><span class="linenos">265</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">description</span> <span class="o">=</span> <span class="n">description</span>
+</span><span id="FunctionOutput-266"><a href="#FunctionOutput-266"><span class="linenos">266</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">optional</span> <span class="o">=</span> <span class="n">optional</span>
+</span></pre></div>
+
+
+            <div class="docstring"><p>Function output for registering.</p>
+
+<p>Args:</p>
+
+<pre><code>name: Name of output data.
+description: Description of the output data.
+optional: [Default: False] Data owners do not need to register the data.
+</code></pre>
+</div>
+
+
+                            <div id="FunctionOutput.__init__" class="classattr">
+                                        <input id="FunctionOutput.__init__-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
+<div class="attr function">
+            
+        <span class="name">FunctionOutput</span><span class="signature pdoc-code condensed">(<span class="param"><span class="n">name</span><span class="p">:</span> <span class="nb">str</span>, </span><span class="param"><span class="n">description</span><span class="p">:</span> <span class="nb">str</span>, </span><span class="param"><span class="n">optional</span><span class="o">=</span><span class="kc">False</span></span>)</span>
+
+                <label class="view-source-button" for="FunctionOutput.__init__-view-source"><span>View Source</span></label>
+
+    </div>
+    <a class="headerlink" href="#FunctionOutput.__init__"></a>
+            <div class="pdoc-code codehilite"><pre><span></span><span id="FunctionOutput.__init__-263"><a href="#FunctionOutput.__init__-263"><span class="linenos">263</span></a>    <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">description</span><span class="p">:</span> <span class [...]
+</span><span id="FunctionOutput.__init__-264"><a href="#FunctionOutput.__init__-264"><span class="linenos">264</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">name</span> <span class="o">=</span> <span class="n">name</span>
+</span><span id="FunctionOutput.__init__-265"><a href="#FunctionOutput.__init__-265"><span class="linenos">265</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">description</span> <span class="o">=</span> <span class="n">description</span>
+</span><span id="FunctionOutput.__init__-266"><a href="#FunctionOutput.__init__-266"><span class="linenos">266</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">optional</span> <span class="o">=</span> <span class="n">optional</span>
+</span></pre></div>
+
+
+    
+
+                            </div>
+                </section>
+                <section id="OwnerList">
+                            <input id="OwnerList-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
+<div class="attr class">
+            
+    <span class="def">class</span>
+    <span class="name">OwnerList</span>:
+
+                <label class="view-source-button" for="OwnerList-view-source"><span>View Source</span></label>
+
+    </div>
+    <a class="headerlink" href="#OwnerList"></a>
+            <div class="pdoc-code codehilite"><pre><span></span><span id="OwnerList-289"><a href="#OwnerList-289"><span class="linenos">289</span></a><span class="k">class</span> <span class="nc">OwnerList</span><span class="p">:</span>
+</span><span id="OwnerList-290"><a href="#OwnerList-290"><span class="linenos">290</span></a><span class="w">    </span><span class="sd">&quot;&quot;&quot;Defines data ownership.</span>
+</span><span id="OwnerList-291"><a href="#OwnerList-291"><span class="linenos">291</span></a>
+</span><span id="OwnerList-292"><a href="#OwnerList-292"><span class="linenos">292</span></a><span class="sd">    Args:</span>
+</span><span id="OwnerList-293"><a href="#OwnerList-293"><span class="linenos">293</span></a>
+</span><span id="OwnerList-294"><a href="#OwnerList-294"><span class="linenos">294</span></a><span class="sd">        data_name: Name of output data.</span>
+</span><span id="OwnerList-295"><a href="#OwnerList-295"><span class="linenos">295</span></a><span class="sd">        uids: A list of user id which own this data.</span>
+</span><span id="OwnerList-296"><a href="#OwnerList-296"><span class="linenos">296</span></a><span class="sd">    &quot;&quot;&quot;</span>
+</span><span id="OwnerList-297"><a href="#OwnerList-297"><span class="linenos">297</span></a>
+</span><span id="OwnerList-298"><a href="#OwnerList-298"><span class="linenos">298</span></a>    <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">data_name</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">uids</span><span class="p">:</span> <span class="n">List</span><span class="p">[</span><span class="nb">str</span><span class="p">]):</span>
+</span><span id="OwnerList-299"><a href="#OwnerList-299"><span class="linenos">299</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">data_name</span> <span class="o">=</span> <span class="n">data_name</span>
+</span><span id="OwnerList-300"><a href="#OwnerList-300"><span class="linenos">300</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">uids</span> <span class="o">=</span> <span class="n">uids</span>
+</span></pre></div>
+
+
+            <div class="docstring"><p>Defines data ownership.</p>
+
+<p>Args:</p>
+
+<pre><code>data_name: Name of output data.
+uids: A list of user id which own this data.
+</code></pre>
+</div>
+
+
+                            <div id="OwnerList.__init__" class="classattr">
+                                        <input id="OwnerList.__init__-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
+<div class="attr function">
+            
+        <span class="name">OwnerList</span><span class="signature pdoc-code condensed">(<span class="param"><span class="n">data_name</span><span class="p">:</span> <span class="nb">str</span>, </span><span class="param"><span class="n">uids</span><span class="p">:</span> <span class="n">List</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span></span>)</span>
+
+                <label class="view-source-button" for="OwnerList.__init__-view-source"><span>View Source</span></label>
+
+    </div>
+    <a class="headerlink" href="#OwnerList.__init__"></a>
+            <div class="pdoc-code codehilite"><pre><span></span><span id="OwnerList.__init__-298"><a href="#OwnerList.__init__-298"><span class="linenos">298</span></a>    <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">data_name</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">uids</span><span class="p">:</span> <span class="n">List</s [...]
+</span><span id="OwnerList.__init__-299"><a href="#OwnerList.__init__-299"><span class="linenos">299</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">data_name</span> <span class="o">=</span> <span class="n">data_name</span>
+</span><span id="OwnerList.__init__-300"><a href="#OwnerList.__init__-300"><span class="linenos">300</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">uids</span> <span class="o">=</span> <span class="n">uids</span>
+</span></pre></div>
+
+
+    
+
+                            </div>
+                </section>
+                <section id="DataMap">
+                            <input id="DataMap-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
+<div class="attr class">
+            
+    <span class="def">class</span>
+    <span class="name">DataMap</span>:
+
+                <label class="view-source-button" for="DataMap-view-source"><span>View Source</span></label>
+
+    </div>
+    <a class="headerlink" href="#DataMap"></a>
+            <div class="pdoc-code codehilite"><pre><span></span><span id="DataMap-303"><a href="#DataMap-303"><span class="linenos">303</span></a><span class="k">class</span> <span class="nc">DataMap</span><span class="p">:</span>
+</span><span id="DataMap-304"><a href="#DataMap-304"><span class="linenos">304</span></a><span class="w">    </span><span class="sd">&quot;&quot;&quot;Assign data id to input or output data.</span>
+</span><span id="DataMap-305"><a href="#DataMap-305"><span class="linenos">305</span></a>
+</span><span id="DataMap-306"><a href="#DataMap-306"><span class="linenos">306</span></a><span class="sd">    Args:</span>
+</span><span id="DataMap-307"><a href="#DataMap-307"><span class="linenos">307</span></a>
+</span><span id="DataMap-308"><a href="#DataMap-308"><span class="linenos">308</span></a><span class="sd">        data_name: Name of output data.</span>
+</span><span id="DataMap-309"><a href="#DataMap-309"><span class="linenos">309</span></a><span class="sd">        data_id: Id for the data name.</span>
+</span><span id="DataMap-310"><a href="#DataMap-310"><span class="linenos">310</span></a><span class="sd">    &quot;&quot;&quot;</span>
+</span><span id="DataMap-311"><a href="#DataMap-311"><span class="linenos">311</span></a>
+</span><span id="DataMap-312"><a href="#DataMap-312"><span class="linenos">312</span></a>    <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">data_name</span><span class="p">,</span> <span class="n">data_id</span><span class="p">):</span>
+</span><span id="DataMap-313"><a href="#DataMap-313"><span class="linenos">313</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">data_name</span> <span class="o">=</span> <span class="n">data_name</span>
+</span><span id="DataMap-314"><a href="#DataMap-314"><span class="linenos">314</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">data_id</span> <span class="o">=</span> <span class="n">data_id</span>
+</span></pre></div>
+
+
+            <div class="docstring"><p>Assign data id to input or output data.</p>
+
+<p>Args:</p>
+
+<pre><code>data_name: Name of output data.
+data_id: Id for the data name.
+</code></pre>
+</div>
+
+
+                            <div id="DataMap.__init__" class="classattr">
+                                        <input id="DataMap.__init__-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
+<div class="attr function">
+            
+        <span class="name">DataMap</span><span class="signature pdoc-code condensed">(<span class="param"><span class="n">data_name</span>, </span><span class="param"><span class="n">data_id</span></span>)</span>
+
+                <label class="view-source-button" for="DataMap.__init__-view-source"><span>View Source</span></label>
+
+    </div>
+    <a class="headerlink" href="#DataMap.__init__"></a>
+            <div class="pdoc-code codehilite"><pre><span></span><span id="DataMap.__init__-312"><a href="#DataMap.__init__-312"><span class="linenos">312</span></a>    <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">data_name</span><span class="p">,</span> <span class="n">data_id</span><span class="p">):</span>
+</span><span id="DataMap.__init__-313"><a href="#DataMap.__init__-313"><span class="linenos">313</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">data_name</span> <span class="o">=</span> <span class="n">data_name</span>
+</span><span id="DataMap.__init__-314"><a href="#DataMap.__init__-314"><span class="linenos">314</span></a>        <span class="bp">self</span><span class="o">.</span><span class="n">data_id</span> <span class="o">=</span> <span class="n">data_id</span>
+</span></pre></div>
+
+
+    
+
+                            </div>
+                </section>
+    </main>
+</body>
+</html>
\ No newline at end of file
diff --git a/api-docs/client-sdk-python/search.js b/api-docs/client-sdk-python/search.js
new file mode 100644
index 000000000..352000a17
--- /dev/null
+++ b/api-docs/client-sdk-python/search.js
@@ -0,0 +1,46 @@
+window.pdocSearch = (function(){
+/** elasticlunr - http://weixsong.github.io * Copyright (C) 2017 Oliver Nightingale * Copyright (C) 2017 Wei Song * MIT Licensed */!function(){function e(e){if(null===e||"object"!=typeof e)return e;var t=e.constructor();for(var n in e)e.hasOwnProperty(n)&&(t[n]=e[n]);return t}var t=function(e){var n=new t.Index;return n.pipeline.add(t.trimmer,t.stopWordFilter,t.stemmer),e&&e.call(n,n),n};t.version="0.9.5",lunr=t,t.utils={},t.utils.warn=function(e){return function(t){e.console&&console.wa [...]
+    /** pdoc search index */const docs = {"version": "0.9.5", "fields": ["qualname", "fullname", "annotation", "default_value", "signature", "bases", "doc"], "ref": "fullname", "documentStore": {"docs": {"python.teaclave": {"fullname": "python.teaclave", "modulename": "python.teaclave", "kind": "module", "doc": "<p>Python package <code>teaclave</code> is the client SDK for Python developers, providing\nsome essential data structures, service, and client classes to establish\ntrusted TLS  [...]
+
+    // mirrored in build-search-index.js (part 1)
+    // Also split on html tags. this is a cheap heuristic, but good enough.
+    elasticlunr.tokenizer.setSeperator(/[\s\-.;&_'"=,()]+|<[^>]*>/);
+
+    let searchIndex;
+    if (docs._isPrebuiltIndex) {
+        console.info("using precompiled search index");
+        searchIndex = elasticlunr.Index.load(docs);
+    } else {
+        console.time("building search index");
+        // mirrored in build-search-index.js (part 2)
+        searchIndex = elasticlunr(function () {
+            this.pipeline.remove(elasticlunr.stemmer);
+            this.pipeline.remove(elasticlunr.stopWordFilter);
+            this.addField("qualname");
+            this.addField("fullname");
+            this.addField("annotation");
+            this.addField("default_value");
+            this.addField("signature");
+            this.addField("bases");
+            this.addField("doc");
+            this.setRef("fullname");
+        });
+        for (let doc of docs) {
+            searchIndex.addDoc(doc);
+        }
+        console.timeEnd("building search index");
+    }
+
+    return (term) => searchIndex.search(term, {
+        fields: {
+            qualname: {boost: 4},
+            fullname: {boost: 2},
+            annotation: {boost: 2},
+            default_value: {boost: 2},
+            signature: {boost: 2},
+            bases: {boost: 2},
+            doc: {boost: 1},
+        },
+        expand: true
+    });
+})();
\ No newline at end of file
diff --git a/api-docs/client-sdk-rust/.lock b/api-docs/client-sdk-rust/.lock
new file mode 100644
index 000000000..e69de29bb
diff --git a/api-docs/client-sdk-rust/COPYRIGHT.txt b/api-docs/client-sdk-rust/COPYRIGHT.txt
new file mode 100644
index 000000000..34e48134c
--- /dev/null
+++ b/api-docs/client-sdk-rust/COPYRIGHT.txt
@@ -0,0 +1,46 @@
+These documentation pages include resources by third parties. This copyright
+file applies only to those resources. The following third party resources are
+included, and carry their own copyright notices and license terms:
+
+* Fira Sans (FiraSans-Regular.woff2, FiraSans-Medium.woff2):
+
+    Copyright (c) 2014, Mozilla Foundation https://mozilla.org/
+    with Reserved Font Name Fira Sans.
+
+    Copyright (c) 2014, Telefonica S.A.
+
+    Licensed under the SIL Open Font License, Version 1.1.
+    See FiraSans-LICENSE.txt.
+
+* rustdoc.css, main.js, and playpen.js:
+
+    Copyright 2015 The Rust Developers.
+    Licensed under the Apache License, Version 2.0 (see LICENSE-APACHE.txt) or
+    the MIT license (LICENSE-MIT.txt) at your option.
+
+* normalize.css:
+
+    Copyright (c) Nicolas Gallagher and Jonathan Neal.
+    Licensed under the MIT license (see LICENSE-MIT.txt).
+
+* Source Code Pro (SourceCodePro-Regular.ttf.woff2,
+    SourceCodePro-Semibold.ttf.woff2, SourceCodePro-It.ttf.woff2):
+
+    Copyright 2010, 2012 Adobe Systems Incorporated (http://www.adobe.com/),
+    with Reserved Font Name 'Source'. All Rights Reserved. Source is a trademark
+    of Adobe Systems Incorporated in the United States and/or other countries.
+
+    Licensed under the SIL Open Font License, Version 1.1.
+    See SourceCodePro-LICENSE.txt.
+
+* Source Serif 4 (SourceSerif4-Regular.ttf.woff2, SourceSerif4-Bold.ttf.woff2,
+    SourceSerif4-It.ttf.woff2):
+
+    Copyright 2014-2021 Adobe (http://www.adobe.com/), with Reserved Font Name
+    'Source'. All Rights Reserved. Source is a trademark of Adobe in the United
+    States and/or other countries.
+
+    Licensed under the SIL Open Font License, Version 1.1.
+    See SourceSerif4-LICENSE.md.
+
+This copyright file is intended to be distributed with rustdoc output.
diff --git a/api-docs/client-sdk-rust/FiraSans-LICENSE.txt b/api-docs/client-sdk-rust/FiraSans-LICENSE.txt
new file mode 100644
index 000000000..ff9afab06
--- /dev/null
+++ b/api-docs/client-sdk-rust/FiraSans-LICENSE.txt
@@ -0,0 +1,94 @@
+Digitized data copyright (c) 2012-2015, The Mozilla Foundation and Telefonica S.A.
+with Reserved Font Name < Fira >,
+
+This Font Software is licensed under the SIL Open Font License, Version 1.1.
+This license is copied below, and is also available with a FAQ at:
+http://scripts.sil.org/OFL
+
+
+-----------------------------------------------------------
+SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
+-----------------------------------------------------------
+
+PREAMBLE
+The goals of the Open Font License (OFL) are to stimulate worldwide
+development of collaborative font projects, to support the font creation
+efforts of academic and linguistic communities, and to provide a free and
+open framework in which fonts may be shared and improved in partnership
+with others.
+
+The OFL allows the licensed fonts to be used, studied, modified and
+redistributed freely as long as they are not sold by themselves. The
+fonts, including any derivative works, can be bundled, embedded,
+redistributed and/or sold with any software provided that any reserved
+names are not used by derivative works. The fonts and derivatives,
+however, cannot be released under any other type of license. The
+requirement for fonts to remain under this license does not apply
+to any document created using the fonts or their derivatives.
+
+DEFINITIONS
+"Font Software" refers to the set of files released by the Copyright
+Holder(s) under this license and clearly marked as such. This may
+include source files, build scripts and documentation.
+
+"Reserved Font Name" refers to any names specified as such after the
+copyright statement(s).
+
+"Original Version" refers to the collection of Font Software components as
+distributed by the Copyright Holder(s).
+
+"Modified Version" refers to any derivative made by adding to, deleting,
+or substituting -- in part or in whole -- any of the components of the
+Original Version, by changing formats or by porting the Font Software to a
+new environment.
+
+"Author" refers to any designer, engineer, programmer, technical
+writer or other person who contributed to the Font Software.
+
+PERMISSION & CONDITIONS
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of the Font Software, to use, study, copy, merge, embed, modify,
+redistribute, and sell modified and unmodified copies of the Font
+Software, subject to the following conditions:
+
+1) Neither the Font Software nor any of its individual components,
+in Original or Modified Versions, may be sold by itself.
+
+2) Original or Modified Versions of the Font Software may be bundled,
+redistributed and/or sold with any software, provided that each copy
+contains the above copyright notice and this license. These can be
+included either as stand-alone text files, human-readable headers or
+in the appropriate machine-readable metadata fields within text or
+binary files as long as those fields can be easily viewed by the user.
+
+3) No Modified Version of the Font Software may use the Reserved Font
+Name(s) unless explicit written permission is granted by the corresponding
+Copyright Holder. This restriction only applies to the primary font name as
+presented to the users.
+
+4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
+Software shall not be used to promote, endorse or advertise any
+Modified Version, except to acknowledge the contribution(s) of the
+Copyright Holder(s) and the Author(s) or with their explicit written
+permission.
+
+5) The Font Software, modified or unmodified, in part or in whole,
+must be distributed entirely under this license, and must not be
+distributed under any other license. The requirement for fonts to
+remain under this license does not apply to any document created
+using the Font Software.
+
+TERMINATION
+This license becomes null and void if any of the above conditions are
+not met.
+
+DISCLAIMER
+THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
+COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
+DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
+OTHER DEALINGS IN THE FONT SOFTWARE.
diff --git a/api-docs/client-sdk-rust/FiraSans-Medium.woff2 b/api-docs/client-sdk-rust/FiraSans-Medium.woff2
new file mode 100644
index 000000000..7a1e5fc54
Binary files /dev/null and b/api-docs/client-sdk-rust/FiraSans-Medium.woff2 differ
diff --git a/api-docs/client-sdk-rust/FiraSans-Regular.woff2 b/api-docs/client-sdk-rust/FiraSans-Regular.woff2
new file mode 100644
index 000000000..e766e06cc
Binary files /dev/null and b/api-docs/client-sdk-rust/FiraSans-Regular.woff2 differ
diff --git a/api-docs/client-sdk-rust/LICENSE-APACHE.txt b/api-docs/client-sdk-rust/LICENSE-APACHE.txt
new file mode 100644
index 000000000..16fe87b06
--- /dev/null
+++ b/api-docs/client-sdk-rust/LICENSE-APACHE.txt
@@ -0,0 +1,201 @@
+                              Apache License
+                        Version 2.0, January 2004
+                     http://www.apache.org/licenses/
+
+TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+1. Definitions.
+
+   "License" shall mean the terms and conditions for use, reproduction,
+   and distribution as defined by Sections 1 through 9 of this document.
+
+   "Licensor" shall mean the copyright owner or entity authorized by
+   the copyright owner that is granting the License.
+
+   "Legal Entity" shall mean the union of the acting entity and all
+   other entities that control, are controlled by, or are under common
+   control with that entity. For the purposes of this definition,
+   "control" means (i) the power, direct or indirect, to cause the
+   direction or management of such entity, whether by contract or
+   otherwise, or (ii) ownership of fifty percent (50%) or more of the
+   outstanding shares, or (iii) beneficial ownership of such entity.
+
+   "You" (or "Your") shall mean an individual or Legal Entity
+   exercising permissions granted by this License.
+
+   "Source" form shall mean the preferred form for making modifications,
+   including but not limited to software source code, documentation
+   source, and configuration files.
+
+   "Object" form shall mean any form resulting from mechanical
+   transformation or translation of a Source form, including but
+   not limited to compiled object code, generated documentation,
+   and conversions to other media types.
+
+   "Work" shall mean the work of authorship, whether in Source or
+   Object form, made available under the License, as indicated by a
+   copyright notice that is included in or attached to the work
+   (an example is provided in the Appendix below).
+
+   "Derivative Works" shall mean any work, whether in Source or Object
+   form, that is based on (or derived from) the Work and for which the
+   editorial revisions, annotations, elaborations, or other modifications
+   represent, as a whole, an original work of authorship. For the purposes
+   of this License, Derivative Works shall not include works that remain
+   separable from, or merely link (or bind by name) to the interfaces of,
+   the Work and Derivative Works thereof.
+
+   "Contribution" shall mean any work of authorship, including
+   the original version of the Work and any modifications or additions
+   to that Work or Derivative Works thereof, that is intentionally
+   submitted to Licensor for inclusion in the Work by the copyright owner
+   or by an individual or Legal Entity authorized to submit on behalf of
+   the copyright owner. For the purposes of this definition, "submitted"
+   means any form of electronic, verbal, or written communication sent
+   to the Licensor or its representatives, including but not limited to
+   communication on electronic mailing lists, source code control systems,
+   and issue tracking systems that are managed by, or on behalf of, the
+   Licensor for the purpose of discussing and improving the Work, but
+   excluding communication that is conspicuously marked or otherwise
+   designated in writing by the copyright owner as "Not a Contribution."
+
+   "Contributor" shall mean Licensor and any individual or Legal Entity
+   on behalf of whom a Contribution has been received by Licensor and
+   subsequently incorporated within the Work.
+
+2. Grant of Copyright License. Subject to the terms and conditions of
+   this License, each Contributor hereby grants to You a perpetual,
+   worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+   copyright license to reproduce, prepare Derivative Works of,
+   publicly display, publicly perform, sublicense, and distribute the
+   Work and such Derivative Works in Source or Object form.
+
+3. Grant of Patent License. Subject to the terms and conditions of
+   this License, each Contributor hereby grants to You a perpetual,
+   worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+   (except as stated in this section) patent license to make, have made,
+   use, offer to sell, sell, import, and otherwise transfer the Work,
+   where such license applies only to those patent claims licensable
+   by such Contributor that are necessarily infringed by their
+   Contribution(s) alone or by combination of their Contribution(s)
+   with the Work to which such Contribution(s) was submitted. If You
+   institute patent litigation against any entity (including a
+   cross-claim or counterclaim in a lawsuit) alleging that the Work
+   or a Contribution incorporated within the Work constitutes direct
+   or contributory patent infringement, then any patent licenses
+   granted to You under this License for that Work shall terminate
+   as of the date such litigation is filed.
+
+4. Redistribution. You may reproduce and distribute copies of the
+   Work or Derivative Works thereof in any medium, with or without
+   modifications, and in Source or Object form, provided that You
+   meet the following conditions:
+
+   (a) You must give any other recipients of the Work or
+       Derivative Works a copy of this License; and
... 329214 lines suppressed ...


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@teaclave.apache.org
For additional commands, e-mail: commits-help@teaclave.apache.org