org.apache.jackrabbit.oak.query.SQL2Parser.class Maven / Gradle / Ivy
???? 3?
]?
?? [? [? [? [??
? [? [?
??? [?? [?
[????
? [??
? [?
[??
[??
[????
???
[?
[??
%????
[? ??
l?
?? %?? [?
l??
[???????
[??????????
=? [?
=??
;?
=?
<?
<?
[???
[? [??
[???
[?
[??
[??
S?
S?
?????? Y?
l?
Y? Y?
?????
[ [
[
!?
[
l
[
!"#
$%
&'(
)
[*+
,
[-.
/0
1
[2
[3
[4
5
[67
[89
[: ;<
=
[>? ;@A ;BC ;DE ;FG ;HI ;JKLM
?NO
PQRST
[U
[VW
]X
YZ [[
?
?\
]
^_`
ab
[c
d
e
fg
hi
[j
kl
mn
o
pqr
[st
uv
[w
xy
z{
|}
~
??
??y?
? ??
?? ??
?? ??
??
???
=?
??
??
??
?? ??
??
???
[??
=?
??
?
???7
[?
?? ?
??? [??
[?
??
[?
???
??
?
??
??? Y?
[???
[?
???????
[????
!?????????
[???
l?
l?
[?
?? [? [?
?
l?
[?
[??
???
[??
?? [??? [?????
?????
?
=??
??
???
l?
l????????
l??
l??
l??
??? ColumnOrWildcard InnerClasses LOG Lorg/slf4j/Logger; CHAR_END I
ConstantValue???? CHAR_IGNORE
CHAR_VALUE CHAR_QUOTED CHAR_NAME CHAR_SPECIAL_1 CHAR_SPECIAL_2 CHAR_STRING CHAR_DECIMAL CHAR_BRACKETED KEYWORD
IDENTIFIER PARAMETER END VALUE MINUS PLUS
OPEN CLOSE nodeTypes :Lorg/apache/jackrabbit/oak/query/ast/NodeTypeInfoProvider; statement Ljava/lang/String; statementChars [C characterTypes [I
parseIndex currentTokenType currentToken currentTokenQuoted Z currentValue -Lorg/apache/jackrabbit/oak/api/PropertyValue; expected Ljava/util/ArrayList; Signature )Ljava/util/ArrayList;
bindVariables Ljava/util/HashMap; bLjava/util/HashMap; selectors Ljava/util/Map; ULjava/util/Map; allowTextLiterals allowNumberLiterals $includeSelectorNameInWildcardColumns factory 7Lorg/apache/jackrabbit/oak/query/ast/AstElementFactory; supportSQL1 namePathMapper 3Lorg/apache/jackrabbit/oak/namepath/NamePathMapper; settings 5Lorg/apache/jackrabbit/oak/query/QueryEngineSettings; literalUsageLogged ?(Lorg/apache/jackrabbit/oak/namepath/NamePathMapper;Lorg/apache/jackrabbit/oak/query/ast/NodeTypeInfoProvider;Lorg/apache/jackrabbit/oak/query/QueryEngineSettings;)V Code LineNumberTable LocalVariableTable this ,Lorg/apache/jackrabbit/oak/query/SQL2Parser; parse <(Ljava/lang/String;Z)Lorg/apache/jackrabbit/oak/query/Query; unionAll q2 +Lorg/apache/jackrabbit/oak/query/QueryImpl; n e2 Ljava/text/ParseException; e Ljava/lang/Exception; query
initialise explain measure q 'Lorg/apache/jackrabbit/oak/query/Query; orderings 3[Lorg/apache/jackrabbit/oak/query/ast/OrderingImpl; options .Lorg/apache/jackrabbit/oak/query/QueryOptions;
StackMapTable????
Exceptions ;(Ljava/lang/String;)Lorg/apache/jackrabbit/oak/query/Query; parseSelect -()Lorg/apache/jackrabbit/oak/query/QueryImpl; distinct list source 0Lorg/apache/jackrabbit/oak/query/ast/SourceImpl; columnArray 1[Lorg/apache/jackrabbit/oak/query/ast/ColumnImpl;
constraint 4Lorg/apache/jackrabbit/oak/query/ast/ConstraintImpl; LocalVariableTypeTable TLjava/util/ArrayList;???? addColumnIfNecessary <(Ljava/util/ArrayList;Ljava/lang/String;Ljava/lang/String;)V col c =Lorg/apache/jackrabbit/oak/query/SQL2Parser$ColumnOrWildcard; i$ Ljava/util/Iterator;
columnName propertyName column? {(Ljava/util/ArrayList;Ljava/lang/String;Ljava/lang/String;)V setSupportSQL1 (Z)V sql1
parseSelector 4()Lorg/apache/jackrabbit/oak/query/ast/SelectorImpl; Ljavax/jcr/RepositoryException; nodeTypeName nodeTypeInfo 2Lorg/apache/jackrabbit/oak/query/ast/NodeTypeInfo; selectorName?
?? readName ()Ljava/lang/String; s parseSource 2()Lorg/apache/jackrabbit/oak/query/ast/SourceImpl; joinType .Lorg/apache/jackrabbit/oak/query/ast/JoinType; on 7Lorg/apache/jackrabbit/oak/query/ast/JoinConditionImpl; selector 2Lorg/apache/jackrabbit/oak/query/ast/SelectorImpl;?? parseJoinCondition 9()Lorg/apache/jackrabbit/oak/query/ast/JoinConditionImpl; selector1 selector2
childSelector descendantSelector property1
identifier name? parseConstraint 6()Lorg/apache/jackrabbit/oak/query/ast/ConstraintImpl; a parseAnd parseCondition op 8Lorg/apache/jackrabbit/oak/query/ast/DynamicOperandImpl; right left 7Lorg/apache/jackrabbit/oak/query/ast/StaticOperandImpl; n(Lorg/apache/jackrabbit/oak/query/ast/DynamicOperandImpl;)Lorg/apache/jackrabbit/oak/query/ast/ConstraintImpl; esc v x not p 7Lorg/apache/jackrabbit/oak/query/ast/PropertyValueImpl; pv NLjava/util/ArrayList;S getPropertyExistence t(Lorg/apache/jackrabbit/oak/query/ast/PropertyValueImpl;)Lorg/apache/jackrabbit/oak/query/ast/PropertyExistenceImpl; getPropertyInexistence v(Lorg/apache/jackrabbit/oak/query/ast/PropertyValueImpl;)Lorg/apache/jackrabbit/oak/query/ast/PropertyInexistenceImpl; parseConditionFunctionIf H(Ljava/lang/String;)Lorg/apache/jackrabbit/oak/query/ast/ConstraintImpl; language functionName readAbsolutePath path readPath parseDynamicOperand :()Lorg/apache/jackrabbit/oak/query/ast/DynamicOperandImpl; parseExpressionFunction L(Ljava/lang/String;)Lorg/apache/jackrabbit/oak/query/ast/DynamicOperandImpl; parsePropertyValue K(Ljava/lang/String;)Lorg/apache/jackrabbit/oak/query/ast/PropertyValueImpl; parseStaticOperand 9()Lorg/apache/jackrabbit/oak/query/ast/StaticOperandImpl; valueType literal 1Lorg/apache/jackrabbit/oak/query/ast/LiteralImpl; var ;Lorg/apache/jackrabbit/oak/query/ast/BindVariableValueImpl; value? getUncastLiteral `(Lorg/apache/jackrabbit/oak/api/PropertyValue;)Lorg/apache/jackrabbit/oak/query/ast/LiteralImpl; parseCastAs \(Lorg/apache/jackrabbit/oak/api/PropertyValue;)Lorg/apache/jackrabbit/oak/api/PropertyValue; propertyType getPropertyTypeFromName (Ljava/lang/String;)I matchesPropertyType (ILjava/lang/String;)Z typeName
parseOrder 5()[Lorg/apache/jackrabbit/oak/query/ast/OrderingImpl; ordering 2Lorg/apache/jackrabbit/oak/query/ast/OrderingImpl; orderList ILjava/util/ArrayList;? parseColumns ()Ljava/util/ArrayList;? V()Ljava/util/ArrayList; readOptionalAlias @(Lorg/apache/jackrabbit/oak/query/SQL2Parser$ColumnOrWildcard;)Z resolveColumns H(Ljava/util/ArrayList;)[Lorg/apache/jackrabbit/oak/query/ast/ColumnImpl; columns array GLjava/util/ArrayList; ?(Ljava/util/ArrayList;)[Lorg/apache/jackrabbit/oak/query/ast/ColumnImpl; addWildcardColumns +(Ljava/util/Collection;Ljava/lang/String;)V Ljava/util/Collection; HLjava/util/Collection; ](Ljava/util/Collection;Ljava/lang/String;)V K(Ljava/util/Collection;Lorg/apache/jackrabbit/oak/query/ast/SelectorImpl;)V }(Ljava/util/Collection;Lorg/apache/jackrabbit/oak/query/ast/SelectorImpl;)V readIf (Ljava/lang/String;)Z token isToken result read (Ljava/lang/String;)V
readString /()Lorg/apache/jackrabbit/oak/api/PropertyValue; addExpected
initialize C type i len command types startLoop?? checkRunOver (III)V ()V number J start chars (IC)V begin end
checkLiterals text readDecimal (II)V t bd Ljava/math/BigDecimal; !Ljava/lang/NumberFormatException; sub?? getSyntaxError ()Ljava/text/ParseException; exp buff Ljava/lang/StringBuilder;? .(Ljava/lang/String;)Ljava/text/ParseException; index getOnlySelectorName escapeStringLiteral &(Ljava/lang/String;)Ljava/lang/String; setAllowTextLiterals setAllowNumberLiterals 'setIncludeSelectorNameInWildcardColumns
isInternal
SourceFile SQL2Parser.java?x???????? 5org/apache/jackrabbit/oak/query/ast/AstElementFactory???? 8org/apache/jackrabbit/oak/query/ast/NodeTypeInfoProvider?? 3org/apache/jackrabbit/oak/query/QueryEngineSettings??lh
x java/util/ArrayList?? java/util/HashMap??gx EXPLAINbc MEASURE?? UNION ALL .org/apache/jackrabbit/oak/query/UnionQueryImpl? ORDER BYghHI ,org/apache/jackrabbit/oak/query/QueryOptions OPTION ( TRAVERSAL??
)?? ??????c? x java/lang/Exception java/text/ParseException java/lang/StringBuilder??!" : #?$??%&'?? SELECT DISTINCTOP?? jcr:path?? jcr:score FROM??UV WHERE
)org/apache/jackrabbit/oak/query/QueryImpl?()?*+?,-. ;org/apache/jackrabbit/oak/query/SQL2Parser$ColumnOrWildcard??/0??1023? javax/jcr/RepositoryException !could not convert node type name 45?6 unknown node type AS?7?c a token??89:;< java/lang/String??=?>? RIGHT OUTER?@? LEFTA? INNER? JOIN ONBC
ISSAMENODEDc ,-?EF . ISCHILDNODEGH ISDESCENDANTNODEIJ ,ISSAMENODE, ISCHILDNODE, or ISDESCENDANTNODE =KL ORMN ANDOP NOTQ'(01RS?? [45 IN./TUVWX?? <>YV <ZV >[V <=\V >=]V LIKEIV ESCAPE /org/apache/jackrabbit/oak/query/ast/LiteralImpl only ESCAPE '' is supported^j \_` IS NULL 5org/apache/jackrabbit/oak/query/ast/PropertyValueImpl 8propertyName (NOT NULL is only supported for properties)#$%& 9Only property values can be tested for NOT IS NULL; got: abcd??ce?fghi CONTAINS *jk "selector name, property name, or *+?lmnopq SIMILARrs NATIVEijtu
SPELLCHECKvw SUGGESTxwyzc
absolute path23 LENGTH{| NAMEec}~ LOCALNAME? SCORE?? LOWER?? UPPER?? PROPERTYR? 9LENGTH, NAME, LOCALNAME, SCORE, LOWER, UPPER, or PROPERTY?????: java/lang/Long????: java/lang/Double???: java/math/BigDecimal???? Illegal operation: + !????????: java/lang/Boolean??? Illegal operation: -=> :!?? 9org/apache/jackrabbit/oak/query/ast/BindVariableValueImpl?? TRUE FALSE CAST?@7> TIMESTAMP?:?? static operand?? data type (STRING|BINARY|...)CD??EF??? DESC?? ASC???? 0org/apache/jackrabbit/oak/query/ast/OrderingImpl?? EXCERPT rep:excerpt??ST rep:spellcheck :spellcheck[\?? .org/apache/jackrabbit/oak/query/ast/ColumnImpl??? 0org/apache/jackrabbit/oak/query/ast/SelectorImpl[` Unknown selector: ?????kh string value {???vw????????????? 0i} '??`a???? Literal used?h 1bind variable (literals of this type not allowed)?h java/lang/NumberFormatException !Data conversion error converting to BigDecimal: , ????? (*)???? ; expected: Query: TNeed to specify the selector name because the query contains more than one selector.?? ''?? /* oak-internal */?D *org/apache/jackrabbit/oak/query/SQL2Parser??? java/lang/Object %org/apache/jackrabbit/oak/query/Query .org/apache/jackrabbit/oak/query/ast/SourceImpl 2org/apache/jackrabbit/oak/query/ast/ConstraintImpl java/util/Iterator 0org/apache/jackrabbit/oak/query/ast/NodeTypeInfo ,org/apache/jackrabbit/oak/query/ast/JoinType 5org/apache/jackrabbit/oak/query/ast/JoinConditionImpl 5org/apache/jackrabbit/oak/query/ast/StaticOperandImpl 6org/apache/jackrabbit/oak/query/ast/DynamicOperandImpl +org/apache/jackrabbit/oak/api/PropertyValue com/google/common/collect/Maps
newHashMap ()Ljava/util/HashMap; $com/google/common/base/Preconditions checkNotNull &(Ljava/lang/Object;)Ljava/lang/Object;
java/util/Map clear ?(ZLorg/apache/jackrabbit/oak/query/Query;Lorg/apache/jackrabbit/oak/query/Query;Lorg/apache/jackrabbit/oak/query/QueryEngineSettings;)V java/util/Locale ENGLISH Ljava/util/Locale; toUpperCase &(Ljava/util/Locale;)Ljava/lang/String; 6org/apache/jackrabbit/oak/query/QueryOptions$Traversal Traversal valueOf L(Ljava/lang/String;)Lorg/apache/jackrabbit/oak/query/QueryOptions$Traversal; traversal 8Lorg/apache/jackrabbit/oak/query/QueryOptions$Traversal; isEmpty ()Z setOrderings 6([Lorg/apache/jackrabbit/oak/query/ast/OrderingImpl;)V
setExplain
setMeasure setInternal setQueryOptions 1(Lorg/apache/jackrabbit/oak/query/QueryOptions;)V init append -(Ljava/lang/String;)Ljava/lang/StringBuilder;
getMessage toString (Ljava/lang/String;I)V initCause ,(Ljava/lang/Throwable;)Ljava/lang/Throwable;(Ljava/lang/String;Lorg/apache/jackrabbit/oak/query/ast/SourceImpl;Lorg/apache/jackrabbit/oak/query/ast/ConstraintImpl;[Lorg/apache/jackrabbit/oak/query/ast/ColumnImpl;Lorg/apache/jackrabbit/oak/namepath/NamePathMapper;Lorg/apache/jackrabbit/oak/query/QueryEngineSettings;)V setDistinct iterator ()Ljava/util/Iterator; hasNext next ()Ljava/lang/Object; equals (Ljava/lang/Object;)Z add 1org/apache/jackrabbit/oak/namepath/NamePathMapper
getOakName getNodeTypeInfo F(Ljava/lang/String;)Lorg/apache/jackrabbit/oak/query/ast/NodeTypeInfo; exists x(Lorg/apache/jackrabbit/oak/query/ast/NodeTypeInfo;Ljava/lang/String;)Lorg/apache/jackrabbit/oak/query/ast/SelectorImpl; "org/apache/jackrabbit/oak/api/Type STRING $Lorg/apache/jackrabbit/oak/api/Type; getValue 8(Lorg/apache/jackrabbit/oak/api/Type;)Ljava/lang/Object; getSelectorName put 8(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; RIGHT_OUTER
LEFT_OUTER join ?(Lorg/apache/jackrabbit/oak/query/ast/SourceImpl;Lorg/apache/jackrabbit/oak/query/ast/SourceImpl;Lorg/apache/jackrabbit/oak/query/ast/JoinType;Lorg/apache/jackrabbit/oak/query/ast/JoinConditionImpl;)Lorg/apache/jackrabbit/oak/query/ast/JoinImpl; equalsIgnoreCase sameNodeJoinCondition w(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Lorg/apache/jackrabbit/oak/query/ast/SameNodeJoinConditionImpl; childNodeJoinCondition f(Ljava/lang/String;Ljava/lang/String;)Lorg/apache/jackrabbit/oak/query/ast/ChildNodeJoinConditionImpl; descendantNodeJoinCondition k(Ljava/lang/String;Ljava/lang/String;)Lorg/apache/jackrabbit/oak/query/ast/DescendantNodeJoinConditionImpl; equiJoinCondition ?(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Lorg/apache/jackrabbit/oak/query/ast/EquiJoinConditionImpl; or ?(Lorg/apache/jackrabbit/oak/query/ast/ConstraintImpl;Lorg/apache/jackrabbit/oak/query/ast/ConstraintImpl;)Lorg/apache/jackrabbit/oak/query/ast/OrImpl; and ?(Lorg/apache/jackrabbit/oak/query/ast/ConstraintImpl;Lorg/apache/jackrabbit/oak/query/ast/ConstraintImpl;)Lorg/apache/jackrabbit/oak/query/ast/AndImpl; c(Lorg/apache/jackrabbit/oak/query/ast/ConstraintImpl;)Lorg/apache/jackrabbit/oak/query/ast/NotImpl;
propertyValue ](Ljava/lang/String;Ljava/lang/String;)Lorg/apache/jackrabbit/oak/query/ast/PropertyValueImpl; ,org/apache/jackrabbit/oak/query/ast/Operator EQUAL .Lorg/apache/jackrabbit/oak/query/ast/Operator;
comparison ?(Lorg/apache/jackrabbit/oak/query/ast/DynamicOperandImpl;Lorg/apache/jackrabbit/oak/query/ast/Operator;Lorg/apache/jackrabbit/oak/query/ast/StaticOperandImpl;)Lorg/apache/jackrabbit/oak/query/ast/ComparisonImpl; NOT_EQUAL LESS_THAN GREATER_THAN
LESS_OR_EQUAL GREATER_OR_EQUAL getLiteralValue in ?(Lorg/apache/jackrabbit/oak/query/ast/DynamicOperandImpl;Ljava/util/ArrayList;)Lorg/apache/jackrabbit/oak/query/ast/ConstraintImpl; getClass ()Ljava/lang/Class; java/lang/Class getName getPropertyName propertyExistence a(Ljava/lang/String;Ljava/lang/String;)Lorg/apache/jackrabbit/oak/query/ast/PropertyExistenceImpl; propertyInexistence c(Ljava/lang/String;Ljava/lang/String;)Lorg/apache/jackrabbit/oak/query/ast/PropertyInexistenceImpl; fullTextSearch ?(Ljava/lang/String;Ljava/lang/String;Lorg/apache/jackrabbit/oak/query/ast/StaticOperandImpl;)Lorg/apache/jackrabbit/oak/query/ast/FullTextSearchImpl; sameNode X(Ljava/lang/String;Ljava/lang/String;)Lorg/apache/jackrabbit/oak/query/ast/SameNodeImpl; childNode Y(Ljava/lang/String;Ljava/lang/String;)Lorg/apache/jackrabbit/oak/query/ast/ChildNodeImpl; descendantNode ^(Ljava/lang/String;Ljava/lang/String;)Lorg/apache/jackrabbit/oak/query/ast/DescendantNodeImpl; similar ?(Ljava/lang/String;Ljava/lang/String;Lorg/apache/jackrabbit/oak/query/ast/StaticOperandImpl;)Lorg/apache/jackrabbit/oak/query/ast/SimilarImpl; nativeFunction ?(Ljava/lang/String;Ljava/lang/String;Lorg/apache/jackrabbit/oak/query/ast/StaticOperandImpl;)Lorg/apache/jackrabbit/oak/query/ast/NativeFunctionImpl;
spellcheck (Ljava/lang/String;Lorg/apache/jackrabbit/oak/query/ast/StaticOperandImpl;)Lorg/apache/jackrabbit/oak/query/ast/ConstraintImpl; suggest +org/apache/jackrabbit/oak/commons/PathUtils
isAbsolute length j(Lorg/apache/jackrabbit/oak/query/ast/DynamicOperandImpl;)Lorg/apache/jackrabbit/oak/query/ast/LengthImpl; nodeName F(Ljava/lang/String;)Lorg/apache/jackrabbit/oak/query/ast/NodeNameImpl;
nodeLocalName K(Ljava/lang/String;)Lorg/apache/jackrabbit/oak/query/ast/NodeLocalNameImpl; fullTextSearchScore Q(Ljava/lang/String;)Lorg/apache/jackrabbit/oak/query/ast/FullTextSearchScoreImpl; lowerCase m(Lorg/apache/jackrabbit/oak/query/ast/DynamicOperandImpl;)Lorg/apache/jackrabbit/oak/query/ast/LowerCaseImpl; upperCase m(Lorg/apache/jackrabbit/oak/query/ast/DynamicOperandImpl;)Lorg/apache/jackrabbit/oak/query/ast/UpperCaseImpl; o(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Lorg/apache/jackrabbit/oak/query/ast/PropertyValueImpl; getType &()Lorg/apache/jackrabbit/oak/api/Type; tag ()I LONG 2org/apache/jackrabbit/oak/spi/query/PropertyValues newLong ?(Ljava/lang/Long;)Lorg/apache/jackrabbit/oak/api/PropertyValue; DOUBLE newDouble A(Ljava/lang/Double;)Lorg/apache/jackrabbit/oak/api/PropertyValue; DECIMAL negate ()Ljava/math/BigDecimal;
newDecimal E(Ljava/math/BigDecimal;)Lorg/apache/jackrabbit/oak/api/PropertyValue; -(Ljava/lang/Object;)Ljava/lang/StringBuilder; longValue ()J (J)Ljava/lang/Long; doubleValue ()D (D)Ljava/lang/Double; BOOLEAN booleanValue
newBoolean 0(Z)Lorg/apache/jackrabbit/oak/api/PropertyValue; (C)Ljava/lang/StringBuilder; get bindVariable O(Ljava/lang/String;)Lorg/apache/jackrabbit/oak/query/ast/BindVariableValueImpl; DATE newDate A(Ljava/lang/String;)Lorg/apache/jackrabbit/oak/api/PropertyValue; convert ?(Lorg/apache/jackrabbit/oak/api/PropertyValue;ILorg/apache/jackrabbit/oak/namepath/NamePathMapper;)Lorg/apache/jackrabbit/oak/api/PropertyValue; javax/jcr/PropertyType
nameFromValue (I)Ljava/lang/String;
descending l(Lorg/apache/jackrabbit/oak/query/ast/DynamicOperandImpl;)Lorg/apache/jackrabbit/oak/query/ast/OrderingImpl; ascending size toArray (([Ljava/lang/Object;)[Ljava/lang/Object; h(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Lorg/apache/jackrabbit/oak/query/ast/ColumnImpl; values ()Ljava/util/Collection; java/util/Collection getWildcardColumns ()Ljava/lang/Iterable; java/lang/Iterable
getJcrName getChars (II[CI)V java/lang/Character isJavaIdentifierPart (C)Z substring (II)Ljava/lang/String; newString org/slf4j/Logger isTraceEnabled trace java/lang/Math min (II)I max trim indexOf (I)I replace D(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; org/slf4j/LoggerFactory getLogger %(Ljava/lang/Class;)Lorg/slf4j/Logger; ![] ( `a bc d e fc d g hc d i jc d k lc d m nc d o pc d q rc d s tc d u vc d w xc d y zc d i {c d k |c d m }c d o ~c d ?c d ? ?c d ? ?c d ? ?? ?? ?? ?? ?c ?c ?? ?? ?? ?? ? ? ?? ? ? ?? ? ? ?? ?? ?? ?? ?? ?? ?? ?? 5 ?? ? ? A*? *? ? *? *? *? *? Y? ? *+?
*,? ? ?
*-? ? ? ? ? *
z b e f g i % { * | 5 } @ ~? * A?? A?? A?? A?? ?? ? ?
T*+? *? ? *? Y? ? *? Y? ? *? >6*? ? >*? ? 6*? :*? ? ? '*? 6*? :? Y*? ? :???:*!? ? *"? #*? $:? %Y? &:*'? ? .*(? #*)? ? *? *? +? ,:? -? .*/? #*? 0? 1?
*2? 3?? 4 ? 5 ? 6 +? 7? 8 ? 9 ? B? : ? 8:?