namespace $.$$ {
	export class $hd_canary_app_profile extends $.$hd_canary_app_profile {
		
		@ $mol_mem
		content() {
			return [
				this.key_import()
					? this.Import_block()
					: this.Export_block()
			]
		}

		@ $mol_mem
		auth_title() {
			return this.key_import()
				? "Войти в профиль"
				:  "Поделиться профилем"
		}
		
		@ $mol_mem
		export_link() {
			return this.$.$mol_state_arg.link({
				auth: this.key_export(),
			})
		}

		key_import( next?: string | null ) {
			return this.$.$mol_state_arg.value( 'auth', next ) ?? null
		}
		
		@ $mol_mem
		peer_new() {
			return $hyoo_crus_auth.from(this.key_new()!).peer()
		}

		@ $mol_mem
		current_peer() {
			return this.$.$hyoo_crus_auth.current().peer()
		}

		@ $mol_action
		import_switch() {
			this.$.$hyoo_crus_auth.current($hyoo_crus_auth.from(this.key_new()!))
			this.password( '' )
			this.key_import( null )
		}
		

		@ $mol_mem
		password_bid() {
			const pass = this.password()
			if( pass.length <= 7 ) return this.bid_pass_long()
			return ''
		}
		export_rows() {
			return [
				this.Expot_bid(),
				this.Export_pass(),
				... this.password_bid() ? [] : [ this.Export_link() ],
			]
		}
		
		import_rows() {
			return [
				this.Iport_descr(),
				this.Import_pass(),
				... this.key_new() ? [ this.Import_switch() ] : [],
			]
		}

		@ $mol_mem
		key_new() {
			
			const serial = this.key_import()
			if( !serial ) return null
			
			try {
				const password = this.password()
				const app = $mol_crypto_hash( $mol_charset_encode( "hd_canary" ) ) // 20 B
				const secret = $mol_wire_sync( $mol_crypto_sacred_pass )( password, app ) // 16 B

				const data = $mol_base64_url_decode( serial ) 
				const salt = $mol_crypto_hash( app ).slice( 0, 16 )
	
				const closed = $mol_wire_sync( secret ).decrypt( data, salt ) // 16x B
				return closed
			} catch( error ) {
				
				$mol_fail_log( error )
				return null
				
			}
			
		}

		@$mol_action
		@ $mol_mem
		key_export() {
			const password = this.password()
			const app = $mol_crypto_hash( $mol_charset_encode( "hd_canary" ) ) // 20 B
			const secret = $mol_wire_sync( $mol_crypto_sacred_pass )( password, app ) // 16 B

			const salt = $mol_crypto_hash( app ).slice( 0, 16 )
			const closed = $mol_wire_sync( secret ).encrypt( this.$.$hyoo_crus_auth.current(), salt ) // 16x B

			return $mol_base64_url_encode( closed )
		}
		

		
	}
}