!hR V1Ru5
```php
hjkhghoppoopppooppoppoppoopoirh
bnmbertsurheoppopopooooooooooooooopoopopdf'tdfg
!hR V1Ru5
```php
hjkhghoppoopppooppoppoppoopoirh
bnmbertsurheoppopopooooooooooooooopoopopdf'tdfg
// © 2016 and later: Unicode, Inc. and others.
// License & terms of use: http://www.unicode.org/copyright.html
/*
*******************************************************************************
*
* Copyright (C) 2003-2014, International Business Machines
* Corporation and others. All Rights Reserved.
*
*******************************************************************************
* file name: usprep.h
* encoding: UTF-8
* tab size: 8 (not used)
* indentation:4
*
* created on: 2003jul2
* created by: Ram Viswanadha
*/
#ifndef __USPREP_H__
#define __USPREP_H__
/**
* \file
* \brief C API: Implements the StringPrep algorithm.
*/
#include "unicode/utypes.h"
#if U_SHOW_CPLUSPLUS_API
#include "unicode/localpointer.h"
#endif // U_SHOW_CPLUSPLUS_API
/**
*
* StringPrep API implements the StingPrep framework as described by RFC 3454.
* StringPrep prepares Unicode strings for use in network protocols.
* Profiles of StingPrep are set of rules and data according to with the
* Unicode Strings are prepared. Each profiles contains tables which describe
* how a code point should be treated. The tables are broadly classified into
*
* Unassigned Table: Contains code points that are unassigned
* in the Unicode Version supported by StringPrep. Currently
* RFC 3454 supports Unicode 3.2.
* Prohibited Table: Contains code points that are prohibited from
* the output of the StringPrep processing function.
* Mapping Table: Contains code points that are deleted from the output or case mapped.
*
*
* The procedure for preparing Unicode strings:
*
* Map: For each character in the input, check if it has a mapping
* and, if so, replace it with its mapping.
* Normalize: Possibly normalize the result of step 1 using Unicode
* normalization.
* Prohibit: Check for any characters that are not allowed in the
* output. If any are found, return an error.
* Check bidi: Possibly check for right-to-left characters, and if
* any are found, make sure that the whole string satisfies the
* requirements for bidirectional strings. If the string does not
* satisfy the requirements for bidirectional strings, return an
* error.
*
* @author Ram Viswanadha
*/
#if !UCONFIG_NO_IDNA
#include "unicode/parseerr.h"
/**
* The StringPrep profile
* @stable ICU 2.8
*/
typedef struct UStringPrepProfile UStringPrepProfile;
/**
* Option to prohibit processing of unassigned code points in the input
*
* @see usprep_prepare
* @stable ICU 2.8
*/
#define USPREP_DEFAULT 0x0000
/**
* Option to allow processing of unassigned code points in the input
*
* @see usprep_prepare
* @stable ICU 2.8
*/
#define USPREP_ALLOW_UNASSIGNED 0x0001
/**
* enums for the standard stringprep profile types
* supported by usprep_openByType.
* @see usprep_openByType
* @stable ICU 4.2
*/
typedef enum UStringPrepProfileType {
/**
* RFC3491 Nameprep
* @stable ICU 4.2
*/
USPREP_RFC3491_NAMEPREP,
/**
* RFC3530 nfs4_cs_prep
* @stable ICU 4.2
*/
USPREP_RFC3530_NFS4_CS_PREP,
/**
* RFC3530 nfs4_cs_prep with case insensitive option
* @stable ICU 4.2
*/
USPREP_RFC3530_NFS4_CS_PREP_CI,
/**
* RFC3530 nfs4_cis_prep
* @stable ICU 4.2
*/
USPREP_RFC3530_NFS4_CIS_PREP,
/**
* RFC3530 nfs4_mixed_prep for prefix
* @stable ICU 4.2
*/
USPREP_RFC3530_NFS4_MIXED_PREP_PREFIX,
/**
* RFC3530 nfs4_mixed_prep for suffix
* @stable ICU 4.2
*/
USPREP_RFC3530_NFS4_MIXED_PREP_SUFFIX,
/**
* RFC3722 iSCSI
* @stable ICU 4.2
*/
USPREP_RFC3722_ISCSI,
/**
* RFC3920 XMPP Nodeprep
* @stable ICU 4.2
*/
USPREP_RFC3920_NODEPREP,
/**
* RFC3920 XMPP Resourceprep
* @stable ICU 4.2
*/
USPREP_RFC3920_RESOURCEPREP,
/**
* RFC4011 Policy MIB Stringprep
* @stable ICU 4.2
*/
USPREP_RFC4011_MIB,
/**
* RFC4013 SASLprep
* @stable ICU 4.2
*/
USPREP_RFC4013_SASLPREP,
/**
* RFC4505 trace
* @stable ICU 4.2
*/
USPREP_RFC4505_TRACE,
/**
* RFC4518 LDAP
* @stable ICU 4.2
*/
USPREP_RFC4518_LDAP,
/**
* RFC4518 LDAP for case ignore, numeric and stored prefix
* matching rules
* @stable ICU 4.2
*/
USPREP_RFC4518_LDAP_CI
} UStringPrepProfileType;
/**
* Creates a StringPrep profile from the data file.
*
* @param pat