MongoDB Driver API for Node.js (original) (raw)
| Node.js MongoDB Driver API Admin Typedefs resultCallback Methods addUser buildInfo command listDatabases ping removeUser replSetGetStatus serverInfo serverStatus validateCollection AggregationCursor Typedefs endCallback iteratorCallback resultCallback toArrayResultCallback Methods batchSize clone close each explain forEach geoNear group hasNext isClosed limit lookup match maxTimeMS next out pause pipe project read redact resume rewind setEncoding skip sort toArray unpipe unshift unwind wrap Events close data end readable AutoEncrypter Members logLevel Typedefs AutoEncryptionExtraOptions AutoEncryptionOptions logger Binary Members SUBTYPE_BYTE_ARRAY SUBTYPE_DEFAULT SUBTYPE_FUNCTION SUBTYPE_MD5 SUBTYPE_USER_DEFINED SUBTYPE_UUID SUBTYPE_UUID_OLD Methods length put read value write BSONRegExp BulkOperationBase Typedefs resultCallback Methods execute find insert raw BulkWriteError Members deletedCount errmsg insertedCount insertedIds matchedCount modifiedCount upsertedCount upsertedIds Methods hasErrorLabel BulkWriteResult Members deletedCount insertedCount insertedIds matchedCount modifiedCount nInserted nMatched nModified nRemoved nUpserted ok upsertedCount upsertedIds Methods getInsertedIds getLastOp getRawResponse getUpsertedIdAt getUpsertedIds getWriteConcernError getWriteErrorAt getWriteErrorCount getWriteErrors hasWriteErrors isOk toJSON toString ChangeStream Members resumeToken Typedefs resultCallback Methods close hasNext isClosed next pause pipe resume stream unpipe Events change close end error resumeTokenChanged ClientEncryption Typedefs createDataKeyCallback dataKeyId decryptCallback encryptCallback Methods createDataKey decrypt encrypt ClientSession Members id Methods abortTransaction advanceOperationTime commitTransaction endSession equals incrementTransactionNumber inTransaction startTransaction withTransaction Code Collection Members collectionName dbName hint namespace readConcern readPreference writeConcern Typedefs aggregationCallback bulkWriteOpCallback BulkWriteOpResult collectionResultCallback countCallback deleteWriteOpCallback deleteWriteOpResult findAndModifyCallback findAndModifyWriteOpResult IndexDefinition insertOneWriteOpCallback insertOneWriteOpResult insertWriteOpCallback insertWriteOpResult parallelCollectionScanCallback resultCallback updateWriteOpCallback updateWriteOpResult writeOpCallback WriteOpResult Methods aggregate bulkWrite count countDocuments createIndex createIndexes deleteMany deleteOne distinct drop dropAllIndexes dropIndex dropIndexes ensureIndex estimatedDocumentCount find findAndModify findAndRemove findOne findOneAndDelete findOneAndReplace findOneAndUpdate geoHaystackSearch group indexes indexExists indexInformation initializeOrderedBulkOp initializeUnorderedBulkOp insert insertMany insertOne isCapped listIndexes mapReduce options parallelCollectionScan reIndex remove rename replaceOne save stats update updateMany updateOne watch CommandCursor Typedefs endCallback iteratorCallback resultCallback toArrayResultCallback Methods batchSize clone close each hasNext isClosed maxTimeMS next pause pipe read resume rewind setEncoding setReadPreference toArray unpipe unshift wrap Events close data end readable Cursor Typedefs countResultCallback endCallback iteratorCallback resultCallback toArrayResultCallback Methods addCursorFlag addQueryModifier batchSize clone close collation comment count each explain filter forEach hasNext hint isClosed limit map max maxAwaitTimeMS maxScan maxTimeMS min next pause pipe project read resume returnKey rewind setCursorOption setEncoding setReadPreference showRecordId skip snapshot sort stream toArray transformStream unpipe unshift wrap Events close data end readable Db Members profilingInfo Typedefs collectionResultCallback Methods addUser admin aggregate collection collections command createCollection createIndex dropCollection dropDatabase ensureIndex eval executeDbAdminCommand indexInformation listCollections profilingLevel removeUser renameCollection setProfilingLevel stats unref watch Events close error fullsetup parseError reconnect timeout DBRef Decimal128 Methods toString fromString Double Methods valueOf FindOperators Methods delete deleteOne remove removeOne replaceOne update updateOne upsert GridFSBucket Typedefs errorCallback Methods delete drop find openDownloadStream openDownloadStreamByName openUploadStream openUploadStreamWithId rename Events index GridFSBucketReadStream Methods abort end pause pipe read resume setEncoding start unpipe unshift wrap Events close data end error file GridFSBucketWriteStream Methods abort end write Events error finish GridStore Members DEFAULT_CONTENT_TYPE DEFAULT_ROOT_COLLECTION IO_SEEK_CUR IO_SEEK_END IO_SEEK_SET Typedefs collectionCallback gridStoreCallback openCallback readCallback readlinesCallback resultCallback tellCallback Methods exist list read readlines unlink chunkCollection close collection destroy eof getc open puts read readlines rewind seek stream tell unlink write writeFile GridStoreStream Methods end pause pipe read resume setEncoding unpipe unshift wrap write Events close data drain end error finish pipe readable unpipe Int32 Methods valueOf Logger Typedefs loggerCallback Methods currentLogger filter reset setCurrentLogger setLevel debug error info isDebug isError isInfo isWarn Long Members MAX_VALUE MIN_VALUE NEG_ONE ONE ZERO Methods fromBigInt fromBits fromInt fromNumber fromString add and compare div equals getHighBits getLowBits getLowBitsUnsigned getNumBitsAbs greaterThan greaterThanOrEqual isNegative isOdd isZero lessThan lessThanOrEqual modulo multiply negate not notEquals or shiftLeft shiftRight shiftRightUnsigned subtract toBigInt toInt toJSON toNumber toString xor MaxKey MinKey MongoClient Typedefs connectCallback Methods connect close connect db isConnected startSession watch withSession MongoCryptError MongoError Members errmsg Methods create hasErrorLabel MongoNetworkError Members errmsg Methods hasErrorLabel MongoNetworkTimeoutError Members errmsg Methods hasErrorLabel MongoParseError Members errmsg Methods hasErrorLabel Mongos Events close commandFailed commandStarted commandSucceeded connect error fullsetup ha joined left open parseError timeout MongoServerSelectionError Members errmsg Methods hasErrorLabel MongoTimeoutError Members errmsg Methods hasErrorLabel MongoWriteConcernError Members errmsg Methods hasErrorLabel ObjectID Methods createFromHexString createFromTime isValid equals generate getTimestamp toHexString OrderedBulkOperation Methods execute find insert raw ReplSet Events close commandFailed commandStarted commandSucceeded connect error fullsetup ha joined left open parseError timeout Server Events close commandFailed commandStarted commandSucceeded connect error parseError reconnect timeout Symbol Methods valueOf Timestamp Members MAX_VALUE MIN_VALUE NEG_ONE ONE ZERO Methods fromBits fromInt fromNumber fromString add and compare div equals getHighBits getLowBits getLowBitsUnsigned getNumBitsAbs greaterThan greaterThanOrEqual isNegative isOdd isZero lessThan lessThanOrEqual modulo multiply negate not notEquals or shiftLeft shiftRight shiftRightUnsigned subtract toInt toJSON toNumber toString xor UnorderedBulkOperation Methods execute find insert raw WriteConcernError Members code errmsg Methods toJSON toString WriteError Members code errmsg index Methods getOperation toJSON toString | Class: ClientEncryption ClientEncryption The public interface for explicit client side encryption new ClientEncryption(client, options) node_modules/mongodb-client-encryption/lib/clientEncryption.js, line 71 Create a new encryption instance Name Type Description client MongoClient The client used for encryption options object Additional settings Name Type Description keyVaultNamespace string The namespace of the key vault, used to store encryption keys keyVaultClient MongoClient optional A MongoClient used to fetch keys from a key vault. Defaults to client kmsProviders KMSProviders optional options for specific KMS providers to use Examples new ClientEncryption(mongoClient, { keyVaultNamespace: 'client.encryption', kmsProviders: { local: { key: masterKey // The master key used for encryption/decryption. A 96-byte long Buffer } } }); new ClientEncryption(mongoClient, { keyVaultNamespace: 'client.encryption', kmsProviders: { aws: { accessKeyId: AWS_ACCESS_KEY, secretAccessKey: AWS_SECRET_KEY } } }); Methods createDataKey(provider, options, callback){Promise|void} node_modules/mongodb-client-encryption/lib/clientEncryption.js, line 204 Creates a data key used for explicit encryption and inserts it into the key vault namespace Name Type Description provider string The KMS provider used for this data key. Must be 'aws', 'azure', 'gcp', or 'local' options object optional Options for creating the data key Name Type Description masterKey AWSEncryptionKeyOptions|AzureEncryptionKeyOptions|GCPEncryptionKeyOptions optional Idenfities a new KMS-specific key used to encrypt the new data key keyAltNames Array. optional An optional list of string alternate names used to reference a key. If a key is created with alternate names, then encryption may refer to the key by the unique alternate name instead of by _id. callback ClientEncryption~createDataKeyCallback optional Optional callback to invoke when key is created Returns:no callback is provided, returns a Promise that either resolves with the id of the created data key, or rejects with an error. If a callback is provided, returns nothing. Examples // Using callbacks to create a local key clientEncryption.createDataKey('local', (err, dataKey) => { if (err) { // This means creating the key failed. } else { // key creation succeeded } }); // Using async/await to create a local key const dataKeyId = await clientEncryption.createDataKey('local'); // Using async/await to create an aws key const dataKeyId = await clientEncryption.createDataKey('aws', { masterKey: { region: 'us-east-1', key: 'xxxxxxxxxxxxxx' // CMK ARN here } }); // Using async/await to create an aws key with a keyAltName const dataKeyId = await clientEncryption.createDataKey('aws', { masterKey: { region: 'us-east-1', key: 'xxxxxxxxxxxxxx' // CMK ARN here }, keyAltNames: [ 'mySpecialKey' ] }); decrypt(value, callback){Promise|void} node_modules/mongodb-client-encryption/lib/clientEncryption.js, line 343 Explicitly decrypt a provided encrypted value Name Type Description value Buffer An encrypted value callback ClientEncryption~decryptCallback Optional callback to invoke when value is decrypted Returns:no callback is provided, returns a Promise that either resolves with the decryped value, or rejects with an error. If a callback is provided, returns nothing. Examples // Decrypting value with callback API function decryptMyValue(value, callback) { clientEncryption.decrypt(value, callback); } // Decrypting value with async/await API async function decryptMyValue(value) { return clientEncryption.decrypt(value); } encrypt(value, options, callback){Promise|void} node_modules/mongodb-client-encryption/lib/clientEncryption.js, line 281 Explicitly encrypt a provided value. Note that either options.keyId or options.keyAltName mustbe specified. Specifying both options.keyId and options.keyAltName is considered an error. Name Type Description value * The value that you wish to serialize. Must be of a type that can be serialized into BSON options object Name Type Description keyId ClientEncryption~dataKeyId optional The id of the Binary dataKey to use for encryption keyAltName string optional A unique string name corresponding to an already existing dataKey. algorithm The algorithm to use for encryption. Must be either 'AEAD_AES_256_CBC_HMAC_SHA_512-Deterministic' or AEAD_AES_256_CBC_HMAC_SHA_512-Random' callback ClientEncryption~encryptCallback optional Optional callback to invoke when value is encrypted Returns:no callback is provided, returns a Promise that either resolves with the encrypted value, or rejects with an error. If a callback is provided, returns nothing. Examples // Encryption with callback API function encryptMyData(value, callback) { clientEncryption.createDataKey('local', (err, keyId) => { if (err) { return callback(err); } clientEncryption.encrypt(value, { keyId, algorithm: 'AEAD_AES_256_CBC_HMAC_SHA_512-Deterministic' }, callback); }); } // Encryption with async/await api async function encryptMyData(value) { const keyId = await clientEncryption.createDataKey('local'); return clientEncryption.encrypt(value, { keyId, algorithm: 'AEAD_AES_256_CBC_HMAC_SHA_512-Deterministic' }); } // Encryption using a keyAltName async function encryptMyData(value) { await clientEncryption.createDataKey('local', { keyAltNames: 'mySpecialKey' }); return clientEncryption.encrypt(value, { keyAltName: 'mySpecialKey', algorithm: 'AEAD_AES_256_CBC_HMAC_SHA_512-Deterministic' }); } Type Definitions createDataKeyCallback(error, dataKeyId) node_modules/mongodb-client-encryption/lib/clientEncryption.js, line 129 Name Type Description error Error optional If present, indicates an error that occurred in the creation of the data key dataKeyId ClientEncryption~dataKeyId optional If present, returns the id of the created data key dataKeyIdBinary The id of an existing dataKey. Is a bson Binary value.Can be used for ClientEncryption.encrypt, and can be used to directlyquery for the data key itself against the key vault namespace. decryptCallback(err, result) node_modules/mongodb-client-encryption/lib/clientEncryption.js, line 318 Name Type Description err Error optional If present, indicates an error that occurred in the process of decryption result object optional If present, is the decrypted result encryptCallback(err, result) node_modules/mongodb-client-encryption/lib/clientEncryption.js, line 238 Name Type Description err Error optional If present, indicates an error that occurred in the process of encryption result Buffer optional If present, is the encrypted result | | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |