
    AVh                        d Z ddlZddlmZ ddlmZ ddlmZ ddlm	Z
 ddlmZ ddlmZ dd	lmZ dd
lmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZm Z m!Z! ddl"m#Z#  edddddddddddddddd d!d"      Z$ejJ                  ejL                   ed#d$g d%&       ed'      dd)e#e!e$f   d*e'd+e(d,e(d-e'd.e)d/e#e!ejT                  f   fd0                            Z+  ed1       ejX                  e+            Z-e+j\                  j^                  Z0d)e#e!e$f   d*e'd+e(d,e(d-e'd.e)d/e#e!ejT                  f   fd2Z1ejJ                  ejL                   ed3d3d4g&       ed4      dd)e#e!ejT                  f   d/e#e!ejT                  f   fd5                            Z2  ed6       ejX                  e2            Z3e2j\                  j^                  Z4d)e#e!ejT                  f   d/e#e!ejT                  f   fd7Z5ejJ                  ejL                   ed8d8d9g&       ed9      dd)e#e!ejT                  f   d:e(d/e#e!ejT                  f   fd;                            Z6  ed<       ejX                  e6            Z7e6j\                  j^                  Z8d)e#e!ejT                  f   d:e(d/e#e!ejT                  f   fd=Z9dd>e#e!ejT                  f   d?e#e!ejt                  f   d@e(dAe)d/e#e!ejT                  f   f
dBZ;  edC       ejX                  e;            Z<d>e#e!ejT                  f   d?e#e!ejt                  f   d@e(dAe)d/e#e!ejT                  f   f
dDZ=dd)e#e!ejT                  f   dEe#e!ejT                  f   d/e#e!ej|                  f   fdFZ?  edG       ejX                  e?            Z@d)e#e!ejT                  f   dEe#e!ejT                  f   d/e#e!ej|                  f   fdHZAdd)e#e!ejT                  f   dEe#e!ejT                  f   dIe#e!ejT                  f   dJe(d/e#e!ejT                  f   f
dKZB  edL       ejX                  eB            ZCd)e#e!ejT                  f   dEe#e!ejT                  f   dIe#e!ejT                  f   dJe(d/e#e!ejT                  f   f
dMZDdd)e#e!ejT                  f   dEe)d/e#e!ej|                  f   fdNZE  edO       ejX                  eE            ZFd)e#e!ejT                  f   dEe)d/e#e!ej|                  f   fdPZGdd)e#e!ejT                  f   dEe)dIe)dJe(d/e#e!ejT                  f   f
dQZH  edR       ejX                  eH            ZId)e#e!ejT                  f   dEe)dIe)dJe(d/e#e!ejT                  f   f
dSZJddTe)dUe)dVe'd/e#e!ejT                  f   fdWZK  edX       ejX                  eK            ZLdTe)dUe)dVe'd/e#e!ejT                  f   fdYZMdd>e#e e!   ejT                  f   dAe)d/e#e!ejT                  f   fdZZN  ed[       ejX                  eN            ZOd>e#e e!   ejT                  f   dAe)d/e#e!ejT                  f   fd\ZPdd)e#e!ejT                  f   d]e)d/e#e!ejt                  f   fd^ZQ  ed_       ejX                  eQ            ZRd)e#e!ejT                  f   d]e)d/e#e!ejt                  f   fd`ZSejJ                  ejL                   eda      dd)e#e!ejT                  f   dbe)d/e#e!ejT                  f   fdc                     ZT  edd       ejX                  eT            ZUeTj\                  j^                  ZVd)e#e!ejT                  f   dbe)d/e#e!ejT                  f   fdeZW ej                  dfdgdhg      ZY edidd      ZZddje#e!ejT                  f   dke#e!eZf   dAe)dle)dme)dne'doe(fdpZ[  edq       ejX                  e[            Z\dje#e!ejT                  f   dke#e!eZf   dAe)dle)dme)dne'doe(fdrZ] ej                  dsg dt      Z^dd)e#e!ejT                  f   due#e!ejT                  f   dve(fdwZ_  edx       ejX                  e_            Z`d)e#e!ejT                  f   due#e!ejT                  f   dve(fdyZa ej                  dzg dt      Zbdd)e#e!ejT                  f   d{e#e!ejT                  f   d|e'fd}Zc  ed~       ejX                  ec            Zdd)e#e!ejT                  f   d{e#e!ejT                  f   d|e'fdZeejJ                  ejL                   edddg&       ed      dd)e#e!ejT                  f   d/e#e!ejT                  f   fd                            Zf  ed       ejX                  ef            Zgefj\                  j^                  Zhd)e#e!ejT                  f   d/e#e!ejT                  f   fdZidde#e!ejT                  f   de'd/e#e!ej                  f   fdZk  ed       ejX                  ek            Zlde#e!ejT                  f   de'd/e#e!ej                  f   fdZmejJ                  ejL                   edddg&       ed      dd)e#e!ejT                  f   de'd/e#e!ej                  f   fd                            Zn  ed       ejX                  en            Zoenj\                  j^                  Zpd)e#e!ejT                  f   de'd/e#e!ej                  f   fdZqejJ                  ejL                   edddg&       ed      dd)e#e!ejT                  f   de'd/e#e!ej                  f   fd                            Zr  ed       ejX                  er            Zserj\                  j^                  Ztd)e#e!ejT                  f   de'd/e#e!ej                  f   fdZuejJ                  ejL                   ed      dd)e#e!ejT                  f   dbe)d/e#e!ejT                  f   fd                     Zv  ed       ejX                  ev            Zwevj\                  j^                  Zxd)e#e!ejT                  f   dbe)d/e#e!ejT                  f   fdZy eddd      Zzdd)e#e!ejT                  f   de#e!ezf   de#e!ezf   d]e)d/e#e!ejT                  f   f
dZ{  ed       ejX                  e{            Z|d)e#e!ejT                  f   de#e!ezf   de#e!ezf   d]e)d/e#e!ejT                  f   f
dZ} ej                  dddg      Z~ eddd      Zddd(ej                   dfd)e#e!ejT                  f   de)de)de'de(defdZ  ed       ejX                  e            Zd)e#e!ejT                  f   de)de)de'de(defdZ ej                  dg d      Z eddd      Zddd(ej                   dfd)e#e!ejT                  f   de)de)de'de(defdZ  ed       ejX                  e            Zd)e#e!ejT                  f   de)de)de'de(defdZ eddd      Zdde#e!ejt                  f   de#e!ef   de)de)de'd/e#e!ejT                  f   fdZ  ed       ejX                  e            Zde#e!ejt                  f   de#e!ef   de)de)de'd/e#e!ejT                  f   fdZejJ                  ejL                   ed      dd)e#e!ejt                  f   d/e#e!ejt                  f   fd                     Z  ed       ejX                  e            Zej\                  j^                  Zd)e#e!ejt                  f   d/e#e!ejt                  f   fdZejJ                  ejL                   ed      dd)e#e!ejT                  f   de)de)de)de'de(d/e#e!ejT                  f   fd                     Z  ed       ejX                  e            Zej\                  j^                  Zd)e#e!ejT                  f   de)de)de)de'de(d/e#e!ejT                  f   fdZ eddd      Z eddd      Zdd>e#e!ejT                  f   de#e!ef   de#e!ef   dAe)d/e#e!ejT                  f   f
dńZ  edƫ       ejX                  e            Zd>e#e!ejT                  f   de#e!ef   de#e!ef   dAe)d/e#e!ejT                  f   f
dǄZy)zUPython wrappers around TensorFlow ops.

This file is MACHINE GENERATED! Do not edit.
    N)
pywrap_tfe)context)core)execute)dtypes)annotation_types)op_def_registry)ops)op_def_library)deprecated_endpoints)dispatch)	tf_export)TypeVarListAny)	AnnotatedTV_AsString_Tz_atypes.BFloat16z_atypes.Boolz_atypes.Complex128z_atypes.Complex64z_atypes.Float32z_atypes.Float64z_atypes.Halfz_atypes.Int16z_atypes.Int32z_atypes.Int64z_atypes.Int8z_atypes.Stringz_atypes.UInt16z_atypes.UInt32z_atypes.UInt64z_atypes.UInt8z_atypes.Variantstrings.as_string	as_string)dtypes.as_stringr   r   )v1r   Finput	precision
scientificshortestwidthfillreturnc                 >   t         j                   xs t        j                         }|j                  }|j                  r%	 t	        j
                  |d|| d|d|d|d|d|      }	|	S t        | ||||||fd      }	|	t        ur|	S |d}t/        j0                  |d      }|d}t/        j2                  |d      }|d}t/        j2                  |d      }|d}t/        j0                  |d      }|d}t/        j4                  |d      }	 t7        j8                  d| ||||||
      \  }}}}|dd }	t/        j:                         rd|j=                  d      d|j?                  d      d|jA                  d      d|jA                  d      d|j?                  d      d|jC                  d      f}|jD                  }t/        jF                  d|||	       |	\  }	|	S # t        j                  $ r }
t        j                  |
|       Y d}
~
nd}
~
wt        j                  $ r Y nw xY w	 t        | ||||||fd      }	|	t        ur|	S t        | |||||||      S # t        j                  $ r Y t        t         f$ rM t#        j$                  t&        d	t)        | ||||||
            }	|	t"        j*                  j,                  ur|	cY S  w xY w# t        t         f$ rM t#        j$                  t&        d	t)        | ||||||
            }	|	t"        j*                  j,                  ur|	cY S  w xY w)a4  Converts each entry in the given tensor to strings.

  Supports many numeric types and boolean.

  For Unicode, see the
  [https://www.tensorflow.org/text/guide/unicode](Working with Unicode text)
  tutorial.

  Examples:

  >>> tf.strings.as_string([3, 2])
  <tf.Tensor: shape=(2,), dtype=string, numpy=array([b'3', b'2'], dtype=object)>
  >>> tf.strings.as_string([3.1415926, 2.71828], precision=2).numpy()
  array([b'3.14', b'2.72'], dtype=object)

  Args:
    input: A `Tensor`. Must be one of the following types: `float32`, `float64`, `int32`, `uint8`, `int16`, `int8`, `int64`, `bfloat16`, `uint16`, `half`, `uint32`, `uint64`, `complex64`, `complex128`, `bool`, `variant`, `string`.
    precision: An optional `int`. Defaults to `-1`.
      The post-decimal precision to use for floating point numbers.
      Only used if precision > -1.
    scientific: An optional `bool`. Defaults to `False`.
      Use scientific notation for floating point numbers.
    shortest: An optional `bool`. Defaults to `False`.
      Use shortest representation (either scientific or standard) for
      floating point numbers.
    width: An optional `int`. Defaults to `-1`.
      Pad pre-decimal numbers to this width.
      Applies to both floating point and integer numbers.
      Only used if width > -1.
    fill: An optional `string`. Defaults to `""`.
      The value to pad if width > -1.  If empty, pads with spaces.
      Another typical value is '0'.  String cannot be longer than 1 character.
    name: A name for the operation (optional).

  Returns:
    A `Tensor` of type `string`.
  AsStringr   r   r   r   r   N)r   r   r   r   r   namectx )r   r   r   r   r   r   r!   F T)$_contextr   _thread_local_datais_eagerr   TFE_Py_FastPathExecute_core_NotOkStatusException_opsraise_from_not_ok_status_FallbackException_dispatcher_for_as_stringNotImplementedas_string_eager_fallback_SymbolicException	TypeError
ValueError	_dispatchr   r   dictOpDispatcherNOT_SUPPORTED_executemake_int	make_boolmake_str_op_def_library_apply_op_helpermust_record_gradient_get_attr_type_get_attr_int_get_attr_boolget_attrinputsrecord_gradient)r   r   r   r   r   r   r!   _ctxtld_resulte__op_outputs_attrs_inputs_flats                   T/home/dcms/DCMS/lib/python3.12/site-packages/tensorflow/python/ops/gen_string_ops.pyr   r      se   T 
			0h..0$#\\11j${I|J'5&$Hg n2 (		:xdDdLGn$nI	;7)J!!*l;*H*5(
]E


E7
+%	\D			4	($
)::%9%UDJAq#x QK'""$3%%c*K,l  .
  ,g(&#,,v2F	HF
 ::LL&'3('	.I && -
##At,,## 
))Z5$
FNg		&%
95t$DJ J ## 
z" ""r4ey+5&+$TCg
 
	..<<	<D Z	  
  
REY)3h$)4A
G
 i,,:::n	
sP    #G "K  H$G??HHI 9I J="AJ=;J= ALLzraw_ops.AsStringc                    |d}t        j                  |d      }|d}t        j                  |d      }|d}t        j                  |d      }|d}t        j                  |d      }|d}t        j                  |d      }t        j                  | g|t
        j                  t
        j                  t
        j                  t
        j                  t
        j                  t
        j                  t
        j                  t
        j                  t
        j                  t
        j                  t
        j                   t
        j"                  t
        j$                  t
        j&                  t
        j(                  t
        j*                  t
        j,                  g      \  }\  } | g}	d	|d|d|d|d|d|f}
t        j.                  d
d|	|
||      }t        j0                         rt        j2                  d|	|
|       |\  }|S )Nr$   r   Fr   r   r   r%   r   r&   s   AsString   rE   attrsr"   r!   r    )r:   r;   r<   r=   args_to_matching_eager_dtypesfloat32float64int32uint8int16int8int64bfloat16uint16halfuint32uint64	complex64
complex128boolvariantstringr   r@   rF   )r   r   r   r   r   r   r!   r"   _attr_TrO   rN   rI   s               rP   r2   r2      sd   I	;7)J!!*l;*H*5(
]E


E7
+%	\D			4	($55ugsW__V]VeVegngtgtv}  wD  wD  FM  FS  FS  U\  Ua  Ua  cj  cp  cp  ry  rB  rB  DK  DR  DR  T[  T`  T`  bi  bp  bp  ry  r@  r@  BI  BS  BS  U\  Ug  Ug  ip  iu  iu  w~  wF  wF  HO  HV  HV  EY  Z'8E,+y,
h6&[!L#)s?'""$L&'3('	.    zio.decode_base64decode_base64c           	         t         j                   xs t        j                         }|j                  }|j                  r	 t	        j
                  |d||       }|S t        | |fd      }|t        ur|S 	 t/        j0                  d| |      \  }}}}|dd }t3        j4                         r&d}	|j6                  }
t3        j8                  d|
|	|       |\  }|S # t        j                  $ r }t        j                  ||       Y d}~nd}~wt        j                  $ r Y nw xY w	 t        | |fd      }|t        ur|S t        | ||      S # t        j                  $ r Y t        t         f$ rH t#        j$                  t&        dt)        | |            }|t"        j*                  j,                  ur|cY S  w xY w# t        t         f$ rH t#        j$                  t&        dt)        | |            }|t"        j*                  j,                  ur|cY S  w xY w)a  Decode web-safe base64-encoded strings.

  Input may or may not have padding at the end. See
  [EncodeBase64](https://www.tensorflow.org/api_docs/python/tf/io/encode_base64)
  for padding. Web-safe means that input must use - and _ instead of + and /.

  Args:
    input: A `Tensor` of type `string`. Base64 strings to decode.
    name: A name for the operation (optional).

  Returns:
    A `Tensor` of type `string`.
  DecodeBase64Nr!   r"   r#   r   r!   )r'   r   r(   r)   r   r*   r+   r,   r-   r.   r/   _dispatcher_for_decode_base64r1   decode_base64_eager_fallbackr3   r4   r5   r6   r   rj   r7   r8   r9   r>   r?   r:   r@   rE   rF   r   r!   rG   rH   rI   rJ   rK   rL   rM   rN   rO   s              rP   rj   rj      s	   $ 
			0h..0$#\\11ndE+gn, ,	Gn$n	
)::e$0Aq#x QK'""$F::Lfg7('	.W && -
##At,,## 
-$.$ g		&)
d& &## 
z" ""2t%d;g 
	..<<	<  Z	  
  
TD9
G i,,:::n	
P    C 3F4 D(DDD E 8E F1AF1/F14AH	Hzraw_ops.DecodeBase64c                     t        j                  | t        j                        } | g}d }t	        j
                  dd||||      }t	        j                         rt	        j                  d|||       |\  }|S )Ns   DecodeBase64rR   rS   rl   r-   convert_to_tensorrV   rg   r:   r   r@   rF   r   r!   r"   rO   rN   rI   s         rP   rp   rp      sp    

 
 
7%,&_a#)s?'""$fg7('	.ri   zio.encode_base64encode_base64padc           
         t         j                   xs t        j                         }|j                  }|j                  r	 t	        j
                  |d|| d|      }|S t        | ||fd      }|t        ur|S |d}t/        j0                  |d      }	 t3        j4                  d| ||      \  }}}}	|	dd }t/        j6                         r7d|j9                  d      f}
|j:                  }t/        j<                  d||
|       |\  }|S # t        j                  $ r }t        j                  ||       Y d}~nd}~wt        j                  $ r Y nw xY w	 t        | ||fd      }|t        ur|S t        | |||      S # t        j                  $ r Y t        t         f$ rI t#        j$                  t&        dt)        | ||            }|t"        j*                  j,                  ur|cY S  w xY w# t        t         f$ rI t#        j$                  t&        dt)        | ||            }|t"        j*                  j,                  ur|cY S  w xY w)ar  Encode strings into web-safe base64 format.

  Refer to [this article](https://en.wikipedia.org/wiki/Base64) for more information on
  base64 format. Base64 strings may have padding with '=' at the
  end so that the encoded has length multiple of 4. See Padding section of the
  link above.

  Web-safe means that the encoder uses - and _ instead of + and /.

  Args:
    input: A `Tensor` of type `string`. Strings to be encoded.
    pad: An optional `bool`. Defaults to `False`.
      Bool whether padding is applied at the ends.
    name: A name for the operation (optional).

  Returns:
    A `Tensor` of type `string`.
  EncodeBase64rx   N)rx   r!   r"   r#   )r   rx   r!   F)r'   r   r(   r)   r   r*   r+   r,   r-   r.   r/   _dispatcher_for_encode_base64r1   encode_base64_eager_fallbackr3   r4   r5   r6   r   rw   r7   r8   r9   r:   r<   r>   r?   r@   rC   rE   rF   )r   rx   r!   rG   rH   rI   rJ   rK   rL   rM   rN   rO   s               rP   rw   rw     sG   . 
			0h..0$#\\11ndE5#7gn, ,	TT#Gn$n[
C3&#	
)::e49Aq#x QK'""$S''./F::Lfg7('	.] && -
##At,,## 
-#t
t%g		&)
St/ /## 
z" ""2t%StDg 
	..<<	<& Z	  
  
T3TB
G i,,:::n	
P    D G' ED22E
EE7 (E7 7G$AG$"G$'AH?=H?zraw_ops.EncodeBase64c                 &   |d}t        j                  |d      }t        j                  | t        j
                        } | g}d|f}t        j                  dd||||      }t        j                         rt        j                  d|||       |\  }|S )NFrx   s   EncodeBase64rR   rS   rz   	r:   r<   r-   ru   rV   rg   r   r@   rF   )r   rx   r!   r"   rO   rN   rI   s          rP   r|   r|   ]  s    [
C3&#

 
 
7%,3<&_a#)s?'""$fg7('	.ri   rE   reduction_indices	keep_dims	separatorc                     t         j                   xs t        j                         }|j                  }|j                  r 	 t	        j
                  |d|| |d|d|	      }|S |d}t        j                  |d      }|d}t        j                  |d      }t!        j"                  d| ||||      \  }	}	}
}|dd }t        j$                         rHd|
j'                  d      d|
j)                  d      f}|
j*                  }t        j,                  d|||       |\  }|S # t        j                  $ r }t        j                  ||       Y d}~nd}~wt        j                  $ r Y nw xY w	 t        | |||||      S # t        j                  $ r Y -w xY w)	a)  Joins a string Tensor across the given dimensions.

  Computes the string join across dimensions in the given string Tensor of shape
  `[\\(d_0, d_1, ..., d_{n-1}\\)]`.  Returns a new Tensor created by joining the input
  strings with the given separator (default: empty string).  Negative indices are
  counted backwards from the end, with `-1` being equivalent to `n - 1`.  If
  indices are not specified, joins across all dimensions beginning from `n - 1`
  through `0`.

  For example:

  ```python
  # tensor `a` is [["a", "b"], ["c", "d"]]
  tf.reduce_join(a, 0) ==> ["ac", "bd"]
  tf.reduce_join(a, 1) ==> ["ab", "cd"]
  tf.reduce_join(a, -2) = tf.reduce_join(a, 0) ==> ["ac", "bd"]
  tf.reduce_join(a, -1) = tf.reduce_join(a, 1) ==> ["ab", "cd"]
  tf.reduce_join(a, 0, keep_dims=True) ==> [["ac", "bd"]]
  tf.reduce_join(a, 1, keep_dims=True) ==> [["ab"], ["cd"]]
  tf.reduce_join(a, 0, separator=".") ==> ["a.c", "b.d"]
  tf.reduce_join(a, [0, 1]) ==> "acbd"
  tf.reduce_join(a, [1, 0]) ==> "abcd"
  tf.reduce_join(a, []) ==> [["a", "b"], ["c", "d"]]
  tf.reduce_join(a) = tf.reduce_join(a, [1, 0]) ==> "abcd"
  ```

  Args:
    inputs: A `Tensor` of type `string`.
      The input to be joined.  All reduced indices must have non-zero size.
    reduction_indices: A `Tensor` of type `int32`.
      The dimensions to reduce over.  Dimensions are reduced in the
      order specified.  Omitting `reduction_indices` is equivalent to passing
      `[n-1, n-2, ..., 0]`.  Negative indices from `-n` to `-1` are supported.
    keep_dims: An optional `bool`. Defaults to `False`.
      If `True`, retain reduced dimensions with length `1`.
    separator: An optional `string`. Defaults to `""`.
      The separator to use when joining.
    name: A name for the operation (optional).

  Returns:
    A `Tensor` of type `string`.
  
ReduceJoinr   r   N)r   r   r!   r"   Fr%   )rE   r   r   r   r!   )r'   r   r(   r)   r   r*   r+   r,   r-   r.   r/   reduce_join_eager_fallbackr3   r:   r<   r=   r>   r?   r@   rC   rD   rE   rF   )rE   r   r   r   r!   rG   rH   rI   rJ   rK   rL   rM   rN   rO   s                 rP   reduce_joinr   m  s   V 
			0h..0$#\\11lD&*;[;	+g n I  K8)I	;7)'88V7H )YTK!QX QK'""$3--k:Kll;')F::LlFG5('	.9 && -
##At,,## 
'
#yI  ## 
s0    D E!-EE! E!%E6 6FFzraw_ops.ReduceJoinc                    |d}t        j                  |d      }|d}t        j                  |d      }t        j                  | t
        j                        } t        j                  |t
        j                        }| |g}d|d|f}t        j                  dd||||      }t        j                         rt        j                  d|||       |\  }|S )	NFr   r%   r   s
   ReduceJoinrR   rS   r   )r:   r<   r=   r-   ru   rV   rg   rY   r   r@   rF   )	rE   r   r   r   r!   r"   rO   rN   rI   s	            rP   r   r     s    I  K8)I	;7)!!&'..9&,,->N+,,K;&]Al#)s?'""$lFG5('	.ri   patternc                 b   t         j                   xs t        j                         }|j                  }|j                  r	 t	        j
                  |d|| |      }|S t        j                  d| ||      \  }}}}	|	dd }t        j                          r&d}
|j"                  }t        j$                  d||
|       |\  }|S # t        j                  $ r }t        j                  ||       Y d}~nd}~wt        j                  $ r Y nw xY w	 t        | |||      S # t        j                  $ r Y w xY w)a  Check if the input matches the regex pattern.

  The input is a string tensor of any shape. The pattern is a scalar
  string tensor which is applied to every element of the input tensor.
  The boolean values (True or False) of the output tensor indicate
  if the input matches the regex pattern provided.

  The pattern follows the re2 syntax (https://github.com/google/re2/wiki/Syntax)

  Examples:

  >>> tf.strings.regex_full_match(["TF lib", "lib TF"], ".*lib$")
  <tf.Tensor: shape=(2,), dtype=bool, numpy=array([ True, False])>
  >>> tf.strings.regex_full_match(["TF lib", "lib TF"], ".*TF$")
  <tf.Tensor: shape=(2,), dtype=bool, numpy=array([False,  True])>

  Args:
    input: A `Tensor` of type `string`.
      A string tensor of the text to be processed.
    pattern: A `Tensor` of type `string`.
      A scalar string tensor containing the regular expression to match the input.
    name: A name for the operation (optional).

  Returns:
    A `Tensor` of type `bool`.
  RegexFullMatchNrm   r   r   r!   r#   )r'   r   r(   r)   r   r*   r+   r,   r-   r.   r/   regex_full_match_eager_fallbackr3   r>   r?   r:   r@   rE   rF   r   r   r!   rG   rH   rI   rJ   rK   rL   rM   rN   rO   s               rP   regex_full_matchr     s/   6 
			0h..0$#\\11eW6gn (88wTC!QXQK'""$F::L,9('	.' && -
##At,,## 
,
t/ /## 
s0    B> >DC,,DD	D D.-D.zraw_ops.RegexFullMatchc                 8   t        j                  | t        j                        } t        j                  |t        j                        }| |g}d }t	        j
                  dd||||      }t	        j                         rt	        j                  d|||       |\  }|S )Ns   RegexFullMatchrR   rS   r   rt   r   r   r!   r"   rO   rN   rI   s          rP   r   r     s    

 
 
7%""7GNN;'!,&.,#)s?'""$,9('	.ri   rewritereplace_globalc           
         t         j                   xs t        j                         }|j                  }|j                  r	 t	        j
                  |d|| ||d|      }|S |d}t        j                  |d      }t        j                   d| ||||      \  }	}	}
}|dd }t        j"                         r7d|
j%                  d      f}|
j&                  }t        j(                  d|||       |\  }|S # t        j                  $ r }t        j                  ||       Y d}~nd}~wt        j                  $ r Y nw xY w	 t        | |||||      S # t        j                  $ r Y w xY w)a  Replaces matches of the `pattern` regular expression in `input` with the
replacement string provided in `rewrite`.

  It follows the re2 syntax (https://github.com/google/re2/wiki/Syntax)

  Args:
    input: A `Tensor` of type `string`. The text to be processed.
    pattern: A `Tensor` of type `string`.
      The regular expression to be matched in the `input` strings.
    rewrite: A `Tensor` of type `string`.
      The rewrite string to be substituted for the `pattern` expression where it is
      matched in the `input` strings.
    replace_global: An optional `bool`. Defaults to `True`.
      If True, the replacement is global (that is, all matches of the `pattern` regular
      expression in each input string are rewritten), otherwise the `rewrite`
      substitution is only made for the first `pattern` match.
    name: A name for the operation (optional).

  Returns:
    A `Tensor` of type `string`.
  RegexReplacer   N)r   r!   r"   Tr   r   r   r   r!   )r'   r   r(   r)   r   r*   r+   r,   r-   r.   r/   regex_replace_eager_fallbackr3   r:   r<   r>   r?   r@   rC   rE   rF   r   r   r   r   r!   rG   rH   rI   rJ   rK   rL   rM   rN   rO   s                 rP   regex_replacer     su   , 
			0h..0$#\\11ndE7G=Mg n N%%n6FG.'88eWg'5DB!QX QK'""$ 2 23C DEF::Lfg7('	.1 && -
##At,,## 
)
'.t  ## 
s0    C. .D5DD54D59E
 
E! E!zraw_ops.RegexReplacec                    |d}t        j                  |d      }t        j                  | t        j
                        } t        j                  |t        j
                        }t        j                  |t        j
                        }| ||g}d|f}t        j                  dd||||      }t        j                         rt        j                  d|||       |\  }|S )NTr   s   RegexReplacerR   rS   r   r   	r   r   r   r   r!   r"   rO   rN   rI   s	            rP   r   r   X  s    N%%n6FG.

 
 
7%""7GNN;'""7GNN;''*,n-&_a#)s?'""$fg7('	.ri   c                    t         j                   xs t        j                         }|j                  }|j                  r	 t	        j
                  |d|| d|      }|S t        j                  |d      }t        j                   d| ||      \  }}}}	|	dd }t        j"                         r7d|j%                  d      f}
|j&                  }t        j(                  d||
|       |\  }|S # t        j                  $ r }t        j                  ||       Y d}~nd}~wt        j                  $ r Y nw xY w	 t        | |||      S # t        j                  $ r Y w xY w)a  Check if the input matches the regex pattern.

  The input is a string tensor of any shape. The pattern is the
  regular expression to be matched with every element of the input tensor.
  The boolean values (True or False) of the output tensor indicate
  if the input matches the regex pattern provided.

  The pattern follows the re2 syntax (https://github.com/google/re2/wiki/Syntax)

  Args:
    input: A `Tensor` of type `string`.
      A string tensor of the text to be processed.
    pattern: A `string`. The regular expression to match the input.
    name: A name for the operation (optional).

  Returns:
    A `Tensor` of type `bool`.
  StaticRegexFullMatchr   N)r   r!   r"   r   )r'   r   r(   r)   r   r*   r+   r,   r-   r.   r/   &static_regex_full_match_eager_fallbackr3   r:   r=   r>   r?   r@   rD   rE   rF   r   s               rP   static_regex_full_matchr   j  sR   & 
			0h..0$#\\11$dE9gGgn gy1''88eW4I!QXQK'""$i01F::Lfg?('	.) && -
##At,,## 
3
t7 7## 
0    C& &D-9DD-,D-1E   EEzraw_ops.StaticRegexFullMatchc                    t        j                  |d      }t        j                  | t        j
                        } | g}d|f}t        j                  dd||||      }t        j                         rt        j                  d|||       |\  }|S )Nr   s   StaticRegexFullMatchrR   rS   r   	r:   r=   r-   ru   rV   rg   r   r@   rF   r   s          rP   r   r     s    gy1'

 
 
7%,w&4a#)s?'""$fg?('	.ri   c                 h   t         j                   xs t        j                         }|j                  }|j                  r!	 t	        j
                  |d|| d|d|d|
      }|S t        j                  |d      }t        j                  |d      }|d}t        j                  |d      }t!        j"                  d| ||||      \  }	}	}
}|dd }t        j$                         rYd|
j'                  d      d|
j'                  d      d|
j)                  d      f}|
j*                  }t        j,                  d|||       |\  }|S # t        j                  $ r }t        j                  ||       Y d}~nd}~wt        j                  $ r Y nw xY w	 t        | |||||      S # t        j                  $ r Y Pw xY w)	a`  Replaces the match of pattern in input with rewrite.

  It follows the re2 syntax (https://github.com/google/re2/wiki/Syntax)

  Args:
    input: A `Tensor` of type `string`. The text to be processed.
    pattern: A `string`. The regular expression to match the input.
    rewrite: A `string`. The rewrite to be applied to the matched expression.
    replace_global: An optional `bool`. Defaults to `True`.
      If True, the replacement is global, otherwise the replacement
      is done only on the first match.
    name: A name for the operation (optional).

  Returns:
    A `Tensor` of type `string`.
  StaticRegexReplacer   r   r   N)r   r   r   r!   r"   Tr   )r'   r   r(   r)   r   r*   r+   r,   r-   r.   r/   #static_regex_replace_eager_fallbackr3   r:   r=   r<   r>   r?   r@   rD   rC   rE   rF   r   s                 rP   static_regex_replacer     s   " 
			0h..0$#\\11"D%G7,n>g n gy1'gy1'N%%n6FG.'88E7G-;$H!QX QK'""$i0)ll9%'7  !124F ::LlFG=('	.9 && -
##At,,## 
0
''d> > ## 
s0    D> >FE,,FF	F F10F1zraw_ops.StaticRegexReplacec                    t        j                  |d      }t        j                  |d      }|d}t        j                  |d      }t        j                  | t
        j                        } | g}d|d|d|f}t        j                  dd||||      }t        j                         rt        j                  d|||       |\  }|S )	Nr   r   Tr   s   StaticRegexReplacerR   rS   r   )
r:   r=   r<   r-   ru   rV   rg   r   r@   rF   r   s	            rP   r   r     s    gy1'gy1'N%%n6FG.

 
 
7%,w	74D&2Al#)s?'""$lFG=('	.ri   templateplaceholder	summarizec                    t         j                   xs t        j                         }|j                  }|j                  r!	 t	        j
                  |d|| d|d|d|
      }|S |d}t        j                  |d      }|d}t        j                  |d      }|d}t        j                  |d      }t!        j"                  d| ||||	      \  }	}	}
}|dd }t        j$                         rjd
|
j'                  d
      d|
j'                  d      d|
j'                  d      d|
j)                  d      f}|
j*                  }t        j,                  d|||       |\  }|S # t        j                  $ r }t        j                  ||       Y d}~nd}~wt        j                  $ r Y nw xY w	 t        | |||||      S # t        j                  $ r Y iw xY w)a  Formats a string template using a list of tensors.

  Formats a string template using a list of tensors, pretty-printing tensor summaries.

  Args:
    inputs: A list of `Tensor` objects.
      The list of tensors to format into the placeholder string.
    template: An optional `string`. Defaults to `"%s"`.
      A string, the template to format tensor summaries into.
    placeholder: An optional `string`. Defaults to `"%s"`.
      A string, at each placeholder in the template a subsequent tensor summary will be inserted.
    summarize: An optional `int`. Defaults to `3`.
      When formatting the tensor summaries print the first and last summarize entries of each tensor dimension.
    name: A name for the operation (optional).

  Returns:
    A `Tensor` of type `string`.
  StringFormatr   r   r   N)r   r   r   r!   r"   %s   )rE   r   r   r   r!   r&   )r'   r   r(   r)   r   r*   r+   r,   r-   r.   r/   string_format_eager_fallbackr3   r:   r=   r;   r>   r?   r@   rD   rB   rE   rF   )rE   r   r   r   r!   rG   rH   rI   rJ   rK   rL   rM   rN   rO   s                 rP   string_formatr     s   & 
			0h..0$#\\11ndFJ{K<g n Hx4(K!!+}=+I	;7)'88v$/9!#!QX QK'""$3<<$j#,,z2JS\\-8+,.F ::Lfg7('	.C && -
##At,,## 
)
8Dd4 4 ## 
s0    E F*FFF"F3 3G
	G
zraw_ops.StringFormatc                    |d}t        j                  |d      }|d}t        j                  |d      }|d}t        j                  |d      }t        j                  | |      \  }} t	        |       }d|d|d|d|f}t        j
                  dd||||	      }	t        j                         rt        j                  d
|||	       |	\  }	|	S )Nr   r   r   r   r   r&   s   StringFormatrR   rS   r   )r:   r=   r;   convert_to_mixed_eager_tensorslistr   r@   rF   )
rE   r   r   r   r!   r"   rh   rO   rN   rI   s
             rP   r   r   9  s    Hx4(K!!+}=+I	;7);;FCH/'6f,*h{y&_a#)s?'""$fg7('	.ri   c                 <   t         j                   xs t        j                         }|j                  }|j                  r	 t	        j
                  |d|| d|      }|S t        | t        t        f      st!        d| z        t#        |       }|d}t%        j&                  |d      }t)        j*                  d| ||      \  }}}	}
|
dd }t%        j,                         rHd|	j/                  d      d|	j1                  d      f}|	j2                  }t%        j4                  d|||       |\  }|S # t        j                  $ r }t        j                  ||       Y d}~nd}~wt        j                  $ r Y nw xY w	 t        | |||      S # t        j                  $ r Y >w xY w)	a  Joins the strings in the given list of string tensors into one tensor;

  with the given separator (default is an empty separator).

  Examples:

  >>> s = ["hello", "world", "tensorflow"]
  >>> tf.strings.join(s, " ")
  <tf.Tensor: shape=(), dtype=string, numpy=b'hello world tensorflow'>

  Args:
    inputs: A list of `Tensor` objects with type `string`.
      A list of string tensors.  The tensors must all have the same shape,
      or be scalars.  Scalars may be mixed in; these will be broadcast to the shape
      of non-scalar inputs.
    separator: An optional `string`. Defaults to `""`.
      string, an optional join separator.
    name: A name for the operation (optional).

  Returns:
    A `Tensor` of type `string`.
  
StringJoinr   Nr   r!   r"   @Expected list for 'inputs' argument to 'string_join' Op, not %r.r%   )rE   r   r!   N)r'   r   r(   r)   r   r*   r+   r,   r-   r.   r/   string_join_eager_fallbackr3   
isinstancer   tupler4   lenr:   r=   r>   r?   r@   rB   rD   rE   rF   )rE   r   r!   rG   rH   rI   rJ   _attr_NrK   rL   rM   rN   rO   s                rP   string_joinr   P  s   . 
			0h..0$#\\11lD&+yBgn 
FT5M	*
	$&,	-. . K'I	;7)'88VytE!QXQK'""$3$$S);ll;')F::LlFG5('	.9 && -
##At,,## 
'
IDd< <## 
s0    D* *E1=EE10E15F FFzraw_ops.StringJoinc                    t        | t        t        f      st        d| z        t	        |       }|d}t        j                  |d      }t        j                  | t        j                        } t        |       }d|d|f}t        j                  dd||||      }t        j                         rt        j                  d|||       |\  }|S )	Nr   r%   r   r   s
   StringJoinrR   rS   r   )r   r   r   r4   r   r:   r=   r-   convert_n_to_tensorrV   rg   r   r@   rF   )rE   r   r!   r"   r   rO   rN   rI   s           rP   r   r     s    	FT5M	*
	$&,	-. . K'I	;7)##FGNN;&f,+y1&]Al#)s?'""$lFG5('	.ri   unitc                    t         j                   xs t        j                         }|j                  }|j                  r	 t	        j
                  |d|| d|      }|S |d}t        j                  |d      }t        j                   d| ||      \  }}}}	|	dd }t        j"                         r7d|j%                  d      f}
|j&                  }t        j(                  d||
|       |\  }|S # t        j                  $ r }t        j                  ||       Y d}~nd}~wt        j                  $ r Y nw xY w	 t        | |||      S # t        j                  $ r Y w xY w)a  String lengths of `input`.

  Computes the length of each string given in the input tensor.

  >>> strings = tf.constant(['Hello','TensorFlow', '\U0001F642'])
  >>> tf.strings.length(strings).numpy() # default counts bytes
  array([ 5, 10, 4], dtype=int32)
  >>> tf.strings.length(strings, unit="UTF8_CHAR").numpy()
  array([ 5, 10, 1], dtype=int32)

  Args:
    input: A `Tensor` of type `string`.
      The strings for which to compute the length for each element.
    unit: An optional `string` from: `"BYTE", "UTF8_CHAR"`. Defaults to `"BYTE"`.
      The unit that is counted to compute string length.  One of: `"BYTE"` (for
      the number of bytes in each string) or `"UTF8_CHAR"` (for the number of UTF-8
      encoded Unicode code points in each string).  Results are undefined
      if `unit=UTF8_CHAR` and the `input` strings do not contain structurally
      valid UTF-8.
    name: A name for the operation (optional).

  Returns:
    A `Tensor` of type `int32`.
  StringLengthr   Nr   r!   r"   BYTE)r   r   r!   )r'   r   r(   r)   r   r*   r+   r,   r-   r.   r/   string_length_eager_fallbackr3   r:   r=   r>   r?   r@   rD   rE   rF   )r   r   r!   rG   rH   rI   rJ   rK   rL   rM   rN   rO   s               rP   string_lengthr     sY   2 
			0h..0$#\\11ndE649gn 
\D			4	($'88e$T;!QXQK'""$cll6*+F::Lfg7('	.- && -
##At,,## 
)
d41 1## 
s0    C* *D1=DD10D15E EEzraw_ops.StringLengthc                 &   |d}t        j                  |d      }t        j                  | t        j
                        } | g}d|f}t        j                  dd||||      }t        j                         rt        j                  d|||       |\  }|S )Nr   r   s   StringLengthrR   rS   r   r   )r   r   r!   r"   rO   rN   rI   s          rP   r   r     s    	\D			4	($

 
 
7%,D>&_a#)s?'""$fg7('	.ri   zstrings.lowerencodingc           
         t         j                   xs t        j                         }|j                  }|j                  r	 t	        j
                  |d|| d|      }|S t        | ||fd      }|t        ur|S |d}t/        j0                  |d      }	 t3        j4                  d| ||      \  }}}}	|	dd }t/        j6                         r7d|j9                  d      f}
|j:                  }t/        j<                  d||
|       |\  }|S # t        j                  $ r }t        j                  ||       Y d}~nd}~wt        j                  $ r Y nw xY w	 t        | ||fd      }|t        ur|S t        | |||      S # t        j                  $ r Y t        t         f$ rI t#        j$                  t&        dt)        | ||            }|t"        j*                  j,                  ur|cY S  w xY w# t        t         f$ rI t#        j$                  t&        dt)        | ||            }|t"        j*                  j,                  ur|cY S  w xY w)a5  Converts all uppercase characters into their respective lowercase replacements.

  Example:

  >>> tf.strings.lower("CamelCase string and ALL CAPS")
  <tf.Tensor: shape=(), dtype=string, numpy=b'camelcase string and all caps'>

  Args:
    input: A `Tensor` of type `string`. The input to be lower-cased.
    encoding: An optional `string`. Defaults to `""`.
      Character encoding of `input`. Allowed values are '' and 'utf-8'.
      Value '' is interpreted as ASCII.
    name: A name for the operation (optional).

  Returns:
    A `Tensor` of type `string`.
  StringLowerr   Nr   r!   r"   r#   r   r   r!   r%   )r'   r   r(   r)   r   r*   r+   r,   r-   r.   r/   _dispatcher_for_string_lowerr1   string_lower_eager_fallbackr3   r4   r5   r6   r   string_lowerr7   r8   r9   r:   r=   r>   r?   r@   rD   rE   rF   r   r   r!   rG   rH   rI   rJ   rK   rL   rM   rN   rO   s               rP   r   r     H   * 
			0h..0$#\\11mT5*h@gn, +	$ $(Gn$nHx4(	
)::UXDBAq#x QK'""$#,,z23F::L|VW6('	.] && -
##At,,## 
,(D
"D*g		&(
(49 9## 
z" """dMg 
	..<<	<& Z	  
  
DuxdK
G i,,:::n	
r}   zraw_ops.StringLowerc                 &   |d}t        j                  |d      }t        j                  | t        j
                        } | g}d|f}t        j                  dd||||      }t        j                         rt        j                  d|||       |\  }|S )Nr%   r   s   StringLowerrR   rS   r   r   r   r   r!   r"   rO   rN   rI   s          rP   r   r   ?      Hx4(

 
 
7%,!&^Q|#)s?'""$|VW6('	.ri   StringNGramsngramsngrams_splitsTV_StringNGrams_Tsplitsdatadata_splitsleft_pad	right_pad	pad_widthpreserve_short_sequencesc	                 B   t         j                   xs t        j                         }	|	j                  }
|
j                  r=	 t	        j
                  |	d|| |d|d|d|d|d|d|      }t        j                  |      }|S t        j                   |d      }t#        |t$        t&        f      st)        d
|z        |D cg c]  }t        j*                  |d       }}t        j                   |d      }t        j                   |d      }t        j*                  |d      }t        j,                  |d      }t/        j0                  d| ||||||||
      \  }}}}|dd }t        j2                         rd|j5                  d      d|j5                  d      d|j5                  d      d|j5                  d      d|j7                  d      d|j9                  d      d|j;                  d      f}|j<                  }t        j>                  d|||       t        j                  |      }|S # t        j                  $ r }t        j                  ||       Y d}~nd}~wt        j                  $ r Y nw xY w	 t        | |||||||||		
      S # t        j                  $ r Y w xY wc c}w )a  Creates ngrams from ragged string data.

  This op accepts a ragged tensor with 1 ragged dimension containing only
  strings and outputs a ragged tensor with 1 ragged dimension containing ngrams
  of that string, joined along the innermost axis.

  Args:
    data: A `Tensor` of type `string`.
      The values tensor of the ragged string tensor to make ngrams out of. Must be a
      1D string tensor.
    data_splits: A `Tensor`. Must be one of the following types: `int32`, `int64`.
      The splits tensor of the ragged string tensor to make ngrams out of.
    separator: A `string`.
      The string to append between elements of the token. Use "" for no separator.
    ngram_widths: A list of `ints`. The sizes of the ngrams to create.
    left_pad: A `string`.
      The string to use to pad the left side of the ngram sequence. Only used if
      pad_width != 0.
    right_pad: A `string`.
      The string to use to pad the right side of the ngram sequence. Only used if
      pad_width != 0.
    pad_width: An `int`.
      The number of padding elements to add to each side of each
      sequence. Note that padding will never be greater than 'ngram_widths'-1
      regardless of this value. If `pad_width=-1`, then add `max(ngram_widths)-1`
      elements.
    preserve_short_sequences: A `bool`.
    name: A name for the operation (optional).

  Returns:
    A tuple of `Tensor` objects (ngrams, ngrams_splits).

    ngrams: A `Tensor` of type `string`.
    ngrams_splits: A `Tensor`. Has the same type as `data_splits`.
  r   r   ngram_widthsr   r   r   r   N)r   r   r   r   r   r   r!   r"   IExpected list for 'ngram_widths' argument to 'string_n_grams' Op, not %r.)	r   r   r   r   r   r   r   r   r!   Tsplits) r'   r   r(   r)   r   r*   _StringNGramsOutput_maker+   r,   r-   r.   r/   string_n_grams_eager_fallbackr3   r:   r=   r   r   r   r4   r;   r<   r>   r?   r@   rD   rB   rC   rA   rE   rF   )r   r   r   r   r   r   r   r   r!   rG   rH   rI   rJ   _irK   rL   rM   rN   rO   s                      rP   string_n_gramsr   U  s   H 
			0h..0$#\\11ndD+{Ij(K;	+E 	"g
 $))'2gn 	;7)	L4-	0
	')5	67 7 COOB(##B7O,Ox4(	;7)	;7)%//0HJde'88T{"+,!)Y"+1I!#!QX QK'""$3<<4nll>*Jll:&ll;',.H  !;<i  +-F ::Lfg7%%g.'	.W && -
##At,,## 
*
y|yI#;$	 
 ## 
 Ps6    ;H" :J"I)5II)(I)-J JJzraw_ops.StringNGramsc
                 6   t        j                  |d      }t        |t        t        f      st        d|z        |D 
cg c]  }
t        j                  |
d       }}
t        j                  |d      }t        j                  |d      }t        j                  |d      }t        j                  |d      }t        j                  |g|	t        j                  t        j                  gt        j                        \  }\  }t        j                  | t        j                        } | |g}d|d|d|d|d|d|d|f}t        j                  d	d
|||	|      }t        j                          rt        j"                  d|||       t$        j'                  |      }|S c c}
w )Nr   r   r   r   r   r   r   r   s   StringNGrams   rS   r   )r:   r=   r   r   r   r4   r;   r<   rU   rV   rY   r]   r-   ru   rg   r   r@   rF   r   r   )r   r   r   r   r   r   r   r   r!   r"   r   _attr_TsplitsrO   rN   rI   s                  rP   r   r     s   	;7)	L4-	0
	')5	67 7 COOB(##B7O,Ox4(	;7)	;7)%//0HJde"*"A"A;-QTW^WdWdfmfsfsVvx  yF  yF  #G-+			gnn	5$$,NL*
KK6	& _a#)s?'""$fg7%%g.'	.% Ps   FStringSplit)indicesvaluesshape	delimiter
skip_emptyc           	         t         j                   xs t        j                         }|j                  }|j                  r3	 t	        j
                  |d|| |d|      }t        j                  |      }|S |d}t        j                   |d      }t#        j$                  d| |||      \  }}}	}
|
dd }t        j&                         r7d|	j)                  d      f}|	j*                  }t        j,                  d|||       t        j                  |      }|S # t        j                  $ r }t        j                  ||       Y d}~nd}~wt        j                  $ r Y nw xY w	 t        | ||||      S # t        j                  $ r Y w xY w)ay  Split elements of `input` based on `delimiter` into a `SparseTensor`.

  Let N be the size of source (typically N will be the batch size). Split each
  element of `input` based on `delimiter` and return a `SparseTensor`
  containing the splitted tokens. Empty tokens are ignored.

  `delimiter` can be empty, or a string of split characters. If `delimiter` is an
   empty string, each element of `input` is split into individual single-byte
   character strings, including splitting of UTF-8 multibyte sequences. Otherwise
   every character of `delimiter` is a potential split point.

  For example:
    N = 2, input[0] is 'hello world' and input[1] is 'a b c', then the output
    will be

    indices = [0, 0;
               0, 1;
               1, 0;
               1, 1;
               1, 2]
    shape = [2, 3]
    values = ['hello', 'world', 'a', 'b', 'c']

  Args:
    input: A `Tensor` of type `string`. 1-D. Strings to split.
    delimiter: A `Tensor` of type `string`.
      0-D. Delimiter characters (bytes), or empty string.
    skip_empty: An optional `bool`. Defaults to `True`.
      A `bool`. If `True`, skip the empty strings from the result.
    name: A name for the operation (optional).

  Returns:
    A tuple of `Tensor` objects (indices, values, shape).

    indices: A `Tensor` of type `int64`.
    values: A `Tensor` of type `string`.
    shape: A `Tensor` of type `int64`.
  r   r   N)r   r!   r"   T)r   r   r   r!   )r'   r   r(   r)   r   r*   _StringSplitOutputr   r+   r,   r-   r.   r/   string_split_eager_fallbackr3   r:   r<   r>   r?   r@   rC   rE   rF   )r   r   r   r!   rG   rH   rI   rJ   rK   rL   rM   rN   rO   s                rP   string_splitr     s   N 
			0h..0$#\\11mT5)\:Og"((1gn J!!*l;*'88Ui",49!QX QK'""$C..|<=F::L|VW6$$W-'	./ && -
##At,,## 
(
z$H H## 
0    1D E%E  EEE- -FFzraw_ops.StringSplitc                    |d}t        j                  |d      }t        j                  | t        j
                        } t        j                  |t        j
                        }| |g}d|f}t        j                  dd||||      }t        j                         rt        j                  d|||       t        j                  |      }|S )NTr   s   StringSplitr   rS   r   )r:   r<   r-   ru   rV   rg   r   r@   rF   r   r   )r   r   r   r!   r"   rO   rN   rI   s           rP   r   r     s    J!!*l;*

 
 
7%$$Y?)#,*%&^Q|#)s?'""$|VW6$$W-'	.ri   StringSplitV2sepmaxsplitc           	         t         j                   xs t        j                         }|j                  }|j                  r3	 t	        j
                  |d|| |d|      }t        j                  |      }|S |d}t        j                   |d      }t#        j$                  d| |||      \  }}}	}
|
dd }t        j&                         r7d|	j)                  d      f}|	j*                  }t        j,                  d|||       t        j                  |      }|S # t        j                  $ r }t        j                  ||       Y d}~nd}~wt        j                  $ r Y nw xY w	 t        | ||||      S # t        j                  $ r Y w xY w)a?  Split elements of `source` based on `sep` into a `SparseTensor`.

  Let N be the size of source (typically N will be the batch size). Split each
  element of `source` based on `sep` and return a `SparseTensor`
  containing the split tokens. Empty tokens are ignored.

  For example, N = 2, source[0] is 'hello world' and source[1] is 'a b c',
  then the output will be
  ```
  st.indices = [0, 0;
                0, 1;
                1, 0;
                1, 1;
                1, 2]
  st.shape = [2, 3]
  st.values = ['hello', 'world', 'a', 'b', 'c']
  ```

  If `sep` is given, consecutive delimiters are not grouped together and are
  deemed to delimit empty strings. For example, source of `"1<>2<><>3"` and
  sep of `"<>"` returns `["1", "2", "", "3"]`. If `sep` is None or an empty
  string, consecutive whitespace are regarded as a single separator, and the
  result will contain no empty strings at the startor end if the string has
  leading or trailing whitespace.

  Note that the above mentioned behavior matches python's str.split.

  Args:
    input: A `Tensor` of type `string`.
      `1-D` string `Tensor`, the strings to split.
    sep: A `Tensor` of type `string`.
      `0-D` string `Tensor`, the delimiter character.
    maxsplit: An optional `int`. Defaults to `-1`.
      An `int`. If `maxsplit > 0`, limit of the split of the result.
    name: A name for the operation (optional).

  Returns:
    A tuple of `Tensor` objects (indices, values, shape).

    indices: A `Tensor` of type `int64`.
    values: A `Tensor` of type `string`.
    shape: A `Tensor` of type `int64`.
  r   r   N)r   r!   r"   r$   )r   r   r   r!   )r'   r   r(   r)   r   r*   _StringSplitV2Outputr   r+   r,   r-   r.   r/   string_split_v2_eager_fallbackr3   r:   r;   r>   r?   r@   rB   rE   rF   )r   r   r   r!   rG   rH   rI   rJ   rK   rL   rM   rN   rO   s                rP   string_split_v2r   3  s~   X 
			0h..0$#\\11otUCXGg$**73gn Hx4('88u#tM!QXQK'""$#++J78F::Lvw8 &&w/'	.- && -
##At,,## 
+
xd> >## 
r   zraw_ops.StringSplitV2c                    |d}t        j                  |d      }t        j                  | t        j
                        } t        j                  |t        j
                        }| |g}d|f}t        j                  dd||||      }t        j                         rt        j                  d|||       t        j                  |      }|S )Nr$   r   s   StringSplitV2r   rS   r   )r:   r;   r-   ru   rV   rg   r   r@   rF   r   r   )r   r   r   r!   r"   rO   rN   rI   s           rP   r   r     s    Hx4(

 
 
7%sGNN3#,!&-q#)s?'""$vw8 &&w/'	.ri   zstrings.stripstring_stripc           	         t         j                   xs t        j                         }|j                  }|j                  r	 t	        j
                  |d||       }|S t        | |fd      }|t        ur|S 	 t/        j0                  d| |      \  }}}}|dd }t3        j4                         r&d}	|j6                  }
t3        j8                  d|
|	|       |\  }|S # t        j                  $ r }t        j                  ||       Y d}~nd}~wt        j                  $ r Y nw xY w	 t        | |fd      }|t        ur|S t        | ||      S # t        j                  $ r Y t        t         f$ rH t#        j$                  t&        dt)        | |            }|t"        j*                  j,                  ur|cY S  w xY w# t        t         f$ rH t#        j$                  t&        dt)        | |            }|t"        j*                  j,                  ur|cY S  w xY w)a  Strip leading and trailing whitespaces from the Tensor.

  Examples:

  >>> tf.strings.strip(["\nTensorFlow", "     The python library    "]).numpy()
  array([b'TensorFlow', b'The python library'], dtype=object)

  Args:
    input: A `Tensor` of type `string`. A string `Tensor` of any shape.
    name: A name for the operation (optional).

  Returns:
    A `Tensor` of type `string`.
  StringStripNrm   r#   rn   )r'   r   r(   r)   r   r*   r+   r,   r-   r.   r/   _dispatcher_for_string_stripr1   string_strip_eager_fallbackr3   r4   r5   r6   r   r   r7   r8   r9   r>   r?   r:   r@   rE   rF   rq   s              rP   r   r     s	   & 
			0h..0$#\\11mT5*gn, +	Gn$n	
)::U/Aq#x QK'""$F::L|VW6('	.W && -
##At,,## 
,$.$ g		&(
d& &## 
z" """dT:g 
	..<<	<  Z	  
  
Du48
G i,,:::n	
rr   zraw_ops.StringStripc                     t        j                  | t        j                        } | g}d }t	        j
                  dd||||      }t	        j                         rt	        j                  d|||       |\  }|S )Ns   StringStriprR   rS   r  rt   rv   s         rP   r  r    sp    

 
 
7%,&^Q|#)s?'""$|VW6('	.ri   string_tensornum_bucketsc                    t         j                   xs t        j                         }|j                  }|j                  r	 t	        j
                  |d|| d|      }|S t        j                  |d      }t        j                   d| ||      \  }}}}	|	dd }t        j"                         r7d|j%                  d      f}
|j&                  }t        j(                  d||
|       |\  }|S # t        j                  $ r }t        j                  ||       Y d}~nd}~wt        j                  $ r Y nw xY w	 t        | |||      S # t        j                  $ r Y w xY w)aN  Converts each string in the input Tensor to its hash mod by a number of buckets.

  The hash function is deterministic on the content of the string within the
  process.

  Note that the hash function may change from time to time.
  This functionality will be deprecated and it's recommended to use
  `tf.string_to_hash_bucket_fast()` or `tf.string_to_hash_bucket_strong()`.

  Args:
    string_tensor: A `Tensor` of type `string`.
    num_buckets: An `int` that is `>= 1`. The number of buckets.
    name: A name for the operation (optional).

  Returns:
    A `Tensor` of type `int64`.
  StringToHashBucketr  Nr  r!   r"   )r  r  r!   )r'   r   r(   r)   r   r*   r+   r,   r-   r.   r/   $string_to_hash_bucket_eager_fallbackr3   r:   r;   r>   r?   r@   rB   rE   rF   )r  r  r!   rG   rH   rI   rJ   rK   rL   rM   rN   rO   s               rP   string_to_hash_bucketr    s[   $ 
			0h..0$#\\11"D-g n !!+}=+'88M*5DB!QX QK'""$S..}=>F::LlFG=('	.+ && -
##At,,## 
1
[tG G## 
r   zraw_ops.StringToHashBucketc                    t        j                  |d      }t        j                  | t        j
                        } | g}d|f}t        j                  dd||||      }t        j                         rt        j                  d|||       |\  }|S )Nr  s   StringToHashBucketrR   rS   r  	r:   r;   r-   ru   rV   rg   r   r@   rF   )r  r  r!   r"   rO   rN   rI   s          rP   r
  r
    s    !!+}=+((G-,;'&2Al#)s?'""$lFG=('	.ri   zstrings.to_hash_bucket_faststring_to_hash_bucket_fastc           
      |   t         j                   xs t        j                         }|j                  }|j                  r	 t	        j
                  |d|| d|      }|S t        | ||fd      }|t        ur|S t/        j0                  |d      }	 t3        j4                  d| ||      \  }}}}	|	dd }t/        j6                         r7d|j9                  d      f}
|j:                  }t/        j<                  d||
|       |\  }|S # t        j                  $ r }t        j                  ||       Y d}~nd}~wt        j                  $ r Y nw xY w	 t        | ||fd      }|t        ur|S t        | |||      S # t        j                  $ r Y t        t         f$ rI t#        j$                  t&        dt)        | ||            }|t"        j*                  j,                  ur|cY S  w xY w# t        t         f$ rI t#        j$                  t&        dt)        | ||            }|t"        j*                  j,                  ur|cY S  w xY w)ae  Converts each string in the input Tensor to its hash mod by a number of buckets.

  The hash function is deterministic on the content of the string within the
  process and will never change. However, it is not suitable for cryptography.
  This function may be used when CPU time is scarce and inputs are trusted or
  unimportant. There is a risk of adversaries constructing inputs that all hash
  to the same bucket. To prevent this problem, use a strong hash function with
  `tf.string_to_hash_bucket_strong`.

  Examples:

  >>> tf.strings.to_hash_bucket_fast(["Hello", "TensorFlow", "2.x"], 3).numpy()
  array([0, 2, 2])

  Args:
    input: A `Tensor` of type `string`. The strings to assign a hash bucket.
    num_buckets: An `int` that is `>= 1`. The number of buckets.
    name: A name for the operation (optional).

  Returns:
    A `Tensor` of type `int64`.
  StringToHashBucketFastr  Nr	  r#   )r   r  r!   )r'   r   r(   r)   r   r*   r+   r,   r-   r.   r/   *_dispatcher_for_string_to_hash_bucket_fastr1   )string_to_hash_bucket_fast_eager_fallbackr3   r4   r5   r6   r   r  r7   r8   r9   r:   r;   r>   r?   r@   rB   rE   rF   )r   r  r!   rG   rH   rI   rJ   rK   rL   rM   rN   rO   s               rP   r  r  -  sK   6 
			0h..0$#\\11&e]g n0 9	T#T+Gn$n!!+}=+
):: ;'+-Aq#x QK'""$S..}=>F::L ,A('	.c && -
##At,,## 
:+t
%t-g		&6
[t? ?## 
z" ""&Du=H6:-<g
 
	..<<	<( Z	  
  
$b$U;F48+:
G
 i,,:::n	
sP    D  G#  ED..EEE3 $E3 3G 	AG G #AH;9H;zraw_ops.StringToHashBucketFastc                    t        j                  |d      }t        j                  | t        j
                        } | g}d|f}t        j                  dd||||      }t        j                         rt        j                  d|||       |\  }|S )Nr  s   StringToHashBucketFastrR   rS   r  r  )r   r  r!   r"   rO   rN   rI   s          rP   r  r    s    !!+}=+

 
 
7%,;'&6$0C"&(' ""$ ,A('	.ri   zstrings.to_hash_bucket_strongstring_to_hash_bucket_strongc                 F   t         j                   xs t        j                         }|j                  }|j                  r	 t	        j
                  |d|| d|d|      }|S t        | |||fd      }|t        ur|S t/        j0                  |d      }t3        |t4        t6        f      st        d|z        |D cg c]  }t/        j0                  |d       }}	 t9        j:                  d| |||      \  }	}	}
}|dd }t/        j<                         rHd|
j?                  d      d|
jA                  d      f}|
jB                  }t/        jD                  d|||       |\  }|S # t        j                  $ r }t        j                  ||       Y d}~nd}~wt        j                  $ r Y nw xY w	 t        | |||fd      }|t        ur|S t        | ||||      S # t        j                  $ r Y ot        t         f$ rJ t#        j$                  t&        dt)        | |||            }|t"        j*                  j,                  ur|cY S  w xY wc c}w # t        t         f$ rJ t#        j$                  t&        dt)        | |||            }|t"        j*                  j,                  ur|cY S  w xY w)	aC  Converts each string in the input Tensor to its hash mod by a number of buckets.

  The hash function is deterministic on the content of the string within the
  process. The hash function is a keyed hash function, where attribute `key`
  defines the key of the hash function. `key` is an array of 2 elements.

  A strong hash is important when inputs may be malicious, e.g. URLs with
  additional components. Adversaries could try to make their inputs hash to the
  same bucket for a denial-of-service attack or to skew the results. A strong
  hash can be used to make it difficult to find inputs with a skewed hash value
  distribution over buckets. This requires that the hash function is
  seeded by a high-entropy (random) "key" unknown to the adversary.

  The additional robustness comes at a cost of roughly 4x higher compute
  time than `tf.string_to_hash_bucket_fast`.

  Examples:

  >>> tf.strings.to_hash_bucket_strong(["Hello", "TF"], 3, [1, 2]).numpy()
  array([2, 0])

  Args:
    input: A `Tensor` of type `string`. The strings to assign a hash bucket.
    num_buckets: An `int` that is `>= 1`. The number of buckets.
    key: A list of `ints`.
      The key used to seed the hash function, passed as a list of two uint64
      elements.
    name: A name for the operation (optional).

  Returns:
    A `Tensor` of type `int64`.
  StringToHashBucketStrongr  keyN)r  r  r!   r"   r#   )r   r  r  r!   NExpected list for 'key' argument to 'string_to_hash_bucket_strong' Op, not %r.)#r'   r   r(   r)   r   r*   r+   r,   r-   r.   r/   ,_dispatcher_for_string_to_hash_bucket_strongr1   +string_to_hash_bucket_strong_eager_fallbackr3   r4   r5   r6   r   r  r7   r8   r9   r:   r;   r   r   r   r>   r?   r@   rB   rD   rE   rF   )r   r  r  r!   rG   rH   rI   rJ   r   rK   rL   rM   rN   rO   s                 rP   r  r    s   J 
			0h..0$#\\11($}UC!g n0 ;	S$($0Gn$n!!+}=+	C$	'
	57:	;< < 144"		2u	%4#4
)::"%[(+$8Aq#x QK'""$S..}=ull5!#F::L"L&'C('	.o && -
##At,,## 
<+sD
*D2g		&8
[c$H H## 
z" ""("d?J7:/Gg
 
	..<<	<( 	5
 Z	  
  
&Du=H58t-E
G
 i,,:::n	
sV    E 6II F#/F

F#"F#'G G H?'AH?=H?AJ J z raw_ops.StringToHashBucketStrongc                    t        j                  |d      }t        |t        t        f      st        d|z        |D cg c]  }t        j                  |d       }}t        j                  | t        j                        } | g}d|d|f}t        j                  dd||||      }t        j                         rt        j                  d|||       |\  }|S c c}w )Nr  r  r  s   StringToHashBucketStrongrR   rS   r  )r:   r;   r   r   r   r4   r-   ru   rV   rg   r   r@   rF   )	r   r  r  r!   r"   r   rO   rN   rI   s	            rP   r  r     s    !!+}=+	C$	'
	57:	;< < 144"		2u	%4#4

 
 
7%,;s3&8!$0C"&(' ""$"L&'C('	. 	5s   Czstrings.upperc           
         t         j                   xs t        j                         }|j                  }|j                  r	 t	        j
                  |d|| d|      }|S t        | ||fd      }|t        ur|S |d}t/        j0                  |d      }	 t3        j4                  d| ||      \  }}}}	|	dd }t/        j6                         r7d|j9                  d      f}
|j:                  }t/        j<                  d||
|       |\  }|S # t        j                  $ r }t        j                  ||       Y d}~nd}~wt        j                  $ r Y nw xY w	 t        | ||fd      }|t        ur|S t        | |||      S # t        j                  $ r Y t        t         f$ rI t#        j$                  t&        dt)        | ||            }|t"        j*                  j,                  ur|cY S  w xY w# t        t         f$ rI t#        j$                  t&        dt)        | ||            }|t"        j*                  j,                  ur|cY S  w xY w)a5  Converts all lowercase characters into their respective uppercase replacements.

  Example:

  >>> tf.strings.upper("CamelCase string and ALL CAPS")
  <tf.Tensor: shape=(), dtype=string, numpy=b'CAMELCASE STRING AND ALL CAPS'>

  Args:
    input: A `Tensor` of type `string`. The input to be upper-cased.
    encoding: An optional `string`. Defaults to `""`.
      Character encoding of `input`. Allowed values are '' and 'utf-8'.
      Value '' is interpreted as ASCII.
    name: A name for the operation (optional).

  Returns:
    A `Tensor` of type `string`.
  StringUpperr   Nr   r#   r   r%   )r'   r   r(   r)   r   r*   r+   r,   r-   r.   r/   _dispatcher_for_string_upperr1   string_upper_eager_fallbackr3   r4   r5   r6   r   string_upperr7   r8   r9   r:   r=   r>   r?   r@   rD   rE   rF   r   s               rP   r   r     r   r}   zraw_ops.StringUpperc                 &   |d}t        j                  |d      }t        j                  | t        j
                        } | g}d|f}t        j                  dd||||      }t        j                         rt        j                  d|||       |\  }|S )Nr%   r   s   StringUpperrR   rS   r  r   r   s          rP   r  r  d  r   ri   TV_Substr_Tposr   c           
         t         j                   xs t        j                         }|j                  }|j                  r	 t	        j
                  |d|| ||d|      }|S |d}t        j                  |d      }t        j                   d| ||||      \  }	}	}
}|dd }t        j"                         rHd|
j%                  d      d|
j'                  d      f}|
j(                  }t        j*                  d|||       |\  }|S # t        j                  $ r }t        j                  ||       Y d}~nd}~wt        j                  $ r Y nw xY w	 t        | |||||      S # t        j                  $ r Y w xY w)a<  Return substrings from `Tensor` of strings.

  For each string in the input `Tensor`, creates a substring starting at index
  `pos` with a total length of `len`.

  If `len` defines a substring that would extend beyond the length of the input
  string, or if `len` is negative, then as many characters as possible are used.

  A negative `pos` indicates distance within the string backwards from the end.

  If `pos` specifies an index which is out of range for any of the input strings,
  then an `InvalidArgumentError` is thrown.

  `pos` and `len` must have the same shape, otherwise a `ValueError` is thrown on
  Op creation.

  *NOTE*: `Substr` supports broadcasting up to two dimensions. More about
  broadcasting
  [here](http://docs.scipy.org/doc/numpy/user/basics.broadcasting.html)

  ---

  Examples

  Using scalar `pos` and `len`:

  ```python
  input = [b'Hello', b'World']
  position = 1
  length = 3

  output = [b'ell', b'orl']
  ```

  Using `pos` and `len` with same shape as `input`:

  ```python
  input = [[b'ten', b'eleven', b'twelve'],
           [b'thirteen', b'fourteen', b'fifteen'],
           [b'sixteen', b'seventeen', b'eighteen']]
  position = [[1, 2, 3],
              [1, 2, 3],
              [1, 2, 3]]
  length =   [[2, 3, 4],
              [4, 3, 2],
              [5, 5, 5]]

  output = [[b'en', b'eve', b'lve'],
            [b'hirt', b'urt', b'te'],
            [b'ixtee', b'vente', b'hteen']]
  ```

  Broadcasting `pos` and `len` onto `input`:

  ```
  input = [[b'ten', b'eleven', b'twelve'],
           [b'thirteen', b'fourteen', b'fifteen'],
           [b'sixteen', b'seventeen', b'eighteen'],
           [b'nineteen', b'twenty', b'twentyone']]
  position = [1, 2, 3]
  length =   [1, 2, 3]

  output = [[b'e', b'ev', b'lve'],
            [b'h', b'ur', b'tee'],
            [b'i', b've', b'hte'],
            [b'i', b'en', b'nty']]
  ```

  Broadcasting `input` onto `pos` and `len`:

  ```
  input = b'thirteen'
  position = [1, 5, 7]
  length =   [3, 2, 1]

  output = [b'hir', b'ee', b'n']
  ```

  Raises:

    * `ValueError`: If the first argument cannot be converted to a
       Tensor of `dtype string`.
    * `InvalidArgumentError`: If indices are out of range.
    * `ValueError`: If `pos` and `len` are not the same shape.

  Args:
    input: A `Tensor` of type `string`. Tensor of strings
    pos: A `Tensor`. Must be one of the following types: `int32`, `int64`.
      Scalar defining the position of first character in each substring
    len: A `Tensor`. Must have the same type as `pos`.
      Scalar defining the number of characters to include in each substring
    unit: An optional `string` from: `"BYTE", "UTF8_CHAR"`. Defaults to `"BYTE"`.
      The unit that is used to create the substring.  One of: `"BYTE"` (for
      defining position and length by bytes) or `"UTF8_CHAR"` (for the UTF-8
      encoded Unicode code points).  The default is `"BYTE"`. Results are undefined if
      `unit=UTF8_CHAR` and the `input` strings do not contain structurally valid
      UTF-8.
    name: A name for the operation (optional).

  Returns:
    A `Tensor` of type `string`.
  Substrr   Nr   r   )r   r#  r   r   r!   r&   )r'   r   r(   r)   r   r*   r+   r,   r-   r.   r/   substr_eager_fallbackr3   r:   r=   r>   r?   r@   rA   rD   rE   rF   )r   r#  r   r   r!   rG   rH   rI   rJ   rK   rL   rM   rN   rO   s                 rP   substrr'  v  sv   N 
			0h..0$#\\11heS#vt=gn 
\D			4	($'883CdG!QXQK'""$3%%c*FCLL4HIF::L,1('	.- && -
##At,,## 
"
c4T; ;## 
s0    C? ?ED--EE
E E21E2zraw_ops.Substrc                    |d}t        j                  |d      }t        j                  ||g|t        j                  t        j
                  g      \  }}|\  }}t        j                  | t        j                        } | ||g}d|d|f}	t        j                  dd||	||      }
t        j                         rt        j                  d||	|
       |
\  }
|
S )Nr   r   r&   s   SubstrrR   rS   r%  r:   r=   rU   rV   rY   r]   r-   ru   rg   r   r@   rF   )r   r#  r   r   r!   r"   rh   	_inputs_TrO   rN   rI   s              rP   r&  r&    s    	\D			4	($66Sz3X_XeXeHhi'9*3

 
 
7%c",&$'&Y,f!$41'""$,1('	.ri   UnicodeDecode
row_splitschar_valuesTV_UnicodeDecode_Tsplitsreplace  input_encodingerrorsreplacement_charreplace_control_charactersr   c                    t         j                   xs t        j                         }|j                  }|j                  r:	 t	        j
                  |d|| d|d|d|d|d|      }	t        j                  |	      }	|	S t        j                   |d      }|d	}t        j                   |d      }|d
}t        j"                  |d      }|d}t        j$                  |d      }|t&        j(                  }t        j*                  |d      }t-        j.                  d| ||||||      \  }}}}|dd }	t        j0                         r{d|j3                  d      d|j3                  d      d|j5                  d      d|j7                  d      d|j9                  d      f
}|j:                  }t        j<                  d|||	       t        j                  |	      }	|	S # t        j                  $ r }
t        j                  |
|       Y d}
~
nd}
~
wt        j                  $ r Y nw xY w	 t        | |||||||      S # t        j                  $ r Y w xY w)a	  Decodes each string in `input` into a sequence of Unicode code points.

  The character codepoints for all strings are returned using a single vector
  `char_values`, with strings expanded to characters in row-major order.

  The `row_splits` tensor indicates where the codepoints for
  each input string begin and end within the `char_values` tensor.
  In particular, the values for the `i`th
  string (in row-major order) are stored in the slice
  `[row_splits[i]:row_splits[i+1]]`. Thus:

  * `char_values[row_splits[i]+j]` is the Unicode codepoint for the `j`th
    character in the `i`th string (in row-major order).
  * `row_splits[i+1] - row_splits[i]` is the number of characters in the `i`th
    string (in row-major order).

  Args:
    input: A `Tensor` of type `string`.
      The text to be decoded. Can have any shape. Note that the output is flattened
      to a vector of char values.
    input_encoding: A `string`.
      Text encoding of the input strings. This is any of the encodings supported
      by ICU ucnv algorithmic converters. Examples: `"UTF-16", "US ASCII", "UTF-8"`.
    errors: An optional `string` from: `"strict", "replace", "ignore"`. Defaults to `"replace"`.
      Error handling policy when there is invalid formatting found in the input.
      The value of 'strict' will cause the operation to produce a InvalidArgument
      error on any invalid input formatting. A value of 'replace' (the default) will
      cause the operation to replace any invalid formatting in the input with the
      `replacement_char` codepoint. A value of 'ignore' will cause the operation to
      skip any invalid formatting in the input and produce no corresponding output
      character.
    replacement_char: An optional `int`. Defaults to `65533`.
      The replacement character codepoint to be used in place of any invalid
      formatting in the input when `errors='replace'`. Any valid unicode codepoint may
      be used. The default value is the default unicode replacement character is
      0xFFFD or U+65533.)
    replace_control_characters: An optional `bool`. Defaults to `False`.
      Whether to replace the C0 control characters (00-1F) with the
      `replacement_char`. Default is false.
    Tsplits: An optional `tf.DType` from: `tf.int32, tf.int64`. Defaults to `tf.int64`.
    name: A name for the operation (optional).

  Returns:
    A tuple of `Tensor` objects (row_splits, char_values).

    row_splits: A `Tensor` of type `Tsplits`.
    char_values: A `Tensor` of type `int32`.
  r+  r1  r2  r3  r4  r   Nr1  r2  r3  r4  r   r!   r"   r/  r0  Fr   r1  r2  r3  r4  r   r!   )r'   r   r(   r)   r   r*   _UnicodeDecodeOutputr   r+   r,   r-   r.   r/   unicode_decode_eager_fallbackr3   r:   r=   r;   r<   rV   r]   	make_typer>   r?   r@   rD   rB   rC   rA   rE   rF   r   r1  r2  r3  r4  r   r!   rG   rH   rI   rJ   rK   rL   rM   rN   rO   s                   rP   unicode_decoder<    sd   b 
			0h..0$#\\11otU,<n&,.>$&@)	g
 %**73gn $$^5EF.^FVX.&&&'79KL'!&'112LNjk_mmGw	2''88u^ &9I4N!(t	5!QX
 QK'""$-= >ll8$&8 23*  !=>	  +-F ::Lvw8 &&w/'	.W && -
##At,,## 
*
v+%?$	0 0
 ## 
0    8G H%H  HHH0 0IIzraw_ops.UnicodeDecodec           
      <   t        j                  |d      }|d}t        j                  |d      }|d}t        j                  |d      }|d}t        j                  |d      }|t        j
                  }t        j                  |d      }t        j                  | t        j                        } | g}d|d|d|d|d|f
}	t        j                  d	d
||	||      }
t        j                         rt        j                  d||	|
       t        j                  |
      }
|
S )Nr1  r/  r2  r0  r3  Fr4  r   s   UnicodeDecoder   rS   r+  )r:   r=   r;   r<   rV   r]   r:  r-   ru   rg   r   r@   rF   r8  r   r   r1  r2  r3  r4  r   r!   r"   rO   rN   rI   s              rP   r9  r9    s(   $$^5EF.^FVX.&&&'79KL'!&'112LNjk_mmGw	2'

 
 
7%,nh&(Di2& -q#)s?'""$vw8 &&w/'	.ri   UnicodeDecodeWithOffsets)r,  r-  char_to_byte_starts#TV_UnicodeDecodeWithOffsets_Tsplitsc                    t         j                   xs t        j                         }|j                  }|j                  r:	 t	        j
                  |d|| d|d|d|d|d|      }	t        j                  |	      }	|	S t        j                   |d      }|d	}t        j                   |d      }|d
}t        j"                  |d      }|d}t        j$                  |d      }|t&        j(                  }t        j*                  |d      }t-        j.                  d| ||||||      \  }}}}|dd }	t        j0                         r{d|j3                  d      d|j3                  d      d|j5                  d      d|j7                  d      d|j9                  d      f
}|j:                  }t        j<                  d|||	       t        j                  |	      }	|	S # t        j                  $ r }
t        j                  |
|       Y d}
~
nd}
~
wt        j                  $ r Y nw xY w	 t        | |||||||      S # t        j                  $ r Y w xY w)aw  Decodes each string in `input` into a sequence of Unicode code points.

  The character codepoints for all strings are returned using a single vector
  `char_values`, with strings expanded to characters in row-major order.
  Similarly, the character start byte offsets are returned using a single vector
  `char_to_byte_starts`, with strings expanded in row-major order.

  The `row_splits` tensor indicates where the codepoints and start offsets for
  each input string begin and end within the `char_values` and
  `char_to_byte_starts` tensors.  In particular, the values for the `i`th
  string (in row-major order) are stored in the slice
  `[row_splits[i]:row_splits[i+1]]`. Thus:

  * `char_values[row_splits[i]+j]` is the Unicode codepoint for the `j`th
    character in the `i`th string (in row-major order).
  * `char_to_bytes_starts[row_splits[i]+j]` is the start byte offset for the `j`th
    character in the `i`th string (in row-major order).
  * `row_splits[i+1] - row_splits[i]` is the number of characters in the `i`th
    string (in row-major order).

  Args:
    input: A `Tensor` of type `string`.
      The text to be decoded. Can have any shape. Note that the output is flattened
      to a vector of char values.
    input_encoding: A `string`.
      Text encoding of the input strings. This is any of the encodings supported
      by ICU ucnv algorithmic converters. Examples: `"UTF-16", "US ASCII", "UTF-8"`.
    errors: An optional `string` from: `"strict", "replace", "ignore"`. Defaults to `"replace"`.
      Error handling policy when there is invalid formatting found in the input.
      The value of 'strict' will cause the operation to produce a InvalidArgument
      error on any invalid input formatting. A value of 'replace' (the default) will
      cause the operation to replace any invalid formatting in the input with the
      `replacement_char` codepoint. A value of 'ignore' will cause the operation to
      skip any invalid formatting in the input and produce no corresponding output
      character.
    replacement_char: An optional `int`. Defaults to `65533`.
      The replacement character codepoint to be used in place of any invalid
      formatting in the input when `errors='replace'`. Any valid unicode codepoint may
      be used. The default value is the default unicode replacement character is
      0xFFFD or U+65533.)
    replace_control_characters: An optional `bool`. Defaults to `False`.
      Whether to replace the C0 control characters (00-1F) with the
      `replacement_char`. Default is false.
    Tsplits: An optional `tf.DType` from: `tf.int32, tf.int64`. Defaults to `tf.int64`.
    name: A name for the operation (optional).

  Returns:
    A tuple of `Tensor` objects (row_splits, char_values, char_to_byte_starts).

    row_splits: A `Tensor` of type `Tsplits`.
    char_values: A `Tensor` of type `int32`.
    char_to_byte_starts: A `Tensor` of type `int64`.
  r@  r1  r2  r3  r4  r   Nr6  r/  r0  Fr7  )r'   r   r(   r)   r   r*   _UnicodeDecodeWithOffsetsOutputr   r+   r,   r-   r.   r/   *unicode_decode_with_offsets_eager_fallbackr3   r:   r=   r;   r<   rV   r]   r:  r>   r?   r@   rD   rB   rC   rA   rE   rF   r;  s                   rP   unicode_decode_with_offsetsrF    sg   l 
			0h..0$#\\11($7G&*<6"Iw	8g
 055g>gn $$^5EF.^FVX.&&&'79KL'!&'112LNjk_mmGw	2''88"%3A+15E?Y,3$@!QX QK'""$-= >ll8$&8 23*  !=>	  +-F ::L"L&'C+11':'	.[ && -
##At,,## 
7
v+%?$	0 0
 ## 
r=  z raw_ops.UnicodeDecodeWithOffsetsc           
      <   t        j                  |d      }|d}t        j                  |d      }|d}t        j                  |d      }|d}t        j                  |d      }|t        j
                  }t        j                  |d      }t        j                  | t        j                        } | g}d|d|d|d|d|f
}	t        j                  d	d
||	||      }
t        j                         rt        j                  d||	|
       t        j                  |
      }
|
S )Nr1  r/  r2  r0  r3  Fr4  r   s   UnicodeDecodeWithOffsetsr   rS   r@  )r:   r=   r;   r<   rV   r]   r:  r-   ru   rg   r   r@   rF   rD  r   r?  s              rP   rE  rE  	  s,   $$^5EF.^FVX.&&&'79KL'!&'112LNjk_mmGw	2'

 
 
7%,nh&(Di2& 8!$0C"&(' ""$"L&'C+11':'	.ri   TV_UnicodeEncode_Tsplitsinput_valuesinput_splitsoutput_encodingc                    t         j                   xs t        j                         }|j                  }|j                  r"	 t	        j
                  |d|| |d|d|d|      }|S t        j                  |d      }|d}t        j                  |d      }|d}t        j                  |d      }t!        j"                  d| |||||	      \  }
}
}}|dd }t        j$                         rjd|j'                  d      d|j'                  d      d|j)                  d      d
|j+                  d
      f}|j,                  }t        j.                  d|||       |\  }|S # t        j                  $ r }	t        j                  |	|       Y d}	~	nd}	~	wt        j                  $ r Y nw xY w	 t        | ||||||      S # t        j                  $ r Y gw xY w)a$  Encode a tensor of ints into unicode strings.

  Returns a vector of strings, where `output[i]` is constructed by encoding the
  Unicode codepoints in `input_values[input_splits[i]:input_splits[i+1]]`
  using `output_encoding`.

  ---

  Example:

  ```
  input_values = [72, 101, 108, 108, 111, 87, 111, 114, 108, 100]
  input_splits = [0, 5, 10]
  output_encoding = 'UTF-8'

  output = ['Hello', 'World']
  ```

  Args:
    input_values: A `Tensor` of type `int32`.
      A 1D tensor containing the unicode codepoints that should be encoded.
    input_splits: A `Tensor`. Must be one of the following types: `int32`, `int64`.
      A 1D tensor specifying how the unicode codepoints should be split into strings.
      In particular, `output[i]` is constructed by encoding the codepoints in the
      slice `input_values[input_splits[i]:input_splits[i+1]]`.
    output_encoding: A `string` from: `"UTF-8", "UTF-16-BE", "UTF-32-BE"`.
      Unicode encoding of the output strings. Valid encodings are: `"UTF-8",
      "UTF-16-BE", and "UTF-32-BE"`.
    errors: An optional `string` from: `"ignore", "replace", "strict"`. Defaults to `"replace"`.
      Error handling policy when there is invalid formatting found in the input.
      The value of 'strict' will cause the operation to produce a InvalidArgument
      error on any invalid input formatting. A value of 'replace' (the default) will
      cause the operation to replace any invalid formatting in the input with the
      `replacement_char` codepoint. A value of 'ignore' will cause the operation to
      skip any invalid formatting in the input and produce no corresponding output
      character.
    replacement_char: An optional `int`. Defaults to `65533`.
      The replacement character codepoint to be used in place of any invalid
      formatting in the input when `errors='replace'`. Any valid unicode codepoint may
      be used. The default value is the default unicode replacement character is
      0xFFFD (U+65533).
    name: A name for the operation (optional).

  Returns:
    A `Tensor` of type `string`.
  UnicodeEncoder2  rK  r3  N)r2  rK  r3  r!   r"   r/  r0  )rI  rJ  rK  r2  r3  r!   r   )r'   r   r(   r)   r   r*   r+   r,   r-   r.   r/   unicode_encode_eager_fallbackr3   r:   r=   r;   r>   r?   r@   rD   rB   rA   rE   rF   )rI  rJ  rK  r2  r3  r!   rG   rH   rI   rJ   rK   rL   rM   rN   rO   s                  rP   unicode_encoderO  7	  s   ^ 
			0h..0$#\\	11ot\<!?4Fg n %%o7HI/^FVX.&&&'79KL'88l)8*:G!QX QK'""$X.0All,-/A 23Y  +-F ::Lvw8('	.C && -
##At,,## 
*
V)<L  ## 
s0     E F(FFF F2 2G	G	zraw_ops.UnicodeEncodec                 (   t        j                  |d      }|d}t        j                  |d      }|d}t        j                  |d      }t        j                  |g|t        j
                  t        j                  gt        j                        \  }\  }t        j                  | t        j
                        } | |g}d|d|d|d|f}	t        j                  dd||	||	      }
t        j                         rt        j                  d
||	|
       |
\  }
|
S )NrK  r/  r2  r0  r3  r   s   UnicodeEncoderR   rS   rM  )r:   r=   r;   rU   rV   rY   r]   r-   ru   r   r@   rF   )rI  rJ  rK  r2  r3  r!   r"   r   rO   rN   rI   s              rP   rN  rN  	  s$   %%o7HI/^FVX.&&&'79KL#+#B#BL>SVY`YfYfhohuhuXx  {B  {H  {H  $I -,''gmmD,-,f/&	=B&-q#)s?'""$vw8('	.ri   zstrings.unicode_scriptc           	         t         j                   xs t        j                         }|j                  }|j                  r	 t	        j
                  |d||       }|S t        | |fd      }|t        ur|S 	 t/        j0                  d| |      \  }}}}|dd }t3        j4                         r&d}	|j6                  }
t3        j8                  d|
|	|       |\  }|S # t        j                  $ r }t        j                  ||       Y d}~nd}~wt        j                  $ r Y nw xY w	 t        | |fd      }|t        ur|S t        | ||      S # t        j                  $ r Y t        t         f$ rH t#        j$                  t&        dt)        | |            }|t"        j*                  j,                  ur|cY S  w xY w# t        t         f$ rH t#        j$                  t&        dt)        | |            }|t"        j*                  j,                  ur|cY S  w xY w)a  Determine the script codes of a given tensor of Unicode integer code points.

  This operation converts Unicode code points to script codes corresponding to
  each code point. Script codes correspond to International Components for
  Unicode (ICU) UScriptCode values.

  See
  [ICU project docs](http://icu-project.org/apiref/icu4c/uscript_8h.html)
  for more details on script codes.

  For an example, see the unicode strings guide on [unicode scripts]
  (https://www.tensorflow.org/tutorials/load_data/unicode#representing_unicode).

  Returns -1 (USCRIPT_INVALID_CODE) for invalid codepoints. Output shape will
  match input shape.

  Examples:

  >>> tf.strings.unicode_script([1, 31, 38])
  <tf.Tensor: shape=(3,), dtype=int32, numpy=array([0, 0, 0], dtype=int32)>

  Args:
    input: A `Tensor` of type `int32`. A Tensor of int32 Unicode code points.
    name: A name for the operation (optional).

  Returns:
    A `Tensor` of type `int32`.
  UnicodeScriptNrm   r#   rn   )r'   r   r(   r)   r   r*   r+   r,   r-   r.   r/   _dispatcher_for_unicode_scriptr1   unicode_script_eager_fallbackr3   r4   r5   r6   r   unicode_scriptr7   r8   r9   r>   r?   r:   r@   rE   rF   rq   s              rP   rU  rU  	  s
   @ 
			0h..0$#\\11otU,gn, -	Gn$n	
)::u41Aq#x QK'""$F::Lvw8('	.W && -
##At,,## 
.$.$ g		&*
d& &## 
z" ""B5t <g 
	..<<	<  Z	  
  
"dT:
G i,,:::n	
rr   zraw_ops.UnicodeScriptc                     t        j                  | t        j                        } | g}d }t	        j
                  dd||||      }t	        j                         rt	        j                  d|||       |\  }|S )Ns   UnicodeScriptrR   rS   rR  )r-   ru   rV   rY   r:   r   r@   rF   rv   s         rP   rT  rT  
  sq    

 
 
6%,&-q#)s?'""$vw8('	.ri   zstrings.unicode_transcodec                    t         j                   xs t        j                         }|j                  }|j                  r%	 t	        j
                  |d|| d|d|d|d|d|      }	|	S t        | ||||||fd      }	|	t        ur|	S t/        j0                  |d      }t/        j0                  |d      }|d}t/        j0                  |d      }|d}t/        j2                  |d      }|d}t/        j4                  |d      }	 t7        j8                  d| ||||||
      \  }}}}|dd }	t/        j:                         r{d|j=                  d      d|j=                  d      d|j=                  d      d|j?                  d      d|jA                  d      f
}|jB                  }t/        jD                  d|||	       |	\  }	|	S # t        j                  $ r }
t        j                  |
|       Y d}
~
nd}
~
wt        j                  $ r Y nw xY w	 t        | ||||||fd      }	|	t        ur|	S t        | |||||||      S # t        j                  $ r Y t        t         f$ rM t#        j$                  t&        d	t)        | ||||||
            }	|	t"        j*                  j,                  ur|	cY S  w xY w# t        t         f$ rM t#        j$                  t&        d	t)        | ||||||
            }	|	t"        j*                  j,                  ur|	cY S  w xY w)a  Transcode the input text from a source encoding to a destination encoding.

  The input is a string tensor of any shape. The output is a string tensor of
  the same shape containing the transcoded strings. Output strings are always
  valid unicode. If the input contains invalid encoding positions, the
  `errors` attribute sets the policy for how to deal with them. If the default
  error-handling policy is used, invalid formatting will be substituted in the
  output by the `replacement_char`. If the errors policy is to `ignore`, any
  invalid encoding positions in the input are skipped and not included in the
  output. If it set to `strict` then any invalid formatting will result in an
  InvalidArgument error.

  This operation can be used with `output_encoding = input_encoding` to enforce
  correct formatting for inputs even if they are already in the desired encoding.

  If the input is prefixed by a Byte Order Mark needed to determine encoding
  (e.g. if the encoding is UTF-16 and the BOM indicates big-endian), then that
  BOM will be consumed and not emitted into the output. If the input encoding
  is marked with an explicit endianness (e.g. UTF-16-BE), then the BOM is
  interpreted as a non-breaking-space and is preserved in the output (including
  always for UTF-8).

  The end result is that if the input is marked as an explicit endianness the
  transcoding is faithful to all codepoints in the source. If it is not marked
  with an explicit endianness, the BOM is not considered part of the string itself
  but as metadata, and so is not preserved in the output.

  Examples:

  >>> tf.strings.unicode_transcode(["Hello", "TensorFlow", "2.x"], "UTF-8", "UTF-16-BE")
  <tf.Tensor: shape=(3,), dtype=string, numpy=
  array([b'\x00H\x00e\x00l\x00l\x00o',
         b'\x00T\x00e\x00n\x00s\x00o\x00r\x00F\x00l\x00o\x00w',
         b'\x002\x00.\x00x'], dtype=object)>
  >>> tf.strings.unicode_transcode(["A", "B", "C"], "US ASCII", "UTF-8").numpy()
  array([b'A', b'B', b'C'], dtype=object)

  Args:
    input: A `Tensor` of type `string`.
      The text to be processed. Can have any shape.
    input_encoding: A `string`.
      Text encoding of the input strings. This is any of the encodings supported
      by ICU ucnv algorithmic converters. Examples: `"UTF-16", "US ASCII", "UTF-8"`.
    output_encoding: A `string` from: `"UTF-8", "UTF-16-BE", "UTF-32-BE"`.
      The unicode encoding to use in the output. Must be one of
      `"UTF-8", "UTF-16-BE", "UTF-32-BE"`. Multi-byte encodings will be big-endian.
    errors: An optional `string` from: `"strict", "replace", "ignore"`. Defaults to `"replace"`.
      Error handling policy when there is invalid formatting found in the input.
      The value of 'strict' will cause the operation to produce a InvalidArgument
      error on any invalid input formatting. A value of 'replace' (the default) will
      cause the operation to replace any invalid formatting in the input with the
      `replacement_char` codepoint. A value of 'ignore' will cause the operation to
      skip any invalid formatting in the input and produce no corresponding output
      character.
    replacement_char: An optional `int`. Defaults to `65533`.
      The replacement character codepoint to be used in place of any invalid
      formatting in the input when `errors='replace'`. Any valid unicode codepoint may
      be used. The default value is the default unicode replacement character is
      0xFFFD or U+65533.)

      Note that for UTF-8, passing a replacement character expressible in 1 byte, such
      as ' ', will preserve string alignment to the source since invalid bytes will be
      replaced with a 1-byte replacement. For UTF-16-BE and UTF-16-LE, any 1 or 2 byte
      replacement character will preserve byte alignment to the source.
    replace_control_characters: An optional `bool`. Defaults to `False`.
      Whether to replace the C0 control characters (00-1F) with the
      `replacement_char`. Default is false.
    name: A name for the operation (optional).

  Returns:
    A `Tensor` of type `string`.
  UnicodeTranscoder1  rK  r2  r3  r4  N)r1  rK  r2  r3  r4  r!   r"   r#   )r   r1  rK  r2  r3  r4  r!   r/  r0  F)#r'   r   r(   r)   r   r*   r+   r,   r-   r.   r/   !_dispatcher_for_unicode_transcoder1    unicode_transcode_eager_fallbackr3   r4   r5   r6   r   unicode_transcoder7   r8   r9   r:   r=   r;   r<   r>   r?   r@   rD   rB   rC   rE   rF   )r   r1  rK  r2  r3  r4  r!   rG   rH   rI   rJ   rK   rL   rM   rN   rO   s                   rP   r[  r[  
  si   X 
			0h..0$#\\
11 $/?)?Hf,.J"	$g
 nB 0	9I"D	+,02G n$n$$^5EF.%%o7HI/^FVX.&&&'79KL'!&'112LNjk
)::%,;F-=7Q!%'Aq#x& QK'""$-= >.?!@(ll8$&8 23*  !=>@F ::LL&';('	.c && -
##At,,## 
1./6;K
$d-.24g 
	&-
)&+%?d  ## 
z" ""r4e7E8G/59IC]-1$3g 
	..<<	<L Z	  
  
RE5C6E-37GA[+/"1
G i,,:::n	
sP    #F8 <"J' 8G?G&&G?>G?H3  H3 3J$	AJ$"J$'ALLzraw_ops.UnicodeTranscodec           
         t        j                  |d      }t        j                  |d      }|d}t        j                  |d      }|d}t        j                  |d      }|d}t        j                  |d      }t	        j
                  | t        j                        } | g}d|d|d|d|d|f
}	t        j                  d	d
||	||      }
t        j                         rt        j                  d||	|
       |
\  }
|
S )Nr1  rK  r/  r2  r0  r3  Fr4  s   UnicodeTranscoderR   rS   rX  )r:   r=   r;   r<   r-   ru   rV   rg   r   r@   rF   )r   r1  rK  r2  r3  r4  r!   r"   rO   rN   rI   s              rP   rZ  rZ  
  s   $$^5EF.%%o7HI/^FVX.&&&'79KL'!&'112LNjk

 
 
7%,n.?8V%79I :<& 0!L#)s?'""$L&';('	.ri   TV_UnsortedSegmentJoin_Tindices#TV_UnsortedSegmentJoin_Tnumsegmentssegment_idsnum_segmentsc           
         t         j                   xs t        j                         }|j                  }|j                  r	 t	        j
                  |d|| ||d|      }|S |d}t        j                  |d      }t        j                   d| ||||      \  }	}	}
}|dd }t        j"                         rYd|
j%                  d      d|
j'                  d      d|
j'                  d      f}|
j(                  }t        j*                  d|||       |\  }|S # t        j                  $ r }t        j                  ||       Y d}~nd}~wt        j                  $ r Y nw xY w	 t        | |||||      S # t        j                  $ r Y $w xY w)	a}  TODO: add doc.

  Args:
    inputs: A `Tensor` of type `string`.
    segment_ids: A `Tensor`. Must be one of the following types: `int32`, `int64`.
    num_segments: A `Tensor`. Must be one of the following types: `int32`, `int64`.
    separator: An optional `string`. Defaults to `""`.
    name: A name for the operation (optional).

  Returns:
    A `Tensor` of type `string`.
  UnsortedSegmentJoinr   Nr   r%   )rE   r_  r`  r   r!   TindicesTnumsegments)r'   r   r(   r)   r   r*   r+   r,   r-   r.   r/   $unsorted_segment_join_eager_fallbackr3   r:   r=   r>   r?   r@   rD   rA   rE   rF   )rE   r_  r`  r   r!   rG   rH   rI   rJ   rK   rL   rM   rN   rO   s                 rP   unsorted_segment_joinrf  
  s    
			0h..0$#\\11#T6;Y g n I	;7)'88f+,8I$(*!QX QK'""$3<<4j  ,n  02F ::L|VW>('	.7 && -
##At,,## 
1
+|yt  ## 
s0    D E#D>>EEE, ,FFzraw_ops.UnsortedSegmentJoinc                 <   |d}t        j                  |d      }t        j                  |g|t        j                  t        j
                  g      \  }\  }t        j                  |g|t        j                  t        j
                  gt        j                        \  }\  }t        j                  | t        j                        } | ||g}d|d|d|f}	t        j                  dd||	||      }
t        j                         rt        j                  d||	|
       |
\  }
|
S )	Nr%   r   rc  rd  s   UnsortedSegmentJoinrR   rS   rb  r)  )rE   r_  r`  r   r!   r"   _attr_Tindices_attr_TnumsegmentsrO   rN   rI   s              rP   re  re    s   I	;7)#+#B#BK=RUX_XeXegngtgtWw#x ..;(0(G(GX[^e^k^kmtmzmz]}  @G  @M  @M  )N%o|!!&'..9&+|4,J$&&3Q|#)s?'""$|VW>('	.ri   )r$   FFr$   r%   N)N)FN)Fr%   N)TN)r   r   r   N)r%   N)r   N)r$   N)r/  r0  N)r/  r0  FN)__doc__collectionstensorflow.pythonr   tensorflow.python.eagerr   r'   r   r+   r   r:   tensorflow.python.frameworkr   rV   tensorflow.security.fuzzing.pyr   _atypesr	   _op_def_registryr
   r-   r   r>   "tensorflow.python.util.deprecationr   tensorflow.python.utilr   r6    tensorflow.python.util.tf_exportr   typingr   r   r   typing_extensionsr   r   add_fallback_dispatch_listadd_type_based_api_dispatcherintre   strStringr   	to_raw_opr    _tf_type_based_dispatcherDispatchr0   r2   rj   rl   ro   rp   rw   rz   r{   r|   Int32r   r   r   Boolr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   
namedtupler   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  Int64r  r  r
  r  r  r  r  r  r  r  r  r   r  r  r  r"  r'  r%  r&  r8  r.  r]   r<  r+  r9  rD  rB  rF  r@  rE  rH  rO  rM  rN  rU  rR  rS  rT  r[  rX  rY  rZ  r]  r^  rf  rb  re  r#   ri   rP   <module>r     s  
  6 7 1 7 9 F K 3 I C 8 6 % % ');^Macv  yJ  L]  _m  o~  @O  Q`  bp  rB  DT  Vf  hx  zI  K\  ]
%%
((
0fg()rYsM12 rc rQU rfj rx{ r  FI r  \e  fi  kr  ky  ky  fy  \z r * h ) &rh )9'(	)BC%??HH Ic=.@$A c _c os |   HK   [d  eh  jq  jx  jx  ex  [y : %%
((
#5"GHo&@3#67 @yQTV]VdVdQdGe @ ' I ) &@D 1y/01NO - G G P P 
	#w~~2E(F 
V_`celeses`sVt 
 %%
((
#5"GHo&H3#67 HT HW`adfmftftatWu H ' I ) &HT 1y/01NO - G G P P 	#w~~2E(F T ajknpwp~p~k~a  O	#w~~"56 O9UXZaZgZgUgKh Otx O  KN O  aj  kn  pw  p~  p~  k~  a Ob -Y+,^T^^K-HI
ygnn1D'E ZcdgipivivdvZw   EI   VY   ir  sv  x  xF  xF  sF  iG (5Ic7>>&9: 5YsT[TbTbObEc 5s|  ~A  CJ  CO  CO  ~O  tP 5n 534^T^^DT5UV9S'..5H+I T]^acjcqcq^qTr   CL  MP  RY  R^  R^  M^  C_ 63#67 6)CQXQ_Q_L_B` 6ktux  {B  {I  {I  vI  lJ 6  [_ 6  t}  ~A  CJ  CQ  CQ  ~Q  tR 6p 1y/01NO	#w~~2E(F QZ[^`g`n`n[nQo   {D  EH  JQ  JX  JX  EX  {Y   ko   H  IL  NU  N\  N\  I\  ] $.9S'..-@#A .C ._hilnunznziz_{ .` Ay!?@PgAhi )C<O2P [^ nwx{  ~E  ~J  ~J  yJ  oK 5	#w~~*= > 5 5WZ 5ko 5  EN  OR  T[  Tb  Tb  Ob  Ec 5n =Y;<^T^^L`=ab ygnn9L/M X[ fi {   PY  Z]  _f  _m  _m  Zm  Pn &<3 < <S <bkloqxqql  cA <| 1y/01NO3 S UX hqruw~  xF  xF  sF  iG .:	$s)W^^";< : :^ghkmtm{m{h{^| :x -Y+,^T^^K-HI
ycGNN1J'K X[ ktux  {B  {I  {I  vI  lJ *63#67 6c 6XabegngtgtbtXu 6p 1y/01NO	#w~~2E(F c ajknpwp}p}k}a~   %%
((
?G	#w~~"56 G GW`adfmftftatWu G  ) &GR /i-.~t~~l/KL+EENN ygnn1D'E QT dmnqsz  tB  tB  oB  eC  -k,,! 
 "";_o^ Z3#67 ZiPSUlPlFm Zz} Z  X[ Z  hk Z  x{ Z  W[ Zx 1y/01OP	#w~~2E(F U^_bd{_{U|   JM   gj   wz   GJ   fj 4 ,[++"$ 
F	#w~~"56 F9SRYR`R`M`Ca Fnr FP /i-.~t~~l/KLygnn1D'E R[\_ahaoao\oRp   C   .{--"$ 
J9S'..%89 J	#w~~J]@^ Jil JX 3	12>4>>/3RS)C4G*H yY\^e^l^lYlOm y| " %%
((
?@An%A	#w~~"56 AiPSU\UcUcPcFd A & B ) &AF /i-.~t~~l/KL+EENN 
ygnn1D'E 
U^_bdkdrdr_rUs 
/33F)G /VY /irsvx  yF  yF  tF  jG /b =Y;<^T^^La=bc 	#w~~BU8V eh   yB  CF  HO  HU  HU  CU  yV  %%
((
(.KMi-jk23PiW^^0C&D PSV Pfopsu|  vC  vC  qC  gD P 4 l ) &Pd E#CD^T^^TnEop -G-a-a-j-j *YsGNN?R5S be u~  @C  EL  ER  ER  @R  vS  %%
((
*0OQo/pq45`	#w~~2E(F `UX `mvwz  }D  }J  }J  xJ  nK ` 6 r ) &`D I9%GHXtIuv /K/e/e/n/n ,ygnnAT7U dg   }F  GJ  LS  LY  LY  GY  }Z ( %%
((
?G	#w~~"56 G GW`adfmftftatWu G  ) &GR /i-.~t~~l/KL+EENN ygnn1D'E QT dmnqsz  tB  tB  oB  eC   m_oFD)C/0 DykAQ7R DYbcfhscsYt D{~ D  V_  `c  el  es  es  `s  Vt DL 
%#	$^T^^F%;	<3+>!? iPSU`P`Fa hqru  xC  sC  iD   LO   _h  il  nu  n|  n|  i|  _} " .{--=!# 
 ##=P_` Zcz  bg  JQ  JW  JW  ^b g)C$78 g# gVY gvy g  ]a g  qI gR 3	12>4>>.3QR33F)G Y\ fi   ~A   _c   nF 6 #9+"8"88#: 
 '..SUdfu&v #gp  HM  ot  bi  bo  bo  vz nygnn1D'E nWZ ncf n  DG n  jn n  ~a n` I9%GHXsItu iW^^@S6T fi sv   KN   lp   {^ : ##=P_` Y3+=!> YiX[]uXuNv Y  JM Y  VY Y  vy Y  OX  Y\  ^e  ^l  ^l  Yl  Om Yv 3	12>4>>.3QR	#w}}:L0M ]fgj  mE  hE  ^F   Y\   fi   }@   PY  Z]  _f  _m  _m  Zm  Pn , %%
((
#$O)C$67 OyQTV]VcVcQcGd O % ) &Ob 3	12>4>>.3QR!/!I!I!R!R 
33E)F 
V_`celerer`rVs 
 %%
((
&'dYsGNN':; dS dcf dor d  PS d  vz d  PY  Z]  _f  _m  _m  Zm  Pn d ( ) &dL 9978HY9Z[ $5$O$O$X$X !Ic7>>6I,J \_ ru   @C   WZ   x|   LU  VY  [b  [i  [i  Vi  Lj 4 #**K_^m"n &-.SUdfu&v #0)C,?"@ 0yY\^}Y}O~ 0  OX  Y\  ^A  YA  OB 0  NQ 0  dm  nq  sz  sA  sA  nA  dB 0d ?i =>~t~~Nc?de 3;N1O ^ghk  nM  iM  _N   ^g  hk  mP  hP  ^Q   ^a   qz  {~  @G  @N  @N  {N  qO ri   